From ab7d03b2af04e1e8ea8a334c9b41b993a62adff2 Mon Sep 17 00:00:00 2001 From: calintje Date: Wed, 25 Dec 2024 13:51:56 +0100 Subject: [PATCH 01/94] Add compatibility with devnet. Update pool creation to support SOL wrapping. Update send tx function. --- src/langchain/index.ts | 15 +- .../create_orca_single_sided_whirlpool.ts | 53 +++--- src/utils/send_tx.ts | 154 ++++++++++-------- test/index.ts | 2 +- 4 files changed, 122 insertions(+), 102 deletions(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index afb214f..ec1189e 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -751,15 +751,15 @@ export class SolanaCompressedAirdropTool extends Tool { export class SolanaCreateSingleSidedWhirlpoolTool extends Tool { name = "create_orca_single_sided_whirlpool"; - description = `Create a single-sided Whirlpool with liquidity. + description = `Create a single-sided liquidity pools with liquidity on Orca. Inputs (input is a JSON string): - - depositTokenAmount: number, eg: 1000000000 (required, in units of deposit token including decimals) - - depositTokenMint: string, eg: "DepositTokenMintAddress" (required, mint address of deposit token) - - otherTokenMint: string, eg: "OtherTokenMintAddress" (required, mint address of other token) - - initialPrice: number, eg: 0.001 (required, initial price of deposit token in terms of other token) - - maxPrice: number, eg: 5.0 (required, maximum price at which liquidity is added) - - feeTier: number, eg: 0.30 (required, fee tier for the pool)`; + - depositTokenAmount: number, in units of deposit token including decimals, eg: 1000000000 (required) + - depositTokenMint: string, mint address of deposit token, eg: "DepositTokenMintAddress" (required) + - otherTokenMint: string, mint address of other token, eg: "OtherTokenMintAddress" (required) + - initialPrice: number, initial price of deposit token in terms of other token, eg: 0.001, (required) + - maxPrice: number, maximum price at which liquidity is added, eg: 5.0 (required) + - feeTier: number, fee tier for the pool in %. Possible values on mainnet are: 0.01, 0.02, 0.04, 0.05, 0.16, 0.30, 0.65, 1.0, 2.0 (required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -803,7 +803,6 @@ export class SolanaCreateSingleSidedWhirlpoolTool extends Tool { } } - export class SolanaRaydiumCreateAmmV4 extends Tool { name = "raydium_create_ammV4"; description = `Raydium's Legacy AMM that requiers an OpenBook marketID diff --git a/src/tools/create_orca_single_sided_whirlpool.ts b/src/tools/create_orca_single_sided_whirlpool.ts index aefc93c..e0375f9 100644 --- a/src/tools/create_orca_single_sided_whirlpool.ts +++ b/src/tools/create_orca_single_sided_whirlpool.ts @@ -1,11 +1,10 @@ -import { Keypair, PublicKey, Transaction } from "@solana/web3.js"; +import { Keypair, PublicKey, Transaction, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; import { SolanaAgentKit } from "../agent"; import { BN, Wallet } from "@coral-xyz/anchor"; import { Decimal } from "decimal.js"; import { PDAUtil, ORCA_WHIRLPOOL_PROGRAM_ID, - ORCA_WHIRLPOOLS_CONFIG, WhirlpoolContext, TickUtil, PriceMath, @@ -110,7 +109,7 @@ export const FEE_TIERS = { * const otherTokenMint = new PublicKey("OTHER_TOKEN_ADDRESS"); * const initialPrice = new Decimal(0.001); * const maxPrice = new Decimal(5.0); - * const feeTier = 0.30; + * const feeTier = 0.02; * * const txId = await createOrcaSingleSidedWhirlpool( * agent, @@ -133,6 +132,14 @@ export async function createOrcaSingleSidedWhirlpool( maxPrice: Decimal, feeTier: keyof typeof FEE_TIERS, ): Promise { + let whirlpoolsConfigAddress: PublicKey; + if (agent.connection.rpcEndpoint.includes('mainnet')) { + whirlpoolsConfigAddress = new PublicKey('2LecshUwdy9xi7meFgHtFJQNSKk4KdTrcpvaB56dP2NQ'); + } else if (agent.connection.rpcEndpoint.includes('devnet')) { + whirlpoolsConfigAddress = new PublicKey('FcrweFY1G9HJAHG5inkGB6pKg1HZ6x9UC2WioAfWrGkR'); + } else { + throw new Error('Unsupported network'); + } const wallet = new Wallet(agent.wallet); const ctx = WhirlpoolContext.from(agent.connection, wallet, ORCA_WHIRLPOOL_PROGRAM_ID); const fetcher = ctx.fetcher; @@ -163,7 +170,7 @@ export async function createOrcaSingleSidedWhirlpool( }; const feeTierKey = PDAUtil.getFeeTier( ORCA_WHIRLPOOL_PROGRAM_ID, - ORCA_WHIRLPOOLS_CONFIG, + whirlpoolsConfigAddress, tickSpacing, ).publicKey; const initSqrtPrice = PriceMath.tickIndexToSqrtPriceX64(initialTick); @@ -171,24 +178,24 @@ export async function createOrcaSingleSidedWhirlpool( const tokenVaultBKeypair = Keypair.generate(); const whirlpoolPda = PDAUtil.getWhirlpool( ORCA_WHIRLPOOL_PROGRAM_ID, - ORCA_WHIRLPOOLS_CONFIG, + whirlpoolsConfigAddress, mintA, mintB, FEE_TIERS[feeTier], ); const tokenBadgeA = PDAUtil.getTokenBadge( ORCA_WHIRLPOOL_PROGRAM_ID, - ORCA_WHIRLPOOLS_CONFIG, + whirlpoolsConfigAddress, mintA, ).publicKey; const tokenBadgeB = PDAUtil.getTokenBadge( ORCA_WHIRLPOOL_PROGRAM_ID, - ORCA_WHIRLPOOLS_CONFIG, + whirlpoolsConfigAddress, mintB, ).publicKey; const baseParamsPool = { initSqrtPrice, - whirlpoolsConfig: ORCA_WHIRLPOOLS_CONFIG, + whirlpoolsConfig: whirlpoolsConfigAddress, whirlpoolPda, tokenMintA: mintA, tokenMintB: mintB, @@ -301,7 +308,7 @@ export async function createOrcaSingleSidedWhirlpool( wallet.publicKey, undefined, ctx.accountResolverOpts.allowPDAOwnerAddress, - ctx.accountResolverOpts.createWrappedSolAccountMethod, + "ata", ); const { address: tokenOwnerAccountA, ...tokenOwnerAccountAIx } = ataA; const { address: tokenOwnerAccountB, ...tokenOwnerAccountBIx } = ataB; @@ -378,22 +385,18 @@ export async function createOrcaSingleSidedWhirlpool( }); txBuilder.addInstruction(liquidityIx); - const txPayload = await txBuilder.build({ - maxSupportedTransactionVersion: "legacy" - }); + const txPayload = await txBuilder.build(); + const instructions = TransactionMessage.decompile( + (txPayload.transaction as VersionedTransaction).message).instructions - if (txPayload.transaction instanceof Transaction) { - try { - const txId = await sendTx( - agent, - txPayload.transaction, - [positionMintKeypair, tokenVaultAKeypair, tokenVaultBKeypair], - ); - return txId; - } catch (error) { - throw new Error(`Failed to create pool: ${JSON.stringify(error)}`); - } - } else { - throw new Error('Failed to create pool: Transaction not created'); + try { + const txId = await sendTx( + agent, + instructions, + [positionMintKeypair, tokenVaultAKeypair, tokenVaultBKeypair], + ); + return txId; + } catch (error) { + throw new Error(`Failed to create pool: ${JSON.stringify(error)}`); } } diff --git a/src/utils/send_tx.ts b/src/utils/send_tx.ts index 903ddd5..7250c0c 100644 --- a/src/utils/send_tx.ts +++ b/src/utils/send_tx.ts @@ -1,68 +1,60 @@ import { SolanaAgentKit } from "../agent"; -import { Transaction, Keypair, TransactionInstruction } from "@solana/web3.js"; -import { Connection, ComputeBudgetProgram } from "@solana/web3.js"; +import { Keypair, TransactionInstruction, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; +import { Connection, ComputeBudgetProgram, } from "@solana/web3.js"; + + +const feeTiers = { + min: 1, + mid: 0.5, + max: 0.95 +} /** * Get priority fees for the current block * @param connection - Solana RPC connection * @returns Priority fees statistics and instructions for different fee levels */ -export async function getPriorityFees(connection: Connection): Promise<{ - min: number; - median: number; - max: number; - instructions?: { - low: TransactionInstruction; - medium: TransactionInstruction; - high: TransactionInstruction; - }; -}> { +export async function getComputeBudgetInstructions(agent: SolanaAgentKit, instructions: TransactionInstruction[], feeTier: keyof typeof feeTiers): Promise<{ + blockhash: string; + computeBudgetLimitInstruction: TransactionInstruction; + computeBudgetPriorityFeeInstructions: TransactionInstruction; + } > { try { - // Get recent prioritization fees - const priorityFees = await connection.getRecentPrioritizationFees(); + const blockhash = (await agent.connection.getLatestBlockhash()).blockhash; + const messageV0 = new TransactionMessage({ + payerKey: agent.wallet_address, + recentBlockhash: blockhash, + instructions: instructions, + }).compileToV0Message(); + const transaction = new VersionedTransaction(messageV0); + const simulatedTx = agent.connection.simulateTransaction(transaction); + const estimatedComputeUnits = (await simulatedTx).value.unitsConsumed; + const safeComputeUnits = Math.ceil( + estimatedComputeUnits ? + Math.max(estimatedComputeUnits + 100000, estimatedComputeUnits * 1.2) + : 200000 + ); + const computeBudgetLimitInstruction = ComputeBudgetProgram.setComputeUnitLimit({ + units: safeComputeUnits, + }); - if (!priorityFees.length) { - return { - min: 0, - median: 0, - max: 0, - }; - } + const priorityFee = await agent.connection.getRecentPrioritizationFees() + .then(fees => + fees.sort((a, b) => a.prioritizationFee - b.prioritizationFee) + [Math.floor(fees.length * feeTiers[feeTier])].prioritizationFee + ); - // Sort fees by value - const sortedFees = priorityFees - .map((x) => x.prioritizationFee) - .sort((a, b) => a - b); - - // Calculate statistics - const min = sortedFees[0] ?? 0; - const max = sortedFees[sortedFees.length - 1] ?? 0; - const mid = Math.floor(sortedFees.length / 2); - const median = - sortedFees.length % 2 === 0 - ? ((sortedFees[mid - 1] ?? 0) + (sortedFees[mid] ?? 0)) / 2 - : sortedFees[mid] ?? 0; - - // Helper to create priority fee IX based on chosen strategy - const createPriorityFeeIx = (fee: number) => { - return ComputeBudgetProgram.setComputeUnitPrice({ - microLamports: fee, - }); - }; + const computeBudgetPriorityFeeInstructions = ComputeBudgetProgram.setComputeUnitPrice({ + microLamports: priorityFee, + }); return { - min, - median, - max, - // Return instructions for different fee levels - instructions: { - low: createPriorityFeeIx(min), - medium: createPriorityFeeIx(median), - high: createPriorityFeeIx(max), - }, + blockhash, + computeBudgetLimitInstruction, + computeBudgetPriorityFeeInstructions }; } catch (error) { - console.error("Error getting priority fees:", error); + console.error("Error getting compute budget instructions fees:", error); throw error; } } @@ -75,24 +67,50 @@ export async function getPriorityFees(connection: Connection): Promise<{ */ export async function sendTx( agent: SolanaAgentKit, - tx: Transaction, + instructions: TransactionInstruction[], otherKeypairs?: Keypair[] ) { - tx.recentBlockhash = (await agent.connection.getLatestBlockhash()).blockhash; - tx.feePayer = agent.wallet_address; - const fees = await getPriorityFees(agent.connection); - if (fees.instructions) { - tx.add(fees.instructions.medium!); - } + console.log(instructions) - tx.sign(agent.wallet, ...(otherKeypairs ?? [])); - let txid = await agent.connection.sendRawTransaction(tx.serialize()); - await agent.connection.confirmTransaction({ - signature: txid, - blockhash: (await agent.connection.getLatestBlockhash()).blockhash, - lastValidBlockHeight: ( - await agent.connection.getLatestBlockhash() - ).lastValidBlockHeight, - }); - return txid; + const ixComputeBudget = await getComputeBudgetInstructions(agent, instructions, "mid"); + const allInstructions = [ + ixComputeBudget.computeBudgetLimitInstruction, + ixComputeBudget.computeBudgetPriorityFeeInstructions, + ...instructions]; + const messageV0 = new TransactionMessage({ + payerKey: agent.wallet_address, + recentBlockhash: ixComputeBudget.blockhash, + instructions: allInstructions, + }).compileToV0Message(); + const transaction = new VersionedTransaction(messageV0); + transaction.sign([agent.wallet, ...(otherKeypairs ?? [])]); + + const timeoutMs = 90000; + const startTime = Date.now(); + while (Date.now() - startTime < timeoutMs) { + const transactionStartTime = Date.now(); + + const signature = await agent.connection.sendTransaction( + transaction, + { + maxRetries: 0, + skipPreflight: true, + }); + + const statuses = await agent.connection.getSignatureStatuses([signature]); + if (statuses.value[0]) { + if (!statuses.value[0].err) { + return signature; + } else { + throw new Error(`Transaction failed: ${statuses.value[0].err.toString()}`); + } + } + + const elapsedTime = Date.now() - transactionStartTime; + const remainingTime = Math.max(0, 1000 - elapsedTime); + if (remainingTime > 0) { + await new Promise(resolve => setTimeout(resolve, remainingTime)); + } + } + throw new Error("Transaction timeout"); } diff --git a/test/index.ts b/test/index.ts index 00faade..bc16847 100644 --- a/test/index.ts +++ b/test/index.ts @@ -36,7 +36,7 @@ const WALLET_DATA_FILE = "wallet_data.txt"; async function initializeAgent() { try { const llm = new ChatOpenAI({ - modelName: "gpt-4o-mini", + modelName: "gpt-4o", temperature: 0.7, }); From 7b0fdd6cd8d64b067202765ba7849e66793a08a1 Mon Sep 17 00:00:00 2001 From: calintje Date: Wed, 25 Dec 2024 14:53:37 +0100 Subject: [PATCH 02/94] Remove console.log --- src/utils/send_tx.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/utils/send_tx.ts b/src/utils/send_tx.ts index 7250c0c..b32f2e8 100644 --- a/src/utils/send_tx.ts +++ b/src/utils/send_tx.ts @@ -70,8 +70,6 @@ export async function sendTx( instructions: TransactionInstruction[], otherKeypairs?: Keypair[] ) { - console.log(instructions) - const ixComputeBudget = await getComputeBudgetInstructions(agent, instructions, "mid"); const allInstructions = [ ixComputeBudget.computeBudgetLimitInstruction, From 4dd96558478b5a196c3f7d603a89cdb792c95f55 Mon Sep 17 00:00:00 2001 From: calintje Date: Wed, 25 Dec 2024 14:58:13 +0100 Subject: [PATCH 03/94] Cleaup, fix feeTier --- src/utils/send_tx.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/send_tx.ts b/src/utils/send_tx.ts index b32f2e8..f357b8e 100644 --- a/src/utils/send_tx.ts +++ b/src/utils/send_tx.ts @@ -1,10 +1,10 @@ import { SolanaAgentKit } from "../agent"; import { Keypair, TransactionInstruction, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; -import { Connection, ComputeBudgetProgram, } from "@solana/web3.js"; +import { ComputeBudgetProgram, } from "@solana/web3.js"; const feeTiers = { - min: 1, + min: 0.01, mid: 0.5, max: 0.95 } From 35c1e54989b6716eb384b4de93ada5d3836b4e4d Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Thu, 26 Dec 2024 16:03:36 +0100 Subject: [PATCH 04/94] feat: vercel-ai-sdk --- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 13 +- docs/functions/createSolanaTools.html | 2 +- docs/functions/createVercelAITools.html | 1 + docs/index.html | 21 +- docs/interfaces/CollectionDeployment.html | 4 +- docs/interfaces/CollectionOptions.html | 4 +- docs/interfaces/Creator.html | 4 +- docs/interfaces/FetchPriceResponse.html | 4 +- docs/interfaces/GibworkCreateTaskReponse.html | 4 + docs/interfaces/JupiterTokenData.html | 4 +- .../LuloAccountDetailsResponse.html | 4 +- .../interfaces/MintCollectionNFTResponse.html | 4 +- docs/interfaces/PumpFunTokenOptions.html | 4 +- docs/interfaces/PumpfunLaunchResponse.html | 4 +- docs/interfaces/PythFetchPriceResponse.html | 4 +- docs/modules.html | 2 + package.json | 136 +- pnpm-lock.yaml | 193 +++ src/index.ts | 3 +- src/vercel-ai/index.ts | 1489 +++++++++++++++++ test/agent_sdks/vercel_ai.ts | 196 +++ 23 files changed, 2003 insertions(+), 101 deletions(-) create mode 100644 docs/functions/createVercelAITools.html create mode 100644 docs/interfaces/GibworkCreateTaskReponse.html create mode 100644 src/vercel-ai/index.ts create mode 100644 test/agent_sdks/vercel_ai.ts diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index bcaae4e..cce3849 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE42TwU7DMAyG3yXniooJJtTbRNUDDJigN8QhCi6JltpR40hMaO+OtiFYWebtkos/f7asP69fiuGTVaVeyGvUsw9AvnesChU0W1Up43WMEMtx/cJy71Whlg7fVXU5uVkXv6Zb8h4MO8IagqdVD7jnc8gwdNpALHPgWDy5nmbFT2HzxhPWH0pUDqCZhrxoV5PaG2BjF4Mz8AwxEEbImg4xSXqXgmMYWloC1pp1VvkfkoTz5GlmDCXkGlg7H8Vtj+PSkAeH/Hf6x6YVZxylpRGL1Icu4VwnNFbUZ8lT6ibh9pxSuDKcqF2xPTMjeVSSm00+YfcvWyK/t3GXcHvYWB5AY+P0av32DUTvPWMEBAAA" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE43TQU+DMBQH8O/S8+LioovZjUgw6tRlEi/GQ1ffpKG0TfsaXYzf3cqMEykPLxzov78/PMrjO0N4Q7Zg90ZxzbMX0HgtkU2Y5VjF+0Jx78FPu+tHFTYqhmqpn9nieHb2MfmRzo1SIFAanYNVZtfELQdPagS35SKSqWAXnp3Ok/Cd/br6EfU7RZIOOBqXhvZr1PYCUFQrJwWswdvYBUmpH6PQC7l5Na5u66Hkvl7DMD0UpgqugpURKE0NOufIk/DfEAUugzKZECZozAG5VJ4cx3CcKrmJwuHb3hYl2TGYpipWobHboJc8aFGRfDI5RhdBt+OkTm8iR7I7rP55CNNRChftodr/+KUx6tcTx3dvB+unvVBXnJ/0wAdwAlR2OUJ2Yj306ROld4uPugQAAA==" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index b0786c5..26b312e 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index eccbc8c..1e9f3b9 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,12 +1,13 @@ SolanaAgentKit | solana-agent-kit

Class SolanaAgentKit

Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, trading and more

SolanaAgentKit

-

Constructors

Constructors

Properties

Methods

Methods

createGibworkTask +createOrcaSingleSidedWhirlpool deployCollection deployToken fetchTokenPrice @@ -36,7 +37,7 @@ Provides a unified interface for token operations, NFT management, trading and m stake trade transfer -

Constructors

  • Parameters

    • private_key: string
    • rpc_url: string = "https://api.mainnet-beta.solana.com"
    • openai_api_key: string

    Returns SolanaAgentKit

Properties

connection: Connection

Solana RPC connection

-
openai_api_key: string
wallet: Keypair

Wallet keypair for signing transactions

-
wallet_address: PublicKey

Public key of the wallet

-

Methods

  • Parameters

    • depositTokenAmount: BN
    • depositTokenMint: PublicKey
    • otherTokenMint: PublicKey
    • initialPrice: Decimal
    • maxPrice: Decimal
    • feeTier:
          | 0.01
          | 0.02
          | 0.04
          | 0.05
          | 0.16
          | 0.3
          | 0.65
          | 1
          | 2

    Returns Promise<string>

  • Parameters

    • name: string
    • uri: string
    • symbol: string
    • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
    • OptionalinitialSupply: number

    Returns Promise<{
        mint: PublicKey;
    }>

  • Parameters

    • mint: string

    Returns Promise<string>

  • Returns Promise<String[]>

  • Returns Promise<string[]>

  • Parameters

    • Optionaltoken_address: PublicKey

    Returns Promise<number>

  • Parameters

    • owner: PublicKey

    Returns Promise<null | string>

  • Parameters

    • owner: PublicKey

    Returns Promise<string[]>

  • Parameters

    • tld: string

    Returns Promise<string[]>

  • Parameters

    • account: PublicKey

    Returns Promise<string>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

    • collectionMint: PublicKey
    • metadata: {
          creators?: {
              address: string;
              share: number;
          }[];
          name: string;
          sellerFeeBasisPoints?: number;
          uri: string;
      }
      • Optionalcreators?: {
            address: string;
            share: number;
        }[]
      • name: string
      • OptionalsellerFeeBasisPoints?: number
      • uri: string
    • Optionalrecipient: PublicKey

    Returns Promise<MintCollectionNFTResponse>

  • Parameters

    • baseMint: PublicKey
    • quoteMint: PublicKey
    • lotSize: number = 1
    • tickSize: number = 0.01

    Returns Promise<string[]>

  • Parameters

    • priceFeedID: string

    Returns Promise<string>

  • Parameters

    • marketId: PublicKey
    • baseAmount: BN
    • quoteAmount: BN
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • mint1: PublicKey
    • mint2: PublicKey
    • configId: PublicKey
    • initialPrice: Decimal
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • mint1: PublicKey
    • mint2: PublicKey
    • configId: PublicKey
    • mintAAmount: BN
    • mintBAmount: BN
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • name: string
    • OptionalspaceKB: number

    Returns Promise<string>

  • Returns Promise<string>

  • Parameters

    • domain: string

    Returns Promise<undefined | PublicKey>

  • Parameters

    • domain: string

    Returns Promise<PublicKey>

  • Parameters

    • mintAddress: string
    • amount: number
    • decimals: number
    • recipients: string[]
    • priorityFeeInLamports: number
    • shouldLog: boolean

    Returns Promise<string[]>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

    • outputMint: PublicKey
    • inputAmount: number
    • OptionalinputMint: PublicKey
    • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

    Returns Promise<string>

  • Parameters

    • to: PublicKey
    • amount: number
    • Optionalmint: PublicKey

    Returns Promise<string>

+

Constructors

  • Parameters

    • private_key: string
    • rpc_url: string = "https://api.mainnet-beta.solana.com"
    • openai_api_key: string

    Returns SolanaAgentKit

Properties

connection: Connection

Solana RPC connection

+
openai_api_key: string
wallet: Keypair

Wallet keypair for signing transactions

+
wallet_address: PublicKey

Public key of the wallet

+

Methods

  • Parameters

    • title: string
    • content: string
    • requirements: string
    • tags: string[]
    • tokenMintAddress: string
    • tokenAmount: number
    • Optionalpayer: string

    Returns Promise<GibworkCreateTaskReponse>

  • Parameters

    • depositTokenAmount: BN
    • depositTokenMint: PublicKey
    • otherTokenMint: PublicKey
    • initialPrice: Decimal
    • maxPrice: Decimal
    • feeTier:
          | 0.01
          | 0.02
          | 0.04
          | 0.05
          | 0.16
          | 0.3
          | 0.65
          | 1
          | 2

    Returns Promise<string>

  • Parameters

    • name: string
    • uri: string
    • symbol: string
    • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
    • OptionalinitialSupply: number

    Returns Promise<{
        mint: PublicKey;
    }>

  • Parameters

    • mint: string

    Returns Promise<string>

  • Returns Promise<String[]>

  • Returns Promise<string[]>

  • Parameters

    • Optionaltoken_address: PublicKey

    Returns Promise<number>

  • Parameters

    • owner: PublicKey

    Returns Promise<null | string>

  • Parameters

    • owner: PublicKey

    Returns Promise<string[]>

  • Parameters

    • tld: string

    Returns Promise<string[]>

  • Parameters

    • account: PublicKey

    Returns Promise<string>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

    • collectionMint: PublicKey
    • metadata: {
          creators?: {
              address: string;
              share: number;
          }[];
          name: string;
          sellerFeeBasisPoints?: number;
          uri: string;
      }
      • Optionalcreators?: {
            address: string;
            share: number;
        }[]
      • name: string
      • OptionalsellerFeeBasisPoints?: number
      • uri: string
    • Optionalrecipient: PublicKey

    Returns Promise<MintCollectionNFTResponse>

  • Parameters

    • baseMint: PublicKey
    • quoteMint: PublicKey
    • lotSize: number = 1
    • tickSize: number = 0.01

    Returns Promise<string[]>

  • Parameters

    • priceFeedID: string

    Returns Promise<string>

  • Parameters

    • marketId: PublicKey
    • baseAmount: BN
    • quoteAmount: BN
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • mint1: PublicKey
    • mint2: PublicKey
    • configId: PublicKey
    • initialPrice: Decimal
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • mint1: PublicKey
    • mint2: PublicKey
    • configId: PublicKey
    • mintAAmount: BN
    • mintBAmount: BN
    • startTime: BN

    Returns Promise<string>

  • Parameters

    • name: string
    • OptionalspaceKB: number

    Returns Promise<string>

  • Returns Promise<string>

  • Parameters

    • domain: string

    Returns Promise<undefined | PublicKey>

  • Parameters

    • domain: string

    Returns Promise<PublicKey>

  • Parameters

    • mintAddress: string
    • amount: number
    • decimals: number
    • recipients: string[]
    • priorityFeeInLamports: number
    • shouldLog: boolean

    Returns Promise<string[]>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

    • outputMint: PublicKey
    • inputAmount: number
    • OptionalinputMint: PublicKey
    • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

    Returns Promise<string>

  • Parameters

    • to: PublicKey
    • amount: number
    • Optionalmint: PublicKey

    Returns Promise<string>

diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index e52f87a..522c832 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

Function createSolanaTools

  • Parameters

    Returns (
        | SolanaBalanceTool
        | SolanaTransferTool
        | SolanaDeployTokenTool
        | SolanaDeployCollectionTool
        | SolanaMintNFTTool
        | SolanaTradeTool
        | SolanaRequestFundsTool
        | SolanaRegisterDomainTool
        | SolanaResolveDomainTool
        | SolanaGetDomainTool
        | SolanaGetWalletAddressTool
        | SolanaPumpfunTokenLaunchTool
        | SolanaCreateImageTool
        | SolanaLendAssetTool
        | SolanaTPSCalculatorTool
        | SolanaStakeTool
        | SolanaFetchPriceTool
        | SolanaTokenDataTool
        | SolanaTokenDataByTickerTool
        | SolanaCompressedAirdropTool
        | SolanaCreateSingleSidedWhirlpoolTool
        | SolanaRaydiumCreateAmmV4
        | SolanaRaydiumCreateClmm
        | SolanaRaydiumCreateCpmm
        | SolanaOpenbookCreateMarket
        | SolanaPythFetchPrice
        | SolanaResolveAllDomainsTool
        | SolanaGetOwnedDomains
        | SolanaGetOwnedTldDomains
        | SolanaGetAllTlds
        | SolanaGetMainDomain)[]

+createSolanaTools | solana-agent-kit

Function createSolanaTools

  • Parameters

    Returns (
        | SolanaBalanceTool
        | SolanaTransferTool
        | SolanaDeployTokenTool
        | SolanaDeployCollectionTool
        | SolanaMintNFTTool
        | SolanaTradeTool
        | SolanaRequestFundsTool
        | SolanaRegisterDomainTool
        | SolanaResolveDomainTool
        | SolanaGetDomainTool
        | SolanaGetWalletAddressTool
        | SolanaPumpfunTokenLaunchTool
        | SolanaCreateImageTool
        | SolanaLendAssetTool
        | SolanaTPSCalculatorTool
        | SolanaStakeTool
        | SolanaFetchPriceTool
        | SolanaTokenDataTool
        | SolanaTokenDataByTickerTool
        | SolanaCompressedAirdropTool
        | SolanaCreateSingleSidedWhirlpoolTool
        | SolanaRaydiumCreateAmmV4
        | SolanaRaydiumCreateClmm
        | SolanaRaydiumCreateCpmm
        | SolanaOpenbookCreateMarket
        | SolanaPythFetchPrice
        | SolanaResolveAllDomainsTool
        | SolanaGetOwnedDomains
        | SolanaGetOwnedTldDomains
        | SolanaGetAllTlds
        | SolanaGetMainDomain
        | SolanaCreateGibworkTask)[]

diff --git a/docs/functions/createVercelAITools.html b/docs/functions/createVercelAITools.html new file mode 100644 index 0000000..1702ff1 --- /dev/null +++ b/docs/functions/createVercelAITools.html @@ -0,0 +1 @@ +createVercelAITools | solana-agent-kit

Function createVercelAITools

  • Parameters

    Returns CoreTool[]

diff --git a/docs/index.html b/docs/index.html index 7dd0878..f76a141 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,6 +1,9 @@ solana-agent-kit

solana-agent-kit

-

Solana Agent Kit

-

Solana Agent Kit Cover 1 (3)

+

Solana Agent Kit

Solana Agent Kit Cover 1 (3)

+

NPM Downloads +GitHub forks +GitHub License

+

An open-source toolkit for connecting AI agents to Solana protocols. Now, any agent, using any model can autonomously perform 15+ Solana actions:

  • Trade tokens
  • @@ -38,21 +41,29 @@
  • Jupiter Exchange swaps
  • Launch on Pump via PumpPortal
  • Raydium pool creation (CPMM, CLMM, AMMv4)
  • -
  • Orca whirlpool integration
  • +
  • Orca Whirlpool integration
  • Meteora Dynamic AMM, DLMM Pool, and Alpga Vault
  • Openbook market creation
  • Register and Resolve SNS
  • Jito Bundles
  • +
  • Pyth Price feeds for fetching Asset Prices
  • +
  • Register/resolve Alldomains
  • Solana Blinks

      -
    • Lending by Lulo
    • +
    • Lending by Lulon (Best APR for USDC)
    • Send Arcade Games
    • JupSOL staking
  • +
  • +

    Non-Financial Actions

    +
      +
    • Gib Work for registering bounties
    • +
    +
    • @@ -123,6 +134,6 @@

    Contributions are welcome! Please feel free to submit a Pull Request. Refer to CONTRIBUTING.md for detailed guidelines on how to contribute to this project.

    -

    MIT License

    +

    Apache-2 License

    This toolkit handles private keys and transactions. Always ensure you're using it in a secure environment and never share your private keys.

    diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index c03b39a..078c9aa 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array<ArrayBufferLike>;
    }

    Properties

    collectionAddress +CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array<ArrayBufferLike>;
    }

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array<ArrayBufferLike>
    +

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array<ArrayBufferLike>
    diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index 6790105..a30acbc 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators? +CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    +

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index 4e33592..c0db0d3 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    address +Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    Properties

    address: string
    percentage: number
    +

    Properties

    address: string
    percentage: number
    diff --git a/docs/interfaces/FetchPriceResponse.html b/docs/interfaces/FetchPriceResponse.html index defd401..9034730 100644 --- a/docs/interfaces/FetchPriceResponse.html +++ b/docs/interfaces/FetchPriceResponse.html @@ -1,6 +1,6 @@ -FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code? +FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    +

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    diff --git a/docs/interfaces/GibworkCreateTaskReponse.html b/docs/interfaces/GibworkCreateTaskReponse.html new file mode 100644 index 0000000..5756fef --- /dev/null +++ b/docs/interfaces/GibworkCreateTaskReponse.html @@ -0,0 +1,4 @@ +GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    diff --git a/docs/interfaces/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index 2b23375..e7e78b6 100644 --- a/docs/interfaces/JupiterTokenData.html +++ b/docs/interfaces/JupiterTokenData.html @@ -1,4 +1,4 @@ -JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: {
            coingeckoId?: string;
        };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address +JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: {
            coingeckoId?: string;
        };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: {
        coingeckoId?: string;
    }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    +

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: {
        coingeckoId?: string;
    }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index fa19d62..dd11aee 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

    Interface LuloAccountDetailsResponse

    Lulo Account Details response format

    -
    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    +

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index e2e1479..1289741 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    metadata +MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    Properties

    metadata: PublicKey
    mint: PublicKey
    +

    Properties

    metadata: PublicKey
    mint: PublicKey
    diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html index d1c0142..cb37c94 100644 --- a/docs/interfaces/PumpFunTokenOptions.html +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -1,7 +1,7 @@ -PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL? +PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    +

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html index f667de7..c98ea41 100644 --- a/docs/interfaces/PumpfunLaunchResponse.html +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -1,5 +1,5 @@ -PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error? +PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    +

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    diff --git a/docs/interfaces/PythFetchPriceResponse.html b/docs/interfaces/PythFetchPriceResponse.html index fcfb217..a83df74 100644 --- a/docs/interfaces/PythFetchPriceResponse.html +++ b/docs/interfaces/PythFetchPriceResponse.html @@ -1,6 +1,6 @@ -PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID: string;
        status: "success" | "error";
    }

    Properties

    code? +PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID: string;
        status: "success" | "error";
    }

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID: string
    status: "success" | "error"
    +

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID: string
    status: "success" | "error"
    diff --git a/docs/modules.html b/docs/modules.html index 29440e3..791b567 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -3,6 +3,7 @@ CollectionOptions Creator FetchPriceResponse +GibworkCreateTaskReponse JupiterTokenData LuloAccountDetailsResponse MintCollectionNFTResponse @@ -10,4 +11,5 @@ PumpFunTokenOptions PythFetchPriceResponse

    Functions

    diff --git a/package.json b/package.json index abd3301..8ba7b4a 100644 --- a/package.json +++ b/package.json @@ -1,68 +1,72 @@ { - "name": "solana-agent-kit", - "version": "1.3.0", - "description": "connect any ai agents to solana protocols", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "scripts": { - "build": "tsc", - "docs": "typedoc src --out docs", - "test": "ts-node test/index.ts", - "generate": "ts-node src/utils/keypair.ts", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"" - }, - "engines": { - "node": ">=23.1.0", - "pnpm": ">=8.0.0" - }, - "keywords": [], - "author": "sendaifun", - "license": "Apache-2.0", - "dependencies": { - "@bonfida/spl-name-service": "^3.0.7", - "@coral-xyz/anchor": "0.29", - "@langchain/core": "^0.3.18", - "@langchain/groq": "^0.1.2", - "@langchain/langgraph": "^0.2.27", - "@langchain/openai": "^0.3.13", - "@lightprotocol/compressed-token": "^0.17.1", - "@lightprotocol/stateless.js": "^0.17.1", - "@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-web3js-adapters": "^0.9.2", - "@onsol/tldparser": "^0.6.7", - "@orca-so/common-sdk": "0.6.4", - "@orca-so/whirlpools-sdk": "^0.13.12", - "@pythnetwork/price-service-client": "^1.9.0", - "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", - "@solana/spl-token": "^0.4.9", - "@solana/web3.js": "^1.95.4", - "bn.js": "^5.2.1", - "bs58": "^6.0.0", - "chai": "^5.1.2", - "decimal.js": "^10.4.3", - "dotenv": "^16.4.5", - "form-data": "^4.0.1", - "langchain": "^0.3.6", - "openai": "^4.75.0", - "typedoc": "^0.26.11" - }, - "devDependencies": { - "@types/bn.js": "^5.1.5", - "@types/chai": "^5.0.1", - "@types/node": "^22.9.0", - "ts-node": "^10.9.2", - "typescript": "^5.7.2", - "eslint": "^8.56.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.1.3", - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0", - "prettier": "^3.2.5" - } + "name": "solana-agent-kit", + "version": "1.3.0", + "description": "connect any ai agents to solana protocols", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsc", + "docs": "typedoc src --out docs", + "test": "ts-node test/index.ts", + "test:vercel-ai": "ts-node test/agent_sdks/vercel_ai.ts", + "generate": "ts-node src/utils/keypair.ts", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"" + }, + "engines": { + "node": ">=23.1.0", + "pnpm": ">=8.0.0" + }, + "keywords": [], + "author": "sendaifun", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/openai": "^1.0.11", + "@bonfida/spl-name-service": "^3.0.7", + "@coral-xyz/anchor": "0.29", + "@langchain/core": "^0.3.18", + "@langchain/groq": "^0.1.2", + "@langchain/langgraph": "^0.2.27", + "@langchain/openai": "^0.3.13", + "@lightprotocol/compressed-token": "^0.17.1", + "@lightprotocol/stateless.js": "^0.17.1", + "@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-web3js-adapters": "^0.9.2", + "@onsol/tldparser": "^0.6.7", + "@orca-so/common-sdk": "0.6.4", + "@orca-so/whirlpools-sdk": "^0.13.12", + "@pythnetwork/price-service-client": "^1.9.0", + "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", + "@solana/spl-token": "^0.4.9", + "@solana/web3.js": "^1.95.4", + "ai": "^4.0.22", + "bn.js": "^5.2.1", + "bs58": "^6.0.0", + "chai": "^5.1.2", + "decimal.js": "^10.4.3", + "dotenv": "^16.4.5", + "form-data": "^4.0.1", + "langchain": "^0.3.6", + "openai": "^4.75.0", + "typedoc": "^0.26.11", + "zod": "^3.24.1" + }, + "devDependencies": { + "@types/bn.js": "^5.1.5", + "@types/chai": "^5.0.1", + "@types/node": "^22.9.0", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.2.5", + "ts-node": "^10.9.2", + "typescript": "^5.7.2" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddfc583..d5b467a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@ai-sdk/openai': + specifier: ^1.0.11 + version: 1.0.11(zod@3.24.1) '@bonfida/spl-name-service': specifier: ^3.0.7 version: 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) @@ -71,6 +74,9 @@ importers: '@solana/web3.js': specifier: ^1.95.4 version: 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ai: + specifier: ^4.0.22 + version: 4.0.22(react@19.0.0)(zod@3.24.1) bn.js: specifier: ^5.2.1 version: 5.2.1 @@ -98,6 +104,9 @@ importers: typedoc: specifier: ^0.26.11 version: 0.26.11(typescript@5.7.2) + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@types/bn.js': specifier: ^5.1.5 @@ -135,6 +144,46 @@ importers: packages: + '@ai-sdk/openai@1.0.11': + resolution: {integrity: sha512-qI9s7Slma5i5bB4yYVlFdcG3PNDwdqivPT1Dr8adDX92nSSpILjgFIooS5yys9sXjvvcfOi/WXbDvVhLSRRlvg==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + + '@ai-sdk/provider-utils@2.0.5': + resolution: {integrity: sha512-2M7vLhYN0ThGjNlzow7oO/lsL+DyMxvGMIYmVQvEYaCWhDzxH5dOp78VNjJIVwHzVLMbBDigX3rJuzAs853idw==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + + '@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==} + engines: {node: '>=18'} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + zod: ^3.0.0 + peerDependenciesMeta: + react: + optional: true + zod: + optional: true + + '@ai-sdk/ui-utils@1.0.6': + resolution: {integrity: sha512-ZP6Vjj+VCnSPBIAvWAdKj2olQONJ/f4aZpkVCGkzprdhv8TjHwB6CTlXFS3zypuEGy4asg84dc1dvXKooQXFvg==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + '@babel/runtime@7.26.0': resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} engines: {node: '>=6.9.0'} @@ -400,6 +449,10 @@ packages: borsh: ^0.7.0 buffer: 6.0.1 + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + '@orca-so/common-sdk@0.6.4': resolution: {integrity: sha512-iOiC6exTA9t2CEOaUPoWlNP3soN/1yZFjoz1mSf7NvOqo/PJZeIdWpB7BRXwU0mGGatjxU4SFgMGQ8NrSx+ONw==} peerDependencies: @@ -633,6 +686,9 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/diff-match-patch@1.0.36': + resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -759,6 +815,18 @@ packages: resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} engines: {node: '>= 8.0.0'} + ai@4.0.22: + resolution: {integrity: sha512-yvcjWtofI2HZwgT3jMkoNnDUhAY+S9cOvZ6xbbOzrS0ZeFl1/gcbasFnwAqUJ7uL/t72/3a0Vy/pKg6N19A2Mw==} + engines: {node: '>=18'} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + zod: ^3.0.0 + peerDependenciesMeta: + react: + optional: true + zod: + optional: true + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -1016,6 +1084,9 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + diff-match-patch@1.0.5: + resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} + diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -1132,6 +1203,10 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + eventsource-parser@3.0.0: + resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==} + engines: {node: '>=18.0.0'} + eyes@0.1.8: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} @@ -1381,6 +1456,9 @@ packages: json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -1392,6 +1470,11 @@ packages: engines: {node: '>=6'} hasBin: true + jsondiffpatch@0.6.0: + resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -1554,6 +1637,11 @@ packages: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -1703,6 +1791,10 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} + engines: {node: '>=0.10.0'} + regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -1741,6 +1833,9 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -1797,6 +1892,11 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + swr@2.3.0: + resolution: {integrity: sha512-NyZ76wA4yElZWBHzSgEJc28a0u6QZvhb6w0azeL2k7+Q1gAzVK+IqQYXhVOC/mzi+HZIozrZvBVeSeOZNR2bqA==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + synckit@0.9.2: resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -1807,6 +1907,10 @@ packages: text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + throttleit@2.1.0: + resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} + engines: {node: '>=18'} + through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} @@ -1919,6 +2023,11 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + use-sync-external-store@1.4.0: + resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + utf-8-validate@5.0.10: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} @@ -2027,6 +2136,43 @@ packages: 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) + zod: 3.24.1 + + '@ai-sdk/provider-utils@2.0.5(zod@3.24.1)': + dependencies: + '@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.3': + dependencies: + json-schema: 0.4.0 + + '@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) + 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)': + dependencies: + '@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 + '@babel/runtime@7.26.0': dependencies: regenerator-runtime: 0.14.1 @@ -2403,6 +2549,8 @@ snapshots: - supports-color - utf-8-validate + '@opentelemetry/api@1.9.0': {} + '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) @@ -2815,6 +2963,8 @@ snapshots: '@types/deep-eql@4.0.2': {} + '@types/diff-match-patch@1.0.36': {} + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 @@ -2962,6 +3112,19 @@ snapshots: dependencies: humanize-ms: 1.2.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) + '@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 + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -3205,6 +3368,8 @@ snapshots: dependencies: dequal: 2.0.3 + diff-match-patch@1.0.5: {} + diff@4.0.2: {} dir-glob@3.0.1: @@ -3335,6 +3500,8 @@ snapshots: eventemitter3@5.0.1: {} + eventsource-parser@3.0.0: {} + eyes@0.1.8: {} fast-deep-equal@3.1.3: {} @@ -3614,12 +3781,20 @@ snapshots: json-schema-traverse@0.4.1: {} + json-schema@0.4.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} json-stringify-safe@5.0.1: {} json5@2.2.3: {} + jsondiffpatch@0.6.0: + dependencies: + '@types/diff-match-patch': 1.0.36 + chalk: 5.4.0 + diff-match-patch: 1.0.5 + jsonfile@6.1.0: dependencies: universalify: 2.0.1 @@ -3765,6 +3940,8 @@ snapshots: mustache@4.2.0: {} + nanoid@3.3.8: {} + natural-compare@1.4.0: {} no-case@3.0.4: @@ -3896,6 +4073,8 @@ snapshots: queue-microtask@1.2.3: {} + react@19.0.0: {} + regenerator-runtime@0.14.1: {} regex-recursion@5.0.0: @@ -3937,6 +4116,8 @@ snapshots: safe-buffer@5.2.1: {} + secure-json-parse@2.7.0: {} + semver@7.6.3: {} set-function-length@1.2.2: @@ -3993,6 +4174,12 @@ snapshots: dependencies: has-flag: 4.0.0 + swr@2.3.0(react@19.0.0): + dependencies: + dequal: 2.0.3 + react: 19.0.0 + use-sync-external-store: 1.4.0(react@19.0.0) + synckit@0.9.2: dependencies: '@pkgr/core': 0.1.1 @@ -4002,6 +4189,8 @@ snapshots: text-table@0.2.0: {} + throttleit@2.1.0: {} + through@2.3.8: {} tiny-inflate@1.0.3: {} @@ -4111,6 +4300,10 @@ snapshots: dependencies: punycode: 2.3.1 + use-sync-external-store@1.4.0(react@19.0.0): + dependencies: + react: 19.0.0 + utf-8-validate@5.0.10: dependencies: node-gyp-build: 4.8.4 diff --git a/src/index.ts b/src/index.ts index 1b4116f..4a9f3a4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,8 @@ import { SolanaAgentKit } from "./agent"; import { createSolanaTools } from "./langchain"; +import { createSolanaTools as createVercelAITools } from "./vercel-ai"; -export { SolanaAgentKit, createSolanaTools }; +export { SolanaAgentKit, createSolanaTools, createVercelAITools }; // Optional: Export types that users might need export * from "./types"; diff --git a/src/vercel-ai/index.ts b/src/vercel-ai/index.ts new file mode 100644 index 0000000..31c9f25 --- /dev/null +++ b/src/vercel-ai/index.ts @@ -0,0 +1,1489 @@ +import { tool, type CoreTool } from "ai"; +import { SolanaAgentKit } from "../agent"; +import z from "zod"; +import { PublicKey } from "@solana/web3.js"; +import { create_image } from "../tools/create_image"; +import BN from "bn.js"; +import Decimal from "decimal.js"; +import { FEE_TIERS } from "../tools"; +import { GibworkCreateTaskReponse, PythFetchPriceResponse } from "../types"; + +export class VercelAITools { + constructor(private solanaKit: SolanaAgentKit) {} + + solanaBalanceTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.balance", + description: `Get the balance of a Solana wallet or token account. + + If you want to get the balance of your wallet, you don't need to provide the tokenAddress. + If no tokenAddress is provided, the balance will be in SOL. + + Inputs: + tokenAccountAddress: string, eg "So11111111111111111111111111111111111111112" (optional)`, + parameters: z.object({ + tokenAccountAddress: z.string().optional(), + }), + execute: async ({ tokenAccountAddress }) => { + try { + const address = tokenAccountAddress + ? new PublicKey(tokenAccountAddress) + : undefined; + const balance = await this.solanaKit.getBalance(address); + + return { + status: "success", + balance: balance, + token: address ? address.toBase58() : "SOL", + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaTransferTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.transfer", + description: ` + Transfer tokens or SOL to another address ( also called as wallet address ). + + Inputs ( input is a JSON string ): + to: string, eg "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk" (required) + amount: number, eg 1 (required) + mint?: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (optional) `, + parameters: z.object({ + to: z.string(), + amount: z.number(), + mint: z.string().optional(), + }), + execute: async ({ to, amount, mint }) => { + try { + const recipient = new PublicKey(to); + const mintAddress = mint ? new PublicKey(mint) : undefined; + + const tx = await this.solanaKit.transfer( + recipient, + amount, + mintAddress, + ); + + return { + status: "success", + message: "Transfer completed successfully", + amount: amount, + recipient: to, + token: mint || "SOL", + transaction: tx, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaDeployTokenTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.deployToken", + description: `Deploy a new token on Solana blockchain. + + Inputs (input is a JSON string): + name: string, eg "My Token" (required) + uri: string, eg "https://example.com/token.json" (required) + symbol: string, eg "MTK" (required) + decimals?: number, eg 9 (optional, defaults to 9) + initialSupply?: number, eg 1000000 (optional)`, + parameters: z.object({ + name: z.string(), + uri: z.string(), + symbol: z.string(), + decimals: z.number().optional(), + initialSupply: z.number().optional(), + }), + execute: async ({ + name, + uri, + symbol, + decimals = 9, + initialSupply = 0, + }) => { + try { + const result = await this.solanaKit.deployToken( + name, + uri, + symbol, + decimals, + initialSupply, + ); + + return { + status: "success", + message: "Token deployed successfully", + mintAddress: result.mint.toString(), + decimals: decimals || 9, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaDeployCollectionTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.deployCollection", + description: "Deploy a new NFT collection on Solana blockchain", + parameters: z.object({ + name: z.string(), + uri: z.string(), + royaltyBasisPoints: z.number().optional(), + }), + execute: async ({ name, uri, royaltyBasisPoints = 0 }) => { + try { + const result = await this.solanaKit.deployCollection({ + name, + uri, + royaltyBasisPoints, + }); + return { + status: "success", + message: "Collection deployed successfully", + collectionAddress: result.collectionAddress.toString(), + name, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaMintNFTTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.mintNFT", + description: "Mint a new NFT in a collection on Solana blockchain", + parameters: z.object({ + collectionMint: z.string(), + name: z.string(), + uri: z.string(), + recipient: z.string().optional(), + }), + execute: async ({ collectionMint, name, uri, recipient }) => { + try { + const result = await this.solanaKit.mintNFT( + new PublicKey(collectionMint), + { name, uri }, + recipient + ? new PublicKey(recipient) + : this.solanaKit.wallet_address, + ); + return { + status: "success", + message: "NFT minted successfully", + mintAddress: result.mint.toString(), + metadata: { name, uri }, + recipient: recipient || result.mint.toString(), + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaTradeTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.trade", + description: "Swap tokens using Jupiter Exchange", + parameters: z.object({ + outputMint: z.string(), + inputAmount: z.number(), + inputMint: z.string().optional(), + slippageBps: z.number().optional(), + }), + execute: async ({ outputMint, inputAmount, inputMint, slippageBps }) => { + try { + const tx = await this.solanaKit.trade( + new PublicKey(outputMint), + inputAmount, + inputMint + ? new PublicKey(inputMint) + : new PublicKey("So11111111111111111111111111111111111111112"), + slippageBps, + ); + return { + status: "success", + message: "Trade executed successfully", + transaction: tx, + inputAmount, + inputToken: inputMint || "SOL", + outputToken: outputMint, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaRequestFundsTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.requestFunds", + description: "Request SOL from Solana faucet (devnet/testnet only)", + parameters: z.object({}), + execute: async () => { + try { + await this.solanaKit.requestFaucetFunds(); + return { + status: "success", + message: "Successfully requested faucet funds", + network: this.solanaKit.connection.rpcEndpoint.split("/")[2], + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaRegisterDomainTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.registerDomain", + description: "Register a .sol domain name for your wallet", + parameters: z.object({ + name: z.string().min(1, "Name is required"), + spaceKB: z + .number() + .positive("spaceKB must be a positive number") + .default(1) + .optional(), + }), + execute: async ({ name, spaceKB = 1 }) => { + try { + const tx = await this.solanaKit.registerDomain(name, spaceKB); + return { + status: "success", + message: "Domain registered successfully", + transaction: tx, + domain: `${name}.sol`, + spaceKB, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaResolveDomainTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.resolveDomain", + description: `Resolve ONLY .sol domain names to a Solana PublicKey. + This tool is exclusively for .sol domains. + DO NOT use this for other domain types like .blink, .bonk, etc.`, + parameters: z.object({ + domain: z + .string() + .trim() + .min(1, "Domain name is required") + .regex(/\.sol$/, "Domain must end with .sol"), + }), + execute: async ({ domain }) => { + try { + const publicKey = await this.solanaKit.resolveSolDomain(domain); + return { + status: "success", + message: "Domain resolved successfully", + publicKey: publicKey.toBase58(), + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaGetDomainTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.getDomain", + description: + "Retrieve the .sol domain associated with a given account address", + parameters: z.object({ + account: z + .string() + .trim() + .min(1, "Account address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid Solana account address"), + }), + execute: async ({ account }) => { + try { + const publicKey = new PublicKey(account); + const domain = await this.solanaKit.getPrimaryDomain(publicKey); + return { + status: "success", + message: "Primary domain retrieved successfully", + domain, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaGetWalletAddressTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.getWalletAddress", + description: "Get the wallet address of the agent", + parameters: z.object({}), + execute: async () => { + return { + status: "success", + message: "Wallet address retrieved successfully", + address: this.solanaKit.wallet_address.toString(), + }; + }, + }); + } + + solanaPumpfunTokenLaunchTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.launchPumpfunToken", + description: `Launch a token on Pump.fun. + Do not use this tool for any other purpose, or for creating SPL tokens. + If the user asks you to choose the parameters, you should generate valid values. + For generating the image, you can use the solana_create_image tool.`, + parameters: z.object({ + tokenName: z.string().min(1, "Token name is required"), + tokenTicker: z.string().min(1, "Token ticker is required"), + description: z.string().min(1, "Description is required"), + imageUrl: z.string().url("Invalid image URL"), + twitter: z.string().url("Invalid Twitter URL").optional(), + telegram: z.string().url("Invalid Telegram URL").optional(), + website: z.string().url("Invalid website URL").optional(), + initialLiquiditySOL: z + .number() + .positive("Initial liquidity must be positive") + .optional(), + }), + execute: async ({ + tokenName, + tokenTicker, + description, + imageUrl, + twitter, + telegram, + website, + initialLiquiditySOL, + }) => { + try { + await this.solanaKit.launchPumpFunToken( + tokenName, + tokenTicker, + description, + imageUrl, + // @ts-expect-error Value matches type however TS still shows error + { + twitter, + telegram, + website, + initialLiquiditySOL, + }, + ); + + return { + status: "success", + message: "Token launched successfully on Pump.fun", + tokenName, + tokenTicker, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaCreateImageTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.createImage", + description: + "Create an image using OpenAI's DALL-E. Input should be a string prompt for the image.", + parameters: z.object({ + prompt: z.string().trim().min(1, "Image prompt cannot be empty"), + }), + execute: async ({ prompt }) => { + try { + const result = await create_image(this.solanaKit, prompt); + return { + status: "success", + message: "Image created successfully", + ...result, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaLendAssetTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.lendAsset", + description: + "Lend idle USDC for yield using Lulo (only USDC is supported)", + parameters: z.object({ + amount: z + .number() + .positive("Amount must be positive") + .min(0.000001, "Amount must be at least 0.000001 USDC"), + }), + execute: async ({ amount }) => { + try { + const tx = await this.solanaKit.lendAssets(amount); + return { + status: "success", + message: "Asset lent successfully", + transaction: tx, + amount, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaTPSCalculatorTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.getTPS", + description: + "Get the current TPS (transactions per second) of the Solana network", + parameters: z.object({}), + execute: async () => { + try { + const tps = await this.solanaKit.getTPS(); + return { + status: "success", + message: "TPS fetched successfully", + network: "mainnet-beta", + tps: tps, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaStakeTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.stake", + description: + "Stake your SOL (Solana), also called as SOL staking or liquid staking", + parameters: z.object({ + amount: z + .number() + .positive("Stake amount must be positive") + .min(0.001, "Minimum stake amount is 0.001 SOL"), + }), + execute: async ({ amount }) => { + try { + const tx = await this.solanaKit.stake(amount); + return { + status: "success", + message: "Staked successfully", + transaction: tx, + amount, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaFetchPriceTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.fetchPrice", + description: "Fetch the price of a given token in USDC", + parameters: z.object({ + tokenId: z + .string() + .trim() + .min(1, "Token ID is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid Solana token address"), + }), + execute: async ({ tokenId }) => { + try { + const price = await this.solanaKit.fetchTokenPrice(tokenId); + return { + status: "success", + tokenId, + priceInUSDC: price, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaTokenDataTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.tokenData", + description: "Get the token data for a given token mint address", + parameters: z.object({ + mintAddress: z + .string() + .trim() + .min(1, "Mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid Solana token address"), + }), + execute: async ({ mintAddress }) => { + try { + const tokenData = + await this.solanaKit.getTokenDataByAddress(mintAddress); + return { + status: "success", + tokenData, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaTokenDataByTickerTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.tokenDataByTicker", + description: "Get the token data for a given token ticker", + parameters: z.object({ + ticker: z + .string() + .trim() + .min(1, "Ticker is required") + .max(10, "Ticker too long"), + }), + execute: async ({ ticker }) => { + try { + const tokenData = await this.solanaKit.getTokenDataByTicker(ticker); + return { + status: "success", + tokenData, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaCompressedAirdropTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.compressedAirdrop", + description: "Airdrop SPL tokens with ZK Compression", + parameters: z.object({ + mintAddress: z + .string() + .trim() + .min(1, "Mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid token mint address"), + amount: z.number().positive("Amount must be positive"), + decimals: z + .number() + .int("Decimals must be an integer") + .min(0, "Decimals must be non-negative") + .max(9, "Decimals cannot exceed 9"), + recipients: z + .array(z.string()) + .min(1, "At least one recipient is required") + .refine( + (recipients) => + recipients.every((addr) => { + try { + new PublicKey(addr); + return true; + } catch { + return false; + } + }), + "One or more recipient addresses are invalid", + ), + priorityFeeInLamports: z + .number() + .int("Priority fee must be an integer") + .nonnegative("Priority fee cannot be negative") + .default(30_000), + shouldLog: z.boolean().default(false), + }), + execute: async ({ + mintAddress, + amount, + decimals, + recipients, + priorityFeeInLamports, + shouldLog, + }) => { + try { + const txs = await this.solanaKit.sendCompressedAirdrop( + mintAddress, + amount, + decimals, + recipients, + priorityFeeInLamports, + shouldLog, + ); + return { + status: "success", + message: `Airdropped ${amount} tokens to ${recipients.length} recipients.`, + transactionHashes: txs, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaCreateSingleSidedWhirlpoolTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.createOrcaSingleSidedWhirlpool", + description: "Create a single-sided Whirlpool with liquidity", + parameters: z.object({ + depositTokenAmount: z + .number() + .int("Deposit amount must be an integer") + .positive("Deposit amount must be positive"), + depositTokenMint: z + .string() + .trim() + .min(1, "Deposit token mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid deposit token mint address"), + otherTokenMint: z + .string() + .trim() + .min(1, "Other token mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid other token mint address"), + initialPrice: z.number().positive("Initial price must be positive"), + maxPrice: z + .number() + .positive("Max price must be positive") + .refine((val) => val > 0, "Max price must be greater than 0"), + feeTier: z + .number() + .refine( + (val) => val in FEE_TIERS, + `Invalid fee tier. Available options: ${Object.keys(FEE_TIERS).join(", ")}`, + ), + }), + execute: async ({ + depositTokenAmount, + depositTokenMint, + otherTokenMint, + initialPrice, + maxPrice, + feeTier, + }) => { + try { + const txId = await this.solanaKit.createOrcaSingleSidedWhirlpool( + new BN(depositTokenAmount), + new PublicKey(depositTokenMint), + new PublicKey(otherTokenMint), + new Decimal(initialPrice), + new Decimal(maxPrice), + // @ts-expect-error Value matches type however TS still shows error + feeTier, + ); + + return { + status: "success", + message: "Single-sided Whirlpool created successfully", + transaction: txId, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaRaydiumCreateAmmV4Tool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.raydiumCreateAmmV4", + description: + "Create Raydium's Legacy AMM that requires an OpenBook marketID", + parameters: z.object({ + marketId: z + .string() + .trim() + .min(1, "Market ID is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid market ID"), + baseAmount: z + .number() + .int("Base amount must be an integer") + .positive("Base amount must be positive"), + quoteAmount: z + .number() + .int("Quote amount must be an integer") + .positive("Quote amount must be positive"), + startTime: z + .number() + .int("Start time must be an integer") + .nonnegative("Start time cannot be negative"), + }), + execute: async ({ marketId, baseAmount, quoteAmount, startTime }) => { + try { + const tx = await this.solanaKit.raydiumCreateAmmV4( + new PublicKey(marketId), + new BN(baseAmount), + new BN(quoteAmount), + new BN(startTime), + ); + + return { + status: "success", + message: "Raydium AMM V4 pool created successfully", + transaction: tx, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaRaydiumCreateClmmTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.raydiumCreateClmm", + description: + "Create a Concentrated Liquidity Market Maker (CLMM) pool with custom liquidity ranges", + parameters: z.object({ + mint1: z + .string() + .trim() + .min(1, "First mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid first mint address"), + mint2: z + .string() + .trim() + .min(1, "Second mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid second mint address"), + configId: z + .string() + .trim() + .min(1, "Config ID is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid config ID"), + initialPrice: z.number().positive("Initial price must be positive"), + startTime: z + .number() + .int("Start time must be an integer") + .nonnegative("Start time cannot be negative"), + }), + execute: async ({ mint1, mint2, configId, initialPrice, startTime }) => { + try { + const tx = await this.solanaKit.raydiumCreateClmm( + new PublicKey(mint1), + new PublicKey(mint2), + new PublicKey(configId), + new Decimal(initialPrice), + new BN(startTime), + ); + + return { + status: "success", + message: "Raydium CLMM pool created successfully", + transaction: tx, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaRaydiumCreateCpmmTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.raydiumCreateCpmm", + description: + "Create Raydium's newest CPMM pool (supports Token 2022 standard)", + parameters: z.object({ + mint1: z + .string() + .trim() + .min(1, "First mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid first mint address"), + mint2: z + .string() + .trim() + .min(1, "Second mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid second mint address"), + configId: z + .string() + .trim() + .min(1, "Config ID is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid config ID"), + mintAAmount: z + .number() + .int("Mint A amount must be an integer") + .positive("Mint A amount must be positive"), + mintBAmount: z + .number() + .int("Mint B amount must be an integer") + .positive("Mint B amount must be positive"), + startTime: z + .number() + .int("Start time must be an integer") + .nonnegative("Start time cannot be negative"), + }), + execute: async ({ + mint1, + mint2, + configId, + mintAAmount, + mintBAmount, + startTime, + }) => { + try { + const tx = await this.solanaKit.raydiumCreateCpmm( + new PublicKey(mint1), + new PublicKey(mint2), + new PublicKey(configId), + new BN(mintAAmount), + new BN(mintBAmount), + new BN(startTime), + ); + + return { + status: "success", + message: "Raydium CPMM pool created successfully", + transaction: tx, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaOpenbookCreateMarketTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.openbookCreateMarket", + description: "Create an Openbook market (required for AMM v4)", + parameters: z.object({ + baseMint: z + .string() + .trim() + .min(1, "Base mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid base mint address"), + quoteMint: z + .string() + .trim() + .min(1, "Quote mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid quote mint address"), + lotSize: z.number().positive("Lot size must be positive"), + tickSize: z.number().positive("Tick size must be positive"), + }), + execute: async ({ baseMint, quoteMint, lotSize, tickSize }) => { + try { + const tx = await this.solanaKit.openbookCreateMarket( + new PublicKey(baseMint), + new PublicKey(quoteMint), + lotSize, + tickSize, + ); + + return { + status: "success", + message: "Openbook market created successfully", + transaction: tx, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } + + solanaPythFetchPriceTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.pythFetchPrice", + description: + "Fetch the price of a given price feed from Pyth's Hermes service", + parameters: z.object({ + priceFeedID: z + .string() + .trim() + .min(1, "Price feed ID is required") + .regex( + /^0x[a-fA-F0-9]{64}$/, + "Invalid price feed ID format. Must be a 32-byte hex string starting with 0x", + ), + }), + execute: async ({ priceFeedID }) => { + try { + const price = await this.solanaKit.pythFetchPrice(priceFeedID); + return { + status: "success", + priceFeedID, + price, + } as PythFetchPriceResponse; + } catch (e: any) { + return { + status: "error", + priceFeedID, + message: e.message, + code: e.code || "UNKNOWN_ERROR", + } as PythFetchPriceResponse; + } + }, + }); + } + + solanaResolveAllDomainsTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.resolveAllDomains", + description: `Resolve domain names to a public key for ALL domain types EXCEPT .sol domains. + Use this for domains like .blink, .bonk, etc. + DO NOT use this for .sol domains.`, + parameters: z.object({ + domain: z + .string() + .trim() + .min(1, "Domain name is required") + .refine( + (val) => !val.endsWith(".sol"), + "This tool cannot be used for .sol domains. Use solana.resolveDomain instead.", + ) + .refine( + (val) => val.includes("."), + "Invalid domain format. Must include a TLD (e.g., .blink, .bonk)", + ), + }), + execute: async ({ domain }) => { + try { + const owner = await this.solanaKit.resolveAllDomains(domain); + + if (!owner) { + return { + status: "error", + message: "Domain not found", + code: "DOMAIN_NOT_FOUND", + }; + } + + return { + status: "success", + message: "Domain resolved successfully", + owner: owner.toString(), + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "DOMAIN_RESOLUTION_ERROR", + }; + } + }, + }); + } + + solanaGetOwnedDomainsTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.getOwnedDomains", + description: "Get all domains owned by a specific wallet address", + parameters: z.object({ + owner: z + .string() + .trim() + .min(1, "Owner address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid Solana wallet address"), + }), + execute: async ({ owner }) => { + try { + const ownerPubkey = new PublicKey(owner); + const domains = await this.solanaKit.getOwnedAllDomains(ownerPubkey); + return { + status: "success", + message: "Owned domains fetched successfully", + domains, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "FETCH_OWNED_DOMAINS_ERROR", + }; + } + }, + }); + } + + solanaGetOwnedTldDomainsTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.getOwnedTldDomains", + description: + "Get all domains owned by the agent's wallet for a specific TLD", + parameters: z.object({ + tld: z + .string() + .trim() + .min(1, "TLD is required") + .regex( + /^[a-zA-Z0-9]+$/, + "TLD must contain only alphanumeric characters", + ), + }), + execute: async ({ tld }) => { + try { + const domains = await this.solanaKit.getOwnedDomainsForTLD(tld); + return { + status: "success", + message: "TLD domains fetched successfully", + domains, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "FETCH_TLD_DOMAINS_ERROR", + }; + } + }, + }); + } + + solanaGetAllTldsTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.getAllTlds", + description: + "Get all active top-level domains (TLDs) in the AllDomains Name Service", + parameters: z.object({}), + execute: async () => { + try { + const tlds = await this.solanaKit.getAllDomainsTLDs(); + return { + status: "success", + message: "TLDs fetched successfully", + tlds, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "FETCH_TLDS_ERROR", + }; + } + }, + }); + } + + solanaGetMainDomainTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.getMainDomain", + description: "Get the main/favorite domain for a given wallet address", + parameters: z.object({ + owner: z + .string() + .trim() + .min(1, "Owner address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid Solana wallet address"), + }), + execute: async ({ owner }) => { + try { + const ownerPubkey = new PublicKey(owner); + const mainDomain = + await this.solanaKit.getMainAllDomainsDomain(ownerPubkey); + return { + status: "success", + message: "Main domain fetched successfully", + domain: mainDomain, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "FETCH_MAIN_DOMAIN_ERROR", + }; + } + }, + }); + } + + solanaCreateGibworkTaskTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.createGibworkTask", + description: "Create a task on Gibwork", + parameters: z.object({ + title: z + .string() + .trim() + .min(1, "Title is required") + .max(200, "Title too long"), + content: z.string().trim().min(1, "Description is required"), + requirements: z.string().trim().min(1, "Requirements are required"), + tags: z + .array(z.string()) + .min(1, "At least one tag is required") + .max(10, "Maximum 10 tags allowed"), + payer: z + .string() + .trim() + .optional() + .refine((val) => { + if (!val) { + return true; + } + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid payer wallet address"), + tokenMintAddress: z + .string() + .trim() + .min(1, "Token mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid token mint address"), + amount: z + .number() + .positive("Amount must be positive") + .min(0.000001, "Amount must be at least 0.000001"), + }), + execute: async ({ + title, + content, + requirements, + tags, + tokenMintAddress, + amount, + payer, + }) => { + try { + const taskData = await this.solanaKit.createGibworkTask( + title, + content, + requirements, + tags, + tokenMintAddress, + amount, + payer, + ); + + return { + status: "success", + taskId: taskData.taskId, + signature: taskData.signature, + } as GibworkCreateTaskReponse; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "CREATE_TASK_ERROR", + }; + } + }, + }); + } +} + +export function createSolanaTools( + solanaKit: SolanaAgentKit, +): Record { + const vercelTools = new VercelAITools(solanaKit); + + return { + solanaBalanceTool: vercelTools.solanaBalanceTool(), + solanaTransferTool: vercelTools.solanaTransferTool(), + solanaDeployTokenTool: vercelTools.solanaDeployTokenTool(), + solanaDeployCollectionTool: vercelTools.solanaDeployCollectionTool(), + solanaMintNFTTool: vercelTools.solanaMintNFTTool(), + solanaTradeTool: vercelTools.solanaTradeTool(), + solanaRequestFundsTool: vercelTools.solanaRequestFundsTool(), + solanaRegisterDomainTool: vercelTools.solanaRegisterDomainTool(), + solanaGetWalletAddressTool: vercelTools.solanaGetWalletAddressTool(), + solanaPumpfunTokenLaunchTool: vercelTools.solanaPumpfunTokenLaunchTool(), + solanaCreateImageTool: vercelTools.solanaCreateImageTool(), + solanaLendAssetTool: vercelTools.solanaLendAssetTool(), + solanaTPSCalculatorTool: vercelTools.solanaTPSCalculatorTool(), + solanaStakeTool: vercelTools.solanaStakeTool(), + solanaFetchPriceTool: vercelTools.solanaFetchPriceTool(), + solanaTokenDataTool: vercelTools.solanaTokenDataTool(), + solanaTokenDataByTickerTool: vercelTools.solanaTokenDataByTickerTool(), + solanaCompressedAirdropTool: vercelTools.solanaCompressedAirdropTool(), + solanaRaydiumCreateAmmV4Tool: vercelTools.solanaRaydiumCreateAmmV4Tool(), + solanaRaydiumCreateClmmTool: vercelTools.solanaRaydiumCreateClmmTool(), + solanaRaydiumCreateCpmmTool: vercelTools.solanaRaydiumCreateCpmmTool(), + solanaOpenbookCreateMarketTool: + vercelTools.solanaOpenbookCreateMarketTool(), + solanaCreateSingleSidedWhirlpoolTool: + vercelTools.solanaCreateSingleSidedWhirlpoolTool(), + solanaPythFetchPriceTool: vercelTools.solanaPythFetchPriceTool(), + solanaResolveDomainTool: vercelTools.solanaResolveDomainTool(), + solanaResolveAllDomainsTool: vercelTools.solanaResolveAllDomainsTool(), + solanaGetDomainTool: vercelTools.solanaGetDomainTool(), + solanaGetOwnedDomainsTool: vercelTools.solanaGetOwnedDomainsTool(), + solanaGetOwnedTldDomainsTool: vercelTools.solanaGetOwnedTldDomainsTool(), + solanaGetAllTldsTool: vercelTools.solanaGetAllTldsTool(), + solanaGetMainDomainTool: vercelTools.solanaGetMainDomainTool(), + solanaCreateGibworkTaskTool: vercelTools.solanaCreateGibworkTaskTool(), + }; +} diff --git a/test/agent_sdks/vercel_ai.ts b/test/agent_sdks/vercel_ai.ts new file mode 100644 index 0000000..789d477 --- /dev/null +++ b/test/agent_sdks/vercel_ai.ts @@ -0,0 +1,196 @@ +import { SolanaAgentKit } from "../../src"; +import { createVercelAITools } from "../../src"; +import { OpenAI } from "openai"; +import * as dotenv from "dotenv"; +import * as fs from "fs"; +import * as readline from "readline"; +import { streamText } from "ai"; +import { createOpenAI } from "@ai-sdk/openai"; +// import { createAI, createStreamableUI, getMutableAIState } from "ai/rsc"; + +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(); + +async function runAutonomousMode(interval = 10) { + console.log("Starting autonomous mode..."); + const openai = createOpenAI({ + apiKey: process.env.OPENAI_API_KEY as string, + }); + + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL, + process.env.OPENAI_API_KEY!, + ); + + const tools = createVercelAITools(solanaAgent); + + 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 response = streamText({ + prompt: thought, + tools, + model: openai("gpt-4o-mini"), + temperature: 0.7, + system: `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.`, + maxSteps: 10, + }); + + for await (const textPart of response.textStream) { + process.stdout.write(textPart); + } + 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() { + console.log("Starting chat mode... Type 'exit' to end."); + const openai = createOpenAI({ + apiKey: process.env.OPENAI_API_KEY as string, + }); + + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL, + process.env.OPENAI_API_KEY!, + ); + + const tools = createVercelAITools(solanaAgent); + + 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 response = streamText({ + prompt: userInput, + tools, + model: openai("gpt-4o-mini"), + temperature: 0.7, + system: `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.`, + maxSteps: 10, + }); + + for await (const textPart of response.textStream) { + process.stdout.write(textPart); + } + 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 mode = await chooseMode(); + + if (mode === "chat") { + await runChatMode(); + } else { + await runAutonomousMode(); + } + } 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 f7fad313777ae6ea36276556a23a90b766a3a70d Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Thu, 26 Dec 2024 16:06:32 +0100 Subject: [PATCH 05/94] chore: lint and format --- src/vercel-ai/index.ts | 2802 +++++++++++++++++----------------- test/agent_sdks/vercel_ai.ts | 265 ++-- 2 files changed, 1532 insertions(+), 1535 deletions(-) diff --git a/src/vercel-ai/index.ts b/src/vercel-ai/index.ts index 31c9f25..800241e 100644 --- a/src/vercel-ai/index.ts +++ b/src/vercel-ai/index.ts @@ -9,96 +9,96 @@ import { FEE_TIERS } from "../tools"; import { GibworkCreateTaskReponse, PythFetchPriceResponse } from "../types"; export class VercelAITools { - constructor(private solanaKit: SolanaAgentKit) {} + constructor(private solanaKit: SolanaAgentKit) {} - solanaBalanceTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.balance", - description: `Get the balance of a Solana wallet or token account. + solanaBalanceTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.balance", + description: `Get the balance of a Solana wallet or token account. If you want to get the balance of your wallet, you don't need to provide the tokenAddress. If no tokenAddress is provided, the balance will be in SOL. Inputs: tokenAccountAddress: string, eg "So11111111111111111111111111111111111111112" (optional)`, - parameters: z.object({ - tokenAccountAddress: z.string().optional(), - }), - execute: async ({ tokenAccountAddress }) => { - try { - const address = tokenAccountAddress - ? new PublicKey(tokenAccountAddress) - : undefined; - const balance = await this.solanaKit.getBalance(address); + parameters: z.object({ + tokenAccountAddress: z.string().optional(), + }), + execute: async ({ tokenAccountAddress }) => { + try { + const address = tokenAccountAddress + ? new PublicKey(tokenAccountAddress) + : undefined; + const balance = await this.solanaKit.getBalance(address); - return { - status: "success", - balance: balance, - token: address ? address.toBase58() : "SOL", - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + return { + status: "success", + balance: balance, + token: address ? address.toBase58() : "SOL", + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaTransferTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.transfer", - description: ` + solanaTransferTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.transfer", + description: ` Transfer tokens or SOL to another address ( also called as wallet address ). Inputs ( input is a JSON string ): to: string, eg "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk" (required) amount: number, eg 1 (required) mint?: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (optional) `, - parameters: z.object({ - to: z.string(), - amount: z.number(), - mint: z.string().optional(), - }), - execute: async ({ to, amount, mint }) => { - try { - const recipient = new PublicKey(to); - const mintAddress = mint ? new PublicKey(mint) : undefined; + parameters: z.object({ + to: z.string(), + amount: z.number(), + mint: z.string().optional(), + }), + execute: async ({ to, amount, mint }) => { + try { + const recipient = new PublicKey(to); + const mintAddress = mint ? new PublicKey(mint) : undefined; - const tx = await this.solanaKit.transfer( - recipient, - amount, - mintAddress, - ); + const tx = await this.solanaKit.transfer( + recipient, + amount, + mintAddress, + ); - return { - status: "success", - message: "Transfer completed successfully", - amount: amount, - recipient: to, - token: mint || "SOL", - transaction: tx, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + return { + status: "success", + message: "Transfer completed successfully", + amount: amount, + recipient: to, + token: mint || "SOL", + transaction: tx, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaDeployTokenTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.deployToken", - description: `Deploy a new token on Solana blockchain. + solanaDeployTokenTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.deployToken", + description: `Deploy a new token on Solana blockchain. Inputs (input is a JSON string): name: string, eg "My Token" (required) @@ -106,1384 +106,1384 @@ export class VercelAITools { symbol: string, eg "MTK" (required) decimals?: number, eg 9 (optional, defaults to 9) initialSupply?: number, eg 1000000 (optional)`, - parameters: z.object({ - name: z.string(), - uri: z.string(), - symbol: z.string(), - decimals: z.number().optional(), - initialSupply: z.number().optional(), - }), - execute: async ({ - name, - uri, - symbol, - decimals = 9, - initialSupply = 0, - }) => { - try { - const result = await this.solanaKit.deployToken( - name, - uri, - symbol, - decimals, - initialSupply, - ); + parameters: z.object({ + name: z.string(), + uri: z.string(), + symbol: z.string(), + decimals: z.number().optional(), + initialSupply: z.number().optional(), + }), + execute: async ({ + name, + uri, + symbol, + decimals = 9, + initialSupply = 0, + }) => { + try { + const result = await this.solanaKit.deployToken( + name, + uri, + symbol, + decimals, + initialSupply, + ); - return { - status: "success", - message: "Token deployed successfully", - mintAddress: result.mint.toString(), - decimals: decimals || 9, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + return { + status: "success", + message: "Token deployed successfully", + mintAddress: result.mint.toString(), + decimals: decimals || 9, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaDeployCollectionTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.deployCollection", - description: "Deploy a new NFT collection on Solana blockchain", - parameters: z.object({ - name: z.string(), - uri: z.string(), - royaltyBasisPoints: z.number().optional(), - }), - execute: async ({ name, uri, royaltyBasisPoints = 0 }) => { - try { - const result = await this.solanaKit.deployCollection({ - name, - uri, - royaltyBasisPoints, - }); - return { - status: "success", - message: "Collection deployed successfully", - collectionAddress: result.collectionAddress.toString(), - name, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + solanaDeployCollectionTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.deployCollection", + description: "Deploy a new NFT collection on Solana blockchain", + parameters: z.object({ + name: z.string(), + uri: z.string(), + royaltyBasisPoints: z.number().optional(), + }), + execute: async ({ name, uri, royaltyBasisPoints = 0 }) => { + try { + const result = await this.solanaKit.deployCollection({ + name, + uri, + royaltyBasisPoints, + }); + return { + status: "success", + message: "Collection deployed successfully", + collectionAddress: result.collectionAddress.toString(), + name, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaMintNFTTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.mintNFT", - description: "Mint a new NFT in a collection on Solana blockchain", - parameters: z.object({ - collectionMint: z.string(), - name: z.string(), - uri: z.string(), - recipient: z.string().optional(), - }), - execute: async ({ collectionMint, name, uri, recipient }) => { - try { - const result = await this.solanaKit.mintNFT( - new PublicKey(collectionMint), - { name, uri }, - recipient - ? new PublicKey(recipient) - : this.solanaKit.wallet_address, - ); - return { - status: "success", - message: "NFT minted successfully", - mintAddress: result.mint.toString(), - metadata: { name, uri }, - recipient: recipient || result.mint.toString(), - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + solanaMintNFTTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.mintNFT", + description: "Mint a new NFT in a collection on Solana blockchain", + parameters: z.object({ + collectionMint: z.string(), + name: z.string(), + uri: z.string(), + recipient: z.string().optional(), + }), + execute: async ({ collectionMint, name, uri, recipient }) => { + try { + const result = await this.solanaKit.mintNFT( + new PublicKey(collectionMint), + { name, uri }, + recipient + ? new PublicKey(recipient) + : this.solanaKit.wallet_address, + ); + return { + status: "success", + message: "NFT minted successfully", + mintAddress: result.mint.toString(), + metadata: { name, uri }, + recipient: recipient || result.mint.toString(), + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaTradeTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.trade", - description: "Swap tokens using Jupiter Exchange", - parameters: z.object({ - outputMint: z.string(), - inputAmount: z.number(), - inputMint: z.string().optional(), - slippageBps: z.number().optional(), - }), - execute: async ({ outputMint, inputAmount, inputMint, slippageBps }) => { - try { - const tx = await this.solanaKit.trade( - new PublicKey(outputMint), - inputAmount, - inputMint - ? new PublicKey(inputMint) - : new PublicKey("So11111111111111111111111111111111111111112"), - slippageBps, - ); - return { - status: "success", - message: "Trade executed successfully", - transaction: tx, - inputAmount, - inputToken: inputMint || "SOL", - outputToken: outputMint, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + solanaTradeTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.trade", + description: "Swap tokens using Jupiter Exchange", + parameters: z.object({ + outputMint: z.string(), + inputAmount: z.number(), + inputMint: z.string().optional(), + slippageBps: z.number().optional(), + }), + execute: async ({ outputMint, inputAmount, inputMint, slippageBps }) => { + try { + const tx = await this.solanaKit.trade( + new PublicKey(outputMint), + inputAmount, + inputMint + ? new PublicKey(inputMint) + : new PublicKey("So11111111111111111111111111111111111111112"), + slippageBps, + ); + return { + status: "success", + message: "Trade executed successfully", + transaction: tx, + inputAmount, + inputToken: inputMint || "SOL", + outputToken: outputMint, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaRequestFundsTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.requestFunds", - description: "Request SOL from Solana faucet (devnet/testnet only)", - parameters: z.object({}), - execute: async () => { - try { - await this.solanaKit.requestFaucetFunds(); - return { - status: "success", - message: "Successfully requested faucet funds", - network: this.solanaKit.connection.rpcEndpoint.split("/")[2], - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + solanaRequestFundsTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.requestFunds", + description: "Request SOL from Solana faucet (devnet/testnet only)", + parameters: z.object({}), + execute: async () => { + try { + await this.solanaKit.requestFaucetFunds(); + return { + status: "success", + message: "Successfully requested faucet funds", + network: this.solanaKit.connection.rpcEndpoint.split("/")[2], + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaRegisterDomainTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.registerDomain", - description: "Register a .sol domain name for your wallet", - parameters: z.object({ - name: z.string().min(1, "Name is required"), - spaceKB: z - .number() - .positive("spaceKB must be a positive number") - .default(1) - .optional(), - }), - execute: async ({ name, spaceKB = 1 }) => { - try { - const tx = await this.solanaKit.registerDomain(name, spaceKB); - return { - status: "success", - message: "Domain registered successfully", - transaction: tx, - domain: `${name}.sol`, - spaceKB, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + solanaRegisterDomainTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.registerDomain", + description: "Register a .sol domain name for your wallet", + parameters: z.object({ + name: z.string().min(1, "Name is required"), + spaceKB: z + .number() + .positive("spaceKB must be a positive number") + .default(1) + .optional(), + }), + execute: async ({ name, spaceKB = 1 }) => { + try { + const tx = await this.solanaKit.registerDomain(name, spaceKB); + return { + status: "success", + message: "Domain registered successfully", + transaction: tx, + domain: `${name}.sol`, + spaceKB, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaResolveDomainTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.resolveDomain", - description: `Resolve ONLY .sol domain names to a Solana PublicKey. + solanaResolveDomainTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.resolveDomain", + description: `Resolve ONLY .sol domain names to a Solana PublicKey. This tool is exclusively for .sol domains. DO NOT use this for other domain types like .blink, .bonk, etc.`, - parameters: z.object({ - domain: z - .string() - .trim() - .min(1, "Domain name is required") - .regex(/\.sol$/, "Domain must end with .sol"), - }), - execute: async ({ domain }) => { - try { - const publicKey = await this.solanaKit.resolveSolDomain(domain); - return { - status: "success", - message: "Domain resolved successfully", - publicKey: publicKey.toBase58(), - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + parameters: z.object({ + domain: z + .string() + .trim() + .min(1, "Domain name is required") + .regex(/\.sol$/, "Domain must end with .sol"), + }), + execute: async ({ domain }) => { + try { + const publicKey = await this.solanaKit.resolveSolDomain(domain); + return { + status: "success", + message: "Domain resolved successfully", + publicKey: publicKey.toBase58(), + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaGetDomainTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.getDomain", - description: - "Retrieve the .sol domain associated with a given account address", - parameters: z.object({ - account: z - .string() - .trim() - .min(1, "Account address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid Solana account address"), - }), - execute: async ({ account }) => { - try { - const publicKey = new PublicKey(account); - const domain = await this.solanaKit.getPrimaryDomain(publicKey); - return { - status: "success", - message: "Primary domain retrieved successfully", - domain, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + solanaGetDomainTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.getDomain", + description: + "Retrieve the .sol domain associated with a given account address", + parameters: z.object({ + account: z + .string() + .trim() + .min(1, "Account address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid Solana account address"), + }), + execute: async ({ account }) => { + try { + const publicKey = new PublicKey(account); + const domain = await this.solanaKit.getPrimaryDomain(publicKey); + return { + status: "success", + message: "Primary domain retrieved successfully", + domain, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaGetWalletAddressTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.getWalletAddress", - description: "Get the wallet address of the agent", - parameters: z.object({}), - execute: async () => { - return { - status: "success", - message: "Wallet address retrieved successfully", - address: this.solanaKit.wallet_address.toString(), - }; - }, - }); - } + solanaGetWalletAddressTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.getWalletAddress", + description: "Get the wallet address of the agent", + parameters: z.object({}), + execute: async () => { + return { + status: "success", + message: "Wallet address retrieved successfully", + address: this.solanaKit.wallet_address.toString(), + }; + }, + }); + } - solanaPumpfunTokenLaunchTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.launchPumpfunToken", - description: `Launch a token on Pump.fun. + solanaPumpfunTokenLaunchTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.launchPumpfunToken", + description: `Launch a token on Pump.fun. Do not use this tool for any other purpose, or for creating SPL tokens. If the user asks you to choose the parameters, you should generate valid values. For generating the image, you can use the solana_create_image tool.`, - parameters: z.object({ - tokenName: z.string().min(1, "Token name is required"), - tokenTicker: z.string().min(1, "Token ticker is required"), - description: z.string().min(1, "Description is required"), - imageUrl: z.string().url("Invalid image URL"), - twitter: z.string().url("Invalid Twitter URL").optional(), - telegram: z.string().url("Invalid Telegram URL").optional(), - website: z.string().url("Invalid website URL").optional(), - initialLiquiditySOL: z - .number() - .positive("Initial liquidity must be positive") - .optional(), - }), - execute: async ({ - tokenName, - tokenTicker, - description, - imageUrl, - twitter, - telegram, - website, - initialLiquiditySOL, - }) => { - try { - await this.solanaKit.launchPumpFunToken( - tokenName, - tokenTicker, - description, - imageUrl, - // @ts-expect-error Value matches type however TS still shows error - { - twitter, - telegram, - website, - initialLiquiditySOL, - }, - ); + parameters: z.object({ + tokenName: z.string().min(1, "Token name is required"), + tokenTicker: z.string().min(1, "Token ticker is required"), + description: z.string().min(1, "Description is required"), + imageUrl: z.string().url("Invalid image URL"), + twitter: z.string().url("Invalid Twitter URL").optional(), + telegram: z.string().url("Invalid Telegram URL").optional(), + website: z.string().url("Invalid website URL").optional(), + initialLiquiditySOL: z + .number() + .positive("Initial liquidity must be positive") + .optional(), + }), + execute: async ({ + tokenName, + tokenTicker, + description, + imageUrl, + twitter, + telegram, + website, + initialLiquiditySOL, + }) => { + try { + await this.solanaKit.launchPumpFunToken( + tokenName, + tokenTicker, + description, + imageUrl, + // @ts-expect-error Value matches type however TS still shows error + { + twitter, + telegram, + website, + initialLiquiditySOL, + }, + ); - return { - status: "success", - message: "Token launched successfully on Pump.fun", - tokenName, - tokenTicker, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + return { + status: "success", + message: "Token launched successfully on Pump.fun", + tokenName, + tokenTicker, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaCreateImageTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.createImage", - description: - "Create an image using OpenAI's DALL-E. Input should be a string prompt for the image.", - parameters: z.object({ - prompt: z.string().trim().min(1, "Image prompt cannot be empty"), - }), - execute: async ({ prompt }) => { - try { - const result = await create_image(this.solanaKit, prompt); - return { - status: "success", - message: "Image created successfully", - ...result, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + solanaCreateImageTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.createImage", + description: + "Create an image using OpenAI's DALL-E. Input should be a string prompt for the image.", + parameters: z.object({ + prompt: z.string().trim().min(1, "Image prompt cannot be empty"), + }), + execute: async ({ prompt }) => { + try { + const result = await create_image(this.solanaKit, prompt); + return { + status: "success", + message: "Image created successfully", + ...result, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaLendAssetTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.lendAsset", - description: - "Lend idle USDC for yield using Lulo (only USDC is supported)", - parameters: z.object({ - amount: z - .number() - .positive("Amount must be positive") - .min(0.000001, "Amount must be at least 0.000001 USDC"), - }), - execute: async ({ amount }) => { - try { - const tx = await this.solanaKit.lendAssets(amount); - return { - status: "success", - message: "Asset lent successfully", - transaction: tx, - amount, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + solanaLendAssetTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.lendAsset", + description: + "Lend idle USDC for yield using Lulo (only USDC is supported)", + parameters: z.object({ + amount: z + .number() + .positive("Amount must be positive") + .min(0.000001, "Amount must be at least 0.000001 USDC"), + }), + execute: async ({ amount }) => { + try { + const tx = await this.solanaKit.lendAssets(amount); + return { + status: "success", + message: "Asset lent successfully", + transaction: tx, + amount, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaTPSCalculatorTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.getTPS", - description: - "Get the current TPS (transactions per second) of the Solana network", - parameters: z.object({}), - execute: async () => { - try { - const tps = await this.solanaKit.getTPS(); - return { - status: "success", - message: "TPS fetched successfully", - network: "mainnet-beta", - tps: tps, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + solanaTPSCalculatorTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.getTPS", + description: + "Get the current TPS (transactions per second) of the Solana network", + parameters: z.object({}), + execute: async () => { + try { + const tps = await this.solanaKit.getTPS(); + return { + status: "success", + message: "TPS fetched successfully", + network: "mainnet-beta", + tps: tps, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaStakeTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.stake", - description: - "Stake your SOL (Solana), also called as SOL staking or liquid staking", - parameters: z.object({ - amount: z - .number() - .positive("Stake amount must be positive") - .min(0.001, "Minimum stake amount is 0.001 SOL"), - }), - execute: async ({ amount }) => { - try { - const tx = await this.solanaKit.stake(amount); - return { - status: "success", - message: "Staked successfully", - transaction: tx, - amount, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + solanaStakeTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.stake", + description: + "Stake your SOL (Solana), also called as SOL staking or liquid staking", + parameters: z.object({ + amount: z + .number() + .positive("Stake amount must be positive") + .min(0.001, "Minimum stake amount is 0.001 SOL"), + }), + execute: async ({ amount }) => { + try { + const tx = await this.solanaKit.stake(amount); + return { + status: "success", + message: "Staked successfully", + transaction: tx, + amount, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaFetchPriceTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.fetchPrice", - description: "Fetch the price of a given token in USDC", - parameters: z.object({ - tokenId: z - .string() - .trim() - .min(1, "Token ID is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid Solana token address"), - }), - execute: async ({ tokenId }) => { - try { - const price = await this.solanaKit.fetchTokenPrice(tokenId); - return { - status: "success", - tokenId, - priceInUSDC: price, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + solanaFetchPriceTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.fetchPrice", + description: "Fetch the price of a given token in USDC", + parameters: z.object({ + tokenId: z + .string() + .trim() + .min(1, "Token ID is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid Solana token address"), + }), + execute: async ({ tokenId }) => { + try { + const price = await this.solanaKit.fetchTokenPrice(tokenId); + return { + status: "success", + tokenId, + priceInUSDC: price, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaTokenDataTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.tokenData", - description: "Get the token data for a given token mint address", - parameters: z.object({ - mintAddress: z - .string() - .trim() - .min(1, "Mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid Solana token address"), - }), - execute: async ({ mintAddress }) => { - try { - const tokenData = - await this.solanaKit.getTokenDataByAddress(mintAddress); - return { - status: "success", - tokenData, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + solanaTokenDataTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.tokenData", + description: "Get the token data for a given token mint address", + parameters: z.object({ + mintAddress: z + .string() + .trim() + .min(1, "Mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid Solana token address"), + }), + execute: async ({ mintAddress }) => { + try { + const tokenData = + await this.solanaKit.getTokenDataByAddress(mintAddress); + return { + status: "success", + tokenData, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaTokenDataByTickerTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.tokenDataByTicker", - description: "Get the token data for a given token ticker", - parameters: z.object({ - ticker: z - .string() - .trim() - .min(1, "Ticker is required") - .max(10, "Ticker too long"), - }), - execute: async ({ ticker }) => { - try { - const tokenData = await this.solanaKit.getTokenDataByTicker(ticker); - return { - status: "success", - tokenData, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + solanaTokenDataByTickerTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.tokenDataByTicker", + description: "Get the token data for a given token ticker", + parameters: z.object({ + ticker: z + .string() + .trim() + .min(1, "Ticker is required") + .max(10, "Ticker too long"), + }), + execute: async ({ ticker }) => { + try { + const tokenData = await this.solanaKit.getTokenDataByTicker(ticker); + return { + status: "success", + tokenData, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaCompressedAirdropTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.compressedAirdrop", - description: "Airdrop SPL tokens with ZK Compression", - parameters: z.object({ - mintAddress: z - .string() - .trim() - .min(1, "Mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid token mint address"), - amount: z.number().positive("Amount must be positive"), - decimals: z - .number() - .int("Decimals must be an integer") - .min(0, "Decimals must be non-negative") - .max(9, "Decimals cannot exceed 9"), - recipients: z - .array(z.string()) - .min(1, "At least one recipient is required") - .refine( - (recipients) => - recipients.every((addr) => { - try { - new PublicKey(addr); - return true; - } catch { - return false; - } - }), - "One or more recipient addresses are invalid", - ), - priorityFeeInLamports: z - .number() - .int("Priority fee must be an integer") - .nonnegative("Priority fee cannot be negative") - .default(30_000), - shouldLog: z.boolean().default(false), - }), - execute: async ({ - mintAddress, - amount, - decimals, - recipients, - priorityFeeInLamports, - shouldLog, - }) => { - try { - const txs = await this.solanaKit.sendCompressedAirdrop( - mintAddress, - amount, - decimals, - recipients, - priorityFeeInLamports, - shouldLog, - ); - return { - status: "success", - message: `Airdropped ${amount} tokens to ${recipients.length} recipients.`, - transactionHashes: txs, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + solanaCompressedAirdropTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.compressedAirdrop", + description: "Airdrop SPL tokens with ZK Compression", + parameters: z.object({ + mintAddress: z + .string() + .trim() + .min(1, "Mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid token mint address"), + amount: z.number().positive("Amount must be positive"), + decimals: z + .number() + .int("Decimals must be an integer") + .min(0, "Decimals must be non-negative") + .max(9, "Decimals cannot exceed 9"), + recipients: z + .array(z.string()) + .min(1, "At least one recipient is required") + .refine( + (recipients) => + recipients.every((addr) => { + try { + new PublicKey(addr); + return true; + } catch { + return false; + } + }), + "One or more recipient addresses are invalid", + ), + priorityFeeInLamports: z + .number() + .int("Priority fee must be an integer") + .nonnegative("Priority fee cannot be negative") + .default(30_000), + shouldLog: z.boolean().default(false), + }), + execute: async ({ + mintAddress, + amount, + decimals, + recipients, + priorityFeeInLamports, + shouldLog, + }) => { + try { + const txs = await this.solanaKit.sendCompressedAirdrop( + mintAddress, + amount, + decimals, + recipients, + priorityFeeInLamports, + shouldLog, + ); + return { + status: "success", + message: `Airdropped ${amount} tokens to ${recipients.length} recipients.`, + transactionHashes: txs, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaCreateSingleSidedWhirlpoolTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.createOrcaSingleSidedWhirlpool", - description: "Create a single-sided Whirlpool with liquidity", - parameters: z.object({ - depositTokenAmount: z - .number() - .int("Deposit amount must be an integer") - .positive("Deposit amount must be positive"), - depositTokenMint: z - .string() - .trim() - .min(1, "Deposit token mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid deposit token mint address"), - otherTokenMint: z - .string() - .trim() - .min(1, "Other token mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid other token mint address"), - initialPrice: z.number().positive("Initial price must be positive"), - maxPrice: z - .number() - .positive("Max price must be positive") - .refine((val) => val > 0, "Max price must be greater than 0"), - feeTier: z - .number() - .refine( - (val) => val in FEE_TIERS, - `Invalid fee tier. Available options: ${Object.keys(FEE_TIERS).join(", ")}`, - ), - }), - execute: async ({ - depositTokenAmount, - depositTokenMint, - otherTokenMint, - initialPrice, - maxPrice, - feeTier, - }) => { - try { - const txId = await this.solanaKit.createOrcaSingleSidedWhirlpool( - new BN(depositTokenAmount), - new PublicKey(depositTokenMint), - new PublicKey(otherTokenMint), - new Decimal(initialPrice), - new Decimal(maxPrice), - // @ts-expect-error Value matches type however TS still shows error - feeTier, - ); + solanaCreateSingleSidedWhirlpoolTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.createOrcaSingleSidedWhirlpool", + description: "Create a single-sided Whirlpool with liquidity", + parameters: z.object({ + depositTokenAmount: z + .number() + .int("Deposit amount must be an integer") + .positive("Deposit amount must be positive"), + depositTokenMint: z + .string() + .trim() + .min(1, "Deposit token mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid deposit token mint address"), + otherTokenMint: z + .string() + .trim() + .min(1, "Other token mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid other token mint address"), + initialPrice: z.number().positive("Initial price must be positive"), + maxPrice: z + .number() + .positive("Max price must be positive") + .refine((val) => val > 0, "Max price must be greater than 0"), + feeTier: z + .number() + .refine( + (val) => val in FEE_TIERS, + `Invalid fee tier. Available options: ${Object.keys(FEE_TIERS).join(", ")}`, + ), + }), + execute: async ({ + depositTokenAmount, + depositTokenMint, + otherTokenMint, + initialPrice, + maxPrice, + feeTier, + }) => { + try { + const txId = await this.solanaKit.createOrcaSingleSidedWhirlpool( + new BN(depositTokenAmount), + new PublicKey(depositTokenMint), + new PublicKey(otherTokenMint), + new Decimal(initialPrice), + new Decimal(maxPrice), + // @ts-expect-error Value matches type however TS still shows error + feeTier, + ); - return { - status: "success", - message: "Single-sided Whirlpool created successfully", - transaction: txId, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + return { + status: "success", + message: "Single-sided Whirlpool created successfully", + transaction: txId, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaRaydiumCreateAmmV4Tool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.raydiumCreateAmmV4", - description: - "Create Raydium's Legacy AMM that requires an OpenBook marketID", - parameters: z.object({ - marketId: z - .string() - .trim() - .min(1, "Market ID is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid market ID"), - baseAmount: z - .number() - .int("Base amount must be an integer") - .positive("Base amount must be positive"), - quoteAmount: z - .number() - .int("Quote amount must be an integer") - .positive("Quote amount must be positive"), - startTime: z - .number() - .int("Start time must be an integer") - .nonnegative("Start time cannot be negative"), - }), - execute: async ({ marketId, baseAmount, quoteAmount, startTime }) => { - try { - const tx = await this.solanaKit.raydiumCreateAmmV4( - new PublicKey(marketId), - new BN(baseAmount), - new BN(quoteAmount), - new BN(startTime), - ); + solanaRaydiumCreateAmmV4Tool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.raydiumCreateAmmV4", + description: + "Create Raydium's Legacy AMM that requires an OpenBook marketID", + parameters: z.object({ + marketId: z + .string() + .trim() + .min(1, "Market ID is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid market ID"), + baseAmount: z + .number() + .int("Base amount must be an integer") + .positive("Base amount must be positive"), + quoteAmount: z + .number() + .int("Quote amount must be an integer") + .positive("Quote amount must be positive"), + startTime: z + .number() + .int("Start time must be an integer") + .nonnegative("Start time cannot be negative"), + }), + execute: async ({ marketId, baseAmount, quoteAmount, startTime }) => { + try { + const tx = await this.solanaKit.raydiumCreateAmmV4( + new PublicKey(marketId), + new BN(baseAmount), + new BN(quoteAmount), + new BN(startTime), + ); - return { - status: "success", - message: "Raydium AMM V4 pool created successfully", - transaction: tx, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + return { + status: "success", + message: "Raydium AMM V4 pool created successfully", + transaction: tx, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaRaydiumCreateClmmTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.raydiumCreateClmm", - description: - "Create a Concentrated Liquidity Market Maker (CLMM) pool with custom liquidity ranges", - parameters: z.object({ - mint1: z - .string() - .trim() - .min(1, "First mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid first mint address"), - mint2: z - .string() - .trim() - .min(1, "Second mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid second mint address"), - configId: z - .string() - .trim() - .min(1, "Config ID is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid config ID"), - initialPrice: z.number().positive("Initial price must be positive"), - startTime: z - .number() - .int("Start time must be an integer") - .nonnegative("Start time cannot be negative"), - }), - execute: async ({ mint1, mint2, configId, initialPrice, startTime }) => { - try { - const tx = await this.solanaKit.raydiumCreateClmm( - new PublicKey(mint1), - new PublicKey(mint2), - new PublicKey(configId), - new Decimal(initialPrice), - new BN(startTime), - ); + solanaRaydiumCreateClmmTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.raydiumCreateClmm", + description: + "Create a Concentrated Liquidity Market Maker (CLMM) pool with custom liquidity ranges", + parameters: z.object({ + mint1: z + .string() + .trim() + .min(1, "First mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid first mint address"), + mint2: z + .string() + .trim() + .min(1, "Second mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid second mint address"), + configId: z + .string() + .trim() + .min(1, "Config ID is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid config ID"), + initialPrice: z.number().positive("Initial price must be positive"), + startTime: z + .number() + .int("Start time must be an integer") + .nonnegative("Start time cannot be negative"), + }), + execute: async ({ mint1, mint2, configId, initialPrice, startTime }) => { + try { + const tx = await this.solanaKit.raydiumCreateClmm( + new PublicKey(mint1), + new PublicKey(mint2), + new PublicKey(configId), + new Decimal(initialPrice), + new BN(startTime), + ); - return { - status: "success", - message: "Raydium CLMM pool created successfully", - transaction: tx, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + return { + status: "success", + message: "Raydium CLMM pool created successfully", + transaction: tx, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaRaydiumCreateCpmmTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.raydiumCreateCpmm", - description: - "Create Raydium's newest CPMM pool (supports Token 2022 standard)", - parameters: z.object({ - mint1: z - .string() - .trim() - .min(1, "First mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid first mint address"), - mint2: z - .string() - .trim() - .min(1, "Second mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid second mint address"), - configId: z - .string() - .trim() - .min(1, "Config ID is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid config ID"), - mintAAmount: z - .number() - .int("Mint A amount must be an integer") - .positive("Mint A amount must be positive"), - mintBAmount: z - .number() - .int("Mint B amount must be an integer") - .positive("Mint B amount must be positive"), - startTime: z - .number() - .int("Start time must be an integer") - .nonnegative("Start time cannot be negative"), - }), - execute: async ({ - mint1, - mint2, - configId, - mintAAmount, - mintBAmount, - startTime, - }) => { - try { - const tx = await this.solanaKit.raydiumCreateCpmm( - new PublicKey(mint1), - new PublicKey(mint2), - new PublicKey(configId), - new BN(mintAAmount), - new BN(mintBAmount), - new BN(startTime), - ); + solanaRaydiumCreateCpmmTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.raydiumCreateCpmm", + description: + "Create Raydium's newest CPMM pool (supports Token 2022 standard)", + parameters: z.object({ + mint1: z + .string() + .trim() + .min(1, "First mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid first mint address"), + mint2: z + .string() + .trim() + .min(1, "Second mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid second mint address"), + configId: z + .string() + .trim() + .min(1, "Config ID is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid config ID"), + mintAAmount: z + .number() + .int("Mint A amount must be an integer") + .positive("Mint A amount must be positive"), + mintBAmount: z + .number() + .int("Mint B amount must be an integer") + .positive("Mint B amount must be positive"), + startTime: z + .number() + .int("Start time must be an integer") + .nonnegative("Start time cannot be negative"), + }), + execute: async ({ + mint1, + mint2, + configId, + mintAAmount, + mintBAmount, + startTime, + }) => { + try { + const tx = await this.solanaKit.raydiumCreateCpmm( + new PublicKey(mint1), + new PublicKey(mint2), + new PublicKey(configId), + new BN(mintAAmount), + new BN(mintBAmount), + new BN(startTime), + ); - return { - status: "success", - message: "Raydium CPMM pool created successfully", - transaction: tx, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + return { + status: "success", + message: "Raydium CPMM pool created successfully", + transaction: tx, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaOpenbookCreateMarketTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.openbookCreateMarket", - description: "Create an Openbook market (required for AMM v4)", - parameters: z.object({ - baseMint: z - .string() - .trim() - .min(1, "Base mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid base mint address"), - quoteMint: z - .string() - .trim() - .min(1, "Quote mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid quote mint address"), - lotSize: z.number().positive("Lot size must be positive"), - tickSize: z.number().positive("Tick size must be positive"), - }), - execute: async ({ baseMint, quoteMint, lotSize, tickSize }) => { - try { - const tx = await this.solanaKit.openbookCreateMarket( - new PublicKey(baseMint), - new PublicKey(quoteMint), - lotSize, - tickSize, - ); + solanaOpenbookCreateMarketTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.openbookCreateMarket", + description: "Create an Openbook market (required for AMM v4)", + parameters: z.object({ + baseMint: z + .string() + .trim() + .min(1, "Base mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid base mint address"), + quoteMint: z + .string() + .trim() + .min(1, "Quote mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid quote mint address"), + lotSize: z.number().positive("Lot size must be positive"), + tickSize: z.number().positive("Tick size must be positive"), + }), + execute: async ({ baseMint, quoteMint, lotSize, tickSize }) => { + try { + const tx = await this.solanaKit.openbookCreateMarket( + new PublicKey(baseMint), + new PublicKey(quoteMint), + lotSize, + tickSize, + ); - return { - status: "success", - message: "Openbook market created successfully", - transaction: tx, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } + return { + status: "success", + message: "Openbook market created successfully", + transaction: tx, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "UNKNOWN_ERROR", + }; + } + }, + }); + } - solanaPythFetchPriceTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.pythFetchPrice", - description: - "Fetch the price of a given price feed from Pyth's Hermes service", - parameters: z.object({ - priceFeedID: z - .string() - .trim() - .min(1, "Price feed ID is required") - .regex( - /^0x[a-fA-F0-9]{64}$/, - "Invalid price feed ID format. Must be a 32-byte hex string starting with 0x", - ), - }), - execute: async ({ priceFeedID }) => { - try { - const price = await this.solanaKit.pythFetchPrice(priceFeedID); - return { - status: "success", - priceFeedID, - price, - } as PythFetchPriceResponse; - } catch (e: any) { - return { - status: "error", - priceFeedID, - message: e.message, - code: e.code || "UNKNOWN_ERROR", - } as PythFetchPriceResponse; - } - }, - }); - } + solanaPythFetchPriceTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.pythFetchPrice", + description: + "Fetch the price of a given price feed from Pyth's Hermes service", + parameters: z.object({ + priceFeedID: z + .string() + .trim() + .min(1, "Price feed ID is required") + .regex( + /^0x[a-fA-F0-9]{64}$/, + "Invalid price feed ID format. Must be a 32-byte hex string starting with 0x", + ), + }), + execute: async ({ priceFeedID }) => { + try { + const price = await this.solanaKit.pythFetchPrice(priceFeedID); + return { + status: "success", + priceFeedID, + price, + } as PythFetchPriceResponse; + } catch (e: any) { + return { + status: "error", + priceFeedID, + message: e.message, + code: e.code || "UNKNOWN_ERROR", + } as PythFetchPriceResponse; + } + }, + }); + } - solanaResolveAllDomainsTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.resolveAllDomains", - description: `Resolve domain names to a public key for ALL domain types EXCEPT .sol domains. + solanaResolveAllDomainsTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.resolveAllDomains", + description: `Resolve domain names to a public key for ALL domain types EXCEPT .sol domains. Use this for domains like .blink, .bonk, etc. DO NOT use this for .sol domains.`, - parameters: z.object({ - domain: z - .string() - .trim() - .min(1, "Domain name is required") - .refine( - (val) => !val.endsWith(".sol"), - "This tool cannot be used for .sol domains. Use solana.resolveDomain instead.", - ) - .refine( - (val) => val.includes("."), - "Invalid domain format. Must include a TLD (e.g., .blink, .bonk)", - ), - }), - execute: async ({ domain }) => { - try { - const owner = await this.solanaKit.resolveAllDomains(domain); + parameters: z.object({ + domain: z + .string() + .trim() + .min(1, "Domain name is required") + .refine( + (val) => !val.endsWith(".sol"), + "This tool cannot be used for .sol domains. Use solana.resolveDomain instead.", + ) + .refine( + (val) => val.includes("."), + "Invalid domain format. Must include a TLD (e.g., .blink, .bonk)", + ), + }), + execute: async ({ domain }) => { + try { + const owner = await this.solanaKit.resolveAllDomains(domain); - if (!owner) { - return { - status: "error", - message: "Domain not found", - code: "DOMAIN_NOT_FOUND", - }; - } + if (!owner) { + return { + status: "error", + message: "Domain not found", + code: "DOMAIN_NOT_FOUND", + }; + } - return { - status: "success", - message: "Domain resolved successfully", - owner: owner.toString(), - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "DOMAIN_RESOLUTION_ERROR", - }; - } - }, - }); - } + return { + status: "success", + message: "Domain resolved successfully", + owner: owner.toString(), + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "DOMAIN_RESOLUTION_ERROR", + }; + } + }, + }); + } - solanaGetOwnedDomainsTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.getOwnedDomains", - description: "Get all domains owned by a specific wallet address", - parameters: z.object({ - owner: z - .string() - .trim() - .min(1, "Owner address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid Solana wallet address"), - }), - execute: async ({ owner }) => { - try { - const ownerPubkey = new PublicKey(owner); - const domains = await this.solanaKit.getOwnedAllDomains(ownerPubkey); - return { - status: "success", - message: "Owned domains fetched successfully", - domains, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "FETCH_OWNED_DOMAINS_ERROR", - }; - } - }, - }); - } + solanaGetOwnedDomainsTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.getOwnedDomains", + description: "Get all domains owned by a specific wallet address", + parameters: z.object({ + owner: z + .string() + .trim() + .min(1, "Owner address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid Solana wallet address"), + }), + execute: async ({ owner }) => { + try { + const ownerPubkey = new PublicKey(owner); + const domains = await this.solanaKit.getOwnedAllDomains(ownerPubkey); + return { + status: "success", + message: "Owned domains fetched successfully", + domains, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "FETCH_OWNED_DOMAINS_ERROR", + }; + } + }, + }); + } - solanaGetOwnedTldDomainsTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.getOwnedTldDomains", - description: - "Get all domains owned by the agent's wallet for a specific TLD", - parameters: z.object({ - tld: z - .string() - .trim() - .min(1, "TLD is required") - .regex( - /^[a-zA-Z0-9]+$/, - "TLD must contain only alphanumeric characters", - ), - }), - execute: async ({ tld }) => { - try { - const domains = await this.solanaKit.getOwnedDomainsForTLD(tld); - return { - status: "success", - message: "TLD domains fetched successfully", - domains, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "FETCH_TLD_DOMAINS_ERROR", - }; - } - }, - }); - } + solanaGetOwnedTldDomainsTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.getOwnedTldDomains", + description: + "Get all domains owned by the agent's wallet for a specific TLD", + parameters: z.object({ + tld: z + .string() + .trim() + .min(1, "TLD is required") + .regex( + /^[a-zA-Z0-9]+$/, + "TLD must contain only alphanumeric characters", + ), + }), + execute: async ({ tld }) => { + try { + const domains = await this.solanaKit.getOwnedDomainsForTLD(tld); + return { + status: "success", + message: "TLD domains fetched successfully", + domains, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "FETCH_TLD_DOMAINS_ERROR", + }; + } + }, + }); + } - solanaGetAllTldsTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.getAllTlds", - description: - "Get all active top-level domains (TLDs) in the AllDomains Name Service", - parameters: z.object({}), - execute: async () => { - try { - const tlds = await this.solanaKit.getAllDomainsTLDs(); - return { - status: "success", - message: "TLDs fetched successfully", - tlds, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "FETCH_TLDS_ERROR", - }; - } - }, - }); - } + solanaGetAllTldsTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.getAllTlds", + description: + "Get all active top-level domains (TLDs) in the AllDomains Name Service", + parameters: z.object({}), + execute: async () => { + try { + const tlds = await this.solanaKit.getAllDomainsTLDs(); + return { + status: "success", + message: "TLDs fetched successfully", + tlds, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "FETCH_TLDS_ERROR", + }; + } + }, + }); + } - solanaGetMainDomainTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.getMainDomain", - description: "Get the main/favorite domain for a given wallet address", - parameters: z.object({ - owner: z - .string() - .trim() - .min(1, "Owner address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid Solana wallet address"), - }), - execute: async ({ owner }) => { - try { - const ownerPubkey = new PublicKey(owner); - const mainDomain = - await this.solanaKit.getMainAllDomainsDomain(ownerPubkey); - return { - status: "success", - message: "Main domain fetched successfully", - domain: mainDomain, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "FETCH_MAIN_DOMAIN_ERROR", - }; - } - }, - }); - } + solanaGetMainDomainTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.getMainDomain", + description: "Get the main/favorite domain for a given wallet address", + parameters: z.object({ + owner: z + .string() + .trim() + .min(1, "Owner address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid Solana wallet address"), + }), + execute: async ({ owner }) => { + try { + const ownerPubkey = new PublicKey(owner); + const mainDomain = + await this.solanaKit.getMainAllDomainsDomain(ownerPubkey); + return { + status: "success", + message: "Main domain fetched successfully", + domain: mainDomain, + }; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "FETCH_MAIN_DOMAIN_ERROR", + }; + } + }, + }); + } - solanaCreateGibworkTaskTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.createGibworkTask", - description: "Create a task on Gibwork", - parameters: z.object({ - title: z - .string() - .trim() - .min(1, "Title is required") - .max(200, "Title too long"), - content: z.string().trim().min(1, "Description is required"), - requirements: z.string().trim().min(1, "Requirements are required"), - tags: z - .array(z.string()) - .min(1, "At least one tag is required") - .max(10, "Maximum 10 tags allowed"), - payer: z - .string() - .trim() - .optional() - .refine((val) => { - if (!val) { - return true; - } - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid payer wallet address"), - tokenMintAddress: z - .string() - .trim() - .min(1, "Token mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid token mint address"), - amount: z - .number() - .positive("Amount must be positive") - .min(0.000001, "Amount must be at least 0.000001"), - }), - execute: async ({ - title, - content, - requirements, - tags, - tokenMintAddress, - amount, - payer, - }) => { - try { - const taskData = await this.solanaKit.createGibworkTask( - title, - content, - requirements, - tags, - tokenMintAddress, - amount, - payer, - ); + solanaCreateGibworkTaskTool(): CoreTool { + return tool({ + // @ts-expect-error Value matches type however TS still shows error + id: "solana.createGibworkTask", + description: "Create a task on Gibwork", + parameters: z.object({ + title: z + .string() + .trim() + .min(1, "Title is required") + .max(200, "Title too long"), + content: z.string().trim().min(1, "Description is required"), + requirements: z.string().trim().min(1, "Requirements are required"), + tags: z + .array(z.string()) + .min(1, "At least one tag is required") + .max(10, "Maximum 10 tags allowed"), + payer: z + .string() + .trim() + .optional() + .refine((val) => { + if (!val) { + return true; + } + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid payer wallet address"), + tokenMintAddress: z + .string() + .trim() + .min(1, "Token mint address is required") + .refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid token mint address"), + amount: z + .number() + .positive("Amount must be positive") + .min(0.000001, "Amount must be at least 0.000001"), + }), + execute: async ({ + title, + content, + requirements, + tags, + tokenMintAddress, + amount, + payer, + }) => { + try { + const taskData = await this.solanaKit.createGibworkTask( + title, + content, + requirements, + tags, + tokenMintAddress, + amount, + payer, + ); - return { - status: "success", - taskId: taskData.taskId, - signature: taskData.signature, - } as GibworkCreateTaskReponse; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "CREATE_TASK_ERROR", - }; - } - }, - }); - } + return { + status: "success", + taskId: taskData.taskId, + signature: taskData.signature, + } as GibworkCreateTaskReponse; + } catch (e: any) { + return { + status: "error", + message: e.message, + code: e.code || "CREATE_TASK_ERROR", + }; + } + }, + }); + } } export function createSolanaTools( - solanaKit: SolanaAgentKit, + solanaKit: SolanaAgentKit, ): Record { - const vercelTools = new VercelAITools(solanaKit); + const vercelTools = new VercelAITools(solanaKit); - return { - solanaBalanceTool: vercelTools.solanaBalanceTool(), - solanaTransferTool: vercelTools.solanaTransferTool(), - solanaDeployTokenTool: vercelTools.solanaDeployTokenTool(), - solanaDeployCollectionTool: vercelTools.solanaDeployCollectionTool(), - solanaMintNFTTool: vercelTools.solanaMintNFTTool(), - solanaTradeTool: vercelTools.solanaTradeTool(), - solanaRequestFundsTool: vercelTools.solanaRequestFundsTool(), - solanaRegisterDomainTool: vercelTools.solanaRegisterDomainTool(), - solanaGetWalletAddressTool: vercelTools.solanaGetWalletAddressTool(), - solanaPumpfunTokenLaunchTool: vercelTools.solanaPumpfunTokenLaunchTool(), - solanaCreateImageTool: vercelTools.solanaCreateImageTool(), - solanaLendAssetTool: vercelTools.solanaLendAssetTool(), - solanaTPSCalculatorTool: vercelTools.solanaTPSCalculatorTool(), - solanaStakeTool: vercelTools.solanaStakeTool(), - solanaFetchPriceTool: vercelTools.solanaFetchPriceTool(), - solanaTokenDataTool: vercelTools.solanaTokenDataTool(), - solanaTokenDataByTickerTool: vercelTools.solanaTokenDataByTickerTool(), - solanaCompressedAirdropTool: vercelTools.solanaCompressedAirdropTool(), - solanaRaydiumCreateAmmV4Tool: vercelTools.solanaRaydiumCreateAmmV4Tool(), - solanaRaydiumCreateClmmTool: vercelTools.solanaRaydiumCreateClmmTool(), - solanaRaydiumCreateCpmmTool: vercelTools.solanaRaydiumCreateCpmmTool(), - solanaOpenbookCreateMarketTool: - vercelTools.solanaOpenbookCreateMarketTool(), - solanaCreateSingleSidedWhirlpoolTool: - vercelTools.solanaCreateSingleSidedWhirlpoolTool(), - solanaPythFetchPriceTool: vercelTools.solanaPythFetchPriceTool(), - solanaResolveDomainTool: vercelTools.solanaResolveDomainTool(), - solanaResolveAllDomainsTool: vercelTools.solanaResolveAllDomainsTool(), - solanaGetDomainTool: vercelTools.solanaGetDomainTool(), - solanaGetOwnedDomainsTool: vercelTools.solanaGetOwnedDomainsTool(), - solanaGetOwnedTldDomainsTool: vercelTools.solanaGetOwnedTldDomainsTool(), - solanaGetAllTldsTool: vercelTools.solanaGetAllTldsTool(), - solanaGetMainDomainTool: vercelTools.solanaGetMainDomainTool(), - solanaCreateGibworkTaskTool: vercelTools.solanaCreateGibworkTaskTool(), - }; + return { + solanaBalanceTool: vercelTools.solanaBalanceTool(), + solanaTransferTool: vercelTools.solanaTransferTool(), + solanaDeployTokenTool: vercelTools.solanaDeployTokenTool(), + solanaDeployCollectionTool: vercelTools.solanaDeployCollectionTool(), + solanaMintNFTTool: vercelTools.solanaMintNFTTool(), + solanaTradeTool: vercelTools.solanaTradeTool(), + solanaRequestFundsTool: vercelTools.solanaRequestFundsTool(), + solanaRegisterDomainTool: vercelTools.solanaRegisterDomainTool(), + solanaGetWalletAddressTool: vercelTools.solanaGetWalletAddressTool(), + solanaPumpfunTokenLaunchTool: vercelTools.solanaPumpfunTokenLaunchTool(), + solanaCreateImageTool: vercelTools.solanaCreateImageTool(), + solanaLendAssetTool: vercelTools.solanaLendAssetTool(), + solanaTPSCalculatorTool: vercelTools.solanaTPSCalculatorTool(), + solanaStakeTool: vercelTools.solanaStakeTool(), + solanaFetchPriceTool: vercelTools.solanaFetchPriceTool(), + solanaTokenDataTool: vercelTools.solanaTokenDataTool(), + solanaTokenDataByTickerTool: vercelTools.solanaTokenDataByTickerTool(), + solanaCompressedAirdropTool: vercelTools.solanaCompressedAirdropTool(), + solanaRaydiumCreateAmmV4Tool: vercelTools.solanaRaydiumCreateAmmV4Tool(), + solanaRaydiumCreateClmmTool: vercelTools.solanaRaydiumCreateClmmTool(), + solanaRaydiumCreateCpmmTool: vercelTools.solanaRaydiumCreateCpmmTool(), + solanaOpenbookCreateMarketTool: + vercelTools.solanaOpenbookCreateMarketTool(), + solanaCreateSingleSidedWhirlpoolTool: + vercelTools.solanaCreateSingleSidedWhirlpoolTool(), + solanaPythFetchPriceTool: vercelTools.solanaPythFetchPriceTool(), + solanaResolveDomainTool: vercelTools.solanaResolveDomainTool(), + solanaResolveAllDomainsTool: vercelTools.solanaResolveAllDomainsTool(), + solanaGetDomainTool: vercelTools.solanaGetDomainTool(), + solanaGetOwnedDomainsTool: vercelTools.solanaGetOwnedDomainsTool(), + solanaGetOwnedTldDomainsTool: vercelTools.solanaGetOwnedTldDomainsTool(), + solanaGetAllTldsTool: vercelTools.solanaGetAllTldsTool(), + solanaGetMainDomainTool: vercelTools.solanaGetMainDomainTool(), + solanaCreateGibworkTaskTool: vercelTools.solanaCreateGibworkTaskTool(), + }; } diff --git a/test/agent_sdks/vercel_ai.ts b/test/agent_sdks/vercel_ai.ts index 789d477..09c5f60 100644 --- a/test/agent_sdks/vercel_ai.ts +++ b/test/agent_sdks/vercel_ai.ts @@ -1,196 +1,193 @@ import { SolanaAgentKit } from "../../src"; import { createVercelAITools } from "../../src"; -import { OpenAI } from "openai"; import * as dotenv from "dotenv"; -import * as fs from "fs"; import * as readline from "readline"; import { streamText } from "ai"; import { createOpenAI } from "@ai-sdk/openai"; -// import { createAI, createStreamableUI, getMutableAIState } from "ai/rsc"; dotenv.config(); function validateEnvironment(): void { - const missingVars: string[] = []; - const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY"]; + const missingVars: string[] = []; + const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY"]; - requiredVars.forEach((varName) => { - if (!process.env[varName]) { - missingVars.push(varName); - } - }); + 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); - } + 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(); async function runAutonomousMode(interval = 10) { - console.log("Starting autonomous mode..."); - const openai = createOpenAI({ - apiKey: process.env.OPENAI_API_KEY as string, - }); + console.log("Starting autonomous mode..."); + const openai = createOpenAI({ + apiKey: process.env.OPENAI_API_KEY as string, + }); - const solanaAgent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL, - process.env.OPENAI_API_KEY!, - ); + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL, + process.env.OPENAI_API_KEY!, + ); - const tools = createVercelAITools(solanaAgent); + const tools = createVercelAITools(solanaAgent); - 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."; + 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 response = streamText({ - prompt: thought, - tools, - model: openai("gpt-4o-mini"), - temperature: 0.7, - system: `You are a helpful agent that can interact onchain using the Solana Agent Kit. You are + const response = streamText({ + prompt: thought, + tools, + model: openai("gpt-4o-mini"), + temperature: 0.7, + system: `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.`, - maxSteps: 10, - }); + maxSteps: 10, + }); - for await (const textPart of response.textStream) { - process.stdout.write(textPart); - } - console.log(); + for await (const textPart of response.textStream) { + process.stdout.write(textPart); + } + console.log(); - await new Promise((resolve) => setTimeout(resolve, interval * 1000)); - } catch (error) { - if (error instanceof Error) { - console.error("Error:", error.message); - } - process.exit(1); - } - } + 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() { - console.log("Starting chat mode... Type 'exit' to end."); - const openai = createOpenAI({ - apiKey: process.env.OPENAI_API_KEY as string, - }); + console.log("Starting chat mode... Type 'exit' to end."); + const openai = createOpenAI({ + apiKey: process.env.OPENAI_API_KEY as string, + }); - const solanaAgent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL, - process.env.OPENAI_API_KEY!, - ); + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL, + process.env.OPENAI_API_KEY!, + ); - const tools = createVercelAITools(solanaAgent); + const tools = createVercelAITools(solanaAgent); - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - }); + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); - const question = (prompt: string): Promise => - new Promise((resolve) => rl.question(prompt, resolve)); + const question = (prompt: string): Promise => + new Promise((resolve) => rl.question(prompt, resolve)); - try { - while (true) { - const userInput = await question("\nPrompt: "); + try { + while (true) { + const userInput = await question("\nPrompt: "); - if (userInput.toLowerCase() === "exit") { - break; - } + if (userInput.toLowerCase() === "exit") { + break; + } - const response = streamText({ - prompt: userInput, - tools, - model: openai("gpt-4o-mini"), - temperature: 0.7, - system: `You are a helpful agent that can interact onchain using the Solana Agent Kit. You are + const response = streamText({ + prompt: userInput, + tools, + model: openai("gpt-4o-mini"), + temperature: 0.7, + system: `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.`, - maxSteps: 10, - }); + maxSteps: 10, + }); - for await (const textPart of response.textStream) { - process.stdout.write(textPart); - } - console.log(); - } - } catch (error) { - if (error instanceof Error) { - console.error("Error:", error.message); - } - process.exit(1); - } finally { - rl.close(); - } + for await (const textPart of response.textStream) { + process.stdout.write(textPart); + } + 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 rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); - const question = (prompt: string): Promise => - new Promise((resolve) => rl.question(prompt, resolve)); + 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"); + 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(); + const choice = (await question("\nChoose a mode (enter number or name): ")) + .toLowerCase() + .trim(); - rl.close(); + rl.close(); - if (choice === "1" || choice === "chat") { - return "chat"; - } else if (choice === "2" || choice === "auto") { - return "auto"; - } - console.log("Invalid choice. Please try again."); - } + 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 mode = await chooseMode(); + try { + console.log("Starting Agent..."); + const mode = await chooseMode(); - if (mode === "chat") { - await runChatMode(); - } else { - await runAutonomousMode(); - } - } catch (error) { - if (error instanceof Error) { - console.error("Error:", error.message); - } - process.exit(1); - } + if (mode === "chat") { + await runChatMode(); + } else { + await runAutonomousMode(); + } + } 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); - }); + main().catch((error) => { + console.error("Fatal error:", error); + process.exit(1); + }); } From 3439308f623d013e14abe3fa889a6d77ba15a017 Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Thu, 26 Dec 2024 16:26:55 +0100 Subject: [PATCH 06/94] chore: add docs --- README.md | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6aa9d99..5fd7629 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,11 @@ Anyone - whether an SF-based AI researcher or a crypto-native builder - can brin - Memory management for persistent interactions - Streaming responses for real-time feedback +- **Vercel AI SDK Integration** + - Vercel AI SDK for AI agent integration + - Framework agnostic support + - Quick and easy toolkit setup + - **Autonomous Modes** - Interactive chat mode for guided operations - Autonomous mode for independent agent actions @@ -202,6 +207,38 @@ const price = await agent.pythFetchPrice( console.log("Price in BTC/USD:", price); ``` +### Add to your Vercel AI Agent + +```typescript +import {createVercelAITools, SolanaAgentKit} from 'solana-agent-sdk' +import {createOpenAI} from '@ai-sdk/openai' +import {streamText} from 'ai' + +const openai = createOpenAI({ + apiKey: process.env.OPENAI_API_KEY! +}) + +const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL, + process.env.OPENAI_API_KEY!, +); + +const tools = createVercelAITools(solanaAgent) + +const response = streamText({ + tools, + model: openai("gpt-4o-mini"), + prompt: "What's my SOL balance", + maxSteps: 10 +}) + +for await (const textPart of response.textStream) { + process.stdout.write(textPart); +} +console.log(); +``` + ## Dependencies The toolkit relies on several key Solana and Metaplex libraries: @@ -227,4 +264,3 @@ Apache-2 License ## Security This toolkit handles private keys and transactions. Always ensure you're using it in a secure environment and never share your private keys. - From 0ca81a441ee1c924345b61ed577c4c7bd57fa039 Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Thu, 26 Dec 2024 16:29:03 +0100 Subject: [PATCH 07/94] chore: lint and format --- package.json | 140 +++++++++++++++++++++++++------------------------- tsconfig.json | 56 ++++++++++---------- 2 files changed, 98 insertions(+), 98 deletions(-) diff --git a/package.json b/package.json index 8ba7b4a..911d692 100644 --- a/package.json +++ b/package.json @@ -1,72 +1,72 @@ { - "name": "solana-agent-kit", - "version": "1.3.0", - "description": "connect any ai agents to solana protocols", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "scripts": { - "build": "tsc", - "docs": "typedoc src --out docs", - "test": "ts-node test/index.ts", - "test:vercel-ai": "ts-node test/agent_sdks/vercel_ai.ts", - "generate": "ts-node src/utils/keypair.ts", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"" - }, - "engines": { - "node": ">=23.1.0", - "pnpm": ">=8.0.0" - }, - "keywords": [], - "author": "sendaifun", - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/openai": "^1.0.11", - "@bonfida/spl-name-service": "^3.0.7", - "@coral-xyz/anchor": "0.29", - "@langchain/core": "^0.3.18", - "@langchain/groq": "^0.1.2", - "@langchain/langgraph": "^0.2.27", - "@langchain/openai": "^0.3.13", - "@lightprotocol/compressed-token": "^0.17.1", - "@lightprotocol/stateless.js": "^0.17.1", - "@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-web3js-adapters": "^0.9.2", - "@onsol/tldparser": "^0.6.7", - "@orca-so/common-sdk": "0.6.4", - "@orca-so/whirlpools-sdk": "^0.13.12", - "@pythnetwork/price-service-client": "^1.9.0", - "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", - "@solana/spl-token": "^0.4.9", - "@solana/web3.js": "^1.95.4", - "ai": "^4.0.22", - "bn.js": "^5.2.1", - "bs58": "^6.0.0", - "chai": "^5.1.2", - "decimal.js": "^10.4.3", - "dotenv": "^16.4.5", - "form-data": "^4.0.1", - "langchain": "^0.3.6", - "openai": "^4.75.0", - "typedoc": "^0.26.11", - "zod": "^3.24.1" - }, - "devDependencies": { - "@types/bn.js": "^5.1.5", - "@types/chai": "^5.0.1", - "@types/node": "^22.9.0", - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.1.3", - "prettier": "^3.2.5", - "ts-node": "^10.9.2", - "typescript": "^5.7.2" - } + "name": "solana-agent-kit", + "version": "1.3.0", + "description": "connect any ai agents to solana protocols", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsc", + "docs": "typedoc src --out docs", + "test": "ts-node test/index.ts", + "test:vercel-ai": "ts-node test/agent_sdks/vercel_ai.ts", + "generate": "ts-node src/utils/keypair.ts", + "lint": "eslint . --ext .ts,.json", + "lint:fix": "eslint . --ext .ts,.json --fix", + "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"" + }, + "engines": { + "node": ">=23.1.0", + "pnpm": ">=8.0.0" + }, + "keywords": [], + "author": "sendaifun", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/openai": "^1.0.11", + "@bonfida/spl-name-service": "^3.0.7", + "@coral-xyz/anchor": "0.29", + "@langchain/core": "^0.3.18", + "@langchain/groq": "^0.1.2", + "@langchain/langgraph": "^0.2.27", + "@langchain/openai": "^0.3.13", + "@lightprotocol/compressed-token": "^0.17.1", + "@lightprotocol/stateless.js": "^0.17.1", + "@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-web3js-adapters": "^0.9.2", + "@onsol/tldparser": "^0.6.7", + "@orca-so/common-sdk": "0.6.4", + "@orca-so/whirlpools-sdk": "^0.13.12", + "@pythnetwork/price-service-client": "^1.9.0", + "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", + "@solana/spl-token": "^0.4.9", + "@solana/web3.js": "^1.95.4", + "ai": "^4.0.22", + "bn.js": "^5.2.1", + "bs58": "^6.0.0", + "chai": "^5.1.2", + "decimal.js": "^10.4.3", + "dotenv": "^16.4.5", + "form-data": "^4.0.1", + "langchain": "^0.3.6", + "openai": "^4.75.0", + "typedoc": "^0.26.11", + "zod": "^3.24.1" + }, + "devDependencies": { + "@types/bn.js": "^5.1.5", + "@types/chai": "^5.0.1", + "@types/node": "^22.9.0", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.2.5", + "ts-node": "^10.9.2", + "typescript": "^5.7.2" + } } diff --git a/tsconfig.json b/tsconfig.json index ba8a225..e79de5f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,29 +1,29 @@ { - "compilerOptions": { - "target": "es2020", - "module": "commonjs", - "lib": ["es2020", "dom"], - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "outDir": "./dist", - "rootDir": "./src", - "strict": true, - "noImplicitAny": true, - "strictBindCallApply": true, - "strictPropertyInitialization": true, - "noImplicitThis": true, - "useUnknownInCatchVariables": true, - "alwaysStrict": true, - "exactOptionalPropertyTypes": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "noImplicitOverride": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true, - "resolveJsonModule": true - }, - "include": ["src/**/*"], - "exclude": ["node_modules", "dist", "**/*.test.ts"] - } \ No newline at end of file + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "lib": ["es2020", "dom"], + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "./dist", + "rootDir": "./src", + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictPropertyInitialization": true, + "noImplicitThis": true, + "useUnknownInCatchVariables": true, + "alwaysStrict": true, + "exactOptionalPropertyTypes": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "noImplicitOverride": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, + "resolveJsonModule": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "**/*.test.ts"] +} From d386f47de700fa446dd36fbe2539c98f0f35db5f Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Thu, 26 Dec 2024 19:11:54 +0100 Subject: [PATCH 08/94] docs: add examples directory and readme --- examples/README.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 examples/README.md diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000..5af4c81 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,6 @@ +# Solana Agent Kit Examples + +This directory only contains this README file which is a collection of examples and projects built using the Solana Agent Kit, built by the Solana Agent Kit team and the community. + +## Starter Templates +- [SolanaAgentKit + 🦜️🔗 LangChain + Next.js Starter Template](https://github.com/michaelessiet/solana-agent-nextjs-starter-langchain) From 79cada2cbd65d87ef0a6d97531dad3648a9dab43 Mon Sep 17 00:00:00 2001 From: Fahri Bilici <28020526+FahriBilici@users.noreply.github.com> Date: Thu, 26 Dec 2024 21:54:55 +0100 Subject: [PATCH 09/94] feat: Enhance Solana tools with action-based architecture - Introduced action system for Solana tools, allowing for better modularity and maintainability. - Updated SolanaBalanceTool, SolanaTransferTool, SolanaDeployTokenTool, SolanaDeployCollectionTool, SolanaMintNFTTool, SolanaTradeTool, and SolanaRequestFundsTool to utilize action handlers. - Added new action exports in index.ts for better organization and accessibility. --- src/actions/balance.ts | 59 ++++++++ src/actions/deployCollection.ts | 78 ++++++++++ src/actions/deployToken.ts | 74 ++++++++++ src/actions/index.ts | 20 +++ src/actions/mintNFT.ts | 88 +++++++++++ src/actions/requestFunds.ts | 40 +++++ src/actions/trade.ts | 81 ++++++++++ src/actions/transfer.ts | 75 ++++++++++ src/index.ts | 5 + src/langchain/index.ts | 254 +++++++++++--------------------- src/types/action.ts | 53 +++++++ src/utils/actionExecutor.ts | 67 +++++++++ src/utils/langchainWrapper.ts | 96 ++++++++++++ 13 files changed, 825 insertions(+), 165 deletions(-) create mode 100644 src/actions/balance.ts create mode 100644 src/actions/deployCollection.ts create mode 100644 src/actions/deployToken.ts create mode 100644 src/actions/index.ts create mode 100644 src/actions/mintNFT.ts create mode 100644 src/actions/requestFunds.ts create mode 100644 src/actions/trade.ts create mode 100644 src/actions/transfer.ts create mode 100644 src/types/action.ts create mode 100644 src/utils/actionExecutor.ts create mode 100644 src/utils/langchainWrapper.ts diff --git a/src/actions/balance.ts b/src/actions/balance.ts new file mode 100644 index 0000000..2a4d34d --- /dev/null +++ b/src/actions/balance.ts @@ -0,0 +1,59 @@ +import { PublicKey } from "@solana/web3.js"; +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; + +const balanceAction: Action = { + name: "solana_balance", + similes: [ + "check balance", + "get wallet balance", + "view balance", + "show balance", + "check token balance" + ], + description: `Get the balance of a Solana wallet or token account. + If you want to get the balance of your wallet, you don't need to provide the tokenAddress. + If no tokenAddress is provided, the balance will be in SOL.`, + examples: [ + [ + { + input: {}, + output: { + status: "success", + balance: "100", + token: "SOL" + }, + explanation: "Get SOL balance of the wallet" + } + ], + [ + { + input: { + tokenAddress: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + }, + output: { + status: "success", + balance: "1000", + token: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + }, + explanation: "Get USDC token balance" + } + ] + ], + schema: z.object({ + tokenAddress: z.string().optional() + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const tokenAddress = input.tokenAddress ? new PublicKey(input.tokenAddress) : undefined; + const balance = await agent.getBalance(tokenAddress); + + return { + status: "success", + balance: balance, + token: input.tokenAddress || "SOL" + }; + } +}; + +export default balanceAction; \ No newline at end of file diff --git a/src/actions/deployCollection.ts b/src/actions/deployCollection.ts new file mode 100644 index 0000000..0127b5c --- /dev/null +++ b/src/actions/deployCollection.ts @@ -0,0 +1,78 @@ +import { PublicKey } from "@solana/web3.js"; +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; + +interface CollectionOptions { + name: string; + uri: string; + royaltyBasisPoints?: number; +} + +const deployCollectionAction: Action = { + name: "solana_deploy_collection", + similes: [ + "create collection", + "launch collection", + "deploy nft collection", + "create nft collection", + "mint collection" + ], + description: `Deploy a new NFT collection on Solana blockchain.`, + examples: [ + [ + { + input: { + name: "My Collection", + uri: "https://example.com/collection.json", + royaltyBasisPoints: 500 + }, + output: { + status: "success", + message: "Collection deployed successfully", + collectionAddress: "7nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkN", + name: "My Collection" + }, + explanation: "Deploy an NFT collection with 5% royalty" + } + ], + [ + { + input: { + name: "Basic Collection", + uri: "https://example.com/basic.json" + }, + output: { + status: "success", + message: "Collection deployed successfully", + collectionAddress: "8nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkM", + name: "Basic Collection" + }, + explanation: "Deploy a basic NFT collection without royalties" + } + ] + ], + schema: z.object({ + name: z.string().min(1, "Name is required"), + uri: z.string().url("URI must be a valid URL"), + royaltyBasisPoints: z.number().min(0).max(10000).optional() + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const options: CollectionOptions = { + name: input.name, + uri: input.uri, + royaltyBasisPoints: input.royaltyBasisPoints + }; + + const result = await agent.deployCollection(options); + + return { + status: "success", + message: "Collection deployed successfully", + collectionAddress: result.collectionAddress.toString(), + name: input.name + }; + } +}; + +export default deployCollectionAction; \ No newline at end of file diff --git a/src/actions/deployToken.ts b/src/actions/deployToken.ts new file mode 100644 index 0000000..046c120 --- /dev/null +++ b/src/actions/deployToken.ts @@ -0,0 +1,74 @@ +import { PublicKey } from "@solana/web3.js"; +import { Action, ActionExample } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; + +const deployTokenAction: Action = { + name: "deploy_token", + similes: [ + "create token", + "launch token", + "deploy new token", + "create new token", + "mint token", + ], + description: "Deploy a new SPL token on the Solana blockchain with specified parameters", + examples: [ + [ + { + input: { + name: "My Token", + uri: "https://example.com/token.json", + symbol: "MTK", + decimals: 9, + initialSupply: 1000000 + }, + output: { + mint: "7nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkN", + status: "success", + message: "Token deployed successfully" + }, + explanation: "Deploy a token with initial supply and metadata" + } + ], + [ + { + input: { + name: "Basic Token", + uri: "https://example.com/basic.json", + symbol: "BASIC" + }, + output: { + mint: "8nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkM", + status: "success", + message: "Token deployed successfully" + }, + explanation: "Deploy a basic token with minimal parameters" + } + ] + ], + schema: z.object({ + name: z.string().min(1, "Name is required"), + uri: z.string().url("URI must be a valid URL"), + symbol: z.string().min(1, "Symbol is required"), + decimals: z.number().optional(), + initialSupply: z.number().optional() + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const result = await agent.deployToken( + input.name, + input.uri, + input.symbol, + input.decimals, + input.initialSupply + ); + + return { + mint: result.mint.toString(), + status: "success", + message: "Token deployed successfully" + }; + } +} + +export default deployTokenAction; \ No newline at end of file diff --git a/src/actions/index.ts b/src/actions/index.ts new file mode 100644 index 0000000..bf72aca --- /dev/null +++ b/src/actions/index.ts @@ -0,0 +1,20 @@ +import deployTokenAction from "./deployToken"; +import balanceAction from "./balance"; +import transferAction from "./transfer"; +import deployCollectionAction from "./deployCollection"; +import mintNFTAction from "./mintNFT"; +import tradeAction from "./trade"; +import requestFundsAction from "./requestFunds"; + +export const actions = [ + deployTokenAction, + balanceAction, + transferAction, + deployCollectionAction, + mintNFTAction, + tradeAction, + requestFundsAction, + // Add more actions here as they are implemented +]; + +export type { Action, ActionExample, Handler } from "../types/action"; \ No newline at end of file diff --git a/src/actions/mintNFT.ts b/src/actions/mintNFT.ts new file mode 100644 index 0000000..4e9e6ae --- /dev/null +++ b/src/actions/mintNFT.ts @@ -0,0 +1,88 @@ +import { PublicKey } from "@solana/web3.js"; +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; + +const mintNFTAction: Action = { + name: "solana_mint_nft", + similes: [ + "mint nft", + "create nft", + "mint token", + "create token", + "add nft to collection" + ], + description: `Mint a new NFT in a collection on Solana blockchain.`, + examples: [ + [ + { + input: { + collectionMint: "J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w", + name: "My NFT", + uri: "https://example.com/nft.json" + }, + output: { + status: "success", + message: "NFT minted successfully", + mintAddress: "7nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkN", + metadata: { + name: "My NFT", + uri: "https://example.com/nft.json" + }, + recipient: "7nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkN" + }, + explanation: "Mint an NFT to the default wallet" + } + ], + [ + { + input: { + collectionMint: "J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w", + name: "Gift NFT", + uri: "https://example.com/gift.json", + recipient: "9aUn5swQzUTRanaaTwmszxiv89cvFwUCjEBv1vZCoT1u" + }, + output: { + status: "success", + message: "NFT minted successfully", + mintAddress: "8nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkM", + metadata: { + name: "Gift NFT", + uri: "https://example.com/gift.json" + }, + recipient: "9aUn5swQzUTRanaaTwmszxiv89cvFwUCjEBv1vZCoT1u" + }, + explanation: "Mint an NFT to a specific recipient" + } + ] + ], + schema: z.object({ + collectionMint: z.string().min(32, "Invalid collection mint address"), + name: z.string().min(1, "Name is required"), + uri: z.string().url("URI must be a valid URL"), + recipient: z.string().min(32, "Invalid recipient address").optional() + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const result = await agent.mintNFT( + new PublicKey(input.collectionMint), + { + name: input.name, + uri: input.uri, + }, + input.recipient ? new PublicKey(input.recipient) : agent.wallet_address + ); + + return { + status: "success", + message: "NFT minted successfully", + mintAddress: result.mint.toString(), + metadata: { + name: input.name, + uri: input.uri + }, + recipient: input.recipient || result.mint.toString() + }; + } +}; + +export default mintNFTAction; \ No newline at end of file diff --git a/src/actions/requestFunds.ts b/src/actions/requestFunds.ts new file mode 100644 index 0000000..03159a7 --- /dev/null +++ b/src/actions/requestFunds.ts @@ -0,0 +1,40 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; + +const requestFundsAction: Action = { + name: "solana_request_funds", + similes: [ + "request sol", + "get test sol", + "use faucet", + "request test tokens", + "get devnet sol" + ], + description: "Request SOL from Solana faucet (devnet/testnet only)", + examples: [ + [ + { + input: {}, + output: { + status: "success", + message: "Successfully requested faucet funds", + network: "devnet.solana.com" + }, + explanation: "Request SOL from the devnet faucet" + } + ] + ], + schema: z.object({}), // No input parameters required + handler: async (agent: SolanaAgentKit, _input: Record) => { + await agent.requestFaucetFunds(); + + return { + status: "success", + message: "Successfully requested faucet funds", + network: agent.connection.rpcEndpoint.split("/")[2] + }; + } +}; + +export default requestFundsAction; \ No newline at end of file diff --git a/src/actions/trade.ts b/src/actions/trade.ts new file mode 100644 index 0000000..8a536b3 --- /dev/null +++ b/src/actions/trade.ts @@ -0,0 +1,81 @@ +import { PublicKey } from "@solana/web3.js"; +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; + +const tradeAction: Action = { + name: "solana_trade", + similes: [ + "swap tokens", + "exchange tokens", + "trade tokens", + "convert tokens", + "swap sol" + ], + description: `This tool can be used to swap tokens to another token (It uses Jupiter Exchange).`, + examples: [ + [ + { + input: { + outputMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + inputAmount: 1 + }, + output: { + status: "success", + message: "Trade executed successfully", + transaction: "5UfgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7", + inputAmount: 1, + inputToken: "SOL", + outputToken: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + }, + explanation: "Swap 1 SOL for USDC" + } + ], + [ + { + input: { + outputMint: "So11111111111111111111111111111111111111112", + inputAmount: 100, + inputMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + slippageBps: 100 + }, + output: { + status: "success", + message: "Trade executed successfully", + transaction: "4VfgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7", + inputAmount: 100, + inputToken: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + outputToken: "So11111111111111111111111111111111111111112" + }, + explanation: "Swap 100 USDC for SOL with 1% slippage" + } + ] + ], + schema: z.object({ + outputMint: z.string().min(32, "Invalid output mint address"), + inputAmount: z.number().positive("Input amount must be positive"), + inputMint: z.string().min(32, "Invalid input mint address").optional(), + slippageBps: z.number().min(0).max(10000).optional() + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const tx = await agent.trade( + new PublicKey(input.outputMint), + input.inputAmount, + input.inputMint + ? new PublicKey(input.inputMint) + : new PublicKey("So11111111111111111111111111111111111111112"), + input.slippageBps + ); + + return { + status: "success", + message: "Trade executed successfully", + transaction: tx, + inputAmount: input.inputAmount, + inputToken: input.inputMint || "SOL", + outputToken: input.outputMint + }; + } +}; + +export default tradeAction; \ No newline at end of file diff --git a/src/actions/transfer.ts b/src/actions/transfer.ts new file mode 100644 index 0000000..426a071 --- /dev/null +++ b/src/actions/transfer.ts @@ -0,0 +1,75 @@ +import { PublicKey } from "@solana/web3.js"; +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; + +const transferAction: Action = { + name: "solana_transfer", + similes: [ + "send tokens", + "transfer funds", + "send money", + "send sol", + "transfer tokens" + ], + description: `Transfer tokens or SOL to another address (also called as wallet address).`, + examples: [ + [ + { + input: { + to: "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk", + amount: 1 + }, + output: { + status: "success", + message: "Transfer completed successfully", + amount: 1, + recipient: "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk", + token: "SOL", + transaction: "5UfgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7" + }, + explanation: "Transfer 1 SOL to the recipient address" + } + ], + [ + { + input: { + to: "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk", + amount: 100, + mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + }, + output: { + status: "success", + message: "Transfer completed successfully", + amount: 100, + recipient: "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk", + token: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + transaction: "4VfgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7" + }, + explanation: "Transfer 100 USDC tokens to the recipient address" + } + ] + ], + schema: z.object({ + to: z.string().min(32, "Invalid Solana address"), + amount: z.number().positive("Amount must be positive"), + mint: z.string().optional() + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const recipient = new PublicKey(input.to); + const mintAddress = input.mint ? new PublicKey(input.mint) : undefined; + + const tx = await agent.transfer(recipient, input.amount, mintAddress); + + return { + status: "success", + message: "Transfer completed successfully", + amount: input.amount, + recipient: input.to, + token: input.mint || "SOL", + transaction: tx + }; + } +}; + +export default transferAction; \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 1b4116f..4ae9056 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,3 +5,8 @@ export { SolanaAgentKit, createSolanaTools }; // Optional: Export types that users might need export * from "./types"; + +// Export action system +export * from "./actions"; +export * from "./types/action"; +export * from "./utils/actionExecutor"; diff --git a/src/langchain/index.ts b/src/langchain/index.ts index f28b000..68cd157 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1,6 +1,6 @@ import { PublicKey } from "@solana/web3.js"; import Decimal from "decimal.js"; -import { Tool } from "langchain/tools"; +import { Tool } from "@langchain/core/tools"; import { GibworkCreateTaskReponse, PythFetchPriceResponse, @@ -10,282 +10,203 @@ import { create_image } from "../tools/create_image"; import { BN } from "@coral-xyz/anchor"; import { FEE_TIERS } from "../tools"; import { toJSON } from "../utils/toJSON"; +import { wrapLangChainTool } from "../utils/langchainWrapper"; +import deployTokenAction from "../actions/deployToken"; +import balanceAction from "../actions/balance"; +import transferAction from "../actions/transfer"; +import deployCollectionAction from "../actions/deployCollection"; +import mintNFTAction from "../actions/mintNFT"; +import tradeAction from "../actions/trade"; +import requestFundsAction from "../actions/requestFunds"; export class SolanaBalanceTool extends Tool { - name = "solana_balance"; - description = `Get the balance of a Solana wallet or token account. - - If you want to get the balance of your wallet, you don't need to provide the tokenAddress. - If no tokenAddress is provided, the balance will be in SOL. - - Inputs: - tokenAddress: string, eg "So11111111111111111111111111111111111111112" (optional)`; + private action = balanceAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); } - protected async _call(input: string): Promise { + async _call(input: string): Promise { try { - const tokenAddress = input ? new PublicKey(input) : undefined; - const balance = await this.solanaKit.getBalance(tokenAddress); - - return JSON.stringify({ - status: "success", - balance: balance, - token: input || "SOL", - }); + // Parse input as JSON if provided, otherwise use empty object + const parsedInput = input ? JSON.parse(input) : {}; + + // Validate and execute using the action + const result = await this.action.handler(this.solanaKit, parsedInput); + + return JSON.stringify(result); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR", + code: error.code || "UNKNOWN_ERROR" }); } } } export class SolanaTransferTool extends Tool { - name = "solana_transfer"; - description = `Transfer tokens or SOL to another address ( also called as wallet address ). - - Inputs ( input is a JSON string ): - to: string, eg "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk" (required) - amount: number, eg 1 (required) - mint?: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (optional)`; + private action = transferAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); } - protected async _call(input: string): Promise { + async _call(input: string): Promise { try { + // Parse input as JSON const parsedInput = JSON.parse(input); - - const recipient = new PublicKey(parsedInput.to); - const mintAddress = parsedInput.mint - ? new PublicKey(parsedInput.mint) - : undefined; - - const tx = await this.solanaKit.transfer( - recipient, - parsedInput.amount, - mintAddress, - ); - - return JSON.stringify({ - status: "success", - message: "Transfer completed successfully", - amount: parsedInput.amount, - recipient: parsedInput.to, - token: parsedInput.mint || "SOL", - transaction: tx, - }); + + // Validate and execute using the action + const result = await this.action.handler(this.solanaKit, parsedInput); + + return JSON.stringify(result); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR", + code: error.code || "UNKNOWN_ERROR" }); } } } export class SolanaDeployTokenTool extends Tool { - name = "solana_deploy_token"; - description = `Deploy a new token on Solana blockchain. - - Inputs (input is a JSON string): - name: string, eg "My Token" (required) - uri: string, eg "https://example.com/token.json" (required) - symbol: string, eg "MTK" (required) - decimals?: number, eg 9 (optional, defaults to 9) - initialSupply?: number, eg 1000000 (optional)`; + private action = deployTokenAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); } - protected async _call(input: string): Promise { + async _call(input: string): Promise { try { + // Parse input as JSON const parsedInput = JSON.parse(input); - - const result = await this.solanaKit.deployToken( - parsedInput.name, - parsedInput.uri, - parsedInput.symbol, - parsedInput.decimals, - parsedInput.initialSupply, - ); - - return JSON.stringify({ - status: "success", - message: "Token deployed successfully", - mintAddress: result.mint.toString(), - decimals: parsedInput.decimals || 9, - }); + + // Validate and execute using the action + const result = await this.action.handler(this.solanaKit, parsedInput); + + return JSON.stringify(result); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR", + code: error.code || "UNKNOWN_ERROR" }); } } } export class SolanaDeployCollectionTool extends Tool { - name = "solana_deploy_collection"; - description = `Deploy a new NFT collection on Solana blockchain. - - Inputs (input is a JSON string): - name: string, eg "My Collection" (required) - uri: string, eg "https://example.com/collection.json" (required) - royaltyBasisPoints?: number, eg 500 for 5% (optional)`; + private action = deployCollectionAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); } - protected async _call(input: string): Promise { + async _call(input: string): Promise { try { + // Parse input as JSON const parsedInput = JSON.parse(input); - - const result = await this.solanaKit.deployCollection(parsedInput); - - return JSON.stringify({ - status: "success", - message: "Collection deployed successfully", - collectionAddress: result.collectionAddress.toString(), - name: parsedInput.name, - }); + + // Validate and execute using the action + const result = await this.action.handler(this.solanaKit, parsedInput); + + return JSON.stringify(result); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR", + code: error.code || "UNKNOWN_ERROR" }); } } } export class SolanaMintNFTTool extends Tool { - name = "solana_mint_nft"; - description = `Mint a new NFT in a collection on Solana blockchain. - - Inputs (input is a JSON string): - collectionMint: string, eg "J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w" (required) - The address of the collection to mint into - name: string, eg "My NFT" (required) - uri: string, eg "https://example.com/nft.json" (required) - recipient?: string, eg "9aUn5swQzUTRanaaTwmszxiv89cvFwUCjEBv1vZCoT1u" (optional) - The wallet to receive the NFT, defaults to agent's wallet which is ${this.solanaKit.wallet_address.toString()}`; + private action = mintNFTAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); } - protected async _call(input: string): Promise { + async _call(input: string): Promise { try { + // Parse input as JSON const parsedInput = JSON.parse(input); - - const result = await this.solanaKit.mintNFT( - new PublicKey(parsedInput.collectionMint), - { - name: parsedInput.name, - uri: parsedInput.uri, - }, - parsedInput.recipient - ? new PublicKey(parsedInput.recipient) - : this.solanaKit.wallet_address, - ); - - return JSON.stringify({ - status: "success", - message: "NFT minted successfully", - mintAddress: result.mint.toString(), - metadata: { - name: parsedInput.name, - symbol: parsedInput.symbol, - uri: parsedInput.uri, - }, - recipient: parsedInput.recipient || result.mint.toString(), - }); + + // Validate and execute using the action + const result = await this.action.handler(this.solanaKit, parsedInput); + + return JSON.stringify(result); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR", + code: error.code || "UNKNOWN_ERROR" }); } } } export class SolanaTradeTool extends Tool { - name = "solana_trade"; - description = `This tool can be used to swap tokens to another token ( It uses Jupiter Exchange ). - - Inputs ( input is a JSON string ): - outputMint: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (required) - inputAmount: number, eg 1 or 0.01 (required) - inputMint?: string, eg "So11111111111111111111111111111111111111112" (optional) - slippageBps?: number, eg 100 (optional)`; + private action = tradeAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); } - protected async _call(input: string): Promise { + async _call(input: string): Promise { try { + // Parse input as JSON const parsedInput = JSON.parse(input); - - const tx = await this.solanaKit.trade( - new PublicKey(parsedInput.outputMint), - parsedInput.inputAmount, - parsedInput.inputMint - ? new PublicKey(parsedInput.inputMint) - : new PublicKey("So11111111111111111111111111111111111111112"), - parsedInput.slippageBps, - ); - - return JSON.stringify({ - status: "success", - message: "Trade executed successfully", - transaction: tx, - inputAmount: parsedInput.inputAmount, - inputToken: parsedInput.inputMint || "SOL", - outputToken: parsedInput.outputMint, - }); + + // Validate and execute using the action + const result = await this.action.handler(this.solanaKit, parsedInput); + + return JSON.stringify(result); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR", + code: error.code || "UNKNOWN_ERROR" }); } } } export class SolanaRequestFundsTool extends Tool { - name = "solana_request_funds"; - description = "Request SOL from Solana faucet (devnet/testnet only)"; + private action = requestFundsAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); } - protected async _call(_input: string): Promise { + async _call(_input: string): Promise { try { - await this.solanaKit.requestFaucetFunds(); - - return JSON.stringify({ - status: "success", - message: "Successfully requested faucet funds", - network: this.solanaKit.connection.rpcEndpoint.split("/")[2], - }); + // No input needed for this action + const result = await this.action.handler(this.solanaKit, {}); + + return JSON.stringify(result); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR", + code: error.code || "UNKNOWN_ERROR" }); } } @@ -1230,7 +1151,7 @@ export class SolanaCreateGibworkTask extends Tool { } export function createSolanaTools(solanaKit: SolanaAgentKit) { - return [ + const tools = [ new SolanaBalanceTool(solanaKit), new SolanaTransferTool(solanaKit), new SolanaDeployTokenTool(solanaKit), @@ -1264,4 +1185,7 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaResolveAllDomainsTool(solanaKit), new SolanaCreateGibworkTask(solanaKit), ]; + + // Convert LangChain tools to our Action interface + return tools.map(tool => wrapLangChainTool(tool, solanaKit)); } diff --git a/src/types/action.ts b/src/types/action.ts new file mode 100644 index 0000000..d715177 --- /dev/null +++ b/src/types/action.ts @@ -0,0 +1,53 @@ +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; + +/** + * Example of an action with input and output + */ +export interface ActionExample { + input: Record; + output: Record; + explanation: string; +} + +/** + * Handler function type for executing the action + */ +export type Handler = (agent: SolanaAgentKit, input: Record) => Promise>; + +/** + * Main Action interface inspired by ELIZA + * This interface makes it easier to implement actions across different frameworks + */ +export interface Action { + /** + * Unique name of the action + */ + name: string; + + /** + * Alternative names/phrases that can trigger this action + */ + similes: string[]; + + /** + * Detailed description of what the action does + */ + description: string; + + /** + * Array of example inputs and outputs for the action + * Each inner array represents a group of related examples + */ + examples: ActionExample[][]; + + /** + * Zod schema for input validation + */ + schema: z.ZodType; + + /** + * Function that executes the action + */ + handler: Handler; +} \ No newline at end of file diff --git a/src/utils/actionExecutor.ts b/src/utils/actionExecutor.ts new file mode 100644 index 0000000..0bb8f4b --- /dev/null +++ b/src/utils/actionExecutor.ts @@ -0,0 +1,67 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { actions } from "../actions"; + +/** + * Find an action by its name or one of its similes + */ +export function findAction(query: string): Action | undefined { + const normalizedQuery = query.toLowerCase().trim(); + return actions.find(action => + action.name.toLowerCase() === normalizedQuery || + action.similes.some(simile => simile.toLowerCase() === normalizedQuery) + ); +} + +/** + * Execute an action with the given input + */ +export async function executeAction( + action: Action, + agent: SolanaAgentKit, + input: Record +): Promise> { + try { + // Validate input using Zod schema + const validatedInput = action.schema.parse(input); + + // Execute the action with validated input + const result = await action.handler(agent, validatedInput); + + return { + status: "success", + ...result + }; + } catch (error: any) { + // Handle Zod validation errors specially + if (error.errors) { + return { + status: "error", + message: "Validation error", + details: error.errors, + code: "VALIDATION_ERROR" + }; + } + + return { + status: "error", + message: error.message, + code: error.code || "EXECUTION_ERROR" + }; + } +} + +/** + * Get examples for an action + */ +export function getActionExamples(action: Action): string { + return action.examples + .flat() + .map(example => { + return `Input: ${JSON.stringify(example.input, null, 2)} +Output: ${JSON.stringify(example.output, null, 2)} +Explanation: ${example.explanation} +---`; + }) + .join("\n"); +} \ No newline at end of file diff --git a/src/utils/langchainWrapper.ts b/src/utils/langchainWrapper.ts new file mode 100644 index 0000000..c7bf500 --- /dev/null +++ b/src/utils/langchainWrapper.ts @@ -0,0 +1,96 @@ +import { Tool } from "langchain/tools"; +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; + +/** + * Convert a LangChain tool to our Action interface + */ +export function wrapLangChainTool(tool: Tool, agent: SolanaAgentKit): Action { + // Parse the description to extract input parameters + const inputParams = parseToolDescription(tool.description); + + return { + name: tool.name, + similes: [], // LangChain tools don't have similes + description: tool.description, + examples: [], // LangChain tools don't have examples + schema: createZodSchema(inputParams), + handler: async (agent: SolanaAgentKit, input: Record) => { + const result = await tool.call(JSON.stringify(input)); + try { + return JSON.parse(result); + } catch { + return { result }; + } + } + }; +} + +/** + * Parse tool description to extract input parameters + */ +function parseToolDescription(description: string): Array<{name: string, type: string, required: boolean}> { + const lines = description.split('\n'); + const params: Array<{name: string, type: string, required: boolean}> = []; + + let inInputsSection = false; + for (const line of lines) { + const trimmed = line.trim(); + + if (trimmed === 'Inputs:' || trimmed === 'Inputs (input is a JSON string):') { + inInputsSection = true; + continue; + } + + if (inInputsSection && trimmed) { + // Match patterns like: name: string, eg "value" (required) + const match = trimmed.match(/(\w+):\s*([\w\[\]]+)(?:,\s*eg[:\s]+"[^"]+")?(?:\s*\((required|optional)\))?/); + if (match) { + params.push({ + name: match[1], + type: match[2], + required: match[3] === 'required' + }); + } + } + } + + return params; +} + +/** + * Create a Zod schema from parsed parameters + */ +function createZodSchema(params: Array<{name: string, type: string, required: boolean}>): z.ZodType { + const schemaObj: Record> = {}; + + for (const param of params) { + let schema: z.ZodType; + + switch (param.type.toLowerCase()) { + case 'string': + schema = z.string(); + break; + case 'number': + schema = z.number(); + break; + case 'boolean': + schema = z.boolean(); + break; + case 'string[]': + schema = z.array(z.string()); + break; + default: + schema = z.any(); + } + + if (!param.required) { + schema = schema.optional(); + } + + schemaObj[param.name] = schema; + } + + return z.object(schemaObj); +} \ No newline at end of file From 9297d78838e30c7d5d925978fa87df13b4c6393e Mon Sep 17 00:00:00 2001 From: Fahri Bilici <28020526+FahriBilici@users.noreply.github.com> Date: Fri, 27 Dec 2024 18:32:14 +0100 Subject: [PATCH 10/94] feat: Implement Action to Tool conversion for enhanced Solana agent functionality - Added a new function to convert Action interfaces into LangChain Tools, improving the integration of action handlers within the Solana agent. - Updated the agent initialization process to utilize the new conversion, allowing for dynamic tool creation based on defined actions. - Enhanced error handling and input validation within the action execution flow. --- test/index.ts | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/test/index.ts b/test/index.ts index 7cbf8bc..10a2003 100644 --- a/test/index.ts +++ b/test/index.ts @@ -7,6 +7,8 @@ import { ChatOpenAI } from "@langchain/openai"; import * as dotenv from "dotenv"; import * as fs from "fs"; import * as readline from "readline"; +import { Tool } from "@langchain/core/tools"; +import { Action } from "../src/types/action"; dotenv.config(); @@ -33,6 +35,52 @@ validateEnvironment(); const WALLET_DATA_FILE = "wallet_data.txt"; +// Convert our Action interface to LangChain Tool +function convertActionToTool(action: Action, solanaAgent: SolanaAgentKit): Tool { + class ActionTool extends Tool { + name = action.name; + description = action.description; + + async _call(input: string): Promise { + try { + let parsedInput; + try { + // Try to parse as JSON first + parsedInput = input ? JSON.parse(input) : {}; + } catch { + // If JSON parsing fails, use the raw input string + parsedInput = { input }; + } + + // Validate input against schema if available + if (action.schema) { + try { + parsedInput = action.schema.parse(parsedInput); + } catch (validationError: any) { + return JSON.stringify({ + status: "error", + message: `Invalid input: ${validationError.message}`, + code: "VALIDATION_ERROR" + }); + } + } + + const result = await action.handler(solanaAgent, parsedInput); + return JSON.stringify(result); + } catch (error: any) { + console.error("Action execution error:", error); + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR" + }); + } + } + } + + return new ActionTool(); +} + async function initializeAgent() { try { const llm = new ChatOpenAI({ @@ -56,7 +104,10 @@ async function initializeAgent() { process.env.OPENAI_API_KEY!, ); - const tools = createSolanaTools(solanaAgent); + const actions = createSolanaTools(solanaAgent); + // Convert our Actions to LangChain Tools + const tools = actions.map(action => convertActionToTool(action, solanaAgent)); + const memory = new MemorySaver(); const config = { configurable: { thread_id: "Solana Agent Kit!" } }; From 9326da25b185d34f8d029243c4d21e6a305b2ae2 Mon Sep 17 00:00:00 2001 From: Fahri Bilici <28020526+FahriBilici@users.noreply.github.com> Date: Fri, 27 Dec 2024 23:34:15 +0100 Subject: [PATCH 11/94] adding missing tools --- src/actions/createGibworkTask.ts | 135 ++++++++++++ src/actions/createImage.ts | 114 ++++++++++ src/actions/createOpenbookMarket.ts | 119 ++++++++++ src/actions/createOrcaSingleSidedWhirlpool.ts | 105 +++++++++ src/actions/fetchPrice.ts | 70 ++++++ src/actions/getAllDomainsTLDs.ts | 49 +++++ src/actions/getAllRegisteredAllDomains.ts | 70 ++++++ src/actions/getMainAllDomainsDomain.ts | 67 ++++++ src/actions/getOwnedAllDomains.ts | 60 ++++++ src/actions/getOwnedDomainsForTLD.ts | 60 ++++++ src/actions/getPrimaryDomain.ts | 68 ++++++ src/actions/getTPS.ts | 62 ++++++ src/actions/getTokenData.ts | 134 ++++++++++++ src/actions/index.ts | 49 ++++- src/actions/launchPumpfunToken.ts | 203 ++++++++++++++++++ src/actions/lendAsset.ts | 101 +++++++++ src/actions/pythFetchPrice.ts | 78 +++++++ src/actions/raydiumCreateAmmV4.ts | 154 +++++++++++++ src/actions/raydiumCreateCpmm.ts | 142 ++++++++++++ src/actions/registerDomain.ts | 110 ++++++++++ src/actions/resolveDomain.ts | 61 ++++++ src/actions/resolveSolDomain.ts | 69 ++++++ src/actions/stakeWithJup.ts | 101 +++++++++ 23 files changed, 2180 insertions(+), 1 deletion(-) create mode 100644 src/actions/createGibworkTask.ts create mode 100644 src/actions/createImage.ts create mode 100644 src/actions/createOpenbookMarket.ts create mode 100644 src/actions/createOrcaSingleSidedWhirlpool.ts create mode 100644 src/actions/fetchPrice.ts create mode 100644 src/actions/getAllDomainsTLDs.ts create mode 100644 src/actions/getAllRegisteredAllDomains.ts create mode 100644 src/actions/getMainAllDomainsDomain.ts create mode 100644 src/actions/getOwnedAllDomains.ts create mode 100644 src/actions/getOwnedDomainsForTLD.ts create mode 100644 src/actions/getPrimaryDomain.ts create mode 100644 src/actions/getTPS.ts create mode 100644 src/actions/getTokenData.ts create mode 100644 src/actions/launchPumpfunToken.ts create mode 100644 src/actions/lendAsset.ts create mode 100644 src/actions/pythFetchPrice.ts create mode 100644 src/actions/raydiumCreateAmmV4.ts create mode 100644 src/actions/raydiumCreateCpmm.ts create mode 100644 src/actions/registerDomain.ts create mode 100644 src/actions/resolveDomain.ts create mode 100644 src/actions/resolveSolDomain.ts create mode 100644 src/actions/stakeWithJup.ts diff --git a/src/actions/createGibworkTask.ts b/src/actions/createGibworkTask.ts new file mode 100644 index 0000000..8ae28ce --- /dev/null +++ b/src/actions/createGibworkTask.ts @@ -0,0 +1,135 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { PublicKey, VersionedTransaction } from "@solana/web3.js"; + +const createGibworkTaskAction: Action = { + name: "solana_create_gibwork_task", + similes: [ + "create task", + "post job", + "create gig", + "post task", + "create work", + "new task on gibwork" + ], + description: "Create a new task on the Gibwork platform with payment in SPL tokens", + examples: [ + [ + { + input: { + title: "Build a Solana dApp", + content: "Create a simple Solana dApp with React frontend", + requirements: "Experience with Rust and React", + tags: ["solana", "rust", "react"], + tokenMintAddress: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + tokenAmount: 100 + }, + output: { + status: "success", + taskId: "task_123", + signature: "3YKpM1...", + message: "Successfully created task: Build a Solana dApp" + }, + explanation: "Create a new task on Gibwork with 100 USDC payment" + } + ] + ], + schema: z.object({ + title: z.string() + .min(1) + .describe("Title of the task"), + content: z.string() + .min(1) + .describe("Description of the task"), + requirements: z.string() + .min(1) + .describe("Requirements to complete the task"), + tags: z.array(z.string()) + .min(1) + .describe("List of tags associated with the task"), + tokenMintAddress: z.string() + .describe("Token mint address for payment"), + tokenAmount: z.number() + .positive() + .describe("Payment amount for the task"), + payer: z.string() + .optional() + .describe("Optional payer address (defaults to wallet address)") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const tokenMintAddress = new PublicKey(input.tokenMintAddress); + const payer = input.payer ? new PublicKey(input.payer) : undefined; + + const apiResponse = await fetch( + "https://api2.gib.work/tasks/public/transaction", + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + title: input.title, + content: input.content, + requirements: input.requirements, + tags: input.tags, + payer: payer?.toBase58() || agent.wallet.publicKey.toBase58(), + token: { + mintAddress: tokenMintAddress.toBase58(), + amount: input.tokenAmount, + }, + }), + } + ); + + if (!apiResponse.ok) { + return { + status: "error", + message: `Failed to create task: ${apiResponse.statusText}` + }; + } + + const responseData = await apiResponse.json(); + if (!responseData.taskId || !responseData.serializedTransaction) { + return { + status: "error", + message: responseData.message || "Invalid response from Gibwork API" + }; + } + + const serializedTransaction = Buffer.from( + responseData.serializedTransaction, + "base64" + ); + const tx = VersionedTransaction.deserialize(serializedTransaction); + + tx.sign([agent.wallet]); + const signature = await agent.connection.sendTransaction(tx, { + preflightCommitment: "confirmed", + maxRetries: 3, + }); + + const latestBlockhash = await agent.connection.getLatestBlockhash(); + await agent.connection.confirmTransaction({ + signature, + blockhash: latestBlockhash.blockhash, + lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, + }); + + return { + status: "success", + taskId: responseData.taskId, + signature, + message: `Successfully created task: ${input.title}` + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to create task: ${error.message}` + }; + } + } +}; + +export default createGibworkTaskAction; \ No newline at end of file diff --git a/src/actions/createImage.ts b/src/actions/createImage.ts new file mode 100644 index 0000000..4d16b9a --- /dev/null +++ b/src/actions/createImage.ts @@ -0,0 +1,114 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import OpenAI from "openai"; + +const createImageAction: Action = { + name: "solana_create_image", + similes: [ + "generate image", + "create artwork", + "make image", + "generate artwork", + "create picture", + "generate picture" + ], + description: "Create an AI-generated image based on a text prompt using OpenAI's DALL-E models", + examples: [ + [ + { + input: { + prompt: "A beautiful sunset over a mountain landscape", + model: "dall-e-3", + size: "1024x1024", + quality: "standard", + style: "natural" + }, + output: { + status: "success", + imageUrl: "https://example.com/image.png", + message: "Successfully generated image" + }, + explanation: "Generate an image of a sunset landscape using DALL-E 3" + } + ] + ], + schema: z.object({ + prompt: z.string() + .min(1) + .max(1000) + .describe("The text description of the image to generate"), + model: z.enum(["dall-e-3"]) + .default("dall-e-3") + .describe("The AI model to use for generation"), + size: z.enum(["256x256", "512x512", "1024x1024", "1792x1024", "1024x1792"]) + .default("1024x1024") + .describe("The size of the generated image"), + quality: z.enum(["standard", "hd"]) + .default("standard") + .describe("The quality level of the generated image"), + style: z.enum(["natural", "vivid"]) + .default("natural") + .describe("The style of the generated image") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + if (!agent.openai_api_key) { + return { + status: "error", + message: "OpenAI API key not found in agent configuration" + }; + } + + const { prompt, model, size, quality, style } = input; + + const openai = new OpenAI({ + apiKey: agent.openai_api_key + }); + + const response = await openai.images.generate({ + prompt, + model, + n: 1, + size, + quality, + style + }); + + if (!response.data || response.data.length === 0) { + return { + status: "error", + message: "No image was generated" + }; + } + + return { + status: "success", + imageUrl: response.data[0].url, + message: "Successfully generated image" + }; + } catch (error: any) { + // Handle specific OpenAI error types + if (error.response) { + const { status, data } = error.response; + if (status === 429) { + return { + status: "error", + message: "Rate limit exceeded. Please try again later." + }; + } + return { + status: "error", + message: `OpenAI API error: ${data.error?.message || error.message}` + }; + } + + return { + status: "error", + message: `Failed to generate image: ${error.message}` + }; + } + } +}; + +export default createImageAction; \ No newline at end of file diff --git a/src/actions/createOpenbookMarket.ts b/src/actions/createOpenbookMarket.ts new file mode 100644 index 0000000..991ab97 --- /dev/null +++ b/src/actions/createOpenbookMarket.ts @@ -0,0 +1,119 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { OPEN_BOOK_PROGRAM, Raydium, TxVersion } from "@raydium-io/raydium-sdk-v2"; +import { MintLayout, TOKEN_PROGRAM_ID } from "@solana/spl-token"; +import { PublicKey } from "@solana/web3.js"; + +const createOpenbookMarketAction: Action = { + name: "solana_create_openbook_market", + similes: [ + "create openbook market", + "setup trading market", + "new openbook market", + "create trading pair", + "setup dex market", + "new trading market" + ], + description: "Create a new trading market on Openbook DEX", + examples: [ + [ + { + input: { + baseMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", // USDC + quoteMint: "So11111111111111111111111111111111111111112", // SOL + lotSize: 1, + tickSize: 0.01 + }, + output: { + status: "success", + signatures: ["2ZE7Rz...", "3YKpM1..."], + message: "Successfully created Openbook market" + }, + explanation: "Create a new USDC/SOL market on Openbook with default lot and tick sizes" + } + ] + ], + schema: z.object({ + baseMint: z.string() + .min(1) + .describe("The base token's mint address"), + quoteMint: z.string() + .min(1) + .describe("The quote token's mint address"), + lotSize: z.number() + .positive() + .default(1) + .describe("The minimum order size (lot size)"), + tickSize: z.number() + .positive() + .default(0.01) + .describe("The minimum price increment (tick size)") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const baseMint = new PublicKey(input.baseMint); + const quoteMint = new PublicKey(input.quoteMint); + const lotSize = input.lotSize || 1; + const tickSize = input.tickSize || 0.01; + + const raydium = await Raydium.load({ + owner: agent.wallet, + connection: agent.connection, + }); + + // Get mint info + const baseMintInfo = await agent.connection.getAccountInfo(baseMint); + const quoteMintInfo = await agent.connection.getAccountInfo(quoteMint); + + if (!baseMintInfo || !quoteMintInfo) { + return { + status: "error", + message: "Failed to fetch mint information" + }; + } + + // Verify token program + if ( + baseMintInfo.owner.toString() !== TOKEN_PROGRAM_ID.toBase58() || + quoteMintInfo.owner.toString() !== TOKEN_PROGRAM_ID.toBase58() + ) { + return { + status: "error", + message: "Openbook market only supports TOKEN_PROGRAM_ID mints. For token-2022, please use Raydium CPMM pool instead." + }; + } + + // Create market + const { execute } = await raydium.marketV2.create({ + baseInfo: { + mint: baseMint, + decimals: MintLayout.decode(baseMintInfo.data).decimals, + }, + quoteInfo: { + mint: quoteMint, + decimals: MintLayout.decode(quoteMintInfo.data).decimals, + }, + lotSize, + tickSize, + dexProgramId: OPEN_BOOK_PROGRAM, + txVersion: TxVersion.V0, + }); + + const { txIds } = await execute({ sequentially: true }); + + return { + status: "success", + signatures: txIds, + message: "Successfully created Openbook market" + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to create Openbook market: ${error.message}` + }; + } + } +}; + +export default createOpenbookMarketAction; \ No newline at end of file diff --git a/src/actions/createOrcaSingleSidedWhirlpool.ts b/src/actions/createOrcaSingleSidedWhirlpool.ts new file mode 100644 index 0000000..11c8289 --- /dev/null +++ b/src/actions/createOrcaSingleSidedWhirlpool.ts @@ -0,0 +1,105 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { PublicKey } from "@solana/web3.js"; +import { BN } from "@coral-xyz/anchor"; +import { Decimal } from "decimal.js"; + +// Fee tiers mapping from the original tool +const FEE_TIERS = { + 0.01: 1, + 0.02: 2, + 0.04: 4, + 0.05: 8, + 0.16: 16, + 0.3: 64, + 0.65: 96, + 1.0: 128, + 2.0: 256, +} as const; + +const createOrcaSingleSidedWhirlpoolAction: Action = { + name: "solana_create_orca_single_sided_whirlpool", + similes: [ + "create orca whirlpool", + "setup orca single sided pool", + "initialize orca whirlpool", + "create orca concentrated pool", + "setup orca concentrated liquidity", + "create orca trading pair" + ], + description: "Create a new single-sided whirlpool on Orca with concentrated liquidity", + examples: [ + [ + { + input: { + depositTokenAmount: "1000000000000", // 1 million tokens with 6 decimals + depositTokenMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", // USDC + otherTokenMint: "So11111111111111111111111111111111111111112", // SOL + initialPrice: "0.001", + maxPrice: "5.0", + feeTier: 0.3 + }, + output: { + status: "success", + signature: "2ZE7Rz...", + message: "Successfully created Orca single-sided whirlpool" + }, + explanation: "Create a USDC/SOL whirlpool with 1M USDC initial liquidity" + } + ] + ], + schema: z.object({ + depositTokenAmount: z.string() + .min(1) + .describe("The amount of deposit token to provide as liquidity (including decimals)"), + depositTokenMint: z.string() + .min(1) + .describe("The mint address of the token being deposited"), + otherTokenMint: z.string() + .min(1) + .describe("The mint address of the other token in the pool"), + initialPrice: z.string() + .min(1) + .describe("Initial price of deposit token in terms of the other token"), + maxPrice: z.string() + .min(1) + .describe("Maximum price at which liquidity is added"), + feeTier: z.number() + .refine((val) => val in FEE_TIERS, "Invalid fee tier") + .describe("Fee tier percentage for the pool (e.g., 0.3 for 0.3%)") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const depositTokenAmount = new BN(input.depositTokenAmount); + const depositTokenMint = new PublicKey(input.depositTokenMint); + const otherTokenMint = new PublicKey(input.otherTokenMint); + const initialPrice = new Decimal(input.initialPrice); + const maxPrice = new Decimal(input.maxPrice); + const feeTier = input.feeTier as keyof typeof FEE_TIERS; + + // Create the whirlpool + const signature = await agent.createOrcaSingleSidedWhirlpool( + depositTokenAmount, + depositTokenMint, + otherTokenMint, + initialPrice, + maxPrice, + feeTier + ); + + return { + status: "success", + signature, + message: "Successfully created Orca single-sided whirlpool" + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to create whirlpool: ${error.message}` + }; + } + } +}; + +export default createOrcaSingleSidedWhirlpoolAction; \ No newline at end of file diff --git a/src/actions/fetchPrice.ts b/src/actions/fetchPrice.ts new file mode 100644 index 0000000..40b9a1d --- /dev/null +++ b/src/actions/fetchPrice.ts @@ -0,0 +1,70 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { PublicKey } from "@solana/web3.js"; + +const fetchPriceAction: Action = { + name: "solana_fetch_price", + similes: [ + "get token price", + "check price", + "token value", + "price check", + "get price in usd" + ], + description: "Fetch the current price of a Solana token in USDC using Jupiter API", + examples: [ + [ + { + input: { + tokenAddress: "So11111111111111111111111111111111111111112" + }, + output: { + status: "success", + price: "23.45", + message: "Current price: $23.45 USDC" + }, + explanation: "Get the current price of SOL token in USDC" + } + ] + ], + schema: z.object({ + tokenAddress: z.string().describe("The mint address of the token to fetch the price for") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const tokenId = new PublicKey(input.tokenAddress); + const response = await fetch(`https://api.jup.ag/price/v2?ids=${tokenId}`); + + if (!response.ok) { + return { + status: "error", + message: `Failed to fetch price: ${response.statusText}` + }; + } + + const data = await response.json(); + const price = data.data[tokenId.toBase58()]?.price; + + if (!price) { + return { + status: "error", + message: "Price data not available for the given token" + }; + } + + return { + status: "success", + price, + message: `Current price: $${price} USDC` + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to fetch price: ${error.message}` + }; + } + } +}; + +export default fetchPriceAction; \ No newline at end of file diff --git a/src/actions/getAllDomainsTLDs.ts b/src/actions/getAllDomainsTLDs.ts new file mode 100644 index 0000000..fbda0b8 --- /dev/null +++ b/src/actions/getAllDomainsTLDs.ts @@ -0,0 +1,49 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; + +const getAllDomainsTLDsAction: Action = { + name: "solana_get_all_domains_tlds", + similes: [ + "list domain tlds", + "get domain extensions", + "fetch domain tlds", + "get top level domains", + "list available tlds", + "get domain suffixes" + ], + description: "Get a list of all available top-level domains (TLDs) for Solana domains", + examples: [ + [ + { + input: {}, + output: { + status: "success", + tlds: [".sol", ".abc", ".backpack", ".bonk"], + message: "Successfully retrieved all domain TLDs" + }, + explanation: "Get a list of all available TLDs that can be used for Solana domains" + } + ] + ], + schema: z.object({}), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + // Get all domain TLDs + const tlds = await agent.getAllDomainsTLDs(); + + return { + status: "success", + tlds, + message: "Successfully retrieved all domain TLDs" + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to get domain TLDs: ${error.message}` + }; + } + } +}; + +export default getAllDomainsTLDsAction; \ No newline at end of file diff --git a/src/actions/getAllRegisteredAllDomains.ts b/src/actions/getAllRegisteredAllDomains.ts new file mode 100644 index 0000000..19a5542 --- /dev/null +++ b/src/actions/getAllRegisteredAllDomains.ts @@ -0,0 +1,70 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; + +const getAllRegisteredAllDomainsAction: Action = { + name: "solana_get_all_registered_all_domains", + similes: [ + "list registered domains", + "get all domains", + "fetch registered domains", + "get domain list", + "list active domains", + "get registered names" + ], + description: "Get a list of all registered domains across all TLDs", + examples: [ + [ + { + input: { + limit: 100, + offset: 0 + }, + output: { + status: "success", + domains: ["solana.sol", "bonk.abc", "wallet.backpack"], + total: 3, + message: "Successfully retrieved registered domains" + }, + explanation: "Get the first 100 registered domains across all TLDs" + } + ] + ], + schema: z.object({ + limit: z.number() + .positive() + .max(1000) + .default(100) + .describe("Maximum number of domains to return"), + offset: z.number() + .nonnegative() + .default(0) + .describe("Number of domains to skip") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const limit = input.limit || 100; + const offset = input.offset || 0; + + // Get all registered domains + const domains = await agent.getAllRegisteredAllDomains(); + + // Apply pagination + const paginatedDomains = domains.slice(offset, offset + limit); + + return { + status: "success", + domains: paginatedDomains, + total: domains.length, + message: "Successfully retrieved registered domains" + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to get registered domains: ${error.message}` + }; + } + } +}; + +export default getAllRegisteredAllDomainsAction; \ No newline at end of file diff --git a/src/actions/getMainAllDomainsDomain.ts b/src/actions/getMainAllDomainsDomain.ts new file mode 100644 index 0000000..81f911d --- /dev/null +++ b/src/actions/getMainAllDomainsDomain.ts @@ -0,0 +1,67 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { PublicKey } from "@solana/web3.js"; +import { TldParser } from "@onsol/tldparser"; + +const getMainAllDomainsDomainAction: Action = { + name: "solana_get_main_all_domains_domain", + similes: [ + "get main domain", + "fetch primary domain", + "get default domain", + "get main address name", + "get primary name", + "get main domain name" + ], + description: "Get the main domain associated with a wallet address", + examples: [ + [ + { + input: { + address: "7nxQB..." + }, + output: { + status: "success", + domain: "solana.sol", + message: "Successfully retrieved main domain" + }, + explanation: "Get the main domain name for a given wallet address" + } + ] + ], + schema: z.object({ + address: z.string() + .min(1) + .describe("The wallet address to get the main domain for") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const address = new PublicKey(input.address); + + // Get the main domain using TldParser + const parser = new TldParser(agent.connection); + const mainDomain = await parser.getMainDomain(address); + + if (!mainDomain) { + return { + status: "error", + message: "No main domain found for this address" + }; + } + + return { + status: "success", + domain: mainDomain.domain, + message: "Successfully retrieved main domain" + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to get main domain: ${error.message}` + }; + } + } +}; + +export default getMainAllDomainsDomainAction; \ No newline at end of file diff --git a/src/actions/getOwnedAllDomains.ts b/src/actions/getOwnedAllDomains.ts new file mode 100644 index 0000000..7c41760 --- /dev/null +++ b/src/actions/getOwnedAllDomains.ts @@ -0,0 +1,60 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { PublicKey } from "@solana/web3.js"; + +const getOwnedAllDomainsAction: Action = { + name: "solana_get_owned_all_domains", + similes: [ + "list owned domains", + "get my domains", + "fetch wallet domains", + "get owned names", + "list my domains", + "get address domains" + ], + description: "Get all domains owned by a specific wallet address across all TLDs", + examples: [ + [ + { + input: { + address: "7nxQB..." + }, + output: { + status: "success", + domains: ["solana.sol", "wallet.abc", "user.backpack"], + total: 3, + message: "Successfully retrieved owned domains" + }, + explanation: "Get all domain names owned by a specific wallet address" + } + ] + ], + schema: z.object({ + address: z.string() + .min(1) + .describe("The wallet address to get owned domains for") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const address = new PublicKey(input.address); + + // Get owned domains + const domains = await agent.getOwnedAllDomains(address); + + return { + status: "success", + domains, + total: domains.length, + message: `Successfully retrieved ${domains.length} owned domain${domains.length === 1 ? '' : 's'}` + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to get owned domains: ${error.message}` + }; + } + } +}; + +export default getOwnedAllDomainsAction; \ No newline at end of file diff --git a/src/actions/getOwnedDomainsForTLD.ts b/src/actions/getOwnedDomainsForTLD.ts new file mode 100644 index 0000000..36924e4 --- /dev/null +++ b/src/actions/getOwnedDomainsForTLD.ts @@ -0,0 +1,60 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { PublicKey } from "@solana/web3.js"; + +const getOwnedDomainsForTLDAction: Action = { + name: "solana_get_owned_domains_for_tld", + similes: [ + "list owned domains for tld", + "get my domains for extension", + "fetch wallet domains by tld", + "get owned names by extension", + "list my domains by tld", + "get address domains for tld" + ], + description: "Get all domains owned by a specific wallet address for a given top-level domain (TLD)", + examples: [ + [ + { + input: { + tld: "sol" + }, + output: { + status: "success", + domains: ["solana.sol", "wallet.sol", "user.sol"], + total: 3, + message: "Successfully retrieved owned domains for .sol" + }, + explanation: "Get all .sol domain names owned by a specific wallet address" + } + ] + ], + schema: z.object({ + tld: z.string() + .min(1) + .describe("The top-level domain to filter by (e.g., 'sol', 'abc')") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const tld = input.tld.toLowerCase(); + + // Get owned domains for TLD + const domains = await agent.getOwnedDomainsForTLD(tld); + + return { + status: "success", + domains, + total: domains.length, + message: `Successfully retrieved ${domains.length} owned domain${domains.length === 1 ? '' : 's'} for .${tld}` + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to get owned domains: ${error.message}` + }; + } + } +}; + +export default getOwnedDomainsForTLDAction; \ No newline at end of file diff --git a/src/actions/getPrimaryDomain.ts b/src/actions/getPrimaryDomain.ts new file mode 100644 index 0000000..778fadb --- /dev/null +++ b/src/actions/getPrimaryDomain.ts @@ -0,0 +1,68 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { getPrimaryDomain as _getPrimaryDomain } from "@bonfida/spl-name-service"; +import { PublicKey } from "@solana/web3.js"; + +const getPrimaryDomainAction: Action = { + name: "solana_get_primary_domain", + similes: [ + "get primary domain", + "lookup primary domain", + "check primary domain", + "find primary domain", + "get main domain", + "primary sol domain" + ], + description: "Get the primary .sol domain associated with a Solana wallet address", + examples: [ + [ + { + input: { + account: "7nxQB..." + }, + output: { + status: "success", + domain: "vitalik.sol", + message: "Primary domain: vitalik.sol" + }, + explanation: "Get the primary .sol domain for a wallet address" + } + ] + ], + schema: z.object({ + account: z.string() + .min(1) + .describe("The Solana wallet address to lookup") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const account = new PublicKey(input.account); + + const { reverse, stale } = await _getPrimaryDomain( + agent.connection, + account + ); + + if (stale) { + return { + status: "error", + message: `Primary domain is stale for account: ${account.toBase58()}` + }; + } + + return { + status: "success", + domain: reverse, + message: `Primary domain: ${reverse}` + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to get primary domain: ${error.message}` + }; + } + } +}; + +export default getPrimaryDomainAction; \ No newline at end of file diff --git a/src/actions/getTPS.ts b/src/actions/getTPS.ts new file mode 100644 index 0000000..8baadff --- /dev/null +++ b/src/actions/getTPS.ts @@ -0,0 +1,62 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; + +const getTPSAction: Action = { + name: "solana_get_tps", + similes: [ + "get transactions per second", + "check network speed", + "network performance", + "transaction throughput", + "network tps" + ], + description: "Get the current transactions per second (TPS) of the Solana network", + examples: [ + [ + { + input: {}, + output: { + status: "success", + tps: 3500, + message: "Current network TPS: 3500" + }, + explanation: "Get the current TPS of the Solana network" + } + ] + ], + schema: z.object({}), // No input parameters required + handler: async (agent: SolanaAgentKit, _input: Record) => { + try { + const perfSamples = await agent.connection.getRecentPerformanceSamples(); + + if ( + !perfSamples.length || + !perfSamples[0]?.numTransactions || + !perfSamples[0]?.samplePeriodSecs + ) { + return { + status: "error", + message: "No performance samples available" + }; + } + + const tps = Math.round( + perfSamples[0].numTransactions / perfSamples[0].samplePeriodSecs + ); + + return { + status: "success", + tps, + message: `Current network TPS: ${tps}` + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to get TPS: ${error.message}` + }; + } + } +}; + +export default getTPSAction; \ No newline at end of file diff --git a/src/actions/getTokenData.ts b/src/actions/getTokenData.ts new file mode 100644 index 0000000..4b75cb9 --- /dev/null +++ b/src/actions/getTokenData.ts @@ -0,0 +1,134 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { PublicKey } from "@solana/web3.js"; +import { JupiterTokenData } from "../types"; + +const getTokenDataAction: Action = { + name: "solana_get_token_data", + similes: [ + "get token info", + "token details", + "lookup token", + "find token", + "token data" + ], + description: "Get token data from either a token address or ticker symbol", + examples: [ + [ + { + input: { + address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + }, + output: { + status: "success", + token: { + name: "USD Coin", + symbol: "USDC", + address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + decimals: 6 + } + }, + explanation: "Get token data using the token's address" + } + ], + [ + { + input: { + ticker: "SOL" + }, + output: { + status: "success", + token: { + name: "Wrapped SOL", + symbol: "SOL", + address: "So11111111111111111111111111111111111111112", + decimals: 9 + } + }, + explanation: "Get token data using the token's ticker symbol" + } + ] + ], + schema: z.object({ + address: z.string().optional().describe("The token's mint address"), + ticker: z.string().optional().describe("The token's ticker symbol") + }).refine(data => data.address || data.ticker, { + message: "Either address or ticker must be provided" + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + let tokenData: JupiterTokenData | undefined; + + if (input.address) { + const mint = new PublicKey(input.address); + const response = await fetch("https://tokens.jup.ag/tokens?tags=verified", { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + }); + + const data = (await response.json()) as JupiterTokenData[]; + tokenData = data.find((token: JupiterTokenData) => token.address === mint.toBase58()); + } else if (input.ticker) { + const response = await fetch( + `https://api.dexscreener.com/latest/dex/search?q=${input.ticker}` + ); + const data = await response.json(); + + if (!data.pairs || data.pairs.length === 0) { + return { + status: "error", + message: `No token found for ticker: ${input.ticker}` + }; + } + + let solanaPairs = data.pairs + .filter((pair: any) => pair.chainId === "solana") + .sort((a: any, b: any) => (b.fdv || 0) - (a.fdv || 0)) + .filter( + (pair: any) => + pair.baseToken.symbol.toLowerCase() === input.ticker.toLowerCase() + ); + + if (solanaPairs.length === 0) { + return { + status: "error", + message: `No Solana token found for ticker: ${input.ticker}` + }; + } + + const address = solanaPairs[0].baseToken.address; + const jupResponse = await fetch("https://tokens.jup.ag/tokens?tags=verified"); + const jupData = (await jupResponse.json()) as JupiterTokenData[]; + tokenData = jupData.find((token: JupiterTokenData) => token.address === address); + } + + if (!tokenData) { + return { + status: "error", + message: "Token not found or not verified" + }; + } + + return { + status: "success", + token: { + name: tokenData.name, + symbol: tokenData.symbol, + address: tokenData.address, + decimals: tokenData.decimals, + logoURI: tokenData.logoURI + } + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to get token data: ${error.message}` + }; + } + } +}; + +export default getTokenDataAction; \ No newline at end of file diff --git a/src/actions/index.ts b/src/actions/index.ts index bf72aca..1e15f58 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -5,6 +5,30 @@ import deployCollectionAction from "./deployCollection"; import mintNFTAction from "./mintNFT"; import tradeAction from "./trade"; import requestFundsAction from "./requestFunds"; +import resolveDomainAction from "./resolveDomain"; +import getTokenDataAction from "./getTokenData"; +import getTPSAction from "./getTPS"; +import fetchPriceAction from "./fetchPrice"; +import stakeWithJupAction from "./stakeWithJup"; +import registerDomainAction from "./registerDomain"; +import lendAssetAction from "./lendAsset"; +import createGibworkTaskAction from "./createGibworkTask"; +import resolveSolDomainAction from "./resolveSolDomain"; +import pythFetchPriceAction from "./pythFetchPrice"; +import getOwnedDomainsForTLDAction from "./getOwnedDomainsForTLD"; +import createRaydiumCLMMAction from "./createRaydiumCLMM"; +import getPrimaryDomainAction from "./getPrimaryDomain"; +import getAllDomainsTLDsAction from "./getAllDomainsTLDs"; +import getOwnedAllDomainsAction from "./getOwnedAllDomains"; +import createImageAction from "./createImage"; +import getMainAllDomainsDomainAction from "./getMainAllDomainsDomain"; +import getAllRegisteredAllDomainsAction from "./getAllRegisteredAllDomains"; +import createRaydiumCPMMAction from "./createRaydiumCPMM"; +import sendCompressedAirdropAction from "./sendCompressedAirdrop"; +import raydiumCreateCpmmAction from "./raydiumCreateCpmm"; +import raydiumCreateAmmV4Action from "./raydiumCreateAmmV4"; +import createOrcaSingleSidedWhirlpoolAction from "./createOrcaSingleSidedWhirlpool"; +import launchPumpfunTokenAction from "./launchPumpfunToken"; export const actions = [ deployTokenAction, @@ -14,7 +38,30 @@ export const actions = [ mintNFTAction, tradeAction, requestFundsAction, - // Add more actions here as they are implemented + resolveDomainAction, + getTokenDataAction, + getTPSAction, + fetchPriceAction, + stakeWithJupAction, + registerDomainAction, + lendAssetAction, + createGibworkTaskAction, + resolveSolDomainAction, + pythFetchPriceAction, + getOwnedDomainsForTLDAction, + createRaydiumCLMMAction, + getPrimaryDomainAction, + getAllDomainsTLDsAction, + getOwnedAllDomainsAction, + createImageAction, + getMainAllDomainsDomainAction, + getAllRegisteredAllDomainsAction, + createRaydiumCPMMAction, + sendCompressedAirdropAction, + raydiumCreateCpmmAction, + raydiumCreateAmmV4Action, + createOrcaSingleSidedWhirlpoolAction, + launchPumpfunTokenAction, ]; export type { Action, ActionExample, Handler } from "../types/action"; \ No newline at end of file diff --git a/src/actions/launchPumpfunToken.ts b/src/actions/launchPumpfunToken.ts new file mode 100644 index 0000000..ea38076 --- /dev/null +++ b/src/actions/launchPumpfunToken.ts @@ -0,0 +1,203 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { VersionedTransaction, Keypair } from "@solana/web3.js"; + +const launchPumpfunTokenAction: Action = { + name: "solana_launch_pumpfun_token", + similes: [ + "create pumpfun token", + "launch token on pumpfun", + "deploy pumpfun token", + "create meme token", + "launch memecoin", + "create pump token" + ], + description: "Launch a new token on Pump.fun with customizable metadata and initial liquidity", + examples: [ + [ + { + input: { + tokenName: "Sample Token", + tokenTicker: "SMPL", + description: "A sample token for demonstration", + imageUrl: "https://example.com/token.png", + twitter: "@sampletoken", + telegram: "t.me/sampletoken", + website: "https://sampletoken.com", + initialLiquiditySOL: 0.1, + slippageBps: 10, + priorityFee: 0.0001 + }, + output: { + status: "success", + signature: "2ZE7Rz...", + mint: "7nxQB...", + metadataUri: "https://arweave.net/...", + message: "Successfully launched token on Pump.fun" + }, + explanation: "Launch a new token with custom metadata and 0.1 SOL initial liquidity" + } + ] + ], + schema: z.object({ + tokenName: z.string() + .min(1) + .max(32) + .describe("Name of the token"), + tokenTicker: z.string() + .min(2) + .max(10) + .describe("Ticker symbol of the token"), + description: z.string() + .min(1) + .max(1000) + .describe("Description of the token"), + imageUrl: z.string() + .url() + .describe("URL of the token image"), + twitter: z.string() + .optional() + .describe("Twitter handle (optional)"), + telegram: z.string() + .optional() + .describe("Telegram group link (optional)"), + website: z.string() + .url() + .optional() + .describe("Website URL (optional)"), + initialLiquiditySOL: z.number() + .min(0.0001) + .default(0.0001) + .describe("Initial liquidity in SOL"), + slippageBps: z.number() + .min(1) + .max(1000) + .default(5) + .describe("Slippage tolerance in basis points"), + priorityFee: z.number() + .min(0.00001) + .default(0.00005) + .describe("Priority fee in SOL") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const mintKeypair = Keypair.generate(); + + // Upload metadata + const formData = new URLSearchParams(); + formData.append("name", input.tokenName); + formData.append("symbol", input.tokenTicker); + formData.append("description", input.description); + formData.append("showName", "true"); + + if (input.twitter) { + formData.append("twitter", input.twitter); + } + if (input.telegram) { + formData.append("telegram", input.telegram); + } + if (input.website) { + formData.append("website", input.website); + } + + // Fetch and process image + const imageResponse = await fetch(input.imageUrl); + const imageBlob = await imageResponse.blob(); + const imageFile = new File([imageBlob], "token_image.png", { type: "image/png" }); + + // Create final form data + const finalFormData = new FormData(); + for (const [key, value] of formData.entries()) { + finalFormData.append(key, value); + } + finalFormData.append("file", imageFile); + + // Upload metadata to IPFS + const metadataResponse = await fetch("https://pump.fun/api/ipfs", { + method: "POST", + body: finalFormData, + }); + + if (!metadataResponse.ok) { + throw new Error(`Metadata upload failed: ${metadataResponse.statusText}`); + } + + const metadataResult = await metadataResponse.json(); + + // Create token transaction + const payload = { + publicKey: agent.wallet_address.toBase58(), + action: "create", + tokenMetadata: { + name: metadataResult.metadata.name, + symbol: metadataResult.metadata.symbol, + uri: metadataResult.metadataUri, + }, + mint: mintKeypair.publicKey.toBase58(), + denominatedInSol: "true", + amount: input.initialLiquiditySOL || 0.0001, + slippage: input.slippageBps || 5, + priorityFee: input.priorityFee || 0.00005, + pool: "pump", + }; + + const txResponse = await fetch("https://pumpportal.fun/api/trade-local", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(payload), + }); + + if (!txResponse.ok) { + const errorText = await txResponse.text(); + throw new Error(`Transaction creation failed: ${txResponse.status} - ${errorText}`); + } + + // Process and sign transaction + const transactionData = await txResponse.arrayBuffer(); + const tx = VersionedTransaction.deserialize(new Uint8Array(transactionData)); + + // Get latest blockhash + const { blockhash, lastValidBlockHeight } = await agent.connection.getLatestBlockhash(); + tx.message.recentBlockhash = blockhash; + + // Sign transaction + tx.sign([mintKeypair, agent.wallet]); + + // Send transaction + const signature = await agent.connection.sendTransaction(tx, { + skipPreflight: false, + preflightCommitment: "confirmed", + maxRetries: 5, + }); + + // Wait for confirmation + const confirmation = await agent.connection.confirmTransaction({ + signature, + blockhash, + lastValidBlockHeight, + }); + + if (confirmation.value.err) { + throw new Error(`Transaction failed: ${confirmation.value.err}`); + } + + return { + status: "success", + signature, + mint: mintKeypair.publicKey.toBase58(), + metadataUri: metadataResult.metadataUri, + message: "Successfully launched token on Pump.fun" + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to launch token: ${error.message}` + }; + } + } +}; + +export default launchPumpfunTokenAction; \ No newline at end of file diff --git a/src/actions/lendAsset.ts b/src/actions/lendAsset.ts new file mode 100644 index 0000000..25e7258 --- /dev/null +++ b/src/actions/lendAsset.ts @@ -0,0 +1,101 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { VersionedTransaction } from "@solana/web3.js"; + +const lendAssetAction: Action = { + name: "solana_lend_asset", + similes: [ + "lend usdc", + "deposit for yield", + "earn yield", + "lend with lulo", + "deposit usdc", + "lending" + ], + description: "Lend USDC tokens to earn yield using Lulo protocol", + examples: [ + [ + { + input: { + amount: 100 + }, + output: { + status: "success", + signature: "4xKpN2...", + message: "Successfully lent 100 USDC" + }, + explanation: "Lend 100 USDC to earn yield on Lulo" + } + ] + ], + schema: z.object({ + amount: z.number() + .positive() + .describe("Amount of USDC to lend") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const amount = input.amount as number; + + const response = await fetch( + `https://blink.lulo.fi/actions?amount=${amount}&symbol=USDC`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + }), + } + ); + + if (!response.ok) { + return { + status: "error", + message: `Failed to get lending transaction: ${response.statusText}` + }; + } + + const data = await response.json(); + + // Deserialize the transaction + const luloTxn = VersionedTransaction.deserialize( + Buffer.from(data.transaction, "base64") + ); + + // Get a recent blockhash and set it + const { blockhash } = await agent.connection.getLatestBlockhash(); + luloTxn.message.recentBlockhash = blockhash; + + // Sign and send transaction + luloTxn.sign([agent.wallet]); + const signature = await agent.connection.sendTransaction(luloTxn, { + preflightCommitment: "confirmed", + maxRetries: 3, + }); + + // Wait for confirmation + const latestBlockhash = await agent.connection.getLatestBlockhash(); + await agent.connection.confirmTransaction({ + signature, + blockhash: latestBlockhash.blockhash, + lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, + }); + + return { + status: "success", + signature, + message: `Successfully lent ${amount} USDC` + }; + } catch (error: any) { + return { + status: "error", + message: `Lending failed: ${error.message}` + }; + } + } +}; + +export default lendAssetAction; \ No newline at end of file diff --git a/src/actions/pythFetchPrice.ts b/src/actions/pythFetchPrice.ts new file mode 100644 index 0000000..acafeb0 --- /dev/null +++ b/src/actions/pythFetchPrice.ts @@ -0,0 +1,78 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { PriceServiceConnection } from "@pythnetwork/price-service-client"; +import BN from "bn.js"; + +const pythFetchPriceAction: Action = { + name: "solana_pyth_fetch_price", + similes: [ + "get pyth price", + "check pyth price", + "pyth oracle price", + "fetch from pyth", + "pyth price feed", + "oracle price" + ], + description: "Fetch the current price from a Pyth oracle price feed", + examples: [ + [ + { + input: { + priceFeedId: "Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD" // SOL/USD price feed + }, + output: { + status: "success", + price: "23.45", + message: "Current price: $23.45" + }, + explanation: "Get the current SOL/USD price from Pyth oracle" + } + ] + ], + schema: z.object({ + priceFeedId: z.string() + .min(1) + .describe("The Pyth price feed ID to fetch the price from") + }), + handler: async (_agent: SolanaAgentKit, input: Record) => { + try { + const priceFeedId = input.priceFeedId as string; + + // Connect to Hermes service + const stableHermesServiceUrl = "https://hermes.pyth.network"; + const connection = new PriceServiceConnection(stableHermesServiceUrl); + const feeds = [priceFeedId]; + + const currentPrice = await connection.getLatestPriceFeeds(feeds); + + if (!currentPrice || currentPrice.length === 0) { + return { + status: "error", + message: "Price data not available for the given feed ID" + }; + } + + // Get price and exponent from price feed + const price = new BN(currentPrice[0].getPriceUnchecked().price); + const exponent = new BN(currentPrice[0].getPriceUnchecked().expo); + + // Convert to scaled price + const scaledPrice = price.div(new BN(10).pow(exponent)); + const priceStr = scaledPrice.toString(); + + return { + status: "success", + price: priceStr, + message: `Current price: $${priceStr}` + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to fetch price from Pyth: ${error.message}` + }; + } + } +}; + +export default pythFetchPriceAction; \ No newline at end of file diff --git a/src/actions/raydiumCreateAmmV4.ts b/src/actions/raydiumCreateAmmV4.ts new file mode 100644 index 0000000..6c4c357 --- /dev/null +++ b/src/actions/raydiumCreateAmmV4.ts @@ -0,0 +1,154 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { + AMM_V4, + FEE_DESTINATION_ID, + MARKET_STATE_LAYOUT_V3, + OPEN_BOOK_PROGRAM, + Raydium, + TxVersion, +} from "@raydium-io/raydium-sdk-v2"; +import { MintLayout, TOKEN_PROGRAM_ID } from "@solana/spl-token"; +import { PublicKey } from "@solana/web3.js"; +import BN from "bn.js"; + +const raydiumCreateAmmV4Action: Action = { + name: "solana_raydium_create_amm_v4", + similes: [ + "create raydium v4 pool", + "setup raydium v4 liquidity pool", + "initialize raydium v4 amm", + "create raydium v4 market maker", + "setup raydium v4 pool", + "create raydium v4 trading pair" + ], + description: "Create a new AMM V4 pool on Raydium with advanced features and improved efficiency", + examples: [ + [ + { + input: { + baseMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", // USDC + quoteMint: "So11111111111111111111111111111111111111112", // SOL + baseAmount: 1000, + quoteAmount: 10, + startPrice: 100, // 1 SOL = 100 USDC + openTime: 1672531200 // Unix timestamp + }, + output: { + status: "success", + signature: "2ZE7Rz...", + poolId: "7nxQB...", + message: "Successfully created Raydium AMM V4 pool" + }, + explanation: "Create a USDC-SOL V4 pool with initial liquidity and price" + } + ] + ], + schema: z.object({ + baseMint: z.string() + .min(1) + .describe("The base token mint address"), + quoteMint: z.string() + .min(1) + .describe("The quote token mint address"), + baseAmount: z.number() + .positive() + .describe("Initial base token amount to provide as liquidity"), + quoteAmount: z.number() + .positive() + .describe("Initial quote token amount to provide as liquidity"), + startPrice: z.number() + .positive() + .describe("Initial price of quote token in base token units"), + openTime: z.number() + .positive() + .describe("Unix timestamp when trading should start") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const marketId = new PublicKey(input.marketId); + const baseAmount = new BN(input.baseAmount); + const quoteAmount = new BN(input.quoteAmount); + const startTime = new BN(input.startTime); + + const raydium = await Raydium.load({ + owner: agent.wallet, + connection: agent.connection, + }); + + const marketBufferInfo = await agent.connection.getAccountInfo( + new PublicKey(marketId), + ); + const { baseMint, quoteMint } = MARKET_STATE_LAYOUT_V3.decode( + marketBufferInfo!.data, + ); + + const baseMintInfo = await agent.connection.getAccountInfo(baseMint); + const quoteMintInfo = await agent.connection.getAccountInfo(quoteMint); + + if ( + baseMintInfo?.owner.toString() !== TOKEN_PROGRAM_ID.toBase58() || + quoteMintInfo?.owner.toString() !== TOKEN_PROGRAM_ID.toBase58() + ) { + throw new Error( + "amm pools with openbook market only support TOKEN_PROGRAM_ID mints, if you want to create pool with token-2022, please create cpmm pool instead", + ); + } + + if ( + baseAmount + .mul(quoteAmount) + .lte( + new BN(1) + .mul(new BN(10 ** MintLayout.decode(baseMintInfo.data).decimals)) + .pow(new BN(2)), + ) + ) { + throw new Error( + "initial liquidity too low, try adding more baseAmount/quoteAmount", + ); + } + + const { execute } = await raydium.liquidity.createPoolV4({ + programId: AMM_V4, + marketInfo: { + marketId, + programId: OPEN_BOOK_PROGRAM, + }, + baseMintInfo: { + mint: baseMint, + decimals: MintLayout.decode(baseMintInfo.data).decimals, + }, + quoteMintInfo: { + mint: quoteMint, + decimals: MintLayout.decode(quoteMintInfo.data).decimals, + }, + baseAmount, + quoteAmount, + startTime, + ownerInfo: { + useSOLBalance: true, + }, + associatedOnly: false, + txVersion: TxVersion.V0, + feeDestinationId: FEE_DESTINATION_ID, + }); + + const { txId } = await execute({ sendAndConfirm: true }); + + return { + status: "success", + signature: txId, + message: "Successfully created Raydium AMM V4 pool" + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to create AMM V4 pool: ${error.message}` + }; + } + } +}; + +export default raydiumCreateAmmV4Action; \ No newline at end of file diff --git a/src/actions/raydiumCreateCpmm.ts b/src/actions/raydiumCreateCpmm.ts new file mode 100644 index 0000000..faea973 --- /dev/null +++ b/src/actions/raydiumCreateCpmm.ts @@ -0,0 +1,142 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { + CREATE_CPMM_POOL_FEE_ACC, + CREATE_CPMM_POOL_PROGRAM, + Raydium, + TxVersion, +} from "@raydium-io/raydium-sdk-v2"; +import { MintLayout } from "@solana/spl-token"; +import { PublicKey } from "@solana/web3.js"; +import BN from "bn.js"; + +const raydiumCreateCpmmAction: Action = { + name: "solana_raydium_create_cpmm", + similes: [ + "create raydium pool", + "setup raydium liquidity pool", + "initialize raydium amm", + "create constant product market maker", + "setup raydium cpmm", + "create raydium trading pair" + ], + description: "Create a new Constant Product Market Maker (CPMM) pool on Raydium", + examples: [ + [ + { + input: { + baseMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", // USDC + quoteMint: "So11111111111111111111111111111111111111112", // SOL + baseAmount: 1000, + quoteAmount: 10, + startTime: 1672531200 // Unix timestamp + }, + output: { + status: "success", + signature: "2ZE7Rz...", + poolId: "7nxQB...", + message: "Successfully created Raydium CPMM pool" + }, + explanation: "Create a USDC-SOL pool with initial liquidity of 1000 USDC and 10 SOL" + } + ] + ], + schema: z.object({ + baseMint: z.string() + .min(1) + .describe("The base token mint address"), + quoteMint: z.string() + .min(1) + .describe("The quote token mint address"), + baseAmount: z.number() + .positive() + .describe("Initial base token amount to provide as liquidity"), + quoteAmount: z.number() + .positive() + .describe("Initial quote token amount to provide as liquidity"), + startTime: z.number() + .positive() + .describe("Unix timestamp when trading should start") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const mintA = new PublicKey(input.baseMint); + const mintB = new PublicKey(input.quoteMint); + const configId = new PublicKey(input.configId); + const mintAAmount = new BN(input.baseAmount); + const mintBAmount = new BN(input.quoteAmount); + const startTime = new BN(input.startTime); + + const raydium = await Raydium.load({ + owner: agent.wallet, + connection: agent.connection, + }); + + const [mintInfoA, mintInfoB] = await agent.connection.getMultipleAccountsInfo( + [mintA, mintB], + ); + if (mintInfoA === null || mintInfoB === null) { + throw Error("fetch mint info error"); + } + + const mintDecodeInfoA = MintLayout.decode(mintInfoA.data); + const mintDecodeInfoB = MintLayout.decode(mintInfoB.data); + + const mintFormatInfoA = { + chainId: 101, + address: mintA.toString(), + programId: mintInfoA.owner.toString(), + logoURI: "", + symbol: "", + name: "", + decimals: mintDecodeInfoA.decimals, + tags: [], + extensions: {}, + }; + const mintFormatInfoB = { + chainId: 101, + address: mintB.toString(), + programId: mintInfoB.owner.toString(), + logoURI: "", + symbol: "", + name: "", + decimals: mintDecodeInfoB.decimals, + tags: [], + extensions: {}, + }; + + const { execute } = await raydium.cpmm.createPool({ + programId: CREATE_CPMM_POOL_PROGRAM, + poolFeeAccount: CREATE_CPMM_POOL_FEE_ACC, + mintA: mintFormatInfoA, + mintB: mintFormatInfoB, + mintAAmount, + mintBAmount, + startTime, + //@ts-expect-error sdk bug + feeConfig: { id: configId.toString() }, + associatedOnly: false, + ownerInfo: { + useSOLBalance: true, + }, + txVersion: TxVersion.V0, + }); + + const { txId } = await execute({ sendAndConfirm: true }); + + return { + status: "success", + signature: txId, + message: "Successfully created Raydium CPMM pool" + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to create CPMM pool: ${error.message}` + }; + } + } +}; + +export default raydiumCreateCpmmAction; \ No newline at end of file diff --git a/src/actions/registerDomain.ts b/src/actions/registerDomain.ts new file mode 100644 index 0000000..02b92d3 --- /dev/null +++ b/src/actions/registerDomain.ts @@ -0,0 +1,110 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { Transaction } from "@solana/web3.js"; +import { registerDomainNameV2 } from "@bonfida/spl-name-service"; +import { getAssociatedTokenAddressSync } from "@solana/spl-token"; +import { TOKENS } from "../constants"; + +const registerDomainAction: Action = { + name: "solana_register_domain", + similes: [ + "register domain", + "buy domain", + "get domain name", + "register .sol", + "purchase domain", + "domain registration" + ], + description: "Register a .sol domain name using Bonfida Name Service", + examples: [ + [ + { + input: { + name: "mydomain", + spaceKB: 1 + }, + output: { + status: "success", + signature: "2ZE7Rz...", + message: "Successfully registered mydomain.sol" + }, + explanation: "Register a new .sol domain with 1KB storage space" + } + ] + ], + schema: z.object({ + name: z.string() + .min(1) + .describe("Domain name to register (without .sol)"), + spaceKB: z.number() + .min(1) + .max(10) + .default(1) + .describe("Space allocation in KB (max 10KB)") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const name = input.name as string; + const spaceKB = (input.spaceKB as number) || 1; + + // Validate space size + if (spaceKB > 10) { + return { + status: "error", + message: "Maximum domain size is 10KB" + }; + } + + // Convert KB to bytes + const space = spaceKB * 1_000; + + const buyerTokenAccount = await getAssociatedTokenAddressSync( + agent.wallet_address, + TOKENS.USDC + ); + + // Create registration instruction + const instruction = await registerDomainNameV2( + agent.connection, + name, + space, + agent.wallet_address, + buyerTokenAccount + ); + + // Create and sign transaction + const transaction = new Transaction().add(...instruction); + transaction.recentBlockhash = ( + await agent.connection.getLatestBlockhash() + ).blockhash; + transaction.feePayer = agent.wallet_address; + + // Sign and send transaction + const signature = await agent.connection.sendTransaction(transaction, [ + agent.wallet + ]); + + // Wait for confirmation + const latestBlockhash = await agent.connection.getLatestBlockhash(); + await agent.connection.confirmTransaction({ + signature, + blockhash: latestBlockhash.blockhash, + lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, + }); + + return { + status: "success", + signature, + message: `Successfully registered ${name}.sol` + }; + } catch (error: any) { + return { + status: "error", + message: `Domain registration failed: ${error.message}` + }; + } + } +}; + +export default registerDomainAction; \ No newline at end of file diff --git a/src/actions/resolveDomain.ts b/src/actions/resolveDomain.ts new file mode 100644 index 0000000..049c3df --- /dev/null +++ b/src/actions/resolveDomain.ts @@ -0,0 +1,61 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { TldParser } from "@onsol/tldparser"; + +const resolveDomainAction: Action = { + name: "solana_resolve_domain", + similes: [ + "resolve domain", + "lookup domain", + "get domain owner", + "check domain", + "find domain owner" + ], + description: "Resolve a Solana domain name to get its owner's public key", + examples: [ + [ + { + input: { + domain: "example.sol" + }, + output: { + status: "success", + owner: "7nxQB..." + }, + explanation: "Resolve a .sol domain name to get the owner's public key" + } + ] + ], + schema: z.object({ + domain: z.string().min(1).describe("The domain name to resolve") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const domain = input.domain as string; + const tld = await new TldParser(agent.connection).getOwnerFromDomainTld( + domain + ); + + if (!tld) { + return { + status: "error", + message: "Domain not found" + }; + } + + return { + status: "success", + owner: tld.toBase58(), + message: `Successfully resolved domain ${domain}` + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to resolve domain: ${error.message}` + }; + } + } +}; + +export default resolveDomainAction; \ No newline at end of file diff --git a/src/actions/resolveSolDomain.ts b/src/actions/resolveSolDomain.ts new file mode 100644 index 0000000..481acef --- /dev/null +++ b/src/actions/resolveSolDomain.ts @@ -0,0 +1,69 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { resolve } from "@bonfida/spl-name-service"; + +const resolveSolDomainAction: Action = { + name: "solana_resolve_sol_domain", + similes: [ + "resolve sol domain", + "lookup sol domain", + "get sol domain owner", + "check sol domain", + "find sol domain owner", + "resolve .sol" + ], + description: "Resolve a .sol domain to its corresponding Solana wallet address using Bonfida Name Service", + examples: [ + [ + { + input: { + domain: "vitalik.sol" + }, + output: { + status: "success", + owner: "7nxQB...", + message: "Successfully resolved vitalik.sol" + }, + explanation: "Resolve a .sol domain to get the owner's wallet address" + } + ] + ], + schema: z.object({ + domain: z.string() + .min(1) + .describe("The .sol domain to resolve (with or without .sol suffix)") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const domain = input.domain as string; + + if (!domain || typeof domain !== "string") { + return { + status: "error", + message: "Invalid domain. Expected a non-empty string." + }; + } + + // Remove .sol suffix if present for consistent handling + const cleanDomain = domain.toLowerCase().endsWith(".sol") + ? domain.slice(0, -4) + : domain; + + const ownerAddress = await resolve(agent.connection, cleanDomain); + + return { + status: "success", + owner: ownerAddress.toBase58(), + message: `Successfully resolved ${cleanDomain}.sol` + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to resolve domain: ${error.message}` + }; + } + } +}; + +export default resolveSolDomainAction; \ No newline at end of file diff --git a/src/actions/stakeWithJup.ts b/src/actions/stakeWithJup.ts new file mode 100644 index 0000000..271f902 --- /dev/null +++ b/src/actions/stakeWithJup.ts @@ -0,0 +1,101 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { VersionedTransaction } from "@solana/web3.js"; + +const stakeWithJupAction: Action = { + name: "solana_stake_with_jup", + similes: [ + "stake sol", + "stake with jupiter", + "jup staking", + "stake with jup", + "liquid staking", + "get jupsol" + ], + description: "Stake SOL tokens with Jupiter's liquid staking protocol to receive jupSOL", + examples: [ + [ + { + input: { + amount: 1.5 + }, + output: { + status: "success", + signature: "5KtPn3...", + message: "Successfully staked 1.5 SOL for jupSOL" + }, + explanation: "Stake 1.5 SOL to receive jupSOL tokens" + } + ] + ], + schema: z.object({ + amount: z.number() + .positive() + .describe("Amount of SOL to stake") + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const amount = input.amount as number; + + // Get staking transaction from Jupiter + const res = await fetch( + `https://worker.jup.ag/blinks/swap/So11111111111111111111111111111111111111112/jupSoLaHXQiZZTSfEWMTRRgpnyFm8f6sZdosWBjx93v/${amount}`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + }), + } + ); + + if (!res.ok) { + return { + status: "error", + message: `Failed to get staking transaction: ${res.statusText}` + }; + } + + const data = await res.json(); + + // Deserialize and prepare transaction + const txn = VersionedTransaction.deserialize( + Buffer.from(data.transaction, "base64") + ); + + const { blockhash } = await agent.connection.getLatestBlockhash(); + txn.message.recentBlockhash = blockhash; + + // Sign and send transaction + txn.sign([agent.wallet]); + const signature = await agent.connection.sendTransaction(txn, { + preflightCommitment: "confirmed", + maxRetries: 3, + }); + + // Confirm transaction + const latestBlockhash = await agent.connection.getLatestBlockhash(); + await agent.connection.confirmTransaction({ + signature, + blockhash: latestBlockhash.blockhash, + lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, + }); + + return { + status: "success", + signature, + message: `Successfully staked ${amount} SOL for jupSOL` + }; + } catch (error: any) { + return { + status: "error", + message: `jupSOL staking failed: ${error.message}` + }; + } + } +}; + +export default stakeWithJupAction; \ No newline at end of file From 7976de50d7669e8b108ba0d3f0a677e49c5c6414 Mon Sep 17 00:00:00 2001 From: calintje Date: Sat, 28 Dec 2024 05:30:27 +0100 Subject: [PATCH 12/94] Add Orca tools. --- pnpm-lock.yaml | 121 ++++++++-------- src/agent/index.ts | 41 +++++- src/langchain/index.ts | 129 +++++++++++++++-- src/tools/index.ts | 4 +- src/tools/orca_create_clmm.ts | 117 +++++++++++++++ ...rca_create_single_sided_liquidity_pool.ts} | 75 ++++------ ...a_open_centered_position_with_liquidity.ts | 136 ++++++++++++++++++ src/tools/orca_open_single_sided_position.ts | 0 src/utils/send_tx.ts | 82 ++++++----- test/index.ts | 4 +- 10 files changed, 546 insertions(+), 163 deletions(-) create mode 100644 src/tools/orca_create_clmm.ts rename src/tools/{create_orca_single_sided_whirlpool.ts => orca_create_single_sided_liquidity_pool.ts} (88%) create mode 100644 src/tools/orca_open_centered_position_with_liquidity.ts create mode 100644 src/tools/orca_open_single_sided_position.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddfc583..1270412 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,7 +22,7 @@ importers: version: 0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) '@langchain/langgraph': specifier: ^0.2.27 - version: 0.2.34(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + version: 0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) '@langchain/openai': specifier: ^0.3.13 version: 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) @@ -91,7 +91,7 @@ importers: version: 4.0.1 langchain: specifier: ^0.3.6 - version: 0.3.7(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.9)(openai@4.77.0(zod@3.24.1)) + version: 0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.9)(openai@4.77.0(zod@3.24.1)) openai: specifier: ^4.75.0 version: 4.77.0(zod@3.24.1) @@ -235,8 +235,8 @@ packages: '@langchain/langgraph-sdk@0.0.32': resolution: {integrity: sha512-KQyM9kLO7T6AxwNrceajH7JOybP3pYpvUPnhiI2rrVndI1WyZUJ1eVC1e722BVRAPi6o+WcoTT4uMSZVinPOtA==} - '@langchain/langgraph@0.2.34': - resolution: {integrity: sha512-fSlmLYre+Skh5XJgBGe5YRtXaHyGMTlhu5UN3LzIgA3E9CmGODvH+Ydyk5vJzhXMjnPpLr8icqlKxKrYmZ3gTw==} + '@langchain/langgraph@0.2.36': + resolution: {integrity: sha512-zxk7ZCVxP0/Ut9785EiXCS7BE7sXd8cu943mcZUF2aNFUaQRTBbbiKpNdR3nb1+xO/B+HVktrJT2VFdkAywnng==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0' @@ -433,17 +433,17 @@ packages: '@scure/base@1.2.1': resolution: {integrity: sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==} - '@shikijs/core@1.24.3': - resolution: {integrity: sha512-VRcf4GYUIkxIchGM9DrapRcxtgojg4IWKUtX5EtW+4PJiGzF2xQqZSv27PJt+WLc18KT3CNLpNWow9JYV5n+Rg==} + '@shikijs/core@1.24.4': + resolution: {integrity: sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==} - '@shikijs/engine-javascript@1.24.3': - resolution: {integrity: sha512-De8tNLvYjeK6V0Gb47jIH2M+OKkw+lWnSV1j3HVDFMlNIglmVcTMG2fASc29W0zuFbfEEwKjO8Fe4KYSO6Ce3w==} + '@shikijs/engine-javascript@1.24.4': + resolution: {integrity: sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==} - '@shikijs/engine-oniguruma@1.24.3': - resolution: {integrity: sha512-iNnx950gs/5Nk+zrp1LuF+S+L7SKEhn8k9eXgFYPGhVshKppsYwRmW8tpmAMvILIMSDfrgqZ0w+3xWVQB//1Xw==} + '@shikijs/engine-oniguruma@1.24.4': + resolution: {integrity: sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==} - '@shikijs/types@1.24.3': - resolution: {integrity: sha512-FPMrJ69MNxhRtldRk69CghvaGlbbN3pKRuvko0zvbfa2dXp4pAngByToqS5OY5jvN8D7LKR4RJE8UvzlCOuViw==} + '@shikijs/types@1.24.4': + resolution: {integrity: sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==} '@shikijs/vscode-textmate@9.3.1': resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} @@ -908,8 +908,8 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.4.0: - resolution: {integrity: sha512-ZkD35Mx92acjB2yNJgziGqT9oKHEOxjTBTDRpOsRWtdecL/0jM3z5kM/CTzHWvHIen1GvkM85p6TuFfDGfc8/Q==} + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} character-entities-html4@2.1.0: @@ -953,8 +953,8 @@ packages: create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + cross-fetch@3.2.0: + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} @@ -1406,8 +1406,8 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - langchain@0.3.7: - resolution: {integrity: sha512-6/Gkk9Zez3HkbsETFxZVo1iKLmaK3OzkDseC5MYFKVmYFDXFAOyJR3srJ9P61xF8heVdsPixqYIsejBn7/9dXg==} + langchain@0.3.8: + resolution: {integrity: sha512-EiAHFgBdThuXFmIx9j81wjdPItpRsw0Ck4r5dyhB74gyhehRGna/UK2CTqeKVnIUM/f4g4JbxUgAU4voXljDMw==} engines: {node: '>=18'} peerDependencies: '@langchain/anthropic': '*' @@ -1452,8 +1452,8 @@ packages: typeorm: optional: true - langsmith@0.2.13: - resolution: {integrity: sha512-16EOM5nhU6GlMCKGm5sgBIAKOKzS2d30qcDZmF21kSLZJiUhUNTROwvYdqgZLrGfIIzmSMJHCKA7RFd5qf50uw==} + langsmith@0.2.14: + resolution: {integrity: sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==} peerDependencies: openai: '*' peerDependenciesMeta: @@ -1592,8 +1592,8 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - oniguruma-to-es@0.8.0: - resolution: {integrity: sha512-rY+/a6b+uCgoYIL9itjY0x99UUDHXmGaw7Jjk5ZvM/3cxDJifyxFr/Zm4tTmF6Tre18gAakJo7AzhKUeMNLgHA==} + oniguruma-to-es@0.8.1: + resolution: {integrity: sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==} openai@4.77.0: resolution: {integrity: sha512-WWacavtns/7pCUkOWvQIjyOfcdr9X+9n9Vvb0zFeKVDAqwCMDHB+iSr24SVaBAhplvSG6JrRXFpcNM9gWhOGIw==} @@ -1706,14 +1706,14 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regex-recursion@5.0.0: - resolution: {integrity: sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==} + regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@5.0.2: - resolution: {integrity: sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==} + regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -1758,8 +1758,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.24.3: - resolution: {integrity: sha512-eMeX/ehE2IDKVs71kB4zVcDHjutNcOtm+yIRuR4sA6ThBbdFI0DffGJiyoKCodj0xRGxIoWC3pk/Anmm5mzHmA==} + shiki@1.24.4: + resolution: {integrity: sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==} slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} @@ -2068,7 +2068,7 @@ snapshots: bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 6.3.0 - cross-fetch: 3.1.8 + cross-fetch: 3.2.0 crypto-hash: 1.3.0 eventemitter3: 4.0.7 pako: 2.1.0 @@ -2153,7 +2153,7 @@ snapshots: camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.16 - langsmith: 0.2.13(openai@4.77.0(zod@3.24.1)) + langsmith: 0.2.14(openai@4.77.0(zod@3.24.1)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -2185,7 +2185,7 @@ snapshots: p-retry: 4.6.2 uuid: 9.0.1 - '@langchain/langgraph@0.2.34(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + '@langchain/langgraph@0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': dependencies: '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) @@ -2463,27 +2463,27 @@ snapshots: '@scure/base@1.2.1': {} - '@shikijs/core@1.24.3': + '@shikijs/core@1.24.4': dependencies: - '@shikijs/engine-javascript': 1.24.3 - '@shikijs/engine-oniguruma': 1.24.3 - '@shikijs/types': 1.24.3 + '@shikijs/engine-javascript': 1.24.4 + '@shikijs/engine-oniguruma': 1.24.4 + '@shikijs/types': 1.24.4 '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 hast-util-to-html: 9.0.4 - '@shikijs/engine-javascript@1.24.3': + '@shikijs/engine-javascript@1.24.4': dependencies: - '@shikijs/types': 1.24.3 + '@shikijs/types': 1.24.4 '@shikijs/vscode-textmate': 9.3.1 - oniguruma-to-es: 0.8.0 + oniguruma-to-es: 0.8.1 - '@shikijs/engine-oniguruma@1.24.3': + '@shikijs/engine-oniguruma@1.24.4': dependencies: - '@shikijs/types': 1.24.3 + '@shikijs/types': 1.24.4 '@shikijs/vscode-textmate': 9.3.1 - '@shikijs/types@1.24.3': + '@shikijs/types@1.24.4': dependencies: '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 @@ -2613,18 +2613,18 @@ snapshots: '@solana/errors@2.0.0-preview.2': dependencies: - chalk: 5.4.0 + chalk: 5.4.1 commander: 12.1.0 '@solana/errors@2.0.0-preview.4(typescript@5.7.2)': dependencies: - chalk: 5.4.0 + chalk: 5.4.1 commander: 12.1.0 typescript: 5.7.2 '@solana/errors@2.0.0-rc.1(typescript@5.7.2)': dependencies: - chalk: 5.4.0 + chalk: 5.4.1 commander: 12.1.0 typescript: 5.7.2 @@ -3123,7 +3123,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.4.0: {} + chalk@5.4.1: {} character-entities-html4@2.1.0: {} @@ -3153,7 +3153,7 @@ snapshots: create-require@1.1.1: {} - cross-fetch@3.1.8: + cross-fetch@3.2.0: dependencies: node-fetch: 2.7.0 transitivePeerDependencies: @@ -3634,7 +3634,7 @@ snapshots: dependencies: json-buffer: 3.0.1 - langchain@0.3.7(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.9)(openai@4.77.0(zod@3.24.1)): + langchain@0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.9)(openai@4.77.0(zod@3.24.1)): dependencies: '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) @@ -3642,7 +3642,7 @@ snapshots: js-tiktoken: 1.0.16 js-yaml: 4.1.0 jsonpointer: 5.0.1 - langsmith: 0.2.13(openai@4.77.0(zod@3.24.1)) + langsmith: 0.2.14(openai@4.77.0(zod@3.24.1)) openapi-types: 12.1.3 p-retry: 4.6.2 uuid: 10.0.0 @@ -3656,7 +3656,7 @@ snapshots: - encoding - openai - langsmith@0.2.13(openai@4.77.0(zod@3.24.1)): + langsmith@0.2.14(openai@4.77.0(zod@3.24.1)): dependencies: '@types/uuid': 10.0.0 commander: 10.0.1 @@ -3801,11 +3801,11 @@ snapshots: dependencies: wrappy: 1.0.2 - oniguruma-to-es@0.8.0: + oniguruma-to-es@0.8.1: dependencies: emoji-regex-xs: 1.0.0 - regex: 5.0.2 - regex-recursion: 5.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 openai@4.77.0(zod@3.24.1): dependencies: @@ -3898,13 +3898,14 @@ snapshots: regenerator-runtime@0.14.1: {} - regex-recursion@5.0.0: + regex-recursion@5.1.1: dependencies: + regex: 5.1.1 regex-utilities: 2.3.0 regex-utilities@2.3.0: {} - regex@5.0.2: + regex@5.1.1: dependencies: regex-utilities: 2.3.0 @@ -3954,12 +3955,12 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.24.3: + shiki@1.24.4: dependencies: - '@shikijs/core': 1.24.3 - '@shikijs/engine-javascript': 1.24.3 - '@shikijs/engine-oniguruma': 1.24.3 - '@shikijs/types': 1.24.3 + '@shikijs/core': 1.24.4 + '@shikijs/engine-javascript': 1.24.4 + '@shikijs/engine-oniguruma': 1.24.4 + '@shikijs/types': 1.24.4 '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 @@ -4065,7 +4066,7 @@ snapshots: lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - shiki: 1.24.3 + shiki: 1.24.4 typescript: 5.7.2 yaml: 2.6.1 diff --git a/src/agent/index.ts b/src/agent/index.ts index 56f66f4..b39eaa7 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -24,10 +24,12 @@ import { getTokenDataByTicker, stakeWithJup, sendCompressedAirdrop, - createOrcaSingleSidedWhirlpool, + orcaCreateSingleSidedLiquidityPool, + orcaCreateCLMM, + orcaOpenCenteredPositionWithLiquidity, + FEE_TIERS, fetchPrice, pythFetchPrice, - FEE_TIERS, getAllDomainsTLDs, getAllRegisteredAllDomains, getOwnedDomainsForTLD, @@ -36,6 +38,7 @@ import { resolveAllDomains, create_gibwork_task, } from "../tools"; + import { CollectionDeployment, CollectionOptions, @@ -199,7 +202,22 @@ export class SolanaAgentKit { ); } - async createOrcaSingleSidedWhirlpool( + async orcaCreateCLMM( + mintA: PublicKey, + mintB: PublicKey, + initialPrice: Decimal, + feeTier: keyof typeof FEE_TIERS, + ) { + return orcaCreateCLMM( + this, + mintA, + mintB, + initialPrice, + feeTier, + ); + } + + async orcaCreateSingleSidedLiquidityPool( depositTokenAmount: BN, depositTokenMint: PublicKey, otherTokenMint: PublicKey, @@ -207,7 +225,7 @@ export class SolanaAgentKit { maxPrice: Decimal, feeTier: keyof typeof FEE_TIERS, ) { - return createOrcaSingleSidedWhirlpool( + return orcaCreateSingleSidedLiquidityPool( this, depositTokenAmount, depositTokenMint, @@ -218,6 +236,21 @@ export class SolanaAgentKit { ); } + async orcaOpenCenteredPositionWithLiquidity( + whirlpoolAddress: PublicKey, + priceOffsetBps: number, + inputTokenMint: PublicKey, + inputAmount: Decimal, + ) { + return orcaOpenCenteredPositionWithLiquidity( + this, + whirlpoolAddress, + priceOffsetBps, + inputTokenMint, + inputAmount, + ); + } + async resolveAllDomains(domain: string): Promise { return resolveAllDomains(this, domain); } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 2ec7389..21da295 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -754,17 +754,72 @@ export class SolanaCompressedAirdropTool extends Tool { } } -export class SolanaCreateSingleSidedWhirlpoolTool extends Tool { - name = "create_orca_single_sided_whirlpool"; - description = `Create a single-sided liquidity pools with liquidity on Orca. +export class SolanaOrcaCreateCLMM extends Tool { + name = "orca_create_clmm"; + description = `Create a Concentrated Liquidity Market Maker (CLMM) pool on Orca, the most efficient and capital-optimized CLMM on Solana. This function initializes a CLMM pool but does not add liquidity. You can add liquidity later using a centered position or a single-sided position. Single-sided positions are ideal for directional price expectations, acting as sort of a limit call. Centered positions are ideal for generating yield. The tighter, the better. - Inputs (input is a JSON string): - - depositTokenAmount: number, in units of deposit token including decimals, eg: 1000000000 (required) - - depositTokenMint: string, mint address of deposit token, eg: "DepositTokenMintAddress" (required) - - otherTokenMint: string, mint address of other token, eg: "OtherTokenMintAddress" (required) - - initialPrice: number, initial price of deposit token in terms of other token, eg: 0.001, (required) - - maxPrice: number, maximum price at which liquidity is added, eg: 5.0 (required) - - feeTier: number, fee tier for the pool in %. Possible values on mainnet are: 0.01, 0.02, 0.04, 0.05, 0.16, 0.30, 0.65, 1.0, 2.0 (required)`; + Inputs (JSON string): + - mintA: string, mint address of the first token, e.g., "MintAAddress" (required). + - mintB: string, mint address of the second token, e.g., "MintBAddress" (required). + - initialPrice: number, initial price of mintA in terms of mintB, e.g., 0.001 (required). + - feeTier: number, fee tier in bps. Options: 1, 2, 4, 5, 16, 30, 65, 100, 200 (required).`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + const mintA = new PublicKey(inputFormat.mintA); + const mintB = new PublicKey(inputFormat.mintB); + const initialPrice = new Decimal(inputFormat.initialPrice); + const feeTier = inputFormat.feeTier; + + if (!feeTier || !(feeTier in FEE_TIERS)) { + throw new Error( + `Invalid feeTier. Available options: ${Object.keys(FEE_TIERS).join( + ", ", + )}`, + ); + } + + const txId = await this.solanaKit.orcaCreateCLMM( + mintA, + mintB, + initialPrice, + feeTier, + ); + + return JSON.stringify({ + status: "success", + message: "CLMM pool created successfully. Note: No liquidity was added.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + + +export class SolanaOrcaCreateSingleSideLiquidityPool extends Tool { + name = "orca_create_single_sided_liquidity_pool"; + description = `Create a single-sided liquidity pool on Orca, the most efficient and capital-optimized CLMM platform on Solana. + + This function initializes a single-sided liquidity pool, ideal for community driven project, fair launches, and fundraising. Minimize price impact by setting a narrow price range. + + Inputs (JSON string): + - depositTokenAmount: number, in units of the deposit token including decimals, e.g., 1000000000 (required). + - depositTokenMint: string, mint address of the deposit token, e.g., "DepositTokenMintAddress" (required). + - otherTokenMint: string, mint address of the other token, e.g., "OtherTokenMintAddress" (required). + - initialPrice: number, initial price of the deposit token in terms of the other token, e.g., 0.001 (required). + - maxPrice: number, maximum price at which liquidity is added, e.g., 5.0 (required). + - feeTier: number, fee tier for the pool in bps. Options: 1, 2, 4, 5, 16, 30, 65, 100, 200 (required).`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -788,7 +843,7 @@ export class SolanaCreateSingleSidedWhirlpoolTool extends Tool { ); } - const txId = await this.solanaKit.createOrcaSingleSidedWhirlpool( + const txId = await this.solanaKit.orcaCreateSingleSidedLiquidityPool( depositTokenAmount, depositTokenMint, otherTokenMint, @@ -812,6 +867,54 @@ export class SolanaCreateSingleSidedWhirlpoolTool extends Tool { } } +export class SolanaOrcaOpenCenteredPosition extends Tool { + name = "orca_open_centered_position_with_liquidity"; + description = `Add liquidity to a CLMM by opening a position in an Orca Whirlpool, the most efficient CLMM on Solana for precise liquidity management. A tighter range concentrates more liquidity, increasing yield potential. This function calculates the required amount of the other token based on the input token and desired offset. Centered positions are ideal for optimizing returns within defined ranges. + + Inputs (JSON string): + - whirlpoolAddress: string, address of the Orca Whirlpool (required). + - priceOffsetBps: number, bps offset (one side) from the center price, e.g., 500 for 5% (required). + - inputTokenMint: string, mint address of the deposit token (required). + - inputAmount: number, amount of the deposit token, e.g., 100.0 (required).`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + const whirlpoolAddress = new PublicKey(inputFormat.whirlpoolAddress); + const priceOffsetBps = parseInt(inputFormat.priceOffsetBps, 10); + const inputTokenMint = new PublicKey(inputFormat.inputTokenMint); + const inputAmount = new Decimal(inputFormat.inputAmount); + + if (priceOffsetBps <= 0 || priceOffsetBps > 10_000) { + throw new Error("Invalid priceOffsetBps. It must be greater than 0 and less than or equal to 10,000."); + } + + const txId = await this.solanaKit.orcaOpenCenteredPositionWithLiquidity( + whirlpoolAddress, + priceOffsetBps, + inputTokenMint, + inputAmount, + ); + + return JSON.stringify({ + status: "success", + message: "Centered liquidity position opened successfully.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + export class SolanaRaydiumCreateAmmV4 extends Tool { name = "raydium_create_ammV4"; description = `Raydium's Legacy AMM that requiers an OpenBook marketID @@ -1254,7 +1357,9 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaRaydiumCreateClmm(solanaKit), new SolanaRaydiumCreateCpmm(solanaKit), new SolanaOpenbookCreateMarket(solanaKit), - new SolanaCreateSingleSidedWhirlpoolTool(solanaKit), + new SolanaOrcaCreateCLMM(solanaKit), + new SolanaOrcaCreateSingleSideLiquidityPool(solanaKit), + new SolanaOrcaOpenCenteredPosition(solanaKit), new SolanaPythFetchPrice(solanaKit), new SolanaResolveDomainTool(solanaKit), new SolanaGetOwnedDomains(solanaKit), diff --git a/src/tools/index.ts b/src/tools/index.ts index 9a18cf4..a87f931 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -15,7 +15,9 @@ export * from "./get_token_data"; export * from "./stake_with_jup"; export * from "./fetch_price"; export * from "./send_compressed_airdrop"; -export * from "./create_orca_single_sided_whirlpool"; +export * from "./orca_create_clmm"; +export * from "./orca_create_single_sided_liquidity_pool"; +export * from "./orca_open_centered_position_with_liquidity"; export * from "./get_all_domains_tlds"; export * from "./get_all_registered_all_domains"; export * from "./get_owned_domains_for_tld"; diff --git a/src/tools/orca_create_clmm.ts b/src/tools/orca_create_clmm.ts new file mode 100644 index 0000000..4b6d465 --- /dev/null +++ b/src/tools/orca_create_clmm.ts @@ -0,0 +1,117 @@ +import { Keypair, PublicKey, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; +import { SolanaAgentKit } from "../agent"; +import { Wallet } from "@coral-xyz/anchor"; +import { Decimal } from "decimal.js"; +import { + ORCA_WHIRLPOOL_PROGRAM_ID, + WhirlpoolContext, + PriceMath, + PoolUtil, + buildWhirlpoolClient, +} from "@orca-so/whirlpools-sdk"; + +import { sendTx } from "../utils/send_tx"; +import { FEE_TIERS } from "./orca_create_single_sided_liquidity_pool"; + +/** + * # Creates a CLMM Pool (Concentrated Liquidity Market Maker Pool). + * + * This function initializes a new Whirlpool (CLMM Pool) on Orca. It only sets up the pool and does not seed it with liquidity. + * + * ## Example Usage: + * Suppose you want to create a CLMM pool with two tokens, SHARK and USDC, and set the initial price of SHARK to 0.001 USDC. + * You would call this function with `mintA` as SHARK's mint address and `mintB` as USDC's mint address. The pool is created + * with the specified fee tier and tick spacing associated with that fee tier. + * + * ### Note for Experts: + * The Whirlpool program determines the token mint order, which might not match your expectation. This function + * adjusts the input order as needed and inverts the initial price accordingly. + * + * @param agent - The `SolanaAgentKit` instance representing the wallet and connection details. + * @param mintA - The mint address of the first token in the pool (e.g., SHARK). + * @param mintB - The mint address of the second token in the pool (e.g., USDC). + * @param initialPrice - The initial price of `mintA` in terms of `mintB`. + * @param feeTier - The fee tier bps for the pool, determining tick spacing and fee collection rates. + * + * @returns A promise that resolves to a transaction ID (`string`) of the transaction creating the pool. + * + * @throws Will throw an error if: + * - Mint accounts for the tokens cannot be fetched. + * - The network is unsupported. + * + * @remarks + * This function only initializes the CLMM pool and does not add liquidity. For adding liquidity, you can use + * a separate function after the pool is successfully created. + * ``` + */ +export async function orcaCreateCLMM( + agent: SolanaAgentKit, + mintA: PublicKey, + mintB: PublicKey, + initialPrice: Decimal, + feeTier: keyof typeof FEE_TIERS, +): Promise { + try { + let whirlpoolsConfigAddress: PublicKey; + if (agent.connection.rpcEndpoint.includes('mainnet')) { + whirlpoolsConfigAddress = new PublicKey('2LecshUwdy9xi7meFgHtFJQNSKk4KdTrcpvaB56dP2NQ'); + } else if (agent.connection.rpcEndpoint.includes('devnet')) { + whirlpoolsConfigAddress = new PublicKey('FcrweFY1G9HJAHG5inkGB6pKg1HZ6x9UC2WioAfWrGkR'); + } else { + throw new Error('Unsupported network'); + } + const wallet = new Wallet(agent.wallet); + const ctx = WhirlpoolContext.from( + agent.connection, + wallet, + ORCA_WHIRLPOOL_PROGRAM_ID, + ); + const fetcher = ctx.fetcher; + const client = buildWhirlpoolClient(ctx) + + const correctTokenOrder = PoolUtil.orderMints( + mintA, + mintB, + ).map((addr) => addr.toString()); + const isCorrectMintOrder = + correctTokenOrder[0] === mintA.toString(); + if (!isCorrectMintOrder) { + [mintA, mintB] = [mintB, mintA]; + initialPrice = new Decimal(1 / initialPrice.toNumber()); + } + const mintAAccount = await fetcher.getMintInfo(mintA); + const mintBAccount = await fetcher.getMintInfo(mintB); + if (mintAAccount === null || mintBAccount === null) { + throw Error("Mint account not found"); + } + + const initialTick = PriceMath.priceToTickIndex(initialPrice, mintAAccount.decimals, mintBAccount.decimals) + const tickSpacing = FEE_TIERS[feeTier]; + + const { poolKey, tx: txBuilder } = await client.createPool( + whirlpoolsConfigAddress, + mintA, + mintB, + tickSpacing, + initialTick, + wallet.publicKey, + ) + + const txPayload = await txBuilder.build(); + const txPayloadDecompiled = TransactionMessage.decompile((txPayload.transaction as VersionedTransaction).message); + const instructions = txPayloadDecompiled.instructions; + + const txId = await sendTx( + agent, + instructions, + txPayload.signers as Keypair[] + ); + return JSON.stringify({ + transactionId: txId, + whirlpoolAddress: poolKey.toString(), + }); + } catch (error) { + console.log(error) + throw new Error(`${error}`); + } +} \ No newline at end of file diff --git a/src/tools/create_orca_single_sided_whirlpool.ts b/src/tools/orca_create_single_sided_liquidity_pool.ts similarity index 88% rename from src/tools/create_orca_single_sided_whirlpool.ts rename to src/tools/orca_create_single_sided_liquidity_pool.ts index b861c94..932f119 100644 --- a/src/tools/create_orca_single_sided_whirlpool.ts +++ b/src/tools/orca_create_single_sided_liquidity_pool.ts @@ -1,4 +1,9 @@ -import { Keypair, PublicKey, Transaction, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; +import { + Keypair, + PublicKey, + TransactionMessage, + VersionedTransaction +} from "@solana/web3.js"; import { SolanaAgentKit } from "../agent"; import { BN, Wallet } from "@coral-xyz/anchor"; import { Decimal } from "decimal.js"; @@ -34,7 +39,7 @@ import { import { sendTx } from "../utils/send_tx"; /** - * Maps fee tier percentages to their corresponding tick spacing values in the Orca Whirlpool protocol. + * Maps fee tier bps to their corresponding tick spacing values in the Orca Whirlpool protocol. * * @remarks * Fee tiers determine the percentage of fees collected on swaps, while tick spacing affects @@ -45,22 +50,22 @@ import { sendTx } from "../utils/send_tx"; * - [Whirlpool Parameters](https://orca-so.github.io/whirlpools/Architecture%20Overview/Whirlpool%20Parameters) * * @example - * const tickSpacing = FEE_TIERS[0.30]; // Returns 64 + * const tickSpacing = FEE_TIERS[1]; // returns 1 */ export const FEE_TIERS = { - 0.01: 1, - 0.02: 2, - 0.04: 4, - 0.05: 8, - 0.16: 16, - 0.3: 64, - 0.65: 96, - 1.0: 128, - 2.0: 256, + 1: 1, + 2: 2, + 4: 4, + 5: 8, + 16: 16, + 30: 64, + 65: 96, + 100: 128, + 200: 256, } as const; /** - * # Creates a single-sided Whirlpool. + * # Creates a single-sided liquidity pool. * * This function initializes a new Whirlpool (liquidity pool) on Orca and seeds it with liquidity from a single token. * @@ -84,7 +89,7 @@ export const FEE_TIERS = { * @param otherTokenMint - The mint address of the other token in the pool, eg. USDC. * @param initialPrice - The initial price of the deposit token in terms of the other token. * @param maxPrice - The maximum price at which liquidity is added. - * @param feeTier - The fee tier percentage for the pool, determining tick spacing and fee collection rates. + * @param feeTier - The fee tier bps for the pool, determining tick spacing and fee collection rates. * * @returns A promise that resolves to a transaction ID (`string`) of the transaction creating the pool. * @@ -95,42 +100,15 @@ export const FEE_TIERS = { * @remarks * This function is designed for single-sided deposits where users only contribute one type of token, * and the function manages mint order and necessary calculations. - * - * @example - * ```typescript - * import { SolanaAgentKit } from "your-sdk"; - * import { PublicKey } from "@solana/web3.js"; - * import { BN } from "@coral-xyz/anchor"; - * import Decimal from "decimal.js"; - * - * const agent = new SolanaAgentKit(wallet, connection); - * const depositAmount = new BN(1_000_000_000_000); // 1 million SHARK if SHARK has 6 decimals - * const depositTokenMint = new PublicKey("DEPOSTI_TOKEN_ADDRESS"); - * const otherTokenMint = new PublicKey("OTHER_TOKEN_ADDRESS"); - * const initialPrice = new Decimal(0.001); - * const maxPrice = new Decimal(5.0); - * const feeTier = 0.02; - * - * const txId = await createOrcaSingleSidedWhirlpool( - * agent, - * depositAmount, - * depositTokenMint, - * otherTokenMint, - * initialPrice, - * maxPrice, - * feeTier, - * ); - * console.log(`Single sided whirlpool created in transaction: ${txId}`); - * ``` */ -export async function createOrcaSingleSidedWhirlpool( +export async function orcaCreateSingleSidedLiquidityPool( agent: SolanaAgentKit, depositTokenAmount: BN, depositTokenMint: PublicKey, otherTokenMint: PublicKey, initialPrice: Decimal, maxPrice: Decimal, - feeTier: keyof typeof FEE_TIERS, + feeTierBps: keyof typeof FEE_TIERS, ): Promise { let whirlpoolsConfigAddress: PublicKey; if (agent.connection.rpcEndpoint.includes('mainnet')) { @@ -167,7 +145,7 @@ export async function createOrcaSingleSidedWhirlpool( if (mintAAccount === null || mintBAccount === null) { throw Error("Mint account not found"); } - const tickSpacing = FEE_TIERS[feeTier]; + const tickSpacing = FEE_TIERS[feeTierBps]; const tickIndex = PriceMath.priceToTickIndex( initialPrice, mintAAccount.decimals, @@ -196,7 +174,7 @@ export async function createOrcaSingleSidedWhirlpool( whirlpoolsConfigAddress, mintA, mintB, - FEE_TIERS[feeTier], + FEE_TIERS[feeTierBps], ); const tokenBadgeA = PDAUtil.getTokenBadge( ORCA_WHIRLPOOL_PROGRAM_ID, @@ -419,7 +397,8 @@ export async function createOrcaSingleSidedWhirlpool( const txPayload = await txBuilder.build(); const instructions = TransactionMessage.decompile( - (txPayload.transaction as VersionedTransaction).message).instructions + (txPayload.transaction as VersionedTransaction).message, + ).instructions; try { const txId = await sendTx( @@ -429,6 +408,6 @@ export async function createOrcaSingleSidedWhirlpool( ); return txId; } catch (error) { - throw new Error(`Failed to create pool: ${JSON.stringify(error)}`); + throw new Error(`Failed to send transaction: ${JSON.stringify(error)}`); } -} +} \ No newline at end of file diff --git a/src/tools/orca_open_centered_position_with_liquidity.ts b/src/tools/orca_open_centered_position_with_liquidity.ts new file mode 100644 index 0000000..de89a28 --- /dev/null +++ b/src/tools/orca_open_centered_position_with_liquidity.ts @@ -0,0 +1,136 @@ +import { Keypair, PublicKey, TransactionInstruction, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; +import { SolanaAgentKit } from "../agent"; +import { Wallet } from "@coral-xyz/anchor"; +import { Decimal } from "decimal.js"; +import { + ORCA_WHIRLPOOL_PROGRAM_ID, + WhirlpoolContext, + PriceMath, + buildWhirlpoolClient, + increaseLiquidityQuoteByInputToken, + TokenExtensionContextForPool, + NO_TOKEN_EXTENSION_CONTEXT, +} from "@orca-so/whirlpools-sdk"; + +import { sendTx } from "../utils/send_tx"; +import { Percentage } from "@orca-so/common-sdk"; + +/** + * # Opens a Centered Liquidity Position in an Orca Whirlpool + * + * This function opens a centered liquidity position in a specified Orca Whirlpool. The user defines + * a basis point (bps) offset from the center price to set the lower and upper bounds of the position. + * The user also specifies the token mint and the amount to deposit. The required amount of the other token + * is calculated automatically. + * + * ## Parameters + * - `agent`: The `SolanaAgentKit` instance representing the wallet and connection details. + * - `whirlpoolAddress`: The address of the Orca Whirlpool where the position will be opened. + * - `priceOffsetBps`: The basis point (bps) offset (on one side) from the center price. For example, + * 500 bps (5%) creates a range from 95% to 105% of the center price. + * - `inputTokenMint`: The mint address of the token being deposited (e.g., USDC or another token). + * - `inputAmount`: The amount of the input token to deposit, specified as a `Decimal` value. + * + * ## Returns + * A `Promise` that resolves to the transaction ID (`string`) of the transaction that opens the position. + * + * ## Notes + * - The `priceOffsetBps` specifies the range symmetrically around the current price. + * - The specified `inputTokenMint` determines which token is deposited directly. The function calculates + * the required amount of the other token based on the specified price range. + * - This function supports Orca's token extensions for managing tokens with special behaviors. + * - The function assumes a maximum slippage of 1% for liquidity provision. + * + * ## Throws + * An error will be thrown if: + * - The specified Whirlpool address is invalid or inaccessible. + * - The transaction fails to send. + * - Any required mint information cannot be fetched. + * + * @param agent - The `SolanaAgentKit` instance representing the wallet and connection. + * @param whirlpoolAddress - The address of the Orca Whirlpool. + * @param priceOffsetBps - The basis point offset (one side) from the center price. + * @param inputTokenMint - The mint address of the token to deposit. + * @param inputAmount - The amount of the input token to deposit. + * @returns A promise resolving to the transaction ID (`string`). + */ +export async function orcaOpenCenteredPositionWithLiquidity( + agent: SolanaAgentKit, + whirlpoolAddress: PublicKey, + priceOffsetBps: number, + inputTokenMint: PublicKey, + inputAmount: Decimal, +): Promise { + try { + const wallet = new Wallet(agent.wallet); + const ctx = WhirlpoolContext.from( + agent.connection, + wallet, + ORCA_WHIRLPOOL_PROGRAM_ID, + ); + const client = buildWhirlpoolClient(ctx) + + const whirlpool = await client.getPool(whirlpoolAddress); + const mintInfoA = whirlpool.getTokenAInfo() + const mintInfoB = whirlpool.getTokenBInfo() + const price = PriceMath.sqrtPriceX64ToPrice( + whirlpool.getData().sqrtPrice, + mintInfoA.decimals, + mintInfoB.decimals + ) + + const lowerPrice = price.mul(1 - priceOffsetBps / 10000) + const upperPrice = price.mul(1 + priceOffsetBps / 10000) + const lowerTick = PriceMath.priceToTickIndex(lowerPrice, mintInfoA.decimals, mintInfoB.decimals) + const upperTick = PriceMath.priceToTickIndex(upperPrice, mintInfoA.decimals, mintInfoB.decimals) + + const txBuilderTickArrays = await whirlpool.initTickArrayForTicks([lowerTick, upperTick]) + let instructions: TransactionInstruction[] = [] + let signers: Keypair[] = [] + if (txBuilderTickArrays !== null) { + const txPayloadTickArrays = await txBuilderTickArrays.build(); + const txPayloadTickArraysDecompiled = TransactionMessage.decompile((txPayloadTickArrays.transaction as VersionedTransaction).message); + const instructionsTickArrays = txPayloadTickArraysDecompiled.instructions; + instructions = instructions.concat(instructionsTickArrays); + signers = signers.concat(txPayloadTickArrays.signers as Keypair[]); + } + + const tokenExtensionCtx: TokenExtensionContextForPool = { + ...NO_TOKEN_EXTENSION_CONTEXT, + tokenMintWithProgramA: mintInfoA, + tokenMintWithProgramB: mintInfoB, + }; + const increaseLiquiditQuote = increaseLiquidityQuoteByInputToken( + inputTokenMint, + inputAmount, + lowerTick, + upperTick, + Percentage.fromFraction(1, 100), + whirlpool, + tokenExtensionCtx + ) + const { positionMint, tx: txBuilder } = await whirlpool.openPositionWithMetadata( + lowerTick, + upperTick, + increaseLiquiditQuote + ) + + const txPayload = await txBuilder.build(); + const txPayloadDecompiled = TransactionMessage.decompile((txPayload.transaction as VersionedTransaction).message); + instructions = instructions.concat(txPayloadDecompiled.instructions); + signers = signers.concat(txPayload.signers as Keypair[]); + + const txId = await sendTx( + agent, + instructions, + signers + ); + return JSON.stringify({ + transactionId: txId, + positionMint: positionMint.toString(), + }) + } catch (error) { + console.log(error) + throw new Error(`${error}`); + } +} \ No newline at end of file diff --git a/src/tools/orca_open_single_sided_position.ts b/src/tools/orca_open_single_sided_position.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/utils/send_tx.ts b/src/utils/send_tx.ts index f357b8e..ad42204 100644 --- a/src/utils/send_tx.ts +++ b/src/utils/send_tx.ts @@ -1,5 +1,5 @@ import { SolanaAgentKit } from "../agent"; -import { Keypair, TransactionInstruction, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; +import { Keypair, Signer, TransactionInstruction, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; import { ComputeBudgetProgram, } from "@solana/web3.js"; @@ -70,45 +70,55 @@ export async function sendTx( instructions: TransactionInstruction[], otherKeypairs?: Keypair[] ) { - const ixComputeBudget = await getComputeBudgetInstructions(agent, instructions, "mid"); - const allInstructions = [ - ixComputeBudget.computeBudgetLimitInstruction, - ixComputeBudget.computeBudgetPriorityFeeInstructions, - ...instructions]; - const messageV0 = new TransactionMessage({ - payerKey: agent.wallet_address, - recentBlockhash: ixComputeBudget.blockhash, - instructions: allInstructions, - }).compileToV0Message(); - const transaction = new VersionedTransaction(messageV0); - transaction.sign([agent.wallet, ...(otherKeypairs ?? [])]); + try { + const ixComputeBudget = await getComputeBudgetInstructions(agent, instructions, "mid"); + const allInstructions = [ + ixComputeBudget.computeBudgetLimitInstruction, + ixComputeBudget.computeBudgetPriorityFeeInstructions, + ...instructions]; + const messageV0 = new TransactionMessage({ + payerKey: agent.wallet_address, + recentBlockhash: ixComputeBudget.blockhash, + instructions: allInstructions, + }).compileToV0Message(); + const transaction = new VersionedTransaction(messageV0); + transaction.sign([agent.wallet, ...(otherKeypairs ?? [])]); - const timeoutMs = 90000; - const startTime = Date.now(); - while (Date.now() - startTime < timeoutMs) { - const transactionStartTime = Date.now(); + const timeoutMs = 90000; + const startTime = Date.now(); + try { + while (Date.now() - startTime < timeoutMs) { + const transactionStartTime = Date.now(); - const signature = await agent.connection.sendTransaction( - transaction, - { - maxRetries: 0, - skipPreflight: true, - }); + const signature = await agent.connection.sendTransaction( + transaction, + { + maxRetries: 0, + skipPreflight: true, + }); - const statuses = await agent.connection.getSignatureStatuses([signature]); - if (statuses.value[0]) { - if (!statuses.value[0].err) { - return signature; - } else { - throw new Error(`Transaction failed: ${statuses.value[0].err.toString()}`); + const statuses = await agent.connection.getSignatureStatuses([signature]); + if (statuses.value[0]) { + if (!statuses.value[0].err) { + return signature; + } else { + throw new Error(`Transaction failed: ${statuses.value[0].err.toString()}`); + } + } + + const elapsedTime = Date.now() - transactionStartTime; + const remainingTime = Math.max(0, 1000 - elapsedTime); + if (remainingTime > 0) { + await new Promise(resolve => setTimeout(resolve, remainingTime)); + } } + throw new Error("Transaction timeout"); + } catch (error) { + console.log("Error sending transaction:", error); + throw error; } - - const elapsedTime = Date.now() - transactionStartTime; - const remainingTime = Math.max(0, 1000 - elapsedTime); - if (remainingTime > 0) { - await new Promise(resolve => setTimeout(resolve, remainingTime)); - } + } catch (error) { + console.log("Error sending transaction:", error); + throw error; } - throw new Error("Transaction timeout"); } diff --git a/test/index.ts b/test/index.ts index c6f188d..1a64ec9 100644 --- a/test/index.ts +++ b/test/index.ts @@ -36,8 +36,8 @@ const WALLET_DATA_FILE = "wallet_data.txt"; async function initializeAgent() { try { const llm = new ChatOpenAI({ - modelName: "gpt-4o", - temperature: 0.7, + modelName: "gpt-4o-mini", + // temperature: 0.7, }); let walletDataStr: string | null = null; From 4559fb85514d8d5202dd1bb768849d0ce97bfc57 Mon Sep 17 00:00:00 2001 From: Damjan Date: Sat, 28 Dec 2024 10:26:27 +0100 Subject: [PATCH 13/94] Upgrade NPM dependencies --- package.json | 26 +-- pnpm-lock.yaml | 519 ++++++++++--------------------------------------- 2 files changed, 121 insertions(+), 424 deletions(-) diff --git a/package.json b/package.json index 8ff852f..95a4d37 100644 --- a/package.json +++ b/package.json @@ -25,8 +25,8 @@ "@coral-xyz/anchor": "0.29", "@langchain/core": "^0.3.26", "@langchain/groq": "^0.1.2", - "@langchain/langgraph": "^0.2.34", - "@langchain/openai": "^0.3.13", + "@langchain/langgraph": "^0.2.36", + "@langchain/openai": "^0.3.16", "@lightprotocol/compressed-token": "^0.17.1", "@lightprotocol/stateless.js": "^0.17.1", "@metaplex-foundation/mpl-core": "^1.1.1", @@ -41,28 +41,28 @@ "@pythnetwork/price-service-client": "^1.9.0", "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", "@solana/spl-token": "^0.4.9", - "@solana/web3.js": "^1.95.4", + "@solana/web3.js": "^1.98.0", "@tiplink/api": "^0.3.1", "bn.js": "^5.2.1", "bs58": "^6.0.0", "chai": "^5.1.2", "decimal.js": "^10.4.3", - "dotenv": "^16.4.5", + "dotenv": "^16.4.7", "form-data": "^4.0.1", - "langchain": "^0.3.6", - "openai": "^4.75.0", - "typedoc": "^0.26.11" + "langchain": "^0.3.8", + "openai": "^4.77.0", + "typedoc": "^0.27.6" }, "devDependencies": { - "@types/bn.js": "^5.1.5", + "@types/bn.js": "^5.1.6", "@types/chai": "^5.0.1", - "@types/node": "^22.9.0", - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0", + "@types/node": "^22.10.2", + "@typescript-eslint/eslint-plugin": "^8.18.2", + "@typescript-eslint/parser": "^8.18.2", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.1.3", - "prettier": "^3.2.5", + "eslint-plugin-prettier": "^5.2.1", + "prettier": "^3.4.2", "ts-node": "^10.9.2", "typescript": "^5.7.2" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 06e4741..0fbafd2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,10 +21,10 @@ importers: specifier: ^0.1.2 version: 0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) '@langchain/langgraph': - specifier: ^0.2.34 - version: 0.2.34(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + specifier: ^0.2.36 + version: 0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) '@langchain/openai': - specifier: ^0.3.13 + specifier: ^0.3.16 version: 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) '@lightprotocol/compressed-token': specifier: ^0.17.1 @@ -69,7 +69,7 @@ importers: specifier: ^0.4.9 version: 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': - specifier: ^1.95.4 + specifier: ^1.98.0 version: 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@tiplink/api': specifier: ^0.3.1 @@ -87,36 +87,36 @@ importers: specifier: ^10.4.3 version: 10.4.3 dotenv: - specifier: ^16.4.5 + specifier: ^16.4.7 version: 16.4.7 form-data: specifier: ^4.0.1 version: 4.0.1 langchain: - specifier: ^0.3.6 - version: 0.3.7(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.9)(openai@4.77.0(zod@3.24.1)) + specifier: ^0.3.8 + version: 0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.9)(openai@4.77.0(zod@3.24.1)) openai: - specifier: ^4.75.0 + specifier: ^4.77.0 version: 4.77.0(zod@3.24.1) typedoc: - specifier: ^0.26.11 - version: 0.26.11(typescript@5.7.2) + specifier: ^0.27.6 + version: 0.27.6(typescript@5.7.2) devDependencies: '@types/bn.js': - specifier: ^5.1.5 + specifier: ^5.1.6 version: 5.1.6 '@types/chai': specifier: ^5.0.1 version: 5.0.1 '@types/node': - specifier: ^22.9.0 + specifier: ^22.10.2 version: 22.10.2 '@typescript-eslint/eslint-plugin': - specifier: ^7.0.0 - version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) + specifier: ^8.18.2 + version: 8.18.2(@typescript-eslint/parser@8.18.2(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) '@typescript-eslint/parser': - specifier: ^7.0.0 - version: 7.18.0(eslint@8.57.1)(typescript@5.7.2) + specifier: ^8.18.2 + version: 8.18.2(eslint@8.57.1)(typescript@5.7.2) eslint: specifier: ^8.56.0 version: 8.57.1 @@ -124,10 +124,10 @@ importers: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.1) eslint-plugin-prettier: - specifier: ^5.1.3 + specifier: ^5.2.1 version: 5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2) prettier: - specifier: ^3.2.5 + specifier: ^3.4.2 version: 3.4.2 ts-node: specifier: ^10.9.2 @@ -196,6 +196,9 @@ packages: '@ethersproject/sha2@5.7.0': resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + '@gerrit0/mini-shiki@1.24.4': + resolution: {integrity: sha512-YEHW1QeAg6UmxEmswiQbOVEg1CW22b1XUD/lNTliOsu0LD0wqoyleFMnmbTp697QE0pcadQiR5cVtbbAPncvpw==} + '@humanwhocodes/config-array@0.13.0': resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} @@ -238,8 +241,8 @@ packages: '@langchain/langgraph-sdk@0.0.32': resolution: {integrity: sha512-KQyM9kLO7T6AxwNrceajH7JOybP3pYpvUPnhiI2rrVndI1WyZUJ1eVC1e722BVRAPi6o+WcoTT4uMSZVinPOtA==} - '@langchain/langgraph@0.2.34': - resolution: {integrity: sha512-fSlmLYre+Skh5XJgBGe5YRtXaHyGMTlhu5UN3LzIgA3E9CmGODvH+Ydyk5vJzhXMjnPpLr8icqlKxKrYmZ3gTw==} + '@langchain/langgraph@0.2.36': + resolution: {integrity: sha512-zxk7ZCVxP0/Ut9785EiXCS7BE7sXd8cu943mcZUF2aNFUaQRTBbbiKpNdR3nb1+xO/B+HVktrJT2VFdkAywnng==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0' @@ -436,12 +439,6 @@ packages: '@scure/base@1.2.1': resolution: {integrity: sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==} - '@shikijs/core@1.24.3': - resolution: {integrity: sha512-VRcf4GYUIkxIchGM9DrapRcxtgojg4IWKUtX5EtW+4PJiGzF2xQqZSv27PJt+WLc18KT3CNLpNWow9JYV5n+Rg==} - - '@shikijs/engine-javascript@1.24.3': - resolution: {integrity: sha512-De8tNLvYjeK6V0Gb47jIH2M+OKkw+lWnSV1j3HVDFMlNIglmVcTMG2fASc29W0zuFbfEEwKjO8Fe4KYSO6Ce3w==} - '@shikijs/engine-oniguruma@1.24.3': resolution: {integrity: sha512-iNnx950gs/5Nk+zrp1LuF+S+L7SKEhn8k9eXgFYPGhVshKppsYwRmW8tpmAMvILIMSDfrgqZ0w+3xWVQB//1Xw==} @@ -651,9 +648,6 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - '@types/node-fetch@2.6.12': resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} @@ -684,63 +678,52 @@ packages: '@types/ws@8.5.13': resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} - '@typescript-eslint/eslint-plugin@7.18.0': - resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/eslint-plugin@8.18.2': + resolution: {integrity: sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@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@7.18.0': - resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/parser@8.18.2': + resolution: {integrity: sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@7.18.0': - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@8.18.2': + resolution: {integrity: sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@7.18.0': - resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/type-utils@8.18.2': + resolution: {integrity: sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/types@8.18.2': + resolution: {integrity: sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/typescript-estree@8.18.2': + resolution: {integrity: sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@7.18.0': - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/utils@8.18.2': + resolution: {integrity: sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@8.18.2': + resolution: {integrity: sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.2.1': resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} @@ -795,10 +778,6 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} @@ -916,9 +895,6 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.1.2: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} @@ -931,12 +907,6 @@ packages: resolution: {integrity: sha512-ZkD35Mx92acjB2yNJgziGqT9oKHEOxjTBTDRpOsRWtdecL/0jM3z5kM/CTzHWvHIen1GvkM85p6TuFfDGfc8/Q==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} @@ -952,9 +922,6 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} @@ -1028,21 +995,10 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -1058,9 +1014,6 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - emoji-regex-xs@1.0.0: - resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -1115,6 +1068,10 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@8.57.1: resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1251,10 +1208,6 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -1293,15 +1246,6 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hast-util-to-html@9.0.4: - resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} @@ -1428,8 +1372,8 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - langchain@0.3.7: - resolution: {integrity: sha512-6/Gkk9Zez3HkbsETFxZVo1iKLmaK3OzkDseC5MYFKVmYFDXFAOyJR3srJ9P61xF8heVdsPixqYIsejBn7/9dXg==} + langchain@0.3.8: + resolution: {integrity: sha512-EiAHFgBdThuXFmIx9j81wjdPItpRsw0Ck4r5dyhB74gyhehRGna/UK2CTqeKVnIUM/f4g4JbxUgAU4voXljDMw==} engines: {node: '>=18'} peerDependencies: '@langchain/anthropic': '*' @@ -1531,9 +1475,6 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} - mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -1541,21 +1482,6 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - - micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - - micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - - micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - - micromark-util-types@2.0.1: - resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} - micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -1631,9 +1557,6 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - oniguruma-to-es@0.8.0: - resolution: {integrity: sha512-rY+/a6b+uCgoYIL9itjY0x99UUDHXmGaw7Jjk5ZvM/3cxDJifyxFr/Zm4tTmF6Tre18gAakJo7AzhKUeMNLgHA==} - openai@4.77.0: resolution: {integrity: sha512-WWacavtns/7pCUkOWvQIjyOfcdr9X+9n9Vvb0zFeKVDAqwCMDHB+iSr24SVaBAhplvSG6JrRXFpcNM9gWhOGIw==} hasBin: true @@ -1696,10 +1619,6 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -1728,9 +1647,6 @@ packages: engines: {node: '>=14'} hasBin: true - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -1748,15 +1664,6 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regex-recursion@5.0.0: - resolution: {integrity: sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==} - - regex-utilities@2.3.0: - resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - - regex@5.0.2: - resolution: {integrity: sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -1800,13 +1707,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.24.3: - resolution: {integrity: sha512-eMeX/ehE2IDKVs71kB4zVcDHjutNcOtm+yIRuR4sA6ThBbdFI0DffGJiyoKCodj0xRGxIoWC3pk/Anmm5mzHmA==} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} @@ -1818,12 +1718,6 @@ packages: peerDependencies: sodium-native: ^3.2.0 - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -1879,9 +1773,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - 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'} @@ -1929,12 +1820,12 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typedoc@0.26.11: - resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} + typedoc@0.27.6: + resolution: {integrity: sha512-oBFRoh2Px6jFx366db0lLlihcalq/JzyCVp7Vaq1yphL/tbgx2e+bkpkCgJPunaPvPwoTOXSwasfklWHm7GfAw==} engines: {node: '>= 18'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x + 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 typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} @@ -1958,21 +1849,6 @@ packages: unicode-trie@2.0.0: resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -2002,12 +1878,6 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} @@ -2086,9 +1956,6 @@ packages: zod@3.24.1: resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - snapshots: '@babel/runtime@7.26.0': @@ -2189,6 +2056,12 @@ snapshots: '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 + '@gerrit0/mini-shiki@1.24.4': + dependencies: + '@shikijs/engine-oniguruma': 1.24.3 + '@shikijs/types': 1.24.3 + '@shikijs/vscode-textmate': 9.3.1 + '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -2249,7 +2122,7 @@ snapshots: p-retry: 4.6.2 uuid: 9.0.1 - '@langchain/langgraph@0.2.34(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + '@langchain/langgraph@0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': dependencies: '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) @@ -2527,21 +2400,6 @@ snapshots: '@scure/base@1.2.1': {} - '@shikijs/core@1.24.3': - dependencies: - '@shikijs/engine-javascript': 1.24.3 - '@shikijs/engine-oniguruma': 1.24.3 - '@shikijs/types': 1.24.3 - '@shikijs/vscode-textmate': 9.3.1 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.4 - - '@shikijs/engine-javascript@1.24.3': - dependencies: - '@shikijs/types': 1.24.3 - '@shikijs/vscode-textmate': 9.3.1 - oniguruma-to-es: 0.8.0 - '@shikijs/engine-oniguruma@1.24.3': dependencies: '@shikijs/types': 1.24.3 @@ -2981,10 +2839,6 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/mdast@4.0.4': - dependencies: - '@types/unist': 3.0.3 - '@types/node-fetch@2.6.12': dependencies: '@types/node': 22.10.2 @@ -3016,86 +2870,82 @@ snapshots: dependencies: '@types/node': 22.10.2 - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2(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': 7.18.0(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/parser': 8.18.2(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.18.2 + '@typescript-eslint/type-utils': 8.18.2(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.2(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.2 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) - optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/parser@8.18.2(eslint@8.57.1)(typescript@5.7.2)': dependencies: - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/scope-manager': 8.18.2 + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.2 debug: 4.4.0 eslint: 8.57.1 - optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.18.0': + '@typescript-eslint/scope-manager@8.18.2': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/visitor-keys': 8.18.2 - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.18.2(eslint@8.57.1)(typescript@5.7.2)': dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.7.2) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.2(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) - optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@7.18.0': {} + '@typescript-eslint/types@8.18.2': {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.18.2(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/visitor-keys': 8.18.2 debug: 4.4.0 - globby: 11.1.0 + 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) - optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/utils@8.18.2(eslint@8.57.1)(typescript@5.7.2)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.18.2 + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) eslint: 8.57.1 + typescript: 5.7.2 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/visitor-keys@7.18.0': + '@typescript-eslint/visitor-keys@8.18.2': dependencies: - '@typescript-eslint/types': 7.18.0 - eslint-visitor-keys: 3.4.3 + '@typescript-eslint/types': 8.18.2 + eslint-visitor-keys: 4.2.0 '@ungap/structured-clone@1.2.1': {} @@ -3143,8 +2993,6 @@ snapshots: argparse@2.0.1: {} - array-union@2.1.0: {} - assert@2.1.0: dependencies: call-bind: 1.0.8 @@ -3275,8 +3123,6 @@ snapshots: camelcase@6.3.0: {} - ccount@2.0.1: {} - chai@5.1.2: dependencies: assertion-error: 2.0.1 @@ -3292,10 +3138,6 @@ snapshots: chalk@5.4.0: {} - character-entities-html4@2.1.0: {} - - character-entities-legacy@3.0.0: {} - check-error@2.1.1: {} color-convert@2.0.1: @@ -3308,8 +3150,6 @@ snapshots: dependencies: delayed-stream: 1.0.0 - comma-separated-tokens@2.0.3: {} - commander@10.0.1: {} commander@12.1.0: {} @@ -3366,18 +3206,8 @@ snapshots: delayed-stream@1.0.0: {} - dequal@2.0.3: {} - - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - diff@4.0.2: {} - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - doctrine@3.0.0: dependencies: esutils: 2.0.3 @@ -3395,8 +3225,6 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - emoji-regex-xs@1.0.0: {} - entities@4.5.0: {} es-define-property@1.0.1: {} @@ -3435,6 +3263,8 @@ snapshots: eslint-visitor-keys@3.4.3: {} + eslint-visitor-keys@4.2.0: {} + eslint@8.57.1: dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) @@ -3608,15 +3438,6 @@ snapshots: dependencies: type-fest: 0.20.2 - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - gopd@1.2.0: {} graceful-fs@4.2.11: @@ -3663,26 +3484,6 @@ snapshots: dependencies: function-bind: 1.1.2 - hast-util-to-html@9.0.4: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-whitespace: 3.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.4 - zwitch: 2.0.4 - - hast-util-whitespace@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - html-void-elements@3.0.0: {} - humanize-ms@1.2.1: dependencies: ms: 2.1.3 @@ -3803,7 +3604,7 @@ snapshots: dependencies: json-buffer: 3.0.1 - langchain@0.3.7(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.9)(openai@4.77.0(zod@3.24.1)): + langchain@0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.9)(openai@4.77.0(zod@3.24.1)): dependencies: '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) @@ -3886,39 +3687,10 @@ snapshots: math-intrinsics@1.1.0: {} - mdast-util-to-hast@13.2.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.2.1 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.1 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - mdurl@2.0.0: {} merge2@1.4.1: {} - micromark-util-character@2.1.1: - dependencies: - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-util-encode@2.0.1: {} - - micromark-util-sanitize-uri@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-encode: 2.0.1 - micromark-util-symbol: 2.0.1 - - micromark-util-symbol@2.0.1: {} - - micromark-util-types@2.0.1: {} - micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -3983,12 +3755,6 @@ snapshots: dependencies: wrappy: 1.0.2 - oniguruma-to-es@0.8.0: - dependencies: - emoji-regex-xs: 1.0.0 - regex: 5.0.2 - regex-recursion: 5.0.0 - openai@4.77.0(zod@3.24.1): dependencies: '@types/node': 18.19.68 @@ -4052,8 +3818,6 @@ snapshots: path-key@3.1.1: {} - path-type@4.0.0: {} - pathval@2.0.0: {} picomatch@2.3.1: {} @@ -4072,8 +3836,6 @@ snapshots: prettier@3.4.2: {} - property-information@6.5.0: {} - proxy-from-env@1.1.0: {} punycode.js@2.3.1: {} @@ -4084,16 +3846,6 @@ snapshots: regenerator-runtime@0.14.1: {} - regex-recursion@5.0.0: - dependencies: - regex-utilities: 2.3.0 - - regex-utilities@2.3.0: {} - - regex@5.0.2: - dependencies: - regex-utilities: 2.3.0 - resolve-from@4.0.0: {} retry@0.13.1: {} @@ -4140,17 +3892,6 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.24.3: - dependencies: - '@shikijs/core': 1.24.3 - '@shikijs/engine-javascript': 1.24.3 - '@shikijs/engine-oniguruma': 1.24.3 - '@shikijs/types': 1.24.3 - '@shikijs/vscode-textmate': 9.3.1 - '@types/hast': 3.0.4 - - slash@3.0.0: {} - snake-case@3.0.4: dependencies: dot-case: 3.0.4 @@ -4169,13 +3910,6 @@ snapshots: typedarray-to-buffer: 3.1.5 xsalsa20: 1.2.0 - space-separated-tokens@2.0.2: {} - - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -4217,8 +3951,6 @@ snapshots: tr46@0.0.3: {} - trim-lines@3.0.1: {} - ts-api-utils@1.4.3(typescript@5.7.2): dependencies: typescript: 5.7.2 @@ -4265,12 +3997,12 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typedoc@0.26.11(typescript@5.7.2): + typedoc@0.27.6(typescript@5.7.2): dependencies: + '@gerrit0/mini-shiki': 1.24.4 lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - shiki: 1.24.3 typescript: 5.7.2 yaml: 2.6.1 @@ -4289,29 +4021,6 @@ snapshots: pako: 0.2.9 tiny-inflate: 1.0.3 - unist-util-is@6.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-position@5.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-visit-parents@6.0.1: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - - unist-util-visit@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - universalify@2.0.1: {} uri-js@4.4.1: @@ -4339,16 +4048,6 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - vfile-message@4.0.2: - dependencies: - '@types/unist': 3.0.3 - unist-util-stringify-position: 4.0.0 - - vfile@6.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile-message: 4.0.2 - web-streams-polyfill@3.3.3: {} web-streams-polyfill@4.0.0-beta.3: {} @@ -4400,5 +4099,3 @@ snapshots: zod: 3.24.1 zod@3.24.1: {} - - zwitch@2.0.4: {} From 378fea201d73f4caf630d3b57b6a39f87268ffa9 Mon Sep 17 00:00:00 2001 From: Fahri Bilici <28020526+FahriBilici@users.noreply.github.com> Date: Sat, 28 Dec 2024 16:24:57 +0100 Subject: [PATCH 14/94] feat: Refactor actions to use tool functions for improved code clarity and maintainability --- src/actions/balance.ts | 4 +- src/actions/createGibworkTask.ts | 65 ++--------- src/actions/createImage.ts | 22 +--- src/actions/createOpenbookMarket.ts | 51 ++------ src/actions/createOrcaSingleSidedWhirlpool.ts | 4 +- src/actions/deployCollection.ts | 3 +- src/actions/deployToken.ts | 33 ++++-- src/actions/fetchPrice.ts | 20 +--- src/actions/getAllDomainsTLDs.ts | 3 +- src/actions/getAllRegisteredAllDomains.ts | 7 +- src/actions/getMainAllDomainsDomain.ts | 9 +- src/actions/getOwnedAllDomains.ts | 3 +- src/actions/getOwnedDomainsForTLD.ts | 3 +- src/actions/getPrimaryDomain.ts | 15 +-- src/actions/getTPS.ts | 23 +--- src/actions/getTokenData.ts | 48 +------- src/actions/index.ts | 6 - src/actions/launchPumpfunToken.ts | 110 +----------------- src/actions/lendAsset.ts | 49 +------- src/actions/mintNFT.ts | 8 +- src/actions/pythFetchPrice.ts | 23 +--- src/actions/raydiumCreateAmmV4.ts | 66 +---------- src/actions/raydiumCreateCpmm.ts | 58 +-------- src/actions/registerDomain.ts | 46 +------- src/actions/requestFunds.ts | 3 +- src/actions/resolveDomain.ts | 15 +-- src/actions/resolveSolDomain.ts | 19 +-- src/actions/stakeWithJup.ts | 50 +------- src/actions/trade.ts | 3 +- src/actions/transfer.ts | 3 +- 30 files changed, 118 insertions(+), 654 deletions(-) diff --git a/src/actions/balance.ts b/src/actions/balance.ts index 2a4d34d..36d9304 100644 --- a/src/actions/balance.ts +++ b/src/actions/balance.ts @@ -2,6 +2,7 @@ import { PublicKey } from "@solana/web3.js"; import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; +import { get_balance } from "../tools"; const balanceAction: Action = { name: "solana_balance", @@ -45,8 +46,7 @@ const balanceAction: Action = { tokenAddress: z.string().optional() }), handler: async (agent: SolanaAgentKit, input: Record) => { - const tokenAddress = input.tokenAddress ? new PublicKey(input.tokenAddress) : undefined; - const balance = await agent.getBalance(tokenAddress); + const balance = await get_balance(agent, input.tokenAddress && new PublicKey(input.tokenAddress)); return { status: "success", diff --git a/src/actions/createGibworkTask.ts b/src/actions/createGibworkTask.ts index 8ae28ce..419b7b5 100644 --- a/src/actions/createGibworkTask.ts +++ b/src/actions/createGibworkTask.ts @@ -2,6 +2,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { PublicKey, VersionedTransaction } from "@solana/web3.js"; +import { create_gibwork_task } from "../tools"; const createGibworkTaskAction: Action = { name: "solana_create_gibwork_task", @@ -62,65 +63,21 @@ const createGibworkTaskAction: Action = { const tokenMintAddress = new PublicKey(input.tokenMintAddress); const payer = input.payer ? new PublicKey(input.payer) : undefined; - const apiResponse = await fetch( - "https://api2.gib.work/tasks/public/transaction", - { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - title: input.title, - content: input.content, - requirements: input.requirements, - tags: input.tags, - payer: payer?.toBase58() || agent.wallet.publicKey.toBase58(), - token: { - mintAddress: tokenMintAddress.toBase58(), - amount: input.tokenAmount, - }, - }), - } + const responseData = await create_gibwork_task( + agent, + input.title, + input.content, + input.requirements, + input.tags, + new PublicKey(input.tokenMintAddress), + input.tokenAmount, + input.payer ? new PublicKey(input.payer) : undefined ); - if (!apiResponse.ok) { - return { - status: "error", - message: `Failed to create task: ${apiResponse.statusText}` - }; - } - - const responseData = await apiResponse.json(); - if (!responseData.taskId || !responseData.serializedTransaction) { - return { - status: "error", - message: responseData.message || "Invalid response from Gibwork API" - }; - } - - const serializedTransaction = Buffer.from( - responseData.serializedTransaction, - "base64" - ); - const tx = VersionedTransaction.deserialize(serializedTransaction); - - tx.sign([agent.wallet]); - const signature = await agent.connection.sendTransaction(tx, { - preflightCommitment: "confirmed", - maxRetries: 3, - }); - - const latestBlockhash = await agent.connection.getLatestBlockhash(); - await agent.connection.confirmTransaction({ - signature, - blockhash: latestBlockhash.blockhash, - lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, - }); - return { status: "success", taskId: responseData.taskId, - signature, + signature: responseData.signature, message: `Successfully created task: ${input.title}` }; } catch (error: any) { diff --git a/src/actions/createImage.ts b/src/actions/createImage.ts index 4d16b9a..722a683 100644 --- a/src/actions/createImage.ts +++ b/src/actions/createImage.ts @@ -2,6 +2,8 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import OpenAI from "openai"; +import { create } from "domain"; +import { create_image } from "../tools/create_image"; const createImageAction: Action = { name: "solana_create_image", @@ -60,31 +62,17 @@ const createImageAction: Action = { }; } - const { prompt, model, size, quality, style } = input; + const { prompt, model, size } = input; const openai = new OpenAI({ apiKey: agent.openai_api_key }); - const response = await openai.images.generate({ - prompt, - model, - n: 1, - size, - quality, - style - }); - - if (!response.data || response.data.length === 0) { - return { - status: "error", - message: "No image was generated" - }; - } + const response = await create_image(agent, prompt, model, size); return { status: "success", - imageUrl: response.data[0].url, + imageUrl: response.images[0].url, message: "Successfully generated image" }; } catch (error: any) { diff --git a/src/actions/createOpenbookMarket.ts b/src/actions/createOpenbookMarket.ts index 991ab97..0e923c0 100644 --- a/src/actions/createOpenbookMarket.ts +++ b/src/actions/createOpenbookMarket.ts @@ -4,6 +4,7 @@ import { z } from "zod"; import { OPEN_BOOK_PROGRAM, Raydium, TxVersion } from "@raydium-io/raydium-sdk-v2"; import { MintLayout, TOKEN_PROGRAM_ID } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; +import { openbookCreateMarket } from "../tools"; const createOpenbookMarketAction: Action = { name: "solana_create_openbook_market", @@ -57,54 +58,18 @@ const createOpenbookMarketAction: Action = { const lotSize = input.lotSize || 1; const tickSize = input.tickSize || 0.01; - const raydium = await Raydium.load({ - owner: agent.wallet, - connection: agent.connection, - }); - // Get mint info - const baseMintInfo = await agent.connection.getAccountInfo(baseMint); - const quoteMintInfo = await agent.connection.getAccountInfo(quoteMint); - - if (!baseMintInfo || !quoteMintInfo) { - return { - status: "error", - message: "Failed to fetch mint information" - }; - } - - // Verify token program - if ( - baseMintInfo.owner.toString() !== TOKEN_PROGRAM_ID.toBase58() || - quoteMintInfo.owner.toString() !== TOKEN_PROGRAM_ID.toBase58() - ) { - return { - status: "error", - message: "Openbook market only supports TOKEN_PROGRAM_ID mints. For token-2022, please use Raydium CPMM pool instead." - }; - } - - // Create market - const { execute } = await raydium.marketV2.create({ - baseInfo: { - mint: baseMint, - decimals: MintLayout.decode(baseMintInfo.data).decimals, - }, - quoteInfo: { - mint: quoteMint, - decimals: MintLayout.decode(quoteMintInfo.data).decimals, - }, + const signatures = await openbookCreateMarket( + agent, + baseMint, + quoteMint, lotSize, - tickSize, - dexProgramId: OPEN_BOOK_PROGRAM, - txVersion: TxVersion.V0, - }); - - const { txIds } = await execute({ sequentially: true }); + tickSize + ); return { status: "success", - signatures: txIds, + signatures, message: "Successfully created Openbook market" }; } catch (error: any) { diff --git a/src/actions/createOrcaSingleSidedWhirlpool.ts b/src/actions/createOrcaSingleSidedWhirlpool.ts index 11c8289..f23389d 100644 --- a/src/actions/createOrcaSingleSidedWhirlpool.ts +++ b/src/actions/createOrcaSingleSidedWhirlpool.ts @@ -4,6 +4,7 @@ import { z } from "zod"; import { PublicKey } from "@solana/web3.js"; import { BN } from "@coral-xyz/anchor"; import { Decimal } from "decimal.js"; +import { createOrcaSingleSidedWhirlpool } from "../tools"; // Fee tiers mapping from the original tool const FEE_TIERS = { @@ -79,7 +80,8 @@ const createOrcaSingleSidedWhirlpoolAction: Action = { const feeTier = input.feeTier as keyof typeof FEE_TIERS; // Create the whirlpool - const signature = await agent.createOrcaSingleSidedWhirlpool( + const signature = await createOrcaSingleSidedWhirlpool( + agent, depositTokenAmount, depositTokenMint, otherTokenMint, diff --git a/src/actions/deployCollection.ts b/src/actions/deployCollection.ts index 0127b5c..77efc10 100644 --- a/src/actions/deployCollection.ts +++ b/src/actions/deployCollection.ts @@ -2,6 +2,7 @@ import { PublicKey } from "@solana/web3.js"; import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; +import { deploy_collection } from "../tools"; interface CollectionOptions { name: string; @@ -64,7 +65,7 @@ const deployCollectionAction: Action = { royaltyBasisPoints: input.royaltyBasisPoints }; - const result = await agent.deployCollection(options); + const result = await deploy_collection(agent, options); return { status: "success", diff --git a/src/actions/deployToken.ts b/src/actions/deployToken.ts index 046c120..2a1793d 100644 --- a/src/actions/deployToken.ts +++ b/src/actions/deployToken.ts @@ -2,6 +2,7 @@ import { PublicKey } from "@solana/web3.js"; import { Action, ActionExample } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; +import { deploy_token } from "../tools"; const deployTokenAction: Action = { name: "deploy_token", @@ -55,19 +56,27 @@ const deployTokenAction: Action = { initialSupply: z.number().optional() }), handler: async (agent: SolanaAgentKit, input: Record) => { - const result = await agent.deployToken( - input.name, - input.uri, - input.symbol, - input.decimals, - input.initialSupply - ); + try { + const result = await deploy_token( + agent, + input.name, + input.uri, + input.symbol, + input.decimals, + input.initialSupply + ); - return { - mint: result.mint.toString(), - status: "success", - message: "Token deployed successfully" - }; + return { + mint: result.mint.toString(), + status: "success", + message: "Token deployed successfully" + }; + } catch (error: any) { + return { + status: "error", + message: `Token deployment failed: ${error.message}` + }; + } } } diff --git a/src/actions/fetchPrice.ts b/src/actions/fetchPrice.ts index 40b9a1d..9512e14 100644 --- a/src/actions/fetchPrice.ts +++ b/src/actions/fetchPrice.ts @@ -2,6 +2,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { PublicKey } from "@solana/web3.js"; +import { fetchPrice } from "../tools"; const fetchPriceAction: Action = { name: "solana_fetch_price", @@ -34,24 +35,7 @@ const fetchPriceAction: Action = { handler: async (agent: SolanaAgentKit, input: Record) => { try { const tokenId = new PublicKey(input.tokenAddress); - const response = await fetch(`https://api.jup.ag/price/v2?ids=${tokenId}`); - - if (!response.ok) { - return { - status: "error", - message: `Failed to fetch price: ${response.statusText}` - }; - } - - const data = await response.json(); - const price = data.data[tokenId.toBase58()]?.price; - - if (!price) { - return { - status: "error", - message: "Price data not available for the given token" - }; - } + const price = await fetchPrice(tokenId); return { status: "success", diff --git a/src/actions/getAllDomainsTLDs.ts b/src/actions/getAllDomainsTLDs.ts index fbda0b8..60c05d2 100644 --- a/src/actions/getAllDomainsTLDs.ts +++ b/src/actions/getAllDomainsTLDs.ts @@ -1,6 +1,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; +import { getAllDomainsTLDs } from "../tools"; const getAllDomainsTLDsAction: Action = { name: "solana_get_all_domains_tlds", @@ -30,7 +31,7 @@ const getAllDomainsTLDsAction: Action = { handler: async (agent: SolanaAgentKit, input: Record) => { try { // Get all domain TLDs - const tlds = await agent.getAllDomainsTLDs(); + const tlds = await getAllDomainsTLDs(agent); return { status: "success", diff --git a/src/actions/getAllRegisteredAllDomains.ts b/src/actions/getAllRegisteredAllDomains.ts index 19a5542..96fe879 100644 --- a/src/actions/getAllRegisteredAllDomains.ts +++ b/src/actions/getAllRegisteredAllDomains.ts @@ -1,6 +1,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; +import { getAllRegisteredAllDomains } from "../tools"; const getAllRegisteredAllDomainsAction: Action = { name: "solana_get_all_registered_all_domains", @@ -47,14 +48,12 @@ const getAllRegisteredAllDomainsAction: Action = { const offset = input.offset || 0; // Get all registered domains - const domains = await agent.getAllRegisteredAllDomains(); + const domains = await getAllRegisteredAllDomains(agent); - // Apply pagination - const paginatedDomains = domains.slice(offset, offset + limit); return { status: "success", - domains: paginatedDomains, + domains: domains.slice(offset, offset + limit), total: domains.length, message: "Successfully retrieved registered domains" }; diff --git a/src/actions/getMainAllDomainsDomain.ts b/src/actions/getMainAllDomainsDomain.ts index 81f911d..4f301f9 100644 --- a/src/actions/getMainAllDomainsDomain.ts +++ b/src/actions/getMainAllDomainsDomain.ts @@ -3,6 +3,7 @@ import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { PublicKey } from "@solana/web3.js"; import { TldParser } from "@onsol/tldparser"; +import { getMainAllDomainsDomain } from "../tools"; const getMainAllDomainsDomainAction: Action = { name: "solana_get_main_all_domains_domain", @@ -37,11 +38,7 @@ const getMainAllDomainsDomainAction: Action = { }), handler: async (agent: SolanaAgentKit, input: Record) => { try { - const address = new PublicKey(input.address); - - // Get the main domain using TldParser - const parser = new TldParser(agent.connection); - const mainDomain = await parser.getMainDomain(address); + const mainDomain = await getMainAllDomainsDomain(agent, new PublicKey(input.address)); if (!mainDomain) { return { @@ -52,7 +49,7 @@ const getMainAllDomainsDomainAction: Action = { return { status: "success", - domain: mainDomain.domain, + domain: mainDomain, message: "Successfully retrieved main domain" }; } catch (error: any) { diff --git a/src/actions/getOwnedAllDomains.ts b/src/actions/getOwnedAllDomains.ts index 7c41760..9cb279a 100644 --- a/src/actions/getOwnedAllDomains.ts +++ b/src/actions/getOwnedAllDomains.ts @@ -2,6 +2,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { PublicKey } from "@solana/web3.js"; +import { getOwnedAllDomains } from "../tools"; const getOwnedAllDomainsAction: Action = { name: "solana_get_owned_all_domains", @@ -40,7 +41,7 @@ const getOwnedAllDomainsAction: Action = { const address = new PublicKey(input.address); // Get owned domains - const domains = await agent.getOwnedAllDomains(address); + const domains = await getOwnedAllDomains(agent, address); return { status: "success", diff --git a/src/actions/getOwnedDomainsForTLD.ts b/src/actions/getOwnedDomainsForTLD.ts index 36924e4..3b2a06e 100644 --- a/src/actions/getOwnedDomainsForTLD.ts +++ b/src/actions/getOwnedDomainsForTLD.ts @@ -2,6 +2,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { PublicKey } from "@solana/web3.js"; +import { getOwnedDomainsForTLD } from "../tools"; const getOwnedDomainsForTLDAction: Action = { name: "solana_get_owned_domains_for_tld", @@ -40,7 +41,7 @@ const getOwnedDomainsForTLDAction: Action = { const tld = input.tld.toLowerCase(); // Get owned domains for TLD - const domains = await agent.getOwnedDomainsForTLD(tld); + const domains = await getOwnedDomainsForTLD(agent, tld); return { status: "success", diff --git a/src/actions/getPrimaryDomain.ts b/src/actions/getPrimaryDomain.ts index 778fadb..f19b091 100644 --- a/src/actions/getPrimaryDomain.ts +++ b/src/actions/getPrimaryDomain.ts @@ -3,6 +3,7 @@ import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { getPrimaryDomain as _getPrimaryDomain } from "@bonfida/spl-name-service"; import { PublicKey } from "@solana/web3.js"; +import { getPrimaryDomain } from "../tools"; const getPrimaryDomainAction: Action = { name: "solana_get_primary_domain", @@ -39,22 +40,16 @@ const getPrimaryDomainAction: Action = { try { const account = new PublicKey(input.account); - const { reverse, stale } = await _getPrimaryDomain( - agent.connection, + const response = await getPrimaryDomain( + agent, account ); - if (stale) { - return { - status: "error", - message: `Primary domain is stale for account: ${account.toBase58()}` - }; - } return { status: "success", - domain: reverse, - message: `Primary domain: ${reverse}` + domain: response, + message: `Primary domain: ${response}` }; } catch (error: any) { return { diff --git a/src/actions/getTPS.ts b/src/actions/getTPS.ts index 8baadff..546da65 100644 --- a/src/actions/getTPS.ts +++ b/src/actions/getTPS.ts @@ -1,6 +1,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; +import { getTPS } from "../tools"; const getTPSAction: Action = { name: "solana_get_tps", @@ -28,27 +29,11 @@ const getTPSAction: Action = { schema: z.object({}), // No input parameters required handler: async (agent: SolanaAgentKit, _input: Record) => { try { - const perfSamples = await agent.connection.getRecentPerformanceSamples(); - - if ( - !perfSamples.length || - !perfSamples[0]?.numTransactions || - !perfSamples[0]?.samplePeriodSecs - ) { - return { - status: "error", - message: "No performance samples available" - }; - } - - const tps = Math.round( - perfSamples[0].numTransactions / perfSamples[0].samplePeriodSecs - ); - + const response = await getTPS(agent); return { status: "success", - tps, - message: `Current network TPS: ${tps}` + response, + message: `Current network TPS: ${response}` }; } catch (error: any) { return { diff --git a/src/actions/getTokenData.ts b/src/actions/getTokenData.ts index 4b75cb9..8ac9721 100644 --- a/src/actions/getTokenData.ts +++ b/src/actions/getTokenData.ts @@ -3,6 +3,7 @@ import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { PublicKey } from "@solana/web3.js"; import { JupiterTokenData } from "../types"; +import { getTokenAddressFromTicker, getTokenDataByAddress } from "../tools"; const getTokenDataAction: Action = { name: "solana_get_token_data", @@ -59,59 +60,20 @@ const getTokenDataAction: Action = { handler: async (agent: SolanaAgentKit, input: Record) => { try { let tokenData: JupiterTokenData | undefined; - if (input.address) { - const mint = new PublicKey(input.address); - const response = await fetch("https://tokens.jup.ag/tokens?tags=verified", { - method: "GET", - headers: { - "Content-Type": "application/json", - }, - }); - - const data = (await response.json()) as JupiterTokenData[]; - tokenData = data.find((token: JupiterTokenData) => token.address === mint.toBase58()); + tokenData = await getTokenDataByAddress(new PublicKey(input.address)); } else if (input.ticker) { - const response = await fetch( - `https://api.dexscreener.com/latest/dex/search?q=${input.ticker}` - ); - const data = await response.json(); - - if (!data.pairs || data.pairs.length === 0) { - return { - status: "error", - message: `No token found for ticker: ${input.ticker}` - }; + const address = await getTokenAddressFromTicker(input.ticker); + if (address) { + tokenData = await getTokenDataByAddress(new PublicKey(address)); } - - let solanaPairs = data.pairs - .filter((pair: any) => pair.chainId === "solana") - .sort((a: any, b: any) => (b.fdv || 0) - (a.fdv || 0)) - .filter( - (pair: any) => - pair.baseToken.symbol.toLowerCase() === input.ticker.toLowerCase() - ); - - if (solanaPairs.length === 0) { - return { - status: "error", - message: `No Solana token found for ticker: ${input.ticker}` - }; - } - - const address = solanaPairs[0].baseToken.address; - const jupResponse = await fetch("https://tokens.jup.ag/tokens?tags=verified"); - const jupData = (await jupResponse.json()) as JupiterTokenData[]; - tokenData = jupData.find((token: JupiterTokenData) => token.address === address); } - if (!tokenData) { return { status: "error", message: "Token not found or not verified" }; } - return { status: "success", token: { diff --git a/src/actions/index.ts b/src/actions/index.ts index 1e15f58..d3b1679 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -16,15 +16,12 @@ import createGibworkTaskAction from "./createGibworkTask"; import resolveSolDomainAction from "./resolveSolDomain"; import pythFetchPriceAction from "./pythFetchPrice"; import getOwnedDomainsForTLDAction from "./getOwnedDomainsForTLD"; -import createRaydiumCLMMAction from "./createRaydiumCLMM"; import getPrimaryDomainAction from "./getPrimaryDomain"; import getAllDomainsTLDsAction from "./getAllDomainsTLDs"; import getOwnedAllDomainsAction from "./getOwnedAllDomains"; import createImageAction from "./createImage"; import getMainAllDomainsDomainAction from "./getMainAllDomainsDomain"; import getAllRegisteredAllDomainsAction from "./getAllRegisteredAllDomains"; -import createRaydiumCPMMAction from "./createRaydiumCPMM"; -import sendCompressedAirdropAction from "./sendCompressedAirdrop"; import raydiumCreateCpmmAction from "./raydiumCreateCpmm"; import raydiumCreateAmmV4Action from "./raydiumCreateAmmV4"; import createOrcaSingleSidedWhirlpoolAction from "./createOrcaSingleSidedWhirlpool"; @@ -49,15 +46,12 @@ export const actions = [ resolveSolDomainAction, pythFetchPriceAction, getOwnedDomainsForTLDAction, - createRaydiumCLMMAction, getPrimaryDomainAction, getAllDomainsTLDsAction, getOwnedAllDomainsAction, createImageAction, getMainAllDomainsDomainAction, getAllRegisteredAllDomainsAction, - createRaydiumCPMMAction, - sendCompressedAirdropAction, raydiumCreateCpmmAction, raydiumCreateAmmV4Action, createOrcaSingleSidedWhirlpoolAction, diff --git a/src/actions/launchPumpfunToken.ts b/src/actions/launchPumpfunToken.ts index ea38076..00f0add 100644 --- a/src/actions/launchPumpfunToken.ts +++ b/src/actions/launchPumpfunToken.ts @@ -2,6 +2,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { VersionedTransaction, Keypair } from "@solana/web3.js"; +import { launchPumpFunToken } from "../tools"; const launchPumpfunTokenAction: Action = { name: "solana_launch_pumpfun_token", @@ -82,113 +83,14 @@ const launchPumpfunTokenAction: Action = { }), handler: async (agent: SolanaAgentKit, input: Record) => { try { - const mintKeypair = Keypair.generate(); - - // Upload metadata - const formData = new URLSearchParams(); - formData.append("name", input.tokenName); - formData.append("symbol", input.tokenTicker); - formData.append("description", input.description); - formData.append("showName", "true"); - - if (input.twitter) { - formData.append("twitter", input.twitter); - } - if (input.telegram) { - formData.append("telegram", input.telegram); - } - if (input.website) { - formData.append("website", input.website); - } - - // Fetch and process image - const imageResponse = await fetch(input.imageUrl); - const imageBlob = await imageResponse.blob(); - const imageFile = new File([imageBlob], "token_image.png", { type: "image/png" }); - - // Create final form data - const finalFormData = new FormData(); - for (const [key, value] of formData.entries()) { - finalFormData.append(key, value); - } - finalFormData.append("file", imageFile); - - // Upload metadata to IPFS - const metadataResponse = await fetch("https://pump.fun/api/ipfs", { - method: "POST", - body: finalFormData, - }); - - if (!metadataResponse.ok) { - throw new Error(`Metadata upload failed: ${metadataResponse.statusText}`); - } - - const metadataResult = await metadataResponse.json(); - - // Create token transaction - const payload = { - publicKey: agent.wallet_address.toBase58(), - action: "create", - tokenMetadata: { - name: metadataResult.metadata.name, - symbol: metadataResult.metadata.symbol, - uri: metadataResult.metadataUri, - }, - mint: mintKeypair.publicKey.toBase58(), - denominatedInSol: "true", - amount: input.initialLiquiditySOL || 0.0001, - slippage: input.slippageBps || 5, - priorityFee: input.priorityFee || 0.00005, - pool: "pump", - }; - - const txResponse = await fetch("https://pumpportal.fun/api/trade-local", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(payload), - }); - - if (!txResponse.ok) { - const errorText = await txResponse.text(); - throw new Error(`Transaction creation failed: ${txResponse.status} - ${errorText}`); - } - - // Process and sign transaction - const transactionData = await txResponse.arrayBuffer(); - const tx = VersionedTransaction.deserialize(new Uint8Array(transactionData)); - - // Get latest blockhash - const { blockhash, lastValidBlockHeight } = await agent.connection.getLatestBlockhash(); - tx.message.recentBlockhash = blockhash; - - // Sign transaction - tx.sign([mintKeypair, agent.wallet]); - - // Send transaction - const signature = await agent.connection.sendTransaction(tx, { - skipPreflight: false, - preflightCommitment: "confirmed", - maxRetries: 5, - }); - - // Wait for confirmation - const confirmation = await agent.connection.confirmTransaction({ - signature, - blockhash, - lastValidBlockHeight, - }); - - if (confirmation.value.err) { - throw new Error(`Transaction failed: ${confirmation.value.err}`); - } + const { tokenName, tokenTicker, description, imageUrl } = input; + const result = await launchPumpFunToken(agent, tokenName, tokenTicker, description, imageUrl, input); return { status: "success", - signature, - mint: mintKeypair.publicKey.toBase58(), - metadataUri: metadataResult.metadataUri, + signature: result.signature, + mint: result.mint, + metadataUri: result.metadataUri, message: "Successfully launched token on Pump.fun" }; } catch (error: any) { diff --git a/src/actions/lendAsset.ts b/src/actions/lendAsset.ts index 25e7258..b4b0885 100644 --- a/src/actions/lendAsset.ts +++ b/src/actions/lendAsset.ts @@ -2,6 +2,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { VersionedTransaction } from "@solana/web3.js"; +import { lendAsset } from "../tools"; const lendAssetAction: Action = { name: "solana_lend_asset", @@ -38,55 +39,11 @@ const lendAssetAction: Action = { try { const amount = input.amount as number; - const response = await fetch( - `https://blink.lulo.fi/actions?amount=${amount}&symbol=USDC`, - { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - account: agent.wallet.publicKey.toBase58(), - }), - } - ); - - if (!response.ok) { - return { - status: "error", - message: `Failed to get lending transaction: ${response.statusText}` - }; - } - - const data = await response.json(); - - // Deserialize the transaction - const luloTxn = VersionedTransaction.deserialize( - Buffer.from(data.transaction, "base64") - ); - - // Get a recent blockhash and set it - const { blockhash } = await agent.connection.getLatestBlockhash(); - luloTxn.message.recentBlockhash = blockhash; - - // Sign and send transaction - luloTxn.sign([agent.wallet]); - const signature = await agent.connection.sendTransaction(luloTxn, { - preflightCommitment: "confirmed", - maxRetries: 3, - }); - - // Wait for confirmation - const latestBlockhash = await agent.connection.getLatestBlockhash(); - await agent.connection.confirmTransaction({ - signature, - blockhash: latestBlockhash.blockhash, - lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, - }); + const response = await lendAsset(agent, amount); return { status: "success", - signature, + signature: response, message: `Successfully lent ${amount} USDC` }; } catch (error: any) { diff --git a/src/actions/mintNFT.ts b/src/actions/mintNFT.ts index 4e9e6ae..ef26ec4 100644 --- a/src/actions/mintNFT.ts +++ b/src/actions/mintNFT.ts @@ -2,6 +2,7 @@ import { PublicKey } from "@solana/web3.js"; import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; +import { mintCollectionNFT } from "../tools"; const mintNFTAction: Action = { name: "solana_mint_nft", @@ -63,13 +64,14 @@ const mintNFTAction: Action = { recipient: z.string().min(32, "Invalid recipient address").optional() }), handler: async (agent: SolanaAgentKit, input: Record) => { - const result = await agent.mintNFT( + const result = await mintCollectionNFT( + agent, new PublicKey(input.collectionMint), { name: input.name, - uri: input.uri, + uri: input.uri }, - input.recipient ? new PublicKey(input.recipient) : agent.wallet_address + input.recipient ? new PublicKey(input.recipient) : undefined ); return { diff --git a/src/actions/pythFetchPrice.ts b/src/actions/pythFetchPrice.ts index acafeb0..1c1f9e0 100644 --- a/src/actions/pythFetchPrice.ts +++ b/src/actions/pythFetchPrice.ts @@ -3,6 +3,7 @@ import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { PriceServiceConnection } from "@pythnetwork/price-service-client"; import BN from "bn.js"; +import { pythFetchPrice } from "../tools"; const pythFetchPriceAction: Action = { name: "solana_pyth_fetch_price", @@ -39,27 +40,7 @@ const pythFetchPriceAction: Action = { try { const priceFeedId = input.priceFeedId as string; - // Connect to Hermes service - const stableHermesServiceUrl = "https://hermes.pyth.network"; - const connection = new PriceServiceConnection(stableHermesServiceUrl); - const feeds = [priceFeedId]; - - const currentPrice = await connection.getLatestPriceFeeds(feeds); - - if (!currentPrice || currentPrice.length === 0) { - return { - status: "error", - message: "Price data not available for the given feed ID" - }; - } - - // Get price and exponent from price feed - const price = new BN(currentPrice[0].getPriceUnchecked().price); - const exponent = new BN(currentPrice[0].getPriceUnchecked().expo); - - // Convert to scaled price - const scaledPrice = price.div(new BN(10).pow(exponent)); - const priceStr = scaledPrice.toString(); + const priceStr = await pythFetchPrice(priceFeedId); return { status: "success", diff --git a/src/actions/raydiumCreateAmmV4.ts b/src/actions/raydiumCreateAmmV4.ts index 6c4c357..afda966 100644 --- a/src/actions/raydiumCreateAmmV4.ts +++ b/src/actions/raydiumCreateAmmV4.ts @@ -12,6 +12,7 @@ import { import { MintLayout, TOKEN_PROGRAM_ID } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; import BN from "bn.js"; +import { raydiumCreateAmmV4 } from "../tools"; const raydiumCreateAmmV4Action: Action = { name: "solana_raydium_create_amm_v4", @@ -72,70 +73,7 @@ const raydiumCreateAmmV4Action: Action = { const quoteAmount = new BN(input.quoteAmount); const startTime = new BN(input.startTime); - const raydium = await Raydium.load({ - owner: agent.wallet, - connection: agent.connection, - }); - - const marketBufferInfo = await agent.connection.getAccountInfo( - new PublicKey(marketId), - ); - const { baseMint, quoteMint } = MARKET_STATE_LAYOUT_V3.decode( - marketBufferInfo!.data, - ); - - const baseMintInfo = await agent.connection.getAccountInfo(baseMint); - const quoteMintInfo = await agent.connection.getAccountInfo(quoteMint); - - if ( - baseMintInfo?.owner.toString() !== TOKEN_PROGRAM_ID.toBase58() || - quoteMintInfo?.owner.toString() !== TOKEN_PROGRAM_ID.toBase58() - ) { - throw new Error( - "amm pools with openbook market only support TOKEN_PROGRAM_ID mints, if you want to create pool with token-2022, please create cpmm pool instead", - ); - } - - if ( - baseAmount - .mul(quoteAmount) - .lte( - new BN(1) - .mul(new BN(10 ** MintLayout.decode(baseMintInfo.data).decimals)) - .pow(new BN(2)), - ) - ) { - throw new Error( - "initial liquidity too low, try adding more baseAmount/quoteAmount", - ); - } - - const { execute } = await raydium.liquidity.createPoolV4({ - programId: AMM_V4, - marketInfo: { - marketId, - programId: OPEN_BOOK_PROGRAM, - }, - baseMintInfo: { - mint: baseMint, - decimals: MintLayout.decode(baseMintInfo.data).decimals, - }, - quoteMintInfo: { - mint: quoteMint, - decimals: MintLayout.decode(quoteMintInfo.data).decimals, - }, - baseAmount, - quoteAmount, - startTime, - ownerInfo: { - useSOLBalance: true, - }, - associatedOnly: false, - txVersion: TxVersion.V0, - feeDestinationId: FEE_DESTINATION_ID, - }); - - const { txId } = await execute({ sendAndConfirm: true }); + const txId = await raydiumCreateAmmV4(agent, marketId, baseAmount, quoteAmount, startTime); return { status: "success", diff --git a/src/actions/raydiumCreateCpmm.ts b/src/actions/raydiumCreateCpmm.ts index faea973..0e6795c 100644 --- a/src/actions/raydiumCreateCpmm.ts +++ b/src/actions/raydiumCreateCpmm.ts @@ -10,6 +10,7 @@ import { import { MintLayout } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; import BN from "bn.js"; +import { raydiumCreateCpmm } from "../tools"; const raydiumCreateCpmmAction: Action = { name: "solana_raydium_create_cpmm", @@ -68,62 +69,7 @@ const raydiumCreateCpmmAction: Action = { const mintBAmount = new BN(input.quoteAmount); const startTime = new BN(input.startTime); - const raydium = await Raydium.load({ - owner: agent.wallet, - connection: agent.connection, - }); - - const [mintInfoA, mintInfoB] = await agent.connection.getMultipleAccountsInfo( - [mintA, mintB], - ); - if (mintInfoA === null || mintInfoB === null) { - throw Error("fetch mint info error"); - } - - const mintDecodeInfoA = MintLayout.decode(mintInfoA.data); - const mintDecodeInfoB = MintLayout.decode(mintInfoB.data); - - const mintFormatInfoA = { - chainId: 101, - address: mintA.toString(), - programId: mintInfoA.owner.toString(), - logoURI: "", - symbol: "", - name: "", - decimals: mintDecodeInfoA.decimals, - tags: [], - extensions: {}, - }; - const mintFormatInfoB = { - chainId: 101, - address: mintB.toString(), - programId: mintInfoB.owner.toString(), - logoURI: "", - symbol: "", - name: "", - decimals: mintDecodeInfoB.decimals, - tags: [], - extensions: {}, - }; - - const { execute } = await raydium.cpmm.createPool({ - programId: CREATE_CPMM_POOL_PROGRAM, - poolFeeAccount: CREATE_CPMM_POOL_FEE_ACC, - mintA: mintFormatInfoA, - mintB: mintFormatInfoB, - mintAAmount, - mintBAmount, - startTime, - //@ts-expect-error sdk bug - feeConfig: { id: configId.toString() }, - associatedOnly: false, - ownerInfo: { - useSOLBalance: true, - }, - txVersion: TxVersion.V0, - }); - - const { txId } = await execute({ sendAndConfirm: true }); + const txId = await raydiumCreateCpmm(agent, mintA, mintB, configId, mintAAmount, mintBAmount, startTime); return { status: "success", diff --git a/src/actions/registerDomain.ts b/src/actions/registerDomain.ts index 02b92d3..50b398a 100644 --- a/src/actions/registerDomain.ts +++ b/src/actions/registerDomain.ts @@ -5,6 +5,7 @@ import { Transaction } from "@solana/web3.js"; import { registerDomainNameV2 } from "@bonfida/spl-name-service"; import { getAssociatedTokenAddressSync } from "@solana/spl-token"; import { TOKENS } from "../constants"; +import { registerDomain } from "../tools"; const registerDomainAction: Action = { name: "solana_register_domain", @@ -48,50 +49,7 @@ const registerDomainAction: Action = { const name = input.name as string; const spaceKB = (input.spaceKB as number) || 1; - // Validate space size - if (spaceKB > 10) { - return { - status: "error", - message: "Maximum domain size is 10KB" - }; - } - - // Convert KB to bytes - const space = spaceKB * 1_000; - - const buyerTokenAccount = await getAssociatedTokenAddressSync( - agent.wallet_address, - TOKENS.USDC - ); - - // Create registration instruction - const instruction = await registerDomainNameV2( - agent.connection, - name, - space, - agent.wallet_address, - buyerTokenAccount - ); - - // Create and sign transaction - const transaction = new Transaction().add(...instruction); - transaction.recentBlockhash = ( - await agent.connection.getLatestBlockhash() - ).blockhash; - transaction.feePayer = agent.wallet_address; - - // Sign and send transaction - const signature = await agent.connection.sendTransaction(transaction, [ - agent.wallet - ]); - - // Wait for confirmation - const latestBlockhash = await agent.connection.getLatestBlockhash(); - await agent.connection.confirmTransaction({ - signature, - blockhash: latestBlockhash.blockhash, - lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, - }); + const signature = await registerDomain(agent, name, spaceKB); return { status: "success", diff --git a/src/actions/requestFunds.ts b/src/actions/requestFunds.ts index 03159a7..49e4c2b 100644 --- a/src/actions/requestFunds.ts +++ b/src/actions/requestFunds.ts @@ -1,6 +1,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; +import { request_faucet_funds } from "../tools"; const requestFundsAction: Action = { name: "solana_request_funds", @@ -27,7 +28,7 @@ const requestFundsAction: Action = { ], schema: z.object({}), // No input parameters required handler: async (agent: SolanaAgentKit, _input: Record) => { - await agent.requestFaucetFunds(); + await request_faucet_funds(agent); return { status: "success", diff --git a/src/actions/resolveDomain.ts b/src/actions/resolveDomain.ts index 049c3df..1d6307a 100644 --- a/src/actions/resolveDomain.ts +++ b/src/actions/resolveDomain.ts @@ -2,6 +2,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { TldParser } from "@onsol/tldparser"; +import { resolveAllDomains } from "../tools"; const resolveDomainAction: Action = { name: "solana_resolve_domain", @@ -33,20 +34,10 @@ const resolveDomainAction: Action = { handler: async (agent: SolanaAgentKit, input: Record) => { try { const domain = input.domain as string; - const tld = await new TldParser(agent.connection).getOwnerFromDomainTld( - domain - ); - - if (!tld) { - return { - status: "error", - message: "Domain not found" - }; - } - + const tld = await resolveAllDomains(agent, domain); return { status: "success", - owner: tld.toBase58(), + owner: tld, message: `Successfully resolved domain ${domain}` }; } catch (error: any) { diff --git a/src/actions/resolveSolDomain.ts b/src/actions/resolveSolDomain.ts index 481acef..ce13fe3 100644 --- a/src/actions/resolveSolDomain.ts +++ b/src/actions/resolveSolDomain.ts @@ -2,6 +2,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { resolve } from "@bonfida/spl-name-service"; +import { resolveSolDomain } from "../tools"; const resolveSolDomainAction: Action = { name: "solana_resolve_sol_domain", @@ -38,24 +39,12 @@ const resolveSolDomainAction: Action = { try { const domain = input.domain as string; - if (!domain || typeof domain !== "string") { - return { - status: "error", - message: "Invalid domain. Expected a non-empty string." - }; - } - - // Remove .sol suffix if present for consistent handling - const cleanDomain = domain.toLowerCase().endsWith(".sol") - ? domain.slice(0, -4) - : domain; - - const ownerAddress = await resolve(agent.connection, cleanDomain); + const res = await resolveSolDomain(agent,domain) return { status: "success", - owner: ownerAddress.toBase58(), - message: `Successfully resolved ${cleanDomain}.sol` + owner: res.toString(), + message: `Successfully resolved ${res}` }; } catch (error: any) { return { diff --git a/src/actions/stakeWithJup.ts b/src/actions/stakeWithJup.ts index 271f902..7110a72 100644 --- a/src/actions/stakeWithJup.ts +++ b/src/actions/stakeWithJup.ts @@ -2,6 +2,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { VersionedTransaction } from "@solana/web3.js"; +import { stakeWithJup, trade } from "../tools"; const stakeWithJupAction: Action = { name: "solana_stake_with_jup", @@ -38,55 +39,10 @@ const stakeWithJupAction: Action = { try { const amount = input.amount as number; - // Get staking transaction from Jupiter - const res = await fetch( - `https://worker.jup.ag/blinks/swap/So11111111111111111111111111111111111111112/jupSoLaHXQiZZTSfEWMTRRgpnyFm8f6sZdosWBjx93v/${amount}`, - { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - account: agent.wallet.publicKey.toBase58(), - }), - } - ); - - if (!res.ok) { - return { - status: "error", - message: `Failed to get staking transaction: ${res.statusText}` - }; - } - - const data = await res.json(); - - // Deserialize and prepare transaction - const txn = VersionedTransaction.deserialize( - Buffer.from(data.transaction, "base64") - ); - - const { blockhash } = await agent.connection.getLatestBlockhash(); - txn.message.recentBlockhash = blockhash; - - // Sign and send transaction - txn.sign([agent.wallet]); - const signature = await agent.connection.sendTransaction(txn, { - preflightCommitment: "confirmed", - maxRetries: 3, - }); - - // Confirm transaction - const latestBlockhash = await agent.connection.getLatestBlockhash(); - await agent.connection.confirmTransaction({ - signature, - blockhash: latestBlockhash.blockhash, - lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, - }); - + const res = await stakeWithJup(agent,amount) return { status: "success", - signature, + res, message: `Successfully staked ${amount} SOL for jupSOL` }; } catch (error: any) { diff --git a/src/actions/trade.ts b/src/actions/trade.ts index 8a536b3..bb27f79 100644 --- a/src/actions/trade.ts +++ b/src/actions/trade.ts @@ -2,6 +2,7 @@ import { PublicKey } from "@solana/web3.js"; import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; +import { trade } from "../tools"; const tradeAction: Action = { name: "solana_trade", @@ -58,7 +59,7 @@ const tradeAction: Action = { slippageBps: z.number().min(0).max(10000).optional() }), handler: async (agent: SolanaAgentKit, input: Record) => { - const tx = await agent.trade( + const tx = await trade(agent, new PublicKey(input.outputMint), input.inputAmount, input.inputMint diff --git a/src/actions/transfer.ts b/src/actions/transfer.ts index 426a071..3769481 100644 --- a/src/actions/transfer.ts +++ b/src/actions/transfer.ts @@ -2,6 +2,7 @@ import { PublicKey } from "@solana/web3.js"; import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; +import { transfer } from "../tools"; const transferAction: Action = { name: "solana_transfer", @@ -59,7 +60,7 @@ const transferAction: Action = { const recipient = new PublicKey(input.to); const mintAddress = input.mint ? new PublicKey(input.mint) : undefined; - const tx = await agent.transfer(recipient, input.amount, mintAddress); + const tx = await transfer(agent,recipient, input.amount, mintAddress); return { status: "success", From e48959fb1a963c8f481d9bc6f86781d319064c5a Mon Sep 17 00:00:00 2001 From: Fahri Bilici <28020526+FahriBilici@users.noreply.github.com> Date: Sat, 28 Dec 2024 16:48:10 +0100 Subject: [PATCH 15/94] fix: Make recipient address mandatory in mintNFT action validation --- src/actions/mintNFT.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/actions/mintNFT.ts b/src/actions/mintNFT.ts index ef26ec4..949514c 100644 --- a/src/actions/mintNFT.ts +++ b/src/actions/mintNFT.ts @@ -61,7 +61,7 @@ const mintNFTAction: Action = { collectionMint: z.string().min(32, "Invalid collection mint address"), name: z.string().min(1, "Name is required"), uri: z.string().url("URI must be a valid URL"), - recipient: z.string().min(32, "Invalid recipient address").optional() + recipient: z.string().min(32, "Invalid recipient address") }), handler: async (agent: SolanaAgentKit, input: Record) => { const result = await mintCollectionNFT( From 67dc873a0452579f5f3b65d55f5720a161b53edb Mon Sep 17 00:00:00 2001 From: Lautaro Date: Sun, 29 Dec 2024 03:26:09 -0300 Subject: [PATCH 16/94] Add: tensor trade support --- package-lock.json | 7584 +++++++++++++++++++++++++++++++++++++ package.json | 1 + src/agent/index.ts | 24 + src/langchain/index.ts | 130 + src/tools/index.ts | 2 + src/tools/tensor_trade.ts | 112 + 6 files changed, 7853 insertions(+) create mode 100644 package-lock.json create mode 100644 src/tools/tensor_trade.ts diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..dc9267d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7584 @@ +{ + "name": "solana-agent-kit", + "version": "1.3.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "solana-agent-kit", + "version": "1.3.0", + "license": "Apache-2.0", + "dependencies": { + "@bonfida/spl-name-service": "^3.0.7", + "@coral-xyz/anchor": "0.29", + "@langchain/core": "^0.3.26", + "@langchain/groq": "^0.1.2", + "@langchain/langgraph": "^0.2.34", + "@langchain/openai": "^0.3.13", + "@lightprotocol/compressed-token": "^0.17.1", + "@lightprotocol/stateless.js": "^0.17.1", + "@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-web3js-adapters": "^0.9.2", + "@onsol/tldparser": "^0.6.7", + "@orca-so/common-sdk": "0.6.4", + "@orca-so/whirlpools-sdk": "^0.13.12", + "@pythnetwork/price-service-client": "^1.9.0", + "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", + "@solana/spl-token": "^0.4.9", + "@solana/web3.js": "^1.95.4", + "@tensor-oss/tcomp-sdk": "^6.0.0", + "@tiplink/api": "^0.3.1", + "bn.js": "^5.2.1", + "bs58": "^6.0.0", + "chai": "^5.1.2", + "decimal.js": "^10.4.3", + "dotenv": "^16.4.5", + "form-data": "^4.0.1", + "langchain": "^0.3.6", + "openai": "^4.75.0", + "typedoc": "^0.26.11" + }, + "devDependencies": { + "@types/bn.js": "^5.1.5", + "@types/chai": "^5.0.1", + "@types/node": "^22.9.0", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.2.5", + "ts-node": "^10.9.2", + "typescript": "^5.7.2" + }, + "engines": { + "node": ">=23.1.0", + "pnpm": ">=8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bonfida/sns-records": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@bonfida/sns-records/-/sns-records-0.0.1.tgz", + "integrity": "sha512-i28w9+BMFufhhpmLQCNx1CKKXTsEn+5RT18VFpPqdGO3sqaYlnUWC1m3wDpOvlzGk498dljgRpRo5wmcsnuEMg==", + "license": "MIT", + "dependencies": { + "borsh": "1.0.0", + "bs58": "5.0.0", + "buffer": "^6.0.3" + }, + "peerDependencies": { + "@solana/web3.js": "^1.87.3" + } + }, + "node_modules/@bonfida/sns-records/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", + "license": "MIT" + }, + "node_modules/@bonfida/sns-records/node_modules/borsh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", + "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", + "license": "Apache-2.0" + }, + "node_modules/@bonfida/sns-records/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "license": "MIT", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@bonfida/spl-name-service": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@bonfida/spl-name-service/-/spl-name-service-3.0.7.tgz", + "integrity": "sha512-okOLXhy+fQoyQ/sZgMleO5RrIZfTkWEoHMxWgUqg6RP/MTBlrKxlhKC6ymKn4UUe0C5s3Nb8A+3Ams7vX0nMDg==", + "license": "MIT", + "dependencies": { + "@bonfida/sns-records": "0.0.1", + "@noble/curves": "^1.4.0", + "@scure/base": "^1.1.6", + "@solana/spl-token": "0.4.6", + "borsh": "2.0.0", + "buffer": "^6.0.3", + "graphemesplit": "^2.4.4", + "ipaddr.js": "^2.2.0", + "punycode": "^2.3.1" + }, + "peerDependencies": { + "@solana/web3.js": "^1.87.3" + } + }, + "node_modules/@bonfida/spl-name-service/node_modules/@solana/codecs": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-2.0.0-preview.2.tgz", + "integrity": "sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/codecs-data-structures": "2.0.0-preview.2", + "@solana/codecs-numbers": "2.0.0-preview.2", + "@solana/codecs-strings": "2.0.0-preview.2", + "@solana/options": "2.0.0-preview.2" + } + }, + "node_modules/@bonfida/spl-name-service/node_modules/@solana/codecs-core": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.0.0-preview.2.tgz", + "integrity": "sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.0.0-preview.2" + } + }, + "node_modules/@bonfida/spl-name-service/node_modules/@solana/codecs-data-structures": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.2.tgz", + "integrity": "sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/codecs-numbers": "2.0.0-preview.2", + "@solana/errors": "2.0.0-preview.2" + } + }, + "node_modules/@bonfida/spl-name-service/node_modules/@solana/codecs-numbers": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.2.tgz", + "integrity": "sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/errors": "2.0.0-preview.2" + } + }, + "node_modules/@bonfida/spl-name-service/node_modules/@solana/codecs-strings": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.2.tgz", + "integrity": "sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/codecs-numbers": "2.0.0-preview.2", + "@solana/errors": "2.0.0-preview.2" + }, + "peerDependencies": { + "fastestsmallesttextencoderdecoder": "^1.0.22" + } + }, + "node_modules/@bonfida/spl-name-service/node_modules/@solana/errors": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.0.0-preview.2.tgz", + "integrity": "sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "commander": "^12.0.0" + }, + "bin": { + "errors": "bin/cli.js" + } + }, + "node_modules/@bonfida/spl-name-service/node_modules/@solana/options": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/options/-/options-2.0.0-preview.2.tgz", + "integrity": "sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/codecs-numbers": "2.0.0-preview.2" + } + }, + "node_modules/@bonfida/spl-name-service/node_modules/@solana/spl-token": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.4.6.tgz", + "integrity": "sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==", + "license": "Apache-2.0", + "dependencies": { + "@solana/buffer-layout": "^4.0.0", + "@solana/buffer-layout-utils": "^0.2.0", + "@solana/spl-token-group": "^0.0.4", + "@solana/spl-token-metadata": "^0.1.4", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.91.6" + } + }, + "node_modules/@bonfida/spl-name-service/node_modules/@solana/spl-token-group": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@solana/spl-token-group/-/spl-token-group-0.0.4.tgz", + "integrity": "sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw==", + "license": "Apache-2.0", + "dependencies": { + "@solana/codecs": "2.0.0-preview.2", + "@solana/spl-type-length-value": "0.1.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.91.6" + } + }, + "node_modules/@cfworker/json-schema": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cfworker/json-schema/-/json-schema-4.0.3.tgz", + "integrity": "sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==", + "license": "MIT" + }, + "node_modules/@coral-xyz/anchor": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.29.0.tgz", + "integrity": "sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "@coral-xyz/borsh": "^0.29.0", + "@noble/hashes": "^1.3.1", + "@solana/web3.js": "^1.68.0", + "bn.js": "^5.1.2", + "bs58": "^4.0.1", + "buffer-layout": "^1.2.2", + "camelcase": "^6.3.0", + "cross-fetch": "^3.1.5", + "crypto-hash": "^1.3.0", + "eventemitter3": "^4.0.7", + "pako": "^2.0.3", + "snake-case": "^3.0.4", + "superstruct": "^0.15.4", + "toml": "^3.0.0" + }, + "engines": { + "node": ">=11" + } + }, + "node_modules/@coral-xyz/anchor/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@coral-xyz/anchor/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@coral-xyz/borsh": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.29.0.tgz", + "integrity": "sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.1.2", + "buffer-layout": "^1.2.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@solana/web3.js": "^1.68.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "license": "MPL-2.0", + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@langchain/core": { + "version": "0.3.26", + "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.26.tgz", + "integrity": "sha512-6RUQHEp8wv+JwtYIIEBYBzbLlcAQZFc7EDOgAM0ukExjh9HiXoJzoWpgMRRCrr/koIbtwXPJUqBprZK1I1CXHQ==", + "license": "MIT", + "dependencies": { + "@cfworker/json-schema": "^4.0.2", + "ansi-styles": "^5.0.0", + "camelcase": "6", + "decamelize": "1.2.0", + "js-tiktoken": "^1.0.12", + "langsmith": "^0.2.8", + "mustache": "^4.2.0", + "p-queue": "^6.6.2", + "p-retry": "4", + "uuid": "^10.0.0", + "zod": "^3.22.4", + "zod-to-json-schema": "^3.22.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@langchain/groq": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@langchain/groq/-/groq-0.1.2.tgz", + "integrity": "sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==", + "license": "MIT", + "dependencies": { + "@langchain/openai": "~0.3.0", + "groq-sdk": "^0.5.0", + "zod": "^3.22.4", + "zod-to-json-schema": "^3.22.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@langchain/core": ">=0.2.21 <0.4.0" + } + }, + "node_modules/@langchain/langgraph": { + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@langchain/langgraph/-/langgraph-0.2.36.tgz", + "integrity": "sha512-zxk7ZCVxP0/Ut9785EiXCS7BE7sXd8cu943mcZUF2aNFUaQRTBbbiKpNdR3nb1+xO/B+HVktrJT2VFdkAywnng==", + "license": "MIT", + "dependencies": { + "@langchain/langgraph-checkpoint": "~0.0.13", + "@langchain/langgraph-sdk": "~0.0.21", + "uuid": "^10.0.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@langchain/core": ">=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0" + } + }, + "node_modules/@langchain/langgraph-checkpoint": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-0.0.13.tgz", + "integrity": "sha512-amdmBcNT8a9xP2VwcEWxqArng4gtRDcnVyVI4DsQIo1Aaz8e8+hH17zSwrUF3pt1pIYztngIfYnBOim31mtKMg==", + "license": "MIT", + "dependencies": { + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@langchain/core": ">=0.2.31 <0.4.0" + } + }, + "node_modules/@langchain/langgraph-sdk": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.32.tgz", + "integrity": "sha512-KQyM9kLO7T6AxwNrceajH7JOybP3pYpvUPnhiI2rrVndI1WyZUJ1eVC1e722BVRAPi6o+WcoTT4uMSZVinPOtA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.15", + "p-queue": "^6.6.2", + "p-retry": "4", + "uuid": "^9.0.0" + } + }, + "node_modules/@langchain/langgraph-sdk/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@langchain/openai": { + "version": "0.3.16", + "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.3.16.tgz", + "integrity": "sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA==", + "license": "MIT", + "dependencies": { + "js-tiktoken": "^1.0.12", + "openai": "^4.77.0", + "zod": "^3.22.4", + "zod-to-json-schema": "^3.22.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@langchain/core": ">=0.2.26 <0.4.0" + } + }, + "node_modules/@langchain/textsplitters": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@langchain/textsplitters/-/textsplitters-0.1.0.tgz", + "integrity": "sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==", + "license": "MIT", + "dependencies": { + "js-tiktoken": "^1.0.12" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@langchain/core": ">=0.2.21 <0.4.0" + } + }, + "node_modules/@lightprotocol/compressed-token": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@lightprotocol/compressed-token/-/compressed-token-0.17.1.tgz", + "integrity": "sha512-493KCmZGw1BcHVRJaeRm8EEs+L7gX8dwY7JG13w2pfgOMtZXZ7Wxt261jFJxQJzRLTrUSlrbRJOmfW1+S1Y8SQ==", + "license": "Apache-2.0", + "dependencies": { + "@coral-xyz/anchor": "0.29.0", + "@solana/spl-token": "0.4.8", + "@solana/web3.js": "1.95.3", + "buffer": "6.0.3", + "tweetnacl": "1.0.3" + }, + "peerDependencies": { + "@lightprotocol/stateless.js": "0.17.1" + } + }, + "node_modules/@lightprotocol/compressed-token/node_modules/@solana/codecs": { + "version": "2.0.0-preview.4", + "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-2.0.0-preview.4.tgz", + "integrity": "sha512-gLMupqI4i+G4uPi2SGF/Tc1aXcviZF2ybC81x7Q/fARamNSgNOCUUoSCg9nWu1Gid6+UhA7LH80sWI8XjKaRog==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.4", + "@solana/codecs-data-structures": "2.0.0-preview.4", + "@solana/codecs-numbers": "2.0.0-preview.4", + "@solana/codecs-strings": "2.0.0-preview.4", + "@solana/options": "2.0.0-preview.4" + }, + "peerDependencies": { + "typescript": ">=5" + } + }, + "node_modules/@lightprotocol/compressed-token/node_modules/@solana/codecs-core": { + "version": "2.0.0-preview.4", + "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.0.0-preview.4.tgz", + "integrity": "sha512-A0VVuDDA5kNKZUinOqHxJQK32aKTucaVbvn31YenGzHX1gPqq+SOnFwgaEY6pq4XEopSmaK16w938ZQS8IvCnw==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.0.0-preview.4" + }, + "peerDependencies": { + "typescript": ">=5" + } + }, + "node_modules/@lightprotocol/compressed-token/node_modules/@solana/codecs-data-structures": { + "version": "2.0.0-preview.4", + "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.4.tgz", + "integrity": "sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.4", + "@solana/codecs-numbers": "2.0.0-preview.4", + "@solana/errors": "2.0.0-preview.4" + }, + "peerDependencies": { + "typescript": ">=5" + } + }, + "node_modules/@lightprotocol/compressed-token/node_modules/@solana/codecs-numbers": { + "version": "2.0.0-preview.4", + "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.4.tgz", + "integrity": "sha512-Q061rLtMadsO7uxpguT+Z7G4UHnjQ6moVIxAQxR58nLxDPCC7MB1Pk106/Z7NDhDLHTcd18uO6DZ7ajHZEn2XQ==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.4", + "@solana/errors": "2.0.0-preview.4" + }, + "peerDependencies": { + "typescript": ">=5" + } + }, + "node_modules/@lightprotocol/compressed-token/node_modules/@solana/codecs-strings": { + "version": "2.0.0-preview.4", + "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.4.tgz", + "integrity": "sha512-YDbsQePRWm+xnrfS64losSGRg8Wb76cjK1K6qfR8LPmdwIC3787x9uW5/E4icl/k+9nwgbIRXZ65lpF+ucZUnw==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.4", + "@solana/codecs-numbers": "2.0.0-preview.4", + "@solana/errors": "2.0.0-preview.4" + }, + "peerDependencies": { + "fastestsmallesttextencoderdecoder": "^1.0.22", + "typescript": ">=5" + } + }, + "node_modules/@lightprotocol/compressed-token/node_modules/@solana/errors": { + "version": "2.0.0-preview.4", + "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.0.0-preview.4.tgz", + "integrity": "sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "commander": "^12.1.0" + }, + "bin": { + "errors": "bin/cli.mjs" + }, + "peerDependencies": { + "typescript": ">=5" + } + }, + "node_modules/@lightprotocol/compressed-token/node_modules/@solana/options": { + "version": "2.0.0-preview.4", + "resolved": "https://registry.npmjs.org/@solana/options/-/options-2.0.0-preview.4.tgz", + "integrity": "sha512-tv2O/Frxql/wSe3jbzi5nVicIWIus/BftH+5ZR+r9r3FO0/htEllZS5Q9XdbmSboHu+St87584JXeDx3xm4jaA==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.4", + "@solana/codecs-data-structures": "2.0.0-preview.4", + "@solana/codecs-numbers": "2.0.0-preview.4", + "@solana/codecs-strings": "2.0.0-preview.4", + "@solana/errors": "2.0.0-preview.4" + }, + "peerDependencies": { + "typescript": ">=5" + } + }, + "node_modules/@lightprotocol/compressed-token/node_modules/@solana/spl-token": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.4.8.tgz", + "integrity": "sha512-RO0JD9vPRi4LsAbMUdNbDJ5/cv2z11MGhtAvFeRzT4+hAGE/FUzRi0tkkWtuCfSIU3twC6CtmAihRp/+XXjWsA==", + "license": "Apache-2.0", + "dependencies": { + "@solana/buffer-layout": "^4.0.0", + "@solana/buffer-layout-utils": "^0.2.0", + "@solana/spl-token-group": "^0.0.5", + "@solana/spl-token-metadata": "^0.1.3", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.94.0" + } + }, + "node_modules/@lightprotocol/compressed-token/node_modules/@solana/spl-token-group": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@solana/spl-token-group/-/spl-token-group-0.0.5.tgz", + "integrity": "sha512-CLJnWEcdoUBpQJfx9WEbX3h6nTdNiUzswfFdkABUik7HVwSNA98u5AYvBVK2H93d9PGMOHAak2lHW9xr+zAJGQ==", + "license": "Apache-2.0", + "dependencies": { + "@solana/codecs": "2.0.0-preview.4", + "@solana/spl-type-length-value": "0.1.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.94.0" + } + }, + "node_modules/@lightprotocol/compressed-token/node_modules/@solana/web3.js": { + "version": "1.95.3", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.95.3.tgz", + "integrity": "sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@solana/buffer-layout": "^4.0.1", + "agentkeepalive": "^4.5.0", + "bigint-buffer": "^1.1.5", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "bs58": "^4.0.1", + "buffer": "6.0.3", + "fast-stable-stringify": "^1.0.0", + "jayson": "^4.1.1", + "node-fetch": "^2.7.0", + "rpc-websockets": "^9.0.2", + "superstruct": "^2.0.2" + } + }, + "node_modules/@lightprotocol/compressed-token/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@lightprotocol/compressed-token/node_modules/borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, + "node_modules/@lightprotocol/compressed-token/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@lightprotocol/compressed-token/node_modules/superstruct": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", + "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@lightprotocol/stateless.js": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@lightprotocol/stateless.js/-/stateless.js-0.17.1.tgz", + "integrity": "sha512-EjId1n33A6dBwpce33Wsa/fs/CDKtMtRrkxbApH0alXrnEXmbW6QhIViXOrKYXjZ4uJQM1xsBtsKe0vqJ4nbtQ==", + "license": "Apache-2.0", + "dependencies": { + "@coral-xyz/anchor": "0.29.0", + "@noble/hashes": "1.5.0", + "@solana/web3.js": "1.95.3", + "buffer": "6.0.3", + "superstruct": "2.0.2", + "tweetnacl": "1.0.3" + } + }, + "node_modules/@lightprotocol/stateless.js/node_modules/@noble/hashes": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@lightprotocol/stateless.js/node_modules/@solana/web3.js": { + "version": "1.95.3", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.95.3.tgz", + "integrity": "sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@solana/buffer-layout": "^4.0.1", + "agentkeepalive": "^4.5.0", + "bigint-buffer": "^1.1.5", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "bs58": "^4.0.1", + "buffer": "6.0.3", + "fast-stable-stringify": "^1.0.0", + "jayson": "^4.1.1", + "node-fetch": "^2.7.0", + "rpc-websockets": "^9.0.2", + "superstruct": "^2.0.2" + } + }, + "node_modules/@lightprotocol/stateless.js/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@lightprotocol/stateless.js/node_modules/borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, + "node_modules/@lightprotocol/stateless.js/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@lightprotocol/stateless.js/node_modules/superstruct": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", + "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@metaplex-foundation/beet": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet/-/beet-0.7.2.tgz", + "integrity": "sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==", + "license": "Apache-2.0", + "dependencies": { + "ansicolors": "^0.3.2", + "assert": "^2.1.0", + "bn.js": "^5.2.0", + "debug": "^4.3.3" + } + }, + "node_modules/@metaplex-foundation/beet-solana": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet-solana/-/beet-solana-0.4.1.tgz", + "integrity": "sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==", + "license": "Apache-2.0", + "dependencies": { + "@metaplex-foundation/beet": ">=0.1.0", + "@solana/web3.js": "^1.56.2", + "bs58": "^5.0.0", + "debug": "^4.3.4" + } + }, + "node_modules/@metaplex-foundation/beet-solana/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", + "license": "MIT" + }, + "node_modules/@metaplex-foundation/beet-solana/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "license": "MIT", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@metaplex-foundation/cusper": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/cusper/-/cusper-0.0.2.tgz", + "integrity": "sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==", + "license": "Apache-2.0" + }, + "node_modules/@metaplex-foundation/mpl-auction-house": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-auction-house/-/mpl-auction-house-2.5.1.tgz", + "integrity": "sha512-O+IAdYVaoOvgACB8pm+1lF5BNEjl0COkqny2Ho8KQZwka6aC/vHbZ239yRwAMtJhf5992BPFdT4oifjyE0O+Mw==", + "license": "Apache-2.0", + "dependencies": { + "@metaplex-foundation/beet": "^0.6.1", + "@metaplex-foundation/beet-solana": "^0.3.1", + "@metaplex-foundation/cusper": "^0.0.2", + "@solana/spl-token": "^0.3.5", + "@solana/web3.js": "^1.56.2", + "bn.js": "^5.2.0" + } + }, + "node_modules/@metaplex-foundation/mpl-auction-house/node_modules/@metaplex-foundation/beet": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet/-/beet-0.6.1.tgz", + "integrity": "sha512-OYgnijLFzw0cdUlRKH5POp0unQECPOW9muJ2X3QIVyak5G6I6l/rKo72sICgPLIFKdmsi2jmnkuLY7wp14iXdw==", + "license": "Apache-2.0", + "dependencies": { + "ansicolors": "^0.3.2", + "bn.js": "^5.2.0", + "debug": "^4.3.3" + } + }, + "node_modules/@metaplex-foundation/mpl-auction-house/node_modules/@metaplex-foundation/beet-solana": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet-solana/-/beet-solana-0.3.1.tgz", + "integrity": "sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g==", + "license": "Apache-2.0", + "dependencies": { + "@metaplex-foundation/beet": ">=0.1.0", + "@solana/web3.js": "^1.56.2", + "bs58": "^5.0.0", + "debug": "^4.3.4" + } + }, + "node_modules/@metaplex-foundation/mpl-auction-house/node_modules/@solana/spl-token": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", + "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", + "license": "Apache-2.0", + "dependencies": { + "@solana/buffer-layout": "^4.0.0", + "@solana/buffer-layout-utils": "^0.2.0", + "@solana/spl-token-metadata": "^0.1.2", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.88.0" + } + }, + "node_modules/@metaplex-foundation/mpl-auction-house/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", + "license": "MIT" + }, + "node_modules/@metaplex-foundation/mpl-auction-house/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "license": "MIT", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@metaplex-foundation/mpl-bubblegum": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-bubblegum/-/mpl-bubblegum-0.8.0.tgz", + "integrity": "sha512-GghMCIu1KjffCULPHqBd31DFvnRzCNKSu9Bf9W3X2TiLzdp5AKxT2oVQRcZRryaer3JTkvJLZfWjm9/psYstxA==", + "license": "Apache-2.0", + "dependencies": { + "@metaplex-foundation/beet": "0.7.1", + "@metaplex-foundation/beet-solana": "0.4.0", + "@metaplex-foundation/cusper": "^0.0.2", + "@metaplex-foundation/mpl-token-metadata": "^2.5.2", + "@solana/spl-account-compression": "^0.1.4", + "@solana/spl-token": "^0.1.8", + "@solana/web3.js": "^1.50.1", + "js-sha3": "^0.8.0" + } + }, + "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/@metaplex-foundation/beet": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet/-/beet-0.7.1.tgz", + "integrity": "sha512-hNCEnS2WyCiYyko82rwuISsBY3KYpe828ubsd2ckeqZr7tl0WVLivGkoyA/qdiaaHEBGdGl71OpfWa2rqL3DiA==", + "license": "Apache-2.0", + "dependencies": { + "ansicolors": "^0.3.2", + "bn.js": "^5.2.0", + "debug": "^4.3.3" + } + }, + "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/@metaplex-foundation/beet-solana": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet-solana/-/beet-solana-0.4.0.tgz", + "integrity": "sha512-B1L94N3ZGMo53b0uOSoznbuM5GBNJ8LwSeznxBxJ+OThvfHQ4B5oMUqb+0zdLRfkKGS7Q6tpHK9P+QK0j3w2cQ==", + "license": "Apache-2.0", + "dependencies": { + "@metaplex-foundation/beet": ">=0.1.0", + "@solana/web3.js": "^1.56.2", + "bs58": "^5.0.0", + "debug": "^4.3.4" + } + }, + "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/@metaplex-foundation/mpl-token-metadata": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-2.13.0.tgz", + "integrity": "sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/beet": "^0.7.1", + "@metaplex-foundation/beet-solana": "^0.4.0", + "@metaplex-foundation/cusper": "^0.0.2", + "@solana/spl-token": "^0.3.6", + "@solana/web3.js": "^1.66.2", + "bn.js": "^5.2.0", + "debug": "^4.3.4" + } + }, + "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/@metaplex-foundation/mpl-token-metadata/node_modules/@solana/spl-token": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", + "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", + "license": "Apache-2.0", + "dependencies": { + "@solana/buffer-layout": "^4.0.0", + "@solana/buffer-layout-utils": "^0.2.0", + "@solana/spl-token-metadata": "^0.1.2", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.88.0" + } + }, + "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/@solana/spl-token": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.1.8.tgz", + "integrity": "sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.5", + "@solana/web3.js": "^1.21.0", + "bn.js": "^5.1.0", + "buffer": "6.0.3", + "buffer-layout": "^1.2.0", + "dotenv": "10.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", + "license": "MIT" + }, + "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "license": "MIT", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/@metaplex-foundation/mpl-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-core/-/mpl-core-1.1.1.tgz", + "integrity": "sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA==", + "license": "Apache-2.0", + "dependencies": { + "@msgpack/msgpack": "^3.0.0-beta2" + }, + "peerDependencies": { + "@metaplex-foundation/umi": ">=0.8.2 < 1", + "@noble/hashes": "^1.3.1" + } + }, + "node_modules/@metaplex-foundation/mpl-token-auth-rules": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-token-auth-rules/-/mpl-token-auth-rules-3.0.3.tgz", + "integrity": "sha512-zpUpSNoHbcTO0w98s0E6rbkYi0UbEKK0x7qGwOz7ngMIqKRqOKT/Qovv+fDYVaRt//ijyUBbku1rnt4wS6hzrw==", + "license": "Apache-2.0", + "dependencies": { + "@msgpack/msgpack": "2.8.0" + }, + "peerDependencies": { + "@metaplex-foundation/umi": ">= 0.8.2 < 1" + } + }, + "node_modules/@metaplex-foundation/mpl-token-auth-rules/node_modules/@msgpack/msgpack": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@msgpack/msgpack/-/msgpack-2.8.0.tgz", + "integrity": "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==", + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@metaplex-foundation/mpl-token-metadata": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-3.3.0.tgz", + "integrity": "sha512-t5vO8Wr3ZZZPGrVrGNcosX5FMkwQSgBiVMQMRNDG2De7voYFJmIibD5jdG05EoQ4Y5kZVEiwhYaO+wJB3aO5AA==", + "license": "Apache-2.0", + "dependencies": { + "@metaplex-foundation/mpl-toolbox": "^0.9.4" + }, + "peerDependencies": { + "@metaplex-foundation/umi": ">= 0.8.2 < 1" + } + }, + "node_modules/@metaplex-foundation/mpl-toolbox": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-toolbox/-/mpl-toolbox-0.9.4.tgz", + "integrity": "sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ==", + "license": "Apache-2.0", + "peerDependencies": { + "@metaplex-foundation/umi": ">= 0.8.2 < 1" + } + }, + "node_modules/@metaplex-foundation/umi": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi/-/umi-0.9.2.tgz", + "integrity": "sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/umi-options": "^0.8.9", + "@metaplex-foundation/umi-public-keys": "^0.8.9", + "@metaplex-foundation/umi-serializers": "^0.9.0" + } + }, + "node_modules/@metaplex-foundation/umi-bundle-defaults": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-bundle-defaults/-/umi-bundle-defaults-0.9.2.tgz", + "integrity": "sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/umi-downloader-http": "^0.9.2", + "@metaplex-foundation/umi-eddsa-web3js": "^0.9.2", + "@metaplex-foundation/umi-http-fetch": "^0.9.2", + "@metaplex-foundation/umi-program-repository": "^0.9.2", + "@metaplex-foundation/umi-rpc-chunk-get-accounts": "^0.9.2", + "@metaplex-foundation/umi-rpc-web3js": "^0.9.2", + "@metaplex-foundation/umi-serializer-data-view": "^0.9.2", + "@metaplex-foundation/umi-transaction-factory-web3js": "^0.9.2" + }, + "peerDependencies": { + "@metaplex-foundation/umi": "^0.9.2", + "@solana/web3.js": "^1.72.0" + } + }, + "node_modules/@metaplex-foundation/umi-downloader-http": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-downloader-http/-/umi-downloader-http-0.9.2.tgz", + "integrity": "sha512-tzPT9hBwenzTzAQg07rmsrqZfgguAXELbcJrsYMoASp5VqWFXYIP00g94KET6XLjWUXH4P1J2zoa6hGennPXHA==", + "license": "MIT", + "peerDependencies": { + "@metaplex-foundation/umi": "^0.9.2" + } + }, + "node_modules/@metaplex-foundation/umi-eddsa-web3js": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-eddsa-web3js/-/umi-eddsa-web3js-0.9.2.tgz", + "integrity": "sha512-hhPCxXbYIp4BC4z9gK78sXpWLkNSrfv4ndhF5ruAkdIp7GcRVYKj0QnOUO6lGYGiIkNlw20yoTwOe1CT//OfTQ==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/umi-web3js-adapters": "^0.9.2", + "@noble/curves": "^1.0.0" + }, + "peerDependencies": { + "@metaplex-foundation/umi": "^0.9.2", + "@solana/web3.js": "^1.72.0" + } + }, + "node_modules/@metaplex-foundation/umi-http-fetch": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-http-fetch/-/umi-http-fetch-0.9.2.tgz", + "integrity": "sha512-YCZuBu24T9ZzEDe4+w12LEZm/fO9pkyViZufGgASC5NX93814Lvf6Ssjn/hZzjfA7CvZbvLFbmujc6CV3Q/m9Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.7" + }, + "peerDependencies": { + "@metaplex-foundation/umi": "^0.9.2" + } + }, + "node_modules/@metaplex-foundation/umi-options": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-options/-/umi-options-0.8.9.tgz", + "integrity": "sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A==", + "license": "MIT" + }, + "node_modules/@metaplex-foundation/umi-program-repository": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-program-repository/-/umi-program-repository-0.9.2.tgz", + "integrity": "sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA==", + "license": "MIT", + "peerDependencies": { + "@metaplex-foundation/umi": "^0.9.2" + } + }, + "node_modules/@metaplex-foundation/umi-public-keys": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-public-keys/-/umi-public-keys-0.8.9.tgz", + "integrity": "sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/umi-serializers-encodings": "^0.8.9" + } + }, + "node_modules/@metaplex-foundation/umi-rpc-chunk-get-accounts": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-rpc-chunk-get-accounts/-/umi-rpc-chunk-get-accounts-0.9.2.tgz", + "integrity": "sha512-YRwVf6xH0jPBAUgMhEPi+UbjioAeqTXmjsN2TnmQCPAmHbrHrMRj0rlWYwFLWAgkmoxazYrXP9lqOFRrfOGAEA==", + "license": "MIT", + "peerDependencies": { + "@metaplex-foundation/umi": "^0.9.2" + } + }, + "node_modules/@metaplex-foundation/umi-rpc-web3js": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-rpc-web3js/-/umi-rpc-web3js-0.9.2.tgz", + "integrity": "sha512-MqcsBz8B4wGl6jxsf2Jo/rAEpYReU9VCSR15QSjhvADHMmdFxCIZCCAgE+gDE2Vuanfl437VhOcP3g5Uw8C16Q==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/umi-web3js-adapters": "^0.9.2" + }, + "peerDependencies": { + "@metaplex-foundation/umi": "^0.9.2", + "@solana/web3.js": "^1.72.0" + } + }, + "node_modules/@metaplex-foundation/umi-serializer-data-view": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-serializer-data-view/-/umi-serializer-data-view-0.9.2.tgz", + "integrity": "sha512-5vGptadJxUxvUcyrwFZxXlEc6Q7AYySBesizCtrBFUY8w8PnF2vzmS45CP1MLySEATNH6T9mD4Rs0tLb87iQyA==", + "license": "MIT", + "peerDependencies": { + "@metaplex-foundation/umi": "^0.9.2" + } + }, + "node_modules/@metaplex-foundation/umi-serializers": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-serializers/-/umi-serializers-0.9.0.tgz", + "integrity": "sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/umi-options": "^0.8.9", + "@metaplex-foundation/umi-public-keys": "^0.8.9", + "@metaplex-foundation/umi-serializers-core": "^0.8.9", + "@metaplex-foundation/umi-serializers-encodings": "^0.8.9", + "@metaplex-foundation/umi-serializers-numbers": "^0.8.9" + } + }, + "node_modules/@metaplex-foundation/umi-serializers-core": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-serializers-core/-/umi-serializers-core-0.8.9.tgz", + "integrity": "sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w==", + "license": "MIT" + }, + "node_modules/@metaplex-foundation/umi-serializers-encodings": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-serializers-encodings/-/umi-serializers-encodings-0.8.9.tgz", + "integrity": "sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/umi-serializers-core": "^0.8.9" + } + }, + "node_modules/@metaplex-foundation/umi-serializers-numbers": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-serializers-numbers/-/umi-serializers-numbers-0.8.9.tgz", + "integrity": "sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/umi-serializers-core": "^0.8.9" + } + }, + "node_modules/@metaplex-foundation/umi-transaction-factory-web3js": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-transaction-factory-web3js/-/umi-transaction-factory-web3js-0.9.2.tgz", + "integrity": "sha512-fR1Kf21uylMFd1Smkltmj4jTNxhqSWf416owsJ+T+cvJi2VCOcOwq/3UFzOrpz78fA0RhsajKYKj0HYsRnQI1g==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/umi-web3js-adapters": "^0.9.2" + }, + "peerDependencies": { + "@metaplex-foundation/umi": "^0.9.2", + "@solana/web3.js": "^1.72.0" + } + }, + "node_modules/@metaplex-foundation/umi-web3js-adapters": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-web3js-adapters/-/umi-web3js-adapters-0.9.2.tgz", + "integrity": "sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA==", + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3" + }, + "peerDependencies": { + "@metaplex-foundation/umi": "^0.9.2", + "@solana/web3.js": "^1.72.0" + } + }, + "node_modules/@msgpack/msgpack": { + "version": "3.0.0-beta2", + "resolved": "https://registry.npmjs.org/@msgpack/msgpack/-/msgpack-3.0.0-beta2.tgz", + "integrity": "sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==", + "license": "ISC", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@noble/curves": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", + "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.6.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves/node_modules/@noble/hashes": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", + "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz", + "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@onsol/tldparser": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@onsol/tldparser/-/tldparser-0.6.7.tgz", + "integrity": "sha512-QwkRDLyC514pxeplCCXZ2kTiRcJSeUrpp+9o2XqLbePy/qzZGGG8I0UbXUKuWVD/bUL1zAm21+D+Eu30OKwcQg==", + "license": "MIT", + "dependencies": { + "@ethersproject/sha2": "^5.7.0", + "@metaplex-foundation/beet-solana": "^0.4.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@solana/web3.js": "^1.95.3", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "buffer": "6.0.1" + } + }, + "node_modules/@orca-so/common-sdk": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@orca-so/common-sdk/-/common-sdk-0.6.4.tgz", + "integrity": "sha512-iOiC6exTA9t2CEOaUPoWlNP3soN/1yZFjoz1mSf7NvOqo/PJZeIdWpB7BRXwU0mGGatjxU4SFgMGQ8NrSx+ONw==", + "license": "MIT", + "dependencies": { + "tiny-invariant": "^1.3.1" + }, + "peerDependencies": { + "@solana/spl-token": "^0.4.1", + "@solana/web3.js": "^1.90.0", + "decimal.js": "^10.4.3" + } + }, + "node_modules/@orca-so/whirlpools-sdk": { + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/@orca-so/whirlpools-sdk/-/whirlpools-sdk-0.13.12.tgz", + "integrity": "sha512-+LOqGTe0DYUsYwemltOU4WQIviqoICQlIcAmmEX/WnBh6wntpcLDcXkPV6dBHW7NA2/J8WEVAZ50biLJb4subg==", + "license": "Apache-2.0", + "dependencies": { + "tiny-invariant": "^1.3.1" + }, + "peerDependencies": { + "@coral-xyz/anchor": "~0.29.0", + "@orca-so/common-sdk": "0.6.4", + "@solana/spl-token": "^0.4.8", + "@solana/web3.js": "^1.90.0", + "decimal.js": "^10.4.3" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@pythnetwork/price-service-client": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@pythnetwork/price-service-client/-/price-service-client-1.9.0.tgz", + "integrity": "sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==", + "deprecated": "This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead.", + "license": "Apache-2.0", + "dependencies": { + "@pythnetwork/price-service-sdk": "*", + "@types/ws": "^8.5.3", + "axios": "^1.5.1", + "axios-retry": "^3.8.0", + "isomorphic-ws": "^4.0.1", + "ts-log": "^2.2.4", + "ws": "^8.6.0" + } + }, + "node_modules/@pythnetwork/price-service-sdk": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@pythnetwork/price-service-sdk/-/price-service-sdk-1.8.0.tgz", + "integrity": "sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.2.1" + } + }, + "node_modules/@raydium-io/raydium-sdk-v2": { + "version": "0.1.95-alpha", + "resolved": "https://registry.npmjs.org/@raydium-io/raydium-sdk-v2/-/raydium-sdk-v2-0.1.95-alpha.tgz", + "integrity": "sha512-+u7yxo/R1JDysTCzOuAlh90ioBe2DlM2Hbcz/tFsxP/YzmnYQzShvNjcmc0361a4zJhmlrEJfpFXW0J3kkX5vA==", + "license": "GPL-3.0", + "dependencies": { + "@solana/buffer-layout": "^4.0.1", + "@solana/spl-token": "^0.4.8", + "@solana/web3.js": "^1.95.3", + "axios": "^1.1.3", + "big.js": "^6.2.1", + "bn.js": "^5.2.1", + "dayjs": "^1.11.5", + "decimal.js-light": "^2.5.1", + "jsonfile": "^6.1.0", + "lodash": "^4.17.21", + "toformat": "^2.0.0", + "tsconfig-paths": "^4.2.0" + } + }, + "node_modules/@saberhq/option-utils": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@saberhq/option-utils/-/option-utils-1.15.0.tgz", + "integrity": "sha512-XVbS9H4b8PIGXJGaErkOurxV2FKFyvMwYq0pD8Y1iEPoi6HB//+HnpEKAv8tCssIQ5Nn1zQWzmQ9CmGkrwzcsw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://www.coingecko.com/en/coins/saber" + } + }, + "node_modules/@saberhq/solana-contrib": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@saberhq/solana-contrib/-/solana-contrib-1.15.0.tgz", + "integrity": "sha512-OExL5qGrNMmIKINU7qFUDmY7+xIwVM2s360g99k8CRNHSnjpnqIzwDjr2CnvEFpeQPp22OdGlS63woDp0w0JsQ==", + "license": "Apache-2.0", + "dependencies": { + "@saberhq/option-utils": "^1.15.0", + "@solana/buffer-layout": "^4.0.0", + "@types/promise-retry": "^1.1.6", + "@types/retry": "^0.12.5", + "promise-retry": "^2.0.1", + "retry": "^0.13.1", + "tiny-invariant": "^1.3.1", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://www.coingecko.com/en/coins/saber" + }, + "peerDependencies": { + "@solana/web3.js": "^1.42", + "bn.js": "^4 || ^5" + } + }, + "node_modules/@scure/base": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.1.tgz", + "integrity": "sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@shikijs/core": { + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.24.4.tgz", + "integrity": "sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==", + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "1.24.4", + "@shikijs/engine-oniguruma": "1.24.4", + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.24.4.tgz", + "integrity": "sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1", + "oniguruma-to-es": "0.8.1" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.4.tgz", + "integrity": "sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1" + } + }, + "node_modules/@shikijs/types": { + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.4.tgz", + "integrity": "sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^9.3.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.1.tgz", + "integrity": "sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==", + "license": "MIT" + }, + "node_modules/@solana/buffer-layout": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", + "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", + "license": "MIT", + "dependencies": { + "buffer": "~6.0.3" + }, + "engines": { + "node": ">=5.10" + } + }, + "node_modules/@solana/buffer-layout-utils": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz", + "integrity": "sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==", + "license": "Apache-2.0", + "dependencies": { + "@solana/buffer-layout": "^4.0.0", + "@solana/web3.js": "^1.32.0", + "bigint-buffer": "^1.1.5", + "bignumber.js": "^9.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@solana/codecs": { + "version": "2.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-2.0.0-rc.1.tgz", + "integrity": "sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-rc.1", + "@solana/codecs-data-structures": "2.0.0-rc.1", + "@solana/codecs-numbers": "2.0.0-rc.1", + "@solana/codecs-strings": "2.0.0-rc.1", + "@solana/options": "2.0.0-rc.1" + }, + "peerDependencies": { + "typescript": ">=5" + } + }, + "node_modules/@solana/codecs-core": { + "version": "2.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.0.0-rc.1.tgz", + "integrity": "sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.0.0-rc.1" + }, + "peerDependencies": { + "typescript": ">=5" + } + }, + "node_modules/@solana/codecs-data-structures": { + "version": "2.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-rc.1.tgz", + "integrity": "sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-rc.1", + "@solana/codecs-numbers": "2.0.0-rc.1", + "@solana/errors": "2.0.0-rc.1" + }, + "peerDependencies": { + "typescript": ">=5" + } + }, + "node_modules/@solana/codecs-numbers": { + "version": "2.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.0.0-rc.1.tgz", + "integrity": "sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-rc.1", + "@solana/errors": "2.0.0-rc.1" + }, + "peerDependencies": { + "typescript": ">=5" + } + }, + "node_modules/@solana/codecs-strings": { + "version": "2.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.0.0-rc.1.tgz", + "integrity": "sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-rc.1", + "@solana/codecs-numbers": "2.0.0-rc.1", + "@solana/errors": "2.0.0-rc.1" + }, + "peerDependencies": { + "fastestsmallesttextencoderdecoder": "^1.0.22", + "typescript": ">=5" + } + }, + "node_modules/@solana/errors": { + "version": "2.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.0.0-rc.1.tgz", + "integrity": "sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "commander": "^12.1.0" + }, + "bin": { + "errors": "bin/cli.mjs" + }, + "peerDependencies": { + "typescript": ">=5" + } + }, + "node_modules/@solana/options": { + "version": "2.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@solana/options/-/options-2.0.0-rc.1.tgz", + "integrity": "sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.0.0-rc.1", + "@solana/codecs-data-structures": "2.0.0-rc.1", + "@solana/codecs-numbers": "2.0.0-rc.1", + "@solana/codecs-strings": "2.0.0-rc.1", + "@solana/errors": "2.0.0-rc.1" + }, + "peerDependencies": { + "typescript": ">=5" + } + }, + "node_modules/@solana/spl-account-compression": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/@solana/spl-account-compression/-/spl-account-compression-0.1.10.tgz", + "integrity": "sha512-IQAOJrVOUo6LCgeWW9lHuXo6JDbi4g3/RkQtvY0SyalvSWk9BIkHHe4IkAzaQw8q/BxEVBIjz8e9bNYWIAESNw==", + "license": "Apache-2.0", + "dependencies": { + "@metaplex-foundation/beet": "^0.7.1", + "@metaplex-foundation/beet-solana": "^0.4.0", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "js-sha3": "^0.8.0", + "typescript-collections": "^1.3.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.50.1" + } + }, + "node_modules/@solana/spl-account-compression/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@solana/spl-account-compression/node_modules/borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, + "node_modules/@solana/spl-account-compression/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@solana/spl-token": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.4.9.tgz", + "integrity": "sha512-g3wbj4F4gq82YQlwqhPB0gHFXfgsC6UmyGMxtSLf/BozT/oKd59465DbnlUK8L8EcimKMavxsVAMoLcEdeCicg==", + "license": "Apache-2.0", + "dependencies": { + "@solana/buffer-layout": "^4.0.0", + "@solana/buffer-layout-utils": "^0.2.0", + "@solana/spl-token-group": "^0.0.7", + "@solana/spl-token-metadata": "^0.1.6", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.95.3" + } + }, + "node_modules/@solana/spl-token-group": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@solana/spl-token-group/-/spl-token-group-0.0.7.tgz", + "integrity": "sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug==", + "license": "Apache-2.0", + "dependencies": { + "@solana/codecs": "2.0.0-rc.1" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.95.3" + } + }, + "node_modules/@solana/spl-token-metadata": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@solana/spl-token-metadata/-/spl-token-metadata-0.1.6.tgz", + "integrity": "sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==", + "license": "Apache-2.0", + "dependencies": { + "@solana/codecs": "2.0.0-rc.1" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.95.3" + } + }, + "node_modules/@solana/spl-type-length-value": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz", + "integrity": "sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA==", + "license": "Apache-2.0", + "dependencies": { + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@solana/web3.js": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.98.0.tgz", + "integrity": "sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@solana/buffer-layout": "^4.0.1", + "agentkeepalive": "^4.5.0", + "bigint-buffer": "^1.1.5", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "bs58": "^4.0.1", + "buffer": "6.0.3", + "fast-stable-stringify": "^1.0.0", + "jayson": "^4.1.1", + "node-fetch": "^2.7.0", + "rpc-websockets": "^9.0.2", + "superstruct": "^2.0.2" + } + }, + "node_modules/@solana/web3.js/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@solana/web3.js/node_modules/borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, + "node_modules/@solana/web3.js/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@solana/web3.js/node_modules/superstruct": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", + "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tensor-hq/tensor-common": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@tensor-hq/tensor-common/-/tensor-common-8.3.1.tgz", + "integrity": "sha512-cgc+Z0nR23pi+1DfJgF1+afWd+xf1e6VYPM9yhECshmERr6BgojQfcuoltHHcgpwSlLrZXnm47kQ48I2M6rxFQ==", + "license": "MIT", + "dependencies": { + "@coral-xyz/anchor": "^0.26.0", + "@metaplex-foundation/mpl-auction-house": "^2.1.1", + "@metaplex-foundation/mpl-bubblegum": "^0.7.0", + "@solana/spl-account-compression": "^0.1.4", + "@solana/spl-token": "^0.3.7", + "@solana/web3.js": "^1.91.1", + "axios": "^0.28.0", + "big.js": "^6.2.1", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "bs58": "^5.0.0", + "exponential-backoff": "^3.1.1", + "js-sha3": "^0.8.0", + "semaphore": "^1.1.0" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/@coral-xyz/anchor": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.26.0.tgz", + "integrity": "sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "@coral-xyz/borsh": "^0.26.0", + "@solana/web3.js": "^1.68.0", + "base64-js": "^1.5.1", + "bn.js": "^5.1.2", + "bs58": "^4.0.1", + "buffer-layout": "^1.2.2", + "camelcase": "^6.3.0", + "cross-fetch": "^3.1.5", + "crypto-hash": "^1.3.0", + "eventemitter3": "^4.0.7", + "js-sha256": "^0.9.0", + "pako": "^2.0.3", + "snake-case": "^3.0.4", + "superstruct": "^0.15.4", + "toml": "^3.0.0" + }, + "engines": { + "node": ">=11" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/@coral-xyz/anchor/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/@coral-xyz/anchor/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/@coral-xyz/borsh": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.26.0.tgz", + "integrity": "sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.1.2", + "buffer-layout": "^1.2.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@solana/web3.js": "^1.68.0" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/@metaplex-foundation/beet": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet/-/beet-0.7.1.tgz", + "integrity": "sha512-hNCEnS2WyCiYyko82rwuISsBY3KYpe828ubsd2ckeqZr7tl0WVLivGkoyA/qdiaaHEBGdGl71OpfWa2rqL3DiA==", + "license": "Apache-2.0", + "dependencies": { + "ansicolors": "^0.3.2", + "bn.js": "^5.2.0", + "debug": "^4.3.3" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/@metaplex-foundation/beet-solana": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet-solana/-/beet-solana-0.4.0.tgz", + "integrity": "sha512-B1L94N3ZGMo53b0uOSoznbuM5GBNJ8LwSeznxBxJ+OThvfHQ4B5oMUqb+0zdLRfkKGS7Q6tpHK9P+QK0j3w2cQ==", + "license": "Apache-2.0", + "dependencies": { + "@metaplex-foundation/beet": ">=0.1.0", + "@solana/web3.js": "^1.56.2", + "bs58": "^5.0.0", + "debug": "^4.3.4" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/@metaplex-foundation/mpl-bubblegum": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-bubblegum/-/mpl-bubblegum-0.7.0.tgz", + "integrity": "sha512-HCo6q+nh8M3KRv9/aUaZcJo5/vPJEeZwPGRDWkqN7lUXoMIvhd83fZi7MB1rIg1gwpVHfHqim0A02LCYKisWFg==", + "license": "Apache-2.0", + "dependencies": { + "@metaplex-foundation/beet": "0.7.1", + "@metaplex-foundation/beet-solana": "0.4.0", + "@metaplex-foundation/cusper": "^0.0.2", + "@metaplex-foundation/mpl-token-metadata": "^2.5.2", + "@solana/spl-account-compression": "^0.1.4", + "@solana/spl-token": "^0.1.8", + "@solana/web3.js": "^1.50.1", + "js-sha3": "^0.8.0" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/@solana/spl-token": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.1.8.tgz", + "integrity": "sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.5", + "@solana/web3.js": "^1.21.0", + "bn.js": "^5.1.0", + "buffer": "6.0.3", + "buffer-layout": "^1.2.0", + "dotenv": "10.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/@metaplex-foundation/mpl-token-metadata": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-2.13.0.tgz", + "integrity": "sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/beet": "^0.7.1", + "@metaplex-foundation/beet-solana": "^0.4.0", + "@metaplex-foundation/cusper": "^0.0.2", + "@solana/spl-token": "^0.3.6", + "@solana/web3.js": "^1.66.2", + "bn.js": "^5.2.0", + "debug": "^4.3.4" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/@solana/spl-token": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", + "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", + "license": "Apache-2.0", + "dependencies": { + "@solana/buffer-layout": "^4.0.0", + "@solana/buffer-layout-utils": "^0.2.0", + "@solana/spl-token-metadata": "^0.1.2", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.88.0" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/axios": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.28.1.tgz", + "integrity": "sha512-iUcGA5a7p0mVb4Gm/sy+FSECNkPFT4y7wt6OM/CDpO/OnNCvSs3PoMG8ibrC9jRoGYU0gUK5pXVC4NPXq6lHRQ==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", + "license": "MIT" + }, + "node_modules/@tensor-hq/tensor-common/node_modules/borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/borsh/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/borsh/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "license": "MIT", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@tensor-hq/tensor-common/node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/@tensor-hq/tensor-tests-common": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@tensor-hq/tensor-tests-common/-/tensor-tests-common-0.6.0.tgz", + "integrity": "sha512-67Dssa+gKXLUQf+q2aitLu4BWOzrSOySNjzlncZs8SR6ysT9I2Ap9a5EYlR06ZsmfMUVJ/3tIcrqA+r0NQ4z5w==", + "license": "MIT", + "dependencies": { + "@coral-xyz/anchor": "^0.29.0", + "@metaplex-foundation/mpl-bubblegum": "^0.8.0", + "@metaplex-foundation/mpl-token-auth-rules": "^3.0.1", + "@metaplex-foundation/mpl-token-metadata": "^2.13.0", + "@metaplex-foundation/umi": "^0.8.10", + "@msgpack/msgpack": "^3.0.0-beta2", + "@saberhq/solana-contrib": "^1.14.11", + "@solana/spl-account-compression": "^0.2.0", + "@solana/spl-token": "^0.3.9", + "@tensor-hq/tensor-common": "^8.0.8", + "@tensor-oss/tensorswap-sdk": "^4.4.2", + "bs58": "^5.0.0", + "chai-as-promised": "^7.1.1", + "exponential-backoff": "^3.1.1", + "js-sha3": "^0.9.2", + "merkletreejs": "^0.3.11" + } + }, + "node_modules/@tensor-hq/tensor-tests-common/node_modules/@metaplex-foundation/mpl-token-metadata": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-2.13.0.tgz", + "integrity": "sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/beet": "^0.7.1", + "@metaplex-foundation/beet-solana": "^0.4.0", + "@metaplex-foundation/cusper": "^0.0.2", + "@solana/spl-token": "^0.3.6", + "@solana/web3.js": "^1.66.2", + "bn.js": "^5.2.0", + "debug": "^4.3.4" + } + }, + "node_modules/@tensor-hq/tensor-tests-common/node_modules/@metaplex-foundation/umi": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi/-/umi-0.8.10.tgz", + "integrity": "sha512-iGuGIfJh2+YFvUIkZ0nB/69EsQcaoq89DDPRPYvPBtOunfv8TH8SNrwcsXHlp9aBtn5FGKCPx3V3X/eurB32Fg==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/umi-options": "^0.8.9", + "@metaplex-foundation/umi-public-keys": "^0.8.9", + "@metaplex-foundation/umi-serializers": "^0.8.9" + } + }, + "node_modules/@tensor-hq/tensor-tests-common/node_modules/@metaplex-foundation/umi-serializers": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-serializers/-/umi-serializers-0.8.9.tgz", + "integrity": "sha512-Sve8Etm3zqvLSUfza+MYRkjTnCpiaAFT7VWdqeHzA3n58P0AfT3p74RrZwVt/UFkxI+ln8BslwBDJmwzcPkuHw==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/umi-options": "^0.8.9", + "@metaplex-foundation/umi-public-keys": "^0.8.9", + "@metaplex-foundation/umi-serializers-core": "^0.8.9", + "@metaplex-foundation/umi-serializers-encodings": "^0.8.9", + "@metaplex-foundation/umi-serializers-numbers": "^0.8.9" + } + }, + "node_modules/@tensor-hq/tensor-tests-common/node_modules/@solana/spl-account-compression": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@solana/spl-account-compression/-/spl-account-compression-0.2.1.tgz", + "integrity": "sha512-GIf/euXN/ZJMfiH3DNiIcolNBZ5pga+usGVxEAyt6Iucv0EXsbxefHCePqRr3ryldFpFm4mjJPz5sm+FzZuDnw==", + "license": "Apache-2.0", + "dependencies": { + "@metaplex-foundation/beet": "^0.7.2", + "@metaplex-foundation/beet-solana": "^0.4.1", + "bn.js": "^5.2.1", + "js-sha3": "^0.9.3", + "typescript-collections": "^1.3.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.91.6" + } + }, + "node_modules/@tensor-hq/tensor-tests-common/node_modules/@solana/spl-token": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", + "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", + "license": "Apache-2.0", + "dependencies": { + "@solana/buffer-layout": "^4.0.0", + "@solana/buffer-layout-utils": "^0.2.0", + "@solana/spl-token-metadata": "^0.1.2", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.88.0" + } + }, + "node_modules/@tensor-hq/tensor-tests-common/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", + "license": "MIT" + }, + "node_modules/@tensor-hq/tensor-tests-common/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "license": "MIT", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@tensor-hq/tensor-tests-common/node_modules/js-sha3": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.9.3.tgz", + "integrity": "sha512-BcJPCQeLg6WjEx3FE591wVAevlli8lxsxm9/FzV4HXkV49TmBH38Yvrpce6fjbADGMKFrBMGTqrVz3qPIZ88Gg==", + "license": "MIT" + }, + "node_modules/@tensor-oss/tcomp-sdk": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@tensor-oss/tcomp-sdk/-/tcomp-sdk-6.0.0.tgz", + "integrity": "sha512-WEYOcd+sOB+5DQe1usCfAEQUjX46L3HYElgG8rZ3bL9ceIwQNKwncKkRM2EM+pPerH50ZRNUNd4SI1ZUYlwJtw==", + "license": "MIT", + "dependencies": { + "@coral-xyz/anchor": "0.26.0", + "@metaplex-foundation/mpl-bubblegum": "~0.8.0", + "@metaplex-foundation/mpl-core": "^0.4.3", + "@metaplex-foundation/mpl-token-metadata": "^2.13.0", + "@metaplex-foundation/mpl-toolbox": "^0.9.4", + "@metaplex-foundation/umi": "^0.9.1", + "@metaplex-foundation/umi-rpc-web3js": "^0.9.1", + "@msgpack/msgpack": "^3.0.0-beta2", + "@solana/spl-account-compression": "^0.1.7", + "@solana/spl-token": "^0.4.0", + "@solana/web3.js": "^1.75.0", + "@tensor-hq/tensor-common": "^8.0.8", + "@tensor-hq/tensor-tests-common": "^0.6.0", + "@tensor-oss/tensorswap-sdk": "^4.4.2", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "js-sha256": "^0.9.0", + "js-sha3": "^0.8.0", + "math-expression-evaluator": "^2.0.4" + } + }, + "node_modules/@tensor-oss/tcomp-sdk/node_modules/@coral-xyz/anchor": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.26.0.tgz", + "integrity": "sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "@coral-xyz/borsh": "^0.26.0", + "@solana/web3.js": "^1.68.0", + "base64-js": "^1.5.1", + "bn.js": "^5.1.2", + "bs58": "^4.0.1", + "buffer-layout": "^1.2.2", + "camelcase": "^6.3.0", + "cross-fetch": "^3.1.5", + "crypto-hash": "^1.3.0", + "eventemitter3": "^4.0.7", + "js-sha256": "^0.9.0", + "pako": "^2.0.3", + "snake-case": "^3.0.4", + "superstruct": "^0.15.4", + "toml": "^3.0.0" + }, + "engines": { + "node": ">=11" + } + }, + "node_modules/@tensor-oss/tcomp-sdk/node_modules/@coral-xyz/borsh": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.26.0.tgz", + "integrity": "sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.1.2", + "buffer-layout": "^1.2.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@solana/web3.js": "^1.68.0" + } + }, + "node_modules/@tensor-oss/tcomp-sdk/node_modules/@metaplex-foundation/mpl-core": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-core/-/mpl-core-0.4.7.tgz", + "integrity": "sha512-0PvzYp0u3NrstbUzAL6nsUkvSUJukUQCa5CRUx23jrNPsO0nejsgKpx8RqaqrCCYKt2lZnq8TRzHQPBqFkVQIg==", + "license": "Apache-2.0", + "peerDependencies": { + "@metaplex-foundation/umi": ">=0.8.2 < 1", + "@noble/hashes": "^1.3.1" + } + }, + "node_modules/@tensor-oss/tcomp-sdk/node_modules/@metaplex-foundation/mpl-token-metadata": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-2.13.0.tgz", + "integrity": "sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==", + "license": "MIT", + "dependencies": { + "@metaplex-foundation/beet": "^0.7.1", + "@metaplex-foundation/beet-solana": "^0.4.0", + "@metaplex-foundation/cusper": "^0.0.2", + "@solana/spl-token": "^0.3.6", + "@solana/web3.js": "^1.66.2", + "bn.js": "^5.2.0", + "debug": "^4.3.4" + } + }, + "node_modules/@tensor-oss/tcomp-sdk/node_modules/@metaplex-foundation/mpl-token-metadata/node_modules/@solana/spl-token": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", + "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", + "license": "Apache-2.0", + "dependencies": { + "@solana/buffer-layout": "^4.0.0", + "@solana/buffer-layout-utils": "^0.2.0", + "@solana/spl-token-metadata": "^0.1.2", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.88.0" + } + }, + "node_modules/@tensor-oss/tcomp-sdk/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@tensor-oss/tcomp-sdk/node_modules/borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, + "node_modules/@tensor-oss/tcomp-sdk/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@tensor-oss/tensorswap-sdk": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@tensor-oss/tensorswap-sdk/-/tensorswap-sdk-4.5.0.tgz", + "integrity": "sha512-eNM6k1DT5V/GadxSHm8//z2wlLl8/EcA0KFQXKaxRba/2MirNySsoVGxDXO2UdOI4eZMse8f+8Et3P63WWjsIw==", + "license": "MIT", + "dependencies": { + "@coral-xyz/anchor": "^0.26.0", + "@msgpack/msgpack": "^2.8.0", + "@saberhq/solana-contrib": "^1.14.11", + "@solana/spl-token": "^0.4.0", + "@solana/web3.js": "^1.73.0", + "@tensor-hq/tensor-common": "^8.0.8", + "@types/bn.js": "^5.1.0", + "big.js": "^6.2.1", + "bn.js": "^5.2.0", + "js-sha256": "^0.9.0", + "keccak256": "^1.0.6", + "math-expression-evaluator": "^2.0.4", + "merkletreejs": "^0.3.11", + "uuid": "^8.3.2" + } + }, + "node_modules/@tensor-oss/tensorswap-sdk/node_modules/@coral-xyz/anchor": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.26.0.tgz", + "integrity": "sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "@coral-xyz/borsh": "^0.26.0", + "@solana/web3.js": "^1.68.0", + "base64-js": "^1.5.1", + "bn.js": "^5.1.2", + "bs58": "^4.0.1", + "buffer-layout": "^1.2.2", + "camelcase": "^6.3.0", + "cross-fetch": "^3.1.5", + "crypto-hash": "^1.3.0", + "eventemitter3": "^4.0.7", + "js-sha256": "^0.9.0", + "pako": "^2.0.3", + "snake-case": "^3.0.4", + "superstruct": "^0.15.4", + "toml": "^3.0.0" + }, + "engines": { + "node": ">=11" + } + }, + "node_modules/@tensor-oss/tensorswap-sdk/node_modules/@coral-xyz/borsh": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.26.0.tgz", + "integrity": "sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.1.2", + "buffer-layout": "^1.2.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@solana/web3.js": "^1.68.0" + } + }, + "node_modules/@tensor-oss/tensorswap-sdk/node_modules/@msgpack/msgpack": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@msgpack/msgpack/-/msgpack-2.8.0.tgz", + "integrity": "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==", + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tensor-oss/tensorswap-sdk/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@tensor-oss/tensorswap-sdk/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@tensor-oss/tensorswap-sdk/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@tiplink/api": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@tiplink/api/-/api-0.3.1.tgz", + "integrity": "sha512-HjnXethjKOHTYT0IP1BewlMS7wZJ+hsoDgRa6jA1cNvxvwQjE1WHOyvOUPpAi+DJDw4P4/omFtyHr7dwLfnB/g==", + "license": "LicenseRef-LICENSE", + "dependencies": { + "@coral-xyz/anchor": "^0.29.0", + "@solana/spl-token": "^0.3.10", + "@solana/web3.js": "^1.48.0", + "bs58": "^5.0.0", + "libsodium": "^0.7.11", + "libsodium-wrappers-sumo": "^0.7.11", + "nanoid": "^3.3.6", + "sodium-plus": "^0.9.0", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1", + "typescript": "^4.7.4" + } + }, + "node_modules/@tiplink/api/node_modules/@solana/spl-token": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", + "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", + "license": "Apache-2.0", + "dependencies": { + "@solana/buffer-layout": "^4.0.0", + "@solana/buffer-layout-utils": "^0.2.0", + "@solana/spl-token-metadata": "^0.1.2", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.88.0" + } + }, + "node_modules/@tiplink/api/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", + "license": "MIT" + }, + "node_modules/@tiplink/api/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "license": "MIT", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@tiplink/api/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/bn.js": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", + "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/chai": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.0.1.tgz", + "integrity": "sha512-5T8ajsg3M/FOncpLYW7sdOcD6yf4+722sze/tc4KQV0P8Z2rAr3SAuHCIkYmYpt8VbcQlnz8SxlOlPQYefe4cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/node": { + "version": "22.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", + "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/promise-retry": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@types/promise-retry/-/promise-retry-1.1.6.tgz", + "integrity": "sha512-EC1+OMXV0PZb0pf+cmyxc43MEP2CDumZe4AfuxWboxxEixztIebknpJPZAX5XlodGF1OY+C1E/RAeNGzxf+bJA==", + "license": "MIT", + "dependencies": { + "@types/retry": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.5.tgz", + "integrity": "sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==", + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.5.13", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", + "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", + "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==", + "license": "ISC" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios-retry": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.9.1.tgz", + "integrity": "sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.15.4", + "is-retry-allowed": "^2.2.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base-x": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.0.tgz", + "integrity": "sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.2.tgz", + "integrity": "sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bigjs" + } + }, + "node_modules/bigint-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz", + "integrity": "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "bindings": "^1.3.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/borsh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-2.0.0.tgz", + "integrity": "sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==", + "license": "Apache-2.0" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "license": "MIT", + "dependencies": { + "base-x": "^5.0.0" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-layout": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/buffer-layout/-/buffer-layout-1.2.2.tgz", + "integrity": "sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==", + "license": "MIT", + "engines": { + "node": ">=4.5" + } + }, + "node_modules/buffer-reverse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz", + "integrity": "sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==", + "license": "MIT" + }, + "node_modules/bufferutil": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", + "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chai": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", + "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/chai-as-promised": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", + "license": "WTFPL", + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 6" + } + }, + "node_modules/chai-as-promised/node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-hash": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/crypto-hash/-/crypto-hash-1.3.0.tgz", + "integrity": "sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "license": "MIT" + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "license": "MIT" + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "license": "MIT", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.9.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz", + "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.4.0" + } + }, + "node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "license": "MIT", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/ethereum-cryptography/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethereum-cryptography/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "license": "MIT", + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "license": "MIT" + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "license": "Apache-2.0" + }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "engines": { + "node": "> 0.1.90" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-stable-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", + "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==", + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", + "license": "MIT" + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "license": "MIT", + "dependencies": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "engines": { + "node": ">= 12.20" + } + }, + "node_modules/formdata-node/node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", + "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC", + "optional": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/graphemesplit": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/graphemesplit/-/graphemesplit-2.4.4.tgz", + "integrity": "sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w==", + "license": "MIT", + "dependencies": { + "js-base64": "^3.6.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/groq-sdk": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/groq-sdk/-/groq-sdk-0.5.0.tgz", + "integrity": "sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7", + "web-streams-polyfill": "^3.2.1" + } + }, + "node_modules/groq-sdk/node_modules/@types/node": { + "version": "18.19.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.68.tgz", + "integrity": "sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/groq-sdk/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz", + "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "license": "MIT", + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-retry-allowed": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", + "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/jayson": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.3.tgz", + "integrity": "sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==", + "license": "MIT", + "dependencies": { + "@types/connect": "^3.4.33", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "JSONStream": "^1.3.5", + "uuid": "^8.3.2", + "ws": "^7.5.10" + }, + "bin": { + "jayson": "bin/jayson.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jayson/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "license": "MIT" + }, + "node_modules/jayson/node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/jayson/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/jayson/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/jayson/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "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 + } + } + }, + "node_modules/js-base64": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", + "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==", + "license": "BSD-3-Clause" + }, + "node_modules/js-sha256": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==", + "license": "MIT" + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "license": "MIT" + }, + "node_modules/js-tiktoken": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/js-tiktoken/-/js-tiktoken-1.0.16.tgz", + "integrity": "sha512-nUVdO5k/M9llWpiaZlBBDdtmr6qWXwSD6fgaDu2zM8UP+OXxx9V37lFkI6w0/1IuaDx7WffZ37oYd9KvcWKElg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.5.1" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/keccak256": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", + "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", + "license": "MIT", + "dependencies": { + "bn.js": "^5.2.0", + "buffer": "^6.0.3", + "keccak": "^3.0.2" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/langchain": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/langchain/-/langchain-0.3.8.tgz", + "integrity": "sha512-EiAHFgBdThuXFmIx9j81wjdPItpRsw0Ck4r5dyhB74gyhehRGna/UK2CTqeKVnIUM/f4g4JbxUgAU4voXljDMw==", + "license": "MIT", + "dependencies": { + "@langchain/openai": ">=0.1.0 <0.4.0", + "@langchain/textsplitters": ">=0.0.0 <0.2.0", + "js-tiktoken": "^1.0.12", + "js-yaml": "^4.1.0", + "jsonpointer": "^5.0.1", + "langsmith": "^0.2.8", + "openapi-types": "^12.1.3", + "p-retry": "4", + "uuid": "^10.0.0", + "yaml": "^2.2.1", + "zod": "^3.22.4", + "zod-to-json-schema": "^3.22.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@langchain/anthropic": "*", + "@langchain/aws": "*", + "@langchain/cohere": "*", + "@langchain/core": ">=0.2.21 <0.4.0", + "@langchain/google-genai": "*", + "@langchain/google-vertexai": "*", + "@langchain/groq": "*", + "@langchain/mistralai": "*", + "@langchain/ollama": "*", + "axios": "*", + "cheerio": "*", + "handlebars": "^4.7.8", + "peggy": "^3.0.2", + "typeorm": "*" + }, + "peerDependenciesMeta": { + "@langchain/anthropic": { + "optional": true + }, + "@langchain/aws": { + "optional": true + }, + "@langchain/cohere": { + "optional": true + }, + "@langchain/google-genai": { + "optional": true + }, + "@langchain/google-vertexai": { + "optional": true + }, + "@langchain/groq": { + "optional": true + }, + "@langchain/mistralai": { + "optional": true + }, + "@langchain/ollama": { + "optional": true + }, + "axios": { + "optional": true + }, + "cheerio": { + "optional": true + }, + "handlebars": { + "optional": true + }, + "peggy": { + "optional": true + }, + "typeorm": { + "optional": true + } + } + }, + "node_modules/langsmith": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.2.14.tgz", + "integrity": "sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==", + "license": "MIT", + "dependencies": { + "@types/uuid": "^10.0.0", + "commander": "^10.0.1", + "p-queue": "^6.6.2", + "p-retry": "4", + "semver": "^7.6.3", + "uuid": "^10.0.0" + }, + "peerDependencies": { + "openai": "*" + }, + "peerDependenciesMeta": { + "openai": { + "optional": true + } + } + }, + "node_modules/langsmith/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libsodium": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.15.tgz", + "integrity": "sha512-sZwRknt/tUpE2AwzHq3jEyUU5uvIZHtSssktXq7owd++3CSgn8RGrv6UZJJBpP7+iBghBqe7Z06/2M31rI2NKw==", + "license": "ISC" + }, + "node_modules/libsodium-sumo": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.15.tgz", + "integrity": "sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==", + "license": "ISC" + }, + "node_modules/libsodium-wrappers": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.15.tgz", + "integrity": "sha512-E4anqJQwcfiC6+Yrl01C1m8p99wEhLmJSs0VQqST66SbQXXBoaJY0pF4BNjRYa/sOQAxx6lXAaAFIlx+15tXJQ==", + "license": "ISC", + "dependencies": { + "libsodium": "^0.7.15" + } + }, + "node_modules/libsodium-wrappers-sumo": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.15.tgz", + "integrity": "sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==", + "license": "ISC", + "dependencies": { + "libsodium-sumo": "^0.7.15" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loupe": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", + "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", + "license": "MIT" + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "license": "MIT" + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/math-expression-evaluator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-2.0.6.tgz", + "integrity": "sha512-DRung1qNcKbgkhFeQ0fBPUFB6voRUMY7KyRyp1TRQ2v95Rp2egC823xLRooM1mDx1rmbkY7ym6ZWmpaE/VimOA==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/merkletreejs": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.3.11.tgz", + "integrity": "sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.1", + "buffer-reverse": "^1.0.1", + "crypto-js": "^4.2.0", + "treeify": "^1.1.0", + "web3-utils": "^1.3.4" + }, + "engines": { + "node": ">= 7.6.0" + } + }, + "node_modules/micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", + "license": "MIT" + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", + "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "license": "MIT", + "bin": { + "mustache": "bin/mustache" + } + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "license": "MIT" + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "license": "MIT", + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "license": "MIT" + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/oniguruma-to-es": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.8.1.tgz", + "integrity": "sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==", + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^5.0.2", + "regex-recursion": "^5.0.0" + } + }, + "node_modules/openai": { + "version": "4.77.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.77.0.tgz", + "integrity": "sha512-WWacavtns/7pCUkOWvQIjyOfcdr9X+9n9Vvb0zFeKVDAqwCMDHB+iSr24SVaBAhplvSG6JrRXFpcNM9gWhOGIw==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" + }, + "bin": { + "openai": "bin/cli" + }, + "peerDependencies": { + "zod": "^3.23.8" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/openai/node_modules/@types/node": { + "version": "18.19.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.68.tgz", + "integrity": "sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/openai/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "license": "MIT" + }, + "node_modules/openapi-types": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "license": "MIT" + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/poly1305-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/poly1305-js/-/poly1305-js-0.4.4.tgz", + "integrity": "sha512-5B6/S+vg5AOr66wJDkh5LOpU/F3EKANDy4VXKsNZLXea1uCy6CiOWOZ3VhcC0nYdhE7vJUMcLxqcVlrv2g/+Rg==", + "license": "ISC", + "dependencies": { + "big-integer": "^1.6.51" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/promise-retry/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regex": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", + "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", + "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", + "license": "MIT", + "dependencies": { + "regex": "^5.1.1", + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rpc-websockets": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.0.4.tgz", + "integrity": "sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==", + "license": "LGPL-3.0-only", + "dependencies": { + "@swc/helpers": "^0.5.11", + "@types/uuid": "^8.3.4", + "@types/ws": "^8.2.2", + "buffer": "^6.0.3", + "eventemitter3": "^5.0.1", + "uuid": "^8.3.2", + "ws": "^8.5.0" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/kozjak" + }, + "optionalDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + } + }, + "node_modules/rpc-websockets/node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "license": "MIT" + }, + "node_modules/rpc-websockets/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/rpc-websockets/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/semaphore": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", + "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.24.4.tgz", + "integrity": "sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "1.24.4", + "@shikijs/engine-javascript": "1.24.4", + "@shikijs/engine-oniguruma": "1.24.4", + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/sodium-plus": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/sodium-plus/-/sodium-plus-0.9.0.tgz", + "integrity": "sha512-WWKxrd81qDL7C1A10yxNmZ135yovEZuIRnZ/BIf/FcajYBupbKbPdgzwlusPHLVxkMDDamcarq9PxxRBUSqpCw==", + "license": "ISC", + "dependencies": { + "buffer": "^5.6.0", + "libsodium-wrappers": "^0.7.6", + "poly1305-js": "^0.4.2", + "typedarray-to-buffer": "^3.1.5", + "xsalsa20": "^1.1.0" + }, + "peerDependencies": { + "sodium-native": "^3.2.0" + } + }, + "node_modules/sodium-plus/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/superstruct": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz", + "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==", + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/synckit": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", + "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toformat": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/toformat/-/toformat-2.0.0.tgz", + "integrity": "sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==", + "license": "MIT" + }, + "node_modules/toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", + "license": "MIT" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/treeify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", + "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-log": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.7.tgz", + "integrity": "sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==", + "license": "MIT" + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "license": "Unlicense" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typedoc": { + "version": "0.26.11", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.11.tgz", + "integrity": "sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==", + "license": "Apache-2.0", + "dependencies": { + "lunr": "^2.3.9", + "markdown-it": "^14.1.0", + "minimatch": "^9.0.5", + "shiki": "^1.16.2", + "yaml": "^2.5.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x" + } + }, + "node_modules/typescript": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-collections": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/typescript-collections/-/typescript-collections-1.3.3.tgz", + "integrity": "sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==", + "license": "MIT" + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "license": "MIT" + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicode-trie/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "license": "MIT" + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/web3-utils": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz", + "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", + "license": "LGPL-3.0", + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereum-cryptography": "^2.1.2", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xsalsa20": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/xsalsa20/-/xsalsa20-1.2.0.tgz", + "integrity": "sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w==", + "license": "MIT" + }, + "node_modules/yaml": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", + "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", + "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz", + "integrity": "sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.24.1" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json index 8ff852f..5901c84 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", "@solana/spl-token": "^0.4.9", "@solana/web3.js": "^1.95.4", + "@tensor-oss/tcomp-sdk": "^6.0.0", "@tiplink/api": "^0.3.1", "bn.js": "^5.2.1", "bs58": "^6.0.0", diff --git a/src/agent/index.ts b/src/agent/index.ts index bf89861..0433374 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -37,6 +37,9 @@ import { create_gibwork_task, rock_paper_scissor, create_TipLink, + listNFTForSale, + buyNFT, + cancelListing, } from "../tools"; import { CollectionDeployment, @@ -349,4 +352,25 @@ export class SolanaAgentKit { async createTiplink(amount: number, splmintAddress?: PublicKey) { return create_TipLink(this, amount, splmintAddress); } + + async tensorListNFT( + nftMint: PublicKey, + price: number, + expirySeconds?: number + ): Promise { + return listNFTForSale(this, nftMint, price, expirySeconds); + } + + async tensorBuyNFT( + nftMint: PublicKey, + maxPrice: number + ): Promise { + return buyNFT(this, nftMint, maxPrice); + } + + async tensorCancelListing( + nftMint: PublicKey + ): Promise { + return cancelListing(this, nftMint); + } } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 21888bf..ddf28c9 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1326,6 +1326,133 @@ export class SolanaTipLinkTool extends Tool { } } +export class SolanaListNFTForSaleTool extends Tool { + name = "solana_list_nft_for_sale"; + description = `List an NFT for sale on Tensor Trade. + + Inputs (input is a JSON string): + nftMint: string, the mint address of the NFT (required) + price: number, price in SOL (required) + expirySeconds: number, expiry time in seconds (optional)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + // Validate NFT ownership first + const nftAccount = await this.solanaKit.connection.getTokenAccountsByOwner( + this.solanaKit.wallet_address, + { mint: new PublicKey(parsedInput.nftMint) } + ); + + if (nftAccount.value.length === 0) { + return JSON.stringify({ + status: "error", + message: "NFT not found in wallet. Please make sure you own this NFT.", + code: "NFT_NOT_FOUND" + }); + } + + const tx = await this.solanaKit.tensorListNFT( + new PublicKey(parsedInput.nftMint), + parsedInput.price, + parsedInput.expirySeconds + ); + + return JSON.stringify({ + status: "success", + message: "NFT listed for sale successfully", + transaction: tx, + price: parsedInput.price, + nftMint: parsedInput.nftMint + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR" + }); + } + } +} + +export class SolanaBuyNFTTool extends Tool { + name = "solana_buy_nft"; + description = `Buy an NFT listed on Tensor Trade. + + Inputs (input is a JSON string): + nftMint: string, the mint address of the NFT (required) + maxPrice: number, maximum price willing to pay in SOL (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const tx = await this.solanaKit.tensorBuyNFT( + new PublicKey(parsedInput.nftMint), + parsedInput.maxPrice + ); + + return JSON.stringify({ + status: "success", + message: "NFT purchased successfully", + transaction: tx, + maxPrice: parsedInput.maxPrice, + nftMint: parsedInput.nftMint + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR" + }); + } + } +} + +export class SolanaCancelNFTListingTool extends Tool { + name = "solana_cancel_nft_listing"; + description = `Cancel an NFT listing on Tensor Trade. + + Inputs (input is a JSON string): + nftMint: string, the mint address of the NFT (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const tx = await this.solanaKit.tensorCancelListing( + new PublicKey(parsedInput.nftMint) + ); + + return JSON.stringify({ + status: "success", + message: "NFT listing cancelled successfully", + transaction: tx, + nftMint: parsedInput.nftMint + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR" + }); + } + } +} + export function createSolanaTools(solanaKit: SolanaAgentKit) { return [ new SolanaBalanceTool(solanaKit), @@ -1362,5 +1489,8 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaCreateGibworkTask(solanaKit), new SolanaRockPaperScissorsTool(solanaKit), new SolanaTipLinkTool(solanaKit), + new SolanaListNFTForSaleTool(solanaKit), + new SolanaBuyNFTTool(solanaKit), + new SolanaCancelNFTListingTool(solanaKit), ]; } diff --git a/src/tools/index.ts b/src/tools/index.ts index 468648e..6bc2d95 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -40,3 +40,5 @@ export * from "./create_gibwork_task"; export * from "./rock_paper_scissor"; export * from "./create_tiplinks"; + +export * from "./tensor_trade"; diff --git a/src/tools/tensor_trade.ts b/src/tools/tensor_trade.ts new file mode 100644 index 0000000..66faaf7 --- /dev/null +++ b/src/tools/tensor_trade.ts @@ -0,0 +1,112 @@ +import { SolanaAgentKit } from "../index"; +import { TCompSDK } from "@tensor-oss/tcomp-sdk"; +import { PublicKey, Transaction } from "@solana/web3.js"; +import { AnchorProvider, Wallet } from "@coral-xyz/anchor"; +import { BN } from "bn.js"; +import { getAssociatedTokenAddress, createAssociatedTokenAccountInstruction, TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID, getAccount } from '@solana/spl-token'; + +export async function listNFTForSale( + agent: SolanaAgentKit, + nftMint: PublicKey, + price: number, + expirySeconds?: number +): Promise { + try { + const mintInfo = await agent.connection.getAccountInfo(nftMint); + if (!mintInfo) { + throw new Error(`NFT mint ${nftMint.toString()} does not exist`); + } + + const ata = await getAssociatedTokenAddress( + nftMint, + agent.wallet_address + ); + + try { + const tokenAccount = await getAccount( + agent.connection, + ata + ); + console.log("Token Account:", tokenAccount); + } catch (e) { + console.error("Token account error:", e); + throw new Error(`No token account found for mint ${nftMint.toString()}`); + } + + const provider = new AnchorProvider( + agent.connection, + new Wallet(agent.wallet), + AnchorProvider.defaultOptions() + ); + + const tcompSdk = new TCompSDK({ provider }); + const priceInLamports = new BN(price * 1e9); + const expiry = expirySeconds ? new BN(expirySeconds) : null; + + const { tx } = await tcompSdk.listCore({ + asset: nftMint, + owner: agent.wallet_address, + amount: priceInLamports, + expireInSec: expiry + }); + + const transaction = new Transaction(); + transaction.add(...tx.ixs); + return await agent.connection.sendTransaction(transaction, [agent.wallet, ...tx.extraSigners]); + } catch (error: any) { + console.error("Full error details:", error); + throw error; + } +} + +export async function buyNFT( + agent: SolanaAgentKit, + nftMint: PublicKey, + maxPrice: number +): Promise { + const provider = new AnchorProvider( + agent.connection, + new Wallet(agent.wallet), + AnchorProvider.defaultOptions() + ); + + const tcompSdk = new TCompSDK({ provider }); + const maxPriceInLamports = new BN(maxPrice * 1e9); + + const { tx } = await tcompSdk.buyCore({ + asset: nftMint, + buyer: agent.wallet_address, + maxAmount: maxPriceInLamports, + owner: agent.wallet_address, + rentDest: agent.wallet_address, + payer: agent.wallet_address, + makerBroker: null + }); + + const transaction = new Transaction(); + transaction.add(...tx.ixs); + return await agent.connection.sendTransaction(transaction, [agent.wallet, ...tx.extraSigners]); +} + +export async function cancelListing( + agent: SolanaAgentKit, + nftMint: PublicKey +): Promise { + const provider = new AnchorProvider( + agent.connection, + new Wallet(agent.wallet), + AnchorProvider.defaultOptions() + ); + + const tcompSdk = new TCompSDK({ provider }); + + const { tx } = await tcompSdk.delistCore({ + asset: nftMint, + owner: agent.wallet_address, + rentDest: agent.wallet_address + }); + + const transaction = new Transaction(); + transaction.add(...tx.ixs); + return await agent.connection.sendTransaction(transaction, [agent.wallet, ...tx.extraSigners]); +} \ No newline at end of file From 45c8cad7b5072355945c40095b390073b656bb95 Mon Sep 17 00:00:00 2001 From: YCrydev <92126329+YCrydev@users.noreply.github.com> Date: Sun, 29 Dec 2024 19:05:18 +0100 Subject: [PATCH 17/94] update --- src/agent/index.ts | 4 +++- src/constants/index.ts | 2 ++ src/tools/trade.ts | 27 +++++++++++++++++++++++++-- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/agent/index.ts b/src/agent/index.ts index bf89861..3245dec 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -133,8 +133,10 @@ export class SolanaAgentKit { inputAmount: number, inputMint?: PublicKey, slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS, + jupReferralAccount?:PublicKey, + jupFeeBps?:number, ): Promise { - return trade(this, outputMint, inputAmount, inputMint, slippageBps); + return trade(this, outputMint, inputAmount, inputMint, slippageBps, jupReferralAccount ,jupFeeBps); } async lendAssets(amount: number): Promise { diff --git a/src/constants/index.ts b/src/constants/index.ts index 7c1d9c5..e2fef12 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -22,9 +22,11 @@ export const TOKENS = { export const DEFAULT_OPTIONS = { SLIPPAGE_BPS: 300, TOKEN_DECIMALS: 9, + RERERRAL_FEE:200, } as const; /** * Jupiter API URL */ export const JUP_API = "https://quote-api.jup.ag/v6"; +export const JUP_REFERRAL_ADDRESS = 'REFER4ZgmyYx9c6He5XfaTMiGfdLwRnkV4RPp9t9iF3' diff --git a/src/tools/trade.ts b/src/tools/trade.ts index b42cc2a..c7fc882 100644 --- a/src/tools/trade.ts +++ b/src/tools/trade.ts @@ -4,7 +4,12 @@ import { LAMPORTS_PER_SOL, } from "@solana/web3.js"; import { SolanaAgentKit } from "../index"; -import { TOKENS, DEFAULT_OPTIONS, JUP_API } from "../constants"; +import { + TOKENS, + DEFAULT_OPTIONS, + JUP_API, + JUP_REFERRAL_ADDRESS, +} from "../constants"; /** * Swap tokens using Jupiter Exchange @@ -13,6 +18,8 @@ import { TOKENS, DEFAULT_OPTIONS, JUP_API } from "../constants"; * @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%) + * @param jupReferralAccount Jup Refferral Account, to earn fees on swaps + * @param jupFeeBps Jup Refferral Fee, to earn fees on swaps (default: 100 = 1%) * @returns Transaction signature */ export async function trade( @@ -21,6 +28,8 @@ export async function trade( inputAmount: number, inputMint: PublicKey = TOKENS.USDC, slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS, + jupReferralAccount?: PublicKey, + jupFeeBps?: number, ): Promise { try { const quoteResponse = await ( @@ -31,11 +40,24 @@ export async function trade( `&amount=${inputAmount * LAMPORTS_PER_SOL}` + `&slippageBps=${slippageBps}` + `&onlyDirectRoutes=true` + - `&maxAccounts=20`, + `&maxAccounts=20` + + `${jupFeeBps ? `&platformFeeBps=${jupFeeBps}` : ""}`, ) ).json(); // Get serialized transaction + let feeAccount; + if (jupReferralAccount) { + [feeAccount] = await PublicKey.findProgramAddressSync( + [ + Buffer.from("referral_ata"), + jupReferralAccount.toBuffer(), + TOKENS.SOL.toBuffer(), + ], + new PublicKey(JUP_REFERRAL_ADDRESS), + ); + } + const { swapTransaction } = await ( await fetch("https://quote-api.jup.ag/v6/swap", { method: "POST", @@ -48,6 +70,7 @@ export async function trade( wrapAndUnwrapSol: true, dynamicComputeUnitLimit: true, prioritizationFeeLamports: "auto", + feeAccount: feeAccount ? feeAccount.toString() : null, }), }) ).json(); From f3c895560e8a5888ba9582ec4a722c7230acbaca Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Sun, 29 Dec 2024 20:09:05 +0100 Subject: [PATCH 18/94] feat: add the nextjs starter template to examples/ dir --- examples/README.md | 6 ------ examples/agent-kit-nextjs-langchain | 1 + 2 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 examples/README.md create mode 160000 examples/agent-kit-nextjs-langchain diff --git a/examples/README.md b/examples/README.md deleted file mode 100644 index 5af4c81..0000000 --- a/examples/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# Solana Agent Kit Examples - -This directory only contains this README file which is a collection of examples and projects built using the Solana Agent Kit, built by the Solana Agent Kit team and the community. - -## Starter Templates -- [SolanaAgentKit + 🦜️🔗 LangChain + Next.js Starter Template](https://github.com/michaelessiet/solana-agent-nextjs-starter-langchain) diff --git a/examples/agent-kit-nextjs-langchain b/examples/agent-kit-nextjs-langchain new file mode 160000 index 0000000..0d53c48 --- /dev/null +++ b/examples/agent-kit-nextjs-langchain @@ -0,0 +1 @@ +Subproject commit 0d53c48c0353dc4652b338eb7803147570907040 From 1cbdb82bb5f37fabf67d694f02a2c57eaa767c36 Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Sun, 29 Dec 2024 20:12:48 +0100 Subject: [PATCH 19/94] feat: add the nextjs starter template to examples/ dir --- examples/agent-kit-nextjs-langchain | 1 - .../agent-kit-nextjs-langchain/.env.example | 4 + .../agent-kit-nextjs-langchain/.eslintrc.json | 3 + .../agent-kit-nextjs-langchain/.gitignore | 43 + .../.prettierrc.json | 1 + examples/agent-kit-nextjs-langchain/LICENSE | 21 + examples/agent-kit-nextjs-langchain/README.md | 56 + .../app/api/chat/route.ts | 71 + .../app/globals.css | 33 + .../agent-kit-nextjs-langchain/app/layout.tsx | 45 + .../agent-kit-nextjs-langchain/app/page.tsx | 75 + .../components/ChatMessageBubble.tsx | 39 + .../components/ChatWindow.tsx | 248 + .../components/IntermediateStep.tsx | 50 + .../data/DefaultRetrievalText.ts | 540 ++ .../agent-kit-nextjs-langchain/next.config.js | 4 + .../agent-kit-nextjs-langchain/package.json | 44 + .../agent-kit-nextjs-langchain/pnpm-lock.yaml | 7733 +++++++++++++++++ .../postcss.config.js | 6 + .../public/images/favicon.ico | Bin 0 -> 15406 bytes .../public/images/og-image.png | Bin 0 -> 48617 bytes .../public/images/title-card.png | Bin 0 -> 101032 bytes .../tailwind.config.js | 18 + .../agent-kit-nextjs-langchain/tsconfig.json | 28 + 24 files changed, 9062 insertions(+), 1 deletion(-) delete mode 160000 examples/agent-kit-nextjs-langchain create mode 100644 examples/agent-kit-nextjs-langchain/.env.example create mode 100644 examples/agent-kit-nextjs-langchain/.eslintrc.json create mode 100644 examples/agent-kit-nextjs-langchain/.gitignore create mode 100644 examples/agent-kit-nextjs-langchain/.prettierrc.json create mode 100644 examples/agent-kit-nextjs-langchain/LICENSE create mode 100644 examples/agent-kit-nextjs-langchain/README.md create mode 100644 examples/agent-kit-nextjs-langchain/app/api/chat/route.ts create mode 100644 examples/agent-kit-nextjs-langchain/app/globals.css create mode 100644 examples/agent-kit-nextjs-langchain/app/layout.tsx create mode 100644 examples/agent-kit-nextjs-langchain/app/page.tsx create mode 100644 examples/agent-kit-nextjs-langchain/components/ChatMessageBubble.tsx create mode 100644 examples/agent-kit-nextjs-langchain/components/ChatWindow.tsx create mode 100644 examples/agent-kit-nextjs-langchain/components/IntermediateStep.tsx create mode 100644 examples/agent-kit-nextjs-langchain/data/DefaultRetrievalText.ts create mode 100644 examples/agent-kit-nextjs-langchain/next.config.js create mode 100644 examples/agent-kit-nextjs-langchain/package.json create mode 100644 examples/agent-kit-nextjs-langchain/pnpm-lock.yaml create mode 100644 examples/agent-kit-nextjs-langchain/postcss.config.js create mode 100644 examples/agent-kit-nextjs-langchain/public/images/favicon.ico create mode 100644 examples/agent-kit-nextjs-langchain/public/images/og-image.png create mode 100644 examples/agent-kit-nextjs-langchain/public/images/title-card.png create mode 100644 examples/agent-kit-nextjs-langchain/tailwind.config.js create mode 100644 examples/agent-kit-nextjs-langchain/tsconfig.json diff --git a/examples/agent-kit-nextjs-langchain b/examples/agent-kit-nextjs-langchain deleted file mode 160000 index 0d53c48..0000000 --- a/examples/agent-kit-nextjs-langchain +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0d53c48c0353dc4652b338eb7803147570907040 diff --git a/examples/agent-kit-nextjs-langchain/.env.example b/examples/agent-kit-nextjs-langchain/.env.example new file mode 100644 index 0000000..99650b7 --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/.env.example @@ -0,0 +1,4 @@ +LANGCHAIN_CALLBACKS_BACKGROUND=false +OPENAI_API_KEY= +RPC_URL= +SOLANA_PRIVATE_KEY= diff --git a/examples/agent-kit-nextjs-langchain/.eslintrc.json b/examples/agent-kit-nextjs-langchain/.eslintrc.json new file mode 100644 index 0000000..bffb357 --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/examples/agent-kit-nextjs-langchain/.gitignore b/examples/agent-kit-nextjs-langchain/.gitignore new file mode 100644 index 0000000..d1e196e --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/.gitignore @@ -0,0 +1,43 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions +.env \ No newline at end of file diff --git a/examples/agent-kit-nextjs-langchain/.prettierrc.json b/examples/agent-kit-nextjs-langchain/.prettierrc.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/.prettierrc.json @@ -0,0 +1 @@ +{} diff --git a/examples/agent-kit-nextjs-langchain/LICENSE b/examples/agent-kit-nextjs-langchain/LICENSE new file mode 100644 index 0000000..136a251 --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 LangChain + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/examples/agent-kit-nextjs-langchain/README.md b/examples/agent-kit-nextjs-langchain/README.md new file mode 100644 index 0000000..35a905d --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/README.md @@ -0,0 +1,56 @@ +# SolanaAgentKit 🦜️🔗 LangChain + Next.js Starter Template + +[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/michaelessiet/solana-agent-nextjs-starter-langchain) +[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fmichaelessiet%2Fsolana-agent-nextjs-starter-langchain) + +This template scaffolds a SolanaAgentKit + LangChain.js + Next.js starter app. + +The agent uses [LangGraph.js](https://langchain-ai.github.io/langgraphjs/), LangChain's framework for building agentic workflows. They use preconfigured helper functions to minimize boilerplate, but you can replace them with custom graphs as desired. + +![Demo GIF](/public/images/agent-convo.gif) + +It's free-tier friendly too! Check out the [bundle size stats below](#-bundle-size). + +## 🚀 Getting Started + +First, clone this repo and download it locally. + +Next, you'll need to set up environment variables in your repo's `.env.local` file. Copy the `.env.example` file to `.env.local`. +To start, you'll just need to add your OpenAI API key, Solana RPC URL and wallet private key in base 58 string form. + +Next, install the required packages using your preferred package manager (e.g. `pnpm`). + +```bash +pnpm install +``` + +Now you're ready to run the development server: + +```bash +pnpm dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result! Ask the bot something and you'll see a streamed response: + +![A streaming conversation between the user and the AI](/public/images/chat-conversation.png) + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +Backend logic lives in `app/api/chat/route.ts`. From here, you can change the prompt and model, or add other modules and logic. + +## 📚 Learn More + +To learn more about what you can do with SolanaAgentKit and LangChain.js, check out the docs here: + +- https://github.com/sendaifun/solana-agent-kit +- https://js.langchain.com/docs/ + +## ▲ Deploy on Vercel + +When ready, you can deploy your app on the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme). + +Check out the [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. + +## Thank You! + +Thanks for reading! If you have any questions or comments, please drop an issue on this repo or reach out to us on [X](https://x.com/sendaifun) diff --git a/examples/agent-kit-nextjs-langchain/app/api/chat/route.ts b/examples/agent-kit-nextjs-langchain/app/api/chat/route.ts new file mode 100644 index 0000000..06e6911 --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/app/api/chat/route.ts @@ -0,0 +1,71 @@ +import { NextRequest, NextResponse } from "next/server"; +import { ChatOpenAI } from "@langchain/openai"; +import { MemorySaver } from "@langchain/langgraph"; +import { createReactAgent } from "@langchain/langgraph/prebuilt"; +import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; + +const llm = new ChatOpenAI({ + temperature: 0.7, + model: "gpt-4o-mini", +}); + +const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL, + process.env.OPENAI_API_KEY!, +); + +const tools = createSolanaTools(solanaAgent); +const memory = new MemorySaver(); + +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. + `, +}); + +export async function POST(req: NextRequest) { + try { + const body = await req.json(); + const messages = body.messages ?? []; + + const eventStream = agent.streamEvents( + { + messages, + }, + { + version: "v2", + configurable: { + thread_id: "Solana Agent Kit!", + }, + }, + ); + + const textEncoder = new TextEncoder(); + const transformStream = new ReadableStream({ + async start(controller) { + for await (const { event, data } of eventStream) { + if (event === "on_chat_model_stream") { + if (!!data.chunk.content) { + controller.enqueue(textEncoder.encode(data.chunk.content)); + } + } + } + controller.close(); + }, + }); + + return new Response(transformStream); + } catch (e: any) { + return NextResponse.json({ error: e.message }, { status: e.status ?? 500 }); + } +} diff --git a/examples/agent-kit-nextjs-langchain/app/globals.css b/examples/agent-kit-nextjs-langchain/app/globals.css new file mode 100644 index 0000000..bbdc80a --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/app/globals.css @@ -0,0 +1,33 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +body { + color: #f8f8f8; + background: #131318; +} + +body input, +body textarea { + color: black; +} + +a { + color: #2d7bd4; +} + +a:hover { + border-bottom: 1px solid; +} + +p { + margin: 8px 0; +} + +code { + color: #ffa500; +} + +li { + padding: 4px; +} diff --git a/examples/agent-kit-nextjs-langchain/app/layout.tsx b/examples/agent-kit-nextjs-langchain/app/layout.tsx new file mode 100644 index 0000000..0b627ec --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/app/layout.tsx @@ -0,0 +1,45 @@ +import "./globals.css"; +import { Public_Sans } from "next/font/google"; + +const publicSans = Public_Sans({ subsets: ["latin"] }); + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + + + SolanaAgentKit + LangChain + Next.js Template + + + + + + + + + + + +
    {children}
    + + + ); +} diff --git a/examples/agent-kit-nextjs-langchain/app/page.tsx b/examples/agent-kit-nextjs-langchain/app/page.tsx new file mode 100644 index 0000000..a9eb072 --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/app/page.tsx @@ -0,0 +1,75 @@ +import { ChatWindow } from "@/components/ChatWindow"; + +export default function Home() { + const InfoCard = ( +
    +

    + SolanaAgentKit + LangChain.js 🦜🔗 + Next.js +

    +
      +
    • + 🤝 + + This template showcases a simple agent chatbot using{" "} + SolanaAgentKit + {", "} + + LangChain.js + {" "} + and the Vercel{" "} + + AI SDK + {" "} + in a{" "} + + Next.js + {" "} + project. + +
    • +
    • + 💻 + + You can find the prompt and model logic for this use-case in{" "} + app/api/chat/route.ts. + +
    • +
    • + 🎨 + + The main frontend logic is found in app/page.tsx. + +
    • +
    • + 🐙 + + This template is open source - you can see the source code and + deploy your own version{" "} + + from the GitHub repo + + ! + +
    • +
    • + 👇 + + Try asking e.g. What is my wallet address? below! + +
    • +
    +
    + ); + return ( + + ); +} diff --git a/examples/agent-kit-nextjs-langchain/components/ChatMessageBubble.tsx b/examples/agent-kit-nextjs-langchain/components/ChatMessageBubble.tsx new file mode 100644 index 0000000..8d1beca --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/components/ChatMessageBubble.tsx @@ -0,0 +1,39 @@ +import type { Message } from "ai/react"; + +export function ChatMessageBubble(props: { message: Message, aiEmoji?: string, sources: any[] }) { + const colorClassName = + props.message.role === "user" ? "bg-sky-600" : "bg-slate-50 text-black"; + const alignmentClassName = + props.message.role === "user" ? "ml-auto" : "mr-auto"; + const prefix = props.message.role === "user" ? "🧑" : props.aiEmoji; + return ( +
    +
    + {prefix} +
    +
    + {props.message.content} + {props.sources && props.sources.length ? <> + +

    + 🔍 Sources: +

    +
    + + {props.sources?.map((source, i) => ( +
    + {i + 1}. "{source.pageContent}"{ + source.metadata?.loc?.lines !== undefined + ?

    Lines {source.metadata?.loc?.lines?.from} to {source.metadata?.loc?.lines?.to}
    + : "" + } +
    + ))} +
    + : ""} +
    +
    + ); +} \ No newline at end of file diff --git a/examples/agent-kit-nextjs-langchain/components/ChatWindow.tsx b/examples/agent-kit-nextjs-langchain/components/ChatWindow.tsx new file mode 100644 index 0000000..b1f0d90 --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/components/ChatWindow.tsx @@ -0,0 +1,248 @@ +"use client"; + +import { ToastContainer, toast } from "react-toastify"; +import "react-toastify/dist/ReactToastify.css"; + +import { Message } from "ai"; +import { useChat } from "ai/react"; +import { useRef, useState, ReactElement } from "react"; +import type { FormEvent } from "react"; + +import { ChatMessageBubble } from "@/components/ChatMessageBubble"; +import { IntermediateStep } from "./IntermediateStep"; + +export function ChatWindow(props: { + endpoint: string; + emptyStateComponent: ReactElement; + placeholder?: string; + titleText?: string; + emoji?: string; + showIntermediateStepsToggle?: boolean; +}) { + const messageContainerRef = useRef(null); + + const { + endpoint, + emptyStateComponent, + placeholder, + titleText = "An LLM", + showIntermediateStepsToggle, + emoji, + } = props; + + const [showIntermediateSteps, setShowIntermediateSteps] = useState(false); + const [intermediateStepsLoading, setIntermediateStepsLoading] = + useState(false); + const intemediateStepsToggle = showIntermediateStepsToggle && ( +
    + setShowIntermediateSteps(e.target.checked)} + > + +
    + ); + + const [sourcesForMessages, setSourcesForMessages] = useState< + Record + >({}); + + const { + messages, + input, + setInput, + handleInputChange, + handleSubmit, + isLoading: chatEndpointIsLoading, + setMessages, + } = useChat({ + api: endpoint, + onResponse(response) { + const sourcesHeader = response.headers.get("x-sources"); + const sources = sourcesHeader + ? JSON.parse(Buffer.from(sourcesHeader, "base64").toString("utf8")) + : []; + const messageIndexHeader = response.headers.get("x-message-index"); + if (sources.length && messageIndexHeader !== null) { + setSourcesForMessages({ + ...sourcesForMessages, + [messageIndexHeader]: sources, + }); + } + }, + streamMode: "text", + onError: (e) => { + toast(e.message, { + theme: "dark", + }); + }, + }); + + async function sendMessage(e: FormEvent) { + e.preventDefault(); + if (messageContainerRef.current) { + messageContainerRef.current.classList.add("grow"); + } + if (!messages.length) { + await new Promise((resolve) => setTimeout(resolve, 300)); + } + if (chatEndpointIsLoading ?? intermediateStepsLoading) { + return; + } + if (!showIntermediateSteps) { + handleSubmit(e); + // Some extra work to show intermediate steps properly + } else { + setIntermediateStepsLoading(true); + setInput(""); + const messagesWithUserReply = messages.concat({ + id: messages.length.toString(), + content: input, + role: "user", + }); + setMessages(messagesWithUserReply); + const response = await fetch(endpoint, { + method: "POST", + body: JSON.stringify({ + messages: messagesWithUserReply, + show_intermediate_steps: true, + }), + }); + const json = await response.json(); + setIntermediateStepsLoading(false); + if (response.status === 200) { + const responseMessages: Message[] = json.messages; + // Represent intermediate steps as system messages for display purposes + // TODO: Add proper support for tool messages + const toolCallMessages = responseMessages.filter( + (responseMessage: Message) => { + return ( + (responseMessage.role === "assistant" && + !!responseMessage.tool_calls?.length) || + responseMessage.role === "tool" + ); + }, + ); + const intermediateStepMessages = []; + for (let i = 0; i < toolCallMessages.length; i += 2) { + const aiMessage = toolCallMessages[i]; + const toolMessage = toolCallMessages[i + 1]; + intermediateStepMessages.push({ + id: (messagesWithUserReply.length + i / 2).toString(), + role: "system" as const, + content: JSON.stringify({ + action: aiMessage.tool_calls?.[0], + observation: toolMessage.content, + }), + }); + } + const newMessages = messagesWithUserReply; + for (const message of intermediateStepMessages) { + newMessages.push(message); + setMessages([...newMessages]); + await new Promise((resolve) => + setTimeout(resolve, 1000 + Math.random() * 1000), + ); + } + setMessages([ + ...newMessages, + { + id: newMessages.length.toString(), + content: responseMessages[responseMessages.length - 1].content, + role: "assistant", + }, + ]); + } else { + if (json.error) { + toast(json.error, { + theme: "dark", + }); + throw new Error(json.error); + } + } + } + } + + return ( +
    0 ? "border" : ""}`} + > +

    0 ? "" : "hidden"} text-2xl`}> + {emoji} {titleText} +

    + {messages.length === 0 ? emptyStateComponent : ""} +
    + {messages.length > 0 + ? [...messages].reverse().map((m, i) => { + const sourceKey = (messages.length - 1 - i).toString(); + return m.role === "system" ? ( + + ) : ( + + ); + }) + : ""} +
    + +
    +
    {intemediateStepsToggle}
    +
    + + +
    +
    + +
    + ); +} diff --git a/examples/agent-kit-nextjs-langchain/components/IntermediateStep.tsx b/examples/agent-kit-nextjs-langchain/components/IntermediateStep.tsx new file mode 100644 index 0000000..5ec1fc0 --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/components/IntermediateStep.tsx @@ -0,0 +1,50 @@ +import { useState } from "react"; +import type { Message } from "ai/react"; + +export function IntermediateStep(props: { message: Message }) { + const parsedInput = JSON.parse(props.message.content); + const action = parsedInput.action; + const observation = parsedInput.observation; + const [expanded, setExpanded] = useState(false); + return ( +
    +
    setExpanded(!expanded)} + > + + 🛠 {action.name} + + 🔽 + 🔼 +
    +
    +
    + + Tool Input: +

    +

    + {JSON.stringify(action.args)} +
    +
    +
    + + {observation} + +
    +
    +
    + ); +} diff --git a/examples/agent-kit-nextjs-langchain/data/DefaultRetrievalText.ts b/examples/agent-kit-nextjs-langchain/data/DefaultRetrievalText.ts new file mode 100644 index 0000000..898acba --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/data/DefaultRetrievalText.ts @@ -0,0 +1,540 @@ +export default `# QA and Chat over Documents + +Chat and Question-Answering (QA) over \`data\` are popular LLM use-cases. + +\`data\` can include many things, including: + +* \`Unstructured data\` (e.g., PDFs) +* \`Structured data\` (e.g., SQL) +* \`Code\` (e.g., Python) + +Below we will review Chat and QA on \`Unstructured data\`. + +![intro.png](/img/qa_intro.png) + +\`Unstructured data\` can be loaded from many sources. + +Check out the [document loader integrations here](/docs/modules/data_connection/document_loaders/) to browse the set of supported loaders. + +Each loader returns data as a LangChain \`Document\`. + +\`Documents\` are turned into a Chat or QA app following the general steps below: + +* \`Splitting\`: [Text splitters](/docs/modules/data_connection/document_transformers/) break \`Documents\` into splits of specified size +* \`Storage\`: Storage (e.g., often a [vectorstore](/docs/modules/data_connection/vectorstores/)) will house [and often embed](https://www.pinecone.io/learn/vector-embeddings/) the splits +* \`Retrieval\`: The app retrieves splits from storage (e.g., often [with similar embeddings](https://www.pinecone.io/learn/k-nearest-neighbor/) to the input question) +* \`Output\`: An [LLM](/docs/modules/model_io/models/llms/) produces an answer using a prompt that includes the question and the retrieved splits + +![flow.jpeg](/img/qa_flow.jpeg) + +## Quickstart + +Let's load this [blog post](https://lilianweng.github.io/posts/2023-06-23-agent/) on agents as an example \`Document\`. + +We'll have a QA app in a few lines of code. + +First, set environment variables and install packages required for the guide: + +\`\`\`shell +> yarn add cheerio +# Or load env vars in your preferred way: +> export OPENAI_API_KEY="..." +\`\`\` + +## 1. Loading, Splitting, Storage + +### 1.1 Getting started + +Specify a \`Document\` loader. + +\`\`\`typescript +// Document loader +import { CheerioWebBaseLoader } from "langchain/document_loaders/web/cheerio"; + +const loader = new CheerioWebBaseLoader( + "https://lilianweng.github.io/posts/2023-06-23-agent/" +); +const data = await loader.load(); +\`\`\` + +Split the \`Document\` into chunks for embedding and vector storage. + + +\`\`\`typescript +import { RecursiveCharacterTextSplitter } from "langchain/text_splitter"; + +const textSplitter = new RecursiveCharacterTextSplitter({ + chunkSize: 500, + chunkOverlap: 0, +}); + +const splitDocs = await textSplitter.splitDocuments(data); +\`\`\` + +Embed and store the splits in a vector database (for demo purposes we use an unoptimized, in-memory example but you can [browse integrations here](/docs/modules/data_connection/vectorstores/integrations/)): + + +\`\`\`typescript +import { OpenAIEmbeddings } from "langchain/embeddings/openai"; +import { MemoryVectorStore } from "langchain/vectorstores/memory"; + +const embeddings = new OpenAIEmbeddings(); + +const vectorStore = await MemoryVectorStore.fromDocuments(splitDocs, embeddings); +\`\`\` + +Here are the three pieces together: + +![lc.png](/img/qa_data_load.png) + +### 1.2 Going Deeper + +#### 1.2.1 Integrations + +\`Document Loaders\` + +* Browse document loader integrations [here](/docs/modules/data_connection/document_loaders/). + +* See further documentation on loaders [here](/docs/modules/data_connection/document_loaders/). + +\`Document Transformers\` + +* All can ingest loaded \`Documents\` and process them (e.g., split). + +* See further documentation on transformers [here](/docs/modules/data_connection/document_transformers/). + +\`Vectorstores\` + +* Browse vectorstore integrations [here](/docs/modules/data_connection/vectorstores/integrations/). + +* See further documentation on vectorstores [here](/docs/modules/data_connection/vectorstores/). + +## 2. Retrieval + +### 2.1 Getting started + +Retrieve [relevant splits](https://www.pinecone.io/learn/what-is-similarity-search/) for any question using \`similarity_search\`. + + +\`\`\`typescript +const relevantDocs = await vectorStore.similaritySearch("What is task decomposition?"); + +console.log(relevantDocs.length); + +// 4 +\`\`\` + + +### 2.2 Going Deeper + +#### 2.2.1 Retrieval + +Vectorstores are commonly used for retrieval. + +But, they are not the only option. + +For example, SVMs (see thread [here](https://twitter.com/karpathy/status/1647025230546886658?s=20)) can also be used. + +LangChain [has many retrievers and retrieval methods](/docs/modules/data_connection/retrievers/) including, but not limited to, vectorstores. + +All retrievers implement some common methods, such as \`getRelevantDocuments()\`. + + +## 3. QA + +### 3.1 Getting started + +Distill the retrieved documents into an answer using an LLM (e.g., \`gpt-3.5-turbo\`) with \`RetrievalQA\` chain. + + +\`\`\`typescript +import { RetrievalQAChain } from "langchain/chains"; +import { ChatOpenAI } from "langchain/chat_models/openai"; + +const model = new ChatOpenAI({ model: "gpt-3.5-turbo" }); +const chain = RetrievalQAChain.fromLLM(model, vectorstore.asRetriever()); + +const response = await chain.call({ + query: "What is task decomposition?" +}); +console.log(response); + +/* + { + text: 'Task decomposition refers to the process of breaking down a larger task into smaller, more manageable subgoals. By decomposing a task, it becomes easier for an agent or system to handle complex tasks efficiently. Task decomposition can be done through various methods such as using prompting or task-specific instructions, or through human inputs. It helps in planning and organizing the steps required to complete a task effectively.' + } +*/ +\`\`\` + +### 3.2 Going Deeper + +#### 3.2.1 Integrations + +\`LLMs\` + +* Browse LLM integrations and further documentation [here](/docs/modules/model_io/models/). + +#### 3.2.2 Customizing the prompt + +The prompt in \`RetrievalQA\` chain can be customized as follows. + + +\`\`\`typescript +import { RetrievalQAChain } from "langchain/chains"; +import { ChatOpenAI } from "langchain/chat_models/openai"; +import { PromptTemplate } from "langchain/prompts"; + +const model = new ChatOpenAI({ model: "gpt-3.5-turbo" }); + +const template = \`Use the following pieces of context to answer the question at the end. +If you don't know the answer, just say that you don't know, don't try to make up an answer. +Use three sentences maximum and keep the answer as concise as possible. +Always say "thanks for asking!" at the end of the answer. +{context} +Question: {question} +Helpful Answer:\`; + +const chain = RetrievalQAChain.fromLLM(model, vectorstore.asRetriever(), { + prompt: PromptTemplate.fromTemplate(template), +}); + +const response = await chain.call({ + query: "What is task decomposition?" +}); + +console.log(response); + +/* + { + text: 'Task decomposition is the process of breaking down a large task into smaller, more manageable subgoals. This allows for efficient handling of complex tasks and aids in planning and organizing the steps needed to achieve the overall goal. Thanks for asking!' + } +*/ +\`\`\` + + +#### 3.2.3 Returning source documents + +The full set of retrieved documents used for answer distillation can be returned using \`return_source_documents=True\`. + + +\`\`\`typescript +import { RetrievalQAChain } from "langchain/chains"; +import { ChatOpenAI } from "langchain/chat_models/openai"; + +const model = new ChatOpenAI({ model: "gpt-3.5-turbo" }); + +const chain = RetrievalQAChain.fromLLM(model, vectorstore.asRetriever(), { + returnSourceDocuments: true +}); + +const response = await chain.call({ + query: "What is task decomposition?" +}); + +console.log(response.sourceDocuments[0]); + +/* +Document { + pageContent: 'Task decomposition can be done (1) by LLM with simple prompting like "Steps for XYZ.\\n1.", "What are the subgoals for achieving XYZ?", (2) by using task-specific instructions; e.g. "Write a story outline." for writing a novel, or (3) with human inputs.', + metadata: [Object] +} +*/ +\`\`\` + + +#### 3.2.4 Customizing retrieved docs in the LLM prompt + +Retrieved documents can be fed to an LLM for answer distillation in a few different ways. + +\`stuff\`, \`refine\`, and \`map-reduce\` chains for passing documents to an LLM prompt are well summarized [here](/docs/modules/chains/document/). + +\`stuff\` is commonly used because it simply "stuffs" all retrieved documents into the prompt. + +The [loadQAChain](/docs/modules/chains/document/) methods are easy ways to pass documents to an LLM using these various approaches. + + +\`\`\`typescript +import { loadQAStuffChain } from "langchain/chains"; + +const stuffChain = loadQAStuffChain(model); + +const stuffResult = await stuffChain.call({ + input_documents: relevantDocs, + question: "What is task decomposition +}); + +console.log(stuffResult); +/* +{ + text: 'Task decomposition is the process of breaking down a large task into smaller, more manageable subgoals or steps. This allows for efficient handling of complex tasks by focusing on one subgoal at a time. Task decomposition can be done through various methods such as using simple prompting, task-specific instructions, or human inputs.' +} +*/ +\`\`\` + +## 4. Chat + +### 4.1 Getting started + +To keep chat history, we use a variant of the previous chain called a \`ConversationalRetrievalQAChain\`. +First, specify a \`Memory buffer\` to track the conversation inputs / outputs. + + +\`\`\`typescript +import { ConversationalRetrievalQAChain } from "langchain/chains"; +import { BufferMemory } from "langchain/memory"; +import { ChatOpenAI } from "langchain/chat_models/openai"; + +const memory = new BufferMemory({ + memoryKey: "chat_history", + returnMessages: true, +}); +\`\`\` + +Next, we initialize and call the chain: + +\`\`\`typescript +const model = new ChatOpenAI({ model: "gpt-3.5-turbo" }); +const chain = ConversationalRetrievalQAChain.fromLLM(model, vectorstore.asRetriever(), { + memory +}); + +const result = await chain.call({ + question: "What are some of the main ideas in self-reflection?" +}); +console.log(result); + +/* +{ + text: 'Some main ideas in self-reflection include:\n' + + '\n' + + '1. Iterative Improvement: Self-reflection allows autonomous agents to improve by continuously refining past action decisions and correcting mistakes.\n' + + '\n' + + '2. Trial and Error: Self-reflection plays a crucial role in real-world tasks where trial and error are inevitable. It helps agents learn from failed trajectories and make adjustments for future actions.\n' + + '\n' + + '3. Constructive Criticism: Agents engage in constructive self-criticism of their big-picture behavior to identify areas for improvement.\n' + + '\n' + + '4. Decision and Strategy Refinement: Reflection on past decisions and strategies enables agents to refine their approach and make more informed choices.\n' + + '\n' + + '5. Efficiency and Optimization: Self-reflection encourages agents to be smart and efficient in their actions, aiming to complete tasks in the least number of steps.\n' + + '\n' + + 'These ideas highlight the importance of self-reflection in enhancing performance and guiding future actions.' +} +*/ +\`\`\` + + +The \`Memory buffer\` has context to resolve \`"it"\` ("self-reflection") in the below question. + + +\`\`\`typescript +const followupResult = await chain.call({ + question: "How does the Reflexion paper handle it?" +}); +console.log(followupResult); + +/* +{ + text: "The Reflexion paper introduces a framework that equips agents with dynamic memory and self-reflection capabilities to improve their reasoning skills. The approach involves showing the agent two-shot examples, where each example consists of a failed trajectory and an ideal reflection on how to guide future changes in the agent's plan. These reflections are then added to the agent's working memory as context for querying a language model. The agent uses this self-reflection information to make decisions on whether to start a new trial or continue with the current plan." +} +*/ +\`\`\` + + +### 4.2 Going deeper + +The [documentation](/docs/modules/chains/popular/chat_vector_db) on \`ConversationalRetrievalQAChain\` offers a few extensions, such as streaming and source documents. + + +# Conversational Retrieval Agents + +This is an agent specifically optimized for doing retrieval when necessary while holding a conversation and being able +to answer questions based on previous dialogue in the conversation. + +To start, we will set up the retriever we want to use, then turn it into a retriever tool. Next, we will use the high-level constructor for this type of agent. +Finally, we will walk through how to construct a conversational retrieval agent from components. + +## The Retriever + +To start, we need a retriever to use! The code here is mostly just example code. Feel free to use your own retriever and skip to the next section on creating a retriever tool. + +\`\`\`typescript +import { FaissStore } from "langchain/vectorstores/faiss"; +import { OpenAIEmbeddings } from "langchain/embeddings/openai"; +import { TextLoader } from "langchain/document_loaders/fs/text"; +import { RecursiveCharacterTextSplitter } from "langchain/text_splitter"; + +const loader = new TextLoader("state_of_the_union.txt"); +const docs = await loader.load(); +const splitter = new RecursiveCharacterTextSplitter({ + chunkSize: 1000, + chunkOverlap: 0 +}); + +const texts = await splitter.splitDocuments(docs); + +const vectorStore = await FaissStore.fromDocuments(texts, new OpenAIEmbeddings()); + +const retriever = vectorStore.asRetriever(); +\`\`\` + +## Retriever Tool + +Now we need to create a tool for our retriever. The main things we need to pass in are a \`name\` for the retriever as well as a \`description\`. These will both be used by the language model, so they should be informative. + +\`\`\`typescript +import { createRetrieverTool } from "langchain/agents/toolkits"; + +const tool = createRetrieverTool(retriever, { + name: "search_state_of_union", + description: "Searches and returns documents regarding the state-of-the-union.", +}); +\`\`\` + +## Agent Constructor + +Here, we will use the high level \`create_conversational_retrieval_agent\` API to construct the agent. +Notice that beside the list of tools, the only thing we need to pass in is a language model to use. + +Under the hood, this agent is using the OpenAIFunctionsAgent, so we need to use an ChatOpenAI model. + +\`\`\`typescript +import { createConversationalRetrievalAgent } from "langchain/agents/toolkits"; +import { ChatOpenAI } from "langchain/chat_models/openai"; + +const model = new ChatOpenAI({ + temperature: 0, +}); + +const executor = await createConversationalRetrievalAgent(model, [tool], { + verbose: true, +}); +\`\`\` + +We can now try it out! + +\`\`\`typescript +const result = await executor.call({ + input: "Hi, I'm Bob!" +}); + +console.log(result); + +/* + { + output: 'Hello Bob! How can I assist you today?', + intermediateSteps: [] + } +*/ + +const result2 = await executor.call({ + input: "What's my name?" +}); + +console.log(result2); + +/* + { output: 'Your name is Bob.', intermediateSteps: [] } +*/ + +const result3 = await executor.call({ + input: "What did the president say about Ketanji Brown Jackson in the most recent state of the union?" +}); + +console.log(result3); + +/* + { + output: "In the most recent state of the union, President Biden mentioned Ketanji Brown Jackson. He nominated her as a Circuit Court of Appeals judge and described her as one of the nation's top legal minds who will continue Justice Breyer's legacy of excellence. He mentioned that she has received a broad range of support, including from the Fraternal Order of Police and former judges appointed by Democrats and Republicans.", + intermediateSteps: [ + {...} + ] + } +*/ + +const result4 = await executor.call({ + input: "How long ago did he nominate her?" +}); + +console.log(result4); + +/* + { + output: 'President Biden nominated Ketanji Brown Jackson four days before the most recent state of the union address.', + intermediateSteps: [] + } +*/ +\`\`\` + +Note that for the final call, the agent used previously retrieved information to answer the query and did not need to call the tool again! + +Here's a trace showing how the agent fetches documents to answer the question with the retrieval tool: + +https://smith.langchain.com/public/1e2b1887-ca44-4210-913b-a69c1b8a8e7e/r + +## Creating from components + +What actually is going on underneath the hood? Let's take a look so we can understand how to modify things going forward. + +### Memory + +In this example, we want the agent to remember not only previous conversations, but also previous intermediate steps. +For that, we can use \`OpenAIAgentTokenBufferMemory\`. Note that if you want to change whether the agent remembers intermediate steps, +how the long the retained buffer is, or anything like that you should change this part. + +\`\`\`typescript +import { OpenAIAgentTokenBufferMemory } from "langchain/agents/toolkits"; + +const memory = new OpenAIAgentTokenBufferMemory({ + llm: model, + memoryKey: "chat_history", + outputKey: "output" +}); +\`\`\` + +You should make sure \`memoryKey\` is set to \`"chat_history"\` and \`outputKey\` is set to \`"output"\` for the OpenAI functions agent. +This memory also has \`returnMessages\` set to \`true\` by default. + +You can also load messages from prior conversations into this memory by initializing it with a pre-loaded chat history: + +\`\`\`typescript +import { ChatOpenAI } from "langchain/chat_models/openai"; +import { OpenAIAgentTokenBufferMemory } from "langchain/agents/toolkits"; +import { HumanMessage, AIMessage } from "langchain/schema"; +import { ChatMessageHistory } from "langchain/memory"; + +const previousMessages = [ + new HumanMessage("My name is Bob"), + new AIMessage("Nice to meet you, Bob!"), +]; + +const chatHistory = new ChatMessageHistory(previousMessages); + +const memory = new OpenAIAgentTokenBufferMemory({ + llm: new ChatOpenAI({}), + memoryKey: "chat_history", + outputKey: "output", + chatHistory, +}); +\`\`\` + +### Agent executor + +We can recreate the agent executor directly with the \`initializeAgentExecutorWithOptions\` method. +This allows us to customize the agent's system message by passing in a \`prefix\` into \`agentArgs\`. +Importantly, we must pass in \`return_intermediate_steps: true\` since we are recording that with our memory object. + +\`\`\`typescript +import { initializeAgentExecutorWithOptions } from "langchain/agents"; + +const executor = await initializeAgentExecutorWithOptions(tools, llm, { + agentType: "openai-functions", + memory, + returnIntermediateSteps: true, + agentArgs: { + prefix: + prefix ?? + \`Do your best to answer the questions. Feel free to use any tools available to look up relevant information, only if necessary.\`, + }, +}); +\`\`\` +`; \ No newline at end of file diff --git a/examples/agent-kit-nextjs-langchain/next.config.js b/examples/agent-kit-nextjs-langchain/next.config.js new file mode 100644 index 0000000..654e669 --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/next.config.js @@ -0,0 +1,4 @@ +const withBundleAnalyzer = require('@next/bundle-analyzer')({ + enabled: process.env.ANALYZE === 'true', +}) +module.exports = withBundleAnalyzer({}) \ No newline at end of file diff --git a/examples/agent-kit-nextjs-langchain/package.json b/examples/agent-kit-nextjs-langchain/package.json new file mode 100644 index 0000000..241a8d4 --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/package.json @@ -0,0 +1,44 @@ +{ + "name": "langchain-nextjs-template", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "format": "prettier --write \"app\"" + }, + "engines": { + "node": ">=18" + }, + "dependencies": { + "@langchain/community": "^0.3.11", + "@langchain/core": "^0.3.17", + "@langchain/langgraph": "^0.2.20", + "@langchain/openai": "^0.3.11", + "@next/bundle-analyzer": "^13.4.19", + "@supabase/supabase-js": "^2.32.0", + "@types/node": "20.12.12", + "@types/react": "18.3.2", + "@types/react-dom": "18.3.0", + "ai": "^3.1.12", + "autoprefixer": "10.4.14", + "eslint": "8.46.0", + "eslint-config-next": "13.4.12", + "langchain": "^0.3.5", + "next": "^14.2.3", + "postcss": "8.4.27", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-toastify": "^9.1.3", + "solana-agent-kit": "^1.3.0", + "tailwindcss": "3.3.3", + "typescript": "5.1.6", + "zod": "^3.22.3", + "zod-to-json-schema": "^3.21.4" + }, + "devDependencies": { + "prettier": "3.0.0" + } +} diff --git a/examples/agent-kit-nextjs-langchain/pnpm-lock.yaml b/examples/agent-kit-nextjs-langchain/pnpm-lock.yaml new file mode 100644 index 0000000..966aa8b --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/pnpm-lock.yaml @@ -0,0 +1,7733 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@langchain/community': + specifier: ^0.3.11 + version: 0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(@supabase/supabase-js@2.47.10(bufferutil@4.0.8)(utf-8-validate@5.0.10))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(ignore@5.3.2)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@langchain/core': + specifier: ^0.3.17 + version: 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/langgraph': + specifier: ^0.2.20 + version: 0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@langchain/openai': + specifier: ^0.3.11 + version: 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@next/bundle-analyzer': + specifier: ^13.4.19 + version: 13.5.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@supabase/supabase-js': + specifier: ^2.32.0 + version: 2.47.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@types/node': + specifier: 20.12.12 + version: 20.12.12 + '@types/react': + specifier: 18.3.2 + version: 18.3.2 + '@types/react-dom': + specifier: 18.3.0 + version: 18.3.0 + ai: + specifier: ^3.1.12 + version: 3.4.33(openai@4.77.0(zod@3.24.1))(react@18.3.1)(sswr@2.1.0(svelte@5.16.0))(svelte@5.16.0)(vue@3.5.13(typescript@5.1.6))(zod@3.24.1) + autoprefixer: + specifier: 10.4.14 + version: 10.4.14(postcss@8.4.27) + eslint: + specifier: 8.46.0 + version: 8.46.0 + eslint-config-next: + specifier: 13.4.12 + version: 13.4.12(eslint@8.46.0)(typescript@5.1.6) + langchain: + specifier: ^0.3.5 + version: 0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(openai@4.77.0(zod@3.24.1)) + next: + specifier: ^14.2.3 + version: 14.2.21(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + postcss: + specifier: 8.4.27 + version: 8.4.27 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + react-toastify: + specifier: ^9.1.3 + version: 9.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + solana-agent-kit: + specifier: ^1.3.0 + version: 1.3.0(@noble/hashes@1.6.1)(axios@1.7.4)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10)(zod@3.24.1) + tailwindcss: + specifier: 3.3.3 + version: 3.3.3 + typescript: + specifier: 5.1.6 + version: 5.1.6 + zod: + specifier: ^3.22.3 + version: 3.24.1 + zod-to-json-schema: + specifier: ^3.21.4 + version: 3.24.1(zod@3.24.1) + devDependencies: + prettier: + specifier: 3.0.0 + version: 3.0.0 + +packages: + + '@ai-sdk/provider-utils@1.0.22': + resolution: {integrity: sha512-YHK2rpj++wnLVc9vPGzGFP3Pjeld2MwhKinetA0zKXOoHAT/Jit5O8kZsxcSlJPu9wvcGT1UGZEjZrtO7PfFOQ==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + + '@ai-sdk/provider@0.0.26': + resolution: {integrity: sha512-dQkfBDs2lTYpKM8389oopPdQgIU007GQyCbuPPrV+K6MtSII3HBfE0stUIMXUb44L+LK1t6GXPP7wjSzjO6uKg==} + engines: {node: '>=18'} + + '@ai-sdk/react@0.0.70': + resolution: {integrity: sha512-GnwbtjW4/4z7MleLiW+TOZC2M29eCg1tOUpuEiYFMmFNZK8mkrqM0PFZMo6UsYeUYMWqEOOcPOU9OQVJMJh7IQ==} + engines: {node: '>=18'} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + zod: ^3.0.0 + peerDependenciesMeta: + react: + optional: true + zod: + optional: true + + '@ai-sdk/solid@0.0.54': + resolution: {integrity: sha512-96KWTVK+opdFeRubqrgaJXoNiDP89gNxFRWUp0PJOotZW816AbhUf4EnDjBjXTLjXL1n0h8tGSE9sZsRkj9wQQ==} + engines: {node: '>=18'} + peerDependencies: + solid-js: ^1.7.7 + peerDependenciesMeta: + solid-js: + optional: true + + '@ai-sdk/svelte@0.0.57': + resolution: {integrity: sha512-SyF9ItIR9ALP9yDNAD+2/5Vl1IT6kchgyDH8xkmhysfJI6WrvJbtO1wdQ0nylvPLcsPoYu+cAlz1krU4lFHcYw==} + engines: {node: '>=18'} + peerDependencies: + svelte: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + svelte: + optional: true + + '@ai-sdk/ui-utils@0.0.50': + resolution: {integrity: sha512-Z5QYJVW+5XpSaJ4jYCCAVG7zIAuKOOdikhgpksneNmKvx61ACFaf98pmOd+xnjahl0pIlc/QIe6O4yVaJ1sEaw==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + + '@ai-sdk/vue@0.0.59': + resolution: {integrity: sha512-+ofYlnqdc8c4F6tM0IKF0+7NagZRAiqBJpGDJ+6EYhDW8FHLUP/JFBgu32SjxSxC6IKFZxEnl68ZoP/Z38EMlw==} + engines: {node: '>=18'} + peerDependencies: + vue: ^3.3.4 + peerDependenciesMeta: + vue: + optional: true + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@anthropic-ai/sdk@0.27.3': + resolution: {integrity: sha512-IjLt0gd3L4jlOfilxVXTifn42FnVffMgDC04RJK1KDZpmkBWLv0XC92MVVmkxrFZNS/7l3xWgP/I3nqtX1sQHw==} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.26.3': + resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.3': + resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + engines: {node: '>=6.9.0'} + + '@bonfida/sns-records@0.0.1': + resolution: {integrity: sha512-i28w9+BMFufhhpmLQCNx1CKKXTsEn+5RT18VFpPqdGO3sqaYlnUWC1m3wDpOvlzGk498dljgRpRo5wmcsnuEMg==} + peerDependencies: + '@solana/web3.js': ^1.87.3 + + '@bonfida/spl-name-service@3.0.7': + resolution: {integrity: sha512-okOLXhy+fQoyQ/sZgMleO5RrIZfTkWEoHMxWgUqg6RP/MTBlrKxlhKC6ymKn4UUe0C5s3Nb8A+3Ams7vX0nMDg==} + peerDependencies: + '@solana/web3.js': ^1.87.3 + + '@browserbasehq/sdk@2.0.0': + resolution: {integrity: sha512-BdPlZyn0dpXlL70gNK4acpqWIRB+edo2z0/GalQdWghRq8iQjySd9fVIF3evKH1p2wCYekZJRK6tm29YfXB67g==} + + '@browserbasehq/stagehand@1.8.0': + resolution: {integrity: sha512-ozwE2imQzWhi1pir6+L7bwIWKXQQ+tX7oVRbQkcmHkj+xdDJJDMYxNMBJyt8mnAvXHvsadUowAWSIEfcTrNEqA==} + peerDependencies: + '@playwright/test': ^1.42.1 + deepmerge: ^4.3.1 + dotenv: ^16.4.5 + openai: ^4.62.1 + zod: ^3.23.8 + + '@cfworker/json-schema@4.0.3': + resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} + + '@coral-xyz/anchor@0.29.0': + resolution: {integrity: sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==} + engines: {node: '>=11'} + + '@coral-xyz/borsh@0.29.0': + resolution: {integrity: sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==} + engines: {node: '>=10'} + peerDependencies: + '@solana/web3.js': ^1.68.0 + + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.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} + + '@ethersproject/bytes@5.7.0': + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + + '@ethersproject/logger@5.7.0': + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + + '@ethersproject/sha2@5.7.0': + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@ibm-cloud/watsonx-ai@1.3.0': + resolution: {integrity: sha512-V4PorMPhxwYiayWxycryun4Bjxn3PJrQqJGca+maQd61Q7s+/PUJAHWjwzVSVHxiher17zFHf4NwqB8J6bWj4w==} + engines: {node: '>=18.0.0'} + + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@langchain/community@0.3.20': + resolution: {integrity: sha512-5XmguFWVrfYJ8s9kHPAmC1bTGfdVOKqzWVCoTolSXMVMDaVn+LVvCJxEedO01kU1y2AS4pUl5MDI9wssKS1Ehg==} + engines: {node: '>=18'} + peerDependencies: + '@arcjet/redact': ^v1.0.0-alpha.23 + '@aws-crypto/sha256-js': ^5.0.0 + '@aws-sdk/client-bedrock-agent-runtime': ^3.583.0 + '@aws-sdk/client-bedrock-runtime': ^3.422.0 + '@aws-sdk/client-dynamodb': ^3.310.0 + '@aws-sdk/client-kendra': ^3.352.0 + '@aws-sdk/client-lambda': ^3.310.0 + '@aws-sdk/client-s3': ^3.310.0 + '@aws-sdk/client-sagemaker-runtime': ^3.310.0 + '@aws-sdk/client-sfn': ^3.310.0 + '@aws-sdk/credential-provider-node': ^3.388.0 + '@azure/search-documents': ^12.0.0 + '@azure/storage-blob': ^12.15.0 + '@browserbasehq/sdk': '*' + '@browserbasehq/stagehand': ^1.0.0 + '@clickhouse/client': ^0.2.5 + '@cloudflare/ai': '*' + '@datastax/astra-db-ts': ^1.0.0 + '@elastic/elasticsearch': ^8.4.0 + '@getmetal/metal-sdk': '*' + '@getzep/zep-cloud': ^1.0.6 + '@getzep/zep-js': ^0.9.0 + '@gomomento/sdk': ^1.51.1 + '@gomomento/sdk-core': ^1.51.1 + '@google-ai/generativelanguage': '*' + '@google-cloud/storage': ^6.10.1 || ^7.7.0 + '@gradientai/nodejs-sdk': ^1.2.0 + '@huggingface/inference': ^2.6.4 + '@ibm-cloud/watsonx-ai': '*' + '@lancedb/lancedb': ^0.12.0 + '@langchain/core': '>=0.2.21 <0.4.0' + '@layerup/layerup-security': ^1.5.12 + '@libsql/client': ^0.14.0 + '@mendable/firecrawl-js': ^1.4.3 + '@mlc-ai/web-llm': '*' + '@mozilla/readability': '*' + '@neondatabase/serverless': '*' + '@notionhq/client': ^2.2.10 + '@opensearch-project/opensearch': '*' + '@pinecone-database/pinecone': '*' + '@planetscale/database': ^1.8.0 + '@premai/prem-sdk': ^0.3.25 + '@qdrant/js-client-rest': ^1.8.2 + '@raycast/api': ^1.55.2 + '@rockset/client': ^0.9.1 + '@smithy/eventstream-codec': ^2.0.5 + '@smithy/protocol-http': ^3.0.6 + '@smithy/signature-v4': ^2.0.10 + '@smithy/util-utf8': ^2.0.0 + '@spider-cloud/spider-client': ^0.0.21 + '@supabase/supabase-js': ^2.45.0 + '@tensorflow-models/universal-sentence-encoder': '*' + '@tensorflow/tfjs-converter': '*' + '@tensorflow/tfjs-core': '*' + '@upstash/ratelimit': ^1.1.3 || ^2.0.3 + '@upstash/redis': ^1.20.6 + '@upstash/vector': ^1.1.1 + '@vercel/kv': ^0.2.3 + '@vercel/postgres': ^0.5.0 + '@writerai/writer-sdk': ^0.40.2 + '@xata.io/client': ^0.28.0 + '@xenova/transformers': ^2.17.2 + '@zilliz/milvus2-sdk-node': '>=2.3.5' + apify-client: ^2.7.1 + assemblyai: ^4.6.0 + better-sqlite3: '>=9.4.0 <12.0.0' + cassandra-driver: ^4.7.2 + cborg: ^4.1.1 + cheerio: ^1.0.0-rc.12 + chromadb: '*' + closevector-common: 0.1.3 + closevector-node: 0.1.6 + closevector-web: 0.1.6 + cohere-ai: '*' + convex: ^1.3.1 + crypto-js: ^4.2.0 + d3-dsv: ^2.0.0 + discord.js: ^14.14.1 + dria: ^0.0.3 + duck-duck-scrape: ^2.2.5 + epub2: ^3.0.1 + faiss-node: ^0.5.1 + fast-xml-parser: '*' + firebase-admin: ^11.9.0 || ^12.0.0 + google-auth-library: '*' + googleapis: '*' + hnswlib-node: ^3.0.0 + html-to-text: ^9.0.5 + ibm-cloud-sdk-core: '*' + ignore: ^5.2.0 + interface-datastore: ^8.2.11 + ioredis: ^5.3.2 + it-all: ^3.0.4 + jsdom: '*' + jsonwebtoken: ^9.0.2 + llmonitor: ^0.5.9 + lodash: ^4.17.21 + lunary: ^0.7.10 + mammoth: ^1.6.0 + mongodb: '>=5.2.0' + mysql2: ^3.9.8 + neo4j-driver: '*' + notion-to-md: ^3.1.0 + officeparser: ^4.0.4 + openai: '*' + pdf-parse: 1.1.1 + pg: ^8.11.0 + pg-copy-streams: ^6.0.5 + pickleparser: ^0.2.1 + playwright: ^1.32.1 + portkey-ai: ^0.1.11 + puppeteer: '*' + pyodide: '>=0.24.1 <0.27.0' + redis: '*' + replicate: ^0.29.4 + sonix-speech-recognition: ^2.1.1 + srt-parser-2: ^1.2.3 + typeorm: ^0.3.20 + typesense: ^1.5.3 + usearch: ^1.1.1 + voy-search: 0.6.2 + weaviate-ts-client: '*' + web-auth-library: ^1.0.3 + ws: ^8.14.2 + youtube-transcript: ^1.0.6 + youtubei.js: ^9.1.0 + peerDependenciesMeta: + '@arcjet/redact': + optional: true + '@aws-crypto/sha256-js': + optional: true + '@aws-sdk/client-bedrock-agent-runtime': + optional: true + '@aws-sdk/client-bedrock-runtime': + optional: true + '@aws-sdk/client-dynamodb': + optional: true + '@aws-sdk/client-kendra': + optional: true + '@aws-sdk/client-lambda': + optional: true + '@aws-sdk/client-s3': + optional: true + '@aws-sdk/client-sagemaker-runtime': + optional: true + '@aws-sdk/client-sfn': + optional: true + '@aws-sdk/credential-provider-node': + optional: true + '@azure/search-documents': + optional: true + '@azure/storage-blob': + optional: true + '@browserbasehq/sdk': + optional: true + '@clickhouse/client': + optional: true + '@cloudflare/ai': + optional: true + '@datastax/astra-db-ts': + optional: true + '@elastic/elasticsearch': + optional: true + '@getmetal/metal-sdk': + optional: true + '@getzep/zep-cloud': + optional: true + '@getzep/zep-js': + optional: true + '@gomomento/sdk': + optional: true + '@gomomento/sdk-core': + optional: true + '@google-ai/generativelanguage': + optional: true + '@google-cloud/storage': + optional: true + '@gradientai/nodejs-sdk': + optional: true + '@huggingface/inference': + optional: true + '@lancedb/lancedb': + optional: true + '@layerup/layerup-security': + optional: true + '@libsql/client': + optional: true + '@mendable/firecrawl-js': + optional: true + '@mlc-ai/web-llm': + optional: true + '@mozilla/readability': + optional: true + '@neondatabase/serverless': + optional: true + '@notionhq/client': + optional: true + '@opensearch-project/opensearch': + optional: true + '@pinecone-database/pinecone': + optional: true + '@planetscale/database': + optional: true + '@premai/prem-sdk': + optional: true + '@qdrant/js-client-rest': + optional: true + '@raycast/api': + optional: true + '@rockset/client': + optional: true + '@smithy/eventstream-codec': + optional: true + '@smithy/protocol-http': + optional: true + '@smithy/signature-v4': + optional: true + '@smithy/util-utf8': + optional: true + '@spider-cloud/spider-client': + optional: true + '@supabase/supabase-js': + optional: true + '@tensorflow-models/universal-sentence-encoder': + optional: true + '@tensorflow/tfjs-converter': + optional: true + '@tensorflow/tfjs-core': + optional: true + '@upstash/ratelimit': + optional: true + '@upstash/redis': + optional: true + '@upstash/vector': + optional: true + '@vercel/kv': + optional: true + '@vercel/postgres': + optional: true + '@writerai/writer-sdk': + optional: true + '@xata.io/client': + optional: true + '@xenova/transformers': + optional: true + '@zilliz/milvus2-sdk-node': + optional: true + apify-client: + optional: true + assemblyai: + optional: true + better-sqlite3: + optional: true + cassandra-driver: + optional: true + cborg: + optional: true + cheerio: + optional: true + chromadb: + optional: true + closevector-common: + optional: true + closevector-node: + optional: true + closevector-web: + optional: true + cohere-ai: + optional: true + convex: + optional: true + crypto-js: + optional: true + d3-dsv: + optional: true + discord.js: + optional: true + dria: + optional: true + duck-duck-scrape: + optional: true + epub2: + optional: true + faiss-node: + optional: true + fast-xml-parser: + optional: true + firebase-admin: + optional: true + google-auth-library: + optional: true + googleapis: + optional: true + hnswlib-node: + optional: true + html-to-text: + optional: true + ignore: + optional: true + interface-datastore: + optional: true + ioredis: + optional: true + it-all: + optional: true + jsdom: + optional: true + jsonwebtoken: + optional: true + llmonitor: + optional: true + lodash: + optional: true + lunary: + optional: true + mammoth: + optional: true + mongodb: + optional: true + mysql2: + optional: true + neo4j-driver: + optional: true + notion-to-md: + optional: true + officeparser: + optional: true + pdf-parse: + optional: true + pg: + optional: true + pg-copy-streams: + optional: true + pickleparser: + optional: true + playwright: + optional: true + portkey-ai: + optional: true + puppeteer: + optional: true + pyodide: + optional: true + redis: + optional: true + replicate: + optional: true + sonix-speech-recognition: + optional: true + srt-parser-2: + optional: true + typeorm: + optional: true + typesense: + optional: true + usearch: + optional: true + voy-search: + optional: true + weaviate-ts-client: + optional: true + web-auth-library: + optional: true + ws: + optional: true + youtube-transcript: + optional: true + youtubei.js: + optional: true + + '@langchain/core@0.3.26': + resolution: {integrity: sha512-6RUQHEp8wv+JwtYIIEBYBzbLlcAQZFc7EDOgAM0ukExjh9HiXoJzoWpgMRRCrr/koIbtwXPJUqBprZK1I1CXHQ==} + engines: {node: '>=18'} + + '@langchain/groq@0.1.2': + resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@langchain/langgraph-checkpoint@0.0.13': + resolution: {integrity: sha512-amdmBcNT8a9xP2VwcEWxqArng4gtRDcnVyVI4DsQIo1Aaz8e8+hH17zSwrUF3pt1pIYztngIfYnBOim31mtKMg==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.31 <0.4.0' + + '@langchain/langgraph-sdk@0.0.32': + resolution: {integrity: sha512-KQyM9kLO7T6AxwNrceajH7JOybP3pYpvUPnhiI2rrVndI1WyZUJ1eVC1e722BVRAPi6o+WcoTT4uMSZVinPOtA==} + + '@langchain/langgraph@0.2.36': + resolution: {integrity: sha512-zxk7ZCVxP0/Ut9785EiXCS7BE7sXd8cu943mcZUF2aNFUaQRTBbbiKpNdR3nb1+xO/B+HVktrJT2VFdkAywnng==} + 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==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.26 <0.4.0' + + '@langchain/textsplitters@0.1.0': + resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/core': '>=0.2.21 <0.4.0' + + '@lightprotocol/compressed-token@0.17.1': + resolution: {integrity: sha512-493KCmZGw1BcHVRJaeRm8EEs+L7gX8dwY7JG13w2pfgOMtZXZ7Wxt261jFJxQJzRLTrUSlrbRJOmfW1+S1Y8SQ==} + peerDependencies: + '@lightprotocol/stateless.js': 0.17.1 + + '@lightprotocol/stateless.js@0.17.1': + resolution: {integrity: sha512-EjId1n33A6dBwpce33Wsa/fs/CDKtMtRrkxbApH0alXrnEXmbW6QhIViXOrKYXjZ4uJQM1xsBtsKe0vqJ4nbtQ==} + + '@metaplex-foundation/beet-solana@0.4.1': + resolution: {integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==} + + '@metaplex-foundation/beet@0.7.2': + resolution: {integrity: sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==} + + '@metaplex-foundation/mpl-core@1.1.1': + resolution: {integrity: sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA==} + peerDependencies: + '@metaplex-foundation/umi': '>=0.8.2 < 1' + '@noble/hashes': ^1.3.1 + + '@metaplex-foundation/mpl-token-metadata@3.3.0': + resolution: {integrity: sha512-t5vO8Wr3ZZZPGrVrGNcosX5FMkwQSgBiVMQMRNDG2De7voYFJmIibD5jdG05EoQ4Y5kZVEiwhYaO+wJB3aO5AA==} + peerDependencies: + '@metaplex-foundation/umi': '>= 0.8.2 < 1' + + '@metaplex-foundation/mpl-toolbox@0.9.4': + resolution: {integrity: sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ==} + peerDependencies: + '@metaplex-foundation/umi': '>= 0.8.2 < 1' + + '@metaplex-foundation/umi-bundle-defaults@0.9.2': + resolution: {integrity: sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-downloader-http@0.9.2': + resolution: {integrity: sha512-tzPT9hBwenzTzAQg07rmsrqZfgguAXELbcJrsYMoASp5VqWFXYIP00g94KET6XLjWUXH4P1J2zoa6hGennPXHA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-eddsa-web3js@0.9.2': + resolution: {integrity: sha512-hhPCxXbYIp4BC4z9gK78sXpWLkNSrfv4ndhF5ruAkdIp7GcRVYKj0QnOUO6lGYGiIkNlw20yoTwOe1CT//OfTQ==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-http-fetch@0.9.2': + resolution: {integrity: sha512-YCZuBu24T9ZzEDe4+w12LEZm/fO9pkyViZufGgASC5NX93814Lvf6Ssjn/hZzjfA7CvZbvLFbmujc6CV3Q/m9Q==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-options@0.8.9': + resolution: {integrity: sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A==} + + '@metaplex-foundation/umi-program-repository@0.9.2': + resolution: {integrity: sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-public-keys@0.8.9': + resolution: {integrity: sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q==} + + '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2': + resolution: {integrity: sha512-YRwVf6xH0jPBAUgMhEPi+UbjioAeqTXmjsN2TnmQCPAmHbrHrMRj0rlWYwFLWAgkmoxazYrXP9lqOFRrfOGAEA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-rpc-web3js@0.9.2': + resolution: {integrity: sha512-MqcsBz8B4wGl6jxsf2Jo/rAEpYReU9VCSR15QSjhvADHMmdFxCIZCCAgE+gDE2Vuanfl437VhOcP3g5Uw8C16Q==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-serializer-data-view@0.9.2': + resolution: {integrity: sha512-5vGptadJxUxvUcyrwFZxXlEc6Q7AYySBesizCtrBFUY8w8PnF2vzmS45CP1MLySEATNH6T9mD4Rs0tLb87iQyA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-serializers-core@0.8.9': + resolution: {integrity: sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w==} + + '@metaplex-foundation/umi-serializers-encodings@0.8.9': + resolution: {integrity: sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q==} + + '@metaplex-foundation/umi-serializers-numbers@0.8.9': + resolution: {integrity: sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg==} + + '@metaplex-foundation/umi-serializers@0.9.0': + resolution: {integrity: sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg==} + + '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2': + resolution: {integrity: sha512-fR1Kf21uylMFd1Smkltmj4jTNxhqSWf416owsJ+T+cvJi2VCOcOwq/3UFzOrpz78fA0RhsajKYKj0HYsRnQI1g==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-web3js-adapters@0.9.2': + resolution: {integrity: sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi@0.9.2': + resolution: {integrity: sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw==} + + '@msgpack/msgpack@3.0.0-beta2': + resolution: {integrity: sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==} + engines: {node: '>= 14'} + + '@next/bundle-analyzer@13.5.8': + resolution: {integrity: sha512-B/6xFehMbPnBqw6Wtf0iWuOTTHAmymeKS5xKOlaEG0BrGffGZGQ3KTJycMYG6ujLG9A2uCcuTX2vd0M6F5xM3w==} + + '@next/env@14.2.21': + resolution: {integrity: sha512-lXcwcJd5oR01tggjWJ6SrNNYFGuOOMB9c251wUNkjCpkoXOPkDeF/15c3mnVlBqrW4JJXb2kVxDFhC4GduJt2A==} + + '@next/eslint-plugin-next@13.4.12': + resolution: {integrity: sha512-6rhK9CdxEgj/j1qvXIyLTWEaeFv7zOK8yJMulz3Owel0uek0U9MJCGzmKgYxM3aAUBo3gKeywCZKyQnJKto60A==} + + '@next/swc-darwin-arm64@14.2.21': + resolution: {integrity: sha512-HwEjcKsXtvszXz5q5Z7wCtrHeTTDSTgAbocz45PHMUjU3fBYInfvhR+ZhavDRUYLonm53aHZbB09QtJVJj8T7g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@14.2.21': + resolution: {integrity: sha512-TSAA2ROgNzm4FhKbTbyJOBrsREOMVdDIltZ6aZiKvCi/v0UwFmwigBGeqXDA97TFMpR3LNNpw52CbVelkoQBxA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@14.2.21': + resolution: {integrity: sha512-0Dqjn0pEUz3JG+AImpnMMW/m8hRtl1GQCNbO66V1yp6RswSTiKmnHf3pTX6xMdJYSemf3O4Q9ykiL0jymu0TuA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@14.2.21': + resolution: {integrity: sha512-Ggfw5qnMXldscVntwnjfaQs5GbBbjioV4B4loP+bjqNEb42fzZlAaK+ldL0jm2CTJga9LynBMhekNfV8W4+HBw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@14.2.21': + resolution: {integrity: sha512-uokj0lubN1WoSa5KKdThVPRffGyiWlm/vCc/cMkWOQHw69Qt0X1o3b2PyLLx8ANqlefILZh1EdfLRz9gVpG6tg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@14.2.21': + resolution: {integrity: sha512-iAEBPzWNbciah4+0yI4s7Pce6BIoxTQ0AGCkxn/UBuzJFkYyJt71MadYQkjPqCQCJAFQ26sYh7MOKdU+VQFgPg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@14.2.21': + resolution: {integrity: sha512-plykgB3vL2hB4Z32W3ktsfqyuyGAPxqwiyrAi2Mr8LlEUhNn9VgkiAl5hODSBpzIfWweX3er1f5uNpGDygfQVQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-ia32-msvc@14.2.21': + resolution: {integrity: sha512-w5bacz4Vxqrh06BjWgua3Yf7EMDb8iMcVhNrNx8KnJXt8t+Uu0Zg4JHLDL/T7DkTCEEfKXO/Er1fcfWxn2xfPA==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@next/swc-win32-x64-msvc@14.2.21': + resolution: {integrity: sha512-sT6+llIkzpsexGYZq8cjjthRyRGe5cJVhqh12FmlbxHqna6zsDDK8UNaV7g41T6atFHCJUPeLb3uyAwrBwy0NA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@noble/curves@1.7.0': + resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.6.0': + resolution: {integrity: sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.6.1': + resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + + '@onsol/tldparser@0.6.7': + resolution: {integrity: sha512-QwkRDLyC514pxeplCCXZ2kTiRcJSeUrpp+9o2XqLbePy/qzZGGG8I0UbXUKuWVD/bUL1zAm21+D+Eu30OKwcQg==} + engines: {node: '>=14'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + bn.js: ^5.2.1 + borsh: ^0.7.0 + buffer: 6.0.1 + + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + + '@orca-so/common-sdk@0.6.4': + resolution: {integrity: sha512-iOiC6exTA9t2CEOaUPoWlNP3soN/1yZFjoz1mSf7NvOqo/PJZeIdWpB7BRXwU0mGGatjxU4SFgMGQ8NrSx+ONw==} + peerDependencies: + '@solana/spl-token': ^0.4.1 + '@solana/web3.js': ^1.90.0 + decimal.js: ^10.4.3 + + '@orca-so/whirlpools-sdk@0.13.12': + resolution: {integrity: sha512-+LOqGTe0DYUsYwemltOU4WQIviqoICQlIcAmmEX/WnBh6wntpcLDcXkPV6dBHW7NA2/J8WEVAZ50biLJb4subg==} + peerDependencies: + '@coral-xyz/anchor': ~0.29.0 + '@orca-so/common-sdk': 0.6.4 + '@solana/spl-token': ^0.4.8 + '@solana/web3.js': ^1.90.0 + decimal.js: ^10.4.3 + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@playwright/test@1.49.1': + resolution: {integrity: sha512-Ky+BVzPz8pL6PQxHqNRW1k3mIyv933LML7HktS8uik0bUXNCdPhoS/kLihiO1tMf/egaJb4IutXd7UywvXEW+g==} + engines: {node: '>=18'} + hasBin: true + + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + + '@pythnetwork/price-service-client@1.9.0': + resolution: {integrity: sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==} + deprecated: This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead. + + '@pythnetwork/price-service-sdk@1.8.0': + resolution: {integrity: sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA==} + + '@raydium-io/raydium-sdk-v2@0.1.95-alpha': + resolution: {integrity: sha512-+u7yxo/R1JDysTCzOuAlh90ioBe2DlM2Hbcz/tFsxP/YzmnYQzShvNjcmc0361a4zJhmlrEJfpFXW0J3kkX5vA==} + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@rushstack/eslint-patch@1.10.4': + resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} + + '@scure/base@1.2.1': + resolution: {integrity: sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==} + + '@shikijs/core@1.24.4': + resolution: {integrity: sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==} + + '@shikijs/engine-javascript@1.24.4': + resolution: {integrity: sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==} + + '@shikijs/engine-oniguruma@1.24.4': + resolution: {integrity: sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==} + + '@shikijs/types@1.24.4': + resolution: {integrity: sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==} + + '@shikijs/vscode-textmate@9.3.1': + resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} + + '@solana/buffer-layout-utils@0.2.0': + resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==} + engines: {node: '>= 10'} + + '@solana/buffer-layout@4.0.1': + resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} + engines: {node: '>=5.10'} + + '@solana/codecs-core@2.0.0-preview.2': + resolution: {integrity: sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg==} + + '@solana/codecs-core@2.0.0-preview.4': + resolution: {integrity: sha512-A0VVuDDA5kNKZUinOqHxJQK32aKTucaVbvn31YenGzHX1gPqq+SOnFwgaEY6pq4XEopSmaK16w938ZQS8IvCnw==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-core@2.0.0-rc.1': + resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-data-structures@2.0.0-preview.2': + resolution: {integrity: sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg==} + + '@solana/codecs-data-structures@2.0.0-preview.4': + resolution: {integrity: sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-data-structures@2.0.0-rc.1': + resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-numbers@2.0.0-preview.2': + resolution: {integrity: sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw==} + + '@solana/codecs-numbers@2.0.0-preview.4': + resolution: {integrity: sha512-Q061rLtMadsO7uxpguT+Z7G4UHnjQ6moVIxAQxR58nLxDPCC7MB1Pk106/Z7NDhDLHTcd18uO6DZ7ajHZEn2XQ==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-numbers@2.0.0-rc.1': + resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-strings@2.0.0-preview.2': + resolution: {integrity: sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g==} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + + '@solana/codecs-strings@2.0.0-preview.4': + resolution: {integrity: sha512-YDbsQePRWm+xnrfS64losSGRg8Wb76cjK1K6qfR8LPmdwIC3787x9uW5/E4icl/k+9nwgbIRXZ65lpF+ucZUnw==} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5' + + '@solana/codecs-strings@2.0.0-rc.1': + resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5' + + '@solana/codecs@2.0.0-preview.2': + resolution: {integrity: sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA==} + + '@solana/codecs@2.0.0-preview.4': + resolution: {integrity: sha512-gLMupqI4i+G4uPi2SGF/Tc1aXcviZF2ybC81x7Q/fARamNSgNOCUUoSCg9nWu1Gid6+UhA7LH80sWI8XjKaRog==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs@2.0.0-rc.1': + resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==} + peerDependencies: + typescript: '>=5' + + '@solana/errors@2.0.0-preview.2': + resolution: {integrity: sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA==} + hasBin: true + + '@solana/errors@2.0.0-preview.4': + resolution: {integrity: sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA==} + hasBin: true + peerDependencies: + typescript: '>=5' + + '@solana/errors@2.0.0-rc.1': + resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==} + hasBin: true + peerDependencies: + typescript: '>=5' + + '@solana/options@2.0.0-preview.2': + resolution: {integrity: sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w==} + + '@solana/options@2.0.0-preview.4': + resolution: {integrity: sha512-tv2O/Frxql/wSe3jbzi5nVicIWIus/BftH+5ZR+r9r3FO0/htEllZS5Q9XdbmSboHu+St87584JXeDx3xm4jaA==} + peerDependencies: + typescript: '>=5' + + '@solana/options@2.0.0-rc.1': + resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==} + peerDependencies: + typescript: '>=5' + + '@solana/spl-token-group@0.0.4': + resolution: {integrity: sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.91.6 + + '@solana/spl-token-group@0.0.5': + resolution: {integrity: sha512-CLJnWEcdoUBpQJfx9WEbX3h6nTdNiUzswfFdkABUik7HVwSNA98u5AYvBVK2H93d9PGMOHAak2lHW9xr+zAJGQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.94.0 + + '@solana/spl-token-group@0.0.7': + resolution: {integrity: sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + + '@solana/spl-token-metadata@0.1.6': + resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + + '@solana/spl-token@0.4.6': + resolution: {integrity: sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.91.6 + + '@solana/spl-token@0.4.8': + resolution: {integrity: sha512-RO0JD9vPRi4LsAbMUdNbDJ5/cv2z11MGhtAvFeRzT4+hAGE/FUzRi0tkkWtuCfSIU3twC6CtmAihRp/+XXjWsA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.94.0 + + '@solana/spl-token@0.4.9': + resolution: {integrity: sha512-g3wbj4F4gq82YQlwqhPB0gHFXfgsC6UmyGMxtSLf/BozT/oKd59465DbnlUK8L8EcimKMavxsVAMoLcEdeCicg==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + + '@solana/spl-type-length-value@0.1.0': + resolution: {integrity: sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA==} + engines: {node: '>=16'} + + '@solana/web3.js@1.95.3': + resolution: {integrity: sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==} + + '@solana/web3.js@1.98.0': + resolution: {integrity: sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA==} + + '@supabase/auth-js@2.67.3': + resolution: {integrity: sha512-NJDaW8yXs49xMvWVOkSIr8j46jf+tYHV0wHhrwOaLLMZSFO4g6kKAf+MfzQ2RaD06OCUkUHIzctLAxjTgEVpzw==} + + '@supabase/functions-js@2.4.4': + resolution: {integrity: sha512-WL2p6r4AXNGwop7iwvul2BvOtuJ1YQy8EbOd0dhG1oN1q8el/BIRSFCFnWAMM/vJJlHWLi4ad22sKbKr9mvjoA==} + + '@supabase/node-fetch@2.6.15': + resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} + engines: {node: 4.x || >=6.0.0} + + '@supabase/postgrest-js@1.17.7': + resolution: {integrity: sha512-aOzOYaTADm/dVTNksyqv9KsbhVa1gHz1Hoxb2ZEF2Ed9H7qlWOfptECQWmkEmrrFjtNaiPrgiSaPECvzI/seDA==} + + '@supabase/realtime-js@2.11.2': + resolution: {integrity: sha512-u/XeuL2Y0QEhXSoIPZZwR6wMXgB+RQbJzG9VErA3VghVt7uRfSVsjeqd7m5GhX3JR6dM/WRmLbVR8URpDWG4+w==} + + '@supabase/storage-js@2.7.1': + resolution: {integrity: sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==} + + '@supabase/supabase-js@2.47.10': + resolution: {integrity: sha512-vJfPF820Ho5WILYHfKiBykDQ1SB9odTHrRZ0JxHfuLMC8GRvv21YLkUZQK7/rSVCkLvD6/ZwMWaOAfdUd//guw==} + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@swc/helpers@0.5.5': + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + + '@tokenizer/token@0.3.0': + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@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/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/node-fetch@2.6.12': + resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + + '@types/node@10.14.22': + resolution: {integrity: sha512-9taxKC944BqoTVjE+UT3pQH0nHZlTvITwfsOZqyc+R3sfJuxaTtxWjfn1K2UlxyPcKHf0rnaXcVFrS9F9vf0bw==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@18.19.68': + resolution: {integrity: sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==} + + '@types/node@20.12.12': + resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} + + '@types/phoenix@1.6.6': + resolution: {integrity: sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==} + + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/react-dom@18.3.0': + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + + '@types/react@18.3.2': + resolution: {integrity: sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==} + + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + + '@types/uuid@8.3.4': + resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} + + '@types/ws@7.4.7': + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + + '@types/ws@8.5.13': + resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} + + '@typescript-eslint/parser@5.62.0': + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@ungap/structured-clone@1.2.1': + resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} + + '@vue/compiler-core@3.5.13': + resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} + + '@vue/compiler-dom@3.5.13': + resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + + '@vue/compiler-sfc@3.5.13': + resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} + + '@vue/compiler-ssr@3.5.13': + resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} + + '@vue/reactivity@3.5.13': + resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} + + '@vue/runtime-core@3.5.13': + resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} + + '@vue/runtime-dom@3.5.13': + resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} + + '@vue/server-renderer@3.5.13': + resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} + peerDependencies: + vue: 3.5.13 + + '@vue/shared@3.5.13': + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-typescript@1.4.13: + resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} + peerDependencies: + acorn: '>=8.9.0' + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + + ai@3.4.33: + resolution: {integrity: sha512-plBlrVZKwPoRTmM8+D1sJac9Bq8eaa2jiZlHLZIWekKWI1yMWYZvCCEezY9ASPwRhULYDJB2VhKOBUUeg3S5JQ==} + engines: {node: '>=18'} + peerDependencies: + openai: ^4.42.0 + react: ^18 || ^19 || ^19.0.0-rc + sswr: ^2.1.0 + svelte: ^3.0.0 || ^4.0.0 || ^5.0.0 + zod: ^3.0.0 + peerDependenciesMeta: + openai: + optional: true + react: + optional: true + sswr: + optional: true + svelte: + optional: true + zod: + optional: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + ansicolors@0.3.2: + resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.14: + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.10.2: + resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==} + engines: {node: '>=4'} + + axios-retry@3.9.1: + resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} + + axios@1.7.4: + resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@3.0.10: + resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} + + base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + + base-x@5.0.0: + resolution: {integrity: sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + big.js@6.2.2: + resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} + + bigint-buffer@1.1.5: + resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} + engines: {node: '>= 10.0.0'} + + bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + borsh@0.7.0: + resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} + + borsh@1.0.0: + resolution: {integrity: sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==} + + borsh@2.0.0: + resolution: {integrity: sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.3: + resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + + bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + + bs58@6.0.0: + resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-layout@1.2.2: + resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} + engines: {node: '>=4.5'} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + engines: {node: '>=6.14.2'} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + call-bind-apply-helpers@1.0.1: + resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001690: + resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} + engines: {node: '>=12'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + cross-fetch@3.2.0: + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypto-hash@1.3.0: + resolution: {integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==} + engines: {node: '>=8'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + + decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delay@5.0.0: + resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} + engines: {node: '>=10'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff-match-patch@1.0.5: + resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + electron-to-chromium@1.5.76: + resolution: {integrity: sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==} + + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + enhanced-resolve@5.18.0: + resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} + engines: {node: '>=10.13.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + es-abstract@1.23.7: + resolution: {integrity: sha512-OygGC8kIcDhXX+6yAZRGLqwi2CmEXCbLQixeGUgYeR+Qwlppqmo7DIDr8XibtEBZp+fJcoYpoatp5qwLMEdcqQ==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + + es6-promisify@5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-next@13.4.12: + resolution: {integrity: sha512-ZF0r5vxKaVazyZH/37Au/XItiG7qUOBw+HaH3PeyXltIMwXorsn6bdrl0Nn9N5v5v9spc+6GM2ryjugbjF6X2g==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.7.0: + resolution: {integrity: sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.12.0: + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.31.0: + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.10.2: + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + + eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705: + resolution: {integrity: sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react@7.37.3: + resolution: {integrity: sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.46.0: + resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + esm-env@1.2.1: + resolution: {integrity: sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrap@1.3.2: + resolution: {integrity: sha512-C4PXusxYhFT98GjLSmb20k9PREuUdporer50dhzGuJu9IJXktbMddVCMLAERl5dAHyAi73GWWCE4FVHGP1794g==} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + eventsource-parser@1.1.2: + resolution: {integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==} + engines: {node: '>=14.18'} + + expr-eval@2.0.2: + resolution: {integrity: sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg==} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + eyes@0.1.8: + resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} + engines: {node: '> 0.1.90'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-stable-stringify@1.0.0: + resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} + + fastestsmallesttextencoderdecoder@1.0.22: + resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} + + fastq@1.18.0: + resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-type@16.5.4: + resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} + engines: {node: '>=10'} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data-encoder@1.7.2: + resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + formdata-node@4.4.1: + resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} + engines: {node: '>= 12.20'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + get-intrinsic@1.2.6: + resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + graphemesplit@2.4.4: + resolution: {integrity: sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w==} + + groq-sdk@0.5.0: + resolution: {integrity: sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw==} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-to-html@9.0.4: + resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + ibm-cloud-sdk-core@5.1.0: + resolution: {integrity: sha512-KJCbPz3tiXB1NGAD7cL4JtwpWV8yd/C7jsaHsxvedMo2ZblNG8emMyvSpGhiKAQVZmi3c0ujz6eJdy22NHuUWQ==} + engines: {node: '>=18'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.2.1: + resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} + engines: {node: '>= 0.4'} + + is-bun-module@1.3.0: + resolution: {integrity: sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-reference@3.0.3: + resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-retry-allowed@2.2.0: + resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} + engines: {node: '>=10'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.0: + resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + iterator.prototype@1.1.4: + resolution: {integrity: sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==} + engines: {node: '>= 0.4'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jayson@4.1.3: + resolution: {integrity: sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==} + engines: {node: '>=8'} + hasBin: true + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + js-base64@3.7.7: + resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + + js-tiktoken@1.0.16: + resolution: {integrity: sha512-nUVdO5k/M9llWpiaZlBBDdtmr6qWXwSD6fgaDu2zM8UP+OXxx9V37lFkI6w0/1IuaDx7WffZ37oYd9KvcWKElg==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsondiffpatch@0.6.0: + resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + jwa@1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + + jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + langchain@0.3.8: + resolution: {integrity: sha512-EiAHFgBdThuXFmIx9j81wjdPItpRsw0Ck4r5dyhB74gyhehRGna/UK2CTqeKVnIUM/f4g4JbxUgAU4voXljDMw==} + engines: {node: '>=18'} + peerDependencies: + '@langchain/anthropic': '*' + '@langchain/aws': '*' + '@langchain/cohere': '*' + '@langchain/core': '>=0.2.21 <0.4.0' + '@langchain/google-genai': '*' + '@langchain/google-vertexai': '*' + '@langchain/groq': '*' + '@langchain/mistralai': '*' + '@langchain/ollama': '*' + axios: '*' + cheerio: '*' + handlebars: ^4.7.8 + peggy: ^3.0.2 + typeorm: '*' + peerDependenciesMeta: + '@langchain/anthropic': + optional: true + '@langchain/aws': + optional: true + '@langchain/cohere': + optional: true + '@langchain/google-genai': + optional: true + '@langchain/google-vertexai': + optional: true + '@langchain/groq': + optional: true + '@langchain/mistralai': + optional: true + '@langchain/ollama': + optional: true + axios: + optional: true + cheerio: + optional: true + handlebars: + optional: true + peggy: + optional: true + typeorm: + optional: true + + langsmith@0.2.14: + resolution: {integrity: sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==} + peerDependencies: + openai: '*' + peerDependenciesMeta: + openai: + optional: true + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.1: + resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + next@14.2.21: + resolution: {integrity: sha512-rZmLwucLHr3/zfDMYbJXbw0ZeoBpirxkXuvsJbk7UPorvPYZhP7vq7aHbKnU7dQNCYIimRrbB2pp3xmf+wsYUg==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-gyp-build@4.8.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} + hasBin: true + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + engines: {node: '>= 0.4'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + oniguruma-to-es@0.8.1: + resolution: {integrity: sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==} + + openai@4.77.0: + resolution: {integrity: sha512-WWacavtns/7pCUkOWvQIjyOfcdr9X+9n9Vvb0zFeKVDAqwCMDHB+iSr24SVaBAhplvSG6JrRXFpcNM9gWhOGIw==} + hasBin: true + peerDependencies: + zod: ^3.23.8 + peerDependenciesMeta: + zod: + optional: true + + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + + opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + + p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + + pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + + peek-readable@4.1.0: + resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} + engines: {node: '>=8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + playwright-core@1.49.1: + resolution: {integrity: sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.49.1: + resolution: {integrity: sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA==} + engines: {node: '>=18'} + hasBin: true + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.27: + resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.0.0: + resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + engines: {node: '>=14'} + hasBin: true + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-toastify@9.1.3: + resolution: {integrity: sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg==} + peerDependencies: + react: '>=16' + react-dom: '>=16' + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readable-web-to-node-stream@3.0.2: + resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} + engines: {node: '>=8'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + reflect.getprototypeof@1.0.9: + resolution: {integrity: sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==} + engines: {node: '>= 0.4'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regex-recursion@5.0.0: + resolution: {integrity: sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@5.0.2: + resolution: {integrity: sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==} + + regexp.prototype.flags@1.5.3: + resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + engines: {node: '>= 0.4'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + retry-axios@2.6.0: + resolution: {integrity: sha512-pOLi+Gdll3JekwuFjXO3fTq+L9lzMQGcSq7M5gIjExcl3Gu1hd4XXuf5o3+LuSBsaULQH7DiNbsqPd1chVpQGQ==} + engines: {node: '>=10.7.0'} + peerDependencies: + axios: '*' + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rpc-websockets@9.0.4: + resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@1.24.4: + resolution: {integrity: sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + sirv@1.0.19: + resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} + engines: {node: '>= 10'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + + solana-agent-kit@1.3.0: + resolution: {integrity: sha512-QEg37BgkjyL+8XoPoHizvCfUchxCXZYorm3IC2wGXsWnIi4XJkdNaMSwisuUFS0WzIHrvK3ublhYGxfRNvTGpg==} + engines: {node: '>=23.1.0', pnpm: '>=8.0.0'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + sswr@2.1.0: + resolution: {integrity: sha512-Cqc355SYlTAaUt8iDPaC/4DPPXK925PePLMxyBKuWd5kKc5mwsG3nT9+Mq2tyguL5s7b4Jg+IRMpTRsNTAfpSQ==} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + + stable-hash@0.0.4: + resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strtok3@6.3.0: + resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} + engines: {node: '>=10'} + + styled-jsx@5.1.1: + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + superstruct@0.15.5: + resolution: {integrity: sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==} + + superstruct@2.0.2: + resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} + engines: {node: '>=14.0.0'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svelte@5.16.0: + resolution: {integrity: sha512-Ygqsiac6UogVED2ruKclU+pOeMThxWtp9LG+li7BXeDKC2paVIsRTMkNmcON4Zejerd1s5sZHWx6ZtU85xklVg==} + engines: {node: '>=18'} + + swr@2.3.0: + resolution: {integrity: sha512-NyZ76wA4yElZWBHzSgEJc28a0u6QZvhb6w0azeL2k7+Q1gAzVK+IqQYXhVOC/mzi+HZIozrZvBVeSeOZNR2bqA==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + swrev@4.0.0: + resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==} + + swrv@1.0.4: + resolution: {integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==} + peerDependencies: + vue: '>=3.2.26 < 4' + + tailwindcss@3.3.3: + resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} + engines: {node: '>=14.0.0'} + hasBin: true + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + text-encoding-utf-8@1.0.2: + resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + throttleit@2.1.0: + resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} + engines: {node: '>=18'} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toformat@2.0.0: + resolution: {integrity: sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==} + + token-types@4.2.1: + resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} + engines: {node: '>=10'} + + toml@3.0.0: + resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + + totalist@1.1.0: + resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} + engines: {node: '>=6'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-log@2.2.7: + resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typedoc@0.26.11: + resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} + engines: {node: '>= 18'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x + + typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + unicode-trie@2.0.0: + resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + use-sync-external-store@1.4.0: + resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vue@3.5.13: + resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + web-streams-polyfill@4.0.0-beta.3: + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webpack-bundle-analyzer@4.7.0: + resolution: {integrity: sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==} + engines: {node: '>= 10.13.0'} + hasBin: true + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + yaml@2.6.1: + resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} + engines: {node: '>= 14'} + hasBin: true + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zimmerframe@1.1.2: + resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} + + zod-to-json-schema@3.24.1: + resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} + peerDependencies: + zod: ^3.24.1 + + zod@3.24.1: + resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@ai-sdk/provider-utils@1.0.22(zod@3.24.1)': + dependencies: + '@ai-sdk/provider': 0.0.26 + eventsource-parser: 1.1.2 + nanoid: 3.3.8 + secure-json-parse: 2.7.0 + optionalDependencies: + zod: 3.24.1 + + '@ai-sdk/provider@0.0.26': + dependencies: + json-schema: 0.4.0 + + '@ai-sdk/react@0.0.70(react@18.3.1)(zod@3.24.1)': + dependencies: + '@ai-sdk/provider-utils': 1.0.22(zod@3.24.1) + '@ai-sdk/ui-utils': 0.0.50(zod@3.24.1) + swr: 2.3.0(react@18.3.1) + throttleit: 2.1.0 + optionalDependencies: + react: 18.3.1 + zod: 3.24.1 + + '@ai-sdk/solid@0.0.54(zod@3.24.1)': + dependencies: + '@ai-sdk/provider-utils': 1.0.22(zod@3.24.1) + '@ai-sdk/ui-utils': 0.0.50(zod@3.24.1) + transitivePeerDependencies: + - zod + + '@ai-sdk/svelte@0.0.57(svelte@5.16.0)(zod@3.24.1)': + dependencies: + '@ai-sdk/provider-utils': 1.0.22(zod@3.24.1) + '@ai-sdk/ui-utils': 0.0.50(zod@3.24.1) + sswr: 2.1.0(svelte@5.16.0) + optionalDependencies: + svelte: 5.16.0 + transitivePeerDependencies: + - zod + + '@ai-sdk/ui-utils@0.0.50(zod@3.24.1)': + dependencies: + '@ai-sdk/provider': 0.0.26 + '@ai-sdk/provider-utils': 1.0.22(zod@3.24.1) + json-schema: 0.4.0 + secure-json-parse: 2.7.0 + zod-to-json-schema: 3.24.1(zod@3.24.1) + optionalDependencies: + zod: 3.24.1 + + '@ai-sdk/vue@0.0.59(vue@3.5.13(typescript@5.1.6))(zod@3.24.1)': + dependencies: + '@ai-sdk/provider-utils': 1.0.22(zod@3.24.1) + '@ai-sdk/ui-utils': 0.0.50(zod@3.24.1) + swrv: 1.0.4(vue@3.5.13(typescript@5.1.6)) + optionalDependencies: + vue: 3.5.13(typescript@5.1.6) + transitivePeerDependencies: + - zod + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@anthropic-ai/sdk@0.27.3': + dependencies: + '@types/node': 18.19.68 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/parser@7.26.3': + dependencies: + '@babel/types': 7.26.3 + + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/types@7.26.3': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@bonfida/sns-records@0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10)': + dependencies: + '@bonfida/sns-records': 0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@noble/curves': 1.7.0 + '@scure/base': 1.2.1 + '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + borsh: 2.0.0 + buffer: 6.0.3 + graphemesplit: 2.4.4 + ipaddr.js: 2.2.0 + punycode: 2.3.1 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@browserbasehq/sdk@2.0.0': + dependencies: + '@types/node': 18.19.68 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + '@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1)': + dependencies: + '@anthropic-ai/sdk': 0.27.3 + '@browserbasehq/sdk': 2.0.0 + '@playwright/test': 1.49.1 + deepmerge: 4.3.1 + dotenv: 16.4.7 + openai: 4.77.0(zod@3.24.1) + sharp: 0.33.5 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@cfworker/json-schema@4.0.3': {} + + '@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@noble/hashes': 1.6.1 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(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 + crypto-hash: 1.3.0 + eventemitter3: 4.0.7 + pako: 2.1.0 + snake-case: 3.0.4 + superstruct: 0.15.5 + toml: 3.0.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@coral-xyz/borsh@0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + buffer-layout: 1.2.2 + + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@eslint-community/eslint-utils@4.4.1(eslint@8.46.0)': + dependencies: + eslint: 8.46.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@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/js@8.57.1': {} + + '@ethersproject/bytes@5.7.0': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/logger@5.7.0': {} + + '@ethersproject/sha2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + + '@humanwhocodes/config-array@0.11.14': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@ibm-cloud/watsonx-ai@1.3.0': + dependencies: + '@types/node': 18.19.68 + extend: 3.0.2 + ibm-cloud-sdk-core: 5.1.0 + transitivePeerDependencies: + - supports-color + + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.3.1 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@langchain/community@0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(@supabase/supabase-js@2.47.10(bufferutil@4.0.8)(utf-8-validate@5.0.10))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(ignore@5.3.2)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@browserbasehq/stagehand': 1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1) + '@ibm-cloud/watsonx-ai': 1.3.0 + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + binary-extensions: 2.3.0 + expr-eval: 2.0.2 + flat: 5.0.2 + ibm-cloud-sdk-core: 5.1.0 + js-yaml: 4.1.0 + langchain: 0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(openai@4.77.0(zod@3.24.1)) + langsmith: 0.2.14(openai@4.77.0(zod@3.24.1)) + openai: 4.77.0(zod@3.24.1) + uuid: 10.0.0 + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + optionalDependencies: + '@browserbasehq/sdk': 2.0.0 + '@supabase/supabase-js': 2.47.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ignore: 5.3.2 + jsonwebtoken: 9.0.2 + lodash: 4.17.21 + playwright: 1.49.1 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - '@langchain/anthropic' + - '@langchain/aws' + - '@langchain/cohere' + - '@langchain/google-genai' + - '@langchain/google-vertexai' + - '@langchain/groq' + - '@langchain/mistralai' + - '@langchain/ollama' + - axios + - encoding + - handlebars + - peggy + + '@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))': + dependencies: + '@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.0(zod@3.24.1)) + mustache: 4.2.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 10.0.0 + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + transitivePeerDependencies: + - openai + + '@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(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 + + '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + uuid: 10.0.0 + + '@langchain/langgraph-sdk@0.0.32': + 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.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@langchain/langgraph-sdk': 0.0.32 + uuid: 10.0.0 + zod: 3.24.1 + + '@langchain/openai@0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + js-tiktoken: 1.0.16 + openai: 4.77.0(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.26(openai@4.77.0(zod@3.24.1)))': + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + js-tiktoken: 1.0.16 + + '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@noble/hashes': 1.5.0 + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + superstruct: 2.0.2 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@metaplex-foundation/beet': 0.7.2 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bs58: 5.0.0 + debug: 4.4.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@metaplex-foundation/beet@0.7.2': + dependencies: + ansicolors: 0.3.2 + assert: 2.1.0 + bn.js: 5.2.1 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + '@metaplex-foundation/mpl-core@1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@msgpack/msgpack': 3.0.0-beta2 + '@noble/hashes': 1.6.1 + + '@metaplex-foundation/mpl-token-metadata@3.3.0(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/mpl-toolbox@0.9.4(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-bundle-defaults@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-downloader-http': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-eddsa-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-http-fetch': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-program-repository': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-rpc-chunk-get-accounts': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-rpc-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-serializer-data-view': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-transaction-factory-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - encoding + + '@metaplex-foundation/umi-downloader-http@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-eddsa-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@noble/curves': 1.7.0 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + '@metaplex-foundation/umi-http-fetch@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + '@metaplex-foundation/umi-options@0.8.9': {} + + '@metaplex-foundation/umi-program-repository@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-public-keys@0.8.9': + dependencies: + '@metaplex-foundation/umi-serializers-encodings': 0.8.9 + + '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-rpc-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + '@metaplex-foundation/umi-serializer-data-view@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-serializers-core@0.8.9': {} + + '@metaplex-foundation/umi-serializers-encodings@0.8.9': + dependencies: + '@metaplex-foundation/umi-serializers-core': 0.8.9 + + '@metaplex-foundation/umi-serializers-numbers@0.8.9': + dependencies: + '@metaplex-foundation/umi-serializers-core': 0.8.9 + + '@metaplex-foundation/umi-serializers@0.9.0': + dependencies: + '@metaplex-foundation/umi-options': 0.8.9 + '@metaplex-foundation/umi-public-keys': 0.8.9 + '@metaplex-foundation/umi-serializers-core': 0.8.9 + '@metaplex-foundation/umi-serializers-encodings': 0.8.9 + '@metaplex-foundation/umi-serializers-numbers': 0.8.9 + + '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + '@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + + '@metaplex-foundation/umi@0.9.2': + dependencies: + '@metaplex-foundation/umi-options': 0.8.9 + '@metaplex-foundation/umi-public-keys': 0.8.9 + '@metaplex-foundation/umi-serializers': 0.9.0 + + '@msgpack/msgpack@3.0.0-beta2': {} + + '@next/bundle-analyzer@13.5.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + webpack-bundle-analyzer: 4.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@next/env@14.2.21': {} + + '@next/eslint-plugin-next@13.4.12': + dependencies: + glob: 7.1.7 + + '@next/swc-darwin-arm64@14.2.21': + optional: true + + '@next/swc-darwin-x64@14.2.21': + optional: true + + '@next/swc-linux-arm64-gnu@14.2.21': + optional: true + + '@next/swc-linux-arm64-musl@14.2.21': + optional: true + + '@next/swc-linux-x64-gnu@14.2.21': + optional: true + + '@next/swc-linux-x64-musl@14.2.21': + optional: true + + '@next/swc-win32-arm64-msvc@14.2.21': + optional: true + + '@next/swc-win32-ia32-msvc@14.2.21': + optional: true + + '@next/swc-win32-x64-msvc@14.2.21': + optional: true + + '@noble/curves@1.7.0': + dependencies: + '@noble/hashes': 1.6.0 + + '@noble/hashes@1.5.0': {} + + '@noble/hashes@1.6.0': {} + + '@noble/hashes@1.6.1': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.18.0 + + '@nolyfill/is-core-module@1.0.39': {} + + '@onsol/tldparser@0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/sha2': 5.7.0 + '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + borsh: 2.0.0 + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@opentelemetry/api@1.9.0': {} + + '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + decimal.js: 10.4.3 + tiny-invariant: 1.3.3 + + '@orca-so/whirlpools-sdk@0.13.12(@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': + dependencies: + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + decimal.js: 10.4.3 + tiny-invariant: 1.3.3 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@playwright/test@1.49.1': + dependencies: + playwright: 1.49.1 + + '@polka/url@1.0.0-next.28': {} + + '@pythnetwork/price-service-client@1.9.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@pythnetwork/price-service-sdk': 1.8.0 + '@types/ws': 8.5.13 + axios: 1.7.4(debug@4.4.0) + axios-retry: 3.9.1 + isomorphic-ws: 4.0.1(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + ts-log: 2.2.7 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + '@pythnetwork/price-service-sdk@1.8.0': + dependencies: + bn.js: 5.2.1 + + '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + axios: 1.7.4(debug@4.4.0) + big.js: 6.2.2 + bn.js: 5.2.1 + dayjs: 1.11.13 + decimal.js-light: 2.5.1 + jsonfile: 6.1.0 + lodash: 4.17.21 + toformat: 2.0.0 + tsconfig-paths: 4.2.0 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@rtsao/scc@1.1.0': {} + + '@rushstack/eslint-patch@1.10.4': {} + + '@scure/base@1.2.1': {} + + '@shikijs/core@1.24.4': + dependencies: + '@shikijs/engine-javascript': 1.24.4 + '@shikijs/engine-oniguruma': 1.24.4 + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.4 + + '@shikijs/engine-javascript@1.24.4': + dependencies: + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + oniguruma-to-es: 0.8.1 + + '@shikijs/engine-oniguruma@1.24.4': + dependencies: + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + + '@shikijs/types@1.24.4': + dependencies: + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@9.3.1': {} + + '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bigint-buffer: 1.1.5 + bignumber.js: 9.1.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@solana/buffer-layout@4.0.1': + dependencies: + buffer: 6.0.3 + + '@solana/codecs-core@2.0.0-preview.2': + dependencies: + '@solana/errors': 2.0.0-preview.2 + + '@solana/codecs-core@2.0.0-preview.4(typescript@5.1.6)': + dependencies: + '@solana/errors': 2.0.0-preview.4(typescript@5.1.6) + typescript: 5.1.6 + + '@solana/codecs-core@2.0.0-rc.1(typescript@5.1.6)': + dependencies: + '@solana/errors': 2.0.0-rc.1(typescript@5.1.6) + typescript: 5.1.6 + + '@solana/codecs-data-structures@2.0.0-preview.2': + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@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.1.6)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.1.6) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.1.6) + '@solana/errors': 2.0.0-preview.4(typescript@5.1.6) + typescript: 5.1.6 + + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.1.6)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.1.6) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.1.6) + '@solana/errors': 2.0.0-rc.1(typescript@5.1.6) + typescript: 5.1.6 + + '@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.1.6)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.1.6) + '@solana/errors': 2.0.0-preview.4(typescript@5.1.6) + typescript: 5.1.6 + + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.1.6)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.1.6) + '@solana/errors': 2.0.0-rc.1(typescript@5.1.6) + typescript: 5.1.6 + + '@solana/codecs-strings@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/codecs-numbers': 2.0.0-preview.2 + '@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.1.6)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.1.6) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.1.6) + '@solana/errors': 2.0.0-preview.4(typescript@5.1.6) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 5.1.6 + + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.1.6) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.1.6) + '@solana/errors': 2.0.0-rc.1(typescript@5.1.6) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 5.1.6 + + '@solana/codecs@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/codecs-data-structures': 2.0.0-preview.2 + '@solana/codecs-numbers': 2.0.0-preview.2 + '@solana/codecs-strings': 2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/options': 2.0.0-preview.2 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.1.6) + '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.1.6) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.1.6) + '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + '@solana/options': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.1.6) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.1.6) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.1.6) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/errors@2.0.0-preview.2': + dependencies: + chalk: 5.4.1 + commander: 12.1.0 + + '@solana/errors@2.0.0-preview.4(typescript@5.1.6)': + dependencies: + chalk: 5.4.1 + commander: 12.1.0 + typescript: 5.1.6 + + '@solana/errors@2.0.0-rc.1(typescript@5.1.6)': + dependencies: + chalk: 5.4.1 + commander: 12.1.0 + typescript: 5.1.6 + + '@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.1.6)': + dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.1.6) + '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.1.6) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.1.6) + '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + '@solana/errors': 2.0.0-preview.4(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.1.6) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.1.6) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.1.6) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + '@solana/errors': 2.0.0-rc.1(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/spl-token-group@0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)': + dependencies: + '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + '@solana/spl-type-length-value': 0.1.0 + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@solana/spl-type-length-value@0.1.0': + dependencies: + buffer: 6.0.3 + + '@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@babel/runtime': 7.26.0 + '@noble/curves': 1.7.0 + '@noble/hashes': 1.5.0 + '@solana/buffer-layout': 4.0.1 + agentkeepalive: 4.5.0 + bigint-buffer: 1.1.5 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.1.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + node-fetch: 2.7.0 + rpc-websockets: 9.0.4 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@babel/runtime': 7.26.0 + '@noble/curves': 1.7.0 + '@noble/hashes': 1.6.1 + '@solana/buffer-layout': 4.0.1 + agentkeepalive: 4.5.0 + bigint-buffer: 1.1.5 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.1.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + node-fetch: 2.7.0 + rpc-websockets: 9.0.4 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@supabase/auth-js@2.67.3': + dependencies: + '@supabase/node-fetch': 2.6.15 + + '@supabase/functions-js@2.4.4': + dependencies: + '@supabase/node-fetch': 2.6.15 + + '@supabase/node-fetch@2.6.15': + dependencies: + whatwg-url: 5.0.0 + + '@supabase/postgrest-js@1.17.7': + dependencies: + '@supabase/node-fetch': 2.6.15 + + '@supabase/realtime-js@2.11.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@supabase/node-fetch': 2.6.15 + '@types/phoenix': 1.6.6 + '@types/ws': 8.5.13 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@supabase/storage-js@2.7.1': + dependencies: + '@supabase/node-fetch': 2.6.15 + + '@supabase/supabase-js@2.47.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@supabase/auth-js': 2.67.3 + '@supabase/functions-js': 2.4.4 + '@supabase/node-fetch': 2.6.15 + '@supabase/postgrest-js': 1.17.7 + '@supabase/realtime-js': 2.11.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@supabase/storage-js': 2.7.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@swc/helpers@0.5.5': + dependencies: + '@swc/counter': 0.1.3 + tslib: 2.8.1 + + '@tokenizer/token@0.3.0': {} + + '@types/connect@3.4.38': + dependencies: + '@types/node': 20.12.12 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 0.7.34 + + '@types/diff-match-patch@1.0.36': {} + + '@types/estree@1.0.6': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/ms@0.7.34': {} + + '@types/node-fetch@2.6.12': + dependencies: + '@types/node': 20.12.12 + form-data: 4.0.1 + + '@types/node@10.14.22': {} + + '@types/node@12.20.55': {} + + '@types/node@18.19.68': + dependencies: + undici-types: 5.26.5 + + '@types/node@20.12.12': + dependencies: + undici-types: 5.26.5 + + '@types/phoenix@1.6.6': {} + + '@types/prop-types@15.7.14': {} + + '@types/react-dom@18.3.0': + dependencies: + '@types/react': 18.3.2 + + '@types/react@18.3.2': + dependencies: + '@types/prop-types': 15.7.14 + csstype: 3.1.3 + + '@types/retry@0.12.0': {} + + '@types/tough-cookie@4.0.5': {} + + '@types/unist@3.0.3': {} + + '@types/uuid@10.0.0': {} + + '@types/uuid@8.3.4': {} + + '@types/ws@7.4.7': + dependencies: + '@types/node': 20.12.12 + + '@types/ws@8.5.13': + dependencies: + '@types/node': 20.12.12 + + '@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6)': + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + debug: 4.4.0 + eslint: 8.46.0 + optionalDependencies: + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + + '@typescript-eslint/types@5.62.0': {} + + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.4.0 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.3 + tsutils: 3.21.0(typescript@5.1.6) + optionalDependencies: + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.2.1': {} + + '@vue/compiler-core@3.5.13': + dependencies: + '@babel/parser': 7.26.3 + '@vue/shared': 3.5.13 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.13': + dependencies: + '@vue/compiler-core': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/compiler-sfc@3.5.13': + dependencies: + '@babel/parser': 7.26.3 + '@vue/compiler-core': 3.5.13 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + estree-walker: 2.0.2 + magic-string: 0.30.17 + postcss: 8.4.49 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.13': + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/reactivity@3.5.13': + dependencies: + '@vue/shared': 3.5.13 + + '@vue/runtime-core@3.5.13': + dependencies: + '@vue/reactivity': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/runtime-dom@3.5.13': + dependencies: + '@vue/reactivity': 3.5.13 + '@vue/runtime-core': 3.5.13 + '@vue/shared': 3.5.13 + csstype: 3.1.3 + + '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.1.6))': + dependencies: + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + vue: 3.5.13(typescript@5.1.6) + + '@vue/shared@3.5.13': {} + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + + acorn-typescript@1.4.13(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.0 + + acorn@8.14.0: {} + + agentkeepalive@4.5.0: + dependencies: + humanize-ms: 1.2.1 + + ai@3.4.33(openai@4.77.0(zod@3.24.1))(react@18.3.1)(sswr@2.1.0(svelte@5.16.0))(svelte@5.16.0)(vue@3.5.13(typescript@5.1.6))(zod@3.24.1): + dependencies: + '@ai-sdk/provider': 0.0.26 + '@ai-sdk/provider-utils': 1.0.22(zod@3.24.1) + '@ai-sdk/react': 0.0.70(react@18.3.1)(zod@3.24.1) + '@ai-sdk/solid': 0.0.54(zod@3.24.1) + '@ai-sdk/svelte': 0.0.57(svelte@5.16.0)(zod@3.24.1) + '@ai-sdk/ui-utils': 0.0.50(zod@3.24.1) + '@ai-sdk/vue': 0.0.59(vue@3.5.13(typescript@5.1.6))(zod@3.24.1) + '@opentelemetry/api': 1.9.0 + eventsource-parser: 1.1.2 + json-schema: 0.4.0 + jsondiffpatch: 0.6.0 + secure-json-parse: 2.7.0 + zod-to-json-schema: 3.24.1(zod@3.24.1) + optionalDependencies: + openai: 4.77.0(zod@3.24.1) + react: 18.3.1 + sswr: 2.1.0(svelte@5.16.0) + svelte: 5.16.0 + zod: 3.24.1 + transitivePeerDependencies: + - solid-js + - vue + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + ansicolors@0.3.2: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@5.0.2: {} + + argparse@2.0.1: {} + + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.3 + is-array-buffer: 3.0.5 + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.7 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.6 + is-string: 1.1.1 + + array-union@2.1.0: {} + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.7 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.findlastindex@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.7 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.7 + es-shim-unscopables: 1.0.2 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.7 + es-shim-unscopables: 1.0.2 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.7 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + is-array-buffer: 3.0.5 + + assert@2.1.0: + dependencies: + call-bind: 1.0.8 + is-nan: 1.3.2 + object-is: 1.1.6 + object.assign: 4.1.7 + util: 0.12.5 + + assertion-error@2.0.1: {} + + ast-types-flow@0.0.8: {} + + asynckit@0.4.0: {} + + autoprefixer@10.4.14(postcss@8.4.27): + dependencies: + browserslist: 4.24.3 + caniuse-lite: 1.0.30001690 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.4.27 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + axe-core@4.10.2: {} + + axios-retry@3.9.1: + dependencies: + '@babel/runtime': 7.26.0 + is-retry-allowed: 2.2.0 + + axios@1.7.4(debug@4.4.0): + dependencies: + follow-redirects: 1.15.9(debug@4.4.0) + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axobject-query@4.1.0: {} + + balanced-match@1.0.2: {} + + base-x@3.0.10: + dependencies: + safe-buffer: 5.2.1 + + base-x@4.0.0: {} + + base-x@5.0.0: {} + + base64-js@1.5.1: {} + + big.js@6.2.2: {} + + bigint-buffer@1.1.5: + dependencies: + bindings: 1.5.0 + + bignumber.js@9.1.2: {} + + binary-extensions@2.3.0: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + bn.js@5.2.1: {} + + borsh@0.7.0: + dependencies: + bn.js: 5.2.1 + bs58: 4.0.1 + text-encoding-utf-8: 1.0.2 + + borsh@1.0.0: {} + + borsh@2.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.3: + dependencies: + caniuse-lite: 1.0.30001690 + electron-to-chromium: 1.5.76 + node-releases: 2.0.19 + update-browserslist-db: 1.1.1(browserslist@4.24.3) + + bs58@4.0.1: + dependencies: + base-x: 3.0.10 + + bs58@5.0.0: + dependencies: + base-x: 4.0.0 + + bs58@6.0.0: + dependencies: + base-x: 5.0.0 + + buffer-equal-constant-time@1.0.1: {} + + buffer-layout@1.2.2: {} + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bufferutil@4.0.8: + dependencies: + node-gyp-build: 4.8.4 + optional: true + + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 + + call-bind-apply-helpers@1.0.1: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.1 + get-intrinsic: 1.2.6 + set-function-length: 1.2.2 + + call-bound@1.0.3: + dependencies: + call-bind-apply-helpers: 1.0.1 + get-intrinsic: 1.2.6 + + callsites@3.1.0: {} + + camelcase-css@2.0.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001690: {} + + ccount@2.0.1: {} + + chai@5.1.2: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.2 + pathval: 2.0.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.4.1: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + check-error@2.1.1: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + client-only@0.0.1: {} + + clsx@1.2.1: {} + + clsx@2.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comma-separated-tokens@2.0.3: {} + + commander@10.0.1: {} + + commander@12.1.0: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + commander@7.2.0: {} + + concat-map@0.0.1: {} + + cross-fetch@3.2.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-hash@1.3.0: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + damerau-levenshtein@1.0.8: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + dayjs@1.11.13: {} + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decamelize@1.2.0: {} + + decimal.js-light@2.5.1: {} + + decimal.js@10.4.3: {} + + deep-eql@5.0.2: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delay@5.0.0: {} + + delayed-stream@1.0.0: {} + + dequal@2.0.3: {} + + detect-libc@2.0.3: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + didyoumean@1.2.2: {} + + diff-match-patch@1.0.5: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dlv@1.1.3: {} + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + dotenv@16.4.7: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + electron-to-chromium@1.5.76: {} + + emoji-regex-xs@1.0.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + enhanced-resolve@5.18.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + entities@4.5.0: {} + + es-abstract@1.23.7: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.2.6 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.0 + math-intrinsics: 1.1.0 + object-inspect: 1.13.3 + object-keys: 1.1.1 + object.assign: 4.1.7 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.3 + safe-regex-test: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.18 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-abstract: 1.23.7 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.6 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.4 + safe-array-concat: 1.1.3 + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.6 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.0.2: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + es6-promise@4.2.8: {} + + es6-promisify@5.0.0: + dependencies: + es6-promise: 4.2.8 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-next@13.4.12(eslint@8.46.0)(typescript@5.1.6): + dependencies: + '@next/eslint-plugin-next': 13.4.12 + '@rushstack/eslint-patch': 1.10.4 + '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.1.6) + eslint: 8.46.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0(eslint@8.46.0))(eslint@8.46.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0) + eslint-plugin-jsx-a11y: 6.10.2(eslint@8.46.0) + eslint-plugin-react: 7.37.3(eslint@8.46.0) + eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.46.0) + optionalDependencies: + typescript: 5.1.6 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - eslint-plugin-import-x + - supports-color + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.46.0))(eslint@8.46.0): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.0 + enhanced-resolve: 5.18.0 + eslint: 8.46.0 + fast-glob: 3.3.2 + get-tsconfig: 4.8.1 + is-bun-module: 1.3.0 + is-glob: 4.0.3 + stable-hash: 0.0.4 + optionalDependencies: + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.1.6) + eslint: 8.46.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0(eslint@8.46.0))(eslint@8.46.0) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.46.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.1.6) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.10.2(eslint@8.46.0): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.10.2 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.46.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + + eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705(eslint@8.46.0): + dependencies: + eslint: 8.46.0 + + eslint-plugin-react@7.37.3(eslint@8.46.0): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 8.46.0 + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint@8.46.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.46.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + esm-env@1.2.1: {} + + espree@9.6.1: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 3.4.3 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrap@1.3.2: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + event-target-shim@5.0.1: {} + + eventemitter3@4.0.7: {} + + eventemitter3@5.0.1: {} + + eventsource-parser@1.1.2: {} + + expr-eval@2.0.2: {} + + extend@3.0.2: {} + + eyes@0.1.8: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-stable-stringify@1.0.0: {} + + fastestsmallesttextencoderdecoder@1.0.22: {} + + fastq@1.18.0: + dependencies: + reusify: 1.0.4 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + file-type@16.5.4: + dependencies: + readable-web-to-node-stream: 3.0.2 + strtok3: 6.3.0 + token-types: 4.2.1 + + file-uri-to-path@1.0.0: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + rimraf: 3.0.2 + + flat@5.0.2: {} + + flatted@3.3.2: {} + + follow-redirects@1.15.9(debug@4.4.0): + optionalDependencies: + debug: 4.4.0 + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data-encoder@1.7.2: {} + + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + formdata-node@4.4.1: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 4.0.0-beta.3 + + fraction.js@4.3.7: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.2: + optional: true + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + get-intrinsic@1.2.6: + dependencies: + call-bind-apply-helpers: 1.0.1 + dunder-proto: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + function-bind: 1.1.2 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.1.7: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + graphemesplit@2.4.4: + dependencies: + js-base64: 3.7.7 + unicode-trie: 2.0.0 + + groq-sdk@0.5.0: + dependencies: + '@types/node': 18.19.68 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + web-streams-polyfill: 3.3.3 + transitivePeerDependencies: + - encoding + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-to-html@9.0.4: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + html-void-elements@3.0.0: {} + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + ibm-cloud-sdk-core@5.1.0: + dependencies: + '@types/debug': 4.1.12 + '@types/node': 10.14.22 + '@types/tough-cookie': 4.0.5 + axios: 1.7.4(debug@4.4.0) + camelcase: 6.3.0 + debug: 4.4.0 + dotenv: 16.4.7 + extend: 3.0.2 + file-type: 16.5.4 + form-data: 4.0.0 + isstream: 0.1.2 + jsonwebtoken: 9.0.2 + mime-types: 2.1.35 + retry-axios: 2.6.0(axios@1.7.4) + tough-cookie: 4.1.4 + transitivePeerDependencies: + - supports-color + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + ipaddr.js@2.2.0: {} + + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + + is-arrayish@0.3.2: {} + + is-async-function@2.0.0: + dependencies: + has-tostringtag: 1.0.2 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.2.1: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-bun-module@1.3.0: + dependencies: + semver: 7.6.3 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.3 + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-map@2.0.3: {} + + is-nan@1.3.2: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-reference@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.3 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-retry-allowed@2.2.0: {} + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.3 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.3 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.18 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.0: + dependencies: + call-bound: 1.0.3 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): + dependencies: + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + isomorphic-ws@4.0.1(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)): + dependencies: + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + isstream@0.1.2: {} + + iterator.prototype@1.1.4: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.6 + has-symbols: 1.1.0 + reflect.getprototypeof: 1.0.9 + set-function-name: 2.0.2 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jayson@4.1.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@types/connect': 3.4.38 + '@types/node': 12.20.55 + '@types/ws': 7.4.7 + JSONStream: 1.3.5 + commander: 2.20.3 + delay: 5.0.0 + es6-promisify: 5.0.0 + eyes: 0.1.8 + isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + json-stringify-safe: 5.0.1 + uuid: 8.3.2 + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + jiti@1.21.7: {} + + js-base64@3.7.7: {} + + js-tiktoken@1.0.16: + dependencies: + base64-js: 1.5.1 + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema@0.4.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-safe@5.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsondiffpatch@0.6.0: + dependencies: + '@types/diff-match-patch': 1.0.36 + chalk: 5.4.1 + diff-match-patch: 1.0.5 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + jsonpointer@5.0.1: {} + + jsonwebtoken@9.0.2: + dependencies: + jws: 3.2.2 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.6.3 + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + jwa@1.4.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@3.2.2: + dependencies: + jwa: 1.4.1 + safe-buffer: 5.2.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + langchain@0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(openai@4.77.0(zod@3.24.1)): + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.26(openai@4.77.0(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.0(zod@3.24.1)) + openapi-types: 12.1.3 + p-retry: 4.6.2 + uuid: 10.0.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.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + axios: 1.7.4(debug@4.4.0) + transitivePeerDependencies: + - encoding + - openai + + langsmith@0.2.14(openai@4.77.0(zod@3.24.1)): + dependencies: + '@types/uuid': 10.0.0 + 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.77.0(zod@3.24.1) + + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lilconfig@2.1.0: {} + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + locate-character@3.0.0: {} + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.includes@4.3.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + + lodash.merge@4.6.2: {} + + lodash.once@4.1.1: {} + + lodash@4.17.21: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + loupe@3.1.2: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + lru-cache@10.4.3: {} + + lunr@2.3.9: {} + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + math-intrinsics@1.1.0: {} + + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.1 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdurl@2.0.0: {} + + merge2@1.4.1: {} + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimalistic-assert@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mrmime@1.0.1: {} + + ms@2.1.3: {} + + mustache@4.2.0: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.8: {} + + natural-compare@1.4.0: {} + + next@14.2.21(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@next/env': 14.2.21 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001690 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-jsx: 5.1.1(react@18.3.1) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.21 + '@next/swc-darwin-x64': 14.2.21 + '@next/swc-linux-arm64-gnu': 14.2.21 + '@next/swc-linux-arm64-musl': 14.2.21 + '@next/swc-linux-x64-gnu': 14.2.21 + '@next/swc-linux-x64-musl': 14.2.21 + '@next/swc-win32-arm64-msvc': 14.2.21 + '@next/swc-win32-ia32-msvc': 14.2.21 + '@next/swc-win32-x64-msvc': 14.2.21 + '@opentelemetry/api': 1.9.0 + '@playwright/test': 1.49.1 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + + node-domexception@1.0.0: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-gyp-build@4.8.4: + optional: true + + node-releases@2.0.19: {} + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.3: {} + + object-is@1.1.6: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.7 + es-object-atoms: 1.0.0 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.7 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + oniguruma-to-es@0.8.1: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 5.0.2 + regex-recursion: 5.0.0 + + openai@4.77.0(zod@3.24.1): + dependencies: + '@types/node': 18.19.68 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + optionalDependencies: + zod: 3.24.1 + transitivePeerDependencies: + - encoding + + openapi-types@12.1.3: {} + + opener@1.5.2: {} + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-finally@1.0.0: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + + p-retry@4.6.2: + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + + package-json-from-dist@1.0.1: {} + + pako@0.2.9: {} + + pako@2.1.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-type@4.0.0: {} + + pathval@2.0.0: {} + + peek-readable@4.1.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pify@2.3.0: {} + + pirates@4.0.6: {} + + playwright-core@1.49.1: {} + + playwright@1.49.1: + dependencies: + playwright-core: 1.49.1 + optionalDependencies: + fsevents: 2.3.2 + + possible-typed-array-names@1.0.0: {} + + postcss-import@15.1.0(postcss@8.4.27): + dependencies: + postcss: 8.4.27 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-js@4.0.1(postcss@8.4.27): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.27 + + postcss-load-config@4.0.2(postcss@8.4.27): + dependencies: + lilconfig: 3.1.3 + yaml: 2.6.1 + optionalDependencies: + postcss: 8.4.27 + + postcss-nested@6.2.0(postcss@8.4.27): + dependencies: + postcss: 8.4.27 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.27: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.4.31: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.4.49: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier@3.0.0: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-information@6.5.0: {} + + proxy-from-env@1.1.0: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + punycode.js@2.3.1: {} + + punycode@2.3.1: {} + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-is@16.13.1: {} + + react-toastify@9.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + clsx: 1.2.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readable-web-to-node-stream@3.0.2: + dependencies: + readable-stream: 3.6.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + reflect.getprototypeof@1.0.9: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + dunder-proto: 1.0.1 + es-abstract: 1.23.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + gopd: 1.2.0 + which-builtin-type: 1.2.1 + + regenerator-runtime@0.14.1: {} + + regex-recursion@5.0.0: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@5.0.2: + dependencies: + regex-utilities: 2.3.0 + + regexp.prototype.flags@1.5.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + + requires-port@1.0.0: {} + + resolve-from@4.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + retry-axios@2.6.0(axios@1.7.4): + dependencies: + axios: 1.7.4(debug@4.4.0) + + retry@0.13.1: {} + + reusify@1.0.4: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rpc-websockets@9.0.4: + dependencies: + '@swc/helpers': 0.5.15 + '@types/uuid': 8.3.4 + '@types/ws': 8.5.13 + buffer: 6.0.3 + eventemitter3: 5.0.1 + uuid: 8.3.2 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.2.1: {} + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-regex: 1.2.1 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + secure-json-parse@2.7.0: {} + + semver@6.3.1: {} + + semver@7.6.3: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.6 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@1.24.4: + dependencies: + '@shikijs/core': 1.24.4 + '@shikijs/engine-javascript': 1.24.4 + '@shikijs/engine-oniguruma': 1.24.4 + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + object-inspect: 1.13.3 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + object-inspect: 1.13.3 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@4.1.0: {} + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + sirv@1.0.19: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 1.0.1 + totalist: 1.1.0 + + slash@3.0.0: {} + + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + solana-agent-kit@1.3.0(@noble/hashes@1.6.1)(axios@1.7.4)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10)(zod@3.24.1): + dependencies: + '@bonfida/spl-name-service': 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) + '@langchain/groq': 0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@langchain/langgraph': 0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) + '@lightprotocol/compressed-token': 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10) + '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-core': 1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1) + '@metaplex-foundation/mpl-token-metadata': 3.3.0(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-bundle-defaults': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@onsol/tldparser': 0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@orca-so/whirlpools-sdk': 0.13.12(@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@pythnetwork/price-service-client': 1.9.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@raydium-io/raydium-sdk-v2': 0.1.95-alpha(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.1.6)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + bs58: 6.0.0 + chai: 5.1.2 + decimal.js: 10.4.3 + dotenv: 16.4.7 + form-data: 4.0.1 + langchain: 0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(openai@4.77.0(zod@3.24.1)) + openai: 4.77.0(zod@3.24.1) + typedoc: 0.26.11(typescript@5.1.6) + transitivePeerDependencies: + - '@langchain/anthropic' + - '@langchain/aws' + - '@langchain/cohere' + - '@langchain/google-genai' + - '@langchain/google-vertexai' + - '@langchain/mistralai' + - '@langchain/ollama' + - '@noble/hashes' + - axios + - borsh + - buffer + - bufferutil + - cheerio + - debug + - encoding + - fastestsmallesttextencoderdecoder + - handlebars + - peggy + - supports-color + - typeorm + - typescript + - utf-8-validate + - zod + + source-map-js@1.2.1: {} + + space-separated-tokens@2.0.2: {} + + sswr@2.1.0(svelte@5.16.0): + dependencies: + svelte: 5.16.0 + swrev: 4.0.0 + + stable-hash@0.0.4: {} + + streamsearch@1.1.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.7 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-abstract: 1.23.7 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.6 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.3 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.7 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.23.7 + es-object-atoms: 1.0.0 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@3.0.0: {} + + strip-json-comments@3.1.1: {} + + strtok3@6.3.0: + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 4.1.0 + + styled-jsx@5.1.1(react@18.3.1): + dependencies: + client-only: 0.0.1 + react: 18.3.1 + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + superstruct@0.15.5: {} + + superstruct@2.0.2: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svelte@5.16.0: + dependencies: + '@ampproject/remapping': 2.3.0 + '@jridgewell/sourcemap-codec': 1.5.0 + '@types/estree': 1.0.6 + acorn: 8.14.0 + acorn-typescript: 1.4.13(acorn@8.14.0) + aria-query: 5.3.2 + axobject-query: 4.1.0 + clsx: 2.1.1 + esm-env: 1.2.1 + esrap: 1.3.2 + is-reference: 3.0.3 + locate-character: 3.0.0 + magic-string: 0.30.17 + zimmerframe: 1.1.2 + + swr@2.3.0(react@18.3.1): + dependencies: + dequal: 2.0.3 + react: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) + + swrev@4.0.0: {} + + swrv@1.0.4(vue@3.5.13(typescript@5.1.6)): + dependencies: + vue: 3.5.13(typescript@5.1.6) + + tailwindcss@3.3.3: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 2.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.4.27 + postcss-import: 15.1.0(postcss@8.4.27) + postcss-js: 4.0.1(postcss@8.4.27) + postcss-load-config: 4.0.2(postcss@8.4.27) + postcss-nested: 6.2.0(postcss@8.4.27) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tapable@2.2.1: {} + + text-encoding-utf-8@1.0.2: {} + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + throttleit@2.1.0: {} + + through@2.3.8: {} + + tiny-inflate@1.0.3: {} + + tiny-invariant@1.3.3: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toformat@2.0.0: {} + + token-types@4.2.1: + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + + toml@3.0.0: {} + + totalist@1.1.0: {} + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@0.0.3: {} + + trim-lines@3.0.1: {} + + ts-interface-checker@0.1.13: {} + + ts-log@2.2.7: {} + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@1.14.1: {} + + tslib@2.8.1: {} + + tsutils@3.21.0(typescript@5.1.6): + dependencies: + tslib: 1.14.1 + typescript: 5.1.6 + + tweetnacl@1.0.3: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.9 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.0.0 + reflect.getprototypeof: 1.0.9 + + typedoc@0.26.11(typescript@5.1.6): + dependencies: + lunr: 2.3.9 + markdown-it: 14.1.0 + minimatch: 9.0.5 + shiki: 1.24.4 + typescript: 5.1.6 + yaml: 2.6.1 + + typescript@5.1.6: {} + + uc.micro@2.1.0: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.3 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@5.26.5: {} + + unicode-trie@2.0.0: + dependencies: + pako: 0.2.9 + tiny-inflate: 1.0.3 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + update-browserslist-db@1.1.1(browserslist@4.24.3): + dependencies: + browserslist: 4.24.3 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + use-sync-external-store@1.4.0(react@18.3.1): + dependencies: + react: 18.3.1 + + utf-8-validate@5.0.10: + dependencies: + node-gyp-build: 4.8.4 + optional: true + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.0.10 + is-typed-array: 1.1.15 + which-typed-array: 1.1.18 + + uuid@10.0.0: {} + + uuid@8.3.2: {} + + uuid@9.0.1: {} + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + + vue@3.5.13(typescript@5.1.6): + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-sfc': 3.5.13 + '@vue/runtime-dom': 3.5.13 + '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.1.6)) + '@vue/shared': 3.5.13 + optionalDependencies: + typescript: 5.1.6 + + web-streams-polyfill@3.3.3: {} + + web-streams-polyfill@4.0.0-beta.3: {} + + webidl-conversions@3.0.1: {} + + webpack-bundle-analyzer@4.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + acorn: 8.14.0 + acorn-walk: 8.3.4 + chalk: 4.1.2 + commander: 7.2.0 + gzip-size: 6.0.0 + lodash: 4.17.21 + opener: 1.5.2 + sirv: 1.0.19 + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.1 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.3 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.0.10 + is-regex: 1.2.1 + is-weakref: 1.1.0 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.18 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.18: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + for-each: 0.3.3 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + yaml@2.6.1: {} + + yocto-queue@0.1.0: {} + + zimmerframe@1.1.2: {} + + zod-to-json-schema@3.24.1(zod@3.24.1): + dependencies: + zod: 3.24.1 + + zod@3.24.1: {} + + zwitch@2.0.4: {} diff --git a/examples/agent-kit-nextjs-langchain/postcss.config.js b/examples/agent-kit-nextjs-langchain/postcss.config.js new file mode 100644 index 0000000..33ad091 --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/examples/agent-kit-nextjs-langchain/public/images/favicon.ico b/examples/agent-kit-nextjs-langchain/public/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4c29611109064a93f09866b3b89d4486b8db1866 GIT binary patch literal 15406 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 Izgq_VANjSAVE_OC literal 0 HcmV?d00001 diff --git a/examples/agent-kit-nextjs-langchain/tailwind.config.js b/examples/agent-kit-nextjs-langchain/tailwind.config.js new file mode 100644 index 0000000..8c4d1b2 --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/tailwind.config.js @@ -0,0 +1,18 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + './pages/**/*.{js,ts,jsx,tsx,mdx}', + './components/**/*.{js,ts,jsx,tsx,mdx}', + './app/**/*.{js,ts,jsx,tsx,mdx}', + ], + theme: { + extend: { + backgroundImage: { + 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', + 'gradient-conic': + 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', + }, + }, + }, + plugins: [], +} diff --git a/examples/agent-kit-nextjs-langchain/tsconfig.json b/examples/agent-kit-nextjs-langchain/tsconfig.json new file mode 100644 index 0000000..23ba4fd --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} From 4ae9051957ebcda7999e2f4ed9b587cdbc9386cb Mon Sep 17 00:00:00 2001 From: DonDuala Date: Sun, 29 Dec 2024 19:29:16 -0400 Subject: [PATCH 20/94] Add create manifest market support --- README.md | 1 + package.json | 1 + src/agent/index.ts | 8 + src/langchain/index.ts | 41 + src/tools/index.ts | 1 + src/tools/manifest_create_market.ts | 43 + yarn.lock | 3959 +++++++++++++++++++++++++++ 7 files changed, 4054 insertions(+) create mode 100644 src/tools/manifest_create_market.ts create mode 100644 yarn.lock diff --git a/README.md b/README.md index c917201..afe8400 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ Anyone - whether an SF-based AI researcher or a crypto-native builder - can brin - Raydium pool creation (CPMM, CLMM, AMMv4) - Orca Whirlpool integration - Meteora Dynamic AMM, DLMM Pool, and Alpga Vault + - Manifest market creation, and limit orders - Openbook market creation - Register and Resolve SNS - Jito Bundles diff --git a/package.json b/package.json index 8ff852f..af96c24 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "dependencies": { "@bonfida/spl-name-service": "^3.0.7", "@coral-xyz/anchor": "0.29", + "@cks-systems/manifest-sdk": "^0.1.59", "@langchain/core": "^0.3.26", "@langchain/groq": "^0.1.2", "@langchain/langgraph": "^0.2.34", diff --git a/src/agent/index.ts b/src/agent/index.ts index bf89861..b46b415 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -13,6 +13,7 @@ import { lendAsset, mintCollectionNFT, openbookCreateMarket, + manifestCreateMarket, raydiumCreateAmmV4, raydiumCreateClmm, raydiumCreateCpmm, @@ -315,6 +316,13 @@ export class SolanaAgentKit { ); } + async manifestCreateMarket( + baseMint: PublicKey, + quoteMint: PublicKey, + ): Promise { + return manifestCreateMarket(this, baseMint, quoteMint); + } + async pythFetchPrice(priceFeedID: string): Promise { return pythFetchPrice(priceFeedID); } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 21888bf..9c74a84 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -988,6 +988,46 @@ export class SolanaOpenbookCreateMarket extends Tool { } } +export class SolanaManifestCreateMarket extends Tool { + name = "solana_manifest_create_market"; + description = `Manifest market + + Inputs (input is a json string): + baseMint: string (required) + quoteMint: string (required) + `; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + + const tx = await this.solanaKit.manifestCreateMarket( + new PublicKey(inputFormat.baseMint), + new PublicKey(inputFormat.quoteMint), + ); + + return JSON.stringify({ + status: "success", + message: "Create manifest market successfully", + transaction: tx[0], + marketId: tx[1], + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +// TODO: Add limit order support + export class SolanaPythFetchPrice extends Tool { name = "solana_pyth_fetch_price"; description = `Fetch the price of a given price feed from Pyth's Hermes service @@ -1351,6 +1391,7 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaRaydiumCreateClmm(solanaKit), new SolanaRaydiumCreateCpmm(solanaKit), new SolanaOpenbookCreateMarket(solanaKit), + new SolanaManifestCreateMarket(solanaKit), new SolanaCreateSingleSidedWhirlpoolTool(solanaKit), new SolanaPythFetchPrice(solanaKit), new SolanaResolveDomainTool(solanaKit), diff --git a/src/tools/index.ts b/src/tools/index.ts index 468648e..7289ca9 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -34,6 +34,7 @@ export * from "./raydium_create_ammV4"; export * from "./raydium_create_clmm"; export * from "./raydium_create_cpmm"; export * from "./openbook_create_market"; +export * from "./manifest_create_market"; export * from "./pyth_fetch_price"; export * from "./create_gibwork_task"; diff --git a/src/tools/manifest_create_market.ts b/src/tools/manifest_create_market.ts new file mode 100644 index 0000000..e0960f4 --- /dev/null +++ b/src/tools/manifest_create_market.ts @@ -0,0 +1,43 @@ +import { ManifestClient } from "@cks-systems/manifest-sdk"; +import { + Keypair, + PublicKey, + sendAndConfirmTransaction, + SystemProgram, + Transaction, + TransactionInstruction, +} from "@solana/web3.js"; +import { SolanaAgentKit } from "../index"; + +export async function manifestCreateMarket( + agent: SolanaAgentKit, + baseMint: PublicKey, + quoteMint: PublicKey, +): Promise { + const marketKeypair: Keypair = Keypair.generate(); + const FIXED_MANIFEST_HEADER_SIZE: number = 256; + const createAccountIx: TransactionInstruction = SystemProgram.createAccount({ + fromPubkey: agent.wallet.publicKey, + newAccountPubkey: marketKeypair.publicKey, + space: FIXED_MANIFEST_HEADER_SIZE, + lamports: await agent.connection.getMinimumBalanceForRentExemption( + FIXED_MANIFEST_HEADER_SIZE, + ), + programId: new PublicKey("MNFSTqtC93rEfYHB6hF82sKdZpUDFWkViLByLd1k1Ms"), + }); + const createMarketIx = ManifestClient["createMarketIx"]( + agent.wallet.publicKey, + baseMint, + quoteMint, + marketKeypair.publicKey, + ); + + const tx: Transaction = new Transaction(); + tx.add(createAccountIx); + tx.add(createMarketIx); + const signature = await sendAndConfirmTransaction(agent.connection, tx, [ + agent.wallet, + marketKeypair, + ]); + return [signature, marketKeypair.publicKey.toBase58()]; +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..179404c --- /dev/null +++ b/yarn.lock @@ -0,0 +1,3959 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime@^7.15.4", "@babel/runtime@^7.25.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + +"@bonfida/sns-records@0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@bonfida/sns-records/-/sns-records-0.0.1.tgz#e178dece0aeeb1670c57703568ae3e1218e7e5fe" + integrity sha512-i28w9+BMFufhhpmLQCNx1CKKXTsEn+5RT18VFpPqdGO3sqaYlnUWC1m3wDpOvlzGk498dljgRpRo5wmcsnuEMg== + dependencies: + borsh "1.0.0" + bs58 "5.0.0" + buffer "^6.0.3" + +"@bonfida/spl-name-service@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@bonfida/spl-name-service/-/spl-name-service-3.0.7.tgz#f645f510a886510d661db7625453d7339b681de9" + integrity sha512-okOLXhy+fQoyQ/sZgMleO5RrIZfTkWEoHMxWgUqg6RP/MTBlrKxlhKC6ymKn4UUe0C5s3Nb8A+3Ams7vX0nMDg== + dependencies: + "@bonfida/sns-records" "0.0.1" + "@noble/curves" "^1.4.0" + "@scure/base" "^1.1.6" + "@solana/spl-token" "0.4.6" + borsh "2.0.0" + buffer "^6.0.3" + graphemesplit "^2.4.4" + ipaddr.js "^2.2.0" + punycode "^2.3.1" + +"@cfworker/json-schema@^4.0.2": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@cfworker/json-schema/-/json-schema-4.0.3.tgz#30fc6b72322c74ceb27014a779de0ccdfa0dfb9e" + integrity sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g== + +"@cks-systems/manifest-sdk@^0.1.59": + version "0.1.73" + resolved "https://registry.yarnpkg.com/@cks-systems/manifest-sdk/-/manifest-sdk-0.1.73.tgz#17c7b2f71c2711989cf210815d78b189e40fe481" + integrity sha512-IcRM7k3YZ/jK5nJwE3xGp2Xg7Um4/XCeqrLs5yB3+IjS7W089Qs/prJXdRGKbFwCLkMt9ds6pElHufQr8an0Iw== + dependencies: + "@metaplex-foundation/beet" "^0.7.1" + "@metaplex-foundation/rustbin" "^0.3.1" + "@metaplex-foundation/solita" "^0.12.2" + "@solana/spl-token" "^0.4.8" + "@solana/web3.js" "^1.95.1" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^6.0.0" + js-sha256 "^0.11.0" + keccak256 "^1.0.6" + percentile "^1.6.0" + prom-client "^15.1.3" + rimraf "^5.0.10" + typedoc "^0.26.3" + ws "^8.18.0" + zstddec "^0.0.2" + +"@coral-xyz/anchor@0.29", "@coral-xyz/anchor@0.29.0", "@coral-xyz/anchor@^0.29.0": + version "0.29.0" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.29.0.tgz#bd0be95bedfb30a381c3e676e5926124c310ff12" + integrity sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA== + dependencies: + "@coral-xyz/borsh" "^0.29.0" + "@noble/hashes" "^1.3.1" + "@solana/web3.js" "^1.68.0" + bn.js "^5.1.2" + bs58 "^4.0.1" + buffer-layout "^1.2.2" + camelcase "^6.3.0" + cross-fetch "^3.1.5" + crypto-hash "^1.3.0" + eventemitter3 "^4.0.7" + pako "^2.0.3" + snake-case "^3.0.4" + superstruct "^0.15.4" + toml "^3.0.0" + +"@coral-xyz/borsh@^0.29.0": + version "0.29.0" + resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.29.0.tgz#79f7045df2ef66da8006d47f5399c7190363e71f" + integrity sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ== + dependencies: + bn.js "^5.1.2" + buffer-layout "^1.2.0" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1", "@eslint-community/regexpp@^4.6.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@eslint/config-array@^0.19.0": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.1.tgz#734aaea2c40be22bbb1f2a9dac687c57a6a4c984" + integrity sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA== + dependencies: + "@eslint/object-schema" "^2.1.5" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/core@^0.9.0": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.9.1.tgz#31763847308ef6b7084a4505573ac9402c51f9d1" + integrity sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/eslintrc@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" + integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== + +"@eslint/js@9.17.0": + version "9.17.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.17.0.tgz#1523e586791f80376a6f8398a3964455ecc651ec" + integrity sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w== + +"@eslint/object-schema@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.5.tgz#8670a8f6258a2be5b2c620ff314a1d984c23eb2e" + integrity sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ== + +"@eslint/plugin-kit@^0.2.3": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz#2b78e7bb3755784bb13faa8932a1d994d6537792" + integrity sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg== + dependencies: + levn "^0.4.1" + +"@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== + dependencies: + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" + +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@humanwhocodes/retry@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + +"@humanwhocodes/retry@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" + integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@langchain/core@^0.3.26": + version "0.3.26" + resolved "https://registry.yarnpkg.com/@langchain/core/-/core-0.3.26.tgz#0ebe7cbe7be316076ddef3feff4ce256a953b751" + integrity sha512-6RUQHEp8wv+JwtYIIEBYBzbLlcAQZFc7EDOgAM0ukExjh9HiXoJzoWpgMRRCrr/koIbtwXPJUqBprZK1I1CXHQ== + dependencies: + "@cfworker/json-schema" "^4.0.2" + ansi-styles "^5.0.0" + camelcase "6" + decamelize "1.2.0" + js-tiktoken "^1.0.12" + langsmith "^0.2.8" + mustache "^4.2.0" + p-queue "^6.6.2" + p-retry "4" + uuid "^10.0.0" + zod "^3.22.4" + zod-to-json-schema "^3.22.3" + +"@langchain/groq@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@langchain/groq/-/groq-0.1.2.tgz#d546951022a9c52a1936c3e791850c431f614974" + integrity sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg== + dependencies: + "@langchain/openai" "~0.3.0" + groq-sdk "^0.5.0" + zod "^3.22.4" + zod-to-json-schema "^3.22.5" + +"@langchain/langgraph-checkpoint@~0.0.13": + version "0.0.13" + resolved "https://registry.yarnpkg.com/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-0.0.13.tgz#b349f1518184e1b154227d1fead2bec1e27707fd" + integrity sha512-amdmBcNT8a9xP2VwcEWxqArng4gtRDcnVyVI4DsQIo1Aaz8e8+hH17zSwrUF3pt1pIYztngIfYnBOim31mtKMg== + dependencies: + uuid "^10.0.0" + +"@langchain/langgraph-sdk@~0.0.21": + version "0.0.32" + resolved "https://registry.yarnpkg.com/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.32.tgz#5b6608d3124578f6006c617d8169e0026bdf45ad" + integrity sha512-KQyM9kLO7T6AxwNrceajH7JOybP3pYpvUPnhiI2rrVndI1WyZUJ1eVC1e722BVRAPi6o+WcoTT4uMSZVinPOtA== + dependencies: + "@types/json-schema" "^7.0.15" + p-queue "^6.6.2" + p-retry "4" + uuid "^9.0.0" + +"@langchain/langgraph@^0.2.34": + version "0.2.36" + resolved "https://registry.yarnpkg.com/@langchain/langgraph/-/langgraph-0.2.36.tgz#4a81bded1dd3febd95cacfa1f7a0c6c8effa79b8" + integrity sha512-zxk7ZCVxP0/Ut9785EiXCS7BE7sXd8cu943mcZUF2aNFUaQRTBbbiKpNdR3nb1+xO/B+HVktrJT2VFdkAywnng== + dependencies: + "@langchain/langgraph-checkpoint" "~0.0.13" + "@langchain/langgraph-sdk" "~0.0.21" + uuid "^10.0.0" + zod "^3.23.8" + +"@langchain/openai@>=0.1.0 <0.4.0", "@langchain/openai@^0.3.13", "@langchain/openai@~0.3.0": + version "0.3.16" + resolved "https://registry.yarnpkg.com/@langchain/openai/-/openai-0.3.16.tgz#bc1ebf67e88d5e5f8320d1df4f01ec3151279101" + integrity sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA== + dependencies: + js-tiktoken "^1.0.12" + openai "^4.77.0" + zod "^3.22.4" + zod-to-json-schema "^3.22.3" + +"@langchain/textsplitters@>=0.0.0 <0.2.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@langchain/textsplitters/-/textsplitters-0.1.0.tgz#f37620992192df09ecda3dfbd545b36a6bcbae46" + integrity sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw== + dependencies: + js-tiktoken "^1.0.12" + +"@lightprotocol/compressed-token@^0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lightprotocol/compressed-token/-/compressed-token-0.17.1.tgz#c7e1b1599fbe54e7c20204e1b0d6fa7d9337b78a" + integrity sha512-493KCmZGw1BcHVRJaeRm8EEs+L7gX8dwY7JG13w2pfgOMtZXZ7Wxt261jFJxQJzRLTrUSlrbRJOmfW1+S1Y8SQ== + dependencies: + "@coral-xyz/anchor" "0.29.0" + "@solana/spl-token" "0.4.8" + "@solana/web3.js" "1.95.3" + buffer "6.0.3" + tweetnacl "1.0.3" + +"@lightprotocol/stateless.js@^0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@lightprotocol/stateless.js/-/stateless.js-0.17.1.tgz#ff120a28363cf0db4f451f6c2ef28371cd5c8922" + integrity sha512-EjId1n33A6dBwpce33Wsa/fs/CDKtMtRrkxbApH0alXrnEXmbW6QhIViXOrKYXjZ4uJQM1xsBtsKe0vqJ4nbtQ== + dependencies: + "@coral-xyz/anchor" "0.29.0" + "@noble/hashes" "1.5.0" + "@solana/web3.js" "1.95.3" + buffer "6.0.3" + superstruct "2.0.2" + tweetnacl "1.0.3" + +"@metaplex-foundation/beet-solana@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet-solana/-/beet-solana-0.3.1.tgz#4b37cda5c7f32ffd2bdd8b3164edc05c6463ab35" + integrity sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g== + dependencies: + "@metaplex-foundation/beet" ">=0.1.0" + "@solana/web3.js" "^1.56.2" + bs58 "^5.0.0" + debug "^4.3.4" + +"@metaplex-foundation/beet-solana@^0.4.0": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet-solana/-/beet-solana-0.4.1.tgz#255747aa7feee1c20202146a752c057feca1948f" + integrity sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ== + dependencies: + "@metaplex-foundation/beet" ">=0.1.0" + "@solana/web3.js" "^1.56.2" + bs58 "^5.0.0" + debug "^4.3.4" + +"@metaplex-foundation/beet@>=0.1.0", "@metaplex-foundation/beet@^0.7.1": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.7.2.tgz#fa4726e4cfd4fb6fed6cddc9b5213c1c2a2d0b77" + integrity sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg== + dependencies: + ansicolors "^0.3.2" + assert "^2.1.0" + bn.js "^5.2.0" + debug "^4.3.3" + +"@metaplex-foundation/beet@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.4.0.tgz#eb2a0a6eb084bb25d67dd9bed2f7387ee7e63a55" + integrity sha512-2OAKJnLatCc3mBXNL0QmWVQKAWK2C7XDfepgL0p/9+8oSx4bmRAFHFqptl1A/C0U5O3dxGwKfmKluW161OVGcA== + dependencies: + ansicolors "^0.3.2" + bn.js "^5.2.0" + debug "^4.3.3" + +"@metaplex-foundation/mpl-core@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-core/-/mpl-core-1.1.1.tgz#f3a61cc647b2cdf461e0403350a7136b90d9d51a" + integrity sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA== + dependencies: + "@msgpack/msgpack" "^3.0.0-beta2" + +"@metaplex-foundation/mpl-token-metadata@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-3.3.0.tgz#a6134bf807d23413cfce2db583bad4ca3539f4fb" + integrity sha512-t5vO8Wr3ZZZPGrVrGNcosX5FMkwQSgBiVMQMRNDG2De7voYFJmIibD5jdG05EoQ4Y5kZVEiwhYaO+wJB3aO5AA== + dependencies: + "@metaplex-foundation/mpl-toolbox" "^0.9.4" + +"@metaplex-foundation/mpl-toolbox@^0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-toolbox/-/mpl-toolbox-0.9.4.tgz#2211b2f726b1e5745c03908d26fd8ee580838b6f" + integrity sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ== + +"@metaplex-foundation/rustbin@^0.3.0", "@metaplex-foundation/rustbin@^0.3.1": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/rustbin/-/rustbin-0.3.5.tgz#56d028afd96c2b56ad3bbea22ff454adde900e8c" + integrity sha512-m0wkRBEQB/8krwMwKBvFugufZtYwMXiGHud2cTDAv+aGXK4M90y0Hx67/wpu+AqqoQfdV8VM9YezUOHKD+Z5kA== + dependencies: + debug "^4.3.3" + semver "^7.3.7" + text-table "^0.2.0" + toml "^3.0.0" + +"@metaplex-foundation/solita@^0.12.2": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/solita/-/solita-0.12.2.tgz#13ef213ac183c986f6d01c5d981c44e59a900834" + integrity sha512-oczMfE43NNHWweSqhXPTkQBUbap/aAiwjDQw8zLKNnd/J8sXr/0+rKcN5yJIEgcHeKRkp90eTqkmt2WepQc8yw== + dependencies: + "@metaplex-foundation/beet" "^0.4.0" + "@metaplex-foundation/beet-solana" "^0.3.0" + "@metaplex-foundation/rustbin" "^0.3.0" + "@solana/web3.js" "^1.36.0" + camelcase "^6.2.1" + debug "^4.3.3" + js-sha256 "^0.9.0" + prettier "^2.5.1" + snake-case "^3.0.4" + spok "^1.4.3" + +"@metaplex-foundation/umi-bundle-defaults@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-bundle-defaults/-/umi-bundle-defaults-0.9.2.tgz#f8e296b1a0ecb3a6511dbaca4131bc9263071cfc" + integrity sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw== + dependencies: + "@metaplex-foundation/umi-downloader-http" "^0.9.2" + "@metaplex-foundation/umi-eddsa-web3js" "^0.9.2" + "@metaplex-foundation/umi-http-fetch" "^0.9.2" + "@metaplex-foundation/umi-program-repository" "^0.9.2" + "@metaplex-foundation/umi-rpc-chunk-get-accounts" "^0.9.2" + "@metaplex-foundation/umi-rpc-web3js" "^0.9.2" + "@metaplex-foundation/umi-serializer-data-view" "^0.9.2" + "@metaplex-foundation/umi-transaction-factory-web3js" "^0.9.2" + +"@metaplex-foundation/umi-downloader-http@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-downloader-http/-/umi-downloader-http-0.9.2.tgz#df84b11df9141854ca1cf7c6c8374658e67de767" + integrity sha512-tzPT9hBwenzTzAQg07rmsrqZfgguAXELbcJrsYMoASp5VqWFXYIP00g94KET6XLjWUXH4P1J2zoa6hGennPXHA== + +"@metaplex-foundation/umi-eddsa-web3js@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-eddsa-web3js/-/umi-eddsa-web3js-0.9.2.tgz#92225595137c5585dae63b148786ab77fcb6d625" + integrity sha512-hhPCxXbYIp4BC4z9gK78sXpWLkNSrfv4ndhF5ruAkdIp7GcRVYKj0QnOUO6lGYGiIkNlw20yoTwOe1CT//OfTQ== + dependencies: + "@metaplex-foundation/umi-web3js-adapters" "^0.9.2" + "@noble/curves" "^1.0.0" + +"@metaplex-foundation/umi-http-fetch@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-http-fetch/-/umi-http-fetch-0.9.2.tgz#e233ec34b789ed5257168b97d72fc9b039155046" + integrity sha512-YCZuBu24T9ZzEDe4+w12LEZm/fO9pkyViZufGgASC5NX93814Lvf6Ssjn/hZzjfA7CvZbvLFbmujc6CV3Q/m9Q== + dependencies: + node-fetch "^2.6.7" + +"@metaplex-foundation/umi-options@^0.8.9": + version "0.8.9" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-options/-/umi-options-0.8.9.tgz#9c9e269d9eee7d055ad6831dcb30a30127dcb0c5" + integrity sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A== + +"@metaplex-foundation/umi-program-repository@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-program-repository/-/umi-program-repository-0.9.2.tgz#53fce2bf506bb97fdb6a53e2118f8d1dd28fd0b5" + integrity sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA== + +"@metaplex-foundation/umi-public-keys@^0.8.9": + version "0.8.9" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-public-keys/-/umi-public-keys-0.8.9.tgz#ca7a927c924ed8e28d0f8bb3dc0f2adc1f9011ec" + integrity sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q== + dependencies: + "@metaplex-foundation/umi-serializers-encodings" "^0.8.9" + +"@metaplex-foundation/umi-rpc-chunk-get-accounts@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-rpc-chunk-get-accounts/-/umi-rpc-chunk-get-accounts-0.9.2.tgz#f93bd43d4c65cdfdb0a68145a837fb6b13e0e832" + integrity sha512-YRwVf6xH0jPBAUgMhEPi+UbjioAeqTXmjsN2TnmQCPAmHbrHrMRj0rlWYwFLWAgkmoxazYrXP9lqOFRrfOGAEA== + +"@metaplex-foundation/umi-rpc-web3js@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-rpc-web3js/-/umi-rpc-web3js-0.9.2.tgz#b00a4cc1a9bd5d930164d1ba43f816107655c0d9" + integrity sha512-MqcsBz8B4wGl6jxsf2Jo/rAEpYReU9VCSR15QSjhvADHMmdFxCIZCCAgE+gDE2Vuanfl437VhOcP3g5Uw8C16Q== + dependencies: + "@metaplex-foundation/umi-web3js-adapters" "^0.9.2" + +"@metaplex-foundation/umi-serializer-data-view@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializer-data-view/-/umi-serializer-data-view-0.9.2.tgz#a05d88e7120b839e3acba35f7b4e12fe8be2becc" + integrity sha512-5vGptadJxUxvUcyrwFZxXlEc6Q7AYySBesizCtrBFUY8w8PnF2vzmS45CP1MLySEATNH6T9mD4Rs0tLb87iQyA== + +"@metaplex-foundation/umi-serializers-core@^0.8.9": + version "0.8.9" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-core/-/umi-serializers-core-0.8.9.tgz#cd5ae763a59e54dd01f1284f4a6bf4e78e4aab9c" + integrity sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w== + +"@metaplex-foundation/umi-serializers-encodings@^0.8.9": + version "0.8.9" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-encodings/-/umi-serializers-encodings-0.8.9.tgz#0f02605ee3e6fbeac1abc4fb267a7cc96ecb4410" + integrity sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q== + dependencies: + "@metaplex-foundation/umi-serializers-core" "^0.8.9" + +"@metaplex-foundation/umi-serializers-numbers@^0.8.9": + version "0.8.9" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-numbers/-/umi-serializers-numbers-0.8.9.tgz#28c10367f6aebac0276ec1bce81d0d8db54b05de" + integrity sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg== + dependencies: + "@metaplex-foundation/umi-serializers-core" "^0.8.9" + +"@metaplex-foundation/umi-serializers@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers/-/umi-serializers-0.9.0.tgz#af6d03a3bf821bf73b7b3450bb8df0407f2f69d6" + integrity sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg== + dependencies: + "@metaplex-foundation/umi-options" "^0.8.9" + "@metaplex-foundation/umi-public-keys" "^0.8.9" + "@metaplex-foundation/umi-serializers-core" "^0.8.9" + "@metaplex-foundation/umi-serializers-encodings" "^0.8.9" + "@metaplex-foundation/umi-serializers-numbers" "^0.8.9" + +"@metaplex-foundation/umi-transaction-factory-web3js@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-transaction-factory-web3js/-/umi-transaction-factory-web3js-0.9.2.tgz#294c3ca996897bb95b993b808fb9252bd085db15" + integrity sha512-fR1Kf21uylMFd1Smkltmj4jTNxhqSWf416owsJ+T+cvJi2VCOcOwq/3UFzOrpz78fA0RhsajKYKj0HYsRnQI1g== + dependencies: + "@metaplex-foundation/umi-web3js-adapters" "^0.9.2" + +"@metaplex-foundation/umi-web3js-adapters@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-web3js-adapters/-/umi-web3js-adapters-0.9.2.tgz#1e0ebb4e3c31e8bead27892b20204292ad6955c5" + integrity sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA== + dependencies: + buffer "^6.0.3" + +"@metaplex-foundation/umi@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi/-/umi-0.9.2.tgz#6460bff91d2ac7745842eda1ee6a28fba4d2ffb2" + integrity sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw== + dependencies: + "@metaplex-foundation/umi-options" "^0.8.9" + "@metaplex-foundation/umi-public-keys" "^0.8.9" + "@metaplex-foundation/umi-serializers" "^0.9.0" + +"@msgpack/msgpack@^3.0.0-beta2": + version "3.0.0-beta2" + resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-3.0.0-beta2.tgz#5bccee30f84df220b33905e3d8249ba96deca0b7" + integrity sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw== + +"@noble/curves@^1.0.0", "@noble/curves@^1.4.0", "@noble/curves@^1.4.2": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.7.0.tgz#0512360622439256df892f21d25b388f52505e45" + integrity sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw== + dependencies: + "@noble/hashes" "1.6.0" + +"@noble/hashes@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.5.0.tgz#abadc5ca20332db2b1b2aa3e496e9af1213570b0" + integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA== + +"@noble/hashes@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.0.tgz#d4bfb516ad6e7b5111c216a5cc7075f4cf19e6c5" + integrity sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ== + +"@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.1.tgz#df6e5943edcea504bac61395926d6fd67869a0d5" + integrity sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@onsol/tldparser@^0.6.7": + version "0.6.7" + resolved "https://registry.yarnpkg.com/@onsol/tldparser/-/tldparser-0.6.7.tgz#f949865b4d6d46e4c8cc22816c4cfab8a8270163" + integrity sha512-QwkRDLyC514pxeplCCXZ2kTiRcJSeUrpp+9o2XqLbePy/qzZGGG8I0UbXUKuWVD/bUL1zAm21+D+Eu30OKwcQg== + dependencies: + "@ethersproject/sha2" "^5.7.0" + "@metaplex-foundation/beet-solana" "^0.4.0" + +"@opentelemetry/api@^1.4.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" + integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== + +"@orca-so/common-sdk@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@orca-so/common-sdk/-/common-sdk-0.6.4.tgz#d6bcbc94ecb837fe16f2eb25a6531db9fdea1e99" + integrity sha512-iOiC6exTA9t2CEOaUPoWlNP3soN/1yZFjoz1mSf7NvOqo/PJZeIdWpB7BRXwU0mGGatjxU4SFgMGQ8NrSx+ONw== + dependencies: + tiny-invariant "^1.3.1" + +"@orca-so/whirlpools-sdk@^0.13.12": + version "0.13.12" + resolved "https://registry.yarnpkg.com/@orca-so/whirlpools-sdk/-/whirlpools-sdk-0.13.12.tgz#08e4059aee037c19b1a346ebe29267159dc5b0d6" + integrity sha512-+LOqGTe0DYUsYwemltOU4WQIviqoICQlIcAmmEX/WnBh6wntpcLDcXkPV6dBHW7NA2/J8WEVAZ50biLJb4subg== + dependencies: + tiny-invariant "^1.3.1" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + +"@pythnetwork/price-service-client@^1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@pythnetwork/price-service-client/-/price-service-client-1.9.0.tgz#1503d67b1a7c14386d30bb420502df4857027e76" + integrity sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg== + dependencies: + "@pythnetwork/price-service-sdk" "*" + "@types/ws" "^8.5.3" + axios "^1.5.1" + axios-retry "^3.8.0" + isomorphic-ws "^4.0.1" + ts-log "^2.2.4" + ws "^8.6.0" + +"@pythnetwork/price-service-sdk@*": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@pythnetwork/price-service-sdk/-/price-service-sdk-1.8.0.tgz#f5f01f654963eb9a0cf12127b4f1a89b60ef008a" + integrity sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA== + dependencies: + bn.js "^5.2.1" + +"@raydium-io/raydium-sdk-v2@0.1.95-alpha": + version "0.1.95-alpha" + resolved "https://registry.yarnpkg.com/@raydium-io/raydium-sdk-v2/-/raydium-sdk-v2-0.1.95-alpha.tgz#75fe4386f534b2b0d9fb12b8efa08377ee4c8dbf" + integrity sha512-+u7yxo/R1JDysTCzOuAlh90ioBe2DlM2Hbcz/tFsxP/YzmnYQzShvNjcmc0361a4zJhmlrEJfpFXW0J3kkX5vA== + dependencies: + "@solana/buffer-layout" "^4.0.1" + "@solana/spl-token" "^0.4.8" + "@solana/web3.js" "^1.95.3" + axios "^1.1.3" + big.js "^6.2.1" + bn.js "^5.2.1" + dayjs "^1.11.5" + decimal.js-light "^2.5.1" + jsonfile "^6.1.0" + lodash "^4.17.21" + toformat "^2.0.0" + tsconfig-paths "^4.2.0" + +"@scure/base@^1.1.6": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.1.tgz#dd0b2a533063ca612c17aa9ad26424a2ff5aa865" + integrity sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ== + +"@shikijs/core@1.24.4": + version "1.24.4" + resolved "https://registry.yarnpkg.com/@shikijs/core/-/core-1.24.4.tgz#de1c454a4e2dbcfaee2dde51d3fac6041e6171f7" + integrity sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q== + dependencies: + "@shikijs/engine-javascript" "1.24.4" + "@shikijs/engine-oniguruma" "1.24.4" + "@shikijs/types" "1.24.4" + "@shikijs/vscode-textmate" "^9.3.1" + "@types/hast" "^3.0.4" + hast-util-to-html "^9.0.4" + +"@shikijs/engine-javascript@1.24.4": + version "1.24.4" + resolved "https://registry.yarnpkg.com/@shikijs/engine-javascript/-/engine-javascript-1.24.4.tgz#8fd1bf1bcb37d14f19412bb0791d1566d6c762c8" + integrity sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA== + dependencies: + "@shikijs/types" "1.24.4" + "@shikijs/vscode-textmate" "^9.3.1" + oniguruma-to-es "0.8.1" + +"@shikijs/engine-oniguruma@1.24.4": + version "1.24.4" + resolved "https://registry.yarnpkg.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.4.tgz#6adc430ddf247eeed155d8a41883e36160f302cf" + integrity sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw== + dependencies: + "@shikijs/types" "1.24.4" + "@shikijs/vscode-textmate" "^9.3.1" + +"@shikijs/types@1.24.4": + version "1.24.4" + resolved "https://registry.yarnpkg.com/@shikijs/types/-/types-1.24.4.tgz#06ec8975732b68508f8423b01a5649eef8d9cea3" + integrity sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA== + dependencies: + "@shikijs/vscode-textmate" "^9.3.1" + "@types/hast" "^3.0.4" + +"@shikijs/vscode-textmate@^9.3.1": + version "9.3.1" + resolved "https://registry.yarnpkg.com/@shikijs/vscode-textmate/-/vscode-textmate-9.3.1.tgz#afda31f8f42cab70a26f3603f52eae3f1c35d2f7" + integrity sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g== + +"@solana/buffer-layout-utils@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" + integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/web3.js" "^1.32.0" + bigint-buffer "^1.1.5" + bignumber.js "^9.0.1" + +"@solana/buffer-layout@^4.0.0", "@solana/buffer-layout@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" + integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== + dependencies: + buffer "~6.0.3" + +"@solana/codecs-core@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-preview.2.tgz#689784d032fbc1fedbde40bb25d76cdcecf6553b" + integrity sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg== + dependencies: + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-core@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-preview.4.tgz#770826105f2f884110a21662573e7a2014654324" + integrity sha512-A0VVuDDA5kNKZUinOqHxJQK32aKTucaVbvn31YenGzHX1gPqq+SOnFwgaEY6pq4XEopSmaK16w938ZQS8IvCnw== + dependencies: + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs-core@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-rc.1.tgz#1a2d76b9c7b9e7b7aeb3bd78be81c2ba21e3ce22" + integrity sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ== + dependencies: + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-data-structures@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.2.tgz#e82cb1b6d154fa636cd5c8953ff3f32959cc0370" + integrity sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-data-structures@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.4.tgz#f8a2470982a9792334737ea64000ccbdff287247" + integrity sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/codecs-numbers" "2.0.0-preview.4" + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs-data-structures@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-rc.1.tgz#d47b2363d99fb3d643f5677c97d64a812982b888" + integrity sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-numbers@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.2.tgz#56995c27396cd8ee3bae8bd055363891b630bbd0" + integrity sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-numbers@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.4.tgz#6a53b456bb7866f252d8c032c81a92651e150f66" + integrity sha512-Q061rLtMadsO7uxpguT+Z7G4UHnjQ6moVIxAQxR58nLxDPCC7MB1Pk106/Z7NDhDLHTcd18uO6DZ7ajHZEn2XQ== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs-numbers@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-rc.1.tgz#f34978ddf7ea4016af3aaed5f7577c1d9869a614" + integrity sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-strings@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.2.tgz#8bd01a4e48614d5289d72d743c3e81305d445c46" + integrity sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + "@solana/errors" "2.0.0-preview.2" + +"@solana/codecs-strings@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.4.tgz#4d06bb722a55a5d04598d362021bfab4bd446760" + integrity sha512-YDbsQePRWm+xnrfS64losSGRg8Wb76cjK1K6qfR8LPmdwIC3787x9uW5/E4icl/k+9nwgbIRXZ65lpF+ucZUnw== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/codecs-numbers" "2.0.0-preview.4" + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs-strings@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-rc.1.tgz#e1d9167075b8c5b0b60849f8add69c0f24307018" + integrity sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-preview.2.tgz#d6615fec98f423166fb89409f9a4ad5b74c10935" + integrity sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-data-structures" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + "@solana/codecs-strings" "2.0.0-preview.2" + "@solana/options" "2.0.0-preview.2" + +"@solana/codecs@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-preview.4.tgz#a1923cc78a6f64ebe656c7ec6335eb6b70405b22" + integrity sha512-gLMupqI4i+G4uPi2SGF/Tc1aXcviZF2ybC81x7Q/fARamNSgNOCUUoSCg9nWu1Gid6+UhA7LH80sWI8XjKaRog== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/codecs-data-structures" "2.0.0-preview.4" + "@solana/codecs-numbers" "2.0.0-preview.4" + "@solana/codecs-strings" "2.0.0-preview.4" + "@solana/options" "2.0.0-preview.4" + +"@solana/codecs@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-rc.1.tgz#146dc5db58bd3c28e04b4c805e6096c2d2a0a875" + integrity sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-data-structures" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/codecs-strings" "2.0.0-rc.1" + "@solana/options" "2.0.0-rc.1" + +"@solana/errors@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.2.tgz#e0ea8b008c5c02528d5855bc1903e5e9bbec322e" + integrity sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA== + dependencies: + chalk "^5.3.0" + commander "^12.0.0" + +"@solana/errors@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.4.tgz#056ba76b6dd900dafa70117311bec3aef0f5250b" + integrity sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA== + dependencies: + chalk "^5.3.0" + commander "^12.1.0" + +"@solana/errors@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-rc.1.tgz#3882120886eab98a37a595b85f81558861b29d62" + integrity sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ== + dependencies: + chalk "^5.3.0" + commander "^12.1.0" + +"@solana/options@2.0.0-preview.2": + version "2.0.0-preview.2" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-preview.2.tgz#13ff008bf43a5056ef9a091dc7bb3f39321e867e" + integrity sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w== + dependencies: + "@solana/codecs-core" "2.0.0-preview.2" + "@solana/codecs-numbers" "2.0.0-preview.2" + +"@solana/options@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-preview.4.tgz#212d35d1da87c7efb13de4d3569ad9eb070f013d" + integrity sha512-tv2O/Frxql/wSe3jbzi5nVicIWIus/BftH+5ZR+r9r3FO0/htEllZS5Q9XdbmSboHu+St87584JXeDx3xm4jaA== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/codecs-data-structures" "2.0.0-preview.4" + "@solana/codecs-numbers" "2.0.0-preview.4" + "@solana/codecs-strings" "2.0.0-preview.4" + "@solana/errors" "2.0.0-preview.4" + +"@solana/options@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-rc.1.tgz#06924ba316dc85791fc46726a51403144a85fc4d" + integrity sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-data-structures" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/codecs-strings" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/spl-token-group@^0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.4.tgz#4f45d9526c96a33b9a1929a264d0aa21c7e38a2d" + integrity sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw== + dependencies: + "@solana/codecs" "2.0.0-preview.2" + "@solana/spl-type-length-value" "0.1.0" + +"@solana/spl-token-group@^0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.5.tgz#f955dcca782031c85e862b2b46878d1bb02db6c2" + integrity sha512-CLJnWEcdoUBpQJfx9WEbX3h6nTdNiUzswfFdkABUik7HVwSNA98u5AYvBVK2H93d9PGMOHAak2lHW9xr+zAJGQ== + dependencies: + "@solana/codecs" "2.0.0-preview.4" + "@solana/spl-type-length-value" "0.1.0" + +"@solana/spl-token-group@^0.0.7": + version "0.0.7" + resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.7.tgz#83c00f0cd0bda33115468cd28b89d94f8ec1fee4" + integrity sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug== + dependencies: + "@solana/codecs" "2.0.0-rc.1" + +"@solana/spl-token-metadata@^0.1.2", "@solana/spl-token-metadata@^0.1.3", "@solana/spl-token-metadata@^0.1.4", "@solana/spl-token-metadata@^0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@solana/spl-token-metadata/-/spl-token-metadata-0.1.6.tgz#d240947aed6e7318d637238022a7b0981b32ae80" + integrity sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA== + dependencies: + "@solana/codecs" "2.0.0-rc.1" + +"@solana/spl-token@0.4.6": + version "0.4.6" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.6.tgz#eb44e5080ea7b6fc976abcb39457223211bd9076" + integrity sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-group" "^0.0.4" + "@solana/spl-token-metadata" "^0.1.4" + buffer "^6.0.3" + +"@solana/spl-token@0.4.8": + version "0.4.8" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.8.tgz#a84e4131af957fa9fbd2727e5fc45dfbf9083586" + integrity sha512-RO0JD9vPRi4LsAbMUdNbDJ5/cv2z11MGhtAvFeRzT4+hAGE/FUzRi0tkkWtuCfSIU3twC6CtmAihRp/+XXjWsA== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-group" "^0.0.5" + "@solana/spl-token-metadata" "^0.1.3" + buffer "^6.0.3" + +"@solana/spl-token@^0.3.10": + version "0.3.11" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.11.tgz#cdc10f9472b29b39c8983c92592cadd06627fb9a" + integrity sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-metadata" "^0.1.2" + buffer "^6.0.3" + +"@solana/spl-token@^0.4.8", "@solana/spl-token@^0.4.9": + version "0.4.9" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.9.tgz#24d032d2935f237925c3b058ba6bb1e1ece5428c" + integrity sha512-g3wbj4F4gq82YQlwqhPB0gHFXfgsC6UmyGMxtSLf/BozT/oKd59465DbnlUK8L8EcimKMavxsVAMoLcEdeCicg== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-group" "^0.0.7" + "@solana/spl-token-metadata" "^0.1.6" + buffer "^6.0.3" + +"@solana/spl-type-length-value@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz#b5930cf6c6d8f50c7ff2a70463728a4637a2f26b" + integrity sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA== + dependencies: + buffer "^6.0.3" + +"@solana/web3.js@1.95.3": + version "1.95.3" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.3.tgz#70b5f4d76823f56b5af6403da51125fffeb65ff3" + integrity sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og== + dependencies: + "@babel/runtime" "^7.25.0" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.0" + bigint-buffer "^1.1.5" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.1" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + +"@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.48.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.95.1", "@solana/web3.js@^1.95.3", "@solana/web3.js@^1.95.4": + version "1.98.0" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.0.tgz#21ecfe8198c10831df6f0cfde7f68370d0405917" + integrity sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA== + dependencies: + "@babel/runtime" "^7.25.0" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.0" + bigint-buffer "^1.1.5" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.1" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + +"@swc/helpers@^0.5.11": + version "0.5.15" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7" + integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g== + dependencies: + tslib "^2.8.0" + +"@tiplink/api@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@tiplink/api/-/api-0.3.1.tgz#c10c4c8f51bb2c4ecc0215b8b9f3704a866fb7f4" + integrity sha512-HjnXethjKOHTYT0IP1BewlMS7wZJ+hsoDgRa6jA1cNvxvwQjE1WHOyvOUPpAi+DJDw4P4/omFtyHr7dwLfnB/g== + dependencies: + "@coral-xyz/anchor" "^0.29.0" + "@solana/spl-token" "^0.3.10" + "@solana/web3.js" "^1.48.0" + bs58 "^5.0.0" + libsodium "^0.7.11" + libsodium-wrappers-sumo "^0.7.11" + nanoid "^3.3.6" + sodium-plus "^0.9.0" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + typescript "^4.7.4" + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/bn.js@^5.1.5": + version "5.1.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.6.tgz#9ba818eec0c85e4d3c679518428afdf611d03203" + integrity sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w== + dependencies: + "@types/node" "*" + +"@types/chai@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.0.1.tgz#2c3705555cf11f5f59c836a84c44afcfe4e5689d" + integrity sha512-5T8ajsg3M/FOncpLYW7sdOcD6yf4+722sze/tc4KQV0P8Z2rAr3SAuHCIkYmYpt8VbcQlnz8SxlOlPQYefe4cA== + dependencies: + "@types/deep-eql" "*" + +"@types/connect@^3.4.33": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/deep-eql@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/deep-eql/-/deep-eql-4.0.2.tgz#334311971d3a07121e7eb91b684a605e7eea9cbd" + integrity sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== + +"@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + +"@types/hast@^3.0.0", "@types/hast@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" + integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== + dependencies: + "@types/unist" "*" + +"@types/json-schema@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/mdast@^4.0.0": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" + integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== + dependencies: + "@types/unist" "*" + +"@types/node-fetch@^2.6.4": + version "2.6.12" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.12.tgz#8ab5c3ef8330f13100a7479e2cd56d3386830a03" + integrity sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA== + dependencies: + "@types/node" "*" + form-data "^4.0.0" + +"@types/node@*", "@types/node@^22.9.0": + version "22.10.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.2.tgz#a485426e6d1fdafc7b0d4c7b24e2c78182ddabb9" + integrity sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ== + dependencies: + undici-types "~6.20.0" + +"@types/node@^12.12.54": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/node@^18.11.18": + version "18.19.68" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.68.tgz#f4f10d9927a7eaf3568c46a6d739cc0967ccb701" + integrity sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw== + dependencies: + undici-types "~5.26.4" + +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/unist@*", "@types/unist@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" + integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== + +"@types/uuid@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-10.0.0.tgz#e9c07fe50da0f53dc24970cca94d619ff03f6f6d" + integrity sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ== + +"@types/uuid@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +"@types/ws@^8.2.2", "@types/ws@^8.5.3": + version "8.5.13" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.13.tgz#6414c280875e2691d0d1e080b05addbf5cb91e20" + integrity sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA== + dependencies: + "@types/node" "*" + +"@typescript-eslint/eslint-plugin@^7.0.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#b16d3cf3ee76bf572fdf511e79c248bdec619ea3" + integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/type-utils" "7.18.0" + "@typescript-eslint/utils" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/parser@^7.0.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.18.0.tgz#83928d0f1b7f4afa974098c64b5ce6f9051f96a0" + integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg== + dependencies: + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" + integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA== + dependencies: + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + +"@typescript-eslint/type-utils@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b" + integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA== + dependencies: + "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/utils" "7.18.0" + debug "^4.3.4" + ts-api-utils "^1.3.0" + +"@typescript-eslint/types@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" + integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== + +"@typescript-eslint/typescript-estree@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931" + integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== + dependencies: + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/utils@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" + integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" + +"@typescript-eslint/visitor-keys@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7" + integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== + dependencies: + "@typescript-eslint/types" "7.18.0" + eslint-visitor-keys "^3.4.3" + +"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.1.tgz#28fa185f67daaf7b7a1a8c1d445132c5d979f8bd" + integrity sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA== + +JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1, acorn@^8.9.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + +agentkeepalive@^4.2.1, agentkeepalive@^4.5.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" + integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== + dependencies: + humanize-ms "^1.2.1" + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +ansicolors@^0.3.2, ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +assert@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" + integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== + dependencies: + call-bind "^1.0.2" + is-nan "^1.3.2" + object-is "^1.1.5" + object.assign "^4.1.4" + util "^0.12.5" + +assertion-error@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" + integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +axios-retry@^3.8.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-3.9.1.tgz#c8924a8781c8e0a2c5244abf773deb7566b3830d" + integrity sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w== + dependencies: + "@babel/runtime" "^7.15.4" + is-retry-allowed "^2.2.0" + +axios@^1.1.3, axios@^1.5.1: + version "1.7.9" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a" + integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2: + version "3.0.10" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75" + integrity sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ== + dependencies: + safe-buffer "^5.0.1" + +base-x@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== + +base-x@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-5.0.0.tgz#6d835ceae379130e1a4cb846a70ac4746f28ea9b" + integrity sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ== + +base64-js@^1.3.1, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +big-integer@^1.6.51: + version "1.6.52" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" + integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== + +big.js@^6.2.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.2.tgz#be3bb9ac834558b53b099deef2a1d06ac6368e1a" + integrity sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ== + +bigint-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" + integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== + dependencies: + bindings "^1.3.0" + +bignumber.js@^9.0.1: + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + +bindings@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bintrees@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" + integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== + +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +borsh@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-1.0.0.tgz#b564c8cc8f7a91e3772b9aef9e07f62b84213c1f" + integrity sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ== + +borsh@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-2.0.0.tgz#042a9f109565caac3c6a21297cd8c0ae8db3149d" + integrity sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg== + +borsh@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +bs58@5.0.0, bs58@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== + dependencies: + base-x "^4.0.0" + +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-6.0.0.tgz#a2cda0130558535dd281a2f8697df79caaf425d8" + integrity sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw== + dependencies: + base-x "^5.0.0" + +buffer-layout@^1.2.0, buffer-layout@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.2.tgz#b9814e7c7235783085f9ca4966a0cfff112259d5" + integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA== + +buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.9" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.9.tgz#6e81739ad48a95cad45a279588e13e95e24a800a" + integrity sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw== + dependencies: + node-gyp-build "^4.3.0" + +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840" + integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.7, call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.3.tgz#41cfd032b593e39176a71533ab4f384aa04fd681" + integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA== + dependencies: + call-bind-apply-helpers "^1.0.1" + get-intrinsic "^1.2.6" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@6, camelcase@^6.2.1, camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + +chai@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.2.tgz#3afbc340b994ae3610ca519a6c70ace77ad4378d" + integrity sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw== + dependencies: + assertion-error "^2.0.1" + check-error "^2.1.1" + deep-eql "^5.0.1" + loupe "^3.1.0" + pathval "^2.0.0" + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.3.0, chalk@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" + integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== + +character-entities-html4@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" + integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== + +character-entities-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + +check-error@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" + integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +comma-separated-tokens@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" + integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== + +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^12.0.0, commander@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-fetch@^3.1.5: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.2.0.tgz#34e9192f53bc757d6614304d9e5e6fb4edb782e3" + integrity sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q== + dependencies: + node-fetch "^2.7.0" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-hash@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" + integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== + +dayjs@^1.11.5: + version "1.11.13" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" + integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== + +debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + dependencies: + ms "^2.1.3" + +decamelize@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decimal.js-light@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" + integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== + +decimal.js@^10.4.3: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + +deep-eql@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" + integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.1.3, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +devlop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" + integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== + dependencies: + dequal "^2.0.0" + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv@^16.4.5: + version "16.4.7" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== + +dunder-proto@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +emoji-regex-xs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz#e8af22e5d9dbd7f7f22d280af3d19d2aab5b0724" + integrity sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + dependencies: + es-errors "^1.3.0" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== + +eslint-plugin-prettier@^5.1.3: + version "5.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz#d1c8f972d8f60e414c25465c163d16f209411f95" + integrity sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw== + dependencies: + prettier-linter-helpers "^1.0.0" + synckit "^0.9.1" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-scope@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== + +eslint@^8.56.0: + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +eslint@^9.17.0: + version "9.17.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.17.0.tgz#faa1facb5dd042172fdc520106984b5c2421bb0c" + integrity sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.19.0" + "@eslint/core" "^0.9.0" + "@eslint/eslintrc" "^3.2.0" + "@eslint/js" "9.17.0" + "@eslint/plugin-kit" "^0.2.3" + "@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.4" + chalk "^4.0.0" + cross-spawn "^7.0.6" + debug "^4.3.2" + escape-string-regexp "^4.0.0" + eslint-scope "^8.2.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" + esquery "^1.5.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + 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.3" + +espree@^10.0.1, espree@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== + dependencies: + acorn "^8.14.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2, esquery@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@^4.0.4, eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-stable-stringify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== + +fastq@^1.6.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.18.0.tgz#d631d7e25faffea81887fe5ea8c9010e1b36fee0" + integrity sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== + dependencies: + flat-cache "^4.0.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-process@^1.4.7: + version "1.4.8" + resolved "https://registry.yarnpkg.com/find-process/-/find-process-1.4.8.tgz#46a83cbf4e4fbac364cbab650bf8dd61224d4c05" + integrity sha512-W2PIdgXfhYeIlTzGiDyGJhjslZcwQCRcSw6plgyLu3CFk1PhQrKkTbQ5jkJ2NhOabMwETTrhl7c+xBcQ7B2jRg== + dependencies: + 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" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.4" + +flatted@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27" + integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA== + +follow-redirects@^1.15.6: + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data-encoder@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.2.tgz#1f1ae3dccf58ed4690b86d87e4f57c654fbab040" + integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A== + +form-data@^4.0.0, form-data@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +formdata-node@^4.3.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-4.4.1.tgz#23f6a5cb9cb55315912cbec4ff7b0f59bbd191e2" + integrity sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ== + dependencies: + node-domexception "1.0.0" + web-streams-polyfill "4.0.0-beta.3" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +get-intrinsic@^1.2.4, get-intrinsic@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.6.tgz#43dd3dd0e7b49b82b2dfcad10dc824bf7fc265d5" + integrity sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA== + dependencies: + call-bind-apply-helpers "^1.0.1" + dunder-proto "^1.0.0" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + function-bind "^1.1.2" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.0.0" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.3.7: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.0.tgz#6031df0d7b65eaa1ccb9b29b5ced16cea658e77e" + integrity sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^4.0.1" + minimatch "^10.0.0" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^2.0.0" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +graceful-fs@^4.1.6: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +graphemesplit@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/graphemesplit/-/graphemesplit-2.4.4.tgz#6d325c61e928efdaec2189f54a9b87babf89b75a" + integrity sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w== + dependencies: + js-base64 "^3.6.0" + unicode-trie "^2.0.0" + +groq-sdk@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/groq-sdk/-/groq-sdk-0.5.0.tgz#8eefea81c3709e815c96dffa941200e85a50cf19" + integrity sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw== + dependencies: + "@types/node" "^18.11.18" + "@types/node-fetch" "^2.6.4" + abort-controller "^3.0.0" + agentkeepalive "^4.2.1" + form-data-encoder "1.7.2" + formdata-node "^4.3.2" + node-fetch "^2.6.7" + web-streams-polyfill "^3.2.1" + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hash.js@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hast-util-to-html@^9.0.4: + version "9.0.4" + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz#d689c118c875aab1def692c58603e34335a0f5c5" + integrity sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + ccount "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-whitespace "^3.0.0" + html-void-elements "^3.0.0" + mdast-util-to-hast "^13.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + stringify-entities "^4.0.0" + zwitch "^2.0.4" + +hast-util-whitespace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" + integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== + dependencies: + "@types/hast" "^3.0.0" + +html-void-elements@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" + integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0, ignore@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ipaddr.js@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== + +is-arguments@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.2.0.tgz#ad58c6aecf563b78ef2bf04df540da8f5d7d8e1b" + integrity sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA== + dependencies: + call-bound "^1.0.2" + has-tostringtag "^1.0.2" + +is-callable@^1.1.3: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-nan@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-retry-allowed@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d" + integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg== + +is-typed-array@^1.1.3: + version "1.1.15" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jackspeak@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.0.2.tgz#11f9468a3730c6ff6f56823a820d7e3be9bef015" + integrity sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw== + dependencies: + "@isaacs/cliui" "^8.0.2" + +jayson@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.3.tgz#db9be2e4287d9fef4fc05b5fe367abe792c2eee8" + integrity sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + uuid "^8.3.2" + ws "^7.5.10" + +js-base64@^3.6.0: + version "3.7.7" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.7.tgz#e51b84bf78fbf5702b9541e2cb7bfcb893b43e79" + integrity sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw== + +js-sha256@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.0.tgz#256a921d9292f7fe98905face82e367abaca9576" + integrity sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q== + +js-sha256@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" + integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== + +js-tiktoken@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/js-tiktoken/-/js-tiktoken-1.0.16.tgz#b56800a2dbf21f717123ec49f339fde8544af36e" + integrity sha512-nUVdO5k/M9llWpiaZlBBDdtmr6qWXwSD6fgaDu2zM8UP+OXxx9V37lFkI6w0/1IuaDx7WffZ37oYd9KvcWKElg== + dependencies: + base64-js "^1.5.1" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +jsonpointer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== + +keccak256@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/keccak256/-/keccak256-1.0.6.tgz#dd32fb771558fed51ce4e45a035ae7515573da58" + integrity sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw== + dependencies: + bn.js "^5.2.0" + buffer "^6.0.3" + keccak "^3.0.2" + +keccak@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" + integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^4.5.3, keyv@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +langchain@^0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/langchain/-/langchain-0.3.8.tgz#285bb291a686daf063717c12e06fda76335b9270" + integrity sha512-EiAHFgBdThuXFmIx9j81wjdPItpRsw0Ck4r5dyhB74gyhehRGna/UK2CTqeKVnIUM/f4g4JbxUgAU4voXljDMw== + dependencies: + "@langchain/openai" ">=0.1.0 <0.4.0" + "@langchain/textsplitters" ">=0.0.0 <0.2.0" + js-tiktoken "^1.0.12" + js-yaml "^4.1.0" + jsonpointer "^5.0.1" + langsmith "^0.2.8" + openapi-types "^12.1.3" + p-retry "4" + uuid "^10.0.0" + yaml "^2.2.1" + zod "^3.22.4" + zod-to-json-schema "^3.22.3" + +langsmith@^0.2.8: + version "0.2.14" + resolved "https://registry.yarnpkg.com/langsmith/-/langsmith-0.2.14.tgz#9a186af45730b1e14bd448ac34a7928b633ea6ae" + integrity sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig== + dependencies: + "@types/uuid" "^10.0.0" + commander "^10.0.1" + p-queue "^6.6.2" + p-retry "4" + semver "^7.6.3" + uuid "^10.0.0" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +libsodium-sumo@^0.7.15: + version "0.7.15" + resolved "https://registry.yarnpkg.com/libsodium-sumo/-/libsodium-sumo-0.7.15.tgz#91c1d863fe3fbce6d6b9db1aadaa622733a1d007" + integrity sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw== + +libsodium-wrappers-sumo@^0.7.11: + version "0.7.15" + resolved "https://registry.yarnpkg.com/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.15.tgz#0ef2a99b4b17e8385aa7e6850593660dbaf5fb40" + integrity sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA== + dependencies: + libsodium-sumo "^0.7.15" + +libsodium-wrappers@^0.7.6: + version "0.7.15" + resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.15.tgz#53f13e483820272a3d55b23be2e34402ac988055" + integrity sha512-E4anqJQwcfiC6+Yrl01C1m8p99wEhLmJSs0VQqST66SbQXXBoaJY0pF4BNjRYa/sOQAxx6lXAaAFIlx+15tXJQ== + dependencies: + libsodium "^0.7.15" + +libsodium@^0.7.11, libsodium@^0.7.15: + version "0.7.15" + resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.15.tgz#ac284e3dcb1c29ae9526c5581cdada6a072f6d20" + integrity sha512-sZwRknt/tUpE2AwzHq3jEyUU5uvIZHtSssktXq7owd++3CSgn8RGrv6UZJJBpP7+iBghBqe7Z06/2M31rI2NKw== + +linkify-it@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" + integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== + dependencies: + uc.micro "^2.0.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loglevel@^1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.2.tgz#c2e028d6c757720107df4e64508530db6621ba08" + integrity sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg== + +loupe@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.2.tgz#c86e0696804a02218f2206124c45d8b15291a240" + integrity sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg== + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^11.0.0: + version "11.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.0.2.tgz#fbd8e7cf8211f5e7e5d91905c415a3f55755ca39" + integrity sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA== + +lunr@^2.3.9: + version "2.3.9" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" + integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +markdown-it@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45" + integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== + dependencies: + argparse "^2.0.1" + entities "^4.4.0" + linkify-it "^5.0.0" + mdurl "^2.0.0" + punycode.js "^2.3.1" + uc.micro "^2.1.0" + +math-intrinsics@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +mdast-util-to-hast@^13.0.0: + version "13.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz#5ca58e5b921cc0a3ded1bc02eed79a4fe4fe41f4" + integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA== + dependencies: + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + "@ungap/structured-clone" "^1.0.0" + devlop "^1.0.0" + micromark-util-sanitize-uri "^2.0.0" + trim-lines "^3.0.0" + unist-util-position "^5.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + +mdurl@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" + integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromark-util-character@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" + integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-encode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" + integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== + +micromark-util-sanitize-uri@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" + integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-symbol "^2.0.0" + +micromark-util-symbol@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" + integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== + +micromark-util-types@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.1.tgz#a3edfda3022c6c6b55bfb049ef5b75d70af50709" + integrity sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ== + +micromatch@^4.0.4: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b" + integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.4, minimatch@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +ms@^2.0.0, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mustache@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" + integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== + +nanoid@^3.3.6: + version "3.3.8" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" + integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-domexception@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + +node-fetch@^2.6.7, node-fetch@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.8.4" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" + integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== + +object-is@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.7" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" + integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + has-symbols "^1.1.0" + object-keys "^1.1.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +oniguruma-to-es@0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/oniguruma-to-es/-/oniguruma-to-es-0.8.1.tgz#a18767531ce562c0bfafa357a8cca0003c05323c" + integrity sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw== + dependencies: + emoji-regex-xs "^1.0.0" + regex "^5.0.2" + regex-recursion "^5.0.0" + +openai@^4.75.0, openai@^4.77.0: + version "4.77.0" + resolved "https://registry.yarnpkg.com/openai/-/openai-4.77.0.tgz#228f2d43ffa79ae9d8b5d4155e965da82e5ac330" + integrity sha512-WWacavtns/7pCUkOWvQIjyOfcdr9X+9n9Vvb0zFeKVDAqwCMDHB+iSr24SVaBAhplvSG6JrRXFpcNM9gWhOGIw== + dependencies: + "@types/node" "^18.11.18" + "@types/node-fetch" "^2.6.4" + abort-controller "^3.0.0" + agentkeepalive "^4.2.1" + form-data-encoder "1.7.2" + formdata-node "^4.3.2" + node-fetch "^2.6.7" + +openapi-types@^12.1.3: + version "12.1.3" + resolved "https://registry.yarnpkg.com/openapi-types/-/openapi-types-12.1.3.tgz#471995eb26c4b97b7bd356aacf7b91b73e777dd3" + integrity sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw== + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-queue@^6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + +p-retry@4: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +pako@^0.2.5: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== + +pako@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-scurry@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" + integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg== + dependencies: + lru-cache "^11.0.0" + minipass "^7.1.2" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" + integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== + +percentile@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/percentile/-/percentile-1.6.0.tgz#c847b35a4d0a4e52235e16742aa3f317ce957293" + integrity sha512-8vSyjdzwxGDHHwH+cSGch3A9Uj2On3UpgOWxWXMKwUvoAbnujx6DaqmV1duWXNiH/oEWpyVd6nSQccix6DM3Ng== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +poly1305-js@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/poly1305-js/-/poly1305-js-0.4.4.tgz#081923c9eab70cbc51453b48b2aad85816b15855" + integrity sha512-5B6/S+vg5AOr66wJDkh5LOpU/F3EKANDy4VXKsNZLXea1uCy6CiOWOZ3VhcC0nYdhE7vJUMcLxqcVlrv2g/+Rg== + dependencies: + big-integer "^1.6.51" + +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.5.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +prettier@^3.2.5: + version "3.4.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" + integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== + +prom-client@^15.1.3: + version "15.1.3" + resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-15.1.3.tgz#69fa8de93a88bc9783173db5f758dc1c69fa8fc2" + integrity sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g== + dependencies: + "@opentelemetry/api" "^1.4.0" + tdigest "^0.1.1" + +property-information@^6.0.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec" + integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +punycode.js@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" + integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== + +punycode@^2.1.0, punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regex-recursion@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/regex-recursion/-/regex-recursion-5.1.1.tgz#5a73772d18adbf00f57ad097bf54171b39d78f8b" + integrity sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w== + dependencies: + regex "^5.1.1" + regex-utilities "^2.3.0" + +regex-utilities@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/regex-utilities/-/regex-utilities-2.3.0.tgz#87163512a15dce2908cf079c8960d5158ff43280" + integrity sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng== + +regex@^5.0.2, regex@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/regex/-/regex-5.1.1.tgz#cf798903f24d6fe6e531050a36686e082b29bd03" + integrity sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw== + dependencies: + regex-utilities "^2.3.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@^5.0.10: + version "5.0.10" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c" + integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== + dependencies: + glob "^10.3.7" + +rimraf@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-6.0.1.tgz#ffb8ad8844dd60332ab15f52bc104bc3ed71ea4e" + integrity sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A== + dependencies: + glob "^11.0.0" + package-json-from-dist "^1.0.0" + +rpc-websockets@^9.0.2: + version "9.0.4" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.4.tgz#9d8ee82533b5d1e13d9ded729e3e38d0d8fa083f" + integrity sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ== + dependencies: + "@swc/helpers" "^0.5.11" + "@types/uuid" "^8.3.4" + "@types/ws" "^8.2.2" + buffer "^6.0.3" + eventemitter3 "^5.0.1" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@^5.0.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +semver@^7.3.7, semver@^7.6.0, semver@^7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +set-function-length@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shiki@^1.16.2: + version "1.24.4" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-1.24.4.tgz#fc468ded0cfd51d7d9fbcf7606467a4dc020307c" + integrity sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw== + dependencies: + "@shikijs/core" "1.24.4" + "@shikijs/engine-javascript" "1.24.4" + "@shikijs/engine-oniguruma" "1.24.4" + "@shikijs/types" "1.24.4" + "@shikijs/vscode-textmate" "^9.3.1" + "@types/hast" "^3.0.4" + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +sodium-plus@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/sodium-plus/-/sodium-plus-0.9.0.tgz#39f341b21203d0c0044ea754b2b7efafa9d623f9" + integrity sha512-WWKxrd81qDL7C1A10yxNmZ135yovEZuIRnZ/BIf/FcajYBupbKbPdgzwlusPHLVxkMDDamcarq9PxxRBUSqpCw== + dependencies: + buffer "^5.6.0" + libsodium-wrappers "^0.7.6" + poly1305-js "^0.4.2" + typedarray-to-buffer "^3.1.5" + xsalsa20 "^1.1.0" + +space-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== + +spok@^1.4.3: + version "1.5.5" + resolved "https://registry.yarnpkg.com/spok/-/spok-1.5.5.tgz#a51f7f290a53131d7b7a922dfedc461dda0aed72" + integrity sha512-IrJIXY54sCNFASyHPOY+jEirkiJ26JDqsGiI0Dvhwcnkl0PEWi1PSsrkYql0rzDw8LFVTcA7rdUCAJdE2HE+2Q== + dependencies: + ansicolors "~0.3.2" + find-process "^1.4.7" + +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +stringify-entities@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3" + integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== + dependencies: + character-entities-html4 "^2.0.0" + character-entities-legacy "^3.0.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +superstruct@2.0.2, superstruct@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" + integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== + +superstruct@^0.15.4: + version "0.15.5" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" + integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +synckit@^0.9.1: + version "0.9.2" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.2.tgz#a3a935eca7922d48b9e7d6c61822ee6c3ae4ec62" + integrity sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw== + dependencies: + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" + +tdigest@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" + integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA== + dependencies: + bintrees "1.0.2" + +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +"through@>=2.2.7 <3": + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tiny-inflate@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" + integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== + +tiny-invariant@^1.3.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" + integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toformat@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/toformat/-/toformat-2.0.0.tgz#7a043fd2dfbe9021a4e36e508835ba32056739d8" + integrity sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ== + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + +ts-api-utils@^1.3.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" + integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== + +ts-log@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.7.tgz#4f4512144898b77c9984e91587076fcb8518688e" + integrity sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg== + +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^2.0.3, tslib@^2.6.2, tslib@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tweetnacl-util@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + +tweetnacl@1.0.3, tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedoc@^0.26.11, typedoc@^0.26.3: + version "0.26.11" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.26.11.tgz#124b43a5637b7f3237b8c721691b44738c5c9dc9" + integrity sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw== + dependencies: + lunr "^2.3.9" + markdown-it "^14.1.0" + minimatch "^9.0.5" + shiki "^1.16.2" + yaml "^2.5.1" + +typescript@^4.7.4: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +typescript@^5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" + integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== + +uc.micro@^2.0.0, uc.micro@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" + integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + +unicode-trie@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-2.0.0.tgz#8fd8845696e2e14a8b67d78fa9e0dd2cad62fec8" + integrity sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ== + dependencies: + pako "^0.2.5" + tiny-inflate "^1.0.0" + +unist-util-is@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" + integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-position@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" + integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-stringify-position@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" + integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== + dependencies: + "@types/unist" "^3.0.0" + +unist-util-visit-parents@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" + integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + +unist-util-visit@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" + integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== + dependencies: + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +uuid@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" + integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +vfile-message@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" + integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== + dependencies: + "@types/unist" "^3.0.0" + unist-util-stringify-position "^4.0.0" + +vfile@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.3.tgz#3652ab1c496531852bf55a6bac57af981ebc38ab" + integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q== + dependencies: + "@types/unist" "^3.0.0" + vfile-message "^4.0.0" + +web-streams-polyfill@4.0.0-beta.3: + version "4.0.0-beta.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz#2898486b74f5156095e473efe989dcf185047a38" + integrity sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug== + +web-streams-polyfill@^3.2.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-typed-array@^1.1.16, which-typed-array@^1.1.2: + version "1.1.18" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.18.tgz#df2389ebf3fbb246a71390e90730a9edb6ce17ad" + integrity sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.3" + for-each "^0.3.3" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^7.5.10: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@^8.18.0, ws@^8.5.0, ws@^8.6.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + +xsalsa20@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/xsalsa20/-/xsalsa20-1.2.0.tgz#e5a05cb26f8cef723f94a559102ed50c1b44c25c" + integrity sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w== + +yaml@^2.2.1, yaml@^2.5.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.1.tgz#42f2b1ba89203f374609572d5349fb8686500773" + integrity sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg== + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zod-to-json-schema@^3.22.3, zod-to-json-schema@^3.22.5: + version "3.24.1" + resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz#f08c6725091aadabffa820ba8d50c7ab527f227a" + integrity sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w== + +zod@^3.22.4, zod@^3.23.8: + version "3.24.1" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.1.tgz#27445c912738c8ad1e9de1bea0359fa44d9d35ee" + integrity sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A== + +zstddec@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/zstddec/-/zstddec-0.0.2.tgz#57e2f28dd1ff56b750e07d158a43f0611ad9eeb4" + integrity sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA== + +zwitch@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== From 98369a0912088646f73cc8c97f23dcdd67d12d48 Mon Sep 17 00:00:00 2001 From: Lautaro Date: Sun, 29 Dec 2024 22:17:30 -0300 Subject: [PATCH 21/94] Fix: change tcomp sdk for tensorswap sdk and fix functions --- package-lock.json | 2 +- package.json | 2 +- src/tools/tensor_trade.ts | 68 +++++++++++++++++++++++++-------------- 3 files changed, 46 insertions(+), 26 deletions(-) diff --git a/package-lock.json b/package-lock.json index dc9267d..e867482 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,7 +30,7 @@ "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", "@solana/spl-token": "^0.4.9", "@solana/web3.js": "^1.95.4", - "@tensor-oss/tcomp-sdk": "^6.0.0", + "@tensor-oss/tensorswap-sdk": "^4.5.0", "@tiplink/api": "^0.3.1", "bn.js": "^5.2.1", "bs58": "^6.0.0", diff --git a/package.json b/package.json index 5901c84..29a32e4 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", "@solana/spl-token": "^0.4.9", "@solana/web3.js": "^1.95.4", - "@tensor-oss/tcomp-sdk": "^6.0.0", + "@tensor-oss/tensorswap-sdk": "^4.5.0", "@tiplink/api": "^0.3.1", "bn.js": "^5.2.1", "bs58": "^6.0.0", diff --git a/src/tools/tensor_trade.ts b/src/tools/tensor_trade.ts index 66faaf7..d478fe1 100644 --- a/src/tools/tensor_trade.ts +++ b/src/tools/tensor_trade.ts @@ -1,9 +1,9 @@ import { SolanaAgentKit } from "../index"; -import { TCompSDK } from "@tensor-oss/tcomp-sdk"; +import { TensorSwapSDK } from "@tensor-oss/tensorswap-sdk"; import { PublicKey, Transaction } from "@solana/web3.js"; import { AnchorProvider, Wallet } from "@coral-xyz/anchor"; import { BN } from "bn.js"; -import { getAssociatedTokenAddress, createAssociatedTokenAccountInstruction, TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID, getAccount } from '@solana/spl-token'; +import { getAssociatedTokenAddress, TOKEN_PROGRAM_ID,getAccount } from '@solana/spl-token'; export async function listNFTForSale( agent: SolanaAgentKit, @@ -12,6 +12,10 @@ export async function listNFTForSale( expirySeconds?: number ): Promise { try { + if (!PublicKey.isOnCurve(nftMint)) { + throw new Error('Invalid NFT mint address'); + } + const mintInfo = await agent.connection.getAccountInfo(nftMint); if (!mintInfo) { throw new Error(`NFT mint ${nftMint.toString()} does not exist`); @@ -27,10 +31,12 @@ export async function listNFTForSale( agent.connection, ata ); - console.log("Token Account:", tokenAccount); + + if (!tokenAccount || tokenAccount.amount <= 0) { + throw new Error(`You don't own this NFT (${nftMint.toString()})`); + } } catch (e) { - console.error("Token account error:", e); - throw new Error(`No token account found for mint ${nftMint.toString()}`); + throw new Error(`No token account found for mint ${nftMint.toString()}. Make sure you own this NFT.`); } const provider = new AnchorProvider( @@ -39,15 +45,17 @@ export async function listNFTForSale( AnchorProvider.defaultOptions() ); - const tcompSdk = new TCompSDK({ provider }); + const tensorSwapSdk = new TensorSwapSDK({ provider }); const priceInLamports = new BN(price * 1e9); - const expiry = expirySeconds ? new BN(expirySeconds) : null; + const nftSource = await getAssociatedTokenAddress(nftMint, agent.wallet_address); - const { tx } = await tcompSdk.listCore({ - asset: nftMint, + const { tx } = await tensorSwapSdk.list({ + nftMint, + nftSource, owner: agent.wallet_address, - amount: priceInLamports, - expireInSec: expiry + price: priceInLamports, + tokenProgram: TOKEN_PROGRAM_ID, + payer: agent.wallet_address }); const transaction = new Transaction(); @@ -70,17 +78,20 @@ export async function buyNFT( AnchorProvider.defaultOptions() ); - const tcompSdk = new TCompSDK({ provider }); + const tensorSwapSdk = new TensorSwapSDK({ provider }); const maxPriceInLamports = new BN(maxPrice * 1e9); + const nftBuyerAcc = await getAssociatedTokenAddress(nftMint, agent.wallet_address); - const { tx } = await tcompSdk.buyCore({ - asset: nftMint, - buyer: agent.wallet_address, - maxAmount: maxPriceInLamports, + const { tx } = await tensorSwapSdk.buySingleListingT22({ + nftMint, + nftBuyerAcc, owner: agent.wallet_address, - rentDest: agent.wallet_address, - payer: agent.wallet_address, - makerBroker: null + buyer: agent.wallet_address, + maxPrice: maxPriceInLamports, + takerBroker: null, + compute: null, + priorityMicroLamports: null, + transferHook: null }); const transaction = new Transaction(); @@ -98,12 +109,21 @@ export async function cancelListing( AnchorProvider.defaultOptions() ); - const tcompSdk = new TCompSDK({ provider }); - - const { tx } = await tcompSdk.delistCore({ - asset: nftMint, + const tensorSwapSdk = new TensorSwapSDK({ provider }); + const nftDest = await getAssociatedTokenAddress( + nftMint, + agent.wallet_address, + false, + TOKEN_PROGRAM_ID + ); + + const { tx } = await tensorSwapSdk.delist({ + nftMint, + nftDest, owner: agent.wallet_address, - rentDest: agent.wallet_address + tokenProgram: TOKEN_PROGRAM_ID, + payer: agent.wallet_address, + authData: null }); const transaction = new Transaction(); From 46ff233f3591681b0ef883b02e756aa308f47693 Mon Sep 17 00:00:00 2001 From: aryan Date: Mon, 30 Dec 2024 07:04:06 +0530 Subject: [PATCH 22/94] chore: lint --- examples/persistance-agent/index.ts | 297 ++++++++++++++-------------- src/agent/index.ts | 12 +- src/langchain/index.ts | 42 ++-- src/tools/tensor_trade.ts | 80 ++++---- 4 files changed, 221 insertions(+), 210 deletions(-) diff --git a/examples/persistance-agent/index.ts b/examples/persistance-agent/index.ts index 21badd0..9ea1931 100644 --- a/examples/persistance-agent/index.ts +++ b/examples/persistance-agent/index.ts @@ -8,27 +8,30 @@ import * as readline from "readline"; import { PostgresSaver } from "@langchain/langgraph-checkpoint-postgres"; dotenv.config(); -const checkpointer = PostgresSaver.fromConnString( - process.env.POSTGRES_DB_URL! -); +const checkpointer = PostgresSaver.fromConnString(process.env.POSTGRES_DB_URL!); function validateEnvironment(): void { - const missingVars: string[] = []; - const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY", "POSTGRES_DB_URL"]; + const missingVars: string[] = []; + const requiredVars = [ + "OPENAI_API_KEY", + "RPC_URL", + "SOLANA_PRIVATE_KEY", + "POSTGRES_DB_URL", + ]; - 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); + 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(); @@ -36,37 +39,37 @@ validateEnvironment(); const WALLET_DATA_FILE = "wallet_data.txt"; async function initializeAgent() { - try { - const llm = new ChatOpenAI({ - modelName: "gpt-4o-mini", - temperature: 0.7, - }); + try { + const llm = new ChatOpenAI({ + modelName: "gpt-4o-mini", + temperature: 0.7, + }); - let walletDataStr: string | null = null; + 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); - } - } + 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, - process.env.OPENAI_API_KEY!, - ); + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL, + process.env.OPENAI_API_KEY!, + ); - const tools = createSolanaTools(solanaAgent); - await checkpointer.setup(); - const config = { configurable: { thread_id: "Solana Agent Kit!" } }; + const tools = createSolanaTools(solanaAgent); + await checkpointer.setup(); + const config = { configurable: { thread_id: "Solana Agent Kit!" } }; - const agent = createReactAgent({ - llm, - tools, - checkpointSaver: checkpointer, - messageModifier: ` + const agent = createReactAgent({ + llm, + tools, + checkpointSaver: checkpointer, + 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 @@ -75,146 +78,146 @@ async function initializeAgent() { 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; + 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..."); + 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."; + 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, - ); + 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); + 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."); + console.log("Starting chat mode... Type 'exit' to end."); - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - }); + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); - const question = (prompt: string): Promise => - new Promise((resolve) => rl.question(prompt, resolve)); + const question = (prompt: string): Promise => + new Promise((resolve) => rl.question(prompt, resolve)); - try { - while (true) { - const userInput = await question("\nPrompt: "); + try { + while (true) { + const userInput = await question("\nPrompt: "); - if (userInput.toLowerCase() === "exit") { - break; - } + if (userInput.toLowerCase() === "exit") { + break; + } - const stream = await agent.stream( - { messages: [new HumanMessage(userInput)] }, - config, - ); + 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("-------------------"); - } + 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); } - } catch (error) { - if (error instanceof Error) { - console.error("Error:", error.message); - } - process.exit(1); - } finally { - rl.close(); + 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 rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); - const question = (prompt: string): Promise => - new Promise((resolve) => rl.question(prompt, resolve)); + 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"); + 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(); + const choice = (await question("\nChoose a mode (enter number or name): ")) + .toLowerCase() + .trim(); - rl.close(); + rl.close(); - if (choice === "1" || choice === "chat") { - return "chat"; - } else if (choice === "2" || choice === "auto") { - return "auto"; - } - console.log("Invalid choice. Please try again."); + 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(); + 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 (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); - }); + main().catch((error) => { + console.error("Fatal error:", error); + process.exit(1); + }); } diff --git a/src/agent/index.ts b/src/agent/index.ts index 0433374..9fe2c17 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -356,21 +356,15 @@ export class SolanaAgentKit { async tensorListNFT( nftMint: PublicKey, price: number, - expirySeconds?: number ): Promise { - return listNFTForSale(this, nftMint, price, expirySeconds); + return listNFTForSale(this, nftMint, price); } - async tensorBuyNFT( - nftMint: PublicKey, - maxPrice: number - ): Promise { + async tensorBuyNFT(nftMint: PublicKey, maxPrice: number): Promise { return buyNFT(this, nftMint, maxPrice); } - async tensorCancelListing( - nftMint: PublicKey - ): Promise { + async tensorCancelListing(nftMint: PublicKey): Promise { return cancelListing(this, nftMint); } } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index ddf28c9..27e5cc1 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1332,8 +1332,7 @@ export class SolanaListNFTForSaleTool extends Tool { Inputs (input is a JSON string): nftMint: string, the mint address of the NFT (required) - price: number, price in SOL (required) - expirySeconds: number, expiry time in seconds (optional)`; + price: number, price in SOL (required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -1342,25 +1341,26 @@ export class SolanaListNFTForSaleTool extends Tool { protected async _call(input: string): Promise { try { const parsedInput = JSON.parse(input); - + // Validate NFT ownership first - const nftAccount = await this.solanaKit.connection.getTokenAccountsByOwner( - this.solanaKit.wallet_address, - { mint: new PublicKey(parsedInput.nftMint) } - ); - + const nftAccount = + await this.solanaKit.connection.getTokenAccountsByOwner( + this.solanaKit.wallet_address, + { mint: new PublicKey(parsedInput.nftMint) }, + ); + if (nftAccount.value.length === 0) { return JSON.stringify({ status: "error", - message: "NFT not found in wallet. Please make sure you own this NFT.", - code: "NFT_NOT_FOUND" + message: + "NFT not found in wallet. Please make sure you own this NFT.", + code: "NFT_NOT_FOUND", }); } const tx = await this.solanaKit.tensorListNFT( new PublicKey(parsedInput.nftMint), parsedInput.price, - parsedInput.expirySeconds ); return JSON.stringify({ @@ -1368,13 +1368,13 @@ export class SolanaListNFTForSaleTool extends Tool { message: "NFT listed for sale successfully", transaction: tx, price: parsedInput.price, - nftMint: parsedInput.nftMint + nftMint: parsedInput.nftMint, }); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -1395,10 +1395,10 @@ export class SolanaBuyNFTTool extends Tool { protected async _call(input: string): Promise { try { const parsedInput = JSON.parse(input); - + const tx = await this.solanaKit.tensorBuyNFT( new PublicKey(parsedInput.nftMint), - parsedInput.maxPrice + parsedInput.maxPrice, ); return JSON.stringify({ @@ -1406,13 +1406,13 @@ export class SolanaBuyNFTTool extends Tool { message: "NFT purchased successfully", transaction: tx, maxPrice: parsedInput.maxPrice, - nftMint: parsedInput.nftMint + nftMint: parsedInput.nftMint, }); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -1432,22 +1432,22 @@ export class SolanaCancelNFTListingTool extends Tool { protected async _call(input: string): Promise { try { const parsedInput = JSON.parse(input); - + const tx = await this.solanaKit.tensorCancelListing( - new PublicKey(parsedInput.nftMint) + new PublicKey(parsedInput.nftMint), ); return JSON.stringify({ status: "success", message: "NFT listing cancelled successfully", transaction: tx, - nftMint: parsedInput.nftMint + nftMint: parsedInput.nftMint, }); } catch (error: any) { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } diff --git a/src/tools/tensor_trade.ts b/src/tools/tensor_trade.ts index d478fe1..030536f 100644 --- a/src/tools/tensor_trade.ts +++ b/src/tools/tensor_trade.ts @@ -3,17 +3,20 @@ import { TensorSwapSDK } from "@tensor-oss/tensorswap-sdk"; import { PublicKey, Transaction } from "@solana/web3.js"; import { AnchorProvider, Wallet } from "@coral-xyz/anchor"; import { BN } from "bn.js"; -import { getAssociatedTokenAddress, TOKEN_PROGRAM_ID,getAccount } from '@solana/spl-token'; +import { + getAssociatedTokenAddress, + TOKEN_PROGRAM_ID, + getAccount, +} from "@solana/spl-token"; export async function listNFTForSale( agent: SolanaAgentKit, nftMint: PublicKey, price: number, - expirySeconds?: number ): Promise { try { if (!PublicKey.isOnCurve(nftMint)) { - throw new Error('Invalid NFT mint address'); + throw new Error("Invalid NFT mint address"); } const mintInfo = await agent.connection.getAccountInfo(nftMint); @@ -21,33 +24,32 @@ export async function listNFTForSale( throw new Error(`NFT mint ${nftMint.toString()} does not exist`); } - const ata = await getAssociatedTokenAddress( - nftMint, - agent.wallet_address - ); + const ata = await getAssociatedTokenAddress(nftMint, agent.wallet_address); try { - const tokenAccount = await getAccount( - agent.connection, - ata - ); - + const tokenAccount = await getAccount(agent.connection, ata); + if (!tokenAccount || tokenAccount.amount <= 0) { throw new Error(`You don't own this NFT (${nftMint.toString()})`); } } catch (e) { - throw new Error(`No token account found for mint ${nftMint.toString()}. Make sure you own this NFT.`); + throw new Error( + `No token account found for mint ${nftMint.toString()}. Make sure you own this NFT.`, + ); } const provider = new AnchorProvider( agent.connection, new Wallet(agent.wallet), - AnchorProvider.defaultOptions() + AnchorProvider.defaultOptions(), ); - + const tensorSwapSdk = new TensorSwapSDK({ provider }); const priceInLamports = new BN(price * 1e9); - const nftSource = await getAssociatedTokenAddress(nftMint, agent.wallet_address); + const nftSource = await getAssociatedTokenAddress( + nftMint, + agent.wallet_address, + ); const { tx } = await tensorSwapSdk.list({ nftMint, @@ -55,12 +57,15 @@ export async function listNFTForSale( owner: agent.wallet_address, price: priceInLamports, tokenProgram: TOKEN_PROGRAM_ID, - payer: agent.wallet_address + payer: agent.wallet_address, }); const transaction = new Transaction(); transaction.add(...tx.ixs); - return await agent.connection.sendTransaction(transaction, [agent.wallet, ...tx.extraSigners]); + return await agent.connection.sendTransaction(transaction, [ + agent.wallet, + ...tx.extraSigners, + ]); } catch (error: any) { console.error("Full error details:", error); throw error; @@ -70,17 +75,20 @@ export async function listNFTForSale( export async function buyNFT( agent: SolanaAgentKit, nftMint: PublicKey, - maxPrice: number + maxPrice: number, ): Promise { const provider = new AnchorProvider( agent.connection, new Wallet(agent.wallet), - AnchorProvider.defaultOptions() + AnchorProvider.defaultOptions(), ); - + const tensorSwapSdk = new TensorSwapSDK({ provider }); const maxPriceInLamports = new BN(maxPrice * 1e9); - const nftBuyerAcc = await getAssociatedTokenAddress(nftMint, agent.wallet_address); + const nftBuyerAcc = await getAssociatedTokenAddress( + nftMint, + agent.wallet_address, + ); const { tx } = await tensorSwapSdk.buySingleListingT22({ nftMint, @@ -91,42 +99,48 @@ export async function buyNFT( takerBroker: null, compute: null, priorityMicroLamports: null, - transferHook: null + transferHook: null, }); const transaction = new Transaction(); transaction.add(...tx.ixs); - return await agent.connection.sendTransaction(transaction, [agent.wallet, ...tx.extraSigners]); + return await agent.connection.sendTransaction(transaction, [ + agent.wallet, + ...tx.extraSigners, + ]); } export async function cancelListing( agent: SolanaAgentKit, - nftMint: PublicKey + nftMint: PublicKey, ): Promise { const provider = new AnchorProvider( agent.connection, new Wallet(agent.wallet), - AnchorProvider.defaultOptions() + AnchorProvider.defaultOptions(), ); - + const tensorSwapSdk = new TensorSwapSDK({ provider }); const nftDest = await getAssociatedTokenAddress( - nftMint, + nftMint, agent.wallet_address, false, - TOKEN_PROGRAM_ID + TOKEN_PROGRAM_ID, ); - + const { tx } = await tensorSwapSdk.delist({ nftMint, nftDest, owner: agent.wallet_address, tokenProgram: TOKEN_PROGRAM_ID, payer: agent.wallet_address, - authData: null + authData: null, }); const transaction = new Transaction(); transaction.add(...tx.ixs); - return await agent.connection.sendTransaction(transaction, [agent.wallet, ...tx.extraSigners]); -} \ No newline at end of file + return await agent.connection.sendTransaction(transaction, [ + agent.wallet, + ...tx.extraSigners, + ]); +} From 35781f4dc1e6e9d3bf23df88dea64c81287647a6 Mon Sep 17 00:00:00 2001 From: ARYAN <48391385+thearyanag@users.noreply.github.com> Date: Mon, 30 Dec 2024 07:05:39 +0530 Subject: [PATCH 23/94] fix: rm package-lock.json --- package-lock.json | 7584 --------------------------------------------- 1 file changed, 7584 deletions(-) delete mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index e867482..0000000 --- a/package-lock.json +++ /dev/null @@ -1,7584 +0,0 @@ -{ - "name": "solana-agent-kit", - "version": "1.3.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "solana-agent-kit", - "version": "1.3.0", - "license": "Apache-2.0", - "dependencies": { - "@bonfida/spl-name-service": "^3.0.7", - "@coral-xyz/anchor": "0.29", - "@langchain/core": "^0.3.26", - "@langchain/groq": "^0.1.2", - "@langchain/langgraph": "^0.2.34", - "@langchain/openai": "^0.3.13", - "@lightprotocol/compressed-token": "^0.17.1", - "@lightprotocol/stateless.js": "^0.17.1", - "@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-web3js-adapters": "^0.9.2", - "@onsol/tldparser": "^0.6.7", - "@orca-so/common-sdk": "0.6.4", - "@orca-so/whirlpools-sdk": "^0.13.12", - "@pythnetwork/price-service-client": "^1.9.0", - "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", - "@solana/spl-token": "^0.4.9", - "@solana/web3.js": "^1.95.4", - "@tensor-oss/tensorswap-sdk": "^4.5.0", - "@tiplink/api": "^0.3.1", - "bn.js": "^5.2.1", - "bs58": "^6.0.0", - "chai": "^5.1.2", - "decimal.js": "^10.4.3", - "dotenv": "^16.4.5", - "form-data": "^4.0.1", - "langchain": "^0.3.6", - "openai": "^4.75.0", - "typedoc": "^0.26.11" - }, - "devDependencies": { - "@types/bn.js": "^5.1.5", - "@types/chai": "^5.0.1", - "@types/node": "^22.9.0", - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.1.3", - "prettier": "^3.2.5", - "ts-node": "^10.9.2", - "typescript": "^5.7.2" - }, - "engines": { - "node": ">=23.1.0", - "pnpm": ">=8.0.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bonfida/sns-records": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@bonfida/sns-records/-/sns-records-0.0.1.tgz", - "integrity": "sha512-i28w9+BMFufhhpmLQCNx1CKKXTsEn+5RT18VFpPqdGO3sqaYlnUWC1m3wDpOvlzGk498dljgRpRo5wmcsnuEMg==", - "license": "MIT", - "dependencies": { - "borsh": "1.0.0", - "bs58": "5.0.0", - "buffer": "^6.0.3" - }, - "peerDependencies": { - "@solana/web3.js": "^1.87.3" - } - }, - "node_modules/@bonfida/sns-records/node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", - "license": "MIT" - }, - "node_modules/@bonfida/sns-records/node_modules/borsh": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", - "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", - "license": "Apache-2.0" - }, - "node_modules/@bonfida/sns-records/node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "license": "MIT", - "dependencies": { - "base-x": "^4.0.0" - } - }, - "node_modules/@bonfida/spl-name-service": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@bonfida/spl-name-service/-/spl-name-service-3.0.7.tgz", - "integrity": "sha512-okOLXhy+fQoyQ/sZgMleO5RrIZfTkWEoHMxWgUqg6RP/MTBlrKxlhKC6ymKn4UUe0C5s3Nb8A+3Ams7vX0nMDg==", - "license": "MIT", - "dependencies": { - "@bonfida/sns-records": "0.0.1", - "@noble/curves": "^1.4.0", - "@scure/base": "^1.1.6", - "@solana/spl-token": "0.4.6", - "borsh": "2.0.0", - "buffer": "^6.0.3", - "graphemesplit": "^2.4.4", - "ipaddr.js": "^2.2.0", - "punycode": "^2.3.1" - }, - "peerDependencies": { - "@solana/web3.js": "^1.87.3" - } - }, - "node_modules/@bonfida/spl-name-service/node_modules/@solana/codecs": { - "version": "2.0.0-preview.2", - "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-2.0.0-preview.2.tgz", - "integrity": "sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-preview.2", - "@solana/codecs-data-structures": "2.0.0-preview.2", - "@solana/codecs-numbers": "2.0.0-preview.2", - "@solana/codecs-strings": "2.0.0-preview.2", - "@solana/options": "2.0.0-preview.2" - } - }, - "node_modules/@bonfida/spl-name-service/node_modules/@solana/codecs-core": { - "version": "2.0.0-preview.2", - "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.0.0-preview.2.tgz", - "integrity": "sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg==", - "license": "MIT", - "dependencies": { - "@solana/errors": "2.0.0-preview.2" - } - }, - "node_modules/@bonfida/spl-name-service/node_modules/@solana/codecs-data-structures": { - "version": "2.0.0-preview.2", - "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.2.tgz", - "integrity": "sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-preview.2", - "@solana/codecs-numbers": "2.0.0-preview.2", - "@solana/errors": "2.0.0-preview.2" - } - }, - "node_modules/@bonfida/spl-name-service/node_modules/@solana/codecs-numbers": { - "version": "2.0.0-preview.2", - "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.2.tgz", - "integrity": "sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-preview.2", - "@solana/errors": "2.0.0-preview.2" - } - }, - "node_modules/@bonfida/spl-name-service/node_modules/@solana/codecs-strings": { - "version": "2.0.0-preview.2", - "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.2.tgz", - "integrity": "sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-preview.2", - "@solana/codecs-numbers": "2.0.0-preview.2", - "@solana/errors": "2.0.0-preview.2" - }, - "peerDependencies": { - "fastestsmallesttextencoderdecoder": "^1.0.22" - } - }, - "node_modules/@bonfida/spl-name-service/node_modules/@solana/errors": { - "version": "2.0.0-preview.2", - "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.0.0-preview.2.tgz", - "integrity": "sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA==", - "license": "MIT", - "dependencies": { - "chalk": "^5.3.0", - "commander": "^12.0.0" - }, - "bin": { - "errors": "bin/cli.js" - } - }, - "node_modules/@bonfida/spl-name-service/node_modules/@solana/options": { - "version": "2.0.0-preview.2", - "resolved": "https://registry.npmjs.org/@solana/options/-/options-2.0.0-preview.2.tgz", - "integrity": "sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-preview.2", - "@solana/codecs-numbers": "2.0.0-preview.2" - } - }, - "node_modules/@bonfida/spl-name-service/node_modules/@solana/spl-token": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.4.6.tgz", - "integrity": "sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==", - "license": "Apache-2.0", - "dependencies": { - "@solana/buffer-layout": "^4.0.0", - "@solana/buffer-layout-utils": "^0.2.0", - "@solana/spl-token-group": "^0.0.4", - "@solana/spl-token-metadata": "^0.1.4", - "buffer": "^6.0.3" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.91.6" - } - }, - "node_modules/@bonfida/spl-name-service/node_modules/@solana/spl-token-group": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@solana/spl-token-group/-/spl-token-group-0.0.4.tgz", - "integrity": "sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw==", - "license": "Apache-2.0", - "dependencies": { - "@solana/codecs": "2.0.0-preview.2", - "@solana/spl-type-length-value": "0.1.0" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.91.6" - } - }, - "node_modules/@cfworker/json-schema": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@cfworker/json-schema/-/json-schema-4.0.3.tgz", - "integrity": "sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==", - "license": "MIT" - }, - "node_modules/@coral-xyz/anchor": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.29.0.tgz", - "integrity": "sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==", - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "@coral-xyz/borsh": "^0.29.0", - "@noble/hashes": "^1.3.1", - "@solana/web3.js": "^1.68.0", - "bn.js": "^5.1.2", - "bs58": "^4.0.1", - "buffer-layout": "^1.2.2", - "camelcase": "^6.3.0", - "cross-fetch": "^3.1.5", - "crypto-hash": "^1.3.0", - "eventemitter3": "^4.0.7", - "pako": "^2.0.3", - "snake-case": "^3.0.4", - "superstruct": "^0.15.4", - "toml": "^3.0.0" - }, - "engines": { - "node": ">=11" - } - }, - "node_modules/@coral-xyz/anchor/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@coral-xyz/anchor/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@coral-xyz/borsh": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.29.0.tgz", - "integrity": "sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==", - "license": "Apache-2.0", - "dependencies": { - "bn.js": "^5.1.2", - "buffer-layout": "^1.2.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@solana/web3.js": "^1.68.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@ethereumjs/rlp": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", - "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", - "license": "MPL-2.0", - "bin": { - "rlp": "bin/rlp" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@ethereumjs/util": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", - "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/rlp": "^4.0.1", - "ethereum-cryptography": "^2.0.0", - "micro-ftch": "^0.3.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT" - }, - "node_modules/@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@langchain/core": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.26.tgz", - "integrity": "sha512-6RUQHEp8wv+JwtYIIEBYBzbLlcAQZFc7EDOgAM0ukExjh9HiXoJzoWpgMRRCrr/koIbtwXPJUqBprZK1I1CXHQ==", - "license": "MIT", - "dependencies": { - "@cfworker/json-schema": "^4.0.2", - "ansi-styles": "^5.0.0", - "camelcase": "6", - "decamelize": "1.2.0", - "js-tiktoken": "^1.0.12", - "langsmith": "^0.2.8", - "mustache": "^4.2.0", - "p-queue": "^6.6.2", - "p-retry": "4", - "uuid": "^10.0.0", - "zod": "^3.22.4", - "zod-to-json-schema": "^3.22.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@langchain/groq": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@langchain/groq/-/groq-0.1.2.tgz", - "integrity": "sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==", - "license": "MIT", - "dependencies": { - "@langchain/openai": "~0.3.0", - "groq-sdk": "^0.5.0", - "zod": "^3.22.4", - "zod-to-json-schema": "^3.22.5" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.2.21 <0.4.0" - } - }, - "node_modules/@langchain/langgraph": { - "version": "0.2.36", - "resolved": "https://registry.npmjs.org/@langchain/langgraph/-/langgraph-0.2.36.tgz", - "integrity": "sha512-zxk7ZCVxP0/Ut9785EiXCS7BE7sXd8cu943mcZUF2aNFUaQRTBbbiKpNdR3nb1+xO/B+HVktrJT2VFdkAywnng==", - "license": "MIT", - "dependencies": { - "@langchain/langgraph-checkpoint": "~0.0.13", - "@langchain/langgraph-sdk": "~0.0.21", - "uuid": "^10.0.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0" - } - }, - "node_modules/@langchain/langgraph-checkpoint": { - "version": "0.0.13", - "resolved": "https://registry.npmjs.org/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-0.0.13.tgz", - "integrity": "sha512-amdmBcNT8a9xP2VwcEWxqArng4gtRDcnVyVI4DsQIo1Aaz8e8+hH17zSwrUF3pt1pIYztngIfYnBOim31mtKMg==", - "license": "MIT", - "dependencies": { - "uuid": "^10.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.2.31 <0.4.0" - } - }, - "node_modules/@langchain/langgraph-sdk": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.32.tgz", - "integrity": "sha512-KQyM9kLO7T6AxwNrceajH7JOybP3pYpvUPnhiI2rrVndI1WyZUJ1eVC1e722BVRAPi6o+WcoTT4uMSZVinPOtA==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.15", - "p-queue": "^6.6.2", - "p-retry": "4", - "uuid": "^9.0.0" - } - }, - "node_modules/@langchain/langgraph-sdk/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@langchain/openai": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.3.16.tgz", - "integrity": "sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA==", - "license": "MIT", - "dependencies": { - "js-tiktoken": "^1.0.12", - "openai": "^4.77.0", - "zod": "^3.22.4", - "zod-to-json-schema": "^3.22.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.2.26 <0.4.0" - } - }, - "node_modules/@langchain/textsplitters": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@langchain/textsplitters/-/textsplitters-0.1.0.tgz", - "integrity": "sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==", - "license": "MIT", - "dependencies": { - "js-tiktoken": "^1.0.12" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.2.21 <0.4.0" - } - }, - "node_modules/@lightprotocol/compressed-token": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@lightprotocol/compressed-token/-/compressed-token-0.17.1.tgz", - "integrity": "sha512-493KCmZGw1BcHVRJaeRm8EEs+L7gX8dwY7JG13w2pfgOMtZXZ7Wxt261jFJxQJzRLTrUSlrbRJOmfW1+S1Y8SQ==", - "license": "Apache-2.0", - "dependencies": { - "@coral-xyz/anchor": "0.29.0", - "@solana/spl-token": "0.4.8", - "@solana/web3.js": "1.95.3", - "buffer": "6.0.3", - "tweetnacl": "1.0.3" - }, - "peerDependencies": { - "@lightprotocol/stateless.js": "0.17.1" - } - }, - "node_modules/@lightprotocol/compressed-token/node_modules/@solana/codecs": { - "version": "2.0.0-preview.4", - "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-2.0.0-preview.4.tgz", - "integrity": "sha512-gLMupqI4i+G4uPi2SGF/Tc1aXcviZF2ybC81x7Q/fARamNSgNOCUUoSCg9nWu1Gid6+UhA7LH80sWI8XjKaRog==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-preview.4", - "@solana/codecs-data-structures": "2.0.0-preview.4", - "@solana/codecs-numbers": "2.0.0-preview.4", - "@solana/codecs-strings": "2.0.0-preview.4", - "@solana/options": "2.0.0-preview.4" - }, - "peerDependencies": { - "typescript": ">=5" - } - }, - "node_modules/@lightprotocol/compressed-token/node_modules/@solana/codecs-core": { - "version": "2.0.0-preview.4", - "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.0.0-preview.4.tgz", - "integrity": "sha512-A0VVuDDA5kNKZUinOqHxJQK32aKTucaVbvn31YenGzHX1gPqq+SOnFwgaEY6pq4XEopSmaK16w938ZQS8IvCnw==", - "license": "MIT", - "dependencies": { - "@solana/errors": "2.0.0-preview.4" - }, - "peerDependencies": { - "typescript": ">=5" - } - }, - "node_modules/@lightprotocol/compressed-token/node_modules/@solana/codecs-data-structures": { - "version": "2.0.0-preview.4", - "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.4.tgz", - "integrity": "sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-preview.4", - "@solana/codecs-numbers": "2.0.0-preview.4", - "@solana/errors": "2.0.0-preview.4" - }, - "peerDependencies": { - "typescript": ">=5" - } - }, - "node_modules/@lightprotocol/compressed-token/node_modules/@solana/codecs-numbers": { - "version": "2.0.0-preview.4", - "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.4.tgz", - "integrity": "sha512-Q061rLtMadsO7uxpguT+Z7G4UHnjQ6moVIxAQxR58nLxDPCC7MB1Pk106/Z7NDhDLHTcd18uO6DZ7ajHZEn2XQ==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-preview.4", - "@solana/errors": "2.0.0-preview.4" - }, - "peerDependencies": { - "typescript": ">=5" - } - }, - "node_modules/@lightprotocol/compressed-token/node_modules/@solana/codecs-strings": { - "version": "2.0.0-preview.4", - "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.4.tgz", - "integrity": "sha512-YDbsQePRWm+xnrfS64losSGRg8Wb76cjK1K6qfR8LPmdwIC3787x9uW5/E4icl/k+9nwgbIRXZ65lpF+ucZUnw==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-preview.4", - "@solana/codecs-numbers": "2.0.0-preview.4", - "@solana/errors": "2.0.0-preview.4" - }, - "peerDependencies": { - "fastestsmallesttextencoderdecoder": "^1.0.22", - "typescript": ">=5" - } - }, - "node_modules/@lightprotocol/compressed-token/node_modules/@solana/errors": { - "version": "2.0.0-preview.4", - "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.0.0-preview.4.tgz", - "integrity": "sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA==", - "license": "MIT", - "dependencies": { - "chalk": "^5.3.0", - "commander": "^12.1.0" - }, - "bin": { - "errors": "bin/cli.mjs" - }, - "peerDependencies": { - "typescript": ">=5" - } - }, - "node_modules/@lightprotocol/compressed-token/node_modules/@solana/options": { - "version": "2.0.0-preview.4", - "resolved": "https://registry.npmjs.org/@solana/options/-/options-2.0.0-preview.4.tgz", - "integrity": "sha512-tv2O/Frxql/wSe3jbzi5nVicIWIus/BftH+5ZR+r9r3FO0/htEllZS5Q9XdbmSboHu+St87584JXeDx3xm4jaA==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-preview.4", - "@solana/codecs-data-structures": "2.0.0-preview.4", - "@solana/codecs-numbers": "2.0.0-preview.4", - "@solana/codecs-strings": "2.0.0-preview.4", - "@solana/errors": "2.0.0-preview.4" - }, - "peerDependencies": { - "typescript": ">=5" - } - }, - "node_modules/@lightprotocol/compressed-token/node_modules/@solana/spl-token": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.4.8.tgz", - "integrity": "sha512-RO0JD9vPRi4LsAbMUdNbDJ5/cv2z11MGhtAvFeRzT4+hAGE/FUzRi0tkkWtuCfSIU3twC6CtmAihRp/+XXjWsA==", - "license": "Apache-2.0", - "dependencies": { - "@solana/buffer-layout": "^4.0.0", - "@solana/buffer-layout-utils": "^0.2.0", - "@solana/spl-token-group": "^0.0.5", - "@solana/spl-token-metadata": "^0.1.3", - "buffer": "^6.0.3" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.94.0" - } - }, - "node_modules/@lightprotocol/compressed-token/node_modules/@solana/spl-token-group": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@solana/spl-token-group/-/spl-token-group-0.0.5.tgz", - "integrity": "sha512-CLJnWEcdoUBpQJfx9WEbX3h6nTdNiUzswfFdkABUik7HVwSNA98u5AYvBVK2H93d9PGMOHAak2lHW9xr+zAJGQ==", - "license": "Apache-2.0", - "dependencies": { - "@solana/codecs": "2.0.0-preview.4", - "@solana/spl-type-length-value": "0.1.0" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.94.0" - } - }, - "node_modules/@lightprotocol/compressed-token/node_modules/@solana/web3.js": { - "version": "1.95.3", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.95.3.tgz", - "integrity": "sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.25.0", - "@noble/curves": "^1.4.2", - "@noble/hashes": "^1.4.0", - "@solana/buffer-layout": "^4.0.1", - "agentkeepalive": "^4.5.0", - "bigint-buffer": "^1.1.5", - "bn.js": "^5.2.1", - "borsh": "^0.7.0", - "bs58": "^4.0.1", - "buffer": "6.0.3", - "fast-stable-stringify": "^1.0.0", - "jayson": "^4.1.1", - "node-fetch": "^2.7.0", - "rpc-websockets": "^9.0.2", - "superstruct": "^2.0.2" - } - }, - "node_modules/@lightprotocol/compressed-token/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@lightprotocol/compressed-token/node_modules/borsh": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", - "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", - "license": "Apache-2.0", - "dependencies": { - "bn.js": "^5.2.0", - "bs58": "^4.0.0", - "text-encoding-utf-8": "^1.0.2" - } - }, - "node_modules/@lightprotocol/compressed-token/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@lightprotocol/compressed-token/node_modules/superstruct": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", - "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@lightprotocol/stateless.js": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@lightprotocol/stateless.js/-/stateless.js-0.17.1.tgz", - "integrity": "sha512-EjId1n33A6dBwpce33Wsa/fs/CDKtMtRrkxbApH0alXrnEXmbW6QhIViXOrKYXjZ4uJQM1xsBtsKe0vqJ4nbtQ==", - "license": "Apache-2.0", - "dependencies": { - "@coral-xyz/anchor": "0.29.0", - "@noble/hashes": "1.5.0", - "@solana/web3.js": "1.95.3", - "buffer": "6.0.3", - "superstruct": "2.0.2", - "tweetnacl": "1.0.3" - } - }, - "node_modules/@lightprotocol/stateless.js/node_modules/@noble/hashes": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", - "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@lightprotocol/stateless.js/node_modules/@solana/web3.js": { - "version": "1.95.3", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.95.3.tgz", - "integrity": "sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.25.0", - "@noble/curves": "^1.4.2", - "@noble/hashes": "^1.4.0", - "@solana/buffer-layout": "^4.0.1", - "agentkeepalive": "^4.5.0", - "bigint-buffer": "^1.1.5", - "bn.js": "^5.2.1", - "borsh": "^0.7.0", - "bs58": "^4.0.1", - "buffer": "6.0.3", - "fast-stable-stringify": "^1.0.0", - "jayson": "^4.1.1", - "node-fetch": "^2.7.0", - "rpc-websockets": "^9.0.2", - "superstruct": "^2.0.2" - } - }, - "node_modules/@lightprotocol/stateless.js/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@lightprotocol/stateless.js/node_modules/borsh": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", - "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", - "license": "Apache-2.0", - "dependencies": { - "bn.js": "^5.2.0", - "bs58": "^4.0.0", - "text-encoding-utf-8": "^1.0.2" - } - }, - "node_modules/@lightprotocol/stateless.js/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@lightprotocol/stateless.js/node_modules/superstruct": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", - "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@metaplex-foundation/beet": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet/-/beet-0.7.2.tgz", - "integrity": "sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==", - "license": "Apache-2.0", - "dependencies": { - "ansicolors": "^0.3.2", - "assert": "^2.1.0", - "bn.js": "^5.2.0", - "debug": "^4.3.3" - } - }, - "node_modules/@metaplex-foundation/beet-solana": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet-solana/-/beet-solana-0.4.1.tgz", - "integrity": "sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==", - "license": "Apache-2.0", - "dependencies": { - "@metaplex-foundation/beet": ">=0.1.0", - "@solana/web3.js": "^1.56.2", - "bs58": "^5.0.0", - "debug": "^4.3.4" - } - }, - "node_modules/@metaplex-foundation/beet-solana/node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", - "license": "MIT" - }, - "node_modules/@metaplex-foundation/beet-solana/node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "license": "MIT", - "dependencies": { - "base-x": "^4.0.0" - } - }, - "node_modules/@metaplex-foundation/cusper": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/cusper/-/cusper-0.0.2.tgz", - "integrity": "sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==", - "license": "Apache-2.0" - }, - "node_modules/@metaplex-foundation/mpl-auction-house": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-auction-house/-/mpl-auction-house-2.5.1.tgz", - "integrity": "sha512-O+IAdYVaoOvgACB8pm+1lF5BNEjl0COkqny2Ho8KQZwka6aC/vHbZ239yRwAMtJhf5992BPFdT4oifjyE0O+Mw==", - "license": "Apache-2.0", - "dependencies": { - "@metaplex-foundation/beet": "^0.6.1", - "@metaplex-foundation/beet-solana": "^0.3.1", - "@metaplex-foundation/cusper": "^0.0.2", - "@solana/spl-token": "^0.3.5", - "@solana/web3.js": "^1.56.2", - "bn.js": "^5.2.0" - } - }, - "node_modules/@metaplex-foundation/mpl-auction-house/node_modules/@metaplex-foundation/beet": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet/-/beet-0.6.1.tgz", - "integrity": "sha512-OYgnijLFzw0cdUlRKH5POp0unQECPOW9muJ2X3QIVyak5G6I6l/rKo72sICgPLIFKdmsi2jmnkuLY7wp14iXdw==", - "license": "Apache-2.0", - "dependencies": { - "ansicolors": "^0.3.2", - "bn.js": "^5.2.0", - "debug": "^4.3.3" - } - }, - "node_modules/@metaplex-foundation/mpl-auction-house/node_modules/@metaplex-foundation/beet-solana": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet-solana/-/beet-solana-0.3.1.tgz", - "integrity": "sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g==", - "license": "Apache-2.0", - "dependencies": { - "@metaplex-foundation/beet": ">=0.1.0", - "@solana/web3.js": "^1.56.2", - "bs58": "^5.0.0", - "debug": "^4.3.4" - } - }, - "node_modules/@metaplex-foundation/mpl-auction-house/node_modules/@solana/spl-token": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", - "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", - "license": "Apache-2.0", - "dependencies": { - "@solana/buffer-layout": "^4.0.0", - "@solana/buffer-layout-utils": "^0.2.0", - "@solana/spl-token-metadata": "^0.1.2", - "buffer": "^6.0.3" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.88.0" - } - }, - "node_modules/@metaplex-foundation/mpl-auction-house/node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", - "license": "MIT" - }, - "node_modules/@metaplex-foundation/mpl-auction-house/node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "license": "MIT", - "dependencies": { - "base-x": "^4.0.0" - } - }, - "node_modules/@metaplex-foundation/mpl-bubblegum": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-bubblegum/-/mpl-bubblegum-0.8.0.tgz", - "integrity": "sha512-GghMCIu1KjffCULPHqBd31DFvnRzCNKSu9Bf9W3X2TiLzdp5AKxT2oVQRcZRryaer3JTkvJLZfWjm9/psYstxA==", - "license": "Apache-2.0", - "dependencies": { - "@metaplex-foundation/beet": "0.7.1", - "@metaplex-foundation/beet-solana": "0.4.0", - "@metaplex-foundation/cusper": "^0.0.2", - "@metaplex-foundation/mpl-token-metadata": "^2.5.2", - "@solana/spl-account-compression": "^0.1.4", - "@solana/spl-token": "^0.1.8", - "@solana/web3.js": "^1.50.1", - "js-sha3": "^0.8.0" - } - }, - "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/@metaplex-foundation/beet": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet/-/beet-0.7.1.tgz", - "integrity": "sha512-hNCEnS2WyCiYyko82rwuISsBY3KYpe828ubsd2ckeqZr7tl0WVLivGkoyA/qdiaaHEBGdGl71OpfWa2rqL3DiA==", - "license": "Apache-2.0", - "dependencies": { - "ansicolors": "^0.3.2", - "bn.js": "^5.2.0", - "debug": "^4.3.3" - } - }, - "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/@metaplex-foundation/beet-solana": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet-solana/-/beet-solana-0.4.0.tgz", - "integrity": "sha512-B1L94N3ZGMo53b0uOSoznbuM5GBNJ8LwSeznxBxJ+OThvfHQ4B5oMUqb+0zdLRfkKGS7Q6tpHK9P+QK0j3w2cQ==", - "license": "Apache-2.0", - "dependencies": { - "@metaplex-foundation/beet": ">=0.1.0", - "@solana/web3.js": "^1.56.2", - "bs58": "^5.0.0", - "debug": "^4.3.4" - } - }, - "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/@metaplex-foundation/mpl-token-metadata": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-2.13.0.tgz", - "integrity": "sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/beet": "^0.7.1", - "@metaplex-foundation/beet-solana": "^0.4.0", - "@metaplex-foundation/cusper": "^0.0.2", - "@solana/spl-token": "^0.3.6", - "@solana/web3.js": "^1.66.2", - "bn.js": "^5.2.0", - "debug": "^4.3.4" - } - }, - "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/@metaplex-foundation/mpl-token-metadata/node_modules/@solana/spl-token": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", - "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", - "license": "Apache-2.0", - "dependencies": { - "@solana/buffer-layout": "^4.0.0", - "@solana/buffer-layout-utils": "^0.2.0", - "@solana/spl-token-metadata": "^0.1.2", - "buffer": "^6.0.3" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.88.0" - } - }, - "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/@solana/spl-token": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.1.8.tgz", - "integrity": "sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.5", - "@solana/web3.js": "^1.21.0", - "bn.js": "^5.1.0", - "buffer": "6.0.3", - "buffer-layout": "^1.2.0", - "dotenv": "10.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", - "license": "MIT" - }, - "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "license": "MIT", - "dependencies": { - "base-x": "^4.0.0" - } - }, - "node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=10" - } - }, - "node_modules/@metaplex-foundation/mpl-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-core/-/mpl-core-1.1.1.tgz", - "integrity": "sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA==", - "license": "Apache-2.0", - "dependencies": { - "@msgpack/msgpack": "^3.0.0-beta2" - }, - "peerDependencies": { - "@metaplex-foundation/umi": ">=0.8.2 < 1", - "@noble/hashes": "^1.3.1" - } - }, - "node_modules/@metaplex-foundation/mpl-token-auth-rules": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-token-auth-rules/-/mpl-token-auth-rules-3.0.3.tgz", - "integrity": "sha512-zpUpSNoHbcTO0w98s0E6rbkYi0UbEKK0x7qGwOz7ngMIqKRqOKT/Qovv+fDYVaRt//ijyUBbku1rnt4wS6hzrw==", - "license": "Apache-2.0", - "dependencies": { - "@msgpack/msgpack": "2.8.0" - }, - "peerDependencies": { - "@metaplex-foundation/umi": ">= 0.8.2 < 1" - } - }, - "node_modules/@metaplex-foundation/mpl-token-auth-rules/node_modules/@msgpack/msgpack": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@msgpack/msgpack/-/msgpack-2.8.0.tgz", - "integrity": "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==", - "license": "ISC", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@metaplex-foundation/mpl-token-metadata": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-3.3.0.tgz", - "integrity": "sha512-t5vO8Wr3ZZZPGrVrGNcosX5FMkwQSgBiVMQMRNDG2De7voYFJmIibD5jdG05EoQ4Y5kZVEiwhYaO+wJB3aO5AA==", - "license": "Apache-2.0", - "dependencies": { - "@metaplex-foundation/mpl-toolbox": "^0.9.4" - }, - "peerDependencies": { - "@metaplex-foundation/umi": ">= 0.8.2 < 1" - } - }, - "node_modules/@metaplex-foundation/mpl-toolbox": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-toolbox/-/mpl-toolbox-0.9.4.tgz", - "integrity": "sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ==", - "license": "Apache-2.0", - "peerDependencies": { - "@metaplex-foundation/umi": ">= 0.8.2 < 1" - } - }, - "node_modules/@metaplex-foundation/umi": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi/-/umi-0.9.2.tgz", - "integrity": "sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/umi-options": "^0.8.9", - "@metaplex-foundation/umi-public-keys": "^0.8.9", - "@metaplex-foundation/umi-serializers": "^0.9.0" - } - }, - "node_modules/@metaplex-foundation/umi-bundle-defaults": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-bundle-defaults/-/umi-bundle-defaults-0.9.2.tgz", - "integrity": "sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/umi-downloader-http": "^0.9.2", - "@metaplex-foundation/umi-eddsa-web3js": "^0.9.2", - "@metaplex-foundation/umi-http-fetch": "^0.9.2", - "@metaplex-foundation/umi-program-repository": "^0.9.2", - "@metaplex-foundation/umi-rpc-chunk-get-accounts": "^0.9.2", - "@metaplex-foundation/umi-rpc-web3js": "^0.9.2", - "@metaplex-foundation/umi-serializer-data-view": "^0.9.2", - "@metaplex-foundation/umi-transaction-factory-web3js": "^0.9.2" - }, - "peerDependencies": { - "@metaplex-foundation/umi": "^0.9.2", - "@solana/web3.js": "^1.72.0" - } - }, - "node_modules/@metaplex-foundation/umi-downloader-http": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-downloader-http/-/umi-downloader-http-0.9.2.tgz", - "integrity": "sha512-tzPT9hBwenzTzAQg07rmsrqZfgguAXELbcJrsYMoASp5VqWFXYIP00g94KET6XLjWUXH4P1J2zoa6hGennPXHA==", - "license": "MIT", - "peerDependencies": { - "@metaplex-foundation/umi": "^0.9.2" - } - }, - "node_modules/@metaplex-foundation/umi-eddsa-web3js": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-eddsa-web3js/-/umi-eddsa-web3js-0.9.2.tgz", - "integrity": "sha512-hhPCxXbYIp4BC4z9gK78sXpWLkNSrfv4ndhF5ruAkdIp7GcRVYKj0QnOUO6lGYGiIkNlw20yoTwOe1CT//OfTQ==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/umi-web3js-adapters": "^0.9.2", - "@noble/curves": "^1.0.0" - }, - "peerDependencies": { - "@metaplex-foundation/umi": "^0.9.2", - "@solana/web3.js": "^1.72.0" - } - }, - "node_modules/@metaplex-foundation/umi-http-fetch": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-http-fetch/-/umi-http-fetch-0.9.2.tgz", - "integrity": "sha512-YCZuBu24T9ZzEDe4+w12LEZm/fO9pkyViZufGgASC5NX93814Lvf6Ssjn/hZzjfA7CvZbvLFbmujc6CV3Q/m9Q==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.6.7" - }, - "peerDependencies": { - "@metaplex-foundation/umi": "^0.9.2" - } - }, - "node_modules/@metaplex-foundation/umi-options": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-options/-/umi-options-0.8.9.tgz", - "integrity": "sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A==", - "license": "MIT" - }, - "node_modules/@metaplex-foundation/umi-program-repository": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-program-repository/-/umi-program-repository-0.9.2.tgz", - "integrity": "sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA==", - "license": "MIT", - "peerDependencies": { - "@metaplex-foundation/umi": "^0.9.2" - } - }, - "node_modules/@metaplex-foundation/umi-public-keys": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-public-keys/-/umi-public-keys-0.8.9.tgz", - "integrity": "sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/umi-serializers-encodings": "^0.8.9" - } - }, - "node_modules/@metaplex-foundation/umi-rpc-chunk-get-accounts": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-rpc-chunk-get-accounts/-/umi-rpc-chunk-get-accounts-0.9.2.tgz", - "integrity": "sha512-YRwVf6xH0jPBAUgMhEPi+UbjioAeqTXmjsN2TnmQCPAmHbrHrMRj0rlWYwFLWAgkmoxazYrXP9lqOFRrfOGAEA==", - "license": "MIT", - "peerDependencies": { - "@metaplex-foundation/umi": "^0.9.2" - } - }, - "node_modules/@metaplex-foundation/umi-rpc-web3js": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-rpc-web3js/-/umi-rpc-web3js-0.9.2.tgz", - "integrity": "sha512-MqcsBz8B4wGl6jxsf2Jo/rAEpYReU9VCSR15QSjhvADHMmdFxCIZCCAgE+gDE2Vuanfl437VhOcP3g5Uw8C16Q==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/umi-web3js-adapters": "^0.9.2" - }, - "peerDependencies": { - "@metaplex-foundation/umi": "^0.9.2", - "@solana/web3.js": "^1.72.0" - } - }, - "node_modules/@metaplex-foundation/umi-serializer-data-view": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-serializer-data-view/-/umi-serializer-data-view-0.9.2.tgz", - "integrity": "sha512-5vGptadJxUxvUcyrwFZxXlEc6Q7AYySBesizCtrBFUY8w8PnF2vzmS45CP1MLySEATNH6T9mD4Rs0tLb87iQyA==", - "license": "MIT", - "peerDependencies": { - "@metaplex-foundation/umi": "^0.9.2" - } - }, - "node_modules/@metaplex-foundation/umi-serializers": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-serializers/-/umi-serializers-0.9.0.tgz", - "integrity": "sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/umi-options": "^0.8.9", - "@metaplex-foundation/umi-public-keys": "^0.8.9", - "@metaplex-foundation/umi-serializers-core": "^0.8.9", - "@metaplex-foundation/umi-serializers-encodings": "^0.8.9", - "@metaplex-foundation/umi-serializers-numbers": "^0.8.9" - } - }, - "node_modules/@metaplex-foundation/umi-serializers-core": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-serializers-core/-/umi-serializers-core-0.8.9.tgz", - "integrity": "sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w==", - "license": "MIT" - }, - "node_modules/@metaplex-foundation/umi-serializers-encodings": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-serializers-encodings/-/umi-serializers-encodings-0.8.9.tgz", - "integrity": "sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/umi-serializers-core": "^0.8.9" - } - }, - "node_modules/@metaplex-foundation/umi-serializers-numbers": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-serializers-numbers/-/umi-serializers-numbers-0.8.9.tgz", - "integrity": "sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/umi-serializers-core": "^0.8.9" - } - }, - "node_modules/@metaplex-foundation/umi-transaction-factory-web3js": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-transaction-factory-web3js/-/umi-transaction-factory-web3js-0.9.2.tgz", - "integrity": "sha512-fR1Kf21uylMFd1Smkltmj4jTNxhqSWf416owsJ+T+cvJi2VCOcOwq/3UFzOrpz78fA0RhsajKYKj0HYsRnQI1g==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/umi-web3js-adapters": "^0.9.2" - }, - "peerDependencies": { - "@metaplex-foundation/umi": "^0.9.2", - "@solana/web3.js": "^1.72.0" - } - }, - "node_modules/@metaplex-foundation/umi-web3js-adapters": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-web3js-adapters/-/umi-web3js-adapters-0.9.2.tgz", - "integrity": "sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA==", - "license": "MIT", - "dependencies": { - "buffer": "^6.0.3" - }, - "peerDependencies": { - "@metaplex-foundation/umi": "^0.9.2", - "@solana/web3.js": "^1.72.0" - } - }, - "node_modules/@msgpack/msgpack": { - "version": "3.0.0-beta2", - "resolved": "https://registry.npmjs.org/@msgpack/msgpack/-/msgpack-3.0.0-beta2.tgz", - "integrity": "sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==", - "license": "ISC", - "engines": { - "node": ">= 14" - } - }, - "node_modules/@noble/curves": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", - "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.6.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", - "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz", - "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@onsol/tldparser": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@onsol/tldparser/-/tldparser-0.6.7.tgz", - "integrity": "sha512-QwkRDLyC514pxeplCCXZ2kTiRcJSeUrpp+9o2XqLbePy/qzZGGG8I0UbXUKuWVD/bUL1zAm21+D+Eu30OKwcQg==", - "license": "MIT", - "dependencies": { - "@ethersproject/sha2": "^5.7.0", - "@metaplex-foundation/beet-solana": "^0.4.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@solana/web3.js": "^1.95.3", - "bn.js": "^5.2.1", - "borsh": "^0.7.0", - "buffer": "6.0.1" - } - }, - "node_modules/@orca-so/common-sdk": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@orca-so/common-sdk/-/common-sdk-0.6.4.tgz", - "integrity": "sha512-iOiC6exTA9t2CEOaUPoWlNP3soN/1yZFjoz1mSf7NvOqo/PJZeIdWpB7BRXwU0mGGatjxU4SFgMGQ8NrSx+ONw==", - "license": "MIT", - "dependencies": { - "tiny-invariant": "^1.3.1" - }, - "peerDependencies": { - "@solana/spl-token": "^0.4.1", - "@solana/web3.js": "^1.90.0", - "decimal.js": "^10.4.3" - } - }, - "node_modules/@orca-so/whirlpools-sdk": { - "version": "0.13.12", - "resolved": "https://registry.npmjs.org/@orca-so/whirlpools-sdk/-/whirlpools-sdk-0.13.12.tgz", - "integrity": "sha512-+LOqGTe0DYUsYwemltOU4WQIviqoICQlIcAmmEX/WnBh6wntpcLDcXkPV6dBHW7NA2/J8WEVAZ50biLJb4subg==", - "license": "Apache-2.0", - "dependencies": { - "tiny-invariant": "^1.3.1" - }, - "peerDependencies": { - "@coral-xyz/anchor": "~0.29.0", - "@orca-so/common-sdk": "0.6.4", - "@solana/spl-token": "^0.4.8", - "@solana/web3.js": "^1.90.0", - "decimal.js": "^10.4.3" - } - }, - "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@pythnetwork/price-service-client": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@pythnetwork/price-service-client/-/price-service-client-1.9.0.tgz", - "integrity": "sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==", - "deprecated": "This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead.", - "license": "Apache-2.0", - "dependencies": { - "@pythnetwork/price-service-sdk": "*", - "@types/ws": "^8.5.3", - "axios": "^1.5.1", - "axios-retry": "^3.8.0", - "isomorphic-ws": "^4.0.1", - "ts-log": "^2.2.4", - "ws": "^8.6.0" - } - }, - "node_modules/@pythnetwork/price-service-sdk": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@pythnetwork/price-service-sdk/-/price-service-sdk-1.8.0.tgz", - "integrity": "sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA==", - "license": "Apache-2.0", - "dependencies": { - "bn.js": "^5.2.1" - } - }, - "node_modules/@raydium-io/raydium-sdk-v2": { - "version": "0.1.95-alpha", - "resolved": "https://registry.npmjs.org/@raydium-io/raydium-sdk-v2/-/raydium-sdk-v2-0.1.95-alpha.tgz", - "integrity": "sha512-+u7yxo/R1JDysTCzOuAlh90ioBe2DlM2Hbcz/tFsxP/YzmnYQzShvNjcmc0361a4zJhmlrEJfpFXW0J3kkX5vA==", - "license": "GPL-3.0", - "dependencies": { - "@solana/buffer-layout": "^4.0.1", - "@solana/spl-token": "^0.4.8", - "@solana/web3.js": "^1.95.3", - "axios": "^1.1.3", - "big.js": "^6.2.1", - "bn.js": "^5.2.1", - "dayjs": "^1.11.5", - "decimal.js-light": "^2.5.1", - "jsonfile": "^6.1.0", - "lodash": "^4.17.21", - "toformat": "^2.0.0", - "tsconfig-paths": "^4.2.0" - } - }, - "node_modules/@saberhq/option-utils": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@saberhq/option-utils/-/option-utils-1.15.0.tgz", - "integrity": "sha512-XVbS9H4b8PIGXJGaErkOurxV2FKFyvMwYq0pD8Y1iEPoi6HB//+HnpEKAv8tCssIQ5Nn1zQWzmQ9CmGkrwzcsw==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://www.coingecko.com/en/coins/saber" - } - }, - "node_modules/@saberhq/solana-contrib": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@saberhq/solana-contrib/-/solana-contrib-1.15.0.tgz", - "integrity": "sha512-OExL5qGrNMmIKINU7qFUDmY7+xIwVM2s360g99k8CRNHSnjpnqIzwDjr2CnvEFpeQPp22OdGlS63woDp0w0JsQ==", - "license": "Apache-2.0", - "dependencies": { - "@saberhq/option-utils": "^1.15.0", - "@solana/buffer-layout": "^4.0.0", - "@types/promise-retry": "^1.1.6", - "@types/retry": "^0.12.5", - "promise-retry": "^2.0.1", - "retry": "^0.13.1", - "tiny-invariant": "^1.3.1", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://www.coingecko.com/en/coins/saber" - }, - "peerDependencies": { - "@solana/web3.js": "^1.42", - "bn.js": "^4 || ^5" - } - }, - "node_modules/@scure/base": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.1.tgz", - "integrity": "sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", - "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.4.0", - "@noble/hashes": "~1.4.0", - "@scure/base": "~1.1.6" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", - "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.4.0", - "@scure/base": "~1.1.6" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@shikijs/core": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.24.4.tgz", - "integrity": "sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==", - "license": "MIT", - "dependencies": { - "@shikijs/engine-javascript": "1.24.4", - "@shikijs/engine-oniguruma": "1.24.4", - "@shikijs/types": "1.24.4", - "@shikijs/vscode-textmate": "^9.3.1", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" - } - }, - "node_modules/@shikijs/engine-javascript": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.24.4.tgz", - "integrity": "sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "1.24.4", - "@shikijs/vscode-textmate": "^9.3.1", - "oniguruma-to-es": "0.8.1" - } - }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.4.tgz", - "integrity": "sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "1.24.4", - "@shikijs/vscode-textmate": "^9.3.1" - } - }, - "node_modules/@shikijs/types": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.4.tgz", - "integrity": "sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==", - "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^9.3.1", - "@types/hast": "^3.0.4" - } - }, - "node_modules/@shikijs/vscode-textmate": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.1.tgz", - "integrity": "sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==", - "license": "MIT" - }, - "node_modules/@solana/buffer-layout": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", - "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", - "license": "MIT", - "dependencies": { - "buffer": "~6.0.3" - }, - "engines": { - "node": ">=5.10" - } - }, - "node_modules/@solana/buffer-layout-utils": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz", - "integrity": "sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==", - "license": "Apache-2.0", - "dependencies": { - "@solana/buffer-layout": "^4.0.0", - "@solana/web3.js": "^1.32.0", - "bigint-buffer": "^1.1.5", - "bignumber.js": "^9.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@solana/codecs": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-2.0.0-rc.1.tgz", - "integrity": "sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-rc.1", - "@solana/codecs-data-structures": "2.0.0-rc.1", - "@solana/codecs-numbers": "2.0.0-rc.1", - "@solana/codecs-strings": "2.0.0-rc.1", - "@solana/options": "2.0.0-rc.1" - }, - "peerDependencies": { - "typescript": ">=5" - } - }, - "node_modules/@solana/codecs-core": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.0.0-rc.1.tgz", - "integrity": "sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==", - "license": "MIT", - "dependencies": { - "@solana/errors": "2.0.0-rc.1" - }, - "peerDependencies": { - "typescript": ">=5" - } - }, - "node_modules/@solana/codecs-data-structures": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-rc.1.tgz", - "integrity": "sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-rc.1", - "@solana/codecs-numbers": "2.0.0-rc.1", - "@solana/errors": "2.0.0-rc.1" - }, - "peerDependencies": { - "typescript": ">=5" - } - }, - "node_modules/@solana/codecs-numbers": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.0.0-rc.1.tgz", - "integrity": "sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-rc.1", - "@solana/errors": "2.0.0-rc.1" - }, - "peerDependencies": { - "typescript": ">=5" - } - }, - "node_modules/@solana/codecs-strings": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.0.0-rc.1.tgz", - "integrity": "sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-rc.1", - "@solana/codecs-numbers": "2.0.0-rc.1", - "@solana/errors": "2.0.0-rc.1" - }, - "peerDependencies": { - "fastestsmallesttextencoderdecoder": "^1.0.22", - "typescript": ">=5" - } - }, - "node_modules/@solana/errors": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.0.0-rc.1.tgz", - "integrity": "sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==", - "license": "MIT", - "dependencies": { - "chalk": "^5.3.0", - "commander": "^12.1.0" - }, - "bin": { - "errors": "bin/cli.mjs" - }, - "peerDependencies": { - "typescript": ">=5" - } - }, - "node_modules/@solana/options": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@solana/options/-/options-2.0.0-rc.1.tgz", - "integrity": "sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==", - "license": "MIT", - "dependencies": { - "@solana/codecs-core": "2.0.0-rc.1", - "@solana/codecs-data-structures": "2.0.0-rc.1", - "@solana/codecs-numbers": "2.0.0-rc.1", - "@solana/codecs-strings": "2.0.0-rc.1", - "@solana/errors": "2.0.0-rc.1" - }, - "peerDependencies": { - "typescript": ">=5" - } - }, - "node_modules/@solana/spl-account-compression": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/@solana/spl-account-compression/-/spl-account-compression-0.1.10.tgz", - "integrity": "sha512-IQAOJrVOUo6LCgeWW9lHuXo6JDbi4g3/RkQtvY0SyalvSWk9BIkHHe4IkAzaQw8q/BxEVBIjz8e9bNYWIAESNw==", - "license": "Apache-2.0", - "dependencies": { - "@metaplex-foundation/beet": "^0.7.1", - "@metaplex-foundation/beet-solana": "^0.4.0", - "bn.js": "^5.2.1", - "borsh": "^0.7.0", - "js-sha3": "^0.8.0", - "typescript-collections": "^1.3.3" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.50.1" - } - }, - "node_modules/@solana/spl-account-compression/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@solana/spl-account-compression/node_modules/borsh": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", - "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", - "license": "Apache-2.0", - "dependencies": { - "bn.js": "^5.2.0", - "bs58": "^4.0.0", - "text-encoding-utf-8": "^1.0.2" - } - }, - "node_modules/@solana/spl-account-compression/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@solana/spl-token": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.4.9.tgz", - "integrity": "sha512-g3wbj4F4gq82YQlwqhPB0gHFXfgsC6UmyGMxtSLf/BozT/oKd59465DbnlUK8L8EcimKMavxsVAMoLcEdeCicg==", - "license": "Apache-2.0", - "dependencies": { - "@solana/buffer-layout": "^4.0.0", - "@solana/buffer-layout-utils": "^0.2.0", - "@solana/spl-token-group": "^0.0.7", - "@solana/spl-token-metadata": "^0.1.6", - "buffer": "^6.0.3" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.95.3" - } - }, - "node_modules/@solana/spl-token-group": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@solana/spl-token-group/-/spl-token-group-0.0.7.tgz", - "integrity": "sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug==", - "license": "Apache-2.0", - "dependencies": { - "@solana/codecs": "2.0.0-rc.1" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.95.3" - } - }, - "node_modules/@solana/spl-token-metadata": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@solana/spl-token-metadata/-/spl-token-metadata-0.1.6.tgz", - "integrity": "sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==", - "license": "Apache-2.0", - "dependencies": { - "@solana/codecs": "2.0.0-rc.1" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.95.3" - } - }, - "node_modules/@solana/spl-type-length-value": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz", - "integrity": "sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA==", - "license": "Apache-2.0", - "dependencies": { - "buffer": "^6.0.3" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@solana/web3.js": { - "version": "1.98.0", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.98.0.tgz", - "integrity": "sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.25.0", - "@noble/curves": "^1.4.2", - "@noble/hashes": "^1.4.0", - "@solana/buffer-layout": "^4.0.1", - "agentkeepalive": "^4.5.0", - "bigint-buffer": "^1.1.5", - "bn.js": "^5.2.1", - "borsh": "^0.7.0", - "bs58": "^4.0.1", - "buffer": "6.0.3", - "fast-stable-stringify": "^1.0.0", - "jayson": "^4.1.1", - "node-fetch": "^2.7.0", - "rpc-websockets": "^9.0.2", - "superstruct": "^2.0.2" - } - }, - "node_modules/@solana/web3.js/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@solana/web3.js/node_modules/borsh": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", - "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", - "license": "Apache-2.0", - "dependencies": { - "bn.js": "^5.2.0", - "bs58": "^4.0.0", - "text-encoding-utf-8": "^1.0.2" - } - }, - "node_modules/@solana/web3.js/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@solana/web3.js/node_modules/superstruct": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", - "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@tensor-hq/tensor-common": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@tensor-hq/tensor-common/-/tensor-common-8.3.1.tgz", - "integrity": "sha512-cgc+Z0nR23pi+1DfJgF1+afWd+xf1e6VYPM9yhECshmERr6BgojQfcuoltHHcgpwSlLrZXnm47kQ48I2M6rxFQ==", - "license": "MIT", - "dependencies": { - "@coral-xyz/anchor": "^0.26.0", - "@metaplex-foundation/mpl-auction-house": "^2.1.1", - "@metaplex-foundation/mpl-bubblegum": "^0.7.0", - "@solana/spl-account-compression": "^0.1.4", - "@solana/spl-token": "^0.3.7", - "@solana/web3.js": "^1.91.1", - "axios": "^0.28.0", - "big.js": "^6.2.1", - "bn.js": "^5.2.1", - "borsh": "^0.7.0", - "bs58": "^5.0.0", - "exponential-backoff": "^3.1.1", - "js-sha3": "^0.8.0", - "semaphore": "^1.1.0" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/@coral-xyz/anchor": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.26.0.tgz", - "integrity": "sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==", - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "@coral-xyz/borsh": "^0.26.0", - "@solana/web3.js": "^1.68.0", - "base64-js": "^1.5.1", - "bn.js": "^5.1.2", - "bs58": "^4.0.1", - "buffer-layout": "^1.2.2", - "camelcase": "^6.3.0", - "cross-fetch": "^3.1.5", - "crypto-hash": "^1.3.0", - "eventemitter3": "^4.0.7", - "js-sha256": "^0.9.0", - "pako": "^2.0.3", - "snake-case": "^3.0.4", - "superstruct": "^0.15.4", - "toml": "^3.0.0" - }, - "engines": { - "node": ">=11" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/@coral-xyz/anchor/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/@coral-xyz/anchor/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/@coral-xyz/borsh": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.26.0.tgz", - "integrity": "sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==", - "license": "Apache-2.0", - "dependencies": { - "bn.js": "^5.1.2", - "buffer-layout": "^1.2.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@solana/web3.js": "^1.68.0" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/@metaplex-foundation/beet": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet/-/beet-0.7.1.tgz", - "integrity": "sha512-hNCEnS2WyCiYyko82rwuISsBY3KYpe828ubsd2ckeqZr7tl0WVLivGkoyA/qdiaaHEBGdGl71OpfWa2rqL3DiA==", - "license": "Apache-2.0", - "dependencies": { - "ansicolors": "^0.3.2", - "bn.js": "^5.2.0", - "debug": "^4.3.3" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/@metaplex-foundation/beet-solana": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/beet-solana/-/beet-solana-0.4.0.tgz", - "integrity": "sha512-B1L94N3ZGMo53b0uOSoznbuM5GBNJ8LwSeznxBxJ+OThvfHQ4B5oMUqb+0zdLRfkKGS7Q6tpHK9P+QK0j3w2cQ==", - "license": "Apache-2.0", - "dependencies": { - "@metaplex-foundation/beet": ">=0.1.0", - "@solana/web3.js": "^1.56.2", - "bs58": "^5.0.0", - "debug": "^4.3.4" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/@metaplex-foundation/mpl-bubblegum": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-bubblegum/-/mpl-bubblegum-0.7.0.tgz", - "integrity": "sha512-HCo6q+nh8M3KRv9/aUaZcJo5/vPJEeZwPGRDWkqN7lUXoMIvhd83fZi7MB1rIg1gwpVHfHqim0A02LCYKisWFg==", - "license": "Apache-2.0", - "dependencies": { - "@metaplex-foundation/beet": "0.7.1", - "@metaplex-foundation/beet-solana": "0.4.0", - "@metaplex-foundation/cusper": "^0.0.2", - "@metaplex-foundation/mpl-token-metadata": "^2.5.2", - "@solana/spl-account-compression": "^0.1.4", - "@solana/spl-token": "^0.1.8", - "@solana/web3.js": "^1.50.1", - "js-sha3": "^0.8.0" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/@metaplex-foundation/mpl-bubblegum/node_modules/@solana/spl-token": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.1.8.tgz", - "integrity": "sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.5", - "@solana/web3.js": "^1.21.0", - "bn.js": "^5.1.0", - "buffer": "6.0.3", - "buffer-layout": "^1.2.0", - "dotenv": "10.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/@metaplex-foundation/mpl-token-metadata": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-2.13.0.tgz", - "integrity": "sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/beet": "^0.7.1", - "@metaplex-foundation/beet-solana": "^0.4.0", - "@metaplex-foundation/cusper": "^0.0.2", - "@solana/spl-token": "^0.3.6", - "@solana/web3.js": "^1.66.2", - "bn.js": "^5.2.0", - "debug": "^4.3.4" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/@solana/spl-token": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", - "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", - "license": "Apache-2.0", - "dependencies": { - "@solana/buffer-layout": "^4.0.0", - "@solana/buffer-layout-utils": "^0.2.0", - "@solana/spl-token-metadata": "^0.1.2", - "buffer": "^6.0.3" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.88.0" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/axios": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.28.1.tgz", - "integrity": "sha512-iUcGA5a7p0mVb4Gm/sy+FSECNkPFT4y7wt6OM/CDpO/OnNCvSs3PoMG8ibrC9jRoGYU0gUK5pXVC4NPXq6lHRQ==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", - "license": "MIT" - }, - "node_modules/@tensor-hq/tensor-common/node_modules/borsh": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", - "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", - "license": "Apache-2.0", - "dependencies": { - "bn.js": "^5.2.0", - "bs58": "^4.0.0", - "text-encoding-utf-8": "^1.0.2" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/borsh/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/borsh/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "license": "MIT", - "dependencies": { - "base-x": "^4.0.0" - } - }, - "node_modules/@tensor-hq/tensor-common/node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=10" - } - }, - "node_modules/@tensor-hq/tensor-tests-common": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@tensor-hq/tensor-tests-common/-/tensor-tests-common-0.6.0.tgz", - "integrity": "sha512-67Dssa+gKXLUQf+q2aitLu4BWOzrSOySNjzlncZs8SR6ysT9I2Ap9a5EYlR06ZsmfMUVJ/3tIcrqA+r0NQ4z5w==", - "license": "MIT", - "dependencies": { - "@coral-xyz/anchor": "^0.29.0", - "@metaplex-foundation/mpl-bubblegum": "^0.8.0", - "@metaplex-foundation/mpl-token-auth-rules": "^3.0.1", - "@metaplex-foundation/mpl-token-metadata": "^2.13.0", - "@metaplex-foundation/umi": "^0.8.10", - "@msgpack/msgpack": "^3.0.0-beta2", - "@saberhq/solana-contrib": "^1.14.11", - "@solana/spl-account-compression": "^0.2.0", - "@solana/spl-token": "^0.3.9", - "@tensor-hq/tensor-common": "^8.0.8", - "@tensor-oss/tensorswap-sdk": "^4.4.2", - "bs58": "^5.0.0", - "chai-as-promised": "^7.1.1", - "exponential-backoff": "^3.1.1", - "js-sha3": "^0.9.2", - "merkletreejs": "^0.3.11" - } - }, - "node_modules/@tensor-hq/tensor-tests-common/node_modules/@metaplex-foundation/mpl-token-metadata": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-2.13.0.tgz", - "integrity": "sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/beet": "^0.7.1", - "@metaplex-foundation/beet-solana": "^0.4.0", - "@metaplex-foundation/cusper": "^0.0.2", - "@solana/spl-token": "^0.3.6", - "@solana/web3.js": "^1.66.2", - "bn.js": "^5.2.0", - "debug": "^4.3.4" - } - }, - "node_modules/@tensor-hq/tensor-tests-common/node_modules/@metaplex-foundation/umi": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi/-/umi-0.8.10.tgz", - "integrity": "sha512-iGuGIfJh2+YFvUIkZ0nB/69EsQcaoq89DDPRPYvPBtOunfv8TH8SNrwcsXHlp9aBtn5FGKCPx3V3X/eurB32Fg==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/umi-options": "^0.8.9", - "@metaplex-foundation/umi-public-keys": "^0.8.9", - "@metaplex-foundation/umi-serializers": "^0.8.9" - } - }, - "node_modules/@tensor-hq/tensor-tests-common/node_modules/@metaplex-foundation/umi-serializers": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/umi-serializers/-/umi-serializers-0.8.9.tgz", - "integrity": "sha512-Sve8Etm3zqvLSUfza+MYRkjTnCpiaAFT7VWdqeHzA3n58P0AfT3p74RrZwVt/UFkxI+ln8BslwBDJmwzcPkuHw==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/umi-options": "^0.8.9", - "@metaplex-foundation/umi-public-keys": "^0.8.9", - "@metaplex-foundation/umi-serializers-core": "^0.8.9", - "@metaplex-foundation/umi-serializers-encodings": "^0.8.9", - "@metaplex-foundation/umi-serializers-numbers": "^0.8.9" - } - }, - "node_modules/@tensor-hq/tensor-tests-common/node_modules/@solana/spl-account-compression": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@solana/spl-account-compression/-/spl-account-compression-0.2.1.tgz", - "integrity": "sha512-GIf/euXN/ZJMfiH3DNiIcolNBZ5pga+usGVxEAyt6Iucv0EXsbxefHCePqRr3ryldFpFm4mjJPz5sm+FzZuDnw==", - "license": "Apache-2.0", - "dependencies": { - "@metaplex-foundation/beet": "^0.7.2", - "@metaplex-foundation/beet-solana": "^0.4.1", - "bn.js": "^5.2.1", - "js-sha3": "^0.9.3", - "typescript-collections": "^1.3.3" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.91.6" - } - }, - "node_modules/@tensor-hq/tensor-tests-common/node_modules/@solana/spl-token": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", - "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", - "license": "Apache-2.0", - "dependencies": { - "@solana/buffer-layout": "^4.0.0", - "@solana/buffer-layout-utils": "^0.2.0", - "@solana/spl-token-metadata": "^0.1.2", - "buffer": "^6.0.3" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.88.0" - } - }, - "node_modules/@tensor-hq/tensor-tests-common/node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", - "license": "MIT" - }, - "node_modules/@tensor-hq/tensor-tests-common/node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "license": "MIT", - "dependencies": { - "base-x": "^4.0.0" - } - }, - "node_modules/@tensor-hq/tensor-tests-common/node_modules/js-sha3": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.9.3.tgz", - "integrity": "sha512-BcJPCQeLg6WjEx3FE591wVAevlli8lxsxm9/FzV4HXkV49TmBH38Yvrpce6fjbADGMKFrBMGTqrVz3qPIZ88Gg==", - "license": "MIT" - }, - "node_modules/@tensor-oss/tcomp-sdk": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@tensor-oss/tcomp-sdk/-/tcomp-sdk-6.0.0.tgz", - "integrity": "sha512-WEYOcd+sOB+5DQe1usCfAEQUjX46L3HYElgG8rZ3bL9ceIwQNKwncKkRM2EM+pPerH50ZRNUNd4SI1ZUYlwJtw==", - "license": "MIT", - "dependencies": { - "@coral-xyz/anchor": "0.26.0", - "@metaplex-foundation/mpl-bubblegum": "~0.8.0", - "@metaplex-foundation/mpl-core": "^0.4.3", - "@metaplex-foundation/mpl-token-metadata": "^2.13.0", - "@metaplex-foundation/mpl-toolbox": "^0.9.4", - "@metaplex-foundation/umi": "^0.9.1", - "@metaplex-foundation/umi-rpc-web3js": "^0.9.1", - "@msgpack/msgpack": "^3.0.0-beta2", - "@solana/spl-account-compression": "^0.1.7", - "@solana/spl-token": "^0.4.0", - "@solana/web3.js": "^1.75.0", - "@tensor-hq/tensor-common": "^8.0.8", - "@tensor-hq/tensor-tests-common": "^0.6.0", - "@tensor-oss/tensorswap-sdk": "^4.4.2", - "bn.js": "^5.2.1", - "borsh": "^0.7.0", - "js-sha256": "^0.9.0", - "js-sha3": "^0.8.0", - "math-expression-evaluator": "^2.0.4" - } - }, - "node_modules/@tensor-oss/tcomp-sdk/node_modules/@coral-xyz/anchor": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.26.0.tgz", - "integrity": "sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==", - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "@coral-xyz/borsh": "^0.26.0", - "@solana/web3.js": "^1.68.0", - "base64-js": "^1.5.1", - "bn.js": "^5.1.2", - "bs58": "^4.0.1", - "buffer-layout": "^1.2.2", - "camelcase": "^6.3.0", - "cross-fetch": "^3.1.5", - "crypto-hash": "^1.3.0", - "eventemitter3": "^4.0.7", - "js-sha256": "^0.9.0", - "pako": "^2.0.3", - "snake-case": "^3.0.4", - "superstruct": "^0.15.4", - "toml": "^3.0.0" - }, - "engines": { - "node": ">=11" - } - }, - "node_modules/@tensor-oss/tcomp-sdk/node_modules/@coral-xyz/borsh": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.26.0.tgz", - "integrity": "sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==", - "license": "Apache-2.0", - "dependencies": { - "bn.js": "^5.1.2", - "buffer-layout": "^1.2.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@solana/web3.js": "^1.68.0" - } - }, - "node_modules/@tensor-oss/tcomp-sdk/node_modules/@metaplex-foundation/mpl-core": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-core/-/mpl-core-0.4.7.tgz", - "integrity": "sha512-0PvzYp0u3NrstbUzAL6nsUkvSUJukUQCa5CRUx23jrNPsO0nejsgKpx8RqaqrCCYKt2lZnq8TRzHQPBqFkVQIg==", - "license": "Apache-2.0", - "peerDependencies": { - "@metaplex-foundation/umi": ">=0.8.2 < 1", - "@noble/hashes": "^1.3.1" - } - }, - "node_modules/@tensor-oss/tcomp-sdk/node_modules/@metaplex-foundation/mpl-token-metadata": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-2.13.0.tgz", - "integrity": "sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==", - "license": "MIT", - "dependencies": { - "@metaplex-foundation/beet": "^0.7.1", - "@metaplex-foundation/beet-solana": "^0.4.0", - "@metaplex-foundation/cusper": "^0.0.2", - "@solana/spl-token": "^0.3.6", - "@solana/web3.js": "^1.66.2", - "bn.js": "^5.2.0", - "debug": "^4.3.4" - } - }, - "node_modules/@tensor-oss/tcomp-sdk/node_modules/@metaplex-foundation/mpl-token-metadata/node_modules/@solana/spl-token": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", - "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", - "license": "Apache-2.0", - "dependencies": { - "@solana/buffer-layout": "^4.0.0", - "@solana/buffer-layout-utils": "^0.2.0", - "@solana/spl-token-metadata": "^0.1.2", - "buffer": "^6.0.3" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.88.0" - } - }, - "node_modules/@tensor-oss/tcomp-sdk/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@tensor-oss/tcomp-sdk/node_modules/borsh": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", - "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", - "license": "Apache-2.0", - "dependencies": { - "bn.js": "^5.2.0", - "bs58": "^4.0.0", - "text-encoding-utf-8": "^1.0.2" - } - }, - "node_modules/@tensor-oss/tcomp-sdk/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@tensor-oss/tensorswap-sdk": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@tensor-oss/tensorswap-sdk/-/tensorswap-sdk-4.5.0.tgz", - "integrity": "sha512-eNM6k1DT5V/GadxSHm8//z2wlLl8/EcA0KFQXKaxRba/2MirNySsoVGxDXO2UdOI4eZMse8f+8Et3P63WWjsIw==", - "license": "MIT", - "dependencies": { - "@coral-xyz/anchor": "^0.26.0", - "@msgpack/msgpack": "^2.8.0", - "@saberhq/solana-contrib": "^1.14.11", - "@solana/spl-token": "^0.4.0", - "@solana/web3.js": "^1.73.0", - "@tensor-hq/tensor-common": "^8.0.8", - "@types/bn.js": "^5.1.0", - "big.js": "^6.2.1", - "bn.js": "^5.2.0", - "js-sha256": "^0.9.0", - "keccak256": "^1.0.6", - "math-expression-evaluator": "^2.0.4", - "merkletreejs": "^0.3.11", - "uuid": "^8.3.2" - } - }, - "node_modules/@tensor-oss/tensorswap-sdk/node_modules/@coral-xyz/anchor": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.26.0.tgz", - "integrity": "sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==", - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "@coral-xyz/borsh": "^0.26.0", - "@solana/web3.js": "^1.68.0", - "base64-js": "^1.5.1", - "bn.js": "^5.1.2", - "bs58": "^4.0.1", - "buffer-layout": "^1.2.2", - "camelcase": "^6.3.0", - "cross-fetch": "^3.1.5", - "crypto-hash": "^1.3.0", - "eventemitter3": "^4.0.7", - "js-sha256": "^0.9.0", - "pako": "^2.0.3", - "snake-case": "^3.0.4", - "superstruct": "^0.15.4", - "toml": "^3.0.0" - }, - "engines": { - "node": ">=11" - } - }, - "node_modules/@tensor-oss/tensorswap-sdk/node_modules/@coral-xyz/borsh": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.26.0.tgz", - "integrity": "sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==", - "license": "Apache-2.0", - "dependencies": { - "bn.js": "^5.1.2", - "buffer-layout": "^1.2.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@solana/web3.js": "^1.68.0" - } - }, - "node_modules/@tensor-oss/tensorswap-sdk/node_modules/@msgpack/msgpack": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@msgpack/msgpack/-/msgpack-2.8.0.tgz", - "integrity": "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==", - "license": "ISC", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tensor-oss/tensorswap-sdk/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@tensor-oss/tensorswap-sdk/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@tensor-oss/tensorswap-sdk/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@tiplink/api": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@tiplink/api/-/api-0.3.1.tgz", - "integrity": "sha512-HjnXethjKOHTYT0IP1BewlMS7wZJ+hsoDgRa6jA1cNvxvwQjE1WHOyvOUPpAi+DJDw4P4/omFtyHr7dwLfnB/g==", - "license": "LicenseRef-LICENSE", - "dependencies": { - "@coral-xyz/anchor": "^0.29.0", - "@solana/spl-token": "^0.3.10", - "@solana/web3.js": "^1.48.0", - "bs58": "^5.0.0", - "libsodium": "^0.7.11", - "libsodium-wrappers-sumo": "^0.7.11", - "nanoid": "^3.3.6", - "sodium-plus": "^0.9.0", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.1", - "typescript": "^4.7.4" - } - }, - "node_modules/@tiplink/api/node_modules/@solana/spl-token": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", - "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", - "license": "Apache-2.0", - "dependencies": { - "@solana/buffer-layout": "^4.0.0", - "@solana/buffer-layout-utils": "^0.2.0", - "@solana/spl-token-metadata": "^0.1.2", - "buffer": "^6.0.3" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@solana/web3.js": "^1.88.0" - } - }, - "node_modules/@tiplink/api/node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", - "license": "MIT" - }, - "node_modules/@tiplink/api/node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "license": "MIT", - "dependencies": { - "base-x": "^4.0.0" - } - }, - "node_modules/@tiplink/api/node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/bn.js": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", - "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/chai": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.0.1.tgz", - "integrity": "sha512-5T8ajsg3M/FOncpLYW7sdOcD6yf4+722sze/tc4KQV0P8Z2rAr3SAuHCIkYmYpt8VbcQlnz8SxlOlPQYefe4cA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "license": "MIT" - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "form-data": "^4.0.0" - } - }, - "node_modules/@types/promise-retry": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@types/promise-retry/-/promise-retry-1.1.6.tgz", - "integrity": "sha512-EC1+OMXV0PZb0pf+cmyxc43MEP2CDumZe4AfuxWboxxEixztIebknpJPZAX5XlodGF1OY+C1E/RAeNGzxf+bJA==", - "license": "MIT", - "dependencies": { - "@types/retry": "*" - } - }, - "node_modules/@types/retry": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.5.tgz", - "integrity": "sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==", - "license": "MIT" - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "license": "MIT" - }, - "node_modules/@types/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "license": "MIT" - }, - "node_modules/@types/ws": { - "version": "8.5.13", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", - "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", - "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/type-utils": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", - "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", - "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", - "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==", - "license": "ISC" - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agentkeepalive": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", - "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", - "license": "MIT", - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", - "license": "MIT" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/assert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", - "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "is-nan": "^1.3.2", - "object-is": "^1.1.5", - "object.assign": "^4.1.4", - "util": "^0.12.5" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/axios-retry": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.9.1.tgz", - "integrity": "sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==", - "license": "Apache-2.0", - "dependencies": { - "@babel/runtime": "^7.15.4", - "is-retry-allowed": "^2.2.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base-x": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.0.tgz", - "integrity": "sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/big-integer": { - "version": "1.6.52", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", - "license": "Unlicense", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/big.js": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.2.tgz", - "integrity": "sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==", - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bigjs" - } - }, - "node_modules/bigint-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz", - "integrity": "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==", - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "bindings": "^1.3.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/bignumber.js": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", - "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "license": "MIT", - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "license": "MIT" - }, - "node_modules/borsh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-2.0.0.tgz", - "integrity": "sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==", - "license": "Apache-2.0" - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/bs58": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", - "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", - "license": "MIT", - "dependencies": { - "base-x": "^5.0.0" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-layout": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/buffer-layout/-/buffer-layout-1.2.2.tgz", - "integrity": "sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==", - "license": "MIT", - "engines": { - "node": ">=4.5" - } - }, - "node_modules/buffer-reverse": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz", - "integrity": "sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==", - "license": "MIT" - }, - "node_modules/bufferutil": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", - "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chai": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", - "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", - "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/chai-as-promised": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", - "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", - "license": "WTFPL", - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 6" - } - }, - "node_modules/chai-as-promised/node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-fetch": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", - "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-hash": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/crypto-hash/-/crypto-hash-1.3.0.tgz", - "integrity": "sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/crypto-js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", - "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", - "license": "MIT" - }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "license": "MIT" - }, - "node_modules/decimal.js-light": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", - "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", - "license": "MIT" - }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delay": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", - "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "license": "MIT", - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/emoji-regex-xs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", - "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", - "license": "MIT" - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "license": "MIT" - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "license": "MIT" - }, - "node_modules/es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", - "license": "MIT", - "dependencies": { - "es6-promise": "^4.0.3" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", - "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.9.1" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": "*", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ethereum-bloom-filters": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz", - "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "^1.4.0" - } - }, - "node_modules/ethereum-cryptography": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", - "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", - "license": "MIT", - "dependencies": { - "@noble/curves": "1.4.2", - "@noble/hashes": "1.4.0", - "@scure/bip32": "1.4.0", - "@scure/bip39": "1.3.0" - } - }, - "node_modules/ethereum-cryptography/node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/ethereum-cryptography/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", - "license": "MIT", - "dependencies": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/ethjs-unit/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "license": "MIT" - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" - }, - "node_modules/exponential-backoff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "license": "Apache-2.0" - }, - "node_modules/eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", - "engines": { - "node": "> 0.1.90" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-stable-stringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", - "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==", - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", - "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "license": "MIT" - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", - "dev": true, - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data-encoder": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", - "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", - "license": "MIT" - }, - "node_modules/formdata-node": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", - "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", - "license": "MIT", - "dependencies": { - "node-domexception": "1.0.0", - "web-streams-polyfill": "4.0.0-beta.3" - }, - "engines": { - "node": ">= 12.20" - } - }, - "node_modules/formdata-node/node_modules/web-streams-polyfill": { - "version": "4.0.0-beta.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", - "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", - "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "function-bind": "^1.1.2", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC", - "optional": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/graphemesplit": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/graphemesplit/-/graphemesplit-2.4.4.tgz", - "integrity": "sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w==", - "license": "MIT", - "dependencies": { - "js-base64": "^3.6.0", - "unicode-trie": "^2.0.0" - } - }, - "node_modules/groq-sdk": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/groq-sdk/-/groq-sdk-0.5.0.tgz", - "integrity": "sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw==", - "license": "Apache-2.0", - "dependencies": { - "@types/node": "^18.11.18", - "@types/node-fetch": "^2.6.4", - "abort-controller": "^3.0.0", - "agentkeepalive": "^4.2.1", - "form-data-encoder": "1.7.2", - "formdata-node": "^4.3.2", - "node-fetch": "^2.6.7", - "web-streams-polyfill": "^3.2.1" - } - }, - "node_modules/groq-sdk/node_modules/@types/node": { - "version": "18.19.68", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.68.tgz", - "integrity": "sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==", - "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/groq-sdk/node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "license": "MIT" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hast-util-to-html": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz", - "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", - "license": "MIT", - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-retry-allowed": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", - "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", - "license": "MIT", - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/jayson": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.3.tgz", - "integrity": "sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==", - "license": "MIT", - "dependencies": { - "@types/connect": "^3.4.33", - "@types/node": "^12.12.54", - "@types/ws": "^7.4.4", - "commander": "^2.20.3", - "delay": "^5.0.0", - "es6-promisify": "^5.0.0", - "eyes": "^0.1.8", - "isomorphic-ws": "^4.0.1", - "json-stringify-safe": "^5.0.1", - "JSONStream": "^1.3.5", - "uuid": "^8.3.2", - "ws": "^7.5.10" - }, - "bin": { - "jayson": "bin/jayson.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jayson/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "license": "MIT" - }, - "node_modules/jayson/node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/jayson/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" - }, - "node_modules/jayson/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/jayson/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", - "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 - } - } - }, - "node_modules/js-base64": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", - "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==", - "license": "BSD-3-Clause" - }, - "node_modules/js-sha256": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", - "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==", - "license": "MIT" - }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "license": "MIT" - }, - "node_modules/js-tiktoken": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/js-tiktoken/-/js-tiktoken-1.0.16.tgz", - "integrity": "sha512-nUVdO5k/M9llWpiaZlBBDdtmr6qWXwSD6fgaDu2zM8UP+OXxx9V37lFkI6w0/1IuaDx7WffZ37oYd9KvcWKElg==", - "license": "MIT", - "dependencies": { - "base64-js": "^1.5.1" - } - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "license": "ISC" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "node_modules/jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/keccak": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", - "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/keccak256": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", - "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", - "license": "MIT", - "dependencies": { - "bn.js": "^5.2.0", - "buffer": "^6.0.3", - "keccak": "^3.0.2" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/langchain": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/langchain/-/langchain-0.3.8.tgz", - "integrity": "sha512-EiAHFgBdThuXFmIx9j81wjdPItpRsw0Ck4r5dyhB74gyhehRGna/UK2CTqeKVnIUM/f4g4JbxUgAU4voXljDMw==", - "license": "MIT", - "dependencies": { - "@langchain/openai": ">=0.1.0 <0.4.0", - "@langchain/textsplitters": ">=0.0.0 <0.2.0", - "js-tiktoken": "^1.0.12", - "js-yaml": "^4.1.0", - "jsonpointer": "^5.0.1", - "langsmith": "^0.2.8", - "openapi-types": "^12.1.3", - "p-retry": "4", - "uuid": "^10.0.0", - "yaml": "^2.2.1", - "zod": "^3.22.4", - "zod-to-json-schema": "^3.22.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/anthropic": "*", - "@langchain/aws": "*", - "@langchain/cohere": "*", - "@langchain/core": ">=0.2.21 <0.4.0", - "@langchain/google-genai": "*", - "@langchain/google-vertexai": "*", - "@langchain/groq": "*", - "@langchain/mistralai": "*", - "@langchain/ollama": "*", - "axios": "*", - "cheerio": "*", - "handlebars": "^4.7.8", - "peggy": "^3.0.2", - "typeorm": "*" - }, - "peerDependenciesMeta": { - "@langchain/anthropic": { - "optional": true - }, - "@langchain/aws": { - "optional": true - }, - "@langchain/cohere": { - "optional": true - }, - "@langchain/google-genai": { - "optional": true - }, - "@langchain/google-vertexai": { - "optional": true - }, - "@langchain/groq": { - "optional": true - }, - "@langchain/mistralai": { - "optional": true - }, - "@langchain/ollama": { - "optional": true - }, - "axios": { - "optional": true - }, - "cheerio": { - "optional": true - }, - "handlebars": { - "optional": true - }, - "peggy": { - "optional": true - }, - "typeorm": { - "optional": true - } - } - }, - "node_modules/langsmith": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.2.14.tgz", - "integrity": "sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==", - "license": "MIT", - "dependencies": { - "@types/uuid": "^10.0.0", - "commander": "^10.0.1", - "p-queue": "^6.6.2", - "p-retry": "4", - "semver": "^7.6.3", - "uuid": "^10.0.0" - }, - "peerDependencies": { - "openai": "*" - }, - "peerDependenciesMeta": { - "openai": { - "optional": true - } - } - }, - "node_modules/langsmith/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/libsodium": { - "version": "0.7.15", - "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.15.tgz", - "integrity": "sha512-sZwRknt/tUpE2AwzHq3jEyUU5uvIZHtSssktXq7owd++3CSgn8RGrv6UZJJBpP7+iBghBqe7Z06/2M31rI2NKw==", - "license": "ISC" - }, - "node_modules/libsodium-sumo": { - "version": "0.7.15", - "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.15.tgz", - "integrity": "sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==", - "license": "ISC" - }, - "node_modules/libsodium-wrappers": { - "version": "0.7.15", - "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.15.tgz", - "integrity": "sha512-E4anqJQwcfiC6+Yrl01C1m8p99wEhLmJSs0VQqST66SbQXXBoaJY0pF4BNjRYa/sOQAxx6lXAaAFIlx+15tXJQ==", - "license": "ISC", - "dependencies": { - "libsodium": "^0.7.15" - } - }, - "node_modules/libsodium-wrappers-sumo": { - "version": "0.7.15", - "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.15.tgz", - "integrity": "sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==", - "license": "ISC", - "dependencies": { - "libsodium-sumo": "^0.7.15" - } - }, - "node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "license": "MIT", - "dependencies": { - "uc.micro": "^2.0.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/loupe": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", - "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", - "license": "MIT" - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "license": "MIT" - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, - "node_modules/math-expression-evaluator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-2.0.6.tgz", - "integrity": "sha512-DRung1qNcKbgkhFeQ0fBPUFB6voRUMY7KyRyp1TRQ2v95Rp2egC823xLRooM1mDx1rmbkY7ym6ZWmpaE/VimOA==", - "license": "MIT" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", - "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/merkletreejs": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.3.11.tgz", - "integrity": "sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==", - "license": "MIT", - "dependencies": { - "bignumber.js": "^9.0.1", - "buffer-reverse": "^1.0.1", - "crypto-js": "^4.2.0", - "treeify": "^1.1.0", - "web3-utils": "^1.3.4" - }, - "engines": { - "node": ">= 7.6.0" - } - }, - "node_modules/micro-ftch": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", - "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", - "license": "MIT" - }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", - "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "license": "ISC" - }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/mustache": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", - "license": "MIT", - "bin": { - "mustache": "bin/mustache" - } - }, - "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "license": "MIT" - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", - "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", - "license": "MIT", - "dependencies": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/number-to-bn/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", - "license": "MIT" - }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/oniguruma-to-es": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.8.1.tgz", - "integrity": "sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==", - "license": "MIT", - "dependencies": { - "emoji-regex-xs": "^1.0.0", - "regex": "^5.0.2", - "regex-recursion": "^5.0.0" - } - }, - "node_modules/openai": { - "version": "4.77.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.77.0.tgz", - "integrity": "sha512-WWacavtns/7pCUkOWvQIjyOfcdr9X+9n9Vvb0zFeKVDAqwCMDHB+iSr24SVaBAhplvSG6JrRXFpcNM9gWhOGIw==", - "license": "Apache-2.0", - "dependencies": { - "@types/node": "^18.11.18", - "@types/node-fetch": "^2.6.4", - "abort-controller": "^3.0.0", - "agentkeepalive": "^4.2.1", - "form-data-encoder": "1.7.2", - "formdata-node": "^4.3.2", - "node-fetch": "^2.6.7" - }, - "bin": { - "openai": "bin/cli" - }, - "peerDependencies": { - "zod": "^3.23.8" - }, - "peerDependenciesMeta": { - "zod": { - "optional": true - } - } - }, - "node_modules/openai/node_modules/@types/node": { - "version": "18.19.68", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.68.tgz", - "integrity": "sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==", - "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/openai/node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "license": "MIT" - }, - "node_modules/openapi-types": { - "version": "12.1.3", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", - "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", - "license": "MIT" - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "license": "MIT", - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-retry/node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "license": "MIT" - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pako": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", - "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", - "license": "(MIT AND Zlib)" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/poly1305-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/poly1305-js/-/poly1305-js-0.4.4.tgz", - "integrity": "sha512-5B6/S+vg5AOr66wJDkh5LOpU/F3EKANDy4VXKsNZLXea1uCy6CiOWOZ3VhcC0nYdhE7vJUMcLxqcVlrv2g/+Rg==", - "license": "ISC", - "dependencies": { - "big-integer": "^1.6.51" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/promise-retry/node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" - }, - "node_modules/regex": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", - "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-recursion": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", - "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", - "license": "MIT", - "dependencies": { - "regex": "^5.1.1", - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-utilities": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", - "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", - "license": "MIT" - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rpc-websockets": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.0.4.tgz", - "integrity": "sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==", - "license": "LGPL-3.0-only", - "dependencies": { - "@swc/helpers": "^0.5.11", - "@types/uuid": "^8.3.4", - "@types/ws": "^8.2.2", - "buffer": "^6.0.3", - "eventemitter3": "^5.0.1", - "uuid": "^8.3.2", - "ws": "^8.5.0" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/kozjak" - }, - "optionalDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - } - }, - "node_modules/rpc-websockets/node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", - "license": "MIT" - }, - "node_modules/rpc-websockets/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/rpc-websockets/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/semaphore": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", - "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shiki": { - "version": "1.24.4", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.24.4.tgz", - "integrity": "sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==", - "license": "MIT", - "dependencies": { - "@shikijs/core": "1.24.4", - "@shikijs/engine-javascript": "1.24.4", - "@shikijs/engine-oniguruma": "1.24.4", - "@shikijs/types": "1.24.4", - "@shikijs/vscode-textmate": "^9.3.1", - "@types/hast": "^3.0.4" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/sodium-plus": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/sodium-plus/-/sodium-plus-0.9.0.tgz", - "integrity": "sha512-WWKxrd81qDL7C1A10yxNmZ135yovEZuIRnZ/BIf/FcajYBupbKbPdgzwlusPHLVxkMDDamcarq9PxxRBUSqpCw==", - "license": "ISC", - "dependencies": { - "buffer": "^5.6.0", - "libsodium-wrappers": "^0.7.6", - "poly1305-js": "^0.4.2", - "typedarray-to-buffer": "^3.1.5", - "xsalsa20": "^1.1.0" - }, - "peerDependencies": { - "sodium-native": "^3.2.0" - } - }, - "node_modules/sodium-plus/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/stringify-entities": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", - "license": "MIT", - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", - "license": "MIT", - "dependencies": { - "is-hex-prefixed": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/superstruct": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz", - "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==", - "license": "MIT" - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/synckit": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", - "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/text-encoding-utf-8": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", - "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "license": "MIT" - }, - "node_modules/tiny-inflate": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", - "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", - "license": "MIT" - }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "license": "MIT" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toformat": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/toformat/-/toformat-2.0.0.tgz", - "integrity": "sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==", - "license": "MIT" - }, - "node_modules/toml": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", - "license": "MIT" - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/treeify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", - "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/ts-log": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.7.tgz", - "integrity": "sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==", - "license": "MIT" - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "license": "MIT", - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "license": "Unlicense" - }, - "node_modules/tweetnacl-util": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "license": "Unlicense" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "license": "MIT", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typedoc": { - "version": "0.26.11", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.11.tgz", - "integrity": "sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==", - "license": "Apache-2.0", - "dependencies": { - "lunr": "^2.3.9", - "markdown-it": "^14.1.0", - "minimatch": "^9.0.5", - "shiki": "^1.16.2", - "yaml": "^2.5.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x" - } - }, - "node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-collections": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/typescript-collections/-/typescript-collections-1.3.3.tgz", - "integrity": "sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==", - "license": "MIT" - }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "license": "MIT" - }, - "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, - "node_modules/unicode-trie": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", - "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", - "license": "MIT", - "dependencies": { - "pako": "^0.2.5", - "tiny-inflate": "^1.0.0" - } - }, - "node_modules/unicode-trie/node_modules/pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", - "license": "MIT" - }, - "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", - "license": "MIT" - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" - }, - "node_modules/vfile": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", - "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/web3-utils": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz", - "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", - "license": "LGPL-3.0", - "dependencies": { - "@ethereumjs/util": "^8.1.0", - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereum-cryptography": "^2.1.2", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xsalsa20": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/xsalsa20/-/xsalsa20-1.2.0.tgz", - "integrity": "sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w==", - "license": "MIT" - }, - "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zod": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", - "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/zod-to-json-schema": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz", - "integrity": "sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==", - "license": "ISC", - "peerDependencies": { - "zod": "^3.24.1" - } - }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - } -} From 284338af5432170a679d6639c7dae03e2873f922 Mon Sep 17 00:00:00 2001 From: DonDuala Date: Sun, 29 Dec 2024 21:57:51 -0400 Subject: [PATCH 24/94] Add limit order support on Manifest --- src/agent/index.ts | 10 +++++ src/langchain/index.ts | 46 +++++++++++++++++++++- src/tools/index.ts | 1 + src/tools/limit_order.ts | 83 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 src/tools/limit_order.ts diff --git a/src/agent/index.ts b/src/agent/index.ts index b46b415..20dd44a 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -20,6 +20,7 @@ import { registerDomain, request_faucet_funds, trade, + limitOrder, transfer, getTokenDataByAddress, getTokenDataByTicker, @@ -138,6 +139,15 @@ export class SolanaAgentKit { return trade(this, outputMint, inputAmount, inputMint, slippageBps); } + async limitOrder( + marketId: PublicKey, + quantity: number, + side: string, + price: number, + ): Promise { + return limitOrder(this, marketId, quantity, side, price); + } + async lendAssets(amount: number): Promise { return lendAsset(this, amount); } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 9c74a84..859c26e 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -264,6 +264,50 @@ export class SolanaTradeTool extends Tool { } } +export class SolanaLimitOrderTool extends Tool { + name = "solana_limit_order"; + description = `This tool can be used to place limit orders using Manifest. + + Inputs ( input is a JSON string ): + marketId: PublicKey, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required) + quantity: number, eg 1 or 0.01 (required) + side: string, eg "Buy" or "Sell" (required) + price: number, in tokens eg 200 for SOL/USDC (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const tx = await this.solanaKit.limitOrder( + parsedInput.marketId, + parsedInput.quantity, + parsedInput.side, + parsedInput.price, + ); + + return JSON.stringify({ + status: "success", + message: "Trade executed successfully", + transaction: tx, + marketId: parsedInput.marketId, + quantity: parsedInput.quantity, + side: parsedInput.side, + price: parsedInput.price, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + export class SolanaRequestFundsTool extends Tool { name = "solana_request_funds"; description = "Request SOL from Solana faucet (devnet/testnet only)"; @@ -1026,8 +1070,6 @@ export class SolanaManifestCreateMarket extends Tool { } } -// TODO: Add limit order support - export class SolanaPythFetchPrice extends Tool { name = "solana_pyth_fetch_price"; description = `Fetch the price of a given price feed from Pyth's Hermes service diff --git a/src/tools/index.ts b/src/tools/index.ts index 7289ca9..fa43a9e 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -5,6 +5,7 @@ export * from "./get_balance"; export * from "./mint_nft"; export * from "./transfer"; export * from "./trade"; +export * from "./limit_order"; export * from "./register_domain"; export * from "./resolve_sol_domain"; export * from "./get_primary_domain"; diff --git a/src/tools/limit_order.ts b/src/tools/limit_order.ts new file mode 100644 index 0000000..e2c7b9d --- /dev/null +++ b/src/tools/limit_order.ts @@ -0,0 +1,83 @@ +import { + PublicKey, + Transaction, + sendAndConfirmTransaction, + TransactionInstruction, +} from "@solana/web3.js"; +import { SolanaAgentKit } from "../index"; +import { + ManifestClient, + WrapperPlaceOrderParamsExternal, +} from "@cks-systems/manifest-sdk"; +import { sleep } from "openai/core"; +import { OrderType } from "@cks-systems/manifest-sdk/dist/types/src/manifest"; + +/** + * Place limit orders using Manifest + * @param agent SolanaAgentKit instance + * @param marketId Public key for the manifest market + * @param quantity Amount to trade in tokens + * @param side Buy or Sell + * @param price Price in tokens ie. SOL/USDC + * @returns Transaction signature + */ +export async function limitOrder( + agent: SolanaAgentKit, + marketId: PublicKey, + quantity: number, + side: string, + price: number, +): Promise { + try { + const { setupNeeded, instructions, wrapperKeypair } = + await ManifestClient.getSetupIxs( + agent.connection, + marketId, + agent.wallet.publicKey, + ); + + if (setupNeeded) { + const tx = new Transaction().add(...instructions); + const { blockhash } = await agent.connection.getLatestBlockhash(); + tx.recentBlockhash = blockhash; + tx.feePayer = agent.wallet.publicKey!; + if (wrapperKeypair) { + tx.sign(wrapperKeypair); + } + + await sendAndConfirmTransaction(agent.connection, tx, [agent.wallet]); + + await sleep(5_000); + } + + const mfxClient = await ManifestClient.getClientForMarket( + agent.connection, + marketId, + agent.wallet, + ); + + const orderParams: WrapperPlaceOrderParamsExternal = { + numBaseTokens: quantity, + tokenPrice: price, + isBid: side === "buy", + lastValidSlot: 0, + orderType: OrderType.Limit, + clientOrderId: Number(Math.random() * 1000), + }; + + const depositPlaceOrderIx: TransactionInstruction[] = + await mfxClient.placeOrderWithRequiredDepositIx( + agent.wallet.publicKey, + orderParams, + ); + const signature = await sendAndConfirmTransaction( + agent.connection, + new Transaction().add(...depositPlaceOrderIx), + [agent.wallet], + ); + + return signature; + } catch (error: any) { + throw new Error(`Limit Order failed: ${error.message}`); + } +} From 8428d99e4b4ef36616098c7030d3823d54dbc089 Mon Sep 17 00:00:00 2001 From: DonDuala Date: Sun, 29 Dec 2024 22:25:23 -0400 Subject: [PATCH 25/94] Fix order type import --- package.json | 2 +- src/tools/limit_order.ts | 2 +- yarn.lock | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index af96c24..c77d5aa 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,8 @@ "license": "Apache-2.0", "dependencies": { "@bonfida/spl-name-service": "^3.0.7", + "@cks-systems/manifest-sdk": "^0.1.73", "@coral-xyz/anchor": "0.29", - "@cks-systems/manifest-sdk": "^0.1.59", "@langchain/core": "^0.3.26", "@langchain/groq": "^0.1.2", "@langchain/langgraph": "^0.2.34", diff --git a/src/tools/limit_order.ts b/src/tools/limit_order.ts index e2c7b9d..5d8b4a6 100644 --- a/src/tools/limit_order.ts +++ b/src/tools/limit_order.ts @@ -9,8 +9,8 @@ import { ManifestClient, WrapperPlaceOrderParamsExternal, } from "@cks-systems/manifest-sdk"; +import { OrderType } from "@cks-systems/manifest-sdk/client/ts/src/wrapper/types/OrderType"; import { sleep } from "openai/core"; -import { OrderType } from "@cks-systems/manifest-sdk/dist/types/src/manifest"; /** * Place limit orders using Manifest diff --git a/yarn.lock b/yarn.lock index 179404c..a11e545 100644 --- a/yarn.lock +++ b/yarn.lock @@ -38,7 +38,7 @@ resolved "https://registry.yarnpkg.com/@cfworker/json-schema/-/json-schema-4.0.3.tgz#30fc6b72322c74ceb27014a779de0ccdfa0dfb9e" integrity sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g== -"@cks-systems/manifest-sdk@^0.1.59": +"@cks-systems/manifest-sdk@^0.1.73": version "0.1.73" resolved "https://registry.yarnpkg.com/@cks-systems/manifest-sdk/-/manifest-sdk-0.1.73.tgz#17c7b2f71c2711989cf210815d78b189e40fe481" integrity sha512-IcRM7k3YZ/jK5nJwE3xGp2Xg7Um4/XCeqrLs5yB3+IjS7W089Qs/prJXdRGKbFwCLkMt9ds6pElHufQr8an0Iw== From 1e1588b3fc324bd273af71e01460dba73a9e59a8 Mon Sep 17 00:00:00 2001 From: calintje Date: Mon, 30 Dec 2024 04:53:28 +0100 Subject: [PATCH 26/94] Finish Orca tools --- src/agent/index.ts | 46 +- src/langchain/index.ts | 137 ++++- src/tools/deploy_token.ts | 2 +- src/tools/index.ts | 3 + src/tools/orca_close_position.ts | 78 +++ src/tools/orca_create_clmm.ts | 33 +- ...orca_create_single_sided_liquidity_pool.ts | 568 +++++++++--------- src/tools/orca_fetch_positions.ts | 104 ++++ ...a_open_centered_position_with_liquidity.ts | 14 +- src/tools/orca_open_single_sided_position.ts | 169 ++++++ src/utils/send_tx.ts | 7 +- test/index.ts | 2 +- 12 files changed, 843 insertions(+), 320 deletions(-) create mode 100644 src/tools/orca_close_position.ts create mode 100644 src/tools/orca_fetch_positions.ts diff --git a/src/agent/index.ts b/src/agent/index.ts index b39eaa7..da2e489 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -27,6 +27,7 @@ import { orcaCreateSingleSidedLiquidityPool, orcaCreateCLMM, orcaOpenCenteredPositionWithLiquidity, + orcaOpenSingleSidedPosition, FEE_TIERS, fetchPrice, pythFetchPrice, @@ -37,6 +38,8 @@ import { getOwnedAllDomains, resolveAllDomains, create_gibwork_task, + orcaClosePosition, + orcaFetchPositions, } from "../tools"; import { @@ -202,23 +205,32 @@ export class SolanaAgentKit { ); } + async orcaClosePosition( + positionMintAddress: PublicKey, + ) { + return orcaClosePosition( + this, + positionMintAddress, + ); + } + async orcaCreateCLMM( - mintA: PublicKey, - mintB: PublicKey, + mintDeploy: PublicKey, + mintPair: PublicKey, initialPrice: Decimal, feeTier: keyof typeof FEE_TIERS, ) { return orcaCreateCLMM( this, - mintA, - mintB, + mintDeploy, + mintPair, initialPrice, feeTier, ); } async orcaCreateSingleSidedLiquidityPool( - depositTokenAmount: BN, + depositTokenAmount: number, depositTokenMint: PublicKey, otherTokenMint: PublicKey, initialPrice: Decimal, @@ -236,6 +248,13 @@ export class SolanaAgentKit { ); } + async orcaFetchPositions( + ) { + return orcaFetchPositions( + this, + ); + } + async orcaOpenCenteredPositionWithLiquidity( whirlpoolAddress: PublicKey, priceOffsetBps: number, @@ -251,6 +270,23 @@ export class SolanaAgentKit { ); } + async orcaOpenSingleSidedPosition( + whirlpoolAddress: PublicKey, + distanceFromCurrentPriceBps: number, + widthBps: number, + inputTokenMint: PublicKey, + inputAmount: Decimal, + ): Promise { + return orcaOpenSingleSidedPosition( + this, + whirlpoolAddress, + distanceFromCurrentPriceBps, + widthBps, + inputTokenMint, + inputAmount, + ); + } + async resolveAllDomains(domain: string): Promise { return resolveAllDomains(this, domain); } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 21da295..d627984 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -10,6 +10,7 @@ import { create_image } from "../tools/create_image"; import { BN } from "@coral-xyz/anchor"; import { FEE_TIERS } from "../tools"; import { toJSON } from "../utils/toJSON"; +import { s } from "@raydium-io/raydium-sdk-v2/lib/api-0eb57ba2"; export class SolanaBalanceTool extends Tool { name = "solana_balance"; @@ -754,13 +755,49 @@ export class SolanaCompressedAirdropTool extends Tool { } } +export class SolanaClosePostition extends Tool { + name = "orca_close_position"; + description = `Closes an existing liquidity position in an Orca Whirlpool. This function fetches the position + details using the provided mint address and closes the position with a 1% slippage. + + Inputs (JSON string): + - positionMintAddress: string, the address of the position mint that represents the liquidity position.` + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + const positionMintAddress = new PublicKey(inputFormat.positionMintAddress); + + const txId = await this.solanaKit.orcaClosePosition( + positionMintAddress, + ); + + return JSON.stringify({ + status: "success", + message: "Liquidity position closed successfully.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + export class SolanaOrcaCreateCLMM extends Tool { name = "orca_create_clmm"; - description = `Create a Concentrated Liquidity Market Maker (CLMM) pool on Orca, the most efficient and capital-optimized CLMM on Solana. This function initializes a CLMM pool but does not add liquidity. You can add liquidity later using a centered position or a single-sided position. Single-sided positions are ideal for directional price expectations, acting as sort of a limit call. Centered positions are ideal for generating yield. The tighter, the better. + description = `Create a Concentrated Liquidity Market Maker (CLMM) pool on Orca, the most efficient and capital-optimized CLMM on Solana. This function initializes a CLMM pool but does not add liquidity. You can add liquidity later using a centered position or a single-sided position. Inputs (JSON string): - - mintA: string, mint address of the first token, e.g., "MintAAddress" (required). - - mintB: string, mint address of the second token, e.g., "MintBAddress" (required). + - mintDeploy: string, the mint of the token you want to deploy (required). + - mintPair: string, The mint of the token you want to pair the deployed mint with (required). - initialPrice: number, initial price of mintA in terms of mintB, e.g., 0.001 (required). - feeTier: number, fee tier in bps. Options: 1, 2, 4, 5, 16, 30, 65, 100, 200 (required).`; @@ -771,8 +808,8 @@ export class SolanaOrcaCreateCLMM extends Tool { async _call(input: string): Promise { try { const inputFormat = JSON.parse(input); - const mintA = new PublicKey(inputFormat.mintA); - const mintB = new PublicKey(inputFormat.mintB); + const mintA = new PublicKey(inputFormat.mintDeploy); + const mintB = new PublicKey(inputFormat.mintPair); const initialPrice = new Decimal(inputFormat.initialPrice); const feeTier = inputFormat.feeTier; @@ -828,7 +865,7 @@ export class SolanaOrcaCreateSingleSideLiquidityPool extends Tool { async _call(input: string): Promise { try { const inputFormat = JSON.parse(input); - const depositTokenAmount = new BN(inputFormat.depositTokenAmount); + const depositTokenAmount = inputFormat.depositTokenAmount; const depositTokenMint = new PublicKey(inputFormat.depositTokenMint); const otherTokenMint = new PublicKey(inputFormat.otherTokenMint); const initialPrice = new Decimal(inputFormat.initialPrice); @@ -867,9 +904,37 @@ export class SolanaOrcaCreateSingleSideLiquidityPool extends Tool { } } +export class SolanaOrcaFetchPositions extends Tool { + name = "orca_fetch_positions"; + description = `Fetch all the liquidity positions in an Orca Whirlpool by owner. Returns an object with positiont mint addresses as keys and position status details as values.`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(): Promise { + try { + + const txId = await this.solanaKit.orcaFetchPositions() + + return JSON.stringify({ + status: "success", + message: "Liquidity positions fetched.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + export class SolanaOrcaOpenCenteredPosition extends Tool { name = "orca_open_centered_position_with_liquidity"; - description = `Add liquidity to a CLMM by opening a position in an Orca Whirlpool, the most efficient CLMM on Solana for precise liquidity management. A tighter range concentrates more liquidity, increasing yield potential. This function calculates the required amount of the other token based on the input token and desired offset. Centered positions are ideal for optimizing returns within defined ranges. + description = `Add liquidity to a CLMM by opening a centered position in an Orca Whirlpool, the most efficient liquidity pool on Solana. Inputs (JSON string): - whirlpoolAddress: string, address of the Orca Whirlpool (required). @@ -889,8 +954,8 @@ export class SolanaOrcaOpenCenteredPosition extends Tool { const inputTokenMint = new PublicKey(inputFormat.inputTokenMint); const inputAmount = new Decimal(inputFormat.inputAmount); - if (priceOffsetBps <= 0 || priceOffsetBps > 10_000) { - throw new Error("Invalid priceOffsetBps. It must be greater than 0 and less than or equal to 10,000."); + if (priceOffsetBps < 0 ) { + throw new Error("Invalid distanceFromCurrentPriceBps. It must be equal or greater than 0."); } const txId = await this.solanaKit.orcaOpenCenteredPositionWithLiquidity( @@ -915,6 +980,57 @@ export class SolanaOrcaOpenCenteredPosition extends Tool { } } +export class SolanaOrcaOpenSingleSidedPosition extends Tool { + name = "orca_open_single_sided_position"; + description = `Add liquidity to a CLMM by opening a single-sided position in an Orca Whirlpool, the most efficient liquidity pool on Solana. + + Inputs (JSON string): + - whirlpoolAddress: string, address of the Orca Whirlpool (required). + - distanceFromCurrentPriceBps: number, distance in basis points from the current price for the position (required). + - widthBps: number, width of the position in basis points (required). + - inputTokenMint: string, mint address of the deposit token (required). + - inputAmount: number, amount of the deposit token, e.g., 100.0 (required).`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + const whirlpoolAddress = new PublicKey(inputFormat.whirlpoolAddress); + const distanceFromCurrentPriceBps = inputFormat.distanceFromCurrentPriceBps; + const widthBps = inputFormat.widthBps; + const inputTokenMint = new PublicKey(inputFormat.inputTokenMint); + const inputAmount = new Decimal(inputFormat.inputAmount); + + if (distanceFromCurrentPriceBps < 0 || widthBps < 0) { + throw new Error("Invalid distanceFromCurrentPriceBps or width. It must be equal or greater than 0."); + } + + const txId = await this.solanaKit.orcaOpenSingleSidedPosition( + whirlpoolAddress, + distanceFromCurrentPriceBps, + widthBps, + inputTokenMint, + inputAmount, + ); + + return JSON.stringify({ + status: "success", + message: "Single-sided liquidity position opened successfully.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + export class SolanaRaydiumCreateAmmV4 extends Tool { name = "raydium_create_ammV4"; description = `Raydium's Legacy AMM that requiers an OpenBook marketID @@ -1357,9 +1473,12 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaRaydiumCreateClmm(solanaKit), new SolanaRaydiumCreateCpmm(solanaKit), new SolanaOpenbookCreateMarket(solanaKit), + new SolanaClosePostition(solanaKit), new SolanaOrcaCreateCLMM(solanaKit), new SolanaOrcaCreateSingleSideLiquidityPool(solanaKit), + new SolanaOrcaFetchPositions(solanaKit), new SolanaOrcaOpenCenteredPosition(solanaKit), + new SolanaOrcaOpenSingleSidedPosition(solanaKit), new SolanaPythFetchPrice(solanaKit), new SolanaResolveDomainTool(solanaKit), new SolanaGetOwnedDomains(solanaKit), diff --git a/src/tools/deploy_token.ts b/src/tools/deploy_token.ts index 7532eef..798e020 100644 --- a/src/tools/deploy_token.ts +++ b/src/tools/deploy_token.ts @@ -59,7 +59,7 @@ export async function deploy_token( mint: mint.publicKey, tokenStandard: TokenStandard.Fungible, tokenOwner: fromWeb3JsPublicKey(agent.wallet_address), - amount: initialSupply, + amount: initialSupply * Math.pow(10, decimals), }), ); } diff --git a/src/tools/index.ts b/src/tools/index.ts index a87f931..863a68a 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -15,9 +15,12 @@ export * from "./get_token_data"; export * from "./stake_with_jup"; export * from "./fetch_price"; export * from "./send_compressed_airdrop"; +export * from "./orca_close_position" export * from "./orca_create_clmm"; export * from "./orca_create_single_sided_liquidity_pool"; +export * from "./orca_fetch_positions"; export * from "./orca_open_centered_position_with_liquidity"; +export * from "./orca_open_single_sided_position"; export * from "./get_all_domains_tlds"; export * from "./get_all_registered_all_domains"; export * from "./get_owned_domains_for_tld"; diff --git a/src/tools/orca_close_position.ts b/src/tools/orca_close_position.ts new file mode 100644 index 0000000..976d6fc --- /dev/null +++ b/src/tools/orca_close_position.ts @@ -0,0 +1,78 @@ +import { + Keypair, + PublicKey, + TransactionMessage, + VersionedTransaction +} from "@solana/web3.js"; +import { SolanaAgentKit } from "../agent"; +import { Wallet } from "@coral-xyz/anchor"; +import { + ORCA_WHIRLPOOL_PROGRAM_ID, + WhirlpoolContext, + buildWhirlpoolClient, + PDAUtil, +} from "@orca-so/whirlpools-sdk"; +import { sendTx } from "../utils/send_tx"; +import { Percentage } from "@orca-so/common-sdk"; + +/** + * # Closes a Liquidity Position in an Orca Whirlpool + * + * This function closes an existing liquidity position in a specified Orca Whirlpool. The user provides + * the position's mint address. + * + * ## Parameters + * - `agent`: The `SolanaAgentKit` instance representing the wallet and connection details. + * - `positionMintAddress`: The mint address of the liquidity position to close. + * + * ## Returns + * A `Promise` that resolves to a `string` containing the transaction ID of the transaction + * + * ## Notes + * - The function uses Orca’s SDK to interact with the specified Whirlpool and close the liquidity position. + * - A maximum slippage of 1% is assumed for liquidity provision during the position closing. + * - The function automatically fetches the associated Whirlpool address and position details using the provided mint address. + * + * ## Throws + * An error will be thrown if: + * - The specified position mint address is invalid or inaccessible. + * - The transaction fails to send. + * - Any required position or Whirlpool data cannot be fetched. + * + * @param agent - The `SolanaAgentKit` instance representing the wallet and connection. + * @param positionMintAddress - The mint address of the liquidity position to close. + * @returns A promise resolving to the transaction ID (`string`). + */ +export async function orcaClosePosition( + agent: SolanaAgentKit, + positionMintAddress: PublicKey, +): Promise { + try { + const wallet = new Wallet(agent.wallet); + const ctx = WhirlpoolContext.from( + agent.connection, + wallet, + ORCA_WHIRLPOOL_PROGRAM_ID, + ); + const client = buildWhirlpoolClient(ctx) + + const positionAddress = PDAUtil.getPosition(ORCA_WHIRLPOOL_PROGRAM_ID, positionMintAddress); + const position = await client.getPosition(positionAddress.publicKey); + const whirlpoolAddress = position.getData().whirlpool; + const whirlpool = await client.getPool(whirlpoolAddress); + const txBuilder = await whirlpool.closePosition(positionAddress.publicKey, Percentage.fromFraction(1, 100)); + const txPayload = await txBuilder[0].build(); + const txPayloadDecompiled = TransactionMessage.decompile((txPayload.transaction as VersionedTransaction).message); + const instructions = txPayloadDecompiled.instructions; + const signers = txPayload.signers as Keypair[]; + + const txId = await sendTx( + agent, + instructions, + signers + ); + return txId + } catch (error) { + throw new Error(`${error}`); + } +} \ No newline at end of file diff --git a/src/tools/orca_create_clmm.ts b/src/tools/orca_create_clmm.ts index 4b6d465..5c6b402 100644 --- a/src/tools/orca_create_clmm.ts +++ b/src/tools/orca_create_clmm.ts @@ -1,4 +1,9 @@ -import { Keypair, PublicKey, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; +import { + Keypair, + PublicKey, + TransactionMessage, + VersionedTransaction +} from "@solana/web3.js"; import { SolanaAgentKit } from "../agent"; import { Wallet } from "@coral-xyz/anchor"; import { Decimal } from "decimal.js"; @@ -9,7 +14,6 @@ import { PoolUtil, buildWhirlpoolClient, } from "@orca-so/whirlpools-sdk"; - import { sendTx } from "../utils/send_tx"; import { FEE_TIERS } from "./orca_create_single_sided_liquidity_pool"; @@ -28,9 +32,9 @@ import { FEE_TIERS } from "./orca_create_single_sided_liquidity_pool"; * adjusts the input order as needed and inverts the initial price accordingly. * * @param agent - The `SolanaAgentKit` instance representing the wallet and connection details. - * @param mintA - The mint address of the first token in the pool (e.g., SHARK). - * @param mintB - The mint address of the second token in the pool (e.g., USDC). - * @param initialPrice - The initial price of `mintA` in terms of `mintB`. + * @param mintDeploy - The mint of the token you want to deploy (e.g., SHARK). + * @param mintPair - The mint of the token you want to pair the deployed mint with (e.g., USDC). + * @param initialPrice - The initial price of `mintDeploy` in terms of `mintPair`. * @param feeTier - The fee tier bps for the pool, determining tick spacing and fee collection rates. * * @returns A promise that resolves to a transaction ID (`string`) of the transaction creating the pool. @@ -46,8 +50,8 @@ import { FEE_TIERS } from "./orca_create_single_sided_liquidity_pool"; */ export async function orcaCreateCLMM( agent: SolanaAgentKit, - mintA: PublicKey, - mintB: PublicKey, + mintDeploy: PublicKey, + mintPair: PublicKey, initialPrice: Decimal, feeTier: keyof typeof FEE_TIERS, ): Promise { @@ -70,14 +74,18 @@ export async function orcaCreateCLMM( const client = buildWhirlpoolClient(ctx) const correctTokenOrder = PoolUtil.orderMints( - mintA, - mintB, + mintDeploy, + mintPair, ).map((addr) => addr.toString()); const isCorrectMintOrder = - correctTokenOrder[0] === mintA.toString(); + correctTokenOrder[0] === mintDeploy.toString(); + let mintA; + let mintB; if (!isCorrectMintOrder) { - [mintA, mintB] = [mintB, mintA]; + [mintA, mintB] = [mintPair, mintDeploy]; initialPrice = new Decimal(1 / initialPrice.toNumber()); + } else { + [mintA, mintB] = [mintDeploy, mintPair]; } const mintAAccount = await fetcher.getMintInfo(mintA); const mintBAccount = await fetcher.getMintInfo(mintB); @@ -85,9 +93,8 @@ export async function orcaCreateCLMM( throw Error("Mint account not found"); } - const initialTick = PriceMath.priceToTickIndex(initialPrice, mintAAccount.decimals, mintBAccount.decimals) const tickSpacing = FEE_TIERS[feeTier]; - + const initialTick = PriceMath.priceToInitializableTickIndex(initialPrice, mintAAccount.decimals, mintBAccount.decimals, tickSpacing) const { poolKey, tx: txBuilder } = await client.createPool( whirlpoolsConfigAddress, mintA, diff --git a/src/tools/orca_create_single_sided_liquidity_pool.ts b/src/tools/orca_create_single_sided_liquidity_pool.ts index 932f119..68602b9 100644 --- a/src/tools/orca_create_single_sided_liquidity_pool.ts +++ b/src/tools/orca_create_single_sided_liquidity_pool.ts @@ -84,7 +84,7 @@ export const FEE_TIERS = { * be 1/`initialPrice`. This will not affect the price of the token as you intended it to be. * * @param agent - The `SolanaAgentKit` instance representing the wallet and connection details. - * @param depositTokenAmount - The amount of the deposit token (including the decimals) to contribute to the pool. + * @param depositTokenAmount - The amount of the deposit token to deposit in the pool. * @param depositTokenMint - The mint address of the token being deposited into the pool, eg. SHARK. * @param otherTokenMint - The mint address of the other token in the pool, eg. USDC. * @param initialPrice - The initial price of the deposit token in terms of the other token. @@ -103,304 +103,308 @@ export const FEE_TIERS = { */ export async function orcaCreateSingleSidedLiquidityPool( agent: SolanaAgentKit, - depositTokenAmount: BN, + depositTokenAmount: number, depositTokenMint: PublicKey, otherTokenMint: PublicKey, initialPrice: Decimal, maxPrice: Decimal, feeTierBps: keyof typeof FEE_TIERS, ): Promise { - let whirlpoolsConfigAddress: PublicKey; - if (agent.connection.rpcEndpoint.includes('mainnet')) { - whirlpoolsConfigAddress = new PublicKey('2LecshUwdy9xi7meFgHtFJQNSKk4KdTrcpvaB56dP2NQ'); - } else if (agent.connection.rpcEndpoint.includes('devnet')) { - whirlpoolsConfigAddress = new PublicKey('FcrweFY1G9HJAHG5inkGB6pKg1HZ6x9UC2WioAfWrGkR'); - } else { - throw new Error('Unsupported network'); - } - const wallet = new Wallet(agent.wallet); - const ctx = WhirlpoolContext.from( - agent.connection, - wallet, - ORCA_WHIRLPOOL_PROGRAM_ID, - ); - const fetcher = ctx.fetcher; - - const correctTokenOrder = PoolUtil.orderMints( - otherTokenMint, - depositTokenMint, - ).map((addr) => addr.toString()); - const isCorrectMintOrder = - correctTokenOrder[0] === depositTokenMint.toString(); - let mintA, mintB; - if (isCorrectMintOrder) { - [mintA, mintB] = [depositTokenMint, otherTokenMint]; - } else { - [mintA, mintB] = [otherTokenMint, depositTokenMint]; - initialPrice = new Decimal(1 / initialPrice.toNumber()); - maxPrice = new Decimal(1 / maxPrice.toNumber()); - } - const mintAAccount = await fetcher.getMintInfo(mintA); - const mintBAccount = await fetcher.getMintInfo(mintB); - if (mintAAccount === null || mintBAccount === null) { - throw Error("Mint account not found"); - } - const tickSpacing = FEE_TIERS[feeTierBps]; - const tickIndex = PriceMath.priceToTickIndex( - initialPrice, - mintAAccount.decimals, - mintBAccount.decimals, - ); - const initialTick = TickUtil.getInitializableTickIndex( - tickIndex, - tickSpacing, - ); - - const tokenExtensionCtx: TokenExtensionContextForPool = { - ...NO_TOKEN_EXTENSION_CONTEXT, - tokenMintWithProgramA: mintAAccount, - tokenMintWithProgramB: mintBAccount, - }; - const feeTierKey = PDAUtil.getFeeTier( - ORCA_WHIRLPOOL_PROGRAM_ID, - whirlpoolsConfigAddress, - tickSpacing, - ).publicKey; - const initSqrtPrice = PriceMath.tickIndexToSqrtPriceX64(initialTick); - const tokenVaultAKeypair = Keypair.generate(); - const tokenVaultBKeypair = Keypair.generate(); - const whirlpoolPda = PDAUtil.getWhirlpool( - ORCA_WHIRLPOOL_PROGRAM_ID, - whirlpoolsConfigAddress, - mintA, - mintB, - FEE_TIERS[feeTierBps], - ); - const tokenBadgeA = PDAUtil.getTokenBadge( - ORCA_WHIRLPOOL_PROGRAM_ID, - whirlpoolsConfigAddress, - mintA, - ).publicKey; - const tokenBadgeB = PDAUtil.getTokenBadge( - ORCA_WHIRLPOOL_PROGRAM_ID, - whirlpoolsConfigAddress, - mintB, - ).publicKey; - const baseParamsPool = { - initSqrtPrice, - whirlpoolsConfig: whirlpoolsConfigAddress, - whirlpoolPda, - tokenMintA: mintA, - tokenMintB: mintB, - tokenVaultAKeypair, - tokenVaultBKeypair, - feeTierKey, - tickSpacing: tickSpacing, - funder: wallet.publicKey, - }; - const initPoolIx = !TokenExtensionUtil.isV2IxRequiredPool(tokenExtensionCtx) - ? WhirlpoolIx.initializePoolIx(ctx.program, baseParamsPool) - : WhirlpoolIx.initializePoolV2Ix(ctx.program, { - ...baseParamsPool, - tokenProgramA: tokenExtensionCtx.tokenMintWithProgramA.tokenProgram, - tokenProgramB: tokenExtensionCtx.tokenMintWithProgramB.tokenProgram, - tokenBadgeA, - tokenBadgeB, - }); - const initialTickArrayStartTick = TickUtil.getStartTickIndex( - initialTick, - tickSpacing, - ); - const initialTickArrayPda = PDAUtil.getTickArray( - ctx.program.programId, - whirlpoolPda.publicKey, - initialTickArrayStartTick, - ); - - const txBuilder = new TransactionBuilder( - ctx.provider.connection, - ctx.provider.wallet, - ctx.txBuilderOpts, - ); - txBuilder.addInstruction(initPoolIx); - txBuilder.addInstruction( - initTickArrayIx(ctx.program, { - startTick: initialTickArrayStartTick, - tickArrayPda: initialTickArrayPda, - whirlpool: whirlpoolPda.publicKey, - funder: wallet.publicKey, - }), - ); - - let tickLowerIndex, tickUpperIndex; - if (isCorrectMintOrder) { - tickLowerIndex = initialTick; - tickUpperIndex = PriceMath.priceToTickIndex( - maxPrice, - mintAAccount.decimals, - mintBAccount.decimals, + try { + let whirlpoolsConfigAddress: PublicKey; + if (agent.connection.rpcEndpoint.includes('mainnet')) { + whirlpoolsConfigAddress = new PublicKey('2LecshUwdy9xi7meFgHtFJQNSKk4KdTrcpvaB56dP2NQ'); + } else if (agent.connection.rpcEndpoint.includes('devnet')) { + whirlpoolsConfigAddress = new PublicKey('FcrweFY1G9HJAHG5inkGB6pKg1HZ6x9UC2WioAfWrGkR'); + } else { + throw new Error('Unsupported network'); + } + const wallet = new Wallet(agent.wallet); + const ctx = WhirlpoolContext.from( + agent.connection, + wallet, + ORCA_WHIRLPOOL_PROGRAM_ID, ); - } else { - tickLowerIndex = PriceMath.priceToTickIndex( - maxPrice, - mintAAccount.decimals, - mintBAccount.decimals, - ); - tickUpperIndex = initialTick; - } - const tickLowerInitializableIndex = TickUtil.getInitializableTickIndex( - tickLowerIndex, - tickSpacing, - ); - const tickUpperInitializableIndex = TickUtil.getInitializableTickIndex( - tickUpperIndex, - tickSpacing, - ); - if ( - !TickUtil.checkTickInBounds(tickLowerInitializableIndex) || - !TickUtil.checkTickInBounds(tickUpperInitializableIndex) - ) { - throw Error("Prices out of bounds"); - } - const increasLiquidityQuoteParam: IncreaseLiquidityQuoteParam = { - inputTokenAmount: new BN(depositTokenAmount), - inputTokenMint: depositTokenMint, - tokenMintA: mintA, - tokenMintB: mintB, - tickCurrentIndex: initialTick, - sqrtPrice: initSqrtPrice, - tickLowerIndex: tickLowerInitializableIndex, - tickUpperIndex: tickUpperInitializableIndex, - tokenExtensionCtx: tokenExtensionCtx, - slippageTolerance: Percentage.fromFraction(0, 100), - }; - const liquidityInput = increaseLiquidityQuoteByInputTokenWithParams( - increasLiquidityQuoteParam, - ); - const { liquidityAmount: liquidity, tokenMaxA, tokenMaxB } = liquidityInput; + const fetcher = ctx.fetcher; - const positionMintKeypair = Keypair.generate(); - const positionMintPubkey = positionMintKeypair.publicKey; - const positionPda = PDAUtil.getPosition( - ORCA_WHIRLPOOL_PROGRAM_ID, - positionMintPubkey, - ); - const positionTokenAccountAddress = getAssociatedTokenAddressSync( - positionMintPubkey, - wallet.publicKey, - ctx.accountResolverOpts.allowPDAOwnerAddress, - TOKEN_2022_PROGRAM_ID, - ); - const params = { - funder: wallet.publicKey, - owner: wallet.publicKey, - positionPda, - positionTokenAccount: positionTokenAccountAddress, - whirlpool: whirlpoolPda.publicKey, - tickLowerIndex: tickLowerInitializableIndex, - tickUpperIndex: tickUpperInitializableIndex, - }; - const positionIx = openPositionWithTokenExtensionsIx(ctx.program, { - ...params, - positionMint: positionMintPubkey, - withTokenMetadataExtension: true, - }); - - txBuilder.addInstruction(positionIx); - txBuilder.addSigner(positionMintKeypair); - - const [ataA, ataB] = await resolveOrCreateATAs( - ctx.connection, - wallet.publicKey, - [ - { tokenMint: mintA, wrappedSolAmountIn: tokenMaxA }, - { tokenMint: mintB, wrappedSolAmountIn: tokenMaxB }, - ], - () => ctx.fetcher.getAccountRentExempt(), - wallet.publicKey, - undefined, - ctx.accountResolverOpts.allowPDAOwnerAddress, - "ata", - ); - const { address: tokenOwnerAccountA, ...tokenOwnerAccountAIx } = ataA; - const { address: tokenOwnerAccountB, ...tokenOwnerAccountBIx } = ataB; - - txBuilder.addInstruction(tokenOwnerAccountAIx); - txBuilder.addInstruction(tokenOwnerAccountBIx); - - const tickArrayLowerStartIndex = TickUtil.getStartTickIndex( - tickLowerInitializableIndex, - tickSpacing, - ); - const tickArrayUpperStartIndex = TickUtil.getStartTickIndex( - tickUpperInitializableIndex, - tickSpacing, - ); - const tickArrayLowerPda = PDAUtil.getTickArray( - ctx.program.programId, - whirlpoolPda.publicKey, - tickArrayLowerStartIndex, - ); - const tickArrayUpperPda = PDAUtil.getTickArray( - ctx.program.programId, - whirlpoolPda.publicKey, - tickArrayUpperStartIndex, - ); - if (tickArrayUpperStartIndex !== tickArrayLowerStartIndex) { + const correctTokenOrder = PoolUtil.orderMints( + otherTokenMint, + depositTokenMint, + ).map((addr) => addr.toString()); + const isCorrectMintOrder = + correctTokenOrder[0] === depositTokenMint.toString(); + let mintA, mintB; if (isCorrectMintOrder) { - txBuilder.addInstruction( - initTickArrayIx(ctx.program, { - startTick: tickArrayUpperStartIndex, - tickArrayPda: tickArrayUpperPda, - whirlpool: whirlpoolPda.publicKey, - funder: wallet.publicKey, - }), + [mintA, mintB] = [depositTokenMint, otherTokenMint]; + } else { + [mintA, mintB] = [otherTokenMint, depositTokenMint]; + initialPrice = new Decimal(1 / initialPrice.toNumber()); + maxPrice = new Decimal(1 / maxPrice.toNumber()); + } + const mintAAccount = await fetcher.getMintInfo(mintA); + const mintBAccount = await fetcher.getMintInfo(mintB); + if (mintAAccount === null || mintBAccount === null) { + throw Error("Mint account not found"); + } + const tickSpacing = FEE_TIERS[feeTierBps]; + const tickIndex = PriceMath.priceToTickIndex( + initialPrice, + mintAAccount.decimals, + mintBAccount.decimals, + ); + const initialTick = TickUtil.getInitializableTickIndex( + tickIndex, + tickSpacing, + ); + + const tokenExtensionCtx: TokenExtensionContextForPool = { + ...NO_TOKEN_EXTENSION_CONTEXT, + tokenMintWithProgramA: mintAAccount, + tokenMintWithProgramB: mintBAccount, + }; + const feeTierKey = PDAUtil.getFeeTier( + ORCA_WHIRLPOOL_PROGRAM_ID, + whirlpoolsConfigAddress, + tickSpacing, + ).publicKey; + const initSqrtPrice = PriceMath.tickIndexToSqrtPriceX64(initialTick); + const tokenVaultAKeypair = Keypair.generate(); + const tokenVaultBKeypair = Keypair.generate(); + const whirlpoolPda = PDAUtil.getWhirlpool( + ORCA_WHIRLPOOL_PROGRAM_ID, + whirlpoolsConfigAddress, + mintA, + mintB, + FEE_TIERS[feeTierBps], + ); + const tokenBadgeA = PDAUtil.getTokenBadge( + ORCA_WHIRLPOOL_PROGRAM_ID, + whirlpoolsConfigAddress, + mintA, + ).publicKey; + const tokenBadgeB = PDAUtil.getTokenBadge( + ORCA_WHIRLPOOL_PROGRAM_ID, + whirlpoolsConfigAddress, + mintB, + ).publicKey; + const baseParamsPool = { + initSqrtPrice, + whirlpoolsConfig: whirlpoolsConfigAddress, + whirlpoolPda, + tokenMintA: mintA, + tokenMintB: mintB, + tokenVaultAKeypair, + tokenVaultBKeypair, + feeTierKey, + tickSpacing: tickSpacing, + funder: wallet.publicKey, + }; + const initPoolIx = !TokenExtensionUtil.isV2IxRequiredPool(tokenExtensionCtx) + ? WhirlpoolIx.initializePoolIx(ctx.program, baseParamsPool) + : WhirlpoolIx.initializePoolV2Ix(ctx.program, { + ...baseParamsPool, + tokenProgramA: tokenExtensionCtx.tokenMintWithProgramA.tokenProgram, + tokenProgramB: tokenExtensionCtx.tokenMintWithProgramB.tokenProgram, + tokenBadgeA, + tokenBadgeB, + }); + const initialTickArrayStartTick = TickUtil.getStartTickIndex( + initialTick, + tickSpacing, + ); + const initialTickArrayPda = PDAUtil.getTickArray( + ctx.program.programId, + whirlpoolPda.publicKey, + initialTickArrayStartTick, + ); + + const txBuilder = new TransactionBuilder( + ctx.provider.connection, + ctx.provider.wallet, + ctx.txBuilderOpts, + ); + txBuilder.addInstruction(initPoolIx); + txBuilder.addInstruction( + initTickArrayIx(ctx.program, { + startTick: initialTickArrayStartTick, + tickArrayPda: initialTickArrayPda, + whirlpool: whirlpoolPda.publicKey, + funder: wallet.publicKey, + }), + ); + + let tickLowerIndex, tickUpperIndex; + if (isCorrectMintOrder) { + tickLowerIndex = initialTick; + tickUpperIndex = PriceMath.priceToTickIndex( + maxPrice, + mintAAccount.decimals, + mintBAccount.decimals, ); } else { - txBuilder.addInstruction( - initTickArrayIx(ctx.program, { - startTick: tickArrayLowerStartIndex, - tickArrayPda: tickArrayLowerPda, - whirlpool: whirlpoolPda.publicKey, - funder: wallet.publicKey, - }), + tickLowerIndex = PriceMath.priceToTickIndex( + maxPrice, + mintAAccount.decimals, + mintBAccount.decimals, ); + tickUpperIndex = initialTick; } - } + const tickLowerInitializableIndex = TickUtil.getInitializableTickIndex( + tickLowerIndex, + tickSpacing, + ); + const tickUpperInitializableIndex = TickUtil.getInitializableTickIndex( + tickUpperIndex, + tickSpacing, + ); + if ( + !TickUtil.checkTickInBounds(tickLowerInitializableIndex) || + !TickUtil.checkTickInBounds(tickUpperInitializableIndex) + ) { + throw Error("Prices out of bounds"); + } + depositTokenAmount = isCorrectMintOrder + ? depositTokenAmount * Math.pow(10, mintAAccount.decimals) + : depositTokenAmount * Math.pow(10, mintBAccount.decimals); + const increasLiquidityQuoteParam: IncreaseLiquidityQuoteParam = { + inputTokenAmount: new BN(depositTokenAmount), + inputTokenMint: depositTokenMint, + tokenMintA: mintA, + tokenMintB: mintB, + tickCurrentIndex: initialTick, + sqrtPrice: initSqrtPrice, + tickLowerIndex: tickLowerInitializableIndex, + tickUpperIndex: tickUpperInitializableIndex, + tokenExtensionCtx: tokenExtensionCtx, + slippageTolerance: Percentage.fromFraction(0, 100), + }; + const liquidityInput = increaseLiquidityQuoteByInputTokenWithParams( + increasLiquidityQuoteParam, + ); + const { liquidityAmount: liquidity, tokenMaxA, tokenMaxB } = liquidityInput; - const baseParamsLiquidity = { - liquidityAmount: liquidity, - tokenMaxA, - tokenMaxB, - whirlpool: whirlpoolPda.publicKey, - positionAuthority: wallet.publicKey, - position: positionPda.publicKey, - positionTokenAccount: positionTokenAccountAddress, - tokenOwnerAccountA, - tokenOwnerAccountB, - tokenVaultA: tokenVaultAKeypair.publicKey, - tokenVaultB: tokenVaultBKeypair.publicKey, - tickArrayLower: tickArrayLowerPda.publicKey, - tickArrayUpper: tickArrayUpperPda.publicKey, - }; + const positionMintKeypair = Keypair.generate(); + const positionMintPubkey = positionMintKeypair.publicKey; + const positionPda = PDAUtil.getPosition( + ORCA_WHIRLPOOL_PROGRAM_ID, + positionMintPubkey, + ); + const positionTokenAccountAddress = getAssociatedTokenAddressSync( + positionMintPubkey, + wallet.publicKey, + ctx.accountResolverOpts.allowPDAOwnerAddress, + TOKEN_2022_PROGRAM_ID, + ); + const params = { + funder: wallet.publicKey, + owner: wallet.publicKey, + positionPda, + positionTokenAccount: positionTokenAccountAddress, + whirlpool: whirlpoolPda.publicKey, + tickLowerIndex: tickLowerInitializableIndex, + tickUpperIndex: tickUpperInitializableIndex, + }; + const positionIx = openPositionWithTokenExtensionsIx(ctx.program, { + ...params, + positionMint: positionMintPubkey, + withTokenMetadataExtension: true, + }); - const liquidityIx = !TokenExtensionUtil.isV2IxRequiredPool(tokenExtensionCtx) - ? increaseLiquidityIx(ctx.program, baseParamsLiquidity) - : increaseLiquidityV2Ix(ctx.program, { - ...baseParamsLiquidity, - tokenMintA: mintA, - tokenMintB: mintB, - tokenProgramA: tokenExtensionCtx.tokenMintWithProgramA.tokenProgram, - tokenProgramB: tokenExtensionCtx.tokenMintWithProgramB.tokenProgram, - }); - txBuilder.addInstruction(liquidityIx); + txBuilder.addInstruction(positionIx); + txBuilder.addSigner(positionMintKeypair); - const txPayload = await txBuilder.build(); - const instructions = TransactionMessage.decompile( - (txPayload.transaction as VersionedTransaction).message, - ).instructions; + const [ataA, ataB] = await resolveOrCreateATAs( + ctx.connection, + wallet.publicKey, + [ + { tokenMint: mintA, wrappedSolAmountIn: tokenMaxA }, + { tokenMint: mintB, wrappedSolAmountIn: tokenMaxB }, + ], + () => ctx.fetcher.getAccountRentExempt(), + wallet.publicKey, + undefined, + ctx.accountResolverOpts.allowPDAOwnerAddress, + "ata", + ); + const { address: tokenOwnerAccountA, ...tokenOwnerAccountAIx } = ataA; + const { address: tokenOwnerAccountB, ...tokenOwnerAccountBIx } = ataB; - try { + txBuilder.addInstruction(tokenOwnerAccountAIx); + txBuilder.addInstruction(tokenOwnerAccountBIx); + + const tickArrayLowerStartIndex = TickUtil.getStartTickIndex( + tickLowerInitializableIndex, + tickSpacing, + ); + const tickArrayUpperStartIndex = TickUtil.getStartTickIndex( + tickUpperInitializableIndex, + tickSpacing, + ); + const tickArrayLowerPda = PDAUtil.getTickArray( + ctx.program.programId, + whirlpoolPda.publicKey, + tickArrayLowerStartIndex, + ); + const tickArrayUpperPda = PDAUtil.getTickArray( + ctx.program.programId, + whirlpoolPda.publicKey, + tickArrayUpperStartIndex, + ); + if (tickArrayUpperStartIndex !== tickArrayLowerStartIndex) { + if (isCorrectMintOrder) { + txBuilder.addInstruction( + initTickArrayIx(ctx.program, { + startTick: tickArrayUpperStartIndex, + tickArrayPda: tickArrayUpperPda, + whirlpool: whirlpoolPda.publicKey, + funder: wallet.publicKey, + }), + ); + } else { + txBuilder.addInstruction( + initTickArrayIx(ctx.program, { + startTick: tickArrayLowerStartIndex, + tickArrayPda: tickArrayLowerPda, + whirlpool: whirlpoolPda.publicKey, + funder: wallet.publicKey, + }), + ); + } + } + + const baseParamsLiquidity = { + liquidityAmount: liquidity, + tokenMaxA, + tokenMaxB, + whirlpool: whirlpoolPda.publicKey, + positionAuthority: wallet.publicKey, + position: positionPda.publicKey, + positionTokenAccount: positionTokenAccountAddress, + tokenOwnerAccountA, + tokenOwnerAccountB, + tokenVaultA: tokenVaultAKeypair.publicKey, + tokenVaultB: tokenVaultBKeypair.publicKey, + tickArrayLower: tickArrayLowerPda.publicKey, + tickArrayUpper: tickArrayUpperPda.publicKey, + }; + + const liquidityIx = !TokenExtensionUtil.isV2IxRequiredPool(tokenExtensionCtx) + ? increaseLiquidityIx(ctx.program, baseParamsLiquidity) + : increaseLiquidityV2Ix(ctx.program, { + ...baseParamsLiquidity, + tokenMintA: mintA, + tokenMintB: mintB, + tokenProgramA: tokenExtensionCtx.tokenMintWithProgramA.tokenProgram, + tokenProgramB: tokenExtensionCtx.tokenMintWithProgramB.tokenProgram, + }); + txBuilder.addInstruction(liquidityIx); + + const txPayload = await txBuilder.build(); + const instructions = TransactionMessage.decompile( + (txPayload.transaction as VersionedTransaction).message, + ).instructions; + + const txId = await sendTx( agent, instructions, diff --git a/src/tools/orca_fetch_positions.ts b/src/tools/orca_fetch_positions.ts new file mode 100644 index 0000000..647d052 --- /dev/null +++ b/src/tools/orca_fetch_positions.ts @@ -0,0 +1,104 @@ +import { SolanaAgentKit } from "../agent"; +import { Wallet } from "@coral-xyz/anchor"; +import { + ORCA_WHIRLPOOL_PROGRAM_ID, + WhirlpoolContext, + buildWhirlpoolClient, + getAllPositionAccountsByOwner, + PriceMath, +} from "@orca-so/whirlpools-sdk"; + +interface PositionInfo { + whirlpoolAddress: string; + positionInRange: boolean; + distanceFromCenterBps: number; +} + +type PositionDataMap = { + [positionMintAddress: string]: PositionInfo; +}; + +/** + * # Fetches Liquidity Position Data in Orca Whirlpools + * + * Fetches data for all liquidity positions owned by the provided wallet, including: + * - Whirlpool address. + * - Whether the position is in range. + * - Distance from the center price to the current price in basis points. + * + * ## Parameters + * - `agent`: The `SolanaAgentKit` instance representing the wallet and connection. + * + * ## Returns + * A JSON string with an object mapping position mint addresses to position details: + * ```json + * { + * "positionMintAddress1": { + * "whirlpoolAddress": "whirlpoolAddress1", + * "positionInRange": true, + * "distanceFromCenterBps": 250 + * } + * } + * ``` + * + * ## Throws + * - If positions cannot be fetched or processed. + * - If the position mint address is invalid. + * + * @param agent - The `SolanaAgentKit` instance. + * @returns A JSON string with position data. + */ +export async function orcaFetchPositions( + agent: SolanaAgentKit, +): Promise { + try { + const wallet = new Wallet(agent.wallet); + const ctx = WhirlpoolContext.from( + agent.connection, + wallet, + ORCA_WHIRLPOOL_PROGRAM_ID, + ); + const client = buildWhirlpoolClient(ctx) + + const positions = await getAllPositionAccountsByOwner({ + ctx, + owner: agent.wallet.publicKey + }) + const positionDatas = [ + ...positions.positions.entries(), + ...positions.positionsWithTokenExtensions.entries() + ]; + const result: PositionDataMap = {}; + for (const [_, positionData] of positionDatas) { + const positionMintAddress = positionData.positionMint; + const whirlpoolAddress = positionData.whirlpool; + const whirlpool = await client.getPool(whirlpoolAddress); + const whirlpoolData = whirlpool.getData(); + const sqrtPrice = whirlpoolData.sqrtPrice; + const currentTick = whirlpoolData.tickCurrentIndex; + const mintA = whirlpool.getTokenAInfo(); + const mintB = whirlpool.getTokenBInfo(); + const currentPrice = PriceMath.sqrtPriceX64ToPrice(sqrtPrice, mintA.decimals, mintB.decimals); + const lowerTick = positionData.tickLowerIndex + const upperTick = positionData.tickUpperIndex + const lowerPrice = PriceMath.tickIndexToPrice(lowerTick, mintA.decimals, mintB.decimals); + const upperPrice = PriceMath.tickIndexToPrice(upperTick, mintA.decimals, mintB.decimals); + const centerPosition = (lowerPrice.add(upperPrice)).div(2); + + const positionInRange = (currentTick > lowerTick && currentTick < upperTick) ? true : false; + const distanceFromCenterBps = Math.ceil( + currentPrice.sub(centerPosition).abs().div(centerPosition).mul(10000).toNumber() + ); + + result[positionMintAddress.toString()] = { + whirlpoolAddress: whirlpoolAddress.toString(), + positionInRange, + distanceFromCenterBps, + }; + } + return JSON.stringify(result); + } catch (error) { + console.log(error) + throw new Error(`${error}`); + } +} \ No newline at end of file diff --git a/src/tools/orca_open_centered_position_with_liquidity.ts b/src/tools/orca_open_centered_position_with_liquidity.ts index de89a28..0fe3d0d 100644 --- a/src/tools/orca_open_centered_position_with_liquidity.ts +++ b/src/tools/orca_open_centered_position_with_liquidity.ts @@ -14,6 +14,7 @@ import { import { sendTx } from "../utils/send_tx"; import { Percentage } from "@orca-so/common-sdk"; +import { TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; /** * # Opens a Centered Liquidity Position in an Orca Whirlpool @@ -71,18 +72,19 @@ export async function orcaOpenCenteredPositionWithLiquidity( const client = buildWhirlpoolClient(ctx) const whirlpool = await client.getPool(whirlpoolAddress); + const whirlpoolData = whirlpool.getData(); const mintInfoA = whirlpool.getTokenAInfo() const mintInfoB = whirlpool.getTokenBInfo() const price = PriceMath.sqrtPriceX64ToPrice( - whirlpool.getData().sqrtPrice, + whirlpoolData.sqrtPrice, mintInfoA.decimals, mintInfoB.decimals ) const lowerPrice = price.mul(1 - priceOffsetBps / 10000) const upperPrice = price.mul(1 + priceOffsetBps / 10000) - const lowerTick = PriceMath.priceToTickIndex(lowerPrice, mintInfoA.decimals, mintInfoB.decimals) - const upperTick = PriceMath.priceToTickIndex(upperPrice, mintInfoA.decimals, mintInfoB.decimals) + const lowerTick = PriceMath.priceToInitializableTickIndex(lowerPrice, mintInfoA.decimals, mintInfoB.decimals, whirlpoolData.tickSpacing) + const upperTick = PriceMath.priceToInitializableTickIndex(upperPrice, mintInfoA.decimals, mintInfoB.decimals, whirlpoolData.tickSpacing) const txBuilderTickArrays = await whirlpool.initTickArrayForTicks([lowerTick, upperTick]) let instructions: TransactionInstruction[] = [] @@ -112,7 +114,11 @@ export async function orcaOpenCenteredPositionWithLiquidity( const { positionMint, tx: txBuilder } = await whirlpool.openPositionWithMetadata( lowerTick, upperTick, - increaseLiquiditQuote + increaseLiquiditQuote, + undefined, + undefined, + undefined, + TOKEN_2022_PROGRAM_ID ) const txPayload = await txBuilder.build(); diff --git a/src/tools/orca_open_single_sided_position.ts b/src/tools/orca_open_single_sided_position.ts index e69de29..1829865 100644 --- a/src/tools/orca_open_single_sided_position.ts +++ b/src/tools/orca_open_single_sided_position.ts @@ -0,0 +1,169 @@ +import { Keypair, PublicKey, TransactionInstruction, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; +import { SolanaAgentKit } from "../agent"; +import { Wallet } from "@coral-xyz/anchor"; +import { Decimal } from "decimal.js"; +import { + ORCA_WHIRLPOOL_PROGRAM_ID, + WhirlpoolContext, + PriceMath, + buildWhirlpoolClient, + increaseLiquidityQuoteByInputToken, + TokenExtensionContextForPool, + NO_TOKEN_EXTENSION_CONTEXT, +} from "@orca-so/whirlpools-sdk"; +import { sendTx } from "../utils/send_tx"; +import { Percentage } from "@orca-so/common-sdk"; +import { TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; + +/** + * # Opens a Single-Sided Liquidity Position in an Orca Whirlpool + * + * This function opens a single-sided liquidity position in a specified Orca Whirlpool. The user specifies + * a basis point (bps) offset from the current price for the lower bound and a width (bps) for the range width. + * The required amount of the other token is calculated automatically. + * + * ## Parameters + * - `agent`: The `SolanaAgentKit` instance representing the wallet and connection details. + * - `whirlpoolAddress`: The address of the Orca Whirlpool where the position will be opened. + * - `distanceFromCurrentPriceBps`: The basis point offset from the current price for the lower bound. + * - `widthBps`: The width of the range as a percentage increment from the lower bound. + * - `inputTokenMint`: The mint address of the token being deposited (e.g., USDC or another token). + * - `inputAmount`: The amount of the input token to deposit, specified as a `Decimal` value. + * + * ## Returns + * A `Promise` that resolves to the transaction ID (`string`) of the transaction that opens the position. + * + * ## Notes + * - The `distanceFromCurrentPriceBps` specifies the starting point of the range. + * - The `widthBps` determines the range size from the lower bound. + * - The specified `inputTokenMint` determines which token is deposited directly. + * + * @param agent - The `SolanaAgentKit` instance representing the wallet and connection. + * @param whirlpoolAddress - The address of the Orca Whirlpool. + * @param distanceFromCurrentPriceBps - The basis point offset from the current price for the lower bound. + * @param widthBps - The width of the range as a percentage increment from the lower bound. + * @param inputTokenMint - The mint address of the token to deposit. + * @param inputAmount - The amount of the input token to deposit. + * @returns A promise resolving to the transaction ID (`string`). + */ +export async function orcaOpenSingleSidedPosition( + agent: SolanaAgentKit, + whirlpoolAddress: PublicKey, + distanceFromCurrentPriceBps: number, + widthBps: number, + inputTokenMint: PublicKey, + inputAmount: Decimal +): Promise { + try { + const wallet = new Wallet(agent.wallet); + const ctx = WhirlpoolContext.from( + agent.connection, + wallet, + ORCA_WHIRLPOOL_PROGRAM_ID, + ); + // ctx.accountResolverOpts.createWrappedSolAccountMethod = "ata"; + const client = buildWhirlpoolClient(ctx); + + const whirlpool = await client.getPool(whirlpoolAddress); + const whirlpoolData = whirlpool.getData(); + const mintInfoA = whirlpool.getTokenAInfo(); + const mintInfoB = whirlpool.getTokenBInfo(); + const price = PriceMath.sqrtPriceX64ToPrice( + whirlpoolData.sqrtPrice, + mintInfoA.decimals, + mintInfoB.decimals + ); + + const isTokenA = inputTokenMint.equals(mintInfoA.mint); + let lowerBoundPrice; + let upperBoundPrice; + let lowerTick; + let upperTick; + if (isTokenA) { + lowerBoundPrice = price.mul(1 + distanceFromCurrentPriceBps / 10000); + upperBoundPrice = lowerBoundPrice.mul(1 + widthBps / 10000); + upperTick = PriceMath.priceToInitializableTickIndex( + upperBoundPrice, + mintInfoA.decimals, + mintInfoB.decimals, + whirlpoolData.tickSpacing + ); + lowerTick = PriceMath.priceToInitializableTickIndex( + lowerBoundPrice, + mintInfoA.decimals, + mintInfoB.decimals, + whirlpoolData.tickSpacing + ); + } else { + lowerBoundPrice = price.mul(1 - distanceFromCurrentPriceBps / 10000); + upperBoundPrice = lowerBoundPrice.mul(1 - widthBps / 10000); + lowerTick = PriceMath.priceToInitializableTickIndex( + upperBoundPrice, + mintInfoA.decimals, + mintInfoB.decimals, + whirlpoolData.tickSpacing + ); + upperTick = PriceMath.priceToInitializableTickIndex( + lowerBoundPrice, + mintInfoA.decimals, + mintInfoB.decimals, + whirlpoolData.tickSpacing + ); + } + + const txBuilderTickArrays = await whirlpool.initTickArrayForTicks([lowerTick, upperTick]); + let txIds: string = ''; + if (txBuilderTickArrays !== null) { + const txPayloadTickArrays = await txBuilderTickArrays.build(); + const txPayloadTickArraysDecompiled = TransactionMessage.decompile((txPayloadTickArrays.transaction as VersionedTransaction).message); + const instructions = txPayloadTickArraysDecompiled.instructions; + const signers = txPayloadTickArrays.signers as Keypair[]; + + const tickArrayTxId = await sendTx(agent, instructions, signers); + txIds += tickArrayTxId + ','; + } + + const tokenExtensionCtx: TokenExtensionContextForPool = { + ...NO_TOKEN_EXTENSION_CONTEXT, + tokenMintWithProgramA: mintInfoA, + tokenMintWithProgramB: mintInfoB, + }; + const increaseLiquiditQuote = increaseLiquidityQuoteByInputToken( + inputTokenMint, + inputAmount, + lowerTick, + upperTick, + Percentage.fromFraction(1, 100), + whirlpool, + tokenExtensionCtx + ); + const { positionMint, tx: txBuilder } = await whirlpool.openPositionWithMetadata( + lowerTick, + upperTick, + increaseLiquiditQuote, + undefined, + undefined, + undefined, + TOKEN_2022_PROGRAM_ID + ); + + const txPayload = await txBuilder.build(); + const txPayloadDecompiled = TransactionMessage.decompile((txPayload.transaction as VersionedTransaction).message); + const instructions = txPayloadDecompiled.instructions; + const signers = txPayload.signers as Keypair[]; + for (const signer of signers) { + console.log(signer.publicKey.toBase58()); + } + + const positionTxId = await sendTx(agent, instructions, signers); + txIds += positionTxId; + + return JSON.stringify({ + transactionIds: txIds, + positionMint: positionMint.toString(), + }); + } catch (error) { + console.log(error); + throw new Error(`${error}`); + } +} diff --git a/src/utils/send_tx.ts b/src/utils/send_tx.ts index ad42204..d897b9a 100644 --- a/src/utils/send_tx.ts +++ b/src/utils/send_tx.ts @@ -54,7 +54,6 @@ export async function getComputeBudgetInstructions(agent: SolanaAgentKit, instru computeBudgetPriorityFeeInstructions }; } catch (error) { - console.error("Error getting compute budget instructions fees:", error); throw error; } } @@ -82,7 +81,7 @@ export async function sendTx( instructions: allInstructions, }).compileToV0Message(); const transaction = new VersionedTransaction(messageV0); - transaction.sign([agent.wallet, ...(otherKeypairs ?? [])]); + transaction.sign([agent.wallet, ...(otherKeypairs ?? [])] as Signer[]); const timeoutMs = 90000; const startTime = Date.now(); @@ -94,7 +93,7 @@ export async function sendTx( transaction, { maxRetries: 0, - skipPreflight: true, + skipPreflight: false, }); const statuses = await agent.connection.getSignatureStatuses([signature]); @@ -114,11 +113,9 @@ export async function sendTx( } throw new Error("Transaction timeout"); } catch (error) { - console.log("Error sending transaction:", error); throw error; } } catch (error) { - console.log("Error sending transaction:", error); throw error; } } diff --git a/test/index.ts b/test/index.ts index 1a64ec9..6fb00f4 100644 --- a/test/index.ts +++ b/test/index.ts @@ -37,7 +37,7 @@ async function initializeAgent() { try { const llm = new ChatOpenAI({ modelName: "gpt-4o-mini", - // temperature: 0.7, + temperature: 0.3, }); let walletDataStr: string | null = null; From 3f9828d67216e6e5b9e9ada1005d74fbdf843692 Mon Sep 17 00:00:00 2001 From: calintje Date: Mon, 30 Dec 2024 05:05:02 +0100 Subject: [PATCH 27/94] Update lockfile --- pnpm-lock.yaml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 58e21d9..660a954 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,13 +21,8 @@ importers: specifier: ^0.1.2 version: 0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) '@langchain/langgraph': -<<<<<<< HEAD - specifier: ^0.2.27 - version: 0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) -======= specifier: ^0.2.34 - version: 0.2.34(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) ->>>>>>> main + version: 0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) '@langchain/openai': specifier: ^0.3.13 version: 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) @@ -2730,7 +2725,7 @@ snapshots: '@solana/errors@2.0.0-rc.1(typescript@4.9.5)': dependencies: - chalk: 5.4.0 + chalk: 5.4.1 commander: 12.1.0 typescript: 4.9.5 From 43953f262f9151f99441f97583a18cc8832224da Mon Sep 17 00:00:00 2001 From: calintje Date: Mon, 30 Dec 2024 05:23:16 +0100 Subject: [PATCH 28/94] Update description --- src/langchain/index.ts | 2 +- src/tools/orca_open_centered_position_with_liquidity.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 4abf169..92f3a58 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -979,7 +979,7 @@ export class SolanaOrcaOpenCenteredPosition extends Tool { Inputs (JSON string): - whirlpoolAddress: string, address of the Orca Whirlpool (required). - - priceOffsetBps: number, bps offset (one side) from the center price, e.g., 500 for 5% (required). + - priceOffsetBps: number, bps offset (one side) from the current pool price, e.g., 500 for 5% (required). - inputTokenMint: string, mint address of the deposit token (required). - inputAmount: number, amount of the deposit token, e.g., 100.0 (required).`; diff --git a/src/tools/orca_open_centered_position_with_liquidity.ts b/src/tools/orca_open_centered_position_with_liquidity.ts index c061c8e..2213c12 100644 --- a/src/tools/orca_open_centered_position_with_liquidity.ts +++ b/src/tools/orca_open_centered_position_with_liquidity.ts @@ -20,15 +20,15 @@ import { TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; * # Opens a Centered Liquidity Position in an Orca Whirlpool * * This function opens a centered liquidity position in a specified Orca Whirlpool. The user defines - * a basis point (bps) offset from the center price to set the lower and upper bounds of the position. + * a basis point (bps) offset from the cuurent price of the pool to set the lower and upper bounds of the position. * The user also specifies the token mint and the amount to deposit. The required amount of the other token * is calculated automatically. * * ## Parameters * - `agent`: The `SolanaAgentKit` instance representing the wallet and connection details. * - `whirlpoolAddress`: The address of the Orca Whirlpool where the position will be opened. - * - `priceOffsetBps`: The basis point (bps) offset (on one side) from the center price. For example, - * 500 bps (5%) creates a range from 95% to 105% of the center price. + * - `priceOffsetBps`: The basis point (bps) offset (on one side) from the current price fo the pool. For example, + * 500 bps (5%) creates a range from 95% to 105% of the current pool price. * - `inputTokenMint`: The mint address of the token being deposited (e.g., USDC or another token). * - `inputAmount`: The amount of the input token to deposit, specified as a `Decimal` value. * @@ -50,7 +50,7 @@ import { TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; * * @param agent - The `SolanaAgentKit` instance representing the wallet and connection. * @param whirlpoolAddress - The address of the Orca Whirlpool. - * @param priceOffsetBps - The basis point offset (one side) from the center price. + * @param priceOffsetBps - The basis point offset (one side) from the current pool price. * @param inputTokenMint - The mint address of the token to deposit. * @param inputAmount - The amount of the input token to deposit. * @returns A promise resolving to the transaction ID (`string`). From 4c0124da9767dd1a91d06618d5038dc663bc9354 Mon Sep 17 00:00:00 2001 From: aryan Date: Mon, 30 Dec 2024 14:37:31 +0530 Subject: [PATCH 29/94] chore: lint --- .../tg-bot-starter/src/app/api/bot/route.ts | 57 +++--- src/agent/index.ts | 24 +-- src/langchain/index.ts | 38 ++-- src/tools/index.ts | 2 +- src/tools/orca_close_position.ts | 30 ++-- src/tools/orca_create_clmm.ts | 49 ++--- ...orca_create_single_sided_liquidity_pool.ts | 43 +++-- src/tools/orca_fetch_positions.ts | 48 +++-- ...a_open_centered_position_with_liquidity.ts | 88 +++++---- src/tools/orca_open_single_sided_position.ts | 59 +++--- src/utils/send_tx.ts | 169 +++++++++--------- 11 files changed, 345 insertions(+), 262 deletions(-) diff --git a/examples/tg-bot-starter/src/app/api/bot/route.ts b/examples/tg-bot-starter/src/app/api/bot/route.ts index ac63719..2dcdf97 100644 --- a/examples/tg-bot-starter/src/app/api/bot/route.ts +++ b/examples/tg-bot-starter/src/app/api/bot/route.ts @@ -1,8 +1,8 @@ -export const dynamic = 'force-dynamic'; -export const fetchCache = 'force-no-store'; +export const dynamic = "force-dynamic"; +export const fetchCache = "force-no-store"; export const maxDuration = 300; -import { Bot, webhookCallback } from 'grammy'; +import { Bot, webhookCallback } from "grammy"; import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; import { ChatOpenAI } from "@langchain/openai"; import { MemorySaver } from "@langchain/langgraph"; @@ -10,10 +10,11 @@ import { createReactAgent } from "@langchain/langgraph/prebuilt"; import { HumanMessage } from "@langchain/core/messages"; const token = process.env.TELEGRAM_BOT_TOKEN; -if (!token) throw new Error('TELEGRAM_BOT_TOKEN environment variable not found.'); +if (!token) { + throw new Error("TELEGRAM_BOT_TOKEN environment variable not found."); +} const bot = new Bot(token); - async function initializeAgent(userId: string) { try { const llm = new ChatOpenAI({ @@ -24,7 +25,7 @@ async function initializeAgent(userId: string) { const solanaKit = new SolanaAgentKit( process.env.SOLANA_PRIVATE_KEY!, process.env.RPC_URL, - process.env.OPENAI_API_KEY! + process.env.OPENAI_API_KEY!, ); const tools = createSolanaTools(solanaKit); @@ -51,24 +52,40 @@ async function initializeAgent(userId: string) { } } // Telegram bot handler -bot.on('message:text', async (ctx:any) => { +bot.on("message:text", async (ctx: any) => { const userId = ctx.from?.id.toString(); - if (!userId) return; - const {agent, config} = await initializeAgent(userId); - const stream = await agent.stream({ messages: [new HumanMessage(ctx.message.text)] }, config); - const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), 20000)); + if (!userId) { + return; + } + const { agent, config } = await initializeAgent(userId); + const stream = await agent.stream( + { messages: [new HumanMessage(ctx.message.text)] }, + config, + ); + const timeoutPromise = new Promise((_, reject) => + setTimeout(() => reject(new Error("Timeout")), 20000), + ); try { - for await (const chunk of await Promise.race([stream, timeoutPromise]) as AsyncIterable<{ agent?: any; tools?: any }>) { + for await (const chunk of (await Promise.race([ + stream, + timeoutPromise, + ])) as AsyncIterable<{ agent?: any; tools?: any }>) { if ("agent" in chunk) { - if (chunk.agent.messages[0].content) await ctx.reply(String(chunk.agent.messages[0].content)); - } + if (chunk.agent.messages[0].content) { + await ctx.reply(String(chunk.agent.messages[0].content)); + } + } } } catch (error: any) { - if (error.message === 'Timeout') { - await ctx.reply("I'm sorry, the operation took too long and timed out. Please try again."); + if (error.message === "Timeout") { + await ctx.reply( + "I'm sorry, the operation took too long and timed out. Please try again.", + ); } else { console.error("Error processing stream:", error); - await ctx.reply("I'm sorry, an error occurred while processing your request."); + await ctx.reply( + "I'm sorry, an error occurred while processing your request.", + ); } } }); @@ -77,10 +94,10 @@ bot.on('message:text', async (ctx:any) => { export const POST = async (req: Request) => { // Mark the function as a background function for Vercel const headers = new Headers(); - headers.set('x-vercel-background', 'true'); + headers.set("x-vercel-background", "true"); - const handler = webhookCallback(bot, 'std/http'); // Use the correct callback + const handler = webhookCallback(bot, "std/http"); // Use the correct callback // Handle the incoming webhook request return handler(req); -}; \ No newline at end of file +}; diff --git a/src/agent/index.ts b/src/agent/index.ts index f301523..461baf5 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -215,13 +215,8 @@ export class SolanaAgentKit { ); } - async orcaClosePosition( - positionMintAddress: PublicKey, - ) { - return orcaClosePosition( - this, - positionMintAddress, - ); + async orcaClosePosition(positionMintAddress: PublicKey) { + return orcaClosePosition(this, positionMintAddress); } async orcaCreateCLMM( @@ -230,13 +225,7 @@ export class SolanaAgentKit { initialPrice: Decimal, feeTier: keyof typeof FEE_TIERS, ) { - return orcaCreateCLMM( - this, - mintDeploy, - mintPair, - initialPrice, - feeTier, - ); + return orcaCreateCLMM(this, mintDeploy, mintPair, initialPrice, feeTier); } async orcaCreateSingleSidedLiquidityPool( @@ -258,11 +247,8 @@ export class SolanaAgentKit { ); } - async orcaFetchPositions( - ) { - return orcaFetchPositions( - this, - ); + async orcaFetchPositions() { + return orcaFetchPositions(this); } async orcaOpenCenteredPositionWithLiquidity( diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 92f3a58..e17d25a 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -798,11 +798,11 @@ export class SolanaCompressedAirdropTool extends Tool { export class SolanaClosePostition extends Tool { name = "orca_close_position"; - description = `Closes an existing liquidity position in an Orca Whirlpool. This function fetches the position + description = `Closes an existing liquidity position in an Orca Whirlpool. This function fetches the position details using the provided mint address and closes the position with a 1% slippage. Inputs (JSON string): - - positionMintAddress: string, the address of the position mint that represents the liquidity position.` + - positionMintAddress: string, the address of the position mint that represents the liquidity position.`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -811,12 +811,12 @@ export class SolanaClosePostition extends Tool { async _call(input: string): Promise { try { const inputFormat = JSON.parse(input); - const positionMintAddress = new PublicKey(inputFormat.positionMintAddress); - - const txId = await this.solanaKit.orcaClosePosition( - positionMintAddress, + const positionMintAddress = new PublicKey( + inputFormat.positionMintAddress, ); + const txId = await this.solanaKit.orcaClosePosition(positionMintAddress); + return JSON.stringify({ status: "success", message: "Liquidity position closed successfully.", @@ -871,7 +871,8 @@ export class SolanaOrcaCreateCLMM extends Tool { return JSON.stringify({ status: "success", - message: "CLMM pool created successfully. Note: No liquidity was added.", + message: + "CLMM pool created successfully. Note: No liquidity was added.", transaction: txId, }); } catch (error: any) { @@ -884,7 +885,6 @@ export class SolanaOrcaCreateCLMM extends Tool { } } - export class SolanaOrcaCreateSingleSideLiquidityPool extends Tool { name = "orca_create_single_sided_liquidity_pool"; description = `Create a single-sided liquidity pool on Orca, the most efficient and capital-optimized CLMM platform on Solana. @@ -955,8 +955,7 @@ export class SolanaOrcaFetchPositions extends Tool { async _call(): Promise { try { - - const txId = await this.solanaKit.orcaFetchPositions() + const txId = await this.solanaKit.orcaFetchPositions(); return JSON.stringify({ status: "success", @@ -995,8 +994,10 @@ export class SolanaOrcaOpenCenteredPosition extends Tool { const inputTokenMint = new PublicKey(inputFormat.inputTokenMint); const inputAmount = new Decimal(inputFormat.inputAmount); - if (priceOffsetBps < 0 ) { - throw new Error("Invalid distanceFromCurrentPriceBps. It must be equal or greater than 0."); + if (priceOffsetBps < 0) { + throw new Error( + "Invalid distanceFromCurrentPriceBps. It must be equal or greater than 0.", + ); } const txId = await this.solanaKit.orcaOpenCenteredPositionWithLiquidity( @@ -1040,13 +1041,16 @@ export class SolanaOrcaOpenSingleSidedPosition extends Tool { try { const inputFormat = JSON.parse(input); const whirlpoolAddress = new PublicKey(inputFormat.whirlpoolAddress); - const distanceFromCurrentPriceBps = inputFormat.distanceFromCurrentPriceBps; + const distanceFromCurrentPriceBps = + inputFormat.distanceFromCurrentPriceBps; const widthBps = inputFormat.widthBps; const inputTokenMint = new PublicKey(inputFormat.inputTokenMint); const inputAmount = new Decimal(inputFormat.inputAmount); if (distanceFromCurrentPriceBps < 0 || widthBps < 0) { - throw new Error("Invalid distanceFromCurrentPriceBps or width. It must be equal or greater than 0."); + throw new Error( + "Invalid distanceFromCurrentPriceBps or width. It must be equal or greater than 0.", + ); } const txId = await this.solanaKit.orcaOpenSingleSidedPosition( @@ -1520,9 +1524,9 @@ export class SolanaRockPaperScissorsTool extends Tool { const result = await this.solanaKit.rockPaperScissors( Number(parsedInput['"amount"']), parsedInput['"choice"'].replace(/^"|"$/g, "") as - | "rock" - | "paper" - | "scissors", + | "rock" + | "paper" + | "scissors", ); return JSON.stringify({ diff --git a/src/tools/index.ts b/src/tools/index.ts index 9bdd7c5..af70276 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -16,7 +16,7 @@ export * from "./get_token_data"; export * from "./stake_with_jup"; export * from "./fetch_price"; export * from "./send_compressed_airdrop"; -export * from "./orca_close_position" +export * from "./orca_close_position"; export * from "./orca_create_clmm"; export * from "./orca_create_single_sided_liquidity_pool"; export * from "./orca_fetch_positions"; diff --git a/src/tools/orca_close_position.ts b/src/tools/orca_close_position.ts index 976d6fc..4475692 100644 --- a/src/tools/orca_close_position.ts +++ b/src/tools/orca_close_position.ts @@ -2,7 +2,7 @@ import { Keypair, PublicKey, TransactionMessage, - VersionedTransaction + VersionedTransaction, } from "@solana/web3.js"; import { SolanaAgentKit } from "../agent"; import { Wallet } from "@coral-xyz/anchor"; @@ -32,7 +32,7 @@ import { Percentage } from "@orca-so/common-sdk"; * - The function uses Orca’s SDK to interact with the specified Whirlpool and close the liquidity position. * - A maximum slippage of 1% is assumed for liquidity provision during the position closing. * - The function automatically fetches the associated Whirlpool address and position details using the provided mint address. - * + * * ## Throws * An error will be thrown if: * - The specified position mint address is invalid or inaccessible. @@ -54,25 +54,29 @@ export async function orcaClosePosition( wallet, ORCA_WHIRLPOOL_PROGRAM_ID, ); - const client = buildWhirlpoolClient(ctx) + const client = buildWhirlpoolClient(ctx); - const positionAddress = PDAUtil.getPosition(ORCA_WHIRLPOOL_PROGRAM_ID, positionMintAddress); + const positionAddress = PDAUtil.getPosition( + ORCA_WHIRLPOOL_PROGRAM_ID, + positionMintAddress, + ); const position = await client.getPosition(positionAddress.publicKey); const whirlpoolAddress = position.getData().whirlpool; const whirlpool = await client.getPool(whirlpoolAddress); - const txBuilder = await whirlpool.closePosition(positionAddress.publicKey, Percentage.fromFraction(1, 100)); + const txBuilder = await whirlpool.closePosition( + positionAddress.publicKey, + Percentage.fromFraction(1, 100), + ); const txPayload = await txBuilder[0].build(); - const txPayloadDecompiled = TransactionMessage.decompile((txPayload.transaction as VersionedTransaction).message); + const txPayloadDecompiled = TransactionMessage.decompile( + (txPayload.transaction as VersionedTransaction).message, + ); const instructions = txPayloadDecompiled.instructions; const signers = txPayload.signers as Keypair[]; - const txId = await sendTx( - agent, - instructions, - signers - ); - return txId + const txId = await sendTx(agent, instructions, signers); + return txId; } catch (error) { throw new Error(`${error}`); } -} \ No newline at end of file +} diff --git a/src/tools/orca_create_clmm.ts b/src/tools/orca_create_clmm.ts index ff86fdc..9fcdc33 100644 --- a/src/tools/orca_create_clmm.ts +++ b/src/tools/orca_create_clmm.ts @@ -1,8 +1,8 @@ -import { +import { Keypair, PublicKey, TransactionMessage, - VersionedTransaction + VersionedTransaction, } from "@solana/web3.js"; import { SolanaAgentKit } from "../agent"; import { Wallet } from "@coral-xyz/anchor"; @@ -45,7 +45,7 @@ import { FEE_TIERS } from "./orca_create_single_sided_liquidity_pool"; * * @remarks * This function only initializes the CLMM pool and does not add liquidity. For adding liquidity, you can use - * a separate function after the pool is successfully created. + * a separate function after the pool is successfully created. * ``` */ export async function orcaCreateCLMM( @@ -57,12 +57,16 @@ export async function orcaCreateCLMM( ): Promise { try { let whirlpoolsConfigAddress: PublicKey; - if (agent.connection.rpcEndpoint.includes('mainnet')) { - whirlpoolsConfigAddress = new PublicKey('2LecshUwdy9xi7meFgHtFJQNSKk4KdTrcpvaB56dP2NQ'); - } else if (agent.connection.rpcEndpoint.includes('devnet')) { - whirlpoolsConfigAddress = new PublicKey('FcrweFY1G9HJAHG5inkGB6pKg1HZ6x9UC2WioAfWrGkR'); + if (agent.connection.rpcEndpoint.includes("mainnet")) { + whirlpoolsConfigAddress = new PublicKey( + "2LecshUwdy9xi7meFgHtFJQNSKk4KdTrcpvaB56dP2NQ", + ); + } else if (agent.connection.rpcEndpoint.includes("devnet")) { + whirlpoolsConfigAddress = new PublicKey( + "FcrweFY1G9HJAHG5inkGB6pKg1HZ6x9UC2WioAfWrGkR", + ); } else { - throw new Error('Unsupported network'); + throw new Error("Unsupported network"); } const wallet = new Wallet(agent.wallet); const ctx = WhirlpoolContext.from( @@ -71,14 +75,12 @@ export async function orcaCreateCLMM( ORCA_WHIRLPOOL_PROGRAM_ID, ); const fetcher = ctx.fetcher; - const client = buildWhirlpoolClient(ctx) + const client = buildWhirlpoolClient(ctx); - const correctTokenOrder = PoolUtil.orderMints( - mintDeploy, - mintPair, - ).map((addr) => addr.toString()); - const isCorrectMintOrder = - correctTokenOrder[0] === mintDeploy.toString(); + const correctTokenOrder = PoolUtil.orderMints(mintDeploy, mintPair).map( + (addr) => addr.toString(), + ); + const isCorrectMintOrder = correctTokenOrder[0] === mintDeploy.toString(); let mintA; let mintB; if (!isCorrectMintOrder) { @@ -94,7 +96,12 @@ export async function orcaCreateCLMM( } const tickSpacing = FEE_TIERS[feeTier]; - const initialTick = PriceMath.priceToInitializableTickIndex(initialPrice, mintAAccount.decimals, mintBAccount.decimals, tickSpacing) + const initialTick = PriceMath.priceToInitializableTickIndex( + initialPrice, + mintAAccount.decimals, + mintBAccount.decimals, + tickSpacing, + ); const { poolKey, tx: txBuilder } = await client.createPool( whirlpoolsConfigAddress, mintA, @@ -102,16 +109,18 @@ export async function orcaCreateCLMM( tickSpacing, initialTick, wallet.publicKey, - ) + ); const txPayload = await txBuilder.build(); - const txPayloadDecompiled = TransactionMessage.decompile((txPayload.transaction as VersionedTransaction).message); + const txPayloadDecompiled = TransactionMessage.decompile( + (txPayload.transaction as VersionedTransaction).message, + ); const instructions = txPayloadDecompiled.instructions; const txId = await sendTx( agent, instructions, - txPayload.signers as Keypair[] + txPayload.signers as Keypair[], ); return JSON.stringify({ transactionId: txId, @@ -120,4 +129,4 @@ export async function orcaCreateCLMM( } catch (error) { throw new Error(`${error}`); } -} \ No newline at end of file +} diff --git a/src/tools/orca_create_single_sided_liquidity_pool.ts b/src/tools/orca_create_single_sided_liquidity_pool.ts index 68602b9..26792b8 100644 --- a/src/tools/orca_create_single_sided_liquidity_pool.ts +++ b/src/tools/orca_create_single_sided_liquidity_pool.ts @@ -1,8 +1,8 @@ -import { - Keypair, - PublicKey, - TransactionMessage, - VersionedTransaction +import { + Keypair, + PublicKey, + TransactionMessage, + VersionedTransaction, } from "@solana/web3.js"; import { SolanaAgentKit } from "../agent"; import { BN, Wallet } from "@coral-xyz/anchor"; @@ -112,12 +112,16 @@ export async function orcaCreateSingleSidedLiquidityPool( ): Promise { try { let whirlpoolsConfigAddress: PublicKey; - if (agent.connection.rpcEndpoint.includes('mainnet')) { - whirlpoolsConfigAddress = new PublicKey('2LecshUwdy9xi7meFgHtFJQNSKk4KdTrcpvaB56dP2NQ'); - } else if (agent.connection.rpcEndpoint.includes('devnet')) { - whirlpoolsConfigAddress = new PublicKey('FcrweFY1G9HJAHG5inkGB6pKg1HZ6x9UC2WioAfWrGkR'); + if (agent.connection.rpcEndpoint.includes("mainnet")) { + whirlpoolsConfigAddress = new PublicKey( + "2LecshUwdy9xi7meFgHtFJQNSKk4KdTrcpvaB56dP2NQ", + ); + } else if (agent.connection.rpcEndpoint.includes("devnet")) { + whirlpoolsConfigAddress = new PublicKey( + "FcrweFY1G9HJAHG5inkGB6pKg1HZ6x9UC2WioAfWrGkR", + ); } else { - throw new Error('Unsupported network'); + throw new Error("Unsupported network"); } const wallet = new Wallet(agent.wallet); const ctx = WhirlpoolContext.from( @@ -263,7 +267,7 @@ export async function orcaCreateSingleSidedLiquidityPool( ) { throw Error("Prices out of bounds"); } - depositTokenAmount = isCorrectMintOrder + depositTokenAmount = isCorrectMintOrder ? depositTokenAmount * Math.pow(10, mintAAccount.decimals) : depositTokenAmount * Math.pow(10, mintBAccount.decimals); const increasLiquidityQuoteParam: IncreaseLiquidityQuoteParam = { @@ -388,7 +392,9 @@ export async function orcaCreateSingleSidedLiquidityPool( tickArrayUpper: tickArrayUpperPda.publicKey, }; - const liquidityIx = !TokenExtensionUtil.isV2IxRequiredPool(tokenExtensionCtx) + const liquidityIx = !TokenExtensionUtil.isV2IxRequiredPool( + tokenExtensionCtx, + ) ? increaseLiquidityIx(ctx.program, baseParamsLiquidity) : increaseLiquidityV2Ix(ctx.program, { ...baseParamsLiquidity, @@ -404,14 +410,13 @@ export async function orcaCreateSingleSidedLiquidityPool( (txPayload.transaction as VersionedTransaction).message, ).instructions; - - const txId = await sendTx( - agent, - instructions, - [positionMintKeypair, tokenVaultAKeypair, tokenVaultBKeypair], - ); + const txId = await sendTx(agent, instructions, [ + positionMintKeypair, + tokenVaultAKeypair, + tokenVaultBKeypair, + ]); return txId; } catch (error) { throw new Error(`Failed to send transaction: ${JSON.stringify(error)}`); } -} \ No newline at end of file +} diff --git a/src/tools/orca_fetch_positions.ts b/src/tools/orca_fetch_positions.ts index dbd86c0..f90b8a0 100644 --- a/src/tools/orca_fetch_positions.ts +++ b/src/tools/orca_fetch_positions.ts @@ -58,18 +58,18 @@ export async function orcaFetchPositions( wallet, ORCA_WHIRLPOOL_PROGRAM_ID, ); - const client = buildWhirlpoolClient(ctx) + const client = buildWhirlpoolClient(ctx); const positions = await getAllPositionAccountsByOwner({ - ctx, - owner: agent.wallet.publicKey - }) + ctx, + owner: agent.wallet.publicKey, + }); const positionDatas = [ ...positions.positions.entries(), - ...positions.positionsWithTokenExtensions.entries() + ...positions.positionsWithTokenExtensions.entries(), ]; const result: PositionDataMap = {}; - for (const [_, positionData] of positionDatas) { + for (const [, positionData] of positionDatas) { const positionMintAddress = positionData.positionMint; const whirlpoolAddress = positionData.whirlpool; const whirlpool = await client.getPool(whirlpoolAddress); @@ -78,16 +78,34 @@ export async function orcaFetchPositions( const currentTick = whirlpoolData.tickCurrentIndex; const mintA = whirlpool.getTokenAInfo(); const mintB = whirlpool.getTokenBInfo(); - const currentPrice = PriceMath.sqrtPriceX64ToPrice(sqrtPrice, mintA.decimals, mintB.decimals); - const lowerTick = positionData.tickLowerIndex - const upperTick = positionData.tickUpperIndex - const lowerPrice = PriceMath.tickIndexToPrice(lowerTick, mintA.decimals, mintB.decimals); - const upperPrice = PriceMath.tickIndexToPrice(upperTick, mintA.decimals, mintB.decimals); - const centerPosition = (lowerPrice.add(upperPrice)).div(2); + const currentPrice = PriceMath.sqrtPriceX64ToPrice( + sqrtPrice, + mintA.decimals, + mintB.decimals, + ); + const lowerTick = positionData.tickLowerIndex; + const upperTick = positionData.tickUpperIndex; + const lowerPrice = PriceMath.tickIndexToPrice( + lowerTick, + mintA.decimals, + mintB.decimals, + ); + const upperPrice = PriceMath.tickIndexToPrice( + upperTick, + mintA.decimals, + mintB.decimals, + ); + const centerPosition = lowerPrice.add(upperPrice).div(2); - const positionInRange = (currentTick > lowerTick && currentTick < upperTick) ? true : false; + const positionInRange = + currentTick > lowerTick && currentTick < upperTick ? true : false; const distanceFromCenterBps = Math.ceil( - currentPrice.sub(centerPosition).abs().div(centerPosition).mul(10000).toNumber() + currentPrice + .sub(centerPosition) + .abs() + .div(centerPosition) + .mul(10000) + .toNumber(), ); result[positionMintAddress.toString()] = { @@ -100,4 +118,4 @@ export async function orcaFetchPositions( } catch (error) { throw new Error(`${error}`); } -} \ No newline at end of file +} diff --git a/src/tools/orca_open_centered_position_with_liquidity.ts b/src/tools/orca_open_centered_position_with_liquidity.ts index 2213c12..dfe8ee3 100644 --- a/src/tools/orca_open_centered_position_with_liquidity.ts +++ b/src/tools/orca_open_centered_position_with_liquidity.ts @@ -1,4 +1,10 @@ -import { Keypair, PublicKey, TransactionInstruction, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; +import { + Keypair, + PublicKey, + TransactionInstruction, + TransactionMessage, + VersionedTransaction, +} from "@solana/web3.js"; import { SolanaAgentKit } from "../agent"; import { Wallet } from "@coral-xyz/anchor"; import { Decimal } from "decimal.js"; @@ -20,7 +26,7 @@ import { TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; * # Opens a Centered Liquidity Position in an Orca Whirlpool * * This function opens a centered liquidity position in a specified Orca Whirlpool. The user defines - * a basis point (bps) offset from the cuurent price of the pool to set the lower and upper bounds of the position. + * a basis point (bps) offset from the cuurent price of the pool to set the lower and upper bounds of the position. * The user also specifies the token mint and the amount to deposit. The required amount of the other token * is calculated automatically. * @@ -69,29 +75,44 @@ export async function orcaOpenCenteredPositionWithLiquidity( wallet, ORCA_WHIRLPOOL_PROGRAM_ID, ); - const client = buildWhirlpoolClient(ctx) + const client = buildWhirlpoolClient(ctx); const whirlpool = await client.getPool(whirlpoolAddress); const whirlpoolData = whirlpool.getData(); - const mintInfoA = whirlpool.getTokenAInfo() - const mintInfoB = whirlpool.getTokenBInfo() + const mintInfoA = whirlpool.getTokenAInfo(); + const mintInfoB = whirlpool.getTokenBInfo(); const price = PriceMath.sqrtPriceX64ToPrice( whirlpoolData.sqrtPrice, mintInfoA.decimals, - mintInfoB.decimals - ) + mintInfoB.decimals, + ); - const lowerPrice = price.mul(1 - priceOffsetBps / 10000) - const upperPrice = price.mul(1 + priceOffsetBps / 10000) - const lowerTick = PriceMath.priceToInitializableTickIndex(lowerPrice, mintInfoA.decimals, mintInfoB.decimals, whirlpoolData.tickSpacing) - const upperTick = PriceMath.priceToInitializableTickIndex(upperPrice, mintInfoA.decimals, mintInfoB.decimals, whirlpoolData.tickSpacing) + const lowerPrice = price.mul(1 - priceOffsetBps / 10000); + const upperPrice = price.mul(1 + priceOffsetBps / 10000); + const lowerTick = PriceMath.priceToInitializableTickIndex( + lowerPrice, + mintInfoA.decimals, + mintInfoB.decimals, + whirlpoolData.tickSpacing, + ); + const upperTick = PriceMath.priceToInitializableTickIndex( + upperPrice, + mintInfoA.decimals, + mintInfoB.decimals, + whirlpoolData.tickSpacing, + ); - const txBuilderTickArrays = await whirlpool.initTickArrayForTicks([lowerTick, upperTick]) - let instructions: TransactionInstruction[] = [] - let signers: Keypair[] = [] + const txBuilderTickArrays = await whirlpool.initTickArrayForTicks([ + lowerTick, + upperTick, + ]); + let instructions: TransactionInstruction[] = []; + let signers: Keypair[] = []; if (txBuilderTickArrays !== null) { const txPayloadTickArrays = await txBuilderTickArrays.build(); - const txPayloadTickArraysDecompiled = TransactionMessage.decompile((txPayloadTickArrays.transaction as VersionedTransaction).message); + const txPayloadTickArraysDecompiled = TransactionMessage.decompile( + (txPayloadTickArrays.transaction as VersionedTransaction).message, + ); const instructionsTickArrays = txPayloadTickArraysDecompiled.instructions; instructions = instructions.concat(instructionsTickArrays); signers = signers.concat(txPayloadTickArrays.signers as Keypair[]); @@ -109,33 +130,32 @@ export async function orcaOpenCenteredPositionWithLiquidity( upperTick, Percentage.fromFraction(1, 100), whirlpool, - tokenExtensionCtx - ) - const { positionMint, tx: txBuilder } = await whirlpool.openPositionWithMetadata( - lowerTick, - upperTick, - increaseLiquiditQuote, - undefined, - undefined, - undefined, - TOKEN_2022_PROGRAM_ID - ) + tokenExtensionCtx, + ); + const { positionMint, tx: txBuilder } = + await whirlpool.openPositionWithMetadata( + lowerTick, + upperTick, + increaseLiquiditQuote, + undefined, + undefined, + undefined, + TOKEN_2022_PROGRAM_ID, + ); const txPayload = await txBuilder.build(); - const txPayloadDecompiled = TransactionMessage.decompile((txPayload.transaction as VersionedTransaction).message); + const txPayloadDecompiled = TransactionMessage.decompile( + (txPayload.transaction as VersionedTransaction).message, + ); instructions = instructions.concat(txPayloadDecompiled.instructions); signers = signers.concat(txPayload.signers as Keypair[]); - const txId = await sendTx( - agent, - instructions, - signers - ); + const txId = await sendTx(agent, instructions, signers); return JSON.stringify({ transactionId: txId, positionMint: positionMint.toString(), - }) + }); } catch (error) { throw new Error(`${error}`); } -} \ No newline at end of file +} diff --git a/src/tools/orca_open_single_sided_position.ts b/src/tools/orca_open_single_sided_position.ts index 3845f61..741069a 100644 --- a/src/tools/orca_open_single_sided_position.ts +++ b/src/tools/orca_open_single_sided_position.ts @@ -1,4 +1,9 @@ -import { Keypair, PublicKey, TransactionInstruction, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; +import { + Keypair, + PublicKey, + TransactionMessage, + VersionedTransaction, +} from "@solana/web3.js"; import { SolanaAgentKit } from "../agent"; import { Wallet } from "@coral-xyz/anchor"; import { Decimal } from "decimal.js"; @@ -52,7 +57,7 @@ export async function orcaOpenSingleSidedPosition( distanceFromCurrentPriceBps: number, widthBps: number, inputTokenMint: PublicKey, - inputAmount: Decimal + inputAmount: Decimal, ): Promise { try { const wallet = new Wallet(agent.wallet); @@ -70,7 +75,7 @@ export async function orcaOpenSingleSidedPosition( const price = PriceMath.sqrtPriceX64ToPrice( whirlpoolData.sqrtPrice, mintInfoA.decimals, - mintInfoB.decimals + mintInfoB.decimals, ); const isTokenA = inputTokenMint.equals(mintInfoA.mint); @@ -85,13 +90,13 @@ export async function orcaOpenSingleSidedPosition( upperBoundPrice, mintInfoA.decimals, mintInfoB.decimals, - whirlpoolData.tickSpacing + whirlpoolData.tickSpacing, ); lowerTick = PriceMath.priceToInitializableTickIndex( lowerBoundPrice, mintInfoA.decimals, mintInfoB.decimals, - whirlpoolData.tickSpacing + whirlpoolData.tickSpacing, ); } else { lowerBoundPrice = price.mul(1 - distanceFromCurrentPriceBps / 10000); @@ -100,26 +105,31 @@ export async function orcaOpenSingleSidedPosition( upperBoundPrice, mintInfoA.decimals, mintInfoB.decimals, - whirlpoolData.tickSpacing + whirlpoolData.tickSpacing, ); upperTick = PriceMath.priceToInitializableTickIndex( lowerBoundPrice, mintInfoA.decimals, mintInfoB.decimals, - whirlpoolData.tickSpacing + whirlpoolData.tickSpacing, ); } - const txBuilderTickArrays = await whirlpool.initTickArrayForTicks([lowerTick, upperTick]); - let txIds: string = ''; + const txBuilderTickArrays = await whirlpool.initTickArrayForTicks([ + lowerTick, + upperTick, + ]); + let txIds: string = ""; if (txBuilderTickArrays !== null) { const txPayloadTickArrays = await txBuilderTickArrays.build(); - const txPayloadTickArraysDecompiled = TransactionMessage.decompile((txPayloadTickArrays.transaction as VersionedTransaction).message); + const txPayloadTickArraysDecompiled = TransactionMessage.decompile( + (txPayloadTickArrays.transaction as VersionedTransaction).message, + ); const instructions = txPayloadTickArraysDecompiled.instructions; const signers = txPayloadTickArrays.signers as Keypair[]; const tickArrayTxId = await sendTx(agent, instructions, signers); - txIds += tickArrayTxId + ','; + txIds += tickArrayTxId + ","; } const tokenExtensionCtx: TokenExtensionContextForPool = { @@ -134,25 +144,28 @@ export async function orcaOpenSingleSidedPosition( upperTick, Percentage.fromFraction(1, 100), whirlpool, - tokenExtensionCtx - ); - const { positionMint, tx: txBuilder } = await whirlpool.openPositionWithMetadata( - lowerTick, - upperTick, - increaseLiquiditQuote, - undefined, - undefined, - undefined, - TOKEN_2022_PROGRAM_ID + tokenExtensionCtx, ); + const { positionMint, tx: txBuilder } = + await whirlpool.openPositionWithMetadata( + lowerTick, + upperTick, + increaseLiquiditQuote, + undefined, + undefined, + undefined, + TOKEN_2022_PROGRAM_ID, + ); const txPayload = await txBuilder.build(); - const txPayloadDecompiled = TransactionMessage.decompile((txPayload.transaction as VersionedTransaction).message); + const txPayloadDecompiled = TransactionMessage.decompile( + (txPayload.transaction as VersionedTransaction).message, + ); const instructions = txPayloadDecompiled.instructions; const signers = txPayload.signers as Keypair[]; const positionTxId = await sendTx(agent, instructions, signers); - txIds += positionTxId; + txIds += positionTxId; return JSON.stringify({ transactionIds: txIds, diff --git a/src/utils/send_tx.ts b/src/utils/send_tx.ts index d897b9a..11923b5 100644 --- a/src/utils/send_tx.ts +++ b/src/utils/send_tx.ts @@ -1,61 +1,71 @@ import { SolanaAgentKit } from "../agent"; -import { Keypair, Signer, TransactionInstruction, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; -import { ComputeBudgetProgram, } from "@solana/web3.js"; - +import { + Keypair, + Signer, + TransactionInstruction, + TransactionMessage, + VersionedTransaction, +} from "@solana/web3.js"; +import { ComputeBudgetProgram } from "@solana/web3.js"; const feeTiers = { min: 0.01, mid: 0.5, - max: 0.95 -} + max: 0.95, +}; /** * Get priority fees for the current block * @param connection - Solana RPC connection * @returns Priority fees statistics and instructions for different fee levels */ -export async function getComputeBudgetInstructions(agent: SolanaAgentKit, instructions: TransactionInstruction[], feeTier: keyof typeof feeTiers): Promise<{ +export async function getComputeBudgetInstructions( + agent: SolanaAgentKit, + instructions: TransactionInstruction[], + feeTier: keyof typeof feeTiers, +): Promise<{ blockhash: string; computeBudgetLimitInstruction: TransactionInstruction; computeBudgetPriorityFeeInstructions: TransactionInstruction; - } > { - try { - const blockhash = (await agent.connection.getLatestBlockhash()).blockhash; - const messageV0 = new TransactionMessage({ - payerKey: agent.wallet_address, - recentBlockhash: blockhash, - instructions: instructions, - }).compileToV0Message(); - const transaction = new VersionedTransaction(messageV0); - const simulatedTx = agent.connection.simulateTransaction(transaction); - const estimatedComputeUnits = (await simulatedTx).value.unitsConsumed; - const safeComputeUnits = Math.ceil( - estimatedComputeUnits ? - Math.max(estimatedComputeUnits + 100000, estimatedComputeUnits * 1.2) - : 200000 - ); - const computeBudgetLimitInstruction = ComputeBudgetProgram.setComputeUnitLimit({ +}> { + const blockhash = (await agent.connection.getLatestBlockhash()).blockhash; + const messageV0 = new TransactionMessage({ + payerKey: agent.wallet_address, + recentBlockhash: blockhash, + instructions: instructions, + }).compileToV0Message(); + const transaction = new VersionedTransaction(messageV0); + const simulatedTx = agent.connection.simulateTransaction(transaction); + const estimatedComputeUnits = (await simulatedTx).value.unitsConsumed; + const safeComputeUnits = Math.ceil( + estimatedComputeUnits + ? Math.max(estimatedComputeUnits + 100000, estimatedComputeUnits * 1.2) + : 200000, + ); + const computeBudgetLimitInstruction = + ComputeBudgetProgram.setComputeUnitLimit({ units: safeComputeUnits, }); - const priorityFee = await agent.connection.getRecentPrioritizationFees() - .then(fees => - fees.sort((a, b) => a.prioritizationFee - b.prioritizationFee) - [Math.floor(fees.length * feeTiers[feeTier])].prioritizationFee - ); + const priorityFee = await agent.connection + .getRecentPrioritizationFees() + .then( + (fees) => + fees.sort((a, b) => a.prioritizationFee - b.prioritizationFee)[ + Math.floor(fees.length * feeTiers[feeTier]) + ].prioritizationFee, + ); - const computeBudgetPriorityFeeInstructions = ComputeBudgetProgram.setComputeUnitPrice({ + const computeBudgetPriorityFeeInstructions = + ComputeBudgetProgram.setComputeUnitPrice({ microLamports: priorityFee, }); - return { - blockhash, - computeBudgetLimitInstruction, - computeBudgetPriorityFeeInstructions - }; - } catch (error) { - throw error; - } + return { + blockhash, + computeBudgetLimitInstruction, + computeBudgetPriorityFeeInstructions, + }; } /** @@ -67,55 +77,52 @@ export async function getComputeBudgetInstructions(agent: SolanaAgentKit, instru export async function sendTx( agent: SolanaAgentKit, instructions: TransactionInstruction[], - otherKeypairs?: Keypair[] + otherKeypairs?: Keypair[], ) { - try { - const ixComputeBudget = await getComputeBudgetInstructions(agent, instructions, "mid"); - const allInstructions = [ - ixComputeBudget.computeBudgetLimitInstruction, - ixComputeBudget.computeBudgetPriorityFeeInstructions, - ...instructions]; - const messageV0 = new TransactionMessage({ - payerKey: agent.wallet_address, - recentBlockhash: ixComputeBudget.blockhash, - instructions: allInstructions, - }).compileToV0Message(); - const transaction = new VersionedTransaction(messageV0); - transaction.sign([agent.wallet, ...(otherKeypairs ?? [])] as Signer[]); + const ixComputeBudget = await getComputeBudgetInstructions( + agent, + instructions, + "mid", + ); + const allInstructions = [ + ixComputeBudget.computeBudgetLimitInstruction, + ixComputeBudget.computeBudgetPriorityFeeInstructions, + ...instructions, + ]; + const messageV0 = new TransactionMessage({ + payerKey: agent.wallet_address, + recentBlockhash: ixComputeBudget.blockhash, + instructions: allInstructions, + }).compileToV0Message(); + const transaction = new VersionedTransaction(messageV0); + transaction.sign([agent.wallet, ...(otherKeypairs ?? [])] as Signer[]); - const timeoutMs = 90000; - const startTime = Date.now(); - try { - while (Date.now() - startTime < timeoutMs) { - const transactionStartTime = Date.now(); + const timeoutMs = 90000; + const startTime = Date.now(); + while (Date.now() - startTime < timeoutMs) { + const transactionStartTime = Date.now(); - const signature = await agent.connection.sendTransaction( - transaction, - { - maxRetries: 0, - skipPreflight: false, - }); + const signature = await agent.connection.sendTransaction(transaction, { + maxRetries: 0, + skipPreflight: false, + }); - const statuses = await agent.connection.getSignatureStatuses([signature]); - if (statuses.value[0]) { - if (!statuses.value[0].err) { - return signature; - } else { - throw new Error(`Transaction failed: ${statuses.value[0].err.toString()}`); - } - } - - const elapsedTime = Date.now() - transactionStartTime; - const remainingTime = Math.max(0, 1000 - elapsedTime); - if (remainingTime > 0) { - await new Promise(resolve => setTimeout(resolve, remainingTime)); - } + const statuses = await agent.connection.getSignatureStatuses([signature]); + if (statuses.value[0]) { + if (!statuses.value[0].err) { + return signature; + } else { + throw new Error( + `Transaction failed: ${statuses.value[0].err.toString()}`, + ); } - throw new Error("Transaction timeout"); - } catch (error) { - throw error; } - } catch (error) { - throw error; + + const elapsedTime = Date.now() - transactionStartTime; + const remainingTime = Math.max(0, 1000 - elapsedTime); + if (remainingTime > 0) { + await new Promise((resolve) => setTimeout(resolve, remainingTime)); + } } + throw new Error("Transaction timeout"); } From 56185d94fbd24be617895b36fd5e606249fbb053 Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Mon, 30 Dec 2024 12:00:51 +0100 Subject: [PATCH 30/94] feat: markdown formatting --- .../components/ChatMessageBubble.tsx | 93 +++--- .../agent-kit-nextjs-langchain/package.json | 3 + .../agent-kit-nextjs-langchain/pnpm-lock.yaml | 296 +++++++++++++++++- .../tailwind.config.js | 32 +- .../utils/markdownToHTML.ts | 31 ++ 5 files changed, 397 insertions(+), 58 deletions(-) create mode 100644 examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts diff --git a/examples/agent-kit-nextjs-langchain/components/ChatMessageBubble.tsx b/examples/agent-kit-nextjs-langchain/components/ChatMessageBubble.tsx index 8d1beca..aef1231 100644 --- a/examples/agent-kit-nextjs-langchain/components/ChatMessageBubble.tsx +++ b/examples/agent-kit-nextjs-langchain/components/ChatMessageBubble.tsx @@ -1,39 +1,58 @@ +import markdownToHtml from "@/utils/markdownToHTML"; import type { Message } from "ai/react"; +import { useMemo } from "react"; -export function ChatMessageBubble(props: { message: Message, aiEmoji?: string, sources: any[] }) { - const colorClassName = - props.message.role === "user" ? "bg-sky-600" : "bg-slate-50 text-black"; - const alignmentClassName = - props.message.role === "user" ? "ml-auto" : "mr-auto"; - const prefix = props.message.role === "user" ? "🧑" : props.aiEmoji; - return ( -
    -
    - {prefix} -
    -
    - {props.message.content} - {props.sources && props.sources.length ? <> - -

    - 🔍 Sources: -

    -
    - - {props.sources?.map((source, i) => ( -
    - {i + 1}. "{source.pageContent}"{ - source.metadata?.loc?.lines !== undefined - ?

    Lines {source.metadata?.loc?.lines?.from} to {source.metadata?.loc?.lines?.to}
    - : "" - } -
    - ))} -
    - : ""} -
    -
    - ); -} \ No newline at end of file +export function ChatMessageBubble(props: { + message: Message; + aiEmoji?: string; + sources: any[]; +}) { + const colorClassName = + props.message.role === "user" ? "bg-sky-600" : "bg-slate-50 text-black"; + const alignmentClassName = + props.message.role === "user" ? "ml-auto" : "mr-auto"; + const prefix = props.message.role === "user" ? "🧑" : props.aiEmoji; + + const content = useMemo(() => { + return markdownToHtml(props.message.content); + }, [props.message.content]); + + return ( +
    +
    {prefix}
    +
    +
    + {props.sources && props.sources.length ? ( + <> + +

    🔍 Sources:

    +
    + + {props.sources?.map((source, i) => ( +
    + {i + 1}. "{source.pageContent}" + {source.metadata?.loc?.lines !== undefined ? ( +
    +
    + Lines {source.metadata?.loc?.lines?.from} to{" "} + {source.metadata?.loc?.lines?.to} +
    + ) : ( + "" + )} +
    + ))} +
    + + ) : ( + "" + )} +
    +
    + ); +} diff --git a/examples/agent-kit-nextjs-langchain/package.json b/examples/agent-kit-nextjs-langchain/package.json index 241a8d4..b1eba12 100644 --- a/examples/agent-kit-nextjs-langchain/package.json +++ b/examples/agent-kit-nextjs-langchain/package.json @@ -19,6 +19,7 @@ "@langchain/openai": "^0.3.11", "@next/bundle-analyzer": "^13.4.19", "@supabase/supabase-js": "^2.32.0", + "@tailwindcss/typography": "^0.5.15", "@types/node": "20.12.12", "@types/react": "18.3.2", "@types/react-dom": "18.3.0", @@ -26,7 +27,9 @@ "autoprefixer": "10.4.14", "eslint": "8.46.0", "eslint-config-next": "13.4.12", + "isomorphic-dompurify": "^2.19.0", "langchain": "^0.3.5", + "marked": "^15.0.4", "next": "^14.2.3", "postcss": "8.4.27", "react": "^18.3.1", diff --git a/examples/agent-kit-nextjs-langchain/pnpm-lock.yaml b/examples/agent-kit-nextjs-langchain/pnpm-lock.yaml index 966aa8b..1f8f265 100644 --- a/examples/agent-kit-nextjs-langchain/pnpm-lock.yaml +++ b/examples/agent-kit-nextjs-langchain/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@langchain/community': specifier: ^0.3.11 - version: 0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(@supabase/supabase-js@2.47.10(bufferutil@4.0.8)(utf-8-validate@5.0.10))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(ignore@5.3.2)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + version: 0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(@supabase/supabase-js@2.47.10(bufferutil@4.0.8)(utf-8-validate@5.0.10))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(ignore@5.3.2)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@langchain/core': specifier: ^0.3.17 version: 0.3.26(openai@4.77.0(zod@3.24.1)) @@ -26,6 +26,9 @@ importers: '@supabase/supabase-js': specifier: ^2.32.0 version: 2.47.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@tailwindcss/typography': + specifier: ^0.5.15 + version: 0.5.15(tailwindcss@3.3.3) '@types/node': specifier: 20.12.12 version: 20.12.12 @@ -47,9 +50,15 @@ importers: eslint-config-next: specifier: 13.4.12 version: 13.4.12(eslint@8.46.0)(typescript@5.1.6) + isomorphic-dompurify: + specifier: ^2.19.0 + version: 2.19.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) langchain: specifier: ^0.3.5 version: 0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.4)(openai@4.77.0(zod@3.24.1)) + marked: + specifier: ^15.0.4 + version: 15.0.4 next: specifier: ^14.2.3 version: 14.2.21(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1269,6 +1278,11 @@ packages: '@swc/helpers@0.5.5': resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + '@tailwindcss/typography@0.5.15': + resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20' + '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} @@ -1332,6 +1346,9 @@ packages: '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -1437,6 +1454,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + agentkeepalive@4.5.0: resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} engines: {node: '>= 8.0.0'} @@ -1791,12 +1812,20 @@ packages: engines: {node: '>=4'} hasBin: true + cssstyle@4.1.0: + resolution: {integrity: sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==} + engines: {node: '>=18'} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -1898,6 +1927,9 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} + dompurify@3.2.3: + resolution: {integrity: sha512-U1U5Hzc2MO0oW3DF+G9qYN0aT7atAou4AgI0XjWz061nyBPbdxkfdhfy5uMgGn6+oLFCfn44ZGbdDqCzVmlOWA==} + dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -2332,9 +2364,21 @@ packages: hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} @@ -2342,6 +2386,10 @@ packages: resolution: {integrity: sha512-KJCbPz3tiXB1NGAD7cL4JtwpWV8yd/C7jsaHsxvedMo2ZblNG8emMyvSpGhiKAQVZmi3c0ujz6eJdy22NHuUWQ==} engines: {node: '>=18'} + 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==} @@ -2458,6 +2506,9 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} @@ -2507,6 +2558,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isomorphic-dompurify@2.19.0: + resolution: {integrity: sha512-ppcgeRlEwOQ+v/JDctcjnOsBwEoJlAWVDH5+LisLHphQFeWCrBiVvK6XF4wF0MJM5tJA6RxJSlpbmthnmonxOQ==} + engines: {node: '>=18'} + isomorphic-ws@4.0.1: resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: @@ -2544,6 +2599,15 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsdom@25.0.1: + resolution: {integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -2687,6 +2751,9 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + lodash.includes@4.3.0: resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} @@ -2737,6 +2804,11 @@ packages: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true + marked@15.0.4: + resolution: {integrity: sha512-TCHvDqmb3ZJ4PWG7VEGVgtefA5/euFmsIhxtD0XsBxI39gUSKL81mIRFdt0AiNQozUahd4ke98ZdirExd/vSEw==} + engines: {node: '>= 18'} + hasBin: true + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -2866,6 +2938,9 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} + nwsapi@2.2.16: + resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -2969,6 +3044,9 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -3059,6 +3137,10 @@ packages: peerDependencies: postcss: ^8.2.14 + postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} @@ -3207,6 +3289,9 @@ packages: rpc-websockets@9.0.4: resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} + rrweb-cssom@0.7.1: + resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -3221,6 +3306,13 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} @@ -3423,6 +3515,9 @@ packages: peerDependencies: vue: '>=3.2.26 < 4' + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + tailwindcss@3.3.3: resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} engines: {node: '>=14.0.0'} @@ -3458,6 +3553,13 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tldts-core@6.1.70: + resolution: {integrity: sha512-RNnIXDB1FD4T9cpQRErEqw6ZpjLlGdMOitdV+0xtbsnwr4YFka1zpc7D4KD+aAn8oSG5JyFrdasZTE04qDE9Yg==} + + tldts@6.1.70: + resolution: {integrity: sha512-/W1YVgYVJd9ZDjey5NXadNh0mJXkiUMUue9Zebd0vpdo1sU+H4zFFTaJ1RKD4N6KFoHfcXy6l+Vu7bh+bdWCzA==} + hasBin: true + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -3480,9 +3582,17 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} + tough-cookie@5.0.0: + resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==} + engines: {node: '>=16'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} + trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -3639,6 +3749,10 @@ packages: typescript: optional: true + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} @@ -3650,11 +3764,27 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + webpack-bundle-analyzer@4.7.0: resolution: {integrity: sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==} engines: {node: '>= 10.13.0'} hasBin: true + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@14.1.0: + resolution: {integrity: sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==} + engines: {node: '>=18'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -3718,6 +3848,13 @@ packages: utf-8-validate: optional: true + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + yaml@2.6.1: resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} engines: {node: '>= 14'} @@ -4084,7 +4221,7 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@langchain/community@0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(@supabase/supabase-js@2.47.10(bufferutil@4.0.8)(utf-8-validate@5.0.10))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(ignore@5.3.2)(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@langchain/community@0.3.20(@browserbasehq/sdk@2.0.0)(@browserbasehq/stagehand@1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1))(@ibm-cloud/watsonx-ai@1.3.0)(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(@supabase/supabase-js@2.47.10(bufferutil@4.0.8)(utf-8-validate@5.0.10))(axios@1.7.4)(ibm-cloud-sdk-core@5.1.0)(ignore@5.3.2)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(jsonwebtoken@9.0.2)(lodash@4.17.21)(openai@4.77.0(zod@3.24.1))(playwright@1.49.1)(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: '@browserbasehq/stagehand': 1.8.0(@playwright/test@1.49.1)(bufferutil@4.0.8)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.77.0(zod@3.24.1))(utf-8-validate@5.0.10)(zod@3.24.1) '@ibm-cloud/watsonx-ai': 1.3.0 @@ -4105,10 +4242,11 @@ snapshots: '@browserbasehq/sdk': 2.0.0 '@supabase/supabase-js': 2.47.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) ignore: 5.3.2 + jsdom: 25.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) jsonwebtoken: 9.0.2 lodash: 4.17.21 playwright: 1.49.1 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - '@langchain/anthropic' - '@langchain/aws' @@ -4874,6 +5012,14 @@ snapshots: '@swc/counter': 0.1.3 tslib: 2.8.1 + '@tailwindcss/typography@0.5.15(tailwindcss@3.3.3)': + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.3.3 + '@tokenizer/token@0.3.0': {} '@types/connect@3.4.38': @@ -4936,6 +5082,9 @@ snapshots: '@types/tough-cookie@4.0.5': {} + '@types/trusted-types@2.0.7': + optional: true + '@types/unist@3.0.3': {} '@types/uuid@10.0.0': {} @@ -5067,6 +5216,8 @@ snapshots: acorn@8.14.0: {} + agent-base@7.1.3: {} + agentkeepalive@4.5.0: dependencies: humanize-ms: 1.2.1 @@ -5445,10 +5596,19 @@ snapshots: cssesc@3.0.0: {} + cssstyle@4.1.0: + dependencies: + rrweb-cssom: 0.7.1 + csstype@3.1.3: {} damerau-levenshtein@1.0.8: {} + data-urls@5.0.0: + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.1.0 + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.3 @@ -5531,6 +5691,10 @@ snapshots: dependencies: esutils: 2.0.3 + dompurify@3.2.3: + optionalDependencies: + '@types/trusted-types': 2.0.7 + dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -6144,8 +6308,26 @@ snapshots: dependencies: '@types/hast': 3.0.4 + html-encoding-sniffer@4.0.0: + dependencies: + whatwg-encoding: 3.1.1 + html-void-elements@3.0.0: {} + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + humanize-ms@1.2.1: dependencies: ms: 2.1.3 @@ -6165,11 +6347,15 @@ snapshots: isstream: 0.1.2 jsonwebtoken: 9.0.2 mime-types: 2.1.35 - retry-axios: 2.6.0(axios@1.7.4) + retry-axios: 2.6.0(axios@1.7.4(debug@4.4.0)) tough-cookie: 4.1.4 transitivePeerDependencies: - supports-color + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + ieee754@1.2.1: {} ignore@5.3.2: {} @@ -6279,6 +6465,8 @@ snapshots: is-path-inside@3.0.3: {} + is-potential-custom-element-name@1.0.1: {} + is-reference@3.0.3: dependencies: '@types/estree': 1.0.6 @@ -6328,6 +6516,16 @@ snapshots: isexe@2.0.0: {} + isomorphic-dompurify@2.19.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + dompurify: 3.2.3 + jsdom: 25.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): dependencies: ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -6385,6 +6583,34 @@ snapshots: dependencies: argparse: 2.0.1 + jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + cssstyle: 4.1.0 + data-urls: 5.0.0 + decimal.js: 10.4.3 + form-data: 4.0.1 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.16 + parse5: 7.2.1 + rrweb-cssom: 0.7.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 5.0.0 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.1.0 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + json-buffer@3.0.1: {} json-schema-traverse@0.4.1: {} @@ -6512,6 +6738,8 @@ snapshots: dependencies: p-locate: 5.0.0 + lodash.castarray@4.4.0: {} + lodash.includes@4.3.0: {} lodash.isboolean@3.0.3: {} @@ -6557,6 +6785,8 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 + marked@15.0.4: {} + math-intrinsics@1.1.0: {} mdast-util-to-hast@13.2.0: @@ -6680,6 +6910,8 @@ snapshots: normalize-range@0.1.2: {} + nwsapi@2.2.16: {} + object-assign@4.1.1: {} object-hash@3.0.0: {} @@ -6799,6 +7031,10 @@ snapshots: dependencies: callsites: 3.1.0 + parse5@7.2.1: + dependencies: + entities: 4.5.0 + path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -6860,6 +7096,11 @@ snapshots: postcss: 8.4.27 postcss-selector-parser: 6.1.2 + postcss-selector-parser@6.0.10: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 @@ -6995,7 +7236,7 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - retry-axios@2.6.0(axios@1.7.4): + retry-axios@2.6.0(axios@1.7.4(debug@4.4.0)): dependencies: axios: 1.7.4(debug@4.4.0) @@ -7020,6 +7261,8 @@ snapshots: bufferutil: 4.0.8 utf-8-validate: 5.0.10 + rrweb-cssom@0.7.1: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -7040,6 +7283,12 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safer-buffer@2.1.2: {} + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 @@ -7366,6 +7615,8 @@ snapshots: dependencies: vue: 3.5.13(typescript@5.1.6) + symbol-tree@3.2.4: {} + tailwindcss@3.3.3: dependencies: '@alloc/quick-lru': 5.2.0 @@ -7415,6 +7666,12 @@ snapshots: tiny-invariant@1.3.3: {} + tldts-core@6.1.70: {} + + tldts@6.1.70: + dependencies: + tldts-core: 6.1.70 + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -7437,8 +7694,16 @@ snapshots: universalify: 0.2.0 url-parse: 1.5.10 + tough-cookie@5.0.0: + dependencies: + tldts: 6.1.70 + tr46@0.0.3: {} + tr46@5.0.0: + dependencies: + punycode: 2.3.1 + trim-lines@3.0.1: {} ts-interface-checker@0.1.13: {} @@ -7622,12 +7887,18 @@ snapshots: optionalDependencies: typescript: 5.1.6 + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + web-streams-polyfill@3.3.3: {} web-streams-polyfill@4.0.0-beta.3: {} webidl-conversions@3.0.1: {} + webidl-conversions@7.0.0: {} + webpack-bundle-analyzer@4.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: acorn: 8.14.0 @@ -7643,6 +7914,17 @@ snapshots: - bufferutil - utf-8-validate + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@4.0.0: {} + + whatwg-url@14.1.0: + dependencies: + tr46: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -7718,6 +8000,10 @@ snapshots: bufferutil: 4.0.8 utf-8-validate: 5.0.10 + xml-name-validator@5.0.0: {} + + xmlchars@2.2.0: {} + yaml@2.6.1: {} yocto-queue@0.1.0: {} diff --git a/examples/agent-kit-nextjs-langchain/tailwind.config.js b/examples/agent-kit-nextjs-langchain/tailwind.config.js index 8c4d1b2..84045aa 100644 --- a/examples/agent-kit-nextjs-langchain/tailwind.config.js +++ b/examples/agent-kit-nextjs-langchain/tailwind.config.js @@ -1,18 +1,18 @@ /** @type {import('tailwindcss').Config} */ module.exports = { - content: [ - './pages/**/*.{js,ts,jsx,tsx,mdx}', - './components/**/*.{js,ts,jsx,tsx,mdx}', - './app/**/*.{js,ts,jsx,tsx,mdx}', - ], - theme: { - extend: { - backgroundImage: { - 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', - 'gradient-conic': - 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', - }, - }, - }, - plugins: [], -} + content: [ + "./pages/**/*.{js,ts,jsx,tsx,mdx}", + "./components/**/*.{js,ts,jsx,tsx,mdx}", + "./app/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: { + backgroundImage: { + "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", + "gradient-conic": + "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", + }, + }, + }, + plugins: [require("@tailwindcss/typography")], +}; diff --git a/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts b/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts new file mode 100644 index 0000000..f62268c --- /dev/null +++ b/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts @@ -0,0 +1,31 @@ +import { marked } from "marked"; +import DOMPurify from "isomorphic-dompurify"; + +interface MarkedOptions { + gfm: boolean; + breaks: boolean; + headerIds: boolean; + mangle: false; + highlight?: (code: string, lang: string) => string; +} + +// Configure marked options +const markedOptions: MarkedOptions = { + gfm: true, // GitHub Flavored Markdown + breaks: true, // Convert \n to
    + headerIds: true, // Add ids to headers + mangle: false, // Don't escape HTML + highlight: function (code: string, lang: string): string { + // You can add syntax highlighting here if needed + return code; + }, +}; + +marked.setOptions(markedOptions); + +// Basic markdown to HTML conversion with sanitization +export default function markdownToHtml(markdown: string) { + const rawHtml = marked.parse(markdown); + console.log(rawHtml); + return DOMPurify.sanitize(rawHtml); +} From aedcf4643f1e4668773d1dfb2fb8a182d266acb1 Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Mon, 30 Dec 2024 12:07:02 +0100 Subject: [PATCH 31/94] fix: rawHtml type --- examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts b/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts index f62268c..dc265b1 100644 --- a/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts +++ b/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts @@ -26,6 +26,5 @@ marked.setOptions(markedOptions); // Basic markdown to HTML conversion with sanitization export default function markdownToHtml(markdown: string) { const rawHtml = marked.parse(markdown); - console.log(rawHtml); - return DOMPurify.sanitize(rawHtml); + return DOMPurify.sanitize(rawHtml as string); } From 6295396ba9b6411a545b351b823beedd56f649d8 Mon Sep 17 00:00:00 2001 From: DonDuala Date: Mon, 30 Dec 2024 12:46:54 -0400 Subject: [PATCH 32/94] Add SolanaLimitOrderTool --- src/langchain/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 859c26e..0b3220b 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1434,6 +1434,7 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaRaydiumCreateCpmm(solanaKit), new SolanaOpenbookCreateMarket(solanaKit), new SolanaManifestCreateMarket(solanaKit), + new SolanaLimitOrderTool(solanaKit), new SolanaCreateSingleSidedWhirlpoolTool(solanaKit), new SolanaPythFetchPrice(solanaKit), new SolanaResolveDomainTool(solanaKit), From eaa4b1b155cc4706d219f8c82a059cf304c30c84 Mon Sep 17 00:00:00 2001 From: DonDuala <107803907+DonDuala@users.noreply.github.com> Date: Mon, 30 Dec 2024 12:47:27 -0400 Subject: [PATCH 33/94] Delete yarn.lock --- yarn.lock | 3959 ----------------------------------------------------- 1 file changed, 3959 deletions(-) delete mode 100644 yarn.lock diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index a11e545..0000000 --- a/yarn.lock +++ /dev/null @@ -1,3959 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/runtime@^7.15.4", "@babel/runtime@^7.25.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" - integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== - dependencies: - regenerator-runtime "^0.14.0" - -"@bonfida/sns-records@0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@bonfida/sns-records/-/sns-records-0.0.1.tgz#e178dece0aeeb1670c57703568ae3e1218e7e5fe" - integrity sha512-i28w9+BMFufhhpmLQCNx1CKKXTsEn+5RT18VFpPqdGO3sqaYlnUWC1m3wDpOvlzGk498dljgRpRo5wmcsnuEMg== - dependencies: - borsh "1.0.0" - bs58 "5.0.0" - buffer "^6.0.3" - -"@bonfida/spl-name-service@^3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@bonfida/spl-name-service/-/spl-name-service-3.0.7.tgz#f645f510a886510d661db7625453d7339b681de9" - integrity sha512-okOLXhy+fQoyQ/sZgMleO5RrIZfTkWEoHMxWgUqg6RP/MTBlrKxlhKC6ymKn4UUe0C5s3Nb8A+3Ams7vX0nMDg== - dependencies: - "@bonfida/sns-records" "0.0.1" - "@noble/curves" "^1.4.0" - "@scure/base" "^1.1.6" - "@solana/spl-token" "0.4.6" - borsh "2.0.0" - buffer "^6.0.3" - graphemesplit "^2.4.4" - ipaddr.js "^2.2.0" - punycode "^2.3.1" - -"@cfworker/json-schema@^4.0.2": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@cfworker/json-schema/-/json-schema-4.0.3.tgz#30fc6b72322c74ceb27014a779de0ccdfa0dfb9e" - integrity sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g== - -"@cks-systems/manifest-sdk@^0.1.73": - version "0.1.73" - resolved "https://registry.yarnpkg.com/@cks-systems/manifest-sdk/-/manifest-sdk-0.1.73.tgz#17c7b2f71c2711989cf210815d78b189e40fe481" - integrity sha512-IcRM7k3YZ/jK5nJwE3xGp2Xg7Um4/XCeqrLs5yB3+IjS7W089Qs/prJXdRGKbFwCLkMt9ds6pElHufQr8an0Iw== - dependencies: - "@metaplex-foundation/beet" "^0.7.1" - "@metaplex-foundation/rustbin" "^0.3.1" - "@metaplex-foundation/solita" "^0.12.2" - "@solana/spl-token" "^0.4.8" - "@solana/web3.js" "^1.95.1" - bn.js "^5.2.1" - borsh "^0.7.0" - bs58 "^6.0.0" - js-sha256 "^0.11.0" - keccak256 "^1.0.6" - percentile "^1.6.0" - prom-client "^15.1.3" - rimraf "^5.0.10" - typedoc "^0.26.3" - ws "^8.18.0" - zstddec "^0.0.2" - -"@coral-xyz/anchor@0.29", "@coral-xyz/anchor@0.29.0", "@coral-xyz/anchor@^0.29.0": - version "0.29.0" - resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.29.0.tgz#bd0be95bedfb30a381c3e676e5926124c310ff12" - integrity sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA== - dependencies: - "@coral-xyz/borsh" "^0.29.0" - "@noble/hashes" "^1.3.1" - "@solana/web3.js" "^1.68.0" - bn.js "^5.1.2" - bs58 "^4.0.1" - buffer-layout "^1.2.2" - camelcase "^6.3.0" - cross-fetch "^3.1.5" - crypto-hash "^1.3.0" - eventemitter3 "^4.0.7" - pako "^2.0.3" - snake-case "^3.0.4" - superstruct "^0.15.4" - toml "^3.0.0" - -"@coral-xyz/borsh@^0.29.0": - version "0.29.0" - resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.29.0.tgz#79f7045df2ef66da8006d47f5399c7190363e71f" - integrity sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ== - dependencies: - bn.js "^5.1.2" - buffer-layout "^1.2.0" - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" - integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== - dependencies: - eslint-visitor-keys "^3.4.3" - -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1", "@eslint-community/regexpp@^4.6.1": - version "4.12.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" - integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== - -"@eslint/config-array@^0.19.0": - version "0.19.1" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.1.tgz#734aaea2c40be22bbb1f2a9dac687c57a6a4c984" - integrity sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA== - dependencies: - "@eslint/object-schema" "^2.1.5" - debug "^4.3.1" - minimatch "^3.1.2" - -"@eslint/core@^0.9.0": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.9.1.tgz#31763847308ef6b7084a4505573ac9402c51f9d1" - integrity sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q== - dependencies: - "@types/json-schema" "^7.0.15" - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/eslintrc@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" - integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^10.0.1" - globals "^14.0.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" - integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== - -"@eslint/js@9.17.0": - version "9.17.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.17.0.tgz#1523e586791f80376a6f8398a3964455ecc651ec" - integrity sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w== - -"@eslint/object-schema@^2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.5.tgz#8670a8f6258a2be5b2c620ff314a1d984c23eb2e" - integrity sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ== - -"@eslint/plugin-kit@^0.2.3": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz#2b78e7bb3755784bb13faa8932a1d994d6537792" - integrity sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg== - dependencies: - levn "^0.4.1" - -"@ethersproject/bytes@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" - integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" - integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== - -"@ethersproject/sha2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" - integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - hash.js "1.1.7" - -"@humanfs/core@^0.19.1": - version "0.19.1" - resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" - integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== - -"@humanfs/node@^0.16.6": - version "0.16.6" - resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" - integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== - dependencies: - "@humanfs/core" "^0.19.1" - "@humanwhocodes/retry" "^0.3.0" - -"@humanwhocodes/config-array@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" - integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== - dependencies: - "@humanwhocodes/object-schema" "^2.0.3" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== - -"@humanwhocodes/retry@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" - integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== - -"@humanwhocodes/retry@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" - integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@langchain/core@^0.3.26": - version "0.3.26" - resolved "https://registry.yarnpkg.com/@langchain/core/-/core-0.3.26.tgz#0ebe7cbe7be316076ddef3feff4ce256a953b751" - integrity sha512-6RUQHEp8wv+JwtYIIEBYBzbLlcAQZFc7EDOgAM0ukExjh9HiXoJzoWpgMRRCrr/koIbtwXPJUqBprZK1I1CXHQ== - dependencies: - "@cfworker/json-schema" "^4.0.2" - ansi-styles "^5.0.0" - camelcase "6" - decamelize "1.2.0" - js-tiktoken "^1.0.12" - langsmith "^0.2.8" - mustache "^4.2.0" - p-queue "^6.6.2" - p-retry "4" - uuid "^10.0.0" - zod "^3.22.4" - zod-to-json-schema "^3.22.3" - -"@langchain/groq@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@langchain/groq/-/groq-0.1.2.tgz#d546951022a9c52a1936c3e791850c431f614974" - integrity sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg== - dependencies: - "@langchain/openai" "~0.3.0" - groq-sdk "^0.5.0" - zod "^3.22.4" - zod-to-json-schema "^3.22.5" - -"@langchain/langgraph-checkpoint@~0.0.13": - version "0.0.13" - resolved "https://registry.yarnpkg.com/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-0.0.13.tgz#b349f1518184e1b154227d1fead2bec1e27707fd" - integrity sha512-amdmBcNT8a9xP2VwcEWxqArng4gtRDcnVyVI4DsQIo1Aaz8e8+hH17zSwrUF3pt1pIYztngIfYnBOim31mtKMg== - dependencies: - uuid "^10.0.0" - -"@langchain/langgraph-sdk@~0.0.21": - version "0.0.32" - resolved "https://registry.yarnpkg.com/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.32.tgz#5b6608d3124578f6006c617d8169e0026bdf45ad" - integrity sha512-KQyM9kLO7T6AxwNrceajH7JOybP3pYpvUPnhiI2rrVndI1WyZUJ1eVC1e722BVRAPi6o+WcoTT4uMSZVinPOtA== - dependencies: - "@types/json-schema" "^7.0.15" - p-queue "^6.6.2" - p-retry "4" - uuid "^9.0.0" - -"@langchain/langgraph@^0.2.34": - version "0.2.36" - resolved "https://registry.yarnpkg.com/@langchain/langgraph/-/langgraph-0.2.36.tgz#4a81bded1dd3febd95cacfa1f7a0c6c8effa79b8" - integrity sha512-zxk7ZCVxP0/Ut9785EiXCS7BE7sXd8cu943mcZUF2aNFUaQRTBbbiKpNdR3nb1+xO/B+HVktrJT2VFdkAywnng== - dependencies: - "@langchain/langgraph-checkpoint" "~0.0.13" - "@langchain/langgraph-sdk" "~0.0.21" - uuid "^10.0.0" - zod "^3.23.8" - -"@langchain/openai@>=0.1.0 <0.4.0", "@langchain/openai@^0.3.13", "@langchain/openai@~0.3.0": - version "0.3.16" - resolved "https://registry.yarnpkg.com/@langchain/openai/-/openai-0.3.16.tgz#bc1ebf67e88d5e5f8320d1df4f01ec3151279101" - integrity sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA== - dependencies: - js-tiktoken "^1.0.12" - openai "^4.77.0" - zod "^3.22.4" - zod-to-json-schema "^3.22.3" - -"@langchain/textsplitters@>=0.0.0 <0.2.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@langchain/textsplitters/-/textsplitters-0.1.0.tgz#f37620992192df09ecda3dfbd545b36a6bcbae46" - integrity sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw== - dependencies: - js-tiktoken "^1.0.12" - -"@lightprotocol/compressed-token@^0.17.1": - version "0.17.1" - resolved "https://registry.yarnpkg.com/@lightprotocol/compressed-token/-/compressed-token-0.17.1.tgz#c7e1b1599fbe54e7c20204e1b0d6fa7d9337b78a" - integrity sha512-493KCmZGw1BcHVRJaeRm8EEs+L7gX8dwY7JG13w2pfgOMtZXZ7Wxt261jFJxQJzRLTrUSlrbRJOmfW1+S1Y8SQ== - dependencies: - "@coral-xyz/anchor" "0.29.0" - "@solana/spl-token" "0.4.8" - "@solana/web3.js" "1.95.3" - buffer "6.0.3" - tweetnacl "1.0.3" - -"@lightprotocol/stateless.js@^0.17.1": - version "0.17.1" - resolved "https://registry.yarnpkg.com/@lightprotocol/stateless.js/-/stateless.js-0.17.1.tgz#ff120a28363cf0db4f451f6c2ef28371cd5c8922" - integrity sha512-EjId1n33A6dBwpce33Wsa/fs/CDKtMtRrkxbApH0alXrnEXmbW6QhIViXOrKYXjZ4uJQM1xsBtsKe0vqJ4nbtQ== - dependencies: - "@coral-xyz/anchor" "0.29.0" - "@noble/hashes" "1.5.0" - "@solana/web3.js" "1.95.3" - buffer "6.0.3" - superstruct "2.0.2" - tweetnacl "1.0.3" - -"@metaplex-foundation/beet-solana@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet-solana/-/beet-solana-0.3.1.tgz#4b37cda5c7f32ffd2bdd8b3164edc05c6463ab35" - integrity sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g== - dependencies: - "@metaplex-foundation/beet" ">=0.1.0" - "@solana/web3.js" "^1.56.2" - bs58 "^5.0.0" - debug "^4.3.4" - -"@metaplex-foundation/beet-solana@^0.4.0": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet-solana/-/beet-solana-0.4.1.tgz#255747aa7feee1c20202146a752c057feca1948f" - integrity sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ== - dependencies: - "@metaplex-foundation/beet" ">=0.1.0" - "@solana/web3.js" "^1.56.2" - bs58 "^5.0.0" - debug "^4.3.4" - -"@metaplex-foundation/beet@>=0.1.0", "@metaplex-foundation/beet@^0.7.1": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.7.2.tgz#fa4726e4cfd4fb6fed6cddc9b5213c1c2a2d0b77" - integrity sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg== - dependencies: - ansicolors "^0.3.2" - assert "^2.1.0" - bn.js "^5.2.0" - debug "^4.3.3" - -"@metaplex-foundation/beet@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.4.0.tgz#eb2a0a6eb084bb25d67dd9bed2f7387ee7e63a55" - integrity sha512-2OAKJnLatCc3mBXNL0QmWVQKAWK2C7XDfepgL0p/9+8oSx4bmRAFHFqptl1A/C0U5O3dxGwKfmKluW161OVGcA== - dependencies: - ansicolors "^0.3.2" - bn.js "^5.2.0" - debug "^4.3.3" - -"@metaplex-foundation/mpl-core@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-core/-/mpl-core-1.1.1.tgz#f3a61cc647b2cdf461e0403350a7136b90d9d51a" - integrity sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA== - dependencies: - "@msgpack/msgpack" "^3.0.0-beta2" - -"@metaplex-foundation/mpl-token-metadata@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-3.3.0.tgz#a6134bf807d23413cfce2db583bad4ca3539f4fb" - integrity sha512-t5vO8Wr3ZZZPGrVrGNcosX5FMkwQSgBiVMQMRNDG2De7voYFJmIibD5jdG05EoQ4Y5kZVEiwhYaO+wJB3aO5AA== - dependencies: - "@metaplex-foundation/mpl-toolbox" "^0.9.4" - -"@metaplex-foundation/mpl-toolbox@^0.9.4": - version "0.9.4" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/mpl-toolbox/-/mpl-toolbox-0.9.4.tgz#2211b2f726b1e5745c03908d26fd8ee580838b6f" - integrity sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ== - -"@metaplex-foundation/rustbin@^0.3.0", "@metaplex-foundation/rustbin@^0.3.1": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/rustbin/-/rustbin-0.3.5.tgz#56d028afd96c2b56ad3bbea22ff454adde900e8c" - integrity sha512-m0wkRBEQB/8krwMwKBvFugufZtYwMXiGHud2cTDAv+aGXK4M90y0Hx67/wpu+AqqoQfdV8VM9YezUOHKD+Z5kA== - dependencies: - debug "^4.3.3" - semver "^7.3.7" - text-table "^0.2.0" - toml "^3.0.0" - -"@metaplex-foundation/solita@^0.12.2": - version "0.12.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/solita/-/solita-0.12.2.tgz#13ef213ac183c986f6d01c5d981c44e59a900834" - integrity sha512-oczMfE43NNHWweSqhXPTkQBUbap/aAiwjDQw8zLKNnd/J8sXr/0+rKcN5yJIEgcHeKRkp90eTqkmt2WepQc8yw== - dependencies: - "@metaplex-foundation/beet" "^0.4.0" - "@metaplex-foundation/beet-solana" "^0.3.0" - "@metaplex-foundation/rustbin" "^0.3.0" - "@solana/web3.js" "^1.36.0" - camelcase "^6.2.1" - debug "^4.3.3" - js-sha256 "^0.9.0" - prettier "^2.5.1" - snake-case "^3.0.4" - spok "^1.4.3" - -"@metaplex-foundation/umi-bundle-defaults@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-bundle-defaults/-/umi-bundle-defaults-0.9.2.tgz#f8e296b1a0ecb3a6511dbaca4131bc9263071cfc" - integrity sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw== - dependencies: - "@metaplex-foundation/umi-downloader-http" "^0.9.2" - "@metaplex-foundation/umi-eddsa-web3js" "^0.9.2" - "@metaplex-foundation/umi-http-fetch" "^0.9.2" - "@metaplex-foundation/umi-program-repository" "^0.9.2" - "@metaplex-foundation/umi-rpc-chunk-get-accounts" "^0.9.2" - "@metaplex-foundation/umi-rpc-web3js" "^0.9.2" - "@metaplex-foundation/umi-serializer-data-view" "^0.9.2" - "@metaplex-foundation/umi-transaction-factory-web3js" "^0.9.2" - -"@metaplex-foundation/umi-downloader-http@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-downloader-http/-/umi-downloader-http-0.9.2.tgz#df84b11df9141854ca1cf7c6c8374658e67de767" - integrity sha512-tzPT9hBwenzTzAQg07rmsrqZfgguAXELbcJrsYMoASp5VqWFXYIP00g94KET6XLjWUXH4P1J2zoa6hGennPXHA== - -"@metaplex-foundation/umi-eddsa-web3js@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-eddsa-web3js/-/umi-eddsa-web3js-0.9.2.tgz#92225595137c5585dae63b148786ab77fcb6d625" - integrity sha512-hhPCxXbYIp4BC4z9gK78sXpWLkNSrfv4ndhF5ruAkdIp7GcRVYKj0QnOUO6lGYGiIkNlw20yoTwOe1CT//OfTQ== - dependencies: - "@metaplex-foundation/umi-web3js-adapters" "^0.9.2" - "@noble/curves" "^1.0.0" - -"@metaplex-foundation/umi-http-fetch@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-http-fetch/-/umi-http-fetch-0.9.2.tgz#e233ec34b789ed5257168b97d72fc9b039155046" - integrity sha512-YCZuBu24T9ZzEDe4+w12LEZm/fO9pkyViZufGgASC5NX93814Lvf6Ssjn/hZzjfA7CvZbvLFbmujc6CV3Q/m9Q== - dependencies: - node-fetch "^2.6.7" - -"@metaplex-foundation/umi-options@^0.8.9": - version "0.8.9" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-options/-/umi-options-0.8.9.tgz#9c9e269d9eee7d055ad6831dcb30a30127dcb0c5" - integrity sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A== - -"@metaplex-foundation/umi-program-repository@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-program-repository/-/umi-program-repository-0.9.2.tgz#53fce2bf506bb97fdb6a53e2118f8d1dd28fd0b5" - integrity sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA== - -"@metaplex-foundation/umi-public-keys@^0.8.9": - version "0.8.9" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-public-keys/-/umi-public-keys-0.8.9.tgz#ca7a927c924ed8e28d0f8bb3dc0f2adc1f9011ec" - integrity sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q== - dependencies: - "@metaplex-foundation/umi-serializers-encodings" "^0.8.9" - -"@metaplex-foundation/umi-rpc-chunk-get-accounts@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-rpc-chunk-get-accounts/-/umi-rpc-chunk-get-accounts-0.9.2.tgz#f93bd43d4c65cdfdb0a68145a837fb6b13e0e832" - integrity sha512-YRwVf6xH0jPBAUgMhEPi+UbjioAeqTXmjsN2TnmQCPAmHbrHrMRj0rlWYwFLWAgkmoxazYrXP9lqOFRrfOGAEA== - -"@metaplex-foundation/umi-rpc-web3js@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-rpc-web3js/-/umi-rpc-web3js-0.9.2.tgz#b00a4cc1a9bd5d930164d1ba43f816107655c0d9" - integrity sha512-MqcsBz8B4wGl6jxsf2Jo/rAEpYReU9VCSR15QSjhvADHMmdFxCIZCCAgE+gDE2Vuanfl437VhOcP3g5Uw8C16Q== - dependencies: - "@metaplex-foundation/umi-web3js-adapters" "^0.9.2" - -"@metaplex-foundation/umi-serializer-data-view@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializer-data-view/-/umi-serializer-data-view-0.9.2.tgz#a05d88e7120b839e3acba35f7b4e12fe8be2becc" - integrity sha512-5vGptadJxUxvUcyrwFZxXlEc6Q7AYySBesizCtrBFUY8w8PnF2vzmS45CP1MLySEATNH6T9mD4Rs0tLb87iQyA== - -"@metaplex-foundation/umi-serializers-core@^0.8.9": - version "0.8.9" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-core/-/umi-serializers-core-0.8.9.tgz#cd5ae763a59e54dd01f1284f4a6bf4e78e4aab9c" - integrity sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w== - -"@metaplex-foundation/umi-serializers-encodings@^0.8.9": - version "0.8.9" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-encodings/-/umi-serializers-encodings-0.8.9.tgz#0f02605ee3e6fbeac1abc4fb267a7cc96ecb4410" - integrity sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q== - dependencies: - "@metaplex-foundation/umi-serializers-core" "^0.8.9" - -"@metaplex-foundation/umi-serializers-numbers@^0.8.9": - version "0.8.9" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers-numbers/-/umi-serializers-numbers-0.8.9.tgz#28c10367f6aebac0276ec1bce81d0d8db54b05de" - integrity sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg== - dependencies: - "@metaplex-foundation/umi-serializers-core" "^0.8.9" - -"@metaplex-foundation/umi-serializers@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-serializers/-/umi-serializers-0.9.0.tgz#af6d03a3bf821bf73b7b3450bb8df0407f2f69d6" - integrity sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg== - dependencies: - "@metaplex-foundation/umi-options" "^0.8.9" - "@metaplex-foundation/umi-public-keys" "^0.8.9" - "@metaplex-foundation/umi-serializers-core" "^0.8.9" - "@metaplex-foundation/umi-serializers-encodings" "^0.8.9" - "@metaplex-foundation/umi-serializers-numbers" "^0.8.9" - -"@metaplex-foundation/umi-transaction-factory-web3js@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-transaction-factory-web3js/-/umi-transaction-factory-web3js-0.9.2.tgz#294c3ca996897bb95b993b808fb9252bd085db15" - integrity sha512-fR1Kf21uylMFd1Smkltmj4jTNxhqSWf416owsJ+T+cvJi2VCOcOwq/3UFzOrpz78fA0RhsajKYKj0HYsRnQI1g== - dependencies: - "@metaplex-foundation/umi-web3js-adapters" "^0.9.2" - -"@metaplex-foundation/umi-web3js-adapters@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi-web3js-adapters/-/umi-web3js-adapters-0.9.2.tgz#1e0ebb4e3c31e8bead27892b20204292ad6955c5" - integrity sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA== - dependencies: - buffer "^6.0.3" - -"@metaplex-foundation/umi@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/umi/-/umi-0.9.2.tgz#6460bff91d2ac7745842eda1ee6a28fba4d2ffb2" - integrity sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw== - dependencies: - "@metaplex-foundation/umi-options" "^0.8.9" - "@metaplex-foundation/umi-public-keys" "^0.8.9" - "@metaplex-foundation/umi-serializers" "^0.9.0" - -"@msgpack/msgpack@^3.0.0-beta2": - version "3.0.0-beta2" - resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-3.0.0-beta2.tgz#5bccee30f84df220b33905e3d8249ba96deca0b7" - integrity sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw== - -"@noble/curves@^1.0.0", "@noble/curves@^1.4.0", "@noble/curves@^1.4.2": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.7.0.tgz#0512360622439256df892f21d25b388f52505e45" - integrity sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw== - dependencies: - "@noble/hashes" "1.6.0" - -"@noble/hashes@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.5.0.tgz#abadc5ca20332db2b1b2aa3e496e9af1213570b0" - integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA== - -"@noble/hashes@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.0.tgz#d4bfb516ad6e7b5111c216a5cc7075f4cf19e6c5" - integrity sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ== - -"@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.1.tgz#df6e5943edcea504bac61395926d6fd67869a0d5" - integrity sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@onsol/tldparser@^0.6.7": - version "0.6.7" - resolved "https://registry.yarnpkg.com/@onsol/tldparser/-/tldparser-0.6.7.tgz#f949865b4d6d46e4c8cc22816c4cfab8a8270163" - integrity sha512-QwkRDLyC514pxeplCCXZ2kTiRcJSeUrpp+9o2XqLbePy/qzZGGG8I0UbXUKuWVD/bUL1zAm21+D+Eu30OKwcQg== - dependencies: - "@ethersproject/sha2" "^5.7.0" - "@metaplex-foundation/beet-solana" "^0.4.0" - -"@opentelemetry/api@^1.4.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" - integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== - -"@orca-so/common-sdk@0.6.4": - version "0.6.4" - resolved "https://registry.yarnpkg.com/@orca-so/common-sdk/-/common-sdk-0.6.4.tgz#d6bcbc94ecb837fe16f2eb25a6531db9fdea1e99" - integrity sha512-iOiC6exTA9t2CEOaUPoWlNP3soN/1yZFjoz1mSf7NvOqo/PJZeIdWpB7BRXwU0mGGatjxU4SFgMGQ8NrSx+ONw== - dependencies: - tiny-invariant "^1.3.1" - -"@orca-so/whirlpools-sdk@^0.13.12": - version "0.13.12" - resolved "https://registry.yarnpkg.com/@orca-so/whirlpools-sdk/-/whirlpools-sdk-0.13.12.tgz#08e4059aee037c19b1a346ebe29267159dc5b0d6" - integrity sha512-+LOqGTe0DYUsYwemltOU4WQIviqoICQlIcAmmEX/WnBh6wntpcLDcXkPV6dBHW7NA2/J8WEVAZ50biLJb4subg== - dependencies: - tiny-invariant "^1.3.1" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== - -"@pythnetwork/price-service-client@^1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@pythnetwork/price-service-client/-/price-service-client-1.9.0.tgz#1503d67b1a7c14386d30bb420502df4857027e76" - integrity sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg== - dependencies: - "@pythnetwork/price-service-sdk" "*" - "@types/ws" "^8.5.3" - axios "^1.5.1" - axios-retry "^3.8.0" - isomorphic-ws "^4.0.1" - ts-log "^2.2.4" - ws "^8.6.0" - -"@pythnetwork/price-service-sdk@*": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@pythnetwork/price-service-sdk/-/price-service-sdk-1.8.0.tgz#f5f01f654963eb9a0cf12127b4f1a89b60ef008a" - integrity sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA== - dependencies: - bn.js "^5.2.1" - -"@raydium-io/raydium-sdk-v2@0.1.95-alpha": - version "0.1.95-alpha" - resolved "https://registry.yarnpkg.com/@raydium-io/raydium-sdk-v2/-/raydium-sdk-v2-0.1.95-alpha.tgz#75fe4386f534b2b0d9fb12b8efa08377ee4c8dbf" - integrity sha512-+u7yxo/R1JDysTCzOuAlh90ioBe2DlM2Hbcz/tFsxP/YzmnYQzShvNjcmc0361a4zJhmlrEJfpFXW0J3kkX5vA== - dependencies: - "@solana/buffer-layout" "^4.0.1" - "@solana/spl-token" "^0.4.8" - "@solana/web3.js" "^1.95.3" - axios "^1.1.3" - big.js "^6.2.1" - bn.js "^5.2.1" - dayjs "^1.11.5" - decimal.js-light "^2.5.1" - jsonfile "^6.1.0" - lodash "^4.17.21" - toformat "^2.0.0" - tsconfig-paths "^4.2.0" - -"@scure/base@^1.1.6": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.1.tgz#dd0b2a533063ca612c17aa9ad26424a2ff5aa865" - integrity sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ== - -"@shikijs/core@1.24.4": - version "1.24.4" - resolved "https://registry.yarnpkg.com/@shikijs/core/-/core-1.24.4.tgz#de1c454a4e2dbcfaee2dde51d3fac6041e6171f7" - integrity sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q== - dependencies: - "@shikijs/engine-javascript" "1.24.4" - "@shikijs/engine-oniguruma" "1.24.4" - "@shikijs/types" "1.24.4" - "@shikijs/vscode-textmate" "^9.3.1" - "@types/hast" "^3.0.4" - hast-util-to-html "^9.0.4" - -"@shikijs/engine-javascript@1.24.4": - version "1.24.4" - resolved "https://registry.yarnpkg.com/@shikijs/engine-javascript/-/engine-javascript-1.24.4.tgz#8fd1bf1bcb37d14f19412bb0791d1566d6c762c8" - integrity sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA== - dependencies: - "@shikijs/types" "1.24.4" - "@shikijs/vscode-textmate" "^9.3.1" - oniguruma-to-es "0.8.1" - -"@shikijs/engine-oniguruma@1.24.4": - version "1.24.4" - resolved "https://registry.yarnpkg.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.4.tgz#6adc430ddf247eeed155d8a41883e36160f302cf" - integrity sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw== - dependencies: - "@shikijs/types" "1.24.4" - "@shikijs/vscode-textmate" "^9.3.1" - -"@shikijs/types@1.24.4": - version "1.24.4" - resolved "https://registry.yarnpkg.com/@shikijs/types/-/types-1.24.4.tgz#06ec8975732b68508f8423b01a5649eef8d9cea3" - integrity sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA== - dependencies: - "@shikijs/vscode-textmate" "^9.3.1" - "@types/hast" "^3.0.4" - -"@shikijs/vscode-textmate@^9.3.1": - version "9.3.1" - resolved "https://registry.yarnpkg.com/@shikijs/vscode-textmate/-/vscode-textmate-9.3.1.tgz#afda31f8f42cab70a26f3603f52eae3f1c35d2f7" - integrity sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g== - -"@solana/buffer-layout-utils@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" - integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/web3.js" "^1.32.0" - bigint-buffer "^1.1.5" - bignumber.js "^9.0.1" - -"@solana/buffer-layout@^4.0.0", "@solana/buffer-layout@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" - integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== - dependencies: - buffer "~6.0.3" - -"@solana/codecs-core@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-preview.2.tgz#689784d032fbc1fedbde40bb25d76cdcecf6553b" - integrity sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg== - dependencies: - "@solana/errors" "2.0.0-preview.2" - -"@solana/codecs-core@2.0.0-preview.4": - version "2.0.0-preview.4" - resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-preview.4.tgz#770826105f2f884110a21662573e7a2014654324" - integrity sha512-A0VVuDDA5kNKZUinOqHxJQK32aKTucaVbvn31YenGzHX1gPqq+SOnFwgaEY6pq4XEopSmaK16w938ZQS8IvCnw== - dependencies: - "@solana/errors" "2.0.0-preview.4" - -"@solana/codecs-core@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-rc.1.tgz#1a2d76b9c7b9e7b7aeb3bd78be81c2ba21e3ce22" - integrity sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ== - dependencies: - "@solana/errors" "2.0.0-rc.1" - -"@solana/codecs-data-structures@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.2.tgz#e82cb1b6d154fa636cd5c8953ff3f32959cc0370" - integrity sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - "@solana/errors" "2.0.0-preview.2" - -"@solana/codecs-data-structures@2.0.0-preview.4": - version "2.0.0-preview.4" - resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.4.tgz#f8a2470982a9792334737ea64000ccbdff287247" - integrity sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA== - dependencies: - "@solana/codecs-core" "2.0.0-preview.4" - "@solana/codecs-numbers" "2.0.0-preview.4" - "@solana/errors" "2.0.0-preview.4" - -"@solana/codecs-data-structures@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-rc.1.tgz#d47b2363d99fb3d643f5677c97d64a812982b888" - integrity sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog== - dependencies: - "@solana/codecs-core" "2.0.0-rc.1" - "@solana/codecs-numbers" "2.0.0-rc.1" - "@solana/errors" "2.0.0-rc.1" - -"@solana/codecs-numbers@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.2.tgz#56995c27396cd8ee3bae8bd055363891b630bbd0" - integrity sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/errors" "2.0.0-preview.2" - -"@solana/codecs-numbers@2.0.0-preview.4": - version "2.0.0-preview.4" - resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.4.tgz#6a53b456bb7866f252d8c032c81a92651e150f66" - integrity sha512-Q061rLtMadsO7uxpguT+Z7G4UHnjQ6moVIxAQxR58nLxDPCC7MB1Pk106/Z7NDhDLHTcd18uO6DZ7ajHZEn2XQ== - dependencies: - "@solana/codecs-core" "2.0.0-preview.4" - "@solana/errors" "2.0.0-preview.4" - -"@solana/codecs-numbers@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-rc.1.tgz#f34978ddf7ea4016af3aaed5f7577c1d9869a614" - integrity sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ== - dependencies: - "@solana/codecs-core" "2.0.0-rc.1" - "@solana/errors" "2.0.0-rc.1" - -"@solana/codecs-strings@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.2.tgz#8bd01a4e48614d5289d72d743c3e81305d445c46" - integrity sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - "@solana/errors" "2.0.0-preview.2" - -"@solana/codecs-strings@2.0.0-preview.4": - version "2.0.0-preview.4" - resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.4.tgz#4d06bb722a55a5d04598d362021bfab4bd446760" - integrity sha512-YDbsQePRWm+xnrfS64losSGRg8Wb76cjK1K6qfR8LPmdwIC3787x9uW5/E4icl/k+9nwgbIRXZ65lpF+ucZUnw== - dependencies: - "@solana/codecs-core" "2.0.0-preview.4" - "@solana/codecs-numbers" "2.0.0-preview.4" - "@solana/errors" "2.0.0-preview.4" - -"@solana/codecs-strings@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-rc.1.tgz#e1d9167075b8c5b0b60849f8add69c0f24307018" - integrity sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g== - dependencies: - "@solana/codecs-core" "2.0.0-rc.1" - "@solana/codecs-numbers" "2.0.0-rc.1" - "@solana/errors" "2.0.0-rc.1" - -"@solana/codecs@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-preview.2.tgz#d6615fec98f423166fb89409f9a4ad5b74c10935" - integrity sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-data-structures" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - "@solana/codecs-strings" "2.0.0-preview.2" - "@solana/options" "2.0.0-preview.2" - -"@solana/codecs@2.0.0-preview.4": - version "2.0.0-preview.4" - resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-preview.4.tgz#a1923cc78a6f64ebe656c7ec6335eb6b70405b22" - integrity sha512-gLMupqI4i+G4uPi2SGF/Tc1aXcviZF2ybC81x7Q/fARamNSgNOCUUoSCg9nWu1Gid6+UhA7LH80sWI8XjKaRog== - dependencies: - "@solana/codecs-core" "2.0.0-preview.4" - "@solana/codecs-data-structures" "2.0.0-preview.4" - "@solana/codecs-numbers" "2.0.0-preview.4" - "@solana/codecs-strings" "2.0.0-preview.4" - "@solana/options" "2.0.0-preview.4" - -"@solana/codecs@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-rc.1.tgz#146dc5db58bd3c28e04b4c805e6096c2d2a0a875" - integrity sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ== - dependencies: - "@solana/codecs-core" "2.0.0-rc.1" - "@solana/codecs-data-structures" "2.0.0-rc.1" - "@solana/codecs-numbers" "2.0.0-rc.1" - "@solana/codecs-strings" "2.0.0-rc.1" - "@solana/options" "2.0.0-rc.1" - -"@solana/errors@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.2.tgz#e0ea8b008c5c02528d5855bc1903e5e9bbec322e" - integrity sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA== - dependencies: - chalk "^5.3.0" - commander "^12.0.0" - -"@solana/errors@2.0.0-preview.4": - version "2.0.0-preview.4" - resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.4.tgz#056ba76b6dd900dafa70117311bec3aef0f5250b" - integrity sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA== - dependencies: - chalk "^5.3.0" - commander "^12.1.0" - -"@solana/errors@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-rc.1.tgz#3882120886eab98a37a595b85f81558861b29d62" - integrity sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ== - dependencies: - chalk "^5.3.0" - commander "^12.1.0" - -"@solana/options@2.0.0-preview.2": - version "2.0.0-preview.2" - resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-preview.2.tgz#13ff008bf43a5056ef9a091dc7bb3f39321e867e" - integrity sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w== - dependencies: - "@solana/codecs-core" "2.0.0-preview.2" - "@solana/codecs-numbers" "2.0.0-preview.2" - -"@solana/options@2.0.0-preview.4": - version "2.0.0-preview.4" - resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-preview.4.tgz#212d35d1da87c7efb13de4d3569ad9eb070f013d" - integrity sha512-tv2O/Frxql/wSe3jbzi5nVicIWIus/BftH+5ZR+r9r3FO0/htEllZS5Q9XdbmSboHu+St87584JXeDx3xm4jaA== - dependencies: - "@solana/codecs-core" "2.0.0-preview.4" - "@solana/codecs-data-structures" "2.0.0-preview.4" - "@solana/codecs-numbers" "2.0.0-preview.4" - "@solana/codecs-strings" "2.0.0-preview.4" - "@solana/errors" "2.0.0-preview.4" - -"@solana/options@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-rc.1.tgz#06924ba316dc85791fc46726a51403144a85fc4d" - integrity sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA== - dependencies: - "@solana/codecs-core" "2.0.0-rc.1" - "@solana/codecs-data-structures" "2.0.0-rc.1" - "@solana/codecs-numbers" "2.0.0-rc.1" - "@solana/codecs-strings" "2.0.0-rc.1" - "@solana/errors" "2.0.0-rc.1" - -"@solana/spl-token-group@^0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.4.tgz#4f45d9526c96a33b9a1929a264d0aa21c7e38a2d" - integrity sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw== - dependencies: - "@solana/codecs" "2.0.0-preview.2" - "@solana/spl-type-length-value" "0.1.0" - -"@solana/spl-token-group@^0.0.5": - version "0.0.5" - resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.5.tgz#f955dcca782031c85e862b2b46878d1bb02db6c2" - integrity sha512-CLJnWEcdoUBpQJfx9WEbX3h6nTdNiUzswfFdkABUik7HVwSNA98u5AYvBVK2H93d9PGMOHAak2lHW9xr+zAJGQ== - dependencies: - "@solana/codecs" "2.0.0-preview.4" - "@solana/spl-type-length-value" "0.1.0" - -"@solana/spl-token-group@^0.0.7": - version "0.0.7" - resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.7.tgz#83c00f0cd0bda33115468cd28b89d94f8ec1fee4" - integrity sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug== - dependencies: - "@solana/codecs" "2.0.0-rc.1" - -"@solana/spl-token-metadata@^0.1.2", "@solana/spl-token-metadata@^0.1.3", "@solana/spl-token-metadata@^0.1.4", "@solana/spl-token-metadata@^0.1.6": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@solana/spl-token-metadata/-/spl-token-metadata-0.1.6.tgz#d240947aed6e7318d637238022a7b0981b32ae80" - integrity sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA== - dependencies: - "@solana/codecs" "2.0.0-rc.1" - -"@solana/spl-token@0.4.6": - version "0.4.6" - resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.6.tgz#eb44e5080ea7b6fc976abcb39457223211bd9076" - integrity sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/buffer-layout-utils" "^0.2.0" - "@solana/spl-token-group" "^0.0.4" - "@solana/spl-token-metadata" "^0.1.4" - buffer "^6.0.3" - -"@solana/spl-token@0.4.8": - version "0.4.8" - resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.8.tgz#a84e4131af957fa9fbd2727e5fc45dfbf9083586" - integrity sha512-RO0JD9vPRi4LsAbMUdNbDJ5/cv2z11MGhtAvFeRzT4+hAGE/FUzRi0tkkWtuCfSIU3twC6CtmAihRp/+XXjWsA== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/buffer-layout-utils" "^0.2.0" - "@solana/spl-token-group" "^0.0.5" - "@solana/spl-token-metadata" "^0.1.3" - buffer "^6.0.3" - -"@solana/spl-token@^0.3.10": - version "0.3.11" - resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.11.tgz#cdc10f9472b29b39c8983c92592cadd06627fb9a" - integrity sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/buffer-layout-utils" "^0.2.0" - "@solana/spl-token-metadata" "^0.1.2" - buffer "^6.0.3" - -"@solana/spl-token@^0.4.8", "@solana/spl-token@^0.4.9": - version "0.4.9" - resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.9.tgz#24d032d2935f237925c3b058ba6bb1e1ece5428c" - integrity sha512-g3wbj4F4gq82YQlwqhPB0gHFXfgsC6UmyGMxtSLf/BozT/oKd59465DbnlUK8L8EcimKMavxsVAMoLcEdeCicg== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/buffer-layout-utils" "^0.2.0" - "@solana/spl-token-group" "^0.0.7" - "@solana/spl-token-metadata" "^0.1.6" - buffer "^6.0.3" - -"@solana/spl-type-length-value@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz#b5930cf6c6d8f50c7ff2a70463728a4637a2f26b" - integrity sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA== - dependencies: - buffer "^6.0.3" - -"@solana/web3.js@1.95.3": - version "1.95.3" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.3.tgz#70b5f4d76823f56b5af6403da51125fffeb65ff3" - integrity sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og== - dependencies: - "@babel/runtime" "^7.25.0" - "@noble/curves" "^1.4.2" - "@noble/hashes" "^1.4.0" - "@solana/buffer-layout" "^4.0.1" - agentkeepalive "^4.5.0" - bigint-buffer "^1.1.5" - bn.js "^5.2.1" - borsh "^0.7.0" - bs58 "^4.0.1" - buffer "6.0.3" - fast-stable-stringify "^1.0.0" - jayson "^4.1.1" - node-fetch "^2.7.0" - rpc-websockets "^9.0.2" - superstruct "^2.0.2" - -"@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.48.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.95.1", "@solana/web3.js@^1.95.3", "@solana/web3.js@^1.95.4": - version "1.98.0" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.0.tgz#21ecfe8198c10831df6f0cfde7f68370d0405917" - integrity sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA== - dependencies: - "@babel/runtime" "^7.25.0" - "@noble/curves" "^1.4.2" - "@noble/hashes" "^1.4.0" - "@solana/buffer-layout" "^4.0.1" - agentkeepalive "^4.5.0" - bigint-buffer "^1.1.5" - bn.js "^5.2.1" - borsh "^0.7.0" - bs58 "^4.0.1" - buffer "6.0.3" - fast-stable-stringify "^1.0.0" - jayson "^4.1.1" - node-fetch "^2.7.0" - rpc-websockets "^9.0.2" - superstruct "^2.0.2" - -"@swc/helpers@^0.5.11": - version "0.5.15" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7" - integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g== - dependencies: - tslib "^2.8.0" - -"@tiplink/api@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@tiplink/api/-/api-0.3.1.tgz#c10c4c8f51bb2c4ecc0215b8b9f3704a866fb7f4" - integrity sha512-HjnXethjKOHTYT0IP1BewlMS7wZJ+hsoDgRa6jA1cNvxvwQjE1WHOyvOUPpAi+DJDw4P4/omFtyHr7dwLfnB/g== - dependencies: - "@coral-xyz/anchor" "^0.29.0" - "@solana/spl-token" "^0.3.10" - "@solana/web3.js" "^1.48.0" - bs58 "^5.0.0" - libsodium "^0.7.11" - libsodium-wrappers-sumo "^0.7.11" - nanoid "^3.3.6" - sodium-plus "^0.9.0" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - typescript "^4.7.4" - -"@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - -"@types/bn.js@^5.1.5": - version "5.1.6" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.6.tgz#9ba818eec0c85e4d3c679518428afdf611d03203" - integrity sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w== - dependencies: - "@types/node" "*" - -"@types/chai@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.0.1.tgz#2c3705555cf11f5f59c836a84c44afcfe4e5689d" - integrity sha512-5T8ajsg3M/FOncpLYW7sdOcD6yf4+722sze/tc4KQV0P8Z2rAr3SAuHCIkYmYpt8VbcQlnz8SxlOlPQYefe4cA== - dependencies: - "@types/deep-eql" "*" - -"@types/connect@^3.4.33": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - dependencies: - "@types/node" "*" - -"@types/deep-eql@*": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/deep-eql/-/deep-eql-4.0.2.tgz#334311971d3a07121e7eb91b684a605e7eea9cbd" - integrity sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== - -"@types/estree@^1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== - -"@types/hast@^3.0.0", "@types/hast@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" - integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== - dependencies: - "@types/unist" "*" - -"@types/json-schema@^7.0.15": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/mdast@^4.0.0": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" - integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== - dependencies: - "@types/unist" "*" - -"@types/node-fetch@^2.6.4": - version "2.6.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.12.tgz#8ab5c3ef8330f13100a7479e2cd56d3386830a03" - integrity sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA== - dependencies: - "@types/node" "*" - form-data "^4.0.0" - -"@types/node@*", "@types/node@^22.9.0": - version "22.10.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.2.tgz#a485426e6d1fdafc7b0d4c7b24e2c78182ddabb9" - integrity sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ== - dependencies: - undici-types "~6.20.0" - -"@types/node@^12.12.54": - version "12.20.55" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" - integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== - -"@types/node@^18.11.18": - version "18.19.68" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.68.tgz#f4f10d9927a7eaf3568c46a6d739cc0967ccb701" - integrity sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw== - dependencies: - undici-types "~5.26.4" - -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - -"@types/unist@*", "@types/unist@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" - integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== - -"@types/uuid@^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-10.0.0.tgz#e9c07fe50da0f53dc24970cca94d619ff03f6f6d" - integrity sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ== - -"@types/uuid@^8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== - -"@types/ws@^7.4.4": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== - dependencies: - "@types/node" "*" - -"@types/ws@^8.2.2", "@types/ws@^8.5.3": - version "8.5.13" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.13.tgz#6414c280875e2691d0d1e080b05addbf5cb91e20" - integrity sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA== - dependencies: - "@types/node" "*" - -"@typescript-eslint/eslint-plugin@^7.0.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#b16d3cf3ee76bf572fdf511e79c248bdec619ea3" - integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw== - dependencies: - "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "7.18.0" - "@typescript-eslint/type-utils" "7.18.0" - "@typescript-eslint/utils" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" - graphemer "^1.4.0" - ignore "^5.3.1" - natural-compare "^1.4.0" - ts-api-utils "^1.3.0" - -"@typescript-eslint/parser@^7.0.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.18.0.tgz#83928d0f1b7f4afa974098c64b5ce6f9051f96a0" - integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg== - dependencies: - "@typescript-eslint/scope-manager" "7.18.0" - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/typescript-estree" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" - integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA== - dependencies: - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" - -"@typescript-eslint/type-utils@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b" - integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA== - dependencies: - "@typescript-eslint/typescript-estree" "7.18.0" - "@typescript-eslint/utils" "7.18.0" - debug "^4.3.4" - ts-api-utils "^1.3.0" - -"@typescript-eslint/types@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" - integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== - -"@typescript-eslint/typescript-estree@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931" - integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== - dependencies: - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^1.3.0" - -"@typescript-eslint/utils@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" - integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "7.18.0" - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/typescript-estree" "7.18.0" - -"@typescript-eslint/visitor-keys@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7" - integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== - dependencies: - "@typescript-eslint/types" "7.18.0" - eslint-visitor-keys "^3.4.3" - -"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.1.tgz#28fa185f67daaf7b7a1a8c1d445132c5d979f8bd" - integrity sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA== - -JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.1.1: - version "8.3.4" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.0" - -acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1, acorn@^8.9.0: - version "8.14.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" - integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== - -agentkeepalive@^4.2.1, agentkeepalive@^4.5.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" - integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== - dependencies: - humanize-ms "^1.2.1" - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" - integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -ansicolors@^0.3.2, ansicolors@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" - integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -assert@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" - integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== - dependencies: - call-bind "^1.0.2" - is-nan "^1.3.2" - object-is "^1.1.5" - object.assign "^4.1.4" - util "^0.12.5" - -assertion-error@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" - integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -available-typed-arrays@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" - integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== - dependencies: - possible-typed-array-names "^1.0.0" - -axios-retry@^3.8.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-3.9.1.tgz#c8924a8781c8e0a2c5244abf773deb7566b3830d" - integrity sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w== - dependencies: - "@babel/runtime" "^7.15.4" - is-retry-allowed "^2.2.0" - -axios@^1.1.3, axios@^1.5.1: - version "1.7.9" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a" - integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base-x@^3.0.2: - version "3.0.10" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75" - integrity sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ== - dependencies: - safe-buffer "^5.0.1" - -base-x@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" - integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== - -base-x@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-5.0.0.tgz#6d835ceae379130e1a4cb846a70ac4746f28ea9b" - integrity sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ== - -base64-js@^1.3.1, base64-js@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -big-integer@^1.6.51: - version "1.6.52" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" - integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== - -big.js@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.2.tgz#be3bb9ac834558b53b099deef2a1d06ac6368e1a" - integrity sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ== - -bigint-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" - integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== - dependencies: - bindings "^1.3.0" - -bignumber.js@^9.0.1: - version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== - -bindings@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bintrees@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" - integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== - -bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -borsh@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-1.0.0.tgz#b564c8cc8f7a91e3772b9aef9e07f62b84213c1f" - integrity sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ== - -borsh@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-2.0.0.tgz#042a9f109565caac3c6a21297cd8c0ae8db3149d" - integrity sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg== - -borsh@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" - integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== - dependencies: - bn.js "^5.2.0" - bs58 "^4.0.0" - text-encoding-utf-8 "^1.0.2" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -bs58@5.0.0, bs58@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" - integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== - dependencies: - base-x "^4.0.0" - -bs58@^4.0.0, bs58@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== - dependencies: - base-x "^3.0.2" - -bs58@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-6.0.0.tgz#a2cda0130558535dd281a2f8697df79caaf425d8" - integrity sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw== - dependencies: - base-x "^5.0.0" - -buffer-layout@^1.2.0, buffer-layout@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.2.tgz#b9814e7c7235783085f9ca4966a0cfff112259d5" - integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA== - -buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -buffer@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -bufferutil@^4.0.1: - version "4.0.9" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.9.tgz#6e81739ad48a95cad45a279588e13e95e24a800a" - integrity sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw== - dependencies: - node-gyp-build "^4.3.0" - -call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840" - integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.7, call-bind@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" - integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== - dependencies: - call-bind-apply-helpers "^1.0.0" - es-define-property "^1.0.0" - get-intrinsic "^1.2.4" - set-function-length "^1.2.2" - -call-bound@^1.0.2, call-bound@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.3.tgz#41cfd032b593e39176a71533ab4f384aa04fd681" - integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA== - dependencies: - call-bind-apply-helpers "^1.0.1" - get-intrinsic "^1.2.6" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@6, camelcase@^6.2.1, camelcase@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -ccount@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" - integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== - -chai@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.2.tgz#3afbc340b994ae3610ca519a6c70ace77ad4378d" - integrity sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw== - dependencies: - assertion-error "^2.0.1" - check-error "^2.1.1" - deep-eql "^5.0.1" - loupe "^3.1.0" - pathval "^2.0.0" - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.3.0, chalk@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" - integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== - -character-entities-html4@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" - integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== - -character-entities-legacy@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" - integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== - -check-error@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" - integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -comma-separated-tokens@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" - integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== - -commander@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - -commander@^12.0.0, commander@^12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== - -commander@^2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-fetch@^3.1.5: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.2.0.tgz#34e9192f53bc757d6614304d9e5e6fb4edb782e3" - integrity sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q== - dependencies: - node-fetch "^2.7.0" - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.6: - version "7.0.6" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-hash@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" - integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== - -dayjs@^1.11.5: - version "1.11.13" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" - integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== - -debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== - dependencies: - ms "^2.1.3" - -decamelize@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decimal.js-light@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" - integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== - -decimal.js@^10.4.3: - version "10.4.3" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" - integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== - -deep-eql@^5.0.1: - version "5.0.2" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" - integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -define-data-property@^1.0.1, define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -define-properties@^1.1.3, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -delay@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" - integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -dequal@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -devlop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" - integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== - dependencies: - dequal "^2.0.0" - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dotenv@^16.4.5: - version "16.4.7" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" - integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== - -dunder-proto@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -emoji-regex-xs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz#e8af22e5d9dbd7f7f22d280af3d19d2aab5b0724" - integrity sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -es-define-property@^1.0.0, es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-object-atoms@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" - integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== - dependencies: - es-errors "^1.3.0" - -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== - dependencies: - es6-promise "^4.0.3" - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-plugin-prettier@^5.1.3: - version "5.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz#d1c8f972d8f60e414c25465c163d16f209411f95" - integrity sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.9.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-scope@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" - integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint-visitor-keys@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" - integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== - -eslint@^8.56.0: - version "8.57.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" - integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.1" - "@humanwhocodes/config-array" "^0.13.0" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -eslint@^9.17.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.17.0.tgz#faa1facb5dd042172fdc520106984b5c2421bb0c" - integrity sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.19.0" - "@eslint/core" "^0.9.0" - "@eslint/eslintrc" "^3.2.0" - "@eslint/js" "9.17.0" - "@eslint/plugin-kit" "^0.2.3" - "@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.4" - chalk "^4.0.0" - cross-spawn "^7.0.6" - debug "^4.3.2" - escape-string-regexp "^4.0.0" - eslint-scope "^8.2.0" - eslint-visitor-keys "^4.2.0" - espree "^10.3.0" - esquery "^1.5.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^8.0.0" - find-up "^5.0.0" - glob-parent "^6.0.2" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - 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.3" - -espree@^10.0.1, espree@^10.3.0: - version "10.3.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" - integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== - dependencies: - acorn "^8.14.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esquery@^1.4.2, esquery@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" - integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -eventemitter3@^4.0.4, eventemitter3@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -eventemitter3@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" - integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== - -eyes@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" - integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-stable-stringify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" - integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== - -fastq@^1.6.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.18.0.tgz#d631d7e25faffea81887fe5ea8c9010e1b36fee0" - integrity sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw== - dependencies: - reusify "^1.0.4" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-entry-cache@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" - integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== - dependencies: - flat-cache "^4.0.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -find-process@^1.4.7: - version "1.4.8" - resolved "https://registry.yarnpkg.com/find-process/-/find-process-1.4.8.tgz#46a83cbf4e4fbac364cbab650bf8dd61224d4c05" - integrity sha512-W2PIdgXfhYeIlTzGiDyGJhjslZcwQCRcSw6plgyLu3CFk1PhQrKkTbQ5jkJ2NhOabMwETTrhl7c+xBcQ7B2jRg== - dependencies: - 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" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flat-cache@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" - integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.4" - -flatted@^3.2.9: - version "3.3.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27" - integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA== - -follow-redirects@^1.15.6: - version "1.15.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" - integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -foreground-child@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" - integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -form-data-encoder@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.2.tgz#1f1ae3dccf58ed4690b86d87e4f57c654fbab040" - integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A== - -form-data@^4.0.0, form-data@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" - integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -formdata-node@^4.3.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-4.4.1.tgz#23f6a5cb9cb55315912cbec4ff7b0f59bbd191e2" - integrity sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ== - dependencies: - node-domexception "1.0.0" - web-streams-polyfill "4.0.0-beta.3" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -get-intrinsic@^1.2.4, get-intrinsic@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.6.tgz#43dd3dd0e7b49b82b2dfcad10dc824bf7fc265d5" - integrity sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA== - dependencies: - call-bind-apply-helpers "^1.0.1" - dunder-proto "^1.0.0" - es-define-property "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - function-bind "^1.1.2" - gopd "^1.2.0" - has-symbols "^1.1.0" - hasown "^2.0.2" - math-intrinsics "^1.0.0" - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^10.3.7: - version "10.4.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" - integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -glob@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.0.tgz#6031df0d7b65eaa1ccb9b29b5ced16cea658e77e" - integrity sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^4.0.1" - minimatch "^10.0.0" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^2.0.0" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globals@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" - integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -gopd@^1.0.1, gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - -graceful-fs@^4.1.6: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -graphemesplit@^2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/graphemesplit/-/graphemesplit-2.4.4.tgz#6d325c61e928efdaec2189f54a9b87babf89b75a" - integrity sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w== - dependencies: - js-base64 "^3.6.0" - unicode-trie "^2.0.0" - -groq-sdk@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/groq-sdk/-/groq-sdk-0.5.0.tgz#8eefea81c3709e815c96dffa941200e85a50cf19" - integrity sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw== - dependencies: - "@types/node" "^18.11.18" - "@types/node-fetch" "^2.6.4" - abort-controller "^3.0.0" - agentkeepalive "^4.2.1" - form-data-encoder "1.7.2" - formdata-node "^4.3.2" - node-fetch "^2.6.7" - web-streams-polyfill "^3.2.1" - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-symbols@^1.0.3, has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - -has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -hash.js@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -hast-util-to-html@^9.0.4: - version "9.0.4" - resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz#d689c118c875aab1def692c58603e34335a0f5c5" - integrity sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA== - dependencies: - "@types/hast" "^3.0.0" - "@types/unist" "^3.0.0" - ccount "^2.0.0" - comma-separated-tokens "^2.0.0" - hast-util-whitespace "^3.0.0" - html-void-elements "^3.0.0" - mdast-util-to-hast "^13.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - stringify-entities "^4.0.0" - zwitch "^2.0.4" - -hast-util-whitespace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" - integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== - dependencies: - "@types/hast" "^3.0.0" - -html-void-elements@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" - integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.2.0, ignore@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" - integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ipaddr.js@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" - integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== - -is-arguments@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.2.0.tgz#ad58c6aecf563b78ef2bf04df540da8f5d7d8e1b" - integrity sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA== - dependencies: - call-bound "^1.0.2" - has-tostringtag "^1.0.2" - -is-callable@^1.1.3: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-nan@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" - integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-retry-allowed@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d" - integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg== - -is-typed-array@^1.1.3: - version "1.1.15" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" - integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== - dependencies: - which-typed-array "^1.1.16" - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isomorphic-ws@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" - integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jackspeak@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.0.2.tgz#11f9468a3730c6ff6f56823a820d7e3be9bef015" - integrity sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw== - dependencies: - "@isaacs/cliui" "^8.0.2" - -jayson@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.3.tgz#db9be2e4287d9fef4fc05b5fe367abe792c2eee8" - integrity sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ== - dependencies: - "@types/connect" "^3.4.33" - "@types/node" "^12.12.54" - "@types/ws" "^7.4.4" - JSONStream "^1.3.5" - commander "^2.20.3" - delay "^5.0.0" - es6-promisify "^5.0.0" - eyes "^0.1.8" - isomorphic-ws "^4.0.1" - json-stringify-safe "^5.0.1" - uuid "^8.3.2" - ws "^7.5.10" - -js-base64@^3.6.0: - version "3.7.7" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.7.tgz#e51b84bf78fbf5702b9541e2cb7bfcb893b43e79" - integrity sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw== - -js-sha256@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.0.tgz#256a921d9292f7fe98905face82e367abaca9576" - integrity sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q== - -js-sha256@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" - integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== - -js-tiktoken@^1.0.12: - version "1.0.16" - resolved "https://registry.yarnpkg.com/js-tiktoken/-/js-tiktoken-1.0.16.tgz#b56800a2dbf21f717123ec49f339fde8544af36e" - integrity sha512-nUVdO5k/M9llWpiaZlBBDdtmr6qWXwSD6fgaDu2zM8UP+OXxx9V37lFkI6w0/1IuaDx7WffZ37oYd9KvcWKElg== - dependencies: - base64-js "^1.5.1" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json5@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonfile@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== - -jsonpointer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" - integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== - -keccak256@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/keccak256/-/keccak256-1.0.6.tgz#dd32fb771558fed51ce4e45a035ae7515573da58" - integrity sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw== - dependencies: - bn.js "^5.2.0" - buffer "^6.0.3" - keccak "^3.0.2" - -keccak@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" - integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - readable-stream "^3.6.0" - -keyv@^4.5.3, keyv@^4.5.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -langchain@^0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/langchain/-/langchain-0.3.8.tgz#285bb291a686daf063717c12e06fda76335b9270" - integrity sha512-EiAHFgBdThuXFmIx9j81wjdPItpRsw0Ck4r5dyhB74gyhehRGna/UK2CTqeKVnIUM/f4g4JbxUgAU4voXljDMw== - dependencies: - "@langchain/openai" ">=0.1.0 <0.4.0" - "@langchain/textsplitters" ">=0.0.0 <0.2.0" - js-tiktoken "^1.0.12" - js-yaml "^4.1.0" - jsonpointer "^5.0.1" - langsmith "^0.2.8" - openapi-types "^12.1.3" - p-retry "4" - uuid "^10.0.0" - yaml "^2.2.1" - zod "^3.22.4" - zod-to-json-schema "^3.22.3" - -langsmith@^0.2.8: - version "0.2.14" - resolved "https://registry.yarnpkg.com/langsmith/-/langsmith-0.2.14.tgz#9a186af45730b1e14bd448ac34a7928b633ea6ae" - integrity sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig== - dependencies: - "@types/uuid" "^10.0.0" - commander "^10.0.1" - p-queue "^6.6.2" - p-retry "4" - semver "^7.6.3" - uuid "^10.0.0" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -libsodium-sumo@^0.7.15: - version "0.7.15" - resolved "https://registry.yarnpkg.com/libsodium-sumo/-/libsodium-sumo-0.7.15.tgz#91c1d863fe3fbce6d6b9db1aadaa622733a1d007" - integrity sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw== - -libsodium-wrappers-sumo@^0.7.11: - version "0.7.15" - resolved "https://registry.yarnpkg.com/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.15.tgz#0ef2a99b4b17e8385aa7e6850593660dbaf5fb40" - integrity sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA== - dependencies: - libsodium-sumo "^0.7.15" - -libsodium-wrappers@^0.7.6: - version "0.7.15" - resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.15.tgz#53f13e483820272a3d55b23be2e34402ac988055" - integrity sha512-E4anqJQwcfiC6+Yrl01C1m8p99wEhLmJSs0VQqST66SbQXXBoaJY0pF4BNjRYa/sOQAxx6lXAaAFIlx+15tXJQ== - dependencies: - libsodium "^0.7.15" - -libsodium@^0.7.11, libsodium@^0.7.15: - version "0.7.15" - resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.15.tgz#ac284e3dcb1c29ae9526c5581cdada6a072f6d20" - integrity sha512-sZwRknt/tUpE2AwzHq3jEyUU5uvIZHtSssktXq7owd++3CSgn8RGrv6UZJJBpP7+iBghBqe7Z06/2M31rI2NKw== - -linkify-it@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" - integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== - dependencies: - uc.micro "^2.0.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loglevel@^1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.2.tgz#c2e028d6c757720107df4e64508530db6621ba08" - integrity sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg== - -loupe@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.2.tgz#c86e0696804a02218f2206124c45d8b15291a240" - integrity sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg== - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - -lru-cache@^11.0.0: - version "11.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.0.2.tgz#fbd8e7cf8211f5e7e5d91905c415a3f55755ca39" - integrity sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA== - -lunr@^2.3.9: - version "2.3.9" - resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" - integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -markdown-it@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45" - integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== - dependencies: - argparse "^2.0.1" - entities "^4.4.0" - linkify-it "^5.0.0" - mdurl "^2.0.0" - punycode.js "^2.3.1" - uc.micro "^2.1.0" - -math-intrinsics@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - -mdast-util-to-hast@^13.0.0: - version "13.2.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz#5ca58e5b921cc0a3ded1bc02eed79a4fe4fe41f4" - integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA== - dependencies: - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - "@ungap/structured-clone" "^1.0.0" - devlop "^1.0.0" - micromark-util-sanitize-uri "^2.0.0" - trim-lines "^3.0.0" - unist-util-position "^5.0.0" - unist-util-visit "^5.0.0" - vfile "^6.0.0" - -mdurl@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" - integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromark-util-character@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" - integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== - dependencies: - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-encode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" - integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== - -micromark-util-sanitize-uri@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" - integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-encode "^2.0.0" - micromark-util-symbol "^2.0.0" - -micromark-util-symbol@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" - integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== - -micromark-util-types@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.1.tgz#a3edfda3022c6c6b55bfb049ef5b75d70af50709" - integrity sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ== - -micromatch@^4.0.4: - version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimatch@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b" - integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^9.0.4, minimatch@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -ms@^2.0.0, ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -mustache@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" - integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== - -nanoid@^3.3.6: - version "3.3.8" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" - integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-domexception@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" - integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== - -node-fetch@^2.6.7, node-fetch@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: - version "4.8.4" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" - integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== - -object-is@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" - integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.4: - version "4.1.7" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" - integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.3" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - has-symbols "^1.1.0" - object-keys "^1.1.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -oniguruma-to-es@0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/oniguruma-to-es/-/oniguruma-to-es-0.8.1.tgz#a18767531ce562c0bfafa357a8cca0003c05323c" - integrity sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw== - dependencies: - emoji-regex-xs "^1.0.0" - regex "^5.0.2" - regex-recursion "^5.0.0" - -openai@^4.75.0, openai@^4.77.0: - version "4.77.0" - resolved "https://registry.yarnpkg.com/openai/-/openai-4.77.0.tgz#228f2d43ffa79ae9d8b5d4155e965da82e5ac330" - integrity sha512-WWacavtns/7pCUkOWvQIjyOfcdr9X+9n9Vvb0zFeKVDAqwCMDHB+iSr24SVaBAhplvSG6JrRXFpcNM9gWhOGIw== - dependencies: - "@types/node" "^18.11.18" - "@types/node-fetch" "^2.6.4" - abort-controller "^3.0.0" - agentkeepalive "^4.2.1" - form-data-encoder "1.7.2" - formdata-node "^4.3.2" - node-fetch "^2.6.7" - -openapi-types@^12.1.3: - version "12.1.3" - resolved "https://registry.yarnpkg.com/openapi-types/-/openapi-types-12.1.3.tgz#471995eb26c4b97b7bd356aacf7b91b73e777dd3" - integrity sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw== - -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.5" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-queue@^6.6.2: - version "6.6.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" - integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" - -p-retry@4: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" - -p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - -pako@^0.2.5: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== - -pako@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" - integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-scurry@^1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-scurry@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" - integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg== - dependencies: - lru-cache "^11.0.0" - minipass "^7.1.2" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pathval@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" - integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== - -percentile@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/percentile/-/percentile-1.6.0.tgz#c847b35a4d0a4e52235e16742aa3f317ce957293" - integrity sha512-8vSyjdzwxGDHHwH+cSGch3A9Uj2On3UpgOWxWXMKwUvoAbnujx6DaqmV1duWXNiH/oEWpyVd6nSQccix6DM3Ng== - -picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -poly1305-js@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/poly1305-js/-/poly1305-js-0.4.4.tgz#081923c9eab70cbc51453b48b2aad85816b15855" - integrity sha512-5B6/S+vg5AOr66wJDkh5LOpU/F3EKANDy4VXKsNZLXea1uCy6CiOWOZ3VhcC0nYdhE7vJUMcLxqcVlrv2g/+Rg== - dependencies: - big-integer "^1.6.51" - -possible-typed-array-names@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" - integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.5.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -prettier@^3.2.5: - version "3.4.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" - integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== - -prom-client@^15.1.3: - version "15.1.3" - resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-15.1.3.tgz#69fa8de93a88bc9783173db5f758dc1c69fa8fc2" - integrity sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g== - dependencies: - "@opentelemetry/api" "^1.4.0" - tdigest "^0.1.1" - -property-information@^6.0.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec" - integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -punycode.js@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" - integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== - -punycode@^2.1.0, punycode@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -readable-stream@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -regex-recursion@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/regex-recursion/-/regex-recursion-5.1.1.tgz#5a73772d18adbf00f57ad097bf54171b39d78f8b" - integrity sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w== - dependencies: - regex "^5.1.1" - regex-utilities "^2.3.0" - -regex-utilities@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/regex-utilities/-/regex-utilities-2.3.0.tgz#87163512a15dce2908cf079c8960d5158ff43280" - integrity sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng== - -regex@^5.0.2, regex@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/regex/-/regex-5.1.1.tgz#cf798903f24d6fe6e531050a36686e082b29bd03" - integrity sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw== - dependencies: - regex-utilities "^2.3.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@^5.0.10: - version "5.0.10" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c" - integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== - dependencies: - glob "^10.3.7" - -rimraf@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-6.0.1.tgz#ffb8ad8844dd60332ab15f52bc104bc3ed71ea4e" - integrity sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A== - dependencies: - glob "^11.0.0" - package-json-from-dist "^1.0.0" - -rpc-websockets@^9.0.2: - version "9.0.4" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.4.tgz#9d8ee82533b5d1e13d9ded729e3e38d0d8fa083f" - integrity sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ== - dependencies: - "@swc/helpers" "^0.5.11" - "@types/uuid" "^8.3.4" - "@types/ws" "^8.2.2" - buffer "^6.0.3" - eventemitter3 "^5.0.1" - uuid "^8.3.2" - ws "^8.5.0" - optionalDependencies: - bufferutil "^4.0.1" - utf-8-validate "^5.0.2" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@^5.0.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -semver@^7.3.7, semver@^7.6.0, semver@^7.6.3: - version "7.6.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" - integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== - -set-function-length@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shiki@^1.16.2: - version "1.24.4" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-1.24.4.tgz#fc468ded0cfd51d7d9fbcf7606467a4dc020307c" - integrity sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw== - dependencies: - "@shikijs/core" "1.24.4" - "@shikijs/engine-javascript" "1.24.4" - "@shikijs/engine-oniguruma" "1.24.4" - "@shikijs/types" "1.24.4" - "@shikijs/vscode-textmate" "^9.3.1" - "@types/hast" "^3.0.4" - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -snake-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" - integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -sodium-plus@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/sodium-plus/-/sodium-plus-0.9.0.tgz#39f341b21203d0c0044ea754b2b7efafa9d623f9" - integrity sha512-WWKxrd81qDL7C1A10yxNmZ135yovEZuIRnZ/BIf/FcajYBupbKbPdgzwlusPHLVxkMDDamcarq9PxxRBUSqpCw== - dependencies: - buffer "^5.6.0" - libsodium-wrappers "^0.7.6" - poly1305-js "^0.4.2" - typedarray-to-buffer "^3.1.5" - xsalsa20 "^1.1.0" - -space-separated-tokens@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" - integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== - -spok@^1.4.3: - version "1.5.5" - resolved "https://registry.yarnpkg.com/spok/-/spok-1.5.5.tgz#a51f7f290a53131d7b7a922dfedc461dda0aed72" - integrity sha512-IrJIXY54sCNFASyHPOY+jEirkiJ26JDqsGiI0Dvhwcnkl0PEWi1PSsrkYql0rzDw8LFVTcA7rdUCAJdE2HE+2Q== - dependencies: - ansicolors "~0.3.2" - find-process "^1.4.7" - -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -stringify-entities@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3" - integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== - dependencies: - character-entities-html4 "^2.0.0" - character-entities-legacy "^3.0.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -superstruct@2.0.2, superstruct@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" - integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== - -superstruct@^0.15.4: - version "0.15.5" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" - integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -synckit@^0.9.1: - version "0.9.2" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.2.tgz#a3a935eca7922d48b9e7d6c61822ee6c3ae4ec62" - integrity sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw== - dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" - -tdigest@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" - integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA== - dependencies: - bintrees "1.0.2" - -text-encoding-utf-8@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" - integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -"through@>=2.2.7 <3": - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -tiny-inflate@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" - integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== - -tiny-invariant@^1.3.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" - integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toformat@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/toformat/-/toformat-2.0.0.tgz#7a043fd2dfbe9021a4e36e508835ba32056739d8" - integrity sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ== - -toml@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" - integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -trim-lines@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" - integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== - -ts-api-utils@^1.3.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" - integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== - -ts-log@^2.2.4: - version "2.2.7" - resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.7.tgz#4f4512144898b77c9984e91587076fcb8518688e" - integrity sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg== - -ts-node@^10.9.2: - version "10.9.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tsconfig-paths@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" - integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== - dependencies: - json5 "^2.2.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^2.0.3, tslib@^2.6.2, tslib@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -tweetnacl-util@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" - integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== - -tweetnacl@1.0.3, tweetnacl@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedoc@^0.26.11, typedoc@^0.26.3: - version "0.26.11" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.26.11.tgz#124b43a5637b7f3237b8c721691b44738c5c9dc9" - integrity sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw== - dependencies: - lunr "^2.3.9" - markdown-it "^14.1.0" - minimatch "^9.0.5" - shiki "^1.16.2" - yaml "^2.5.1" - -typescript@^4.7.4: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - -typescript@^5.7.2: - version "5.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" - integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== - -uc.micro@^2.0.0, uc.micro@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" - integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -undici-types@~6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" - integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== - -unicode-trie@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-2.0.0.tgz#8fd8845696e2e14a8b67d78fa9e0dd2cad62fec8" - integrity sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ== - dependencies: - pako "^0.2.5" - tiny-inflate "^1.0.0" - -unist-util-is@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" - integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-position@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" - integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-stringify-position@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" - integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-visit-parents@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" - integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - -unist-util-visit@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" - integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - unist-util-visit-parents "^6.0.0" - -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -utf-8-validate@^5.0.2: - version "5.0.10" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" - integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== - dependencies: - node-gyp-build "^4.3.0" - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -util@^0.12.5: - version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - which-typed-array "^1.1.2" - -uuid@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" - integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -uuid@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -vfile-message@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" - integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-stringify-position "^4.0.0" - -vfile@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.3.tgz#3652ab1c496531852bf55a6bac57af981ebc38ab" - integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q== - dependencies: - "@types/unist" "^3.0.0" - vfile-message "^4.0.0" - -web-streams-polyfill@4.0.0-beta.3: - version "4.0.0-beta.3" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz#2898486b74f5156095e473efe989dcf185047a38" - integrity sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug== - -web-streams-polyfill@^3.2.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" - integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-typed-array@^1.1.16, which-typed-array@^1.1.2: - version "1.1.18" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.18.tgz#df2389ebf3fbb246a71390e90730a9edb6ce17ad" - integrity sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.8" - call-bound "^1.0.3" - for-each "^0.3.3" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -ws@^7.5.10: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== - -ws@^8.18.0, ws@^8.5.0, ws@^8.6.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" - integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== - -xsalsa20@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/xsalsa20/-/xsalsa20-1.2.0.tgz#e5a05cb26f8cef723f94a559102ed50c1b44c25c" - integrity sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w== - -yaml@^2.2.1, yaml@^2.5.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.1.tgz#42f2b1ba89203f374609572d5349fb8686500773" - integrity sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg== - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zod-to-json-schema@^3.22.3, zod-to-json-schema@^3.22.5: - version "3.24.1" - resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz#f08c6725091aadabffa820ba8d50c7ab527f227a" - integrity sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w== - -zod@^3.22.4, zod@^3.23.8: - version "3.24.1" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.1.tgz#27445c912738c8ad1e9de1bea0359fa44d9d35ee" - integrity sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A== - -zstddec@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/zstddec/-/zstddec-0.0.2.tgz#57e2f28dd1ff56b750e07d158a43f0611ad9eeb4" - integrity sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA== - -zwitch@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" - integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== From 3153fd3c882738f967c6ba27ae3db9a1e9d15666 Mon Sep 17 00:00:00 2001 From: DonDuala Date: Mon, 30 Dec 2024 12:51:32 -0400 Subject: [PATCH 34/94] remove whirlpool solana kit --- src/langchain/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 929d88d..15f6ed4 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1700,7 +1700,6 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaOpenbookCreateMarket(solanaKit), new SolanaManifestCreateMarket(solanaKit), new SolanaLimitOrderTool(solanaKit), - new SolanaCreateSingleSidedWhirlpoolTool(solanaKit), new SolanaClosePostition(solanaKit), new SolanaOrcaCreateCLMM(solanaKit), new SolanaOrcaCreateSingleSideLiquidityPool(solanaKit), From 9fba6484b54df53160d008ccb609f3332e104836 Mon Sep 17 00:00:00 2001 From: Lautaro Date: Mon, 30 Dec 2024 14:00:55 -0300 Subject: [PATCH 35/94] Fix: remove buyNFT not working with sdk --- src/agent/index.ts | 5 ----- src/langchain/index.ts | 38 -------------------------------------- src/tools/tensor_trade.ts | 38 -------------------------------------- 3 files changed, 81 deletions(-) diff --git a/src/agent/index.ts b/src/agent/index.ts index 9fe2c17..c4a32db 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -38,7 +38,6 @@ import { rock_paper_scissor, create_TipLink, listNFTForSale, - buyNFT, cancelListing, } from "../tools"; import { @@ -360,10 +359,6 @@ export class SolanaAgentKit { return listNFTForSale(this, nftMint, price); } - async tensorBuyNFT(nftMint: PublicKey, maxPrice: number): Promise { - return buyNFT(this, nftMint, maxPrice); - } - async tensorCancelListing(nftMint: PublicKey): Promise { return cancelListing(this, nftMint); } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 27e5cc1..2feab35 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1380,43 +1380,6 @@ export class SolanaListNFTForSaleTool extends Tool { } } -export class SolanaBuyNFTTool extends Tool { - name = "solana_buy_nft"; - description = `Buy an NFT listed on Tensor Trade. - - Inputs (input is a JSON string): - nftMint: string, the mint address of the NFT (required) - maxPrice: number, maximum price willing to pay in SOL (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const tx = await this.solanaKit.tensorBuyNFT( - new PublicKey(parsedInput.nftMint), - parsedInput.maxPrice, - ); - - return JSON.stringify({ - status: "success", - message: "NFT purchased successfully", - transaction: tx, - maxPrice: parsedInput.maxPrice, - nftMint: parsedInput.nftMint, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} export class SolanaCancelNFTListingTool extends Tool { name = "solana_cancel_nft_listing"; @@ -1490,7 +1453,6 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaRockPaperScissorsTool(solanaKit), new SolanaTipLinkTool(solanaKit), new SolanaListNFTForSaleTool(solanaKit), - new SolanaBuyNFTTool(solanaKit), new SolanaCancelNFTListingTool(solanaKit), ]; } diff --git a/src/tools/tensor_trade.ts b/src/tools/tensor_trade.ts index 030536f..9be8a97 100644 --- a/src/tools/tensor_trade.ts +++ b/src/tools/tensor_trade.ts @@ -72,44 +72,6 @@ export async function listNFTForSale( } } -export async function buyNFT( - agent: SolanaAgentKit, - nftMint: PublicKey, - maxPrice: number, -): Promise { - const provider = new AnchorProvider( - agent.connection, - new Wallet(agent.wallet), - AnchorProvider.defaultOptions(), - ); - - const tensorSwapSdk = new TensorSwapSDK({ provider }); - const maxPriceInLamports = new BN(maxPrice * 1e9); - const nftBuyerAcc = await getAssociatedTokenAddress( - nftMint, - agent.wallet_address, - ); - - const { tx } = await tensorSwapSdk.buySingleListingT22({ - nftMint, - nftBuyerAcc, - owner: agent.wallet_address, - buyer: agent.wallet_address, - maxPrice: maxPriceInLamports, - takerBroker: null, - compute: null, - priorityMicroLamports: null, - transferHook: null, - }); - - const transaction = new Transaction(); - transaction.add(...tx.ixs); - return await agent.connection.sendTransaction(transaction, [ - agent.wallet, - ...tx.extraSigners, - ]); -} - export async function cancelListing( agent: SolanaAgentKit, nftMint: PublicKey, From 2246367a86e192e6dbdbcb4087c6d0cb6d188f5d Mon Sep 17 00:00:00 2001 From: DonDuala Date: Mon, 30 Dec 2024 16:06:34 -0400 Subject: [PATCH 36/94] Fix limit orders --- src/langchain/index.ts | 2 +- src/tools/limit_order.ts | 24 +----------------------- 2 files changed, 2 insertions(+), 24 deletions(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 15f6ed4..0160105 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -325,7 +325,7 @@ export class SolanaLimitOrderTool extends Tool { const parsedInput = JSON.parse(input); const tx = await this.solanaKit.limitOrder( - parsedInput.marketId, + new PublicKey(parsedInput.marketId), parsedInput.quantity, parsedInput.side, parsedInput.price, diff --git a/src/tools/limit_order.ts b/src/tools/limit_order.ts index 5d8b4a6..ad05bf6 100644 --- a/src/tools/limit_order.ts +++ b/src/tools/limit_order.ts @@ -10,7 +10,6 @@ import { WrapperPlaceOrderParamsExternal, } from "@cks-systems/manifest-sdk"; import { OrderType } from "@cks-systems/manifest-sdk/client/ts/src/wrapper/types/OrderType"; -import { sleep } from "openai/core"; /** * Place limit orders using Manifest @@ -29,27 +28,6 @@ export async function limitOrder( price: number, ): Promise { try { - const { setupNeeded, instructions, wrapperKeypair } = - await ManifestClient.getSetupIxs( - agent.connection, - marketId, - agent.wallet.publicKey, - ); - - if (setupNeeded) { - const tx = new Transaction().add(...instructions); - const { blockhash } = await agent.connection.getLatestBlockhash(); - tx.recentBlockhash = blockhash; - tx.feePayer = agent.wallet.publicKey!; - if (wrapperKeypair) { - tx.sign(wrapperKeypair); - } - - await sendAndConfirmTransaction(agent.connection, tx, [agent.wallet]); - - await sleep(5_000); - } - const mfxClient = await ManifestClient.getClientForMarket( agent.connection, marketId, @@ -59,7 +37,7 @@ export async function limitOrder( const orderParams: WrapperPlaceOrderParamsExternal = { numBaseTokens: quantity, tokenPrice: price, - isBid: side === "buy", + isBid: side === "Buy", lastValidSlot: 0, orderType: OrderType.Limit, clientOrderId: Number(Math.random() * 1000), From 3b4fddd65a8a63cc22f6a6e055bbb82fa5f36084 Mon Sep 17 00:00:00 2001 From: Fahri Bilici <28020526+FahriBilici@users.noreply.github.com> Date: Mon, 30 Dec 2024 21:38:31 +0100 Subject: [PATCH 37/94] fixing tool calling bug --- src/langchain/index.ts | 31 ++++++++++++------------- test/index.ts | 52 ++---------------------------------------- 2 files changed, 16 insertions(+), 67 deletions(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 68cd157..4e64556 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -32,10 +32,10 @@ export class SolanaBalanceTool extends Tool { try { // Parse input as JSON if provided, otherwise use empty object const parsedInput = input ? JSON.parse(input) : {}; - + // Validate and execute using the action const result = await this.action.handler(this.solanaKit, parsedInput); - + return JSON.stringify(result); } catch (error: any) { return JSON.stringify({ @@ -60,10 +60,10 @@ export class SolanaTransferTool extends Tool { try { // Parse input as JSON const parsedInput = JSON.parse(input); - + // Validate and execute using the action const result = await this.action.handler(this.solanaKit, parsedInput); - + return JSON.stringify(result); } catch (error: any) { return JSON.stringify({ @@ -88,10 +88,10 @@ export class SolanaDeployTokenTool extends Tool { try { // Parse input as JSON const parsedInput = JSON.parse(input); - + // Validate and execute using the action const result = await this.action.handler(this.solanaKit, parsedInput); - + return JSON.stringify(result); } catch (error: any) { return JSON.stringify({ @@ -116,10 +116,10 @@ export class SolanaDeployCollectionTool extends Tool { try { // Parse input as JSON const parsedInput = JSON.parse(input); - + // Validate and execute using the action const result = await this.action.handler(this.solanaKit, parsedInput); - + return JSON.stringify(result); } catch (error: any) { return JSON.stringify({ @@ -144,10 +144,10 @@ export class SolanaMintNFTTool extends Tool { try { // Parse input as JSON const parsedInput = JSON.parse(input); - + // Validate and execute using the action const result = await this.action.handler(this.solanaKit, parsedInput); - + return JSON.stringify(result); } catch (error: any) { return JSON.stringify({ @@ -172,10 +172,10 @@ export class SolanaTradeTool extends Tool { try { // Parse input as JSON const parsedInput = JSON.parse(input); - + // Validate and execute using the action const result = await this.action.handler(this.solanaKit, parsedInput); - + return JSON.stringify(result); } catch (error: any) { return JSON.stringify({ @@ -200,7 +200,7 @@ export class SolanaRequestFundsTool extends Tool { try { // No input needed for this action const result = await this.action.handler(this.solanaKit, {}); - + return JSON.stringify(result); } catch (error: any) { return JSON.stringify({ @@ -1151,7 +1151,7 @@ export class SolanaCreateGibworkTask extends Tool { } export function createSolanaTools(solanaKit: SolanaAgentKit) { - const tools = [ + return [ new SolanaBalanceTool(solanaKit), new SolanaTransferTool(solanaKit), new SolanaDeployTokenTool(solanaKit), @@ -1185,7 +1185,4 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaResolveAllDomainsTool(solanaKit), new SolanaCreateGibworkTask(solanaKit), ]; - - // Convert LangChain tools to our Action interface - return tools.map(tool => wrapLangChainTool(tool, solanaKit)); } diff --git a/test/index.ts b/test/index.ts index 10a2003..5aae92e 100644 --- a/test/index.ts +++ b/test/index.ts @@ -35,52 +35,6 @@ validateEnvironment(); const WALLET_DATA_FILE = "wallet_data.txt"; -// Convert our Action interface to LangChain Tool -function convertActionToTool(action: Action, solanaAgent: SolanaAgentKit): Tool { - class ActionTool extends Tool { - name = action.name; - description = action.description; - - async _call(input: string): Promise { - try { - let parsedInput; - try { - // Try to parse as JSON first - parsedInput = input ? JSON.parse(input) : {}; - } catch { - // If JSON parsing fails, use the raw input string - parsedInput = { input }; - } - - // Validate input against schema if available - if (action.schema) { - try { - parsedInput = action.schema.parse(parsedInput); - } catch (validationError: any) { - return JSON.stringify({ - status: "error", - message: `Invalid input: ${validationError.message}`, - code: "VALIDATION_ERROR" - }); - } - } - - const result = await action.handler(solanaAgent, parsedInput); - return JSON.stringify(result); - } catch (error: any) { - console.error("Action execution error:", error); - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR" - }); - } - } - } - - return new ActionTool(); -} - async function initializeAgent() { try { const llm = new ChatOpenAI({ @@ -104,10 +58,8 @@ async function initializeAgent() { process.env.OPENAI_API_KEY!, ); - const actions = createSolanaTools(solanaAgent); - // Convert our Actions to LangChain Tools - const tools = actions.map(action => convertActionToTool(action, solanaAgent)); - + const tools = createSolanaTools(solanaAgent); + const memory = new MemorySaver(); const config = { configurable: { thread_id: "Solana Agent Kit!" } }; From 9b8bd14cf5aac7347e7c97167e618ba8f2379fc2 Mon Sep 17 00:00:00 2001 From: aryan Date: Tue, 31 Dec 2024 02:39:56 +0530 Subject: [PATCH 38/94] chore: deploy to vercel --- examples/tg-bot-starter/README.md | 4 +++- pnpm-lock.yaml | 15 +++++++++++---- src/agent/index.ts | 3 +-- src/tools/get_all_domains_tlds.ts | 5 ++--- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/examples/tg-bot-starter/README.md b/examples/tg-bot-starter/README.md index 67b4670..3d54e91 100644 --- a/examples/tg-bot-starter/README.md +++ b/examples/tg-bot-starter/README.md @@ -1,8 +1,10 @@ - # Telegram Bot Starter with Solana Agent Kit This example showcases how we can make a telegram bot with the Solana Agent Kit by Send AI. +## Quick Deploy +[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fsendaifun%2Fsolana-agent-kit%2Ftree%2Fmain%2Fexamples%2Ftg-bot-starter&env=OPENAI_API_KEY,RPC_URL,SOLANA_PRIVATE_KEY,TELEGRAM_BOT_TOKEN&project-name=solana-agent-kit&repository-name=sak-yourprojectname) + ## How to get the telegram bot token You can check [here](https://help.zoho.com/portal/en/kb/desk/support-channels/instant-messaging/telegram/articles/telegram-integration-with-zoho-desk#How_to_find_a_token_for_an_existing_Telegram_Bot) how you can obtain a bot token for your telegram bot. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7202c0f..e7e4508 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -442,6 +442,9 @@ packages: '@shikijs/engine-oniguruma@1.24.3': resolution: {integrity: sha512-iNnx950gs/5Nk+zrp1LuF+S+L7SKEhn8k9eXgFYPGhVshKppsYwRmW8tpmAMvILIMSDfrgqZ0w+3xWVQB//1Xw==} + '@shikijs/types@1.24.3': + resolution: {integrity: sha512-FPMrJ69MNxhRtldRk69CghvaGlbbN3pKRuvko0zvbfa2dXp4pAngByToqS5OY5jvN8D7LKR4RJE8UvzlCOuViw==} + '@shikijs/types@1.24.4': resolution: {integrity: sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==} @@ -2059,7 +2062,7 @@ snapshots: '@gerrit0/mini-shiki@1.24.4': dependencies: '@shikijs/engine-oniguruma': 1.24.3 - '@shikijs/types': 1.24.3 + '@shikijs/types': 1.24.4 '@shikijs/vscode-textmate': 9.3.1 '@humanwhocodes/config-array@0.13.0': @@ -2399,12 +2402,17 @@ snapshots: - utf-8-validate '@scure/base@1.2.1': {} - + '@shikijs/engine-oniguruma@1.24.3': dependencies: - '@shikijs/types': 1.24.4 + '@shikijs/types': 1.24.3 '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/types@1.24.3': + dependencies: + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + '@shikijs/types@1.24.4': dependencies: '@shikijs/vscode-textmate': 9.3.1 @@ -3755,7 +3763,6 @@ snapshots: dependencies: wrappy: 1.0.2 - openai@4.77.0(zod@3.24.1): dependencies: '@types/node': 18.19.68 diff --git a/src/agent/index.ts b/src/agent/index.ts index 461baf5..d2e10c0 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -295,8 +295,7 @@ export class SolanaAgentKit { return getOwnedDomainsForTLD(this, tld); } - // eslint-disable-next-line @typescript-eslint/ban-types - async getAllDomainsTLDs(): Promise { + async getAllDomainsTLDs(): Promise { return getAllDomainsTLDs(this); } diff --git a/src/tools/get_all_domains_tlds.ts b/src/tools/get_all_domains_tlds.ts index 12bd9f0..4d2fcbd 100644 --- a/src/tools/get_all_domains_tlds.ts +++ b/src/tools/get_all_domains_tlds.ts @@ -8,11 +8,10 @@ import { getAllTld } from "@onsol/tldparser"; */ export async function getAllDomainsTLDs( agent: SolanaAgentKit, - // eslint-disable-next-line @typescript-eslint/ban-types -): Promise { +): Promise { try { const tlds = await getAllTld(agent.connection); - return tlds.map((tld) => tld.tld); + return tlds.map((tld) => String(tld.tld)); } catch (error: any) { throw new Error(`Failed to fetch TLDs: ${error.message}`); } From b13985f31d8d56d8fbb6a645d217021f8373e23e Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Mon, 30 Dec 2024 22:19:38 +0100 Subject: [PATCH 39/94] fix: deploy to vercel readme button --- examples/agent-kit-nextjs-langchain/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/agent-kit-nextjs-langchain/README.md b/examples/agent-kit-nextjs-langchain/README.md index 35a905d..fafec02 100644 --- a/examples/agent-kit-nextjs-langchain/README.md +++ b/examples/agent-kit-nextjs-langchain/README.md @@ -1,7 +1,7 @@ # SolanaAgentKit 🦜️🔗 LangChain + Next.js Starter Template [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/michaelessiet/solana-agent-nextjs-starter-langchain) -[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fmichaelessiet%2Fsolana-agent-nextjs-starter-langchain) +[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fsendaifun%2Fsolana-agent-kit%2Ftree%2Fmain%2Fexamples%2Fagent-kit-nextjs-langchain&env=OPENAI_API_KEY,RPC_URL,SOLANA_PRIVATE_KEY&project-name=solana-agent-kit&repository-name=sak-yourprojectname) This template scaffolds a SolanaAgentKit + LangChain.js + Next.js starter app. From c00515f3d26bdf06578b15a336e463eb5a08ebaa Mon Sep 17 00:00:00 2001 From: Fahri Bilici <28020526+FahriBilici@users.noreply.github.com> Date: Mon, 30 Dec 2024 22:31:15 +0100 Subject: [PATCH 40/94] Fix formatting issues and removing unusued libaries --- src/actions/balance.ts | 31 +++--- src/actions/createGibworkTask.ts | 56 +++++------ src/actions/createImage.ts | 53 +++++----- src/actions/createOpenbookMarket.ts | 46 ++++----- src/actions/createOrcaSingleSidedWhirlpool.ts | 54 ++++++----- src/actions/deployCollection.ts | 31 +++--- src/actions/deployToken.ts | 38 ++++---- src/actions/fetchPrice.ts | 27 +++--- src/actions/getAllDomainsTLDs.ts | 24 ++--- src/actions/getAllRegisteredAllDomains.ts | 29 +++--- src/actions/getMainAllDomainsDomain.ts | 33 ++++--- src/actions/getOwnedAllDomains.ts | 28 +++--- src/actions/getOwnedDomainsForTLD.ts | 30 +++--- src/actions/getPrimaryDomain.ts | 34 +++---- src/actions/getTPS.ts | 21 ++-- src/actions/getTokenData.ts | 50 +++++----- src/actions/index.ts | 2 +- src/actions/launchPumpfunToken.ts | 73 +++++++------- src/actions/lendAsset.ts | 25 +++-- src/actions/mintNFT.ts | 38 ++++---- src/actions/pythFetchPrice.ts | 27 +++--- src/actions/raydiumCreateAmmV4.ts | 69 +++++++------ src/actions/raydiumCreateCpmm.ts | 64 +++++++------ src/actions/registerDomain.ts | 33 +++---- src/actions/requestFunds.ts | 16 ++-- src/actions/resolveDomain.ts | 23 +++-- src/actions/resolveSolDomain.ts | 31 +++--- src/actions/stakeWithJup.ts | 34 ++++--- src/actions/trade.ts | 39 ++++---- src/actions/transfer.ts | 32 ++++--- src/langchain/index.ts | 15 ++- src/types/action.ts | 7 +- src/utils/actionExecutor.ts | 25 ++--- src/utils/langchainWrapper.ts | 96 ------------------- test/index.ts | 2 - 35 files changed, 574 insertions(+), 662 deletions(-) delete mode 100644 src/utils/langchainWrapper.ts diff --git a/src/actions/balance.ts b/src/actions/balance.ts index 36d9304..107b709 100644 --- a/src/actions/balance.ts +++ b/src/actions/balance.ts @@ -11,7 +11,7 @@ const balanceAction: Action = { "get wallet balance", "view balance", "show balance", - "check token balance" + "check token balance", ], description: `Get the balance of a Solana wallet or token account. If you want to get the balance of your wallet, you don't need to provide the tokenAddress. @@ -23,37 +23,40 @@ const balanceAction: Action = { output: { status: "success", balance: "100", - token: "SOL" + token: "SOL", }, - explanation: "Get SOL balance of the wallet" - } + explanation: "Get SOL balance of the wallet", + }, ], [ { input: { - tokenAddress: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + tokenAddress: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", }, output: { status: "success", balance: "1000", - token: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + token: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", }, - explanation: "Get USDC token balance" - } - ] + explanation: "Get USDC token balance", + }, + ], ], schema: z.object({ - tokenAddress: z.string().optional() + tokenAddress: z.string().optional(), }), handler: async (agent: SolanaAgentKit, input: Record) => { - const balance = await get_balance(agent, input.tokenAddress && new PublicKey(input.tokenAddress)); + const balance = await get_balance( + agent, + input.tokenAddress && new PublicKey(input.tokenAddress), + ); return { status: "success", balance: balance, - token: input.tokenAddress || "SOL" + token: input.tokenAddress || "SOL", }; - } + }, }; -export default balanceAction; \ No newline at end of file +export default balanceAction; diff --git a/src/actions/createGibworkTask.ts b/src/actions/createGibworkTask.ts index 419b7b5..3ff8b12 100644 --- a/src/actions/createGibworkTask.ts +++ b/src/actions/createGibworkTask.ts @@ -1,7 +1,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import { PublicKey, VersionedTransaction } from "@solana/web3.js"; +import { PublicKey } from "@solana/web3.js"; import { create_gibwork_task } from "../tools"; const createGibworkTaskAction: Action = { @@ -12,9 +12,10 @@ const createGibworkTaskAction: Action = { "create gig", "post task", "create work", - "new task on gibwork" + "new task on gibwork", ], - description: "Create a new task on the Gibwork platform with payment in SPL tokens", + description: + "Create a new task on the Gibwork platform with payment in SPL tokens", examples: [ [ { @@ -24,45 +25,38 @@ const createGibworkTaskAction: Action = { requirements: "Experience with Rust and React", tags: ["solana", "rust", "react"], tokenMintAddress: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - tokenAmount: 100 + tokenAmount: 100, }, output: { status: "success", taskId: "task_123", signature: "3YKpM1...", - message: "Successfully created task: Build a Solana dApp" + message: "Successfully created task: Build a Solana dApp", }, - explanation: "Create a new task on Gibwork with 100 USDC payment" - } - ] + explanation: "Create a new task on Gibwork with 100 USDC payment", + }, + ], ], schema: z.object({ - title: z.string() - .min(1) - .describe("Title of the task"), - content: z.string() - .min(1) - .describe("Description of the task"), - requirements: z.string() + title: z.string().min(1).describe("Title of the task"), + content: z.string().min(1).describe("Description of the task"), + requirements: z + .string() .min(1) .describe("Requirements to complete the task"), - tags: z.array(z.string()) + tags: z + .array(z.string()) .min(1) .describe("List of tags associated with the task"), - tokenMintAddress: z.string() - .describe("Token mint address for payment"), - tokenAmount: z.number() - .positive() - .describe("Payment amount for the task"), - payer: z.string() + tokenMintAddress: z.string().describe("Token mint address for payment"), + tokenAmount: z.number().positive().describe("Payment amount for the task"), + payer: z + .string() .optional() - .describe("Optional payer address (defaults to wallet address)") + .describe("Optional payer address (defaults to wallet address)"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { - const tokenMintAddress = new PublicKey(input.tokenMintAddress); - const payer = input.payer ? new PublicKey(input.payer) : undefined; - const responseData = await create_gibwork_task( agent, input.title, @@ -71,22 +65,22 @@ const createGibworkTaskAction: Action = { input.tags, new PublicKey(input.tokenMintAddress), input.tokenAmount, - input.payer ? new PublicKey(input.payer) : undefined + input.payer ? new PublicKey(input.payer) : undefined, ); return { status: "success", taskId: responseData.taskId, signature: responseData.signature, - message: `Successfully created task: ${input.title}` + message: `Successfully created task: ${input.title}`, }; } catch (error: any) { return { status: "error", - message: `Failed to create task: ${error.message}` + message: `Failed to create task: ${error.message}`, }; } - } + }, }; -export default createGibworkTaskAction; \ No newline at end of file +export default createGibworkTaskAction; diff --git a/src/actions/createImage.ts b/src/actions/createImage.ts index 722a683..8906844 100644 --- a/src/actions/createImage.ts +++ b/src/actions/createImage.ts @@ -1,8 +1,6 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import OpenAI from "openai"; -import { create } from "domain"; import { create_image } from "../tools/create_image"; const createImageAction: Action = { @@ -13,9 +11,10 @@ const createImageAction: Action = { "make image", "generate artwork", "create picture", - "generate picture" + "generate picture", ], - description: "Create an AI-generated image based on a text prompt using OpenAI's DALL-E models", + description: + "Create an AI-generated image based on a text prompt using OpenAI's DALL-E models", examples: [ [ { @@ -24,56 +23,56 @@ const createImageAction: Action = { model: "dall-e-3", size: "1024x1024", quality: "standard", - style: "natural" + style: "natural", }, output: { status: "success", imageUrl: "https://example.com/image.png", - message: "Successfully generated image" + message: "Successfully generated image", }, - explanation: "Generate an image of a sunset landscape using DALL-E 3" - } - ] + explanation: "Generate an image of a sunset landscape using DALL-E 3", + }, + ], ], schema: z.object({ - prompt: z.string() + prompt: z + .string() .min(1) .max(1000) .describe("The text description of the image to generate"), - model: z.enum(["dall-e-3"]) + model: z + .enum(["dall-e-3"]) .default("dall-e-3") .describe("The AI model to use for generation"), - size: z.enum(["256x256", "512x512", "1024x1024", "1792x1024", "1024x1792"]) + size: z + .enum(["256x256", "512x512", "1024x1024", "1792x1024", "1024x1792"]) .default("1024x1024") .describe("The size of the generated image"), - quality: z.enum(["standard", "hd"]) + quality: z + .enum(["standard", "hd"]) .default("standard") .describe("The quality level of the generated image"), - style: z.enum(["natural", "vivid"]) + style: z + .enum(["natural", "vivid"]) .default("natural") - .describe("The style of the generated image") + .describe("The style of the generated image"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { if (!agent.openai_api_key) { return { status: "error", - message: "OpenAI API key not found in agent configuration" + message: "OpenAI API key not found in agent configuration", }; } const { prompt, model, size } = input; - - const openai = new OpenAI({ - apiKey: agent.openai_api_key - }); - const response = await create_image(agent, prompt, model, size); return { status: "success", imageUrl: response.images[0].url, - message: "Successfully generated image" + message: "Successfully generated image", }; } catch (error: any) { // Handle specific OpenAI error types @@ -82,21 +81,21 @@ const createImageAction: Action = { if (status === 429) { return { status: "error", - message: "Rate limit exceeded. Please try again later." + message: "Rate limit exceeded. Please try again later.", }; } return { status: "error", - message: `OpenAI API error: ${data.error?.message || error.message}` + message: `OpenAI API error: ${data.error?.message || error.message}`, }; } return { status: "error", - message: `Failed to generate image: ${error.message}` + message: `Failed to generate image: ${error.message}`, }; } - } + }, }; -export default createImageAction; \ No newline at end of file +export default createImageAction; diff --git a/src/actions/createOpenbookMarket.ts b/src/actions/createOpenbookMarket.ts index 0e923c0..dafb509 100644 --- a/src/actions/createOpenbookMarket.ts +++ b/src/actions/createOpenbookMarket.ts @@ -1,8 +1,6 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import { OPEN_BOOK_PROGRAM, Raydium, TxVersion } from "@raydium-io/raydium-sdk-v2"; -import { MintLayout, TOKEN_PROGRAM_ID } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; import { openbookCreateMarket } from "../tools"; @@ -14,42 +12,41 @@ const createOpenbookMarketAction: Action = { "new openbook market", "create trading pair", "setup dex market", - "new trading market" + "new trading market", ], description: "Create a new trading market on Openbook DEX", examples: [ [ { input: { - baseMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", // USDC - quoteMint: "So11111111111111111111111111111111111111112", // SOL + baseMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", // USDC + quoteMint: "So11111111111111111111111111111111111111112", // SOL lotSize: 1, - tickSize: 0.01 + tickSize: 0.01, }, output: { status: "success", signatures: ["2ZE7Rz...", "3YKpM1..."], - message: "Successfully created Openbook market" + message: "Successfully created Openbook market", }, - explanation: "Create a new USDC/SOL market on Openbook with default lot and tick sizes" - } - ] + explanation: + "Create a new USDC/SOL market on Openbook with default lot and tick sizes", + }, + ], ], schema: z.object({ - baseMint: z.string() - .min(1) - .describe("The base token's mint address"), - quoteMint: z.string() - .min(1) - .describe("The quote token's mint address"), - lotSize: z.number() + baseMint: z.string().min(1).describe("The base token's mint address"), + quoteMint: z.string().min(1).describe("The quote token's mint address"), + lotSize: z + .number() .positive() .default(1) .describe("The minimum order size (lot size)"), - tickSize: z.number() + tickSize: z + .number() .positive() .default(0.01) - .describe("The minimum price increment (tick size)") + .describe("The minimum price increment (tick size)"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { @@ -58,27 +55,26 @@ const createOpenbookMarketAction: Action = { const lotSize = input.lotSize || 1; const tickSize = input.tickSize || 0.01; - const signatures = await openbookCreateMarket( agent, baseMint, quoteMint, lotSize, - tickSize + tickSize, ); return { status: "success", signatures, - message: "Successfully created Openbook market" + message: "Successfully created Openbook market", }; } catch (error: any) { return { status: "error", - message: `Failed to create Openbook market: ${error.message}` + message: `Failed to create Openbook market: ${error.message}`, }; } - } + }, }; -export default createOpenbookMarketAction; \ No newline at end of file +export default createOpenbookMarketAction; diff --git a/src/actions/createOrcaSingleSidedWhirlpool.ts b/src/actions/createOrcaSingleSidedWhirlpool.ts index f23389d..dc82984 100644 --- a/src/actions/createOrcaSingleSidedWhirlpool.ts +++ b/src/actions/createOrcaSingleSidedWhirlpool.ts @@ -27,48 +27,58 @@ const createOrcaSingleSidedWhirlpoolAction: Action = { "initialize orca whirlpool", "create orca concentrated pool", "setup orca concentrated liquidity", - "create orca trading pair" + "create orca trading pair", ], - description: "Create a new single-sided whirlpool on Orca with concentrated liquidity", + description: + "Create a new single-sided whirlpool on Orca with concentrated liquidity", examples: [ [ { input: { depositTokenAmount: "1000000000000", // 1 million tokens with 6 decimals - depositTokenMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", // USDC - otherTokenMint: "So11111111111111111111111111111111111111112", // SOL + depositTokenMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", // USDC + otherTokenMint: "So11111111111111111111111111111111111111112", // SOL initialPrice: "0.001", maxPrice: "5.0", - feeTier: 0.3 + feeTier: 0.3, }, output: { status: "success", signature: "2ZE7Rz...", - message: "Successfully created Orca single-sided whirlpool" + message: "Successfully created Orca single-sided whirlpool", }, - explanation: "Create a USDC/SOL whirlpool with 1M USDC initial liquidity" - } - ] + explanation: + "Create a USDC/SOL whirlpool with 1M USDC initial liquidity", + }, + ], ], schema: z.object({ - depositTokenAmount: z.string() + depositTokenAmount: z + .string() .min(1) - .describe("The amount of deposit token to provide as liquidity (including decimals)"), - depositTokenMint: z.string() + .describe( + "The amount of deposit token to provide as liquidity (including decimals)", + ), + depositTokenMint: z + .string() .min(1) .describe("The mint address of the token being deposited"), - otherTokenMint: z.string() + otherTokenMint: z + .string() .min(1) .describe("The mint address of the other token in the pool"), - initialPrice: z.string() + initialPrice: z + .string() .min(1) .describe("Initial price of deposit token in terms of the other token"), - maxPrice: z.string() + maxPrice: z + .string() .min(1) .describe("Maximum price at which liquidity is added"), - feeTier: z.number() + feeTier: z + .number() .refine((val) => val in FEE_TIERS, "Invalid fee tier") - .describe("Fee tier percentage for the pool (e.g., 0.3 for 0.3%)") + .describe("Fee tier percentage for the pool (e.g., 0.3 for 0.3%)"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { @@ -87,21 +97,21 @@ const createOrcaSingleSidedWhirlpoolAction: Action = { otherTokenMint, initialPrice, maxPrice, - feeTier + feeTier, ); return { status: "success", signature, - message: "Successfully created Orca single-sided whirlpool" + message: "Successfully created Orca single-sided whirlpool", }; } catch (error: any) { return { status: "error", - message: `Failed to create whirlpool: ${error.message}` + message: `Failed to create whirlpool: ${error.message}`, }; } - } + }, }; -export default createOrcaSingleSidedWhirlpoolAction; \ No newline at end of file +export default createOrcaSingleSidedWhirlpoolAction; diff --git a/src/actions/deployCollection.ts b/src/actions/deployCollection.ts index 77efc10..0ac8e6c 100644 --- a/src/actions/deployCollection.ts +++ b/src/actions/deployCollection.ts @@ -1,4 +1,3 @@ -import { PublicKey } from "@solana/web3.js"; import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; @@ -17,7 +16,7 @@ const deployCollectionAction: Action = { "launch collection", "deploy nft collection", "create nft collection", - "mint collection" + "mint collection", ], description: `Deploy a new NFT collection on Solana blockchain.`, examples: [ @@ -26,43 +25,43 @@ const deployCollectionAction: Action = { input: { name: "My Collection", uri: "https://example.com/collection.json", - royaltyBasisPoints: 500 + royaltyBasisPoints: 500, }, output: { status: "success", message: "Collection deployed successfully", collectionAddress: "7nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkN", - name: "My Collection" + name: "My Collection", }, - explanation: "Deploy an NFT collection with 5% royalty" - } + explanation: "Deploy an NFT collection with 5% royalty", + }, ], [ { input: { name: "Basic Collection", - uri: "https://example.com/basic.json" + uri: "https://example.com/basic.json", }, output: { status: "success", message: "Collection deployed successfully", collectionAddress: "8nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkM", - name: "Basic Collection" + name: "Basic Collection", }, - explanation: "Deploy a basic NFT collection without royalties" - } - ] + explanation: "Deploy a basic NFT collection without royalties", + }, + ], ], schema: z.object({ name: z.string().min(1, "Name is required"), uri: z.string().url("URI must be a valid URL"), - royaltyBasisPoints: z.number().min(0).max(10000).optional() + royaltyBasisPoints: z.number().min(0).max(10000).optional(), }), handler: async (agent: SolanaAgentKit, input: Record) => { const options: CollectionOptions = { name: input.name, uri: input.uri, - royaltyBasisPoints: input.royaltyBasisPoints + royaltyBasisPoints: input.royaltyBasisPoints, }; const result = await deploy_collection(agent, options); @@ -71,9 +70,9 @@ const deployCollectionAction: Action = { status: "success", message: "Collection deployed successfully", collectionAddress: result.collectionAddress.toString(), - name: input.name + name: input.name, }; - } + }, }; -export default deployCollectionAction; \ No newline at end of file +export default deployCollectionAction; diff --git a/src/actions/deployToken.ts b/src/actions/deployToken.ts index 2a1793d..d365054 100644 --- a/src/actions/deployToken.ts +++ b/src/actions/deployToken.ts @@ -1,5 +1,4 @@ -import { PublicKey } from "@solana/web3.js"; -import { Action, ActionExample } from "../types/action"; +import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { deploy_token } from "../tools"; @@ -13,7 +12,8 @@ const deployTokenAction: Action = { "create new token", "mint token", ], - description: "Deploy a new SPL token on the Solana blockchain with specified parameters", + description: + "Deploy a new SPL token on the Solana blockchain with specified parameters", examples: [ [ { @@ -22,38 +22,38 @@ const deployTokenAction: Action = { uri: "https://example.com/token.json", symbol: "MTK", decimals: 9, - initialSupply: 1000000 + initialSupply: 1000000, }, output: { mint: "7nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkN", status: "success", - message: "Token deployed successfully" + message: "Token deployed successfully", }, - explanation: "Deploy a token with initial supply and metadata" - } + explanation: "Deploy a token with initial supply and metadata", + }, ], [ { input: { name: "Basic Token", uri: "https://example.com/basic.json", - symbol: "BASIC" + symbol: "BASIC", }, output: { mint: "8nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkM", status: "success", - message: "Token deployed successfully" + message: "Token deployed successfully", }, - explanation: "Deploy a basic token with minimal parameters" - } - ] + explanation: "Deploy a basic token with minimal parameters", + }, + ], ], schema: z.object({ name: z.string().min(1, "Name is required"), uri: z.string().url("URI must be a valid URL"), symbol: z.string().min(1, "Symbol is required"), decimals: z.number().optional(), - initialSupply: z.number().optional() + initialSupply: z.number().optional(), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { @@ -63,21 +63,21 @@ const deployTokenAction: Action = { input.uri, input.symbol, input.decimals, - input.initialSupply + input.initialSupply, ); return { mint: result.mint.toString(), status: "success", - message: "Token deployed successfully" + message: "Token deployed successfully", }; } catch (error: any) { return { status: "error", - message: `Token deployment failed: ${error.message}` + message: `Token deployment failed: ${error.message}`, }; } - } -} + }, +}; -export default deployTokenAction; \ No newline at end of file +export default deployTokenAction; diff --git a/src/actions/fetchPrice.ts b/src/actions/fetchPrice.ts index 9512e14..0c45391 100644 --- a/src/actions/fetchPrice.ts +++ b/src/actions/fetchPrice.ts @@ -11,26 +11,29 @@ const fetchPriceAction: Action = { "check price", "token value", "price check", - "get price in usd" + "get price in usd", ], - description: "Fetch the current price of a Solana token in USDC using Jupiter API", + description: + "Fetch the current price of a Solana token in USDC using Jupiter API", examples: [ [ { input: { - tokenAddress: "So11111111111111111111111111111111111111112" + tokenAddress: "So11111111111111111111111111111111111111112", }, output: { status: "success", price: "23.45", - message: "Current price: $23.45 USDC" + message: "Current price: $23.45 USDC", }, - explanation: "Get the current price of SOL token in USDC" - } - ] + explanation: "Get the current price of SOL token in USDC", + }, + ], ], schema: z.object({ - tokenAddress: z.string().describe("The mint address of the token to fetch the price for") + tokenAddress: z + .string() + .describe("The mint address of the token to fetch the price for"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { @@ -40,15 +43,15 @@ const fetchPriceAction: Action = { return { status: "success", price, - message: `Current price: $${price} USDC` + message: `Current price: $${price} USDC`, }; } catch (error: any) { return { status: "error", - message: `Failed to fetch price: ${error.message}` + message: `Failed to fetch price: ${error.message}`, }; } - } + }, }; -export default fetchPriceAction; \ No newline at end of file +export default fetchPriceAction; diff --git a/src/actions/getAllDomainsTLDs.ts b/src/actions/getAllDomainsTLDs.ts index 60c05d2..34dbd19 100644 --- a/src/actions/getAllDomainsTLDs.ts +++ b/src/actions/getAllDomainsTLDs.ts @@ -11,9 +11,10 @@ const getAllDomainsTLDsAction: Action = { "fetch domain tlds", "get top level domains", "list available tlds", - "get domain suffixes" + "get domain suffixes", ], - description: "Get a list of all available top-level domains (TLDs) for Solana domains", + description: + "Get a list of all available top-level domains (TLDs) for Solana domains", examples: [ [ { @@ -21,14 +22,15 @@ const getAllDomainsTLDsAction: Action = { output: { status: "success", tlds: [".sol", ".abc", ".backpack", ".bonk"], - message: "Successfully retrieved all domain TLDs" + message: "Successfully retrieved all domain TLDs", }, - explanation: "Get a list of all available TLDs that can be used for Solana domains" - } - ] + explanation: + "Get a list of all available TLDs that can be used for Solana domains", + }, + ], ], schema: z.object({}), - handler: async (agent: SolanaAgentKit, input: Record) => { + handler: async (agent: SolanaAgentKit) => { try { // Get all domain TLDs const tlds = await getAllDomainsTLDs(agent); @@ -36,15 +38,15 @@ const getAllDomainsTLDsAction: Action = { return { status: "success", tlds, - message: "Successfully retrieved all domain TLDs" + message: "Successfully retrieved all domain TLDs", }; } catch (error: any) { return { status: "error", - message: `Failed to get domain TLDs: ${error.message}` + message: `Failed to get domain TLDs: ${error.message}`, }; } - } + }, }; -export default getAllDomainsTLDsAction; \ No newline at end of file +export default getAllDomainsTLDsAction; diff --git a/src/actions/getAllRegisteredAllDomains.ts b/src/actions/getAllRegisteredAllDomains.ts index 96fe879..6ed9140 100644 --- a/src/actions/getAllRegisteredAllDomains.ts +++ b/src/actions/getAllRegisteredAllDomains.ts @@ -11,7 +11,7 @@ const getAllRegisteredAllDomainsAction: Action = { "fetch registered domains", "get domain list", "list active domains", - "get registered names" + "get registered names", ], description: "Get a list of all registered domains across all TLDs", examples: [ @@ -19,28 +19,30 @@ const getAllRegisteredAllDomainsAction: Action = { { input: { limit: 100, - offset: 0 + offset: 0, }, output: { status: "success", domains: ["solana.sol", "bonk.abc", "wallet.backpack"], total: 3, - message: "Successfully retrieved registered domains" + message: "Successfully retrieved registered domains", }, - explanation: "Get the first 100 registered domains across all TLDs" - } - ] + explanation: "Get the first 100 registered domains across all TLDs", + }, + ], ], schema: z.object({ - limit: z.number() + limit: z + .number() .positive() .max(1000) .default(100) .describe("Maximum number of domains to return"), - offset: z.number() + offset: z + .number() .nonnegative() .default(0) - .describe("Number of domains to skip") + .describe("Number of domains to skip"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { @@ -50,20 +52,19 @@ const getAllRegisteredAllDomainsAction: Action = { // Get all registered domains const domains = await getAllRegisteredAllDomains(agent); - return { status: "success", domains: domains.slice(offset, offset + limit), total: domains.length, - message: "Successfully retrieved registered domains" + message: "Successfully retrieved registered domains", }; } catch (error: any) { return { status: "error", - message: `Failed to get registered domains: ${error.message}` + message: `Failed to get registered domains: ${error.message}`, }; } - } + }, }; -export default getAllRegisteredAllDomainsAction; \ No newline at end of file +export default getAllRegisteredAllDomainsAction; diff --git a/src/actions/getMainAllDomainsDomain.ts b/src/actions/getMainAllDomainsDomain.ts index 4f301f9..ad57161 100644 --- a/src/actions/getMainAllDomainsDomain.ts +++ b/src/actions/getMainAllDomainsDomain.ts @@ -2,7 +2,6 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { PublicKey } from "@solana/web3.js"; -import { TldParser } from "@onsol/tldparser"; import { getMainAllDomainsDomain } from "../tools"; const getMainAllDomainsDomainAction: Action = { @@ -13,52 +12,56 @@ const getMainAllDomainsDomainAction: Action = { "get default domain", "get main address name", "get primary name", - "get main domain name" + "get main domain name", ], description: "Get the main domain associated with a wallet address", examples: [ [ { input: { - address: "7nxQB..." + address: "7nxQB...", }, output: { status: "success", domain: "solana.sol", - message: "Successfully retrieved main domain" + message: "Successfully retrieved main domain", }, - explanation: "Get the main domain name for a given wallet address" - } - ] + explanation: "Get the main domain name for a given wallet address", + }, + ], ], schema: z.object({ - address: z.string() + address: z + .string() .min(1) - .describe("The wallet address to get the main domain for") + .describe("The wallet address to get the main domain for"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { - const mainDomain = await getMainAllDomainsDomain(agent, new PublicKey(input.address)); + const mainDomain = await getMainAllDomainsDomain( + agent, + new PublicKey(input.address), + ); if (!mainDomain) { return { status: "error", - message: "No main domain found for this address" + message: "No main domain found for this address", }; } return { status: "success", domain: mainDomain, - message: "Successfully retrieved main domain" + message: "Successfully retrieved main domain", }; } catch (error: any) { return { status: "error", - message: `Failed to get main domain: ${error.message}` + message: `Failed to get main domain: ${error.message}`, }; } - } + }, }; -export default getMainAllDomainsDomainAction; \ No newline at end of file +export default getMainAllDomainsDomainAction; diff --git a/src/actions/getOwnedAllDomains.ts b/src/actions/getOwnedAllDomains.ts index 9cb279a..359bf38 100644 --- a/src/actions/getOwnedAllDomains.ts +++ b/src/actions/getOwnedAllDomains.ts @@ -12,29 +12,31 @@ const getOwnedAllDomainsAction: Action = { "fetch wallet domains", "get owned names", "list my domains", - "get address domains" + "get address domains", ], - description: "Get all domains owned by a specific wallet address across all TLDs", + description: + "Get all domains owned by a specific wallet address across all TLDs", examples: [ [ { input: { - address: "7nxQB..." + address: "7nxQB...", }, output: { status: "success", domains: ["solana.sol", "wallet.abc", "user.backpack"], total: 3, - message: "Successfully retrieved owned domains" + message: "Successfully retrieved owned domains", }, - explanation: "Get all domain names owned by a specific wallet address" - } - ] + explanation: "Get all domain names owned by a specific wallet address", + }, + ], ], schema: z.object({ - address: z.string() + address: z + .string() .min(1) - .describe("The wallet address to get owned domains for") + .describe("The wallet address to get owned domains for"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { @@ -47,15 +49,15 @@ const getOwnedAllDomainsAction: Action = { status: "success", domains, total: domains.length, - message: `Successfully retrieved ${domains.length} owned domain${domains.length === 1 ? '' : 's'}` + message: `Successfully retrieved ${domains.length} owned domain${domains.length === 1 ? "" : "s"}`, }; } catch (error: any) { return { status: "error", - message: `Failed to get owned domains: ${error.message}` + message: `Failed to get owned domains: ${error.message}`, }; } - } + }, }; -export default getOwnedAllDomainsAction; \ No newline at end of file +export default getOwnedAllDomainsAction; diff --git a/src/actions/getOwnedDomainsForTLD.ts b/src/actions/getOwnedDomainsForTLD.ts index 3b2a06e..b419e58 100644 --- a/src/actions/getOwnedDomainsForTLD.ts +++ b/src/actions/getOwnedDomainsForTLD.ts @@ -1,7 +1,6 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import { PublicKey } from "@solana/web3.js"; import { getOwnedDomainsForTLD } from "../tools"; const getOwnedDomainsForTLDAction: Action = { @@ -12,29 +11,32 @@ const getOwnedDomainsForTLDAction: Action = { "fetch wallet domains by tld", "get owned names by extension", "list my domains by tld", - "get address domains for tld" + "get address domains for tld", ], - description: "Get all domains owned by a specific wallet address for a given top-level domain (TLD)", + description: + "Get all domains owned by a specific wallet address for a given top-level domain (TLD)", examples: [ [ { input: { - tld: "sol" + tld: "sol", }, output: { status: "success", domains: ["solana.sol", "wallet.sol", "user.sol"], total: 3, - message: "Successfully retrieved owned domains for .sol" + message: "Successfully retrieved owned domains for .sol", }, - explanation: "Get all .sol domain names owned by a specific wallet address" - } - ] + explanation: + "Get all .sol domain names owned by a specific wallet address", + }, + ], ], schema: z.object({ - tld: z.string() + tld: z + .string() .min(1) - .describe("The top-level domain to filter by (e.g., 'sol', 'abc')") + .describe("The top-level domain to filter by (e.g., 'sol', 'abc')"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { @@ -47,15 +49,15 @@ const getOwnedDomainsForTLDAction: Action = { status: "success", domains, total: domains.length, - message: `Successfully retrieved ${domains.length} owned domain${domains.length === 1 ? '' : 's'} for .${tld}` + message: `Successfully retrieved ${domains.length} owned domain${domains.length === 1 ? "" : "s"} for .${tld}`, }; } catch (error: any) { return { status: "error", - message: `Failed to get owned domains: ${error.message}` + message: `Failed to get owned domains: ${error.message}`, }; } - } + }, }; -export default getOwnedDomainsForTLDAction; \ No newline at end of file +export default getOwnedDomainsForTLDAction; diff --git a/src/actions/getPrimaryDomain.ts b/src/actions/getPrimaryDomain.ts index f19b091..d903c04 100644 --- a/src/actions/getPrimaryDomain.ts +++ b/src/actions/getPrimaryDomain.ts @@ -1,7 +1,6 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import { getPrimaryDomain as _getPrimaryDomain } from "@bonfida/spl-name-service"; import { PublicKey } from "@solana/web3.js"; import { getPrimaryDomain } from "../tools"; @@ -13,51 +12,46 @@ const getPrimaryDomainAction: Action = { "check primary domain", "find primary domain", "get main domain", - "primary sol domain" + "primary sol domain", ], - description: "Get the primary .sol domain associated with a Solana wallet address", + description: + "Get the primary .sol domain associated with a Solana wallet address", examples: [ [ { input: { - account: "7nxQB..." + account: "7nxQB...", }, output: { status: "success", domain: "vitalik.sol", - message: "Primary domain: vitalik.sol" + message: "Primary domain: vitalik.sol", }, - explanation: "Get the primary .sol domain for a wallet address" - } - ] + explanation: "Get the primary .sol domain for a wallet address", + }, + ], ], schema: z.object({ - account: z.string() - .min(1) - .describe("The Solana wallet address to lookup") + account: z.string().min(1).describe("The Solana wallet address to lookup"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { const account = new PublicKey(input.account); - const response = await getPrimaryDomain( - agent, - account - ); - + const response = await getPrimaryDomain(agent, account); return { status: "success", domain: response, - message: `Primary domain: ${response}` + message: `Primary domain: ${response}`, }; } catch (error: any) { return { status: "error", - message: `Failed to get primary domain: ${error.message}` + message: `Failed to get primary domain: ${error.message}`, }; } - } + }, }; -export default getPrimaryDomainAction; \ No newline at end of file +export default getPrimaryDomainAction; diff --git a/src/actions/getTPS.ts b/src/actions/getTPS.ts index 546da65..b5c0979 100644 --- a/src/actions/getTPS.ts +++ b/src/actions/getTPS.ts @@ -10,9 +10,10 @@ const getTPSAction: Action = { "check network speed", "network performance", "transaction throughput", - "network tps" + "network tps", ], - description: "Get the current transactions per second (TPS) of the Solana network", + description: + "Get the current transactions per second (TPS) of the Solana network", examples: [ [ { @@ -20,11 +21,11 @@ const getTPSAction: Action = { output: { status: "success", tps: 3500, - message: "Current network TPS: 3500" + message: "Current network TPS: 3500", }, - explanation: "Get the current TPS of the Solana network" - } - ] + explanation: "Get the current TPS of the Solana network", + }, + ], ], schema: z.object({}), // No input parameters required handler: async (agent: SolanaAgentKit, _input: Record) => { @@ -33,15 +34,15 @@ const getTPSAction: Action = { return { status: "success", response, - message: `Current network TPS: ${response}` + message: `Current network TPS: ${response}`, }; } catch (error: any) { return { status: "error", - message: `Failed to get TPS: ${error.message}` + message: `Failed to get TPS: ${error.message}`, }; } - } + }, }; -export default getTPSAction; \ No newline at end of file +export default getTPSAction; diff --git a/src/actions/getTokenData.ts b/src/actions/getTokenData.ts index 8ac9721..57b288b 100644 --- a/src/actions/getTokenData.ts +++ b/src/actions/getTokenData.ts @@ -12,14 +12,14 @@ const getTokenDataAction: Action = { "token details", "lookup token", "find token", - "token data" + "token data", ], description: "Get token data from either a token address or ticker symbol", examples: [ [ { input: { - address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", }, output: { status: "success", @@ -27,16 +27,16 @@ const getTokenDataAction: Action = { name: "USD Coin", symbol: "USDC", address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - decimals: 6 - } + decimals: 6, + }, }, - explanation: "Get token data using the token's address" - } + explanation: "Get token data using the token's address", + }, ], [ { input: { - ticker: "SOL" + ticker: "SOL", }, output: { status: "success", @@ -44,19 +44,21 @@ const getTokenDataAction: Action = { name: "Wrapped SOL", symbol: "SOL", address: "So11111111111111111111111111111111111111112", - decimals: 9 - } + decimals: 9, + }, }, - explanation: "Get token data using the token's ticker symbol" - } - ] + explanation: "Get token data using the token's ticker symbol", + }, + ], ], - schema: z.object({ - address: z.string().optional().describe("The token's mint address"), - ticker: z.string().optional().describe("The token's ticker symbol") - }).refine(data => data.address || data.ticker, { - message: "Either address or ticker must be provided" - }), + schema: z + .object({ + address: z.string().optional().describe("The token's mint address"), + ticker: z.string().optional().describe("The token's ticker symbol"), + }) + .refine((data) => data.address || data.ticker, { + message: "Either address or ticker must be provided", + }), handler: async (agent: SolanaAgentKit, input: Record) => { try { let tokenData: JupiterTokenData | undefined; @@ -71,7 +73,7 @@ const getTokenDataAction: Action = { if (!tokenData) { return { status: "error", - message: "Token not found or not verified" + message: "Token not found or not verified", }; } return { @@ -81,16 +83,16 @@ const getTokenDataAction: Action = { symbol: tokenData.symbol, address: tokenData.address, decimals: tokenData.decimals, - logoURI: tokenData.logoURI - } + logoURI: tokenData.logoURI, + }, }; } catch (error: any) { return { status: "error", - message: `Failed to get token data: ${error.message}` + message: `Failed to get token data: ${error.message}`, }; } - } + }, }; -export default getTokenDataAction; \ No newline at end of file +export default getTokenDataAction; diff --git a/src/actions/index.ts b/src/actions/index.ts index d3b1679..cb81ce1 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -58,4 +58,4 @@ export const actions = [ launchPumpfunTokenAction, ]; -export type { Action, ActionExample, Handler } from "../types/action"; \ No newline at end of file +export type { Action, ActionExample, Handler } from "../types/action"; diff --git a/src/actions/launchPumpfunToken.ts b/src/actions/launchPumpfunToken.ts index 00f0add..601bb47 100644 --- a/src/actions/launchPumpfunToken.ts +++ b/src/actions/launchPumpfunToken.ts @@ -1,7 +1,6 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import { VersionedTransaction, Keypair } from "@solana/web3.js"; import { launchPumpFunToken } from "../tools"; const launchPumpfunTokenAction: Action = { @@ -12,9 +11,10 @@ const launchPumpfunTokenAction: Action = { "deploy pumpfun token", "create meme token", "launch memecoin", - "create pump token" + "create pump token", ], - description: "Launch a new token on Pump.fun with customizable metadata and initial liquidity", + description: + "Launch a new token on Pump.fun with customizable metadata and initial liquidity", examples: [ [ { @@ -28,78 +28,79 @@ const launchPumpfunTokenAction: Action = { website: "https://sampletoken.com", initialLiquiditySOL: 0.1, slippageBps: 10, - priorityFee: 0.0001 + priorityFee: 0.0001, }, output: { status: "success", signature: "2ZE7Rz...", mint: "7nxQB...", metadataUri: "https://arweave.net/...", - message: "Successfully launched token on Pump.fun" + message: "Successfully launched token on Pump.fun", }, - explanation: "Launch a new token with custom metadata and 0.1 SOL initial liquidity" - } - ] + explanation: + "Launch a new token with custom metadata and 0.1 SOL initial liquidity", + }, + ], ], schema: z.object({ - tokenName: z.string() - .min(1) - .max(32) - .describe("Name of the token"), - tokenTicker: z.string() + tokenName: z.string().min(1).max(32).describe("Name of the token"), + tokenTicker: z + .string() .min(2) .max(10) .describe("Ticker symbol of the token"), - description: z.string() + description: z + .string() .min(1) .max(1000) .describe("Description of the token"), - imageUrl: z.string() - .url() - .describe("URL of the token image"), - twitter: z.string() - .optional() - .describe("Twitter handle (optional)"), - telegram: z.string() - .optional() - .describe("Telegram group link (optional)"), - website: z.string() - .url() - .optional() - .describe("Website URL (optional)"), - initialLiquiditySOL: z.number() + imageUrl: z.string().url().describe("URL of the token image"), + twitter: z.string().optional().describe("Twitter handle (optional)"), + telegram: z.string().optional().describe("Telegram group link (optional)"), + website: z.string().url().optional().describe("Website URL (optional)"), + initialLiquiditySOL: z + .number() .min(0.0001) .default(0.0001) .describe("Initial liquidity in SOL"), - slippageBps: z.number() + slippageBps: z + .number() .min(1) .max(1000) .default(5) .describe("Slippage tolerance in basis points"), - priorityFee: z.number() + priorityFee: z + .number() .min(0.00001) .default(0.00005) - .describe("Priority fee in SOL") + .describe("Priority fee in SOL"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { const { tokenName, tokenTicker, description, imageUrl } = input; - const result = await launchPumpFunToken(agent, tokenName, tokenTicker, description, imageUrl, input); + const result = await launchPumpFunToken( + agent, + tokenName, + tokenTicker, + description, + imageUrl, + input, + ); return { status: "success", signature: result.signature, mint: result.mint, metadataUri: result.metadataUri, - message: "Successfully launched token on Pump.fun" + message: "Successfully launched token on Pump.fun", }; } catch (error: any) { return { status: "error", - message: `Failed to launch token: ${error.message}` + message: `Failed to launch token: ${error.message}`, }; } - } + }, }; -export default launchPumpfunTokenAction; \ No newline at end of file +export default launchPumpfunTokenAction; diff --git a/src/actions/lendAsset.ts b/src/actions/lendAsset.ts index b4b0885..1072ace 100644 --- a/src/actions/lendAsset.ts +++ b/src/actions/lendAsset.ts @@ -1,7 +1,6 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import { VersionedTransaction } from "@solana/web3.js"; import { lendAsset } from "../tools"; const lendAssetAction: Action = { @@ -12,28 +11,26 @@ const lendAssetAction: Action = { "earn yield", "lend with lulo", "deposit usdc", - "lending" + "lending", ], description: "Lend USDC tokens to earn yield using Lulo protocol", examples: [ [ { input: { - amount: 100 + amount: 100, }, output: { status: "success", signature: "4xKpN2...", - message: "Successfully lent 100 USDC" + message: "Successfully lent 100 USDC", }, - explanation: "Lend 100 USDC to earn yield on Lulo" - } - ] + explanation: "Lend 100 USDC to earn yield on Lulo", + }, + ], ], schema: z.object({ - amount: z.number() - .positive() - .describe("Amount of USDC to lend") + amount: z.number().positive().describe("Amount of USDC to lend"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { @@ -44,15 +41,15 @@ const lendAssetAction: Action = { return { status: "success", signature: response, - message: `Successfully lent ${amount} USDC` + message: `Successfully lent ${amount} USDC`, }; } catch (error: any) { return { status: "error", - message: `Lending failed: ${error.message}` + message: `Lending failed: ${error.message}`, }; } - } + }, }; -export default lendAssetAction; \ No newline at end of file +export default lendAssetAction; diff --git a/src/actions/mintNFT.ts b/src/actions/mintNFT.ts index 949514c..5c3d691 100644 --- a/src/actions/mintNFT.ts +++ b/src/actions/mintNFT.ts @@ -11,7 +11,7 @@ const mintNFTAction: Action = { "create nft", "mint token", "create token", - "add nft to collection" + "add nft to collection", ], description: `Mint a new NFT in a collection on Solana blockchain.`, examples: [ @@ -20,7 +20,7 @@ const mintNFTAction: Action = { input: { collectionMint: "J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w", name: "My NFT", - uri: "https://example.com/nft.json" + uri: "https://example.com/nft.json", }, output: { status: "success", @@ -28,12 +28,12 @@ const mintNFTAction: Action = { mintAddress: "7nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkN", metadata: { name: "My NFT", - uri: "https://example.com/nft.json" + uri: "https://example.com/nft.json", }, - recipient: "7nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkN" + recipient: "7nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkN", }, - explanation: "Mint an NFT to the default wallet" - } + explanation: "Mint an NFT to the default wallet", + }, ], [ { @@ -41,7 +41,7 @@ const mintNFTAction: Action = { collectionMint: "J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w", name: "Gift NFT", uri: "https://example.com/gift.json", - recipient: "9aUn5swQzUTRanaaTwmszxiv89cvFwUCjEBv1vZCoT1u" + recipient: "9aUn5swQzUTRanaaTwmszxiv89cvFwUCjEBv1vZCoT1u", }, output: { status: "success", @@ -49,19 +49,19 @@ const mintNFTAction: Action = { mintAddress: "8nE9GvcwsqzYxmJLSrYmSB1V1YoJWVK1KWzAcWAzjXkM", metadata: { name: "Gift NFT", - uri: "https://example.com/gift.json" + uri: "https://example.com/gift.json", }, - recipient: "9aUn5swQzUTRanaaTwmszxiv89cvFwUCjEBv1vZCoT1u" + recipient: "9aUn5swQzUTRanaaTwmszxiv89cvFwUCjEBv1vZCoT1u", }, - explanation: "Mint an NFT to a specific recipient" - } - ] + explanation: "Mint an NFT to a specific recipient", + }, + ], ], schema: z.object({ collectionMint: z.string().min(32, "Invalid collection mint address"), name: z.string().min(1, "Name is required"), uri: z.string().url("URI must be a valid URL"), - recipient: z.string().min(32, "Invalid recipient address") + recipient: z.string().min(32, "Invalid recipient address"), }), handler: async (agent: SolanaAgentKit, input: Record) => { const result = await mintCollectionNFT( @@ -69,9 +69,9 @@ const mintNFTAction: Action = { new PublicKey(input.collectionMint), { name: input.name, - uri: input.uri + uri: input.uri, }, - input.recipient ? new PublicKey(input.recipient) : undefined + input.recipient ? new PublicKey(input.recipient) : undefined, ); return { @@ -80,11 +80,11 @@ const mintNFTAction: Action = { mintAddress: result.mint.toString(), metadata: { name: input.name, - uri: input.uri + uri: input.uri, }, - recipient: input.recipient || result.mint.toString() + recipient: input.recipient || result.mint.toString(), }; - } + }, }; -export default mintNFTAction; \ No newline at end of file +export default mintNFTAction; diff --git a/src/actions/pythFetchPrice.ts b/src/actions/pythFetchPrice.ts index 1c1f9e0..02ff1d8 100644 --- a/src/actions/pythFetchPrice.ts +++ b/src/actions/pythFetchPrice.ts @@ -1,8 +1,6 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import { PriceServiceConnection } from "@pythnetwork/price-service-client"; -import BN from "bn.js"; import { pythFetchPrice } from "../tools"; const pythFetchPriceAction: Action = { @@ -13,28 +11,29 @@ const pythFetchPriceAction: Action = { "pyth oracle price", "fetch from pyth", "pyth price feed", - "oracle price" + "oracle price", ], description: "Fetch the current price from a Pyth oracle price feed", examples: [ [ { input: { - priceFeedId: "Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD" // SOL/USD price feed + priceFeedId: "Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD", // SOL/USD price feed }, output: { status: "success", price: "23.45", - message: "Current price: $23.45" + message: "Current price: $23.45", }, - explanation: "Get the current SOL/USD price from Pyth oracle" - } - ] + explanation: "Get the current SOL/USD price from Pyth oracle", + }, + ], ], schema: z.object({ - priceFeedId: z.string() + priceFeedId: z + .string() .min(1) - .describe("The Pyth price feed ID to fetch the price from") + .describe("The Pyth price feed ID to fetch the price from"), }), handler: async (_agent: SolanaAgentKit, input: Record) => { try { @@ -45,15 +44,15 @@ const pythFetchPriceAction: Action = { return { status: "success", price: priceStr, - message: `Current price: $${priceStr}` + message: `Current price: $${priceStr}`, }; } catch (error: any) { return { status: "error", - message: `Failed to fetch price from Pyth: ${error.message}` + message: `Failed to fetch price from Pyth: ${error.message}`, }; } - } + }, }; -export default pythFetchPriceAction; \ No newline at end of file +export default pythFetchPriceAction; diff --git a/src/actions/raydiumCreateAmmV4.ts b/src/actions/raydiumCreateAmmV4.ts index afda966..412ef18 100644 --- a/src/actions/raydiumCreateAmmV4.ts +++ b/src/actions/raydiumCreateAmmV4.ts @@ -1,15 +1,6 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import { - AMM_V4, - FEE_DESTINATION_ID, - MARKET_STATE_LAYOUT_V3, - OPEN_BOOK_PROGRAM, - Raydium, - TxVersion, -} from "@raydium-io/raydium-sdk-v2"; -import { MintLayout, TOKEN_PROGRAM_ID } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; import BN from "bn.js"; import { raydiumCreateAmmV4 } from "../tools"; @@ -22,49 +13,51 @@ const raydiumCreateAmmV4Action: Action = { "initialize raydium v4 amm", "create raydium v4 market maker", "setup raydium v4 pool", - "create raydium v4 trading pair" + "create raydium v4 trading pair", ], - description: "Create a new AMM V4 pool on Raydium with advanced features and improved efficiency", + description: + "Create a new AMM V4 pool on Raydium with advanced features and improved efficiency", examples: [ [ { input: { - baseMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", // USDC - quoteMint: "So11111111111111111111111111111111111111112", // SOL + baseMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", // USDC + quoteMint: "So11111111111111111111111111111111111111112", // SOL baseAmount: 1000, quoteAmount: 10, - startPrice: 100, // 1 SOL = 100 USDC - openTime: 1672531200 // Unix timestamp + startPrice: 100, // 1 SOL = 100 USDC + openTime: 1672531200, // Unix timestamp }, output: { status: "success", signature: "2ZE7Rz...", poolId: "7nxQB...", - message: "Successfully created Raydium AMM V4 pool" + message: "Successfully created Raydium AMM V4 pool", }, - explanation: "Create a USDC-SOL V4 pool with initial liquidity and price" - } - ] + explanation: + "Create a USDC-SOL V4 pool with initial liquidity and price", + }, + ], ], schema: z.object({ - baseMint: z.string() - .min(1) - .describe("The base token mint address"), - quoteMint: z.string() - .min(1) - .describe("The quote token mint address"), - baseAmount: z.number() + baseMint: z.string().min(1).describe("The base token mint address"), + quoteMint: z.string().min(1).describe("The quote token mint address"), + baseAmount: z + .number() .positive() .describe("Initial base token amount to provide as liquidity"), - quoteAmount: z.number() + quoteAmount: z + .number() .positive() .describe("Initial quote token amount to provide as liquidity"), - startPrice: z.number() + startPrice: z + .number() .positive() .describe("Initial price of quote token in base token units"), - openTime: z.number() + openTime: z + .number() .positive() - .describe("Unix timestamp when trading should start") + .describe("Unix timestamp when trading should start"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { @@ -73,20 +66,26 @@ const raydiumCreateAmmV4Action: Action = { const quoteAmount = new BN(input.quoteAmount); const startTime = new BN(input.startTime); - const txId = await raydiumCreateAmmV4(agent, marketId, baseAmount, quoteAmount, startTime); + const txId = await raydiumCreateAmmV4( + agent, + marketId, + baseAmount, + quoteAmount, + startTime, + ); return { status: "success", signature: txId, - message: "Successfully created Raydium AMM V4 pool" + message: "Successfully created Raydium AMM V4 pool", }; } catch (error: any) { return { status: "error", - message: `Failed to create AMM V4 pool: ${error.message}` + message: `Failed to create AMM V4 pool: ${error.message}`, }; } - } + }, }; -export default raydiumCreateAmmV4Action; \ No newline at end of file +export default raydiumCreateAmmV4Action; diff --git a/src/actions/raydiumCreateCpmm.ts b/src/actions/raydiumCreateCpmm.ts index 0e6795c..28fe82a 100644 --- a/src/actions/raydiumCreateCpmm.ts +++ b/src/actions/raydiumCreateCpmm.ts @@ -1,13 +1,6 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import { - CREATE_CPMM_POOL_FEE_ACC, - CREATE_CPMM_POOL_PROGRAM, - Raydium, - TxVersion, -} from "@raydium-io/raydium-sdk-v2"; -import { MintLayout } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; import BN from "bn.js"; import { raydiumCreateCpmm } from "../tools"; @@ -20,45 +13,46 @@ const raydiumCreateCpmmAction: Action = { "initialize raydium amm", "create constant product market maker", "setup raydium cpmm", - "create raydium trading pair" + "create raydium trading pair", ], - description: "Create a new Constant Product Market Maker (CPMM) pool on Raydium", + description: + "Create a new Constant Product Market Maker (CPMM) pool on Raydium", examples: [ [ { input: { - baseMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", // USDC - quoteMint: "So11111111111111111111111111111111111111112", // SOL + baseMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", // USDC + quoteMint: "So11111111111111111111111111111111111111112", // SOL baseAmount: 1000, quoteAmount: 10, - startTime: 1672531200 // Unix timestamp + startTime: 1672531200, // Unix timestamp }, output: { status: "success", signature: "2ZE7Rz...", poolId: "7nxQB...", - message: "Successfully created Raydium CPMM pool" + message: "Successfully created Raydium CPMM pool", }, - explanation: "Create a USDC-SOL pool with initial liquidity of 1000 USDC and 10 SOL" - } - ] + explanation: + "Create a USDC-SOL pool with initial liquidity of 1000 USDC and 10 SOL", + }, + ], ], schema: z.object({ - baseMint: z.string() - .min(1) - .describe("The base token mint address"), - quoteMint: z.string() - .min(1) - .describe("The quote token mint address"), - baseAmount: z.number() + baseMint: z.string().min(1).describe("The base token mint address"), + quoteMint: z.string().min(1).describe("The quote token mint address"), + baseAmount: z + .number() .positive() .describe("Initial base token amount to provide as liquidity"), - quoteAmount: z.number() + quoteAmount: z + .number() .positive() .describe("Initial quote token amount to provide as liquidity"), - startTime: z.number() + startTime: z + .number() .positive() - .describe("Unix timestamp when trading should start") + .describe("Unix timestamp when trading should start"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { @@ -69,20 +63,28 @@ const raydiumCreateCpmmAction: Action = { const mintBAmount = new BN(input.quoteAmount); const startTime = new BN(input.startTime); - const txId = await raydiumCreateCpmm(agent, mintA, mintB, configId, mintAAmount, mintBAmount, startTime); + const txId = await raydiumCreateCpmm( + agent, + mintA, + mintB, + configId, + mintAAmount, + mintBAmount, + startTime, + ); return { status: "success", signature: txId, - message: "Successfully created Raydium CPMM pool" + message: "Successfully created Raydium CPMM pool", }; } catch (error: any) { return { status: "error", - message: `Failed to create CPMM pool: ${error.message}` + message: `Failed to create CPMM pool: ${error.message}`, }; } - } + }, }; -export default raydiumCreateCpmmAction; \ No newline at end of file +export default raydiumCreateCpmmAction; diff --git a/src/actions/registerDomain.ts b/src/actions/registerDomain.ts index 50b398a..b4a6d8d 100644 --- a/src/actions/registerDomain.ts +++ b/src/actions/registerDomain.ts @@ -1,10 +1,6 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import { Transaction } from "@solana/web3.js"; -import { registerDomainNameV2 } from "@bonfida/spl-name-service"; -import { getAssociatedTokenAddressSync } from "@solana/spl-token"; -import { TOKENS } from "../constants"; import { registerDomain } from "../tools"; const registerDomainAction: Action = { @@ -15,7 +11,7 @@ const registerDomainAction: Action = { "get domain name", "register .sol", "purchase domain", - "domain registration" + "domain registration", ], description: "Register a .sol domain name using Bonfida Name Service", examples: [ @@ -23,26 +19,25 @@ const registerDomainAction: Action = { { input: { name: "mydomain", - spaceKB: 1 + spaceKB: 1, }, output: { status: "success", signature: "2ZE7Rz...", - message: "Successfully registered mydomain.sol" + message: "Successfully registered mydomain.sol", }, - explanation: "Register a new .sol domain with 1KB storage space" - } - ] + explanation: "Register a new .sol domain with 1KB storage space", + }, + ], ], schema: z.object({ - name: z.string() - .min(1) - .describe("Domain name to register (without .sol)"), - spaceKB: z.number() + name: z.string().min(1).describe("Domain name to register (without .sol)"), + spaceKB: z + .number() .min(1) .max(10) .default(1) - .describe("Space allocation in KB (max 10KB)") + .describe("Space allocation in KB (max 10KB)"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { @@ -54,15 +49,15 @@ const registerDomainAction: Action = { return { status: "success", signature, - message: `Successfully registered ${name}.sol` + message: `Successfully registered ${name}.sol`, }; } catch (error: any) { return { status: "error", - message: `Domain registration failed: ${error.message}` + message: `Domain registration failed: ${error.message}`, }; } - } + }, }; -export default registerDomainAction; \ No newline at end of file +export default registerDomainAction; diff --git a/src/actions/requestFunds.ts b/src/actions/requestFunds.ts index 49e4c2b..116c15e 100644 --- a/src/actions/requestFunds.ts +++ b/src/actions/requestFunds.ts @@ -10,7 +10,7 @@ const requestFundsAction: Action = { "get test sol", "use faucet", "request test tokens", - "get devnet sol" + "get devnet sol", ], description: "Request SOL from Solana faucet (devnet/testnet only)", examples: [ @@ -20,11 +20,11 @@ const requestFundsAction: Action = { output: { status: "success", message: "Successfully requested faucet funds", - network: "devnet.solana.com" + network: "devnet.solana.com", }, - explanation: "Request SOL from the devnet faucet" - } - ] + explanation: "Request SOL from the devnet faucet", + }, + ], ], schema: z.object({}), // No input parameters required handler: async (agent: SolanaAgentKit, _input: Record) => { @@ -33,9 +33,9 @@ const requestFundsAction: Action = { return { status: "success", message: "Successfully requested faucet funds", - network: agent.connection.rpcEndpoint.split("/")[2] + network: agent.connection.rpcEndpoint.split("/")[2], }; - } + }, }; -export default requestFundsAction; \ No newline at end of file +export default requestFundsAction; diff --git a/src/actions/resolveDomain.ts b/src/actions/resolveDomain.ts index 1d6307a..aca514e 100644 --- a/src/actions/resolveDomain.ts +++ b/src/actions/resolveDomain.ts @@ -1,7 +1,6 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import { TldParser } from "@onsol/tldparser"; import { resolveAllDomains } from "../tools"; const resolveDomainAction: Action = { @@ -11,25 +10,25 @@ const resolveDomainAction: Action = { "lookup domain", "get domain owner", "check domain", - "find domain owner" + "find domain owner", ], description: "Resolve a Solana domain name to get its owner's public key", examples: [ [ { input: { - domain: "example.sol" + domain: "example.sol", }, output: { status: "success", - owner: "7nxQB..." + owner: "7nxQB...", }, - explanation: "Resolve a .sol domain name to get the owner's public key" - } - ] + explanation: "Resolve a .sol domain name to get the owner's public key", + }, + ], ], schema: z.object({ - domain: z.string().min(1).describe("The domain name to resolve") + domain: z.string().min(1).describe("The domain name to resolve"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { @@ -38,15 +37,15 @@ const resolveDomainAction: Action = { return { status: "success", owner: tld, - message: `Successfully resolved domain ${domain}` + message: `Successfully resolved domain ${domain}`, }; } catch (error: any) { return { status: "error", - message: `Failed to resolve domain: ${error.message}` + message: `Failed to resolve domain: ${error.message}`, }; } - } + }, }; -export default resolveDomainAction; \ No newline at end of file +export default resolveDomainAction; diff --git a/src/actions/resolveSolDomain.ts b/src/actions/resolveSolDomain.ts index ce13fe3..26ebae0 100644 --- a/src/actions/resolveSolDomain.ts +++ b/src/actions/resolveSolDomain.ts @@ -1,7 +1,6 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import { resolve } from "@bonfida/spl-name-service"; import { resolveSolDomain } from "../tools"; const resolveSolDomainAction: Action = { @@ -12,47 +11,49 @@ const resolveSolDomainAction: Action = { "get sol domain owner", "check sol domain", "find sol domain owner", - "resolve .sol" + "resolve .sol", ], - description: "Resolve a .sol domain to its corresponding Solana wallet address using Bonfida Name Service", + description: + "Resolve a .sol domain to its corresponding Solana wallet address using Bonfida Name Service", examples: [ [ { input: { - domain: "vitalik.sol" + domain: "vitalik.sol", }, output: { status: "success", owner: "7nxQB...", - message: "Successfully resolved vitalik.sol" + message: "Successfully resolved vitalik.sol", }, - explanation: "Resolve a .sol domain to get the owner's wallet address" - } - ] + explanation: "Resolve a .sol domain to get the owner's wallet address", + }, + ], ], schema: z.object({ - domain: z.string() + domain: z + .string() .min(1) - .describe("The .sol domain to resolve (with or without .sol suffix)") + .describe("The .sol domain to resolve (with or without .sol suffix)"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { const domain = input.domain as string; - const res = await resolveSolDomain(agent,domain) + const res = await resolveSolDomain(agent, domain); return { status: "success", owner: res.toString(), - message: `Successfully resolved ${res}` + message: `Successfully resolved ${res}`, }; } catch (error: any) { return { status: "error", - message: `Failed to resolve domain: ${error.message}` + message: `Failed to resolve domain: ${error.message}`, }; } - } + }, }; -export default resolveSolDomainAction; \ No newline at end of file +export default resolveSolDomainAction; diff --git a/src/actions/stakeWithJup.ts b/src/actions/stakeWithJup.ts index 7110a72..630f024 100644 --- a/src/actions/stakeWithJup.ts +++ b/src/actions/stakeWithJup.ts @@ -1,8 +1,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import { VersionedTransaction } from "@solana/web3.js"; -import { stakeWithJup, trade } from "../tools"; +import { stakeWithJup } from "../tools"; const stakeWithJupAction: Action = { name: "solana_stake_with_jup", @@ -12,46 +11,45 @@ const stakeWithJupAction: Action = { "jup staking", "stake with jup", "liquid staking", - "get jupsol" + "get jupsol", ], - description: "Stake SOL tokens with Jupiter's liquid staking protocol to receive jupSOL", + description: + "Stake SOL tokens with Jupiter's liquid staking protocol to receive jupSOL", examples: [ [ { input: { - amount: 1.5 + amount: 1.5, }, output: { status: "success", signature: "5KtPn3...", - message: "Successfully staked 1.5 SOL for jupSOL" + message: "Successfully staked 1.5 SOL for jupSOL", }, - explanation: "Stake 1.5 SOL to receive jupSOL tokens" - } - ] + explanation: "Stake 1.5 SOL to receive jupSOL tokens", + }, + ], ], schema: z.object({ - amount: z.number() - .positive() - .describe("Amount of SOL to stake") + amount: z.number().positive().describe("Amount of SOL to stake"), }), handler: async (agent: SolanaAgentKit, input: Record) => { try { const amount = input.amount as number; - - const res = await stakeWithJup(agent,amount) + + const res = await stakeWithJup(agent, amount); return { status: "success", res, - message: `Successfully staked ${amount} SOL for jupSOL` + message: `Successfully staked ${amount} SOL for jupSOL`, }; } catch (error: any) { return { status: "error", - message: `jupSOL staking failed: ${error.message}` + message: `jupSOL staking failed: ${error.message}`, }; } - } + }, }; -export default stakeWithJupAction; \ No newline at end of file +export default stakeWithJupAction; diff --git a/src/actions/trade.ts b/src/actions/trade.ts index bb27f79..397f0ca 100644 --- a/src/actions/trade.ts +++ b/src/actions/trade.ts @@ -11,7 +11,7 @@ const tradeAction: Action = { "exchange tokens", "trade tokens", "convert tokens", - "swap sol" + "swap sol", ], description: `This tool can be used to swap tokens to another token (It uses Jupiter Exchange).`, examples: [ @@ -19,18 +19,19 @@ const tradeAction: Action = { { input: { outputMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - inputAmount: 1 + inputAmount: 1, }, output: { status: "success", message: "Trade executed successfully", - transaction: "5UfgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7", + transaction: + "5UfgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7", inputAmount: 1, inputToken: "SOL", - outputToken: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + outputToken: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", }, - explanation: "Swap 1 SOL for USDC" - } + explanation: "Swap 1 SOL for USDC", + }, ], [ { @@ -38,34 +39,36 @@ const tradeAction: Action = { outputMint: "So11111111111111111111111111111111111111112", inputAmount: 100, inputMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - slippageBps: 100 + slippageBps: 100, }, output: { status: "success", message: "Trade executed successfully", - transaction: "4VfgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7", + transaction: + "4VfgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7", inputAmount: 100, inputToken: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - outputToken: "So11111111111111111111111111111111111111112" + outputToken: "So11111111111111111111111111111111111111112", }, - explanation: "Swap 100 USDC for SOL with 1% slippage" - } - ] + explanation: "Swap 100 USDC for SOL with 1% slippage", + }, + ], ], schema: z.object({ outputMint: z.string().min(32, "Invalid output mint address"), inputAmount: z.number().positive("Input amount must be positive"), inputMint: z.string().min(32, "Invalid input mint address").optional(), - slippageBps: z.number().min(0).max(10000).optional() + slippageBps: z.number().min(0).max(10000).optional(), }), handler: async (agent: SolanaAgentKit, input: Record) => { - const tx = await trade(agent, + const tx = await trade( + agent, new PublicKey(input.outputMint), input.inputAmount, input.inputMint ? new PublicKey(input.inputMint) : new PublicKey("So11111111111111111111111111111111111111112"), - input.slippageBps + input.slippageBps, ); return { @@ -74,9 +77,9 @@ const tradeAction: Action = { transaction: tx, inputAmount: input.inputAmount, inputToken: input.inputMint || "SOL", - outputToken: input.outputMint + outputToken: input.outputMint, }; - } + }, }; -export default tradeAction; \ No newline at end of file +export default tradeAction; diff --git a/src/actions/transfer.ts b/src/actions/transfer.ts index 3769481..cc8a648 100644 --- a/src/actions/transfer.ts +++ b/src/actions/transfer.ts @@ -11,7 +11,7 @@ const transferAction: Action = { "transfer funds", "send money", "send sol", - "transfer tokens" + "transfer tokens", ], description: `Transfer tokens or SOL to another address (also called as wallet address).`, examples: [ @@ -19,7 +19,7 @@ const transferAction: Action = { { input: { to: "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk", - amount: 1 + amount: 1, }, output: { status: "success", @@ -27,17 +27,18 @@ const transferAction: Action = { amount: 1, recipient: "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk", token: "SOL", - transaction: "5UfgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7" + transaction: + "5UfgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7", }, - explanation: "Transfer 1 SOL to the recipient address" - } + explanation: "Transfer 1 SOL to the recipient address", + }, ], [ { input: { to: "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk", amount: 100, - mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", }, output: { status: "success", @@ -45,22 +46,23 @@ const transferAction: Action = { amount: 100, recipient: "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk", token: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - transaction: "4VfgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7" + transaction: + "4VfgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7", }, - explanation: "Transfer 100 USDC tokens to the recipient address" - } - ] + explanation: "Transfer 100 USDC tokens to the recipient address", + }, + ], ], schema: z.object({ to: z.string().min(32, "Invalid Solana address"), amount: z.number().positive("Amount must be positive"), - mint: z.string().optional() + mint: z.string().optional(), }), handler: async (agent: SolanaAgentKit, input: Record) => { const recipient = new PublicKey(input.to); const mintAddress = input.mint ? new PublicKey(input.mint) : undefined; - const tx = await transfer(agent,recipient, input.amount, mintAddress); + const tx = await transfer(agent, recipient, input.amount, mintAddress); return { status: "success", @@ -68,9 +70,9 @@ const transferAction: Action = { amount: input.amount, recipient: input.to, token: input.mint || "SOL", - transaction: tx + transaction: tx, }; - } + }, }; -export default transferAction; \ No newline at end of file +export default transferAction; diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 4e64556..09df522 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -10,7 +10,6 @@ import { create_image } from "../tools/create_image"; import { BN } from "@coral-xyz/anchor"; import { FEE_TIERS } from "../tools"; import { toJSON } from "../utils/toJSON"; -import { wrapLangChainTool } from "../utils/langchainWrapper"; import deployTokenAction from "../actions/deployToken"; import balanceAction from "../actions/balance"; import transferAction from "../actions/transfer"; @@ -41,7 +40,7 @@ export class SolanaBalanceTool extends Tool { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -69,7 +68,7 @@ export class SolanaTransferTool extends Tool { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -97,7 +96,7 @@ export class SolanaDeployTokenTool extends Tool { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -125,7 +124,7 @@ export class SolanaDeployCollectionTool extends Tool { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -153,7 +152,7 @@ export class SolanaMintNFTTool extends Tool { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -181,7 +180,7 @@ export class SolanaTradeTool extends Tool { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } @@ -206,7 +205,7 @@ export class SolanaRequestFundsTool extends Tool { return JSON.stringify({ status: "error", message: error.message, - code: error.code || "UNKNOWN_ERROR" + code: error.code || "UNKNOWN_ERROR", }); } } diff --git a/src/types/action.ts b/src/types/action.ts index d715177..df4c0be 100644 --- a/src/types/action.ts +++ b/src/types/action.ts @@ -13,7 +13,10 @@ export interface ActionExample { /** * Handler function type for executing the action */ -export type Handler = (agent: SolanaAgentKit, input: Record) => Promise>; +export type Handler = ( + agent: SolanaAgentKit, + input: Record, +) => Promise>; /** * Main Action interface inspired by ELIZA @@ -50,4 +53,4 @@ export interface Action { * Function that executes the action */ handler: Handler; -} \ No newline at end of file +} diff --git a/src/utils/actionExecutor.ts b/src/utils/actionExecutor.ts index 0bb8f4b..e152ecb 100644 --- a/src/utils/actionExecutor.ts +++ b/src/utils/actionExecutor.ts @@ -7,9 +7,10 @@ import { actions } from "../actions"; */ export function findAction(query: string): Action | undefined { const normalizedQuery = query.toLowerCase().trim(); - return actions.find(action => - action.name.toLowerCase() === normalizedQuery || - action.similes.some(simile => simile.toLowerCase() === normalizedQuery) + return actions.find( + (action) => + action.name.toLowerCase() === normalizedQuery || + action.similes.some((simile) => simile.toLowerCase() === normalizedQuery), ); } @@ -19,18 +20,18 @@ export function findAction(query: string): Action | undefined { export async function executeAction( action: Action, agent: SolanaAgentKit, - input: Record + input: Record, ): Promise> { try { // Validate input using Zod schema const validatedInput = action.schema.parse(input); - + // Execute the action with validated input const result = await action.handler(agent, validatedInput); - + return { status: "success", - ...result + ...result, }; } catch (error: any) { // Handle Zod validation errors specially @@ -39,14 +40,14 @@ export async function executeAction( status: "error", message: "Validation error", details: error.errors, - code: "VALIDATION_ERROR" + code: "VALIDATION_ERROR", }; } - + return { status: "error", message: error.message, - code: error.code || "EXECUTION_ERROR" + code: error.code || "EXECUTION_ERROR", }; } } @@ -57,11 +58,11 @@ export async function executeAction( export function getActionExamples(action: Action): string { return action.examples .flat() - .map(example => { + .map((example) => { return `Input: ${JSON.stringify(example.input, null, 2)} Output: ${JSON.stringify(example.output, null, 2)} Explanation: ${example.explanation} ---`; }) .join("\n"); -} \ No newline at end of file +} diff --git a/src/utils/langchainWrapper.ts b/src/utils/langchainWrapper.ts deleted file mode 100644 index c7bf500..0000000 --- a/src/utils/langchainWrapper.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { Tool } from "langchain/tools"; -import { Action } from "../types/action"; -import { SolanaAgentKit } from "../agent"; -import { z } from "zod"; - -/** - * Convert a LangChain tool to our Action interface - */ -export function wrapLangChainTool(tool: Tool, agent: SolanaAgentKit): Action { - // Parse the description to extract input parameters - const inputParams = parseToolDescription(tool.description); - - return { - name: tool.name, - similes: [], // LangChain tools don't have similes - description: tool.description, - examples: [], // LangChain tools don't have examples - schema: createZodSchema(inputParams), - handler: async (agent: SolanaAgentKit, input: Record) => { - const result = await tool.call(JSON.stringify(input)); - try { - return JSON.parse(result); - } catch { - return { result }; - } - } - }; -} - -/** - * Parse tool description to extract input parameters - */ -function parseToolDescription(description: string): Array<{name: string, type: string, required: boolean}> { - const lines = description.split('\n'); - const params: Array<{name: string, type: string, required: boolean}> = []; - - let inInputsSection = false; - for (const line of lines) { - const trimmed = line.trim(); - - if (trimmed === 'Inputs:' || trimmed === 'Inputs (input is a JSON string):') { - inInputsSection = true; - continue; - } - - if (inInputsSection && trimmed) { - // Match patterns like: name: string, eg "value" (required) - const match = trimmed.match(/(\w+):\s*([\w\[\]]+)(?:,\s*eg[:\s]+"[^"]+")?(?:\s*\((required|optional)\))?/); - if (match) { - params.push({ - name: match[1], - type: match[2], - required: match[3] === 'required' - }); - } - } - } - - return params; -} - -/** - * Create a Zod schema from parsed parameters - */ -function createZodSchema(params: Array<{name: string, type: string, required: boolean}>): z.ZodType { - const schemaObj: Record> = {}; - - for (const param of params) { - let schema: z.ZodType; - - switch (param.type.toLowerCase()) { - case 'string': - schema = z.string(); - break; - case 'number': - schema = z.number(); - break; - case 'boolean': - schema = z.boolean(); - break; - case 'string[]': - schema = z.array(z.string()); - break; - default: - schema = z.any(); - } - - if (!param.required) { - schema = schema.optional(); - } - - schemaObj[param.name] = schema; - } - - return z.object(schemaObj); -} \ No newline at end of file diff --git a/test/index.ts b/test/index.ts index 5aae92e..d60f8d2 100644 --- a/test/index.ts +++ b/test/index.ts @@ -7,8 +7,6 @@ import { ChatOpenAI } from "@langchain/openai"; import * as dotenv from "dotenv"; import * as fs from "fs"; import * as readline from "readline"; -import { Tool } from "@langchain/core/tools"; -import { Action } from "../src/types/action"; dotenv.config(); From 0dea94c5b54a89ecc68d135ba7ab33f14b7d28d9 Mon Sep 17 00:00:00 2001 From: DonDuala Date: Mon, 30 Dec 2024 17:59:32 -0400 Subject: [PATCH 41/94] Add cancel and withdraw functionality --- src/agent/index.ts | 10 ++++++ src/langchain/index.ts | 66 ++++++++++++++++++++++++++++++++++ src/tools/cancel_all_orders.ts | 37 +++++++++++++++++++ src/tools/index.ts | 2 ++ src/tools/withdraw_all.ts | 37 +++++++++++++++++++ 5 files changed, 152 insertions(+) create mode 100644 src/tools/cancel_all_orders.ts create mode 100644 src/tools/withdraw_all.ts diff --git a/src/agent/index.ts b/src/agent/index.ts index 0bf36c9..e2186d9 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -22,6 +22,8 @@ import { request_faucet_funds, trade, limitOrder, + cancelAllOrders, + withdrawAll, transfer, getTokenDataByAddress, getTokenDataByTicker, @@ -162,6 +164,14 @@ export class SolanaAgentKit { return limitOrder(this, marketId, quantity, side, price); } + async cancelAllOrders(marketId: PublicKey): Promise { + return cancelAllOrders(this, marketId); + } + + async withdrawAll(marketId: PublicKey): Promise { + return withdrawAll(this, marketId); + } + async lendAssets(amount: number): Promise { return lendAsset(this, amount); } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 0160105..87b120b 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -350,6 +350,70 @@ export class SolanaLimitOrderTool extends Tool { } } +export class SolanaCancelAllOrdersTool extends Tool { + name = "solana_cancel_all_orders"; + description = `This tool can be used to cancel all orders from a Manifest market. + + Input ( input is a JSON string ): + marketId: string, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const marketId = new PublicKey(input.trim()); + const tx = await this.solanaKit.cancelAllOrders(marketId); + + return JSON.stringify({ + status: "success", + message: "Cancel orders successfully", + transaction: tx, + marketId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaWithdrawAllTool extends Tool { + name = "solana_withdraw_all"; + description = `This tool can be used to withdraw all funds from a Manifest market. + + Input ( input is a JSON string ): + marketId: string, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const marketId = new PublicKey(input.trim()); + const tx = await this.solanaKit.withdrawAll(marketId); + + return JSON.stringify({ + status: "success", + message: "Withdrew successfully", + transaction: tx, + marketId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + export class SolanaRequestFundsTool extends Tool { name = "solana_request_funds"; description = "Request SOL from Solana faucet (devnet/testnet only)"; @@ -1700,6 +1764,8 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaOpenbookCreateMarket(solanaKit), new SolanaManifestCreateMarket(solanaKit), new SolanaLimitOrderTool(solanaKit), + new SolanaCancelAllOrdersTool(solanaKit), + new SolanaWithdrawAllTool(solanaKit), new SolanaClosePostition(solanaKit), new SolanaOrcaCreateCLMM(solanaKit), new SolanaOrcaCreateSingleSideLiquidityPool(solanaKit), diff --git a/src/tools/cancel_all_orders.ts b/src/tools/cancel_all_orders.ts new file mode 100644 index 0000000..d8e3639 --- /dev/null +++ b/src/tools/cancel_all_orders.ts @@ -0,0 +1,37 @@ +import { + PublicKey, + sendAndConfirmTransaction, + Transaction, +} from "@solana/web3.js"; +import { SolanaAgentKit } from "../index"; +import { ManifestClient } from "@cks-systems/manifest-sdk"; + +/** + * Cancels all orders from Manifest + * @param agent SolanaAgentKit instance + * @param marketId Public key for the manifest market + * @returns Transaction signature + */ +export async function cancelAllOrders( + agent: SolanaAgentKit, + marketId: PublicKey, +): Promise { + try { + const mfxClient = await ManifestClient.getClientForMarket( + agent.connection, + marketId, + agent.wallet, + ); + + const cancelAllOrdersIx = await mfxClient.cancelAllIx(); + const signature = await sendAndConfirmTransaction( + agent.connection, + new Transaction().add(cancelAllOrdersIx), + [agent.wallet], + ); + + return signature; + } catch (error: any) { + throw new Error(`Cancel all orders failed: ${error.message}`); + } +} diff --git a/src/tools/index.ts b/src/tools/index.ts index b75393e..1ad70bb 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -7,6 +7,8 @@ export * from "./mint_nft"; export * from "./transfer"; export * from "./trade"; export * from "./limit_order"; +export * from "./cancel_all_orders"; +export * from "./withdraw_all"; export * from "./register_domain"; export * from "./resolve_sol_domain"; export * from "./get_primary_domain"; diff --git a/src/tools/withdraw_all.ts b/src/tools/withdraw_all.ts new file mode 100644 index 0000000..99e3bc1 --- /dev/null +++ b/src/tools/withdraw_all.ts @@ -0,0 +1,37 @@ +import { + PublicKey, + sendAndConfirmTransaction, + Transaction, +} from "@solana/web3.js"; +import { SolanaAgentKit } from "../index"; +import { ManifestClient } from "@cks-systems/manifest-sdk"; + +/** + * Withdraws all funds from Manifest + * @param agent SolanaAgentKit instance + * @param marketId Public key for the manifest market + * @returns Transaction signature + */ +export async function withdrawAll( + agent: SolanaAgentKit, + marketId: PublicKey, +): Promise { + try { + const mfxClient = await ManifestClient.getClientForMarket( + agent.connection, + marketId, + agent.wallet, + ); + + const withdrawAllIx = await mfxClient.withdrawAllIx(); + const signature = await sendAndConfirmTransaction( + agent.connection, + new Transaction().add(...withdrawAllIx), + [agent.wallet], + ); + + return signature; + } catch (error: any) { + throw new Error(`Withdraw all failed: ${error.message}`); + } +} From 1b601b839d4f5a13762a4f4d03567048e83a2a2f Mon Sep 17 00:00:00 2001 From: Fahri Bilici <28020526+FahriBilici@users.noreply.github.com> Date: Tue, 31 Dec 2024 01:17:53 +0100 Subject: [PATCH 42/94] adapting langchain to use actions --- src/actions/getAllDomainsTLDs.ts | 2 +- src/actions/getMainAllDomainsDomain.ts | 2 +- src/actions/getPrimaryDomain.ts | 2 +- src/actions/getTokenData.ts | 2 +- src/actions/pythFetchPrice.ts | 4 +- src/actions/raydiumCreateAmmV4.ts | 2 +- src/langchain/index.ts | 341 ++++++++++--------------- 7 files changed, 138 insertions(+), 217 deletions(-) diff --git a/src/actions/getAllDomainsTLDs.ts b/src/actions/getAllDomainsTLDs.ts index 34dbd19..1eae1aa 100644 --- a/src/actions/getAllDomainsTLDs.ts +++ b/src/actions/getAllDomainsTLDs.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { getAllDomainsTLDs } from "../tools"; const getAllDomainsTLDsAction: Action = { - name: "solana_get_all_domains_tlds", + name: "solana_get_all_tlds", similes: [ "list domain tlds", "get domain extensions", diff --git a/src/actions/getMainAllDomainsDomain.ts b/src/actions/getMainAllDomainsDomain.ts index ad57161..de35ee2 100644 --- a/src/actions/getMainAllDomainsDomain.ts +++ b/src/actions/getMainAllDomainsDomain.ts @@ -5,7 +5,7 @@ import { PublicKey } from "@solana/web3.js"; import { getMainAllDomainsDomain } from "../tools"; const getMainAllDomainsDomainAction: Action = { - name: "solana_get_main_all_domains_domain", + name: "solana_get_main_domain", similes: [ "get main domain", "fetch primary domain", diff --git a/src/actions/getPrimaryDomain.ts b/src/actions/getPrimaryDomain.ts index d903c04..f678a31 100644 --- a/src/actions/getPrimaryDomain.ts +++ b/src/actions/getPrimaryDomain.ts @@ -5,7 +5,7 @@ import { PublicKey } from "@solana/web3.js"; import { getPrimaryDomain } from "../tools"; const getPrimaryDomainAction: Action = { - name: "solana_get_primary_domain", + name: "solana_get_domain", similes: [ "get primary domain", "lookup primary domain", diff --git a/src/actions/getTokenData.ts b/src/actions/getTokenData.ts index 57b288b..f416a0c 100644 --- a/src/actions/getTokenData.ts +++ b/src/actions/getTokenData.ts @@ -6,7 +6,7 @@ import { JupiterTokenData } from "../types"; import { getTokenAddressFromTicker, getTokenDataByAddress } from "../tools"; const getTokenDataAction: Action = { - name: "solana_get_token_data", + name: "solana_token_data", similes: [ "get token info", "token details", diff --git a/src/actions/pythFetchPrice.ts b/src/actions/pythFetchPrice.ts index 02ff1d8..ed3d5be 100644 --- a/src/actions/pythFetchPrice.ts +++ b/src/actions/pythFetchPrice.ts @@ -37,10 +37,8 @@ const pythFetchPriceAction: Action = { }), handler: async (_agent: SolanaAgentKit, input: Record) => { try { - const priceFeedId = input.priceFeedId as string; - + const priceFeedId = input.tokenId as string; const priceStr = await pythFetchPrice(priceFeedId); - return { status: "success", price: priceStr, diff --git a/src/actions/raydiumCreateAmmV4.ts b/src/actions/raydiumCreateAmmV4.ts index 412ef18..7d4e37b 100644 --- a/src/actions/raydiumCreateAmmV4.ts +++ b/src/actions/raydiumCreateAmmV4.ts @@ -6,7 +6,7 @@ import BN from "bn.js"; import { raydiumCreateAmmV4 } from "../tools"; const raydiumCreateAmmV4Action: Action = { - name: "solana_raydium_create_amm_v4", + name: "raydium_create_ammV4", similes: [ "create raydium v4 pool", "setup raydium v4 liquidity pool", diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 09df522..75aadb8 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -8,7 +8,7 @@ import { } from "../index"; import { create_image } from "../tools/create_image"; import { BN } from "@coral-xyz/anchor"; -import { FEE_TIERS } from "../tools"; +import { FEE_TIERS, getMainAllDomainsDomain } from "../tools"; import { toJSON } from "../utils/toJSON"; import deployTokenAction from "../actions/deployToken"; import balanceAction from "../actions/balance"; @@ -17,6 +17,25 @@ import deployCollectionAction from "../actions/deployCollection"; import mintNFTAction from "../actions/mintNFT"; import tradeAction from "../actions/trade"; import requestFundsAction from "../actions/requestFunds"; +import fetchPriceAction from "../actions/fetchPrice"; +import registerDomainAction from "../actions/registerDomain"; +import resolveDomainAction from "../actions/resolveDomain"; +import getPrimaryDomainAction from "../actions/getPrimaryDomain"; +import launchPumpfunTokenAction from "../actions/launchPumpfunToken"; +import createImageAction from "../actions/createImage"; +import lendAssetAction from "../actions/lendAsset"; +import getTPSAction from "../actions/getTPS"; +import createOrcaSingleSidedWhirlpoolAction from "../actions/createOrcaSingleSidedWhirlpool"; +import raydiumCreateCpmmAction from "../actions/raydiumCreateCpmm"; +import pythFetchPriceAction from "../actions/pythFetchPrice"; +import getOwnedDomainsForTLDAction from "../actions/getOwnedDomainsForTLD"; +import createGibworkTaskAction from "../actions/createGibworkTask"; +import getTokenDataAction from "../actions/getTokenData"; +import stakeWithJupAction from "../actions/stakeWithJup"; +import resolveSolDomainAction from "../actions/resolveSolDomain"; +import getAllDomainsTLDsAction from "../actions/getAllDomainsTLDs"; +import getMainAllDomainsDomainAction from "../actions/getMainAllDomainsDomain"; +import raydiumCreateAmmV4Action from "../actions/raydiumCreateAmmV4"; export class SolanaBalanceTool extends Tool { private action = balanceAction; @@ -212,13 +231,9 @@ export class SolanaRequestFundsTool extends Tool { } export class SolanaRegisterDomainTool extends Tool { - name = "solana_register_domain"; - description = `Register a .sol domain name for your wallet. - - Inputs: - name: string, eg "pumpfun.sol" (required) - spaceKB: number, eg 1 (optional, default is 1) - `; + private action = registerDomainAction + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -241,10 +256,7 @@ export class SolanaRegisterDomainTool extends Tool { const parsedInput = toJSON(input); this.validateInput(parsedInput); - const tx = await this.solanaKit.registerDomain( - parsedInput.name, - parsedInput.spaceKB || 1, - ); + const tx = await this.action.handler(this.solanaKit, parsedInput); return JSON.stringify({ status: "success", @@ -264,14 +276,9 @@ export class SolanaRegisterDomainTool extends Tool { } export class SolanaResolveDomainTool extends Tool { - name = "solana_resolve_domain"; - description = `Resolve ONLY .sol domain names to a Solana PublicKey. - This tool is exclusively for .sol domains. - DO NOT use this for other domain types like .blink, .bonk, etc. - - Inputs: - domain: string, eg "pumpfun.sol" (required) - `; + private action = resolveSolDomainAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -279,8 +286,8 @@ export class SolanaResolveDomainTool extends Tool { protected async _call(input: string): Promise { try { - const domain = input.trim(); - const publicKey = await this.solanaKit.resolveSolDomain(domain); + const domain = { domain: input.trim() }; + const publicKey = await this.action.handler(this.solanaKit, domain); return JSON.stringify({ status: "success", @@ -298,12 +305,9 @@ export class SolanaResolveDomainTool extends Tool { } export class SolanaGetDomainTool extends Tool { - name = "solana_get_domain"; - description = `Retrieve the .sol domain associated for a given account address. - - Inputs: - account: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required) - `; + private action = getPrimaryDomainAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -343,18 +347,10 @@ export class SolanaGetWalletAddressTool extends Tool { } export class SolanaPumpfunTokenLaunchTool extends Tool { - name = "solana_launch_pumpfun_token"; + private action = launchPumpfunTokenAction; + name = this.action.name; - description = `This tool can be used to launch a token on Pump.fun, - do not use this tool for any other purpose, or for creating SPL tokens. - If the user asks you to chose the parameters, you should generate valid values. - For generating the image, you can use the solana_create_image tool. - - Inputs: - tokenName: string, eg "PumpFun Token", - tokenTicker: string, eg "PUMP", - description: string, eg "PumpFun Token is a token on the Solana blockchain", - imageUrl: string, eg "https://i.imgur.com/UFm07Np_d.png`; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -390,17 +386,9 @@ export class SolanaPumpfunTokenLaunchTool extends Tool { this.validateInput(parsedInput); // Launch token with validated input - await this.solanaKit.launchPumpFunToken( - parsedInput.tokenName, - parsedInput.tokenTicker, - parsedInput.description, - parsedInput.imageUrl, - { - twitter: parsedInput.twitter, - telegram: parsedInput.telegram, - website: parsedInput.website, - initialLiquiditySOL: parsedInput.initialLiquiditySOL, - }, + await this.action.handler( + this.solanaKit, + parsedInput, ); return JSON.stringify({ @@ -420,9 +408,9 @@ export class SolanaPumpfunTokenLaunchTool extends Tool { } export class SolanaCreateImageTool extends Tool { - name = "solana_create_image"; - description = - "Create an image using OpenAI's DALL-E. Input should be a string prompt for the image."; + private action = createImageAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -437,7 +425,8 @@ export class SolanaCreateImageTool extends Tool { protected async _call(input: string): Promise { try { this.validateInput(input); - const result = await create_image(this.solanaKit, input.trim()); + const parsedInput = JSON.parse(input); + const result = await this.action.handler(this.solanaKit, parsedInput); return JSON.stringify({ status: "success", @@ -455,11 +444,9 @@ export class SolanaCreateImageTool extends Tool { } export class SolanaLendAssetTool extends Tool { - name = "solana_lend_asset"; - description = `Lend idle USDC for yield using Lulo. ( only USDC is supported ) - - Inputs (input is a json string): - amount: number, eg 1, 0.01 (required)`; + private action = lendAssetAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -469,7 +456,7 @@ export class SolanaLendAssetTool extends Tool { try { const amount = JSON.parse(input).amount || input; - const tx = await this.solanaKit.lendAssets(amount); + const tx = await this.action.handler(this.solanaKit, { amount }); return JSON.stringify({ status: "success", @@ -488,8 +475,9 @@ export class SolanaLendAssetTool extends Tool { } export class SolanaTPSCalculatorTool extends Tool { - name = "solana_get_tps"; - description = "Get the current TPS of the Solana network"; + private action = getTPSAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -497,7 +485,7 @@ export class SolanaTPSCalculatorTool extends Tool { async _call(_input: string): Promise { try { - const tps = await this.solanaKit.getTPS(); + const tps = await this.action.handler(this.solanaKit, {}); return `Solana (mainnet-beta) current transactions per second: ${tps}`; } catch (error: any) { return `Error fetching TPS: ${error.message}`; @@ -506,11 +494,9 @@ export class SolanaTPSCalculatorTool extends Tool { } export class SolanaStakeTool extends Tool { - name = "solana_stake"; - description = `This tool can be used to stake your SOL (Solana), also called as SOL staking or liquid staking. - - Inputs ( input is a JSON string ): - amount: number, eg 1 or 0.01 (required)`; + private action = stakeWithJupAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -520,7 +506,7 @@ export class SolanaStakeTool extends Tool { try { const parsedInput = JSON.parse(input) || Number(input); - const tx = await this.solanaKit.stake(parsedInput.amount); + const tx = await this.action.handler(this.solanaKit, parsedInput); return JSON.stringify({ status: "success", @@ -542,11 +528,9 @@ export class SolanaStakeTool extends Tool { * Tool to fetch the price of a token in USDC */ export class SolanaFetchPriceTool extends Tool { - name = "solana_fetch_price"; - description = `Fetch the price of a given token in USDC. - - Inputs: - - tokenId: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"`; + private action = fetchPriceAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -554,7 +538,10 @@ export class SolanaFetchPriceTool extends Tool { async _call(input: string): Promise { try { - const price = await this.solanaKit.fetchTokenPrice(input.trim()); + + const parsedInput = { tokenId: input.trim() }; + const price = await this.action.handler(this.solanaKit, parsedInput); + //const price = await this.solanaKit.fetchTokenPrice(input.trim()); return JSON.stringify({ status: "success", tokenId: input.trim(), @@ -571,11 +558,9 @@ export class SolanaFetchPriceTool extends Tool { } export class SolanaTokenDataTool extends Tool { - name = "solana_token_data"; - description = `Get the token data for a given token mint address - - Inputs: mintAddress is required. - mintAddress: string, eg "So11111111111111111111111111111111111111112" (required)`; + private action = getTokenDataAction + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -583,9 +568,9 @@ export class SolanaTokenDataTool extends Tool { protected async _call(input: string): Promise { try { - const parsedInput = input.trim(); - const tokenData = await this.solanaKit.getTokenDataByAddress(parsedInput); + const parsedInput = JSON.parse(input); + const tokenData = await this.action.handler(this.solanaKit, parsedInput); return JSON.stringify({ status: "success", @@ -605,8 +590,8 @@ export class SolanaTokenDataByTickerTool extends Tool { name = "solana_token_data_by_ticker"; description = `Get the token data for a given token ticker - Inputs: ticker is required. - ticker: string, eg "USDC" (required)`; +Inputs: ticker is required. + ticker: string, eg "USDC"(required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -632,15 +617,15 @@ export class SolanaTokenDataByTickerTool extends Tool { export class SolanaCompressedAirdropTool extends Tool { name = "solana_compressed_airdrop"; - description = `Airdrop SPL tokens with ZK Compression (also called as airdropping tokens) + description = `Airdrop SPL tokens with ZK Compression(also called as airdropping tokens) - Inputs (input is a JSON string): - mintAddress: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" (required) - amount: number, the amount of tokens to airdrop per recipient, e.g., 42 (required) - decimals: number, the decimals of the token, e.g., 6 (required) - recipients: string[], the recipient addresses, e.g., ["1nc1nerator11111111111111111111111111111111"] (required) - priorityFeeInLamports: number, the priority fee in lamports. Default is 30_000. (optional) - shouldLog: boolean, whether to log progress to stdout. Default is false. (optional)`; +Inputs(input is a JSON string): +mintAddress: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"(required) +amount: number, the amount of tokens to airdrop per recipient, e.g., 42(required) +decimals: number, the decimals of the token, e.g., 6(required) +recipients: string[], the recipient addresses, e.g., ["1nc1nerator11111111111111111111111111111111"](required) +priorityFeeInLamports: number, the priority fee in lamports.Default is 30_000.(optional) +shouldLog: boolean, whether to log progress to stdout.Default is false. (optional)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -675,16 +660,9 @@ export class SolanaCompressedAirdropTool extends Tool { } export class SolanaCreateSingleSidedWhirlpoolTool extends Tool { - name = "create_orca_single_sided_whirlpool"; - description = `Create a single-sided Whirlpool with liquidity. - - Inputs (input is a JSON string): - - depositTokenAmount: number, eg: 1000000000 (required, in units of deposit token including decimals) - - depositTokenMint: string, eg: "DepositTokenMintAddress" (required, mint address of deposit token) - - otherTokenMint: string, eg: "OtherTokenMintAddress" (required, mint address of other token) - - initialPrice: number, eg: 0.001 (required, initial price of deposit token in terms of other token) - - maxPrice: number, eg: 5.0 (required, maximum price at which liquidity is added) - - feeTier: number, eg: 0.30 (required, fee tier for the pool)`; + private action = createOrcaSingleSidedWhirlpoolAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -702,21 +680,20 @@ export class SolanaCreateSingleSidedWhirlpoolTool extends Tool { if (!feeTier || !(feeTier in FEE_TIERS)) { throw new Error( - `Invalid feeTier. Available options: ${Object.keys(FEE_TIERS).join( + `Invalid feeTier.Available options: ${Object.keys(FEE_TIERS).join( ", ", - )}`, + ) + } `, ); } - - const txId = await this.solanaKit.createOrcaSingleSidedWhirlpool( + const txId = await this.action.handler(this.solanaKit, { depositTokenAmount, depositTokenMint, otherTokenMint, initialPrice, maxPrice, feeTier, - ); - + }); return JSON.stringify({ status: "success", message: "Single-sided Whirlpool created successfully", @@ -733,15 +710,9 @@ export class SolanaCreateSingleSidedWhirlpoolTool extends Tool { } export class SolanaRaydiumCreateAmmV4 extends Tool { - name = "raydium_create_ammV4"; - description = `Raydium's Legacy AMM that requiers an OpenBook marketID - - Inputs (input is a json string): - marketId: string (required) - baseAmount: number(int), eg: 111111 (required) - quoteAmount: number(int), eg: 111111 (required) - startTime: number(seconds), eg: now number or zero (required) - `; + private action = raydiumCreateAmmV4Action; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -751,12 +722,7 @@ export class SolanaRaydiumCreateAmmV4 extends Tool { try { const inputFormat = JSON.parse(input); - const tx = await this.solanaKit.raydiumCreateAmmV4( - new PublicKey(inputFormat.marketId), - new BN(inputFormat.baseAmount), - new BN(inputFormat.quoteAmount), - new BN(inputFormat.startTime), - ); + const tx = await this.action.handler(this.solanaKit, inputFormat); return JSON.stringify({ status: "success", @@ -777,12 +743,12 @@ export class SolanaRaydiumCreateClmm extends Tool { name = "raydium_create_clmm"; description = `Concentrated liquidity market maker, custom liquidity ranges, increased capital efficiency - Inputs (input is a json string): - mint1: string (required) - mint2: string (required) - configId: string (required) stores pool info, id, index, protocolFeeRate, tradeFeeRate, tickSpacing, fundFeeRate - initialPrice: number, eg: 123.12 (required) - startTime: number(seconds), eg: now number or zero (required) +Inputs(input is a json string): +mint1: string(required) +mint2: string(required) +configId: string(required) stores pool info, id, index, protocolFeeRate, tradeFeeRate, tickSpacing, fundFeeRate +initialPrice: number, eg: 123.12(required) +startTime: number(seconds), eg: now number or zero(required) `; constructor(private solanaKit: SolanaAgentKit) { @@ -819,17 +785,9 @@ export class SolanaRaydiumCreateClmm extends Tool { } export class SolanaRaydiumCreateCpmm extends Tool { - name = "raydium_create_cpmm"; - description = `Raydium's newest CPMM, does not require marketID, supports Token 2022 standard - - Inputs (input is a json string): - mint1: string (required) - mint2: string (required) - configId: string (required), stores pool info, index, protocolFeeRate, tradeFeeRate, fundFeeRate, createPoolFee - mintAAmount: number(int), eg: 1111 (required) - mintBAmount: number(int), eg: 2222 (required) - startTime: number(seconds), eg: now number or zero (required) - `; + private action = raydiumCreateCpmmAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -838,18 +796,7 @@ export class SolanaRaydiumCreateCpmm extends Tool { async _call(input: string): Promise { try { const inputFormat = JSON.parse(input); - - const tx = await this.solanaKit.raydiumCreateCpmm( - new PublicKey(inputFormat.mint1), - new PublicKey(inputFormat.mint2), - - new PublicKey(inputFormat.configId), - - new BN(inputFormat.mintAAmount), - new BN(inputFormat.mintBAmount), - - new BN(inputFormat.startTime), - ); + const tx = await this.action.handler(this.solanaKit, inputFormat); return JSON.stringify({ status: "success", @@ -870,11 +817,11 @@ export class SolanaOpenbookCreateMarket extends Tool { name = "solana_openbook_create_market"; description = `Openbook marketId, required for ammv4 - Inputs (input is a json string): - baseMint: string (required) - quoteMint: string (required) - lotSize: number (required) - tickSize: number (required) + Inputs(input is a json string): + baseMint: string(required) +quoteMint: string(required) +lotSize: number(required) +tickSize: number(required) `; constructor(private solanaKit: SolanaAgentKit) { @@ -909,11 +856,9 @@ export class SolanaOpenbookCreateMarket extends Tool { } export class SolanaPythFetchPrice extends Tool { - name = "solana_pyth_fetch_price"; - description = `Fetch the price of a given price feed from Pyth's Hermes service - - Inputs: - priceFeedID: string, the price feed ID, e.g., "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43" for BTC/USD`; + private action = pythFetchPriceAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -921,11 +866,12 @@ export class SolanaPythFetchPrice extends Tool { async _call(input: string): Promise { try { - const price = await this.solanaKit.pythFetchPrice(input); + const parsedInput = { tokenId: input.trim() }; + const price = await this.action.handler(this.solanaKit, parsedInput); const response: PythFetchPriceResponse = { status: "success", priceFeedID: input, - price: price, + price: price.price, }; return JSON.stringify(response); } catch (error: any) { @@ -942,12 +888,12 @@ export class SolanaPythFetchPrice extends Tool { export class SolanaResolveAllDomainsTool extends Tool { name = "solana_resolve_all_domains"; - description = `Resolve domain names to a public key for ALL domain types EXCEPT .sol domains. - Use this for domains like .blink, .bonk, etc. - DO NOT use this for .sol domains (use solana_resolve_domain instead). + description = `Resolve domain names to a public key for ALL domain types EXCEPT.sol domains. + Use this for domains like.blink, .bonk, etc. + DO NOT use this for .sol domains(use solana_resolve_domain instead). Input: - domain: string, eg "mydomain.blink" or "mydomain.bonk" (required)`; + domain: string, eg "mydomain.blink" or "mydomain.bonk"(required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -981,11 +927,9 @@ export class SolanaResolveAllDomainsTool extends Tool { } export class SolanaGetOwnedDomains extends Tool { - name = "solana_get_owned_domains"; - description = `Get all domains owned by a specific wallet address. - - Inputs: - owner: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required)`; + private action = getOwnedDomainsForTLDAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -994,7 +938,7 @@ export class SolanaGetOwnedDomains extends Tool { async _call(input: string): Promise { try { const ownerPubkey = new PublicKey(input.trim()); - const domains = await this.solanaKit.getOwnedAllDomains(ownerPubkey); + const domains = await this.action.handler(this.solanaKit, ownerPubkey); return JSON.stringify({ status: "success", @@ -1015,8 +959,8 @@ export class SolanaGetOwnedTldDomains extends Tool { name = "solana_get_owned_tld_domains"; description = `Get all domains owned by the agent's wallet for a specific TLD. - Inputs: - tld: string, eg "bonk" (required)`; +Inputs: +tld: string, eg "bonk"(required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -1042,8 +986,9 @@ export class SolanaGetOwnedTldDomains extends Tool { } export class SolanaGetAllTlds extends Tool { - name = "solana_get_all_tlds"; - description = `Get all active top-level domains (TLDs) in the AllDomains Name Service`; + private action = getAllDomainsTLDsAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -1051,7 +996,7 @@ export class SolanaGetAllTlds extends Tool { async _call(): Promise { try { - const tlds = await this.solanaKit.getAllDomainsTLDs(); + const tlds = await this.action.handler(this.solanaKit, {}); return JSON.stringify({ status: "success", @@ -1069,12 +1014,9 @@ export class SolanaGetAllTlds extends Tool { } export class SolanaGetMainDomain extends Tool { - name = "solana_get_main_domain"; - description = `Get the main/favorite domain for a given wallet address. - - Inputs: - owner: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required)`; - + private action = getMainAllDomainsDomainAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -1083,7 +1025,7 @@ export class SolanaGetMainDomain extends Tool { try { const ownerPubkey = new PublicKey(input.trim()); const mainDomain = - await this.solanaKit.getMainAllDomainsDomain(ownerPubkey); + await this.action.handler(this.solanaKit, ownerPubkey); return JSON.stringify({ status: "success", @@ -1101,19 +1043,9 @@ export class SolanaGetMainDomain extends Tool { } export class SolanaCreateGibworkTask extends Tool { - name = "create_gibwork_task"; - description = `Create a task on Gibwork. - - Inputs (input is a JSON string): - title: string, title of the task (required) - content: string, description of the task (required) - requirements: string, requirements to complete the task (required) - tags: string[], list of tags associated with the task (required) - payer: string, payer address (optional, defaults to agent wallet) - tokenMintAddress: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" (required) - amount: number, payment amount (required) - `; - + private action = createGibworkTaskAction; + name = this.action.name; + description = this.action.description; constructor(private solanaSdk: SolanaAgentKit) { super(); } @@ -1121,16 +1053,7 @@ export class SolanaCreateGibworkTask extends Tool { protected async _call(input: string): Promise { try { const parsedInput = JSON.parse(input); - - const taskData = await this.solanaSdk.createGibworkTask( - parsedInput.title, - parsedInput.content, - parsedInput.requirements, - parsedInput.tags, - parsedInput.tokenMintAddress, - parsedInput.amount, - parsedInput.payer, - ); + const taskData = await this.action.handler(this.solanaSdk, parsedInput); const response: GibworkCreateTaskReponse = { status: "success", From 7429943942d9ade0faf9149d912e8423481c9b77 Mon Sep 17 00:00:00 2001 From: YCrydev <92126329+YCrydev@users.noreply.github.com> Date: Tue, 31 Dec 2024 02:56:21 +0100 Subject: [PATCH 43/94] update --- .env.example | 2 ++ src/agent/index.ts | 4 +--- src/tools/trade.ts | 22 +++++++++++++++------- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/.env.example b/.env.example index 1f3564b..14e24b1 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,5 @@ OPENAI_API_KEY= RPC_URL= SOLANA_PRIVATE_KEY= +JUP_REFERRAL_ACCOUNT= +JUP_FEE_BPS= \ No newline at end of file diff --git a/src/agent/index.ts b/src/agent/index.ts index 3245dec..bf89861 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -133,10 +133,8 @@ export class SolanaAgentKit { inputAmount: number, inputMint?: PublicKey, slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS, - jupReferralAccount?:PublicKey, - jupFeeBps?:number, ): Promise { - return trade(this, outputMint, inputAmount, inputMint, slippageBps, jupReferralAccount ,jupFeeBps); + return trade(this, outputMint, inputAmount, inputMint, slippageBps); } async lendAssets(amount: number): Promise { diff --git a/src/tools/trade.ts b/src/tools/trade.ts index c7fc882..2664cfe 100644 --- a/src/tools/trade.ts +++ b/src/tools/trade.ts @@ -10,7 +10,10 @@ import { JUP_API, JUP_REFERRAL_ADDRESS, } from "../constants"; +import dotenv from "dotenv"; +// Load environment variables +dotenv.config(); /** * Swap tokens using Jupiter Exchange * @param agent SolanaAgentKit instance @@ -18,18 +21,23 @@ import { * @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%) - * @param jupReferralAccount Jup Refferral Account, to earn fees on swaps - * @param jupFeeBps Jup Refferral Fee, to earn fees on swaps (default: 100 = 1%) * @returns Transaction signature */ + +// Get Jupiter fee and referral account from environment variables +const JUP_FEE_BPS = process.env.JUP_FEE_BPS + ? parseInt(process.env.JUP_FEE_BPS) + : ""; +const JUP_REFERRAL_ACCOUNT = process.env.JUP_REFERRAL_ACCOUNT + ? new PublicKey(process.env.JUP_REFERRAL_ACCOUNT) + : ""; + export async function trade( agent: SolanaAgentKit, outputMint: PublicKey, inputAmount: number, inputMint: PublicKey = TOKENS.USDC, slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS, - jupReferralAccount?: PublicKey, - jupFeeBps?: number, ): Promise { try { const quoteResponse = await ( @@ -41,17 +49,17 @@ export async function trade( `&slippageBps=${slippageBps}` + `&onlyDirectRoutes=true` + `&maxAccounts=20` + - `${jupFeeBps ? `&platformFeeBps=${jupFeeBps}` : ""}`, + `${JUP_FEE_BPS ? `&platformFeeBps=${JUP_FEE_BPS}` : ""}`, ) ).json(); // Get serialized transaction let feeAccount; - if (jupReferralAccount) { + if (JUP_REFERRAL_ACCOUNT) { [feeAccount] = await PublicKey.findProgramAddressSync( [ Buffer.from("referral_ata"), - jupReferralAccount.toBuffer(), + new PublicKey(JUP_REFERRAL_ACCOUNT).toBuffer(), TOKENS.SOL.toBuffer(), ], new PublicKey(JUP_REFERRAL_ADDRESS), From df386a8cbd3e5245307bdf53047e0874ab8de80c Mon Sep 17 00:00:00 2001 From: krill Date: Tue, 31 Dec 2024 12:02:55 +0900 Subject: [PATCH 44/94] :memo: fix typos --- README.md | 4 ++-- examples/tg-bot-starter/README.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c917201..78259f9 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ Anyone - whether an SF-based AI researcher or a crypto-native builder - can brin - Launch on Pump via PumpPortal - Raydium pool creation (CPMM, CLMM, AMMv4) - Orca Whirlpool integration - - Meteora Dynamic AMM, DLMM Pool, and Alpga Vault + - Meteora Dynamic AMM, DLMM Pool, and Alpha Vault - Openbook market creation - Register and Resolve SNS - Jito Bundles @@ -55,7 +55,7 @@ Anyone - whether an SF-based AI researcher or a crypto-native builder - can brin - Register/resolve Alldomains - **Solana Blinks** - - Lending by Lulon (Best APR for USDC) + - Lending by Lulo (Best APR for USDC) - Send Arcade Games - JupSOL staking diff --git a/examples/tg-bot-starter/README.md b/examples/tg-bot-starter/README.md index 3d54e91..2c0e760 100644 --- a/examples/tg-bot-starter/README.md +++ b/examples/tg-bot-starter/README.md @@ -20,5 +20,5 @@ You can check [here](https://help.zoho.com/portal/en/kb/desk/support-channels/in - You can host it on Vercel too as we have used NextJs in this. - Once the URL is set successfully, you will see this ``` {"ok":true,"result":true,"description":"Webhook was set"} ``` -Done!!! Congrtulations you just hosted Solana Agent Kit on a Telegram bot. +Done!!! Congratulations you just hosted Solana Agent Kit on a Telegram bot. From 0e6b78b971ab7b56b18188cd584cf8e67854f095 Mon Sep 17 00:00:00 2001 From: krill Date: Tue, 31 Dec 2024 12:04:11 +0900 Subject: [PATCH 45/94] :truck: fix more typos; rename example --- .../{persistance-agent => persistent-agent}/.env.example | 0 .../{persistance-agent => persistent-agent}/README.md | 8 ++++---- examples/{persistance-agent => persistent-agent}/index.ts | 0 .../{persistance-agent => persistent-agent}/package.json | 0 .../pnpm-lock.yaml | 0 5 files changed, 4 insertions(+), 4 deletions(-) rename examples/{persistance-agent => persistent-agent}/.env.example (100%) rename examples/{persistance-agent => persistent-agent}/README.md (92%) rename examples/{persistance-agent => persistent-agent}/index.ts (100%) rename examples/{persistance-agent => persistent-agent}/package.json (100%) rename examples/{persistance-agent => persistent-agent}/pnpm-lock.yaml (100%) diff --git a/examples/persistance-agent/.env.example b/examples/persistent-agent/.env.example similarity index 100% rename from examples/persistance-agent/.env.example rename to examples/persistent-agent/.env.example diff --git a/examples/persistance-agent/README.md b/examples/persistent-agent/README.md similarity index 92% rename from examples/persistance-agent/README.md rename to examples/persistent-agent/README.md index e451c29..1ba4d37 100644 --- a/examples/persistance-agent/README.md +++ b/examples/persistent-agent/README.md @@ -15,7 +15,7 @@ To use this feature, ensure you have the following: 1. **PostgreSQL Database URL**: Create and host ur PostgreSQL databse and enter the URL. It will be of the format "postgresql://user:password@localhost:5432/db" -## Before applying persistance +## Without persistence ``` Available modes: 1. chat @@ -27,7 +27,7 @@ Starting chat mode... Type 'exit' to end. Prompt: i am arpit Hello Arpit! How can I assist you today? Prompt: ^С -® arpitsingh Mac persistance-agent & ts-node index.ts +® arpitsingh Mac persistent-agent & ts-node index.ts Starting Agent... Available modes: 1. chat @@ -39,7 +39,7 @@ Starting chat mode... Type 'exit' to end. Prompt: do u know my name I don't know your name yet. If you'd like, you can share it. ``` -## After applying persistence +## With persistence ``` Available modes: 1. chat @@ -51,7 +51,7 @@ Starting chat mode... Type 'exit' to end. Prompt: i am arpit Hello Arpit! How can I assist you today? Prompt: ^С -® arpitsingh Mac persistance-agent & ts-node index.ts +® arpitsingh Mac persistent-agent & ts-node index.ts Starting Agent... Available modes: 1. chat diff --git a/examples/persistance-agent/index.ts b/examples/persistent-agent/index.ts similarity index 100% rename from examples/persistance-agent/index.ts rename to examples/persistent-agent/index.ts diff --git a/examples/persistance-agent/package.json b/examples/persistent-agent/package.json similarity index 100% rename from examples/persistance-agent/package.json rename to examples/persistent-agent/package.json diff --git a/examples/persistance-agent/pnpm-lock.yaml b/examples/persistent-agent/pnpm-lock.yaml similarity index 100% rename from examples/persistance-agent/pnpm-lock.yaml rename to examples/persistent-agent/pnpm-lock.yaml From 38a88239caba4a439f49fc61ccadbf8d33d0a225 Mon Sep 17 00:00:00 2001 From: krill Date: Tue, 31 Dec 2024 12:26:17 +0900 Subject: [PATCH 46/94] :necktie: fix typo in func name --- src/langchain/index.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index abd7f88..4f10a9c 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -796,7 +796,7 @@ export class SolanaCompressedAirdropTool extends Tool { } } -export class SolanaClosePostition extends Tool { +export class SolanaClosePosition extends Tool { name = "orca_close_position"; description = `Closes an existing liquidity position in an Orca Whirlpool. This function fetches the position details using the provided mint address and closes the position with a 1% slippage. @@ -1644,7 +1644,6 @@ export class SolanaListNFTForSaleTool extends Tool { } } - export class SolanaCancelNFTListingTool extends Tool { name = "solana_cancel_nft_listing"; description = `Cancel an NFT listing on Tensor Trade. @@ -1706,7 +1705,7 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaRaydiumCreateClmm(solanaKit), new SolanaRaydiumCreateCpmm(solanaKit), new SolanaOpenbookCreateMarket(solanaKit), - new SolanaClosePostition(solanaKit), + new SolanaClosePosition(solanaKit), new SolanaOrcaCreateCLMM(solanaKit), new SolanaOrcaCreateSingleSideLiquidityPool(solanaKit), new SolanaOrcaFetchPositions(solanaKit), From fcdf174ce87196323e177cf4559172262daa854d Mon Sep 17 00:00:00 2001 From: krill Date: Tue, 31 Dec 2024 12:25:24 +0900 Subject: [PATCH 47/94] :memo: fix some more typos and grammar --- src/langchain/index.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 4f10a9c..e044c3b 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -46,7 +46,7 @@ export class SolanaBalanceTool extends Tool { export class SolanaBalanceOtherTool extends Tool { name = "solana_balance_other"; - description = `Get the balance of a Solana wallet or token account different from the agent's wallet. + description = `Get the balance of a Solana wallet or token account which is different from the agent's wallet. If no tokenAddress is provided, the SOL balance of the wallet will be returned. @@ -1078,7 +1078,7 @@ export class SolanaOrcaOpenSingleSidedPosition extends Tool { export class SolanaRaydiumCreateAmmV4 extends Tool { name = "raydium_create_ammV4"; - description = `Raydium's Legacy AMM that requiers an OpenBook marketID + description = `Raydium's Legacy AMM that requires an OpenBook marketID Inputs (input is a json string): marketId: string (required) @@ -1104,7 +1104,7 @@ export class SolanaRaydiumCreateAmmV4 extends Tool { return JSON.stringify({ status: "success", - message: "Create raydium amm v4 pool successfully", + message: "Raydium amm v4 pool created successfully", transaction: tx, }); } catch (error: any) { @@ -1149,7 +1149,7 @@ export class SolanaRaydiumCreateClmm extends Tool { return JSON.stringify({ status: "success", - message: "Create raydium clmm pool successfully", + message: "Raydium clmm pool created successfully", transaction: tx, }); } catch (error: any) { @@ -1197,7 +1197,7 @@ export class SolanaRaydiumCreateCpmm extends Tool { return JSON.stringify({ status: "success", - message: "Create raydium cpmm pool successfully", + message: "Raydium cpmm pool created successfully", transaction: tx, }); } catch (error: any) { @@ -1239,7 +1239,7 @@ export class SolanaOpenbookCreateMarket extends Tool { return JSON.stringify({ status: "success", - message: "Create openbook market successfully", + message: "Openbook market created successfully", transaction: tx, }); } catch (error: any) { From a20894807bbcdd4a4529a0bd38425d47f6c14aba Mon Sep 17 00:00:00 2001 From: YCrydev <92126329+YCrydev@users.noreply.github.com> Date: Tue, 31 Dec 2024 11:38:13 +0100 Subject: [PATCH 48/94] push --- src/agent/index.ts | 5 +---- src/constants/index.ts | 5 +++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/agent/index.ts b/src/agent/index.ts index c9958a2..0ee9e62 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -414,10 +414,7 @@ export class SolanaAgentKit { return create_TipLink(this, amount, splmintAddress); } - async tensorListNFT( - nftMint: PublicKey, - price: number, - ): Promise { + async tensorListNFT(nftMint: PublicKey, price: number): Promise { return listNFTForSale(this, nftMint, price); } diff --git a/src/constants/index.ts b/src/constants/index.ts index e2fef12..14eb65b 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -22,11 +22,12 @@ export const TOKENS = { export const DEFAULT_OPTIONS = { SLIPPAGE_BPS: 300, TOKEN_DECIMALS: 9, - RERERRAL_FEE:200, + RERERRAL_FEE: 200, } as const; /** * Jupiter API URL */ export const JUP_API = "https://quote-api.jup.ag/v6"; -export const JUP_REFERRAL_ADDRESS = 'REFER4ZgmyYx9c6He5XfaTMiGfdLwRnkV4RPp9t9iF3' +export const JUP_REFERRAL_ADDRESS = + "REFER4ZgmyYx9c6He5XfaTMiGfdLwRnkV4RPp9t9iF3"; From 5048f19c50bab6a46b793474c54b4737e999f0e7 Mon Sep 17 00:00:00 2001 From: aryan Date: Tue, 31 Dec 2024 16:28:07 +0530 Subject: [PATCH 49/94] feat: config --- .env.example | 4 +- pnpm-lock.yaml | 590 ++++++++++++++++++++++++++++++++++++++ src/agent/index.ts | 7 +- src/tools/create_image.ts | 4 +- src/tools/tensor_trade.ts | 2 +- src/tools/trade.ts | 21 +- src/types/index.ts | 6 + test/index.ts | 4 +- 8 files changed, 612 insertions(+), 26 deletions(-) diff --git a/.env.example b/.env.example index 14e24b1..e8004fd 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,5 @@ OPENAI_API_KEY= RPC_URL= SOLANA_PRIVATE_KEY= -JUP_REFERRAL_ACCOUNT= -JUP_FEE_BPS= \ No newline at end of file +JUPITER_REFERRAL_ACCOUNT= +JUPITER_FEE_BPS= \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e7e4508..f0c6ab5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,6 +71,9 @@ importers: '@solana/web3.js': specifier: ^1.98.0 version: 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@tensor-oss/tensorswap-sdk': + specifier: ^4.5.0 + version: 4.5.0(bufferutil@4.0.8)(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.8)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10) @@ -155,10 +158,20 @@ packages: '@cfworker/json-schema@4.0.3': resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} + '@coral-xyz/anchor@0.26.0': + resolution: {integrity: sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==} + engines: {node: '>=11'} + '@coral-xyz/anchor@0.29.0': resolution: {integrity: sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==} engines: {node: '>=11'} + '@coral-xyz/borsh@0.26.0': + resolution: {integrity: sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==} + engines: {node: '>=10'} + peerDependencies: + '@solana/web3.js': ^1.68.0 + '@coral-xyz/borsh@0.29.0': resolution: {integrity: sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==} engines: {node: '>=10'} @@ -187,6 +200,15 @@ packages: resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@ethereumjs/rlp@4.0.1': + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + + '@ethereumjs/util@8.1.0': + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + '@ethersproject/bytes@5.7.0': resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} @@ -267,18 +289,42 @@ packages: '@lightprotocol/stateless.js@0.17.1': resolution: {integrity: sha512-EjId1n33A6dBwpce33Wsa/fs/CDKtMtRrkxbApH0alXrnEXmbW6QhIViXOrKYXjZ4uJQM1xsBtsKe0vqJ4nbtQ==} + '@metaplex-foundation/beet-solana@0.3.1': + resolution: {integrity: sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g==} + + '@metaplex-foundation/beet-solana@0.4.0': + resolution: {integrity: sha512-B1L94N3ZGMo53b0uOSoznbuM5GBNJ8LwSeznxBxJ+OThvfHQ4B5oMUqb+0zdLRfkKGS7Q6tpHK9P+QK0j3w2cQ==} + '@metaplex-foundation/beet-solana@0.4.1': resolution: {integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==} + '@metaplex-foundation/beet@0.6.1': + resolution: {integrity: sha512-OYgnijLFzw0cdUlRKH5POp0unQECPOW9muJ2X3QIVyak5G6I6l/rKo72sICgPLIFKdmsi2jmnkuLY7wp14iXdw==} + + '@metaplex-foundation/beet@0.7.1': + resolution: {integrity: sha512-hNCEnS2WyCiYyko82rwuISsBY3KYpe828ubsd2ckeqZr7tl0WVLivGkoyA/qdiaaHEBGdGl71OpfWa2rqL3DiA==} + '@metaplex-foundation/beet@0.7.2': resolution: {integrity: sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==} + '@metaplex-foundation/cusper@0.0.2': + resolution: {integrity: sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==} + + '@metaplex-foundation/mpl-auction-house@2.5.1': + resolution: {integrity: sha512-O+IAdYVaoOvgACB8pm+1lF5BNEjl0COkqny2Ho8KQZwka6aC/vHbZ239yRwAMtJhf5992BPFdT4oifjyE0O+Mw==} + + '@metaplex-foundation/mpl-bubblegum@0.7.0': + resolution: {integrity: sha512-HCo6q+nh8M3KRv9/aUaZcJo5/vPJEeZwPGRDWkqN7lUXoMIvhd83fZi7MB1rIg1gwpVHfHqim0A02LCYKisWFg==} + '@metaplex-foundation/mpl-core@1.1.1': resolution: {integrity: sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA==} peerDependencies: '@metaplex-foundation/umi': '>=0.8.2 < 1' '@noble/hashes': ^1.3.1 + '@metaplex-foundation/mpl-token-metadata@2.13.0': + resolution: {integrity: sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==} + '@metaplex-foundation/mpl-token-metadata@3.3.0': resolution: {integrity: sha512-t5vO8Wr3ZZZPGrVrGNcosX5FMkwQSgBiVMQMRNDG2De7voYFJmIibD5jdG05EoQ4Y5kZVEiwhYaO+wJB3aO5AA==} peerDependencies: @@ -365,14 +411,25 @@ packages: '@metaplex-foundation/umi@0.9.2': resolution: {integrity: sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw==} + '@msgpack/msgpack@2.8.0': + resolution: {integrity: sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==} + engines: {node: '>= 10'} + '@msgpack/msgpack@3.0.0-beta2': resolution: {integrity: sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==} engines: {node: '>= 14'} + '@noble/curves@1.4.2': + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + '@noble/curves@1.7.0': resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==} engines: {node: ^14.21.3 || >=16} + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + '@noble/hashes@1.5.0': resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} engines: {node: ^14.21.3 || >=16} @@ -436,9 +493,27 @@ packages: '@raydium-io/raydium-sdk-v2@0.1.95-alpha': resolution: {integrity: sha512-+u7yxo/R1JDysTCzOuAlh90ioBe2DlM2Hbcz/tFsxP/YzmnYQzShvNjcmc0361a4zJhmlrEJfpFXW0J3kkX5vA==} + '@saberhq/option-utils@1.15.0': + resolution: {integrity: sha512-XVbS9H4b8PIGXJGaErkOurxV2FKFyvMwYq0pD8Y1iEPoi6HB//+HnpEKAv8tCssIQ5Nn1zQWzmQ9CmGkrwzcsw==} + + '@saberhq/solana-contrib@1.15.0': + resolution: {integrity: sha512-OExL5qGrNMmIKINU7qFUDmY7+xIwVM2s360g99k8CRNHSnjpnqIzwDjr2CnvEFpeQPp22OdGlS63woDp0w0JsQ==} + peerDependencies: + '@solana/web3.js': ^1.42 + bn.js: ^4 || ^5 + + '@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/bip32@1.4.0': + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + + '@scure/bip39@1.3.0': + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + '@shikijs/engine-oniguruma@1.24.3': resolution: {integrity: sha512-iNnx950gs/5Nk+zrp1LuF+S+L7SKEhn8k9eXgFYPGhVshKppsYwRmW8tpmAMvILIMSDfrgqZ0w+3xWVQB//1Xw==} @@ -557,6 +632,12 @@ packages: peerDependencies: typescript: '>=5' + '@solana/spl-account-compression@0.1.10': + resolution: {integrity: sha512-IQAOJrVOUo6LCgeWW9lHuXo6JDbi4g3/RkQtvY0SyalvSWk9BIkHHe4IkAzaQw8q/BxEVBIjz8e9bNYWIAESNw==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.50.1 + '@solana/spl-token-group@0.0.4': resolution: {integrity: sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw==} engines: {node: '>=16'} @@ -581,6 +662,10 @@ packages: peerDependencies: '@solana/web3.js': ^1.95.3 + '@solana/spl-token@0.1.8': + resolution: {integrity: sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ==} + engines: {node: '>= 10'} + '@solana/spl-token@0.3.11': resolution: {integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==} engines: {node: '>=16'} @@ -618,6 +703,12 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@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==} + '@tiplink/api@0.3.1': resolution: {integrity: sha512-HjnXethjKOHTYT0IP1BewlMS7wZJ+hsoDgRa6jA1cNvxvwQjE1WHOyvOUPpAi+DJDw4P4/omFtyHr7dwLfnB/g==} @@ -663,9 +754,15 @@ packages: '@types/node@22.10.2': resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} + '@types/promise-retry@1.1.6': + resolution: {integrity: sha512-EC1+OMXV0PZb0pf+cmyxc43MEP2CDumZe4AfuxWboxxEixztIebknpJPZAX5XlodGF1OY+C1E/RAeNGzxf+bJA==} + '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + '@types/retry@0.12.5': + resolution: {integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -798,6 +895,9 @@ packages: axios-retry@3.9.1: resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} + axios@0.28.1: + resolution: {integrity: sha512-iUcGA5a7p0mVb4Gm/sy+FSECNkPFT4y7wt6OM/CDpO/OnNCvSs3PoMG8ibrC9jRoGYU0gUK5pXVC4NPXq6lHRQ==} + axios@1.7.9: resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==} @@ -833,6 +933,9 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} @@ -868,6 +971,9 @@ packages: resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} engines: {node: '>=4.5'} + buffer-reverse@1.0.1: + resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} + buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -953,6 +1059,9 @@ packages: resolution: {integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==} engines: {node: '>=8'} + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} @@ -1009,6 +1118,10 @@ packages: dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dotenv@10.0.0: + resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} + engines: {node: '>=10'} + dotenv@16.4.7: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} @@ -1021,6 +1134,9 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -1101,6 +1217,16 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + ethereum-bloom-filters@1.2.0: + resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==} + + ethereum-cryptography@2.2.1: + resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + + ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -1111,6 +1237,9 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + eyes@0.1.8: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} @@ -1298,6 +1427,10 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} @@ -1337,6 +1470,12 @@ packages: js-base64@3.7.7: resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + js-sha256@0.9.0: + resolution: {integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + js-tiktoken@1.0.16: resolution: {integrity: sha512-nUVdO5k/M9llWpiaZlBBDdtmr6qWXwSD6fgaDu2zM8UP+OXxx9V37lFkI6w0/1IuaDx7WffZ37oYd9KvcWKElg==} @@ -1372,6 +1511,13 @@ packages: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} + keccak256@1.0.6: + resolution: {integrity: sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==} + + keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -1474,6 +1620,9 @@ packages: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true + math-expression-evaluator@2.0.6: + resolution: {integrity: sha512-DRung1qNcKbgkhFeQ0fBPUFB6voRUMY7KyRyp1TRQ2v95Rp2egC823xLRooM1mDx1rmbkY7ym6ZWmpaE/VimOA==} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -1485,6 +1634,13 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + merkletreejs@0.3.11: + resolution: {integrity: sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==} + engines: {node: '>= 7.6.0'} + + micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -1528,6 +1684,9 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -1545,6 +1704,10 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true + number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + object-is@1.1.6: resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} engines: {node: '>= 0.4'} @@ -1650,6 +1813,10 @@ packages: engines: {node: '>=14'} hasBin: true + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -1664,6 +1831,13 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -1671,6 +1845,10 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} @@ -1693,6 +1871,10 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + semaphore@1.1.0: + resolution: {integrity: sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==} + engines: {node: '>=0.8.0'} + semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -1721,6 +1903,9 @@ packages: peerDependencies: sodium-native: ^3.2.0 + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -1729,6 +1914,10 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -1776,6 +1965,10 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + ts-api-utils@1.4.3: resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} engines: {node: '>=16'} @@ -1830,6 +2023,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 + typescript-collections@1.3.3: + resolution: {integrity: sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==} + typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} @@ -1863,6 +2059,12 @@ packages: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} + utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} @@ -1889,6 +2091,10 @@ packages: resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} engines: {node: '>= 14'} + web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -1993,6 +2199,28 @@ snapshots: '@cfworker/json-schema@4.0.3': {} + '@coral-xyz/anchor@0.26.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(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 + 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 + '@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) @@ -2014,6 +2242,12 @@ snapshots: - encoding - utf-8-validate + '@coral-xyz/borsh@0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))': dependencies: '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -2047,6 +2281,14 @@ snapshots: '@eslint/js@8.57.1': {} + '@ethereumjs/rlp@4.0.1': {} + + '@ethereumjs/util@8.1.0': + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.2.1 + micro-ftch: 0.3.1 + '@ethersproject/bytes@5.7.0': dependencies: '@ethersproject/logger': 5.7.0 @@ -2176,6 +2418,30 @@ snapshots: - encoding - utf-8-validate + '@metaplex-foundation/beet-solana@0.3.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@metaplex-foundation/beet': 0.7.2 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bs58: 5.0.0 + debug: 4.4.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@metaplex-foundation/beet-solana@0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@metaplex-foundation/beet': 0.7.2 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bs58: 5.0.0 + debug: 4.4.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 @@ -2188,6 +2454,22 @@ snapshots: - supports-color - utf-8-validate + '@metaplex-foundation/beet@0.6.1': + dependencies: + ansicolors: 0.3.2 + bn.js: 5.2.1 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + '@metaplex-foundation/beet@0.7.1': + dependencies: + ansicolors: 0.3.2 + bn.js: 5.2.1 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + '@metaplex-foundation/beet@0.7.2': dependencies: ansicolors: 0.3.2 @@ -2197,12 +2479,65 @@ snapshots: transitivePeerDependencies: - supports-color + '@metaplex-foundation/cusper@0.0.2': {} + + '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.8)(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.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - typescript + - utf-8-validate + + '@metaplex-foundation/mpl-bubblegum@0.7.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) + '@metaplex-foundation/cusper': 0.0.2 + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.1.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + js-sha3: 0.8.0 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - typescript + - utf-8-validate + '@metaplex-foundation/mpl-core@1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1)': dependencies: '@metaplex-foundation/umi': 0.9.2 '@msgpack/msgpack': 3.0.0-beta2 '@noble/hashes': 1.6.1 + '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.8)(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.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + debug: 4.4.0 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - typescript + - utf-8-validate + '@metaplex-foundation/mpl-token-metadata@3.3.0(@metaplex-foundation/umi@0.9.2)': dependencies: '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) @@ -2305,12 +2640,20 @@ snapshots: '@metaplex-foundation/umi-public-keys': 0.8.9 '@metaplex-foundation/umi-serializers': 0.9.0 + '@msgpack/msgpack@2.8.0': {} + '@msgpack/msgpack@3.0.0-beta2': {} + '@noble/curves@1.4.2': + dependencies: + '@noble/hashes': 1.4.0 + '@noble/curves@1.7.0': dependencies: '@noble/hashes': 1.6.0 + '@noble/hashes@1.4.0': {} + '@noble/hashes@1.5.0': {} '@noble/hashes@1.6.0': {} @@ -2401,8 +2744,38 @@ snapshots: - typescript - utf-8-validate + '@saberhq/option-utils@1.15.0': + dependencies: + tslib: 2.8.1 + + '@saberhq/solana-contrib@1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) + '@types/promise-retry': 1.1.6 + '@types/retry': 0.12.5 + bn.js: 5.2.1 + promise-retry: 2.0.1 + retry: 0.13.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 + + '@scure/base@1.1.9': {} + '@scure/base@1.2.1': {} + '@scure/bip32@1.4.0': + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.3.0': + dependencies: + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + '@shikijs/engine-oniguruma@1.24.3': dependencies: '@shikijs/types': 1.24.3 @@ -2639,6 +3012,21 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/spl-account-compression@0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@metaplex-foundation/beet': 0.7.2 + '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + borsh: 0.7.0 + js-sha3: 0.8.0 + typescript-collections: 1.3.3 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + '@solana/spl-token-group@0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: '@solana/codecs': 2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22) @@ -2688,6 +3076,19 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript + '@solana/spl-token@0.1.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@babel/runtime': 7.26.0 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + buffer: 6.0.3 + buffer-layout: 1.2.2 + dotenv: 10.0.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 @@ -2702,6 +3103,20 @@ snapshots: - typescript - utf-8-validate + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 @@ -2799,6 +3214,56 @@ snapshots: dependencies: tslib: 2.8.1 + '@tensor-hq/tensor-common@8.3.1(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-bubblegum': 0.7.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + axios: 0.28.1 + big.js: 6.2.2 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 5.0.0 + exponential-backoff: 3.1.1 + js-sha3: 0.8.0 + semaphore: 1.1.0 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - typescript + - utf-8-validate + + '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.8)(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.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@tensor-hq/tensor-common': 8.3.1(bufferutil@4.0.8)(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 + js-sha256: 0.9.0 + keccak256: 1.0.6 + math-expression-evaluator: 2.0.6 + merkletreejs: 0.3.11 + uuid: 8.3.2 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - typescript + - utf-8-validate + '@tiplink/api@0.3.1(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) @@ -2862,8 +3327,14 @@ snapshots: dependencies: undici-types: 6.20.0 + '@types/promise-retry@1.1.6': + dependencies: + '@types/retry': 0.12.5 + '@types/retry@0.12.0': {} + '@types/retry@0.12.5': {} + '@types/unist@3.0.3': {} '@types/uuid@10.0.0': {} @@ -3022,6 +3493,14 @@ snapshots: '@babel/runtime': 7.26.0 is-retry-allowed: 2.2.0 + axios@0.28.1: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + axios@1.7.9: dependencies: follow-redirects: 1.15.9 @@ -3056,6 +3535,8 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 + bn.js@4.11.6: {} + bn.js@5.2.1: {} borsh@0.7.0: @@ -3095,6 +3576,8 @@ snapshots: buffer-layout@1.2.2: {} + buffer-reverse@1.0.1: {} + buffer@5.7.1: dependencies: base64-js: 1.5.1 @@ -3182,6 +3665,8 @@ snapshots: crypto-hash@1.3.0: {} + crypto-js@4.2.0: {} + dayjs@1.11.13: {} debug@4.4.0: @@ -3225,6 +3710,8 @@ snapshots: no-case: 3.0.4 tslib: 2.8.1 + dotenv@10.0.0: {} + dotenv@16.4.7: {} dunder-proto@1.0.1: @@ -3235,6 +3722,8 @@ snapshots: entities@4.5.0: {} + err-code@2.0.3: {} + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -3334,12 +3823,30 @@ snapshots: esutils@2.0.3: {} + ethereum-bloom-filters@1.2.0: + dependencies: + '@noble/hashes': 1.6.1 + + ethereum-cryptography@2.2.1: + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + + ethjs-unit@0.1.6: + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + event-target-shim@5.0.1: {} eventemitter3@4.0.7: {} eventemitter3@5.0.1: {} + exponential-backoff@3.1.1: {} + eyes@0.1.8: {} fast-deep-equal@3.1.3: {} @@ -3533,6 +4040,8 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-hex-prefixed@1.0.0: {} + is-nan@1.3.2: dependencies: call-bind: 1.0.8 @@ -3580,6 +4089,10 @@ snapshots: js-base64@3.7.7: {} + js-sha256@0.9.0: {} + + js-sha3@0.8.0: {} + js-tiktoken@1.0.16: dependencies: base64-js: 1.5.1 @@ -3608,6 +4121,18 @@ snapshots: jsonpointer@5.0.1: {} + keccak256@1.0.6: + dependencies: + bn.js: 5.2.1 + buffer: 6.0.3 + keccak: 3.0.4 + + keccak@3.0.4: + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.8.4 + readable-stream: 3.6.2 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -3693,12 +4218,24 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 + math-expression-evaluator@2.0.6: {} + math-intrinsics@1.1.0: {} mdurl@2.0.0: {} merge2@1.4.1: {} + merkletreejs@0.3.11: + dependencies: + bignumber.js: 9.1.2 + buffer-reverse: 1.0.1 + crypto-js: 4.2.0 + treeify: 1.1.0 + web3-utils: 1.10.4 + + micro-ftch@0.3.1: {} + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -3735,6 +4272,8 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 + node-addon-api@2.0.2: {} + node-domexception@1.0.0: {} node-fetch@2.7.0: @@ -3743,6 +4282,11 @@ snapshots: node-gyp-build@4.8.4: {} + number-to-bn@1.7.0: + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + object-is@1.1.6: dependencies: call-bind: 1.0.8 @@ -3844,6 +4388,11 @@ snapshots: prettier@3.4.2: {} + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + proxy-from-env@1.1.0: {} punycode.js@2.3.1: {} @@ -3852,10 +4401,22 @@ snapshots: queue-microtask@1.2.3: {} + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + regenerator-runtime@0.14.1: {} resolve-from@4.0.0: {} + retry@0.12.0: {} + retry@0.13.1: {} reusify@1.0.4: {} @@ -3883,6 +4444,8 @@ snapshots: safe-buffer@5.2.1: {} + semaphore@1.1.0: {} + semver@7.6.3: {} set-function-length@1.2.2: @@ -3918,12 +4481,20 @@ snapshots: typedarray-to-buffer: 3.1.5 xsalsa20: 1.2.0 + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 strip-bom@3.0.0: {} + strip-hex-prefix@1.0.0: + dependencies: + is-hex-prefixed: 1.0.0 + strip-json-comments@3.1.1: {} superstruct@0.15.5: {} @@ -3959,6 +4530,8 @@ snapshots: tr46@0.0.3: {} + treeify@1.1.0: {} + ts-api-utils@1.4.3(typescript@5.7.2): dependencies: typescript: 5.7.2 @@ -4014,6 +4587,8 @@ snapshots: typescript: 5.7.2 yaml: 2.6.1 + typescript-collections@1.3.3: {} + typescript@4.9.5: {} typescript@5.7.2: {} @@ -4040,6 +4615,10 @@ snapshots: node-gyp-build: 4.8.4 optional: true + utf8@3.0.0: {} + + util-deprecate@1.0.2: {} + util@0.12.5: dependencies: inherits: 2.0.4 @@ -4060,6 +4639,17 @@ snapshots: web-streams-polyfill@4.0.0-beta.3: {} + web3-utils@1.10.4: + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.1 + ethereum-bloom-filters: 1.2.0 + ethereum-cryptography: 2.2.1 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + webidl-conversions@3.0.1: {} whatwg-url@5.0.0: diff --git a/src/agent/index.ts b/src/agent/index.ts index 0ee9e62..f880994 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -2,6 +2,7 @@ import { Connection, Keypair, PublicKey } from "@solana/web3.js"; import bs58 from "bs58"; import Decimal from "decimal.js"; import { DEFAULT_OPTIONS } from "../constants"; +import { Config } from "../types"; import { deploy_collection, deploy_token, @@ -71,17 +72,17 @@ export class SolanaAgentKit { public connection: Connection; public wallet: Keypair; public wallet_address: PublicKey; - public openai_api_key: string | null; + public config: Config; constructor( private_key: string, rpc_url = "https://api.mainnet-beta.solana.com", - openai_api_key: string | null = null, + config: Config, ) { this.connection = new Connection(rpc_url); this.wallet = Keypair.fromSecretKey(bs58.decode(private_key)); this.wallet_address = this.wallet.publicKey; - this.openai_api_key = openai_api_key; + this.config = config; } // Tool methods diff --git a/src/tools/create_image.ts b/src/tools/create_image.ts index 7fbb2cf..106f3c2 100644 --- a/src/tools/create_image.ts +++ b/src/tools/create_image.ts @@ -16,12 +16,12 @@ export async function create_image( n: number = 1, ) { try { - if (!agent.openai_api_key) { + if (!agent.config.OPENAI_API_KEY) { throw new Error("OpenAI API key not found in agent configuration"); } const openai = new OpenAI({ - apiKey: agent.openai_api_key, + apiKey: agent.config.OPENAI_API_KEY, }); const response = await openai.images.generate({ diff --git a/src/tools/tensor_trade.ts b/src/tools/tensor_trade.ts index 9be8a97..be41c42 100644 --- a/src/tools/tensor_trade.ts +++ b/src/tools/tensor_trade.ts @@ -32,7 +32,7 @@ export async function listNFTForSale( if (!tokenAccount || tokenAccount.amount <= 0) { throw new Error(`You don't own this NFT (${nftMint.toString()})`); } - } catch (e) { + } catch (error: any) { throw new Error( `No token account found for mint ${nftMint.toString()}. Make sure you own this NFT.`, ); diff --git a/src/tools/trade.ts b/src/tools/trade.ts index 3a9815b..4e11712 100644 --- a/src/tools/trade.ts +++ b/src/tools/trade.ts @@ -1,10 +1,5 @@ import { VersionedTransaction, PublicKey } from "@solana/web3.js"; import { SolanaAgentKit } from "../index"; - -import dotenv from "dotenv"; - -// Load environment variables -dotenv.config(); import { TOKENS, DEFAULT_OPTIONS, @@ -22,14 +17,6 @@ import { getMint } from "@solana/spl-token"; * @returns Transaction signature */ -// Get Jupiter fee and referral account from environment variables -const JUP_FEE_BPS = process.env.JUP_FEE_BPS - ? parseInt(process.env.JUP_FEE_BPS) - : ""; -const JUP_REFERRAL_ACCOUNT = process.env.JUP_REFERRAL_ACCOUNT - ? new PublicKey(process.env.JUP_REFERRAL_ACCOUNT) - : ""; - export async function trade( agent: SolanaAgentKit, outputMint: PublicKey, @@ -58,17 +45,17 @@ export async function trade( `&slippageBps=${slippageBps}` + `&onlyDirectRoutes=true` + `&maxAccounts=20` + - `${JUP_FEE_BPS ? `&platformFeeBps=${JUP_FEE_BPS}` : ""}`, + `${agent.config.JUPITER_FEE_BPS ? `&platformFeeBps=${agent.config.JUPITER_FEE_BPS}` : ""}`, ) ).json(); // Get serialized transaction let feeAccount; - if (JUP_REFERRAL_ACCOUNT) { - [feeAccount] = await PublicKey.findProgramAddressSync( + if (agent.config.JUPITER_REFERRAL_ACCOUNT) { + [feeAccount] = PublicKey.findProgramAddressSync( [ Buffer.from("referral_ata"), - new PublicKey(JUP_REFERRAL_ACCOUNT).toBuffer(), + new PublicKey(agent.config.JUPITER_REFERRAL_ACCOUNT).toBuffer(), TOKENS.SOL.toBuffer(), ], new PublicKey(JUP_REFERRAL_ADDRESS), diff --git a/src/types/index.ts b/src/types/index.ts index 95d1fc5..54592bb 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,5 +1,11 @@ import { PublicKey } from "@solana/web3.js"; +export interface Config { + OPENAI_API_KEY?: string; + JUPITER_REFERRAL_ACCOUNT?: string; + JUPITER_FEE_BPS?: number; +} + export interface Creator { address: string; percentage: number; diff --git a/test/index.ts b/test/index.ts index 6fb00f4..abd50d0 100644 --- a/test/index.ts +++ b/test/index.ts @@ -53,7 +53,9 @@ async function initializeAgent() { const solanaAgent = new SolanaAgentKit( process.env.SOLANA_PRIVATE_KEY!, process.env.RPC_URL, - process.env.OPENAI_API_KEY!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, ); const tools = createSolanaTools(solanaAgent); From 2a08017dcd210c68a2a33fd20481a28b3b8788e8 Mon Sep 17 00:00:00 2001 From: Fahri Bilici <28020526+FahriBilici@users.noreply.github.com> Date: Tue, 31 Dec 2024 17:54:33 +0100 Subject: [PATCH 50/94] adding missing actions --- src/actions/compressedAirdrop.ts | 105 ++++++++++++++++++++++++++ src/actions/getOwnedDomainsForTLD.ts | 2 +- src/actions/raydiumCreateClmm.ts | 76 +++++++++++++++++++ src/actions/resolveDomain.ts | 2 +- src/actions/tokenDataByTicker.ts | 60 +++++++++++++++ src/langchain/index.ts | 106 ++++++++------------------- 6 files changed, 272 insertions(+), 79 deletions(-) create mode 100644 src/actions/compressedAirdrop.ts create mode 100644 src/actions/raydiumCreateClmm.ts create mode 100644 src/actions/tokenDataByTicker.ts diff --git a/src/actions/compressedAirdrop.ts b/src/actions/compressedAirdrop.ts new file mode 100644 index 0000000..652ae28 --- /dev/null +++ b/src/actions/compressedAirdrop.ts @@ -0,0 +1,105 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { sendCompressedAirdrop } from "../tools"; + +const compressedAirdropAction: Action = { + name: "solana_compressed_airdrop", + similes: [ + "ZK Compressed airdrop", + "Airdrop tokens with compression", + "Send compressed SPL airdrop", + "Airdrop to multiple recipients", + ], + description: + "Airdrop SPL tokens with ZK Compression (also known as airdropping tokens) to multiple recipients", + examples: [ + [ + { + input: { + mintAddress: "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", + amount: 42, + decimals: 6, + recipients: [ + "1nc1nerator11111111111111111111111111111111", + "BrFndAe111111111111111111111111111111111", + ], + priorityFeeInLamports: 30000, + shouldLog: true, + }, + output: { + status: "success", + message: + "Airdropped 42 tokens to 2 recipients.", + transactionHashes: ["4uyfBN...", "9XsF2N..."], + }, + explanation: + "Airdrops 42 tokens (with 6 decimals) to 2 recipients, optionally logging progress to stdout.", + }, + ], + ], + // Validate inputs with zod + schema: z.object({ + mintAddress: z + .string() + .min(1) + .describe("Mint address of the token, e.g., 'JUPy...'"), + amount: z + .number() + .positive() + .describe("Number of tokens to airdrop per recipient, e.g., 42"), + decimals: z + .number() + .nonnegative() + .int() + .describe("Decimals of the token, e.g., 6"), + recipients: z + .array(z.string()) + .nonempty() + .describe("Array of recipient addresses, e.g., ['1nc1n...']"), + priorityFeeInLamports: z + .number() + .optional() + .describe("Priority fee in lamports (default is 30_000)"), + shouldLog: z + .boolean() + .optional() + .describe("Whether to log progress to stdout (default is false)"), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const { + mintAddress, + amount, + decimals, + recipients, + priorityFeeInLamports, + shouldLog, + } = input; + + // Call your airdrop method on the SolanaAgentKit + const txs = await sendCompressedAirdrop( + mintAddress, + amount, + decimals, + recipients, + priorityFeeInLamports || 30_000, + shouldLog || false, + ); + + return { + status: "success", + message: `Airdropped ${amount} tokens to ${recipients.length} recipients.`, + transactionHashes: txs, + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to airdrop tokens: ${error.message}`, + code: error.code || "UNKNOWN_ERROR", + }; + } + }, +}; + +export default compressedAirdropAction; \ No newline at end of file diff --git a/src/actions/getOwnedDomainsForTLD.ts b/src/actions/getOwnedDomainsForTLD.ts index b419e58..1c0b4be 100644 --- a/src/actions/getOwnedDomainsForTLD.ts +++ b/src/actions/getOwnedDomainsForTLD.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { getOwnedDomainsForTLD } from "../tools"; const getOwnedDomainsForTLDAction: Action = { - name: "solana_get_owned_domains_for_tld", + name: "solana_get_owned_tld_domains", similes: [ "list owned domains for tld", "get my domains for extension", diff --git a/src/actions/raydiumCreateClmm.ts b/src/actions/raydiumCreateClmm.ts new file mode 100644 index 0000000..60a24db --- /dev/null +++ b/src/actions/raydiumCreateClmm.ts @@ -0,0 +1,76 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { PublicKey } from "@solana/web3.js"; +import { BN } from "@coral-xyz/anchor"; +import Decimal from "decimal.js"; +import { raydiumCreateClmm } from "../tools"; + +const raydiumCreateClmmAction: Action = { + name: "raydium_create_clmm", + similes: [ + "create clmm pool", + "create concentrated liquidity pool", + "raydium clmm setup", + "launch concentrated liquidity market maker", + ], + description: `Create a Raydium Concentrated Liquidity Market Maker (CLMM) pool with custom ranges, providing increased capital efficiency`, + examples: [ + [ + { + input: { + mint1: "9xU1vzz456... (PublicKey)", + mint2: "EfrsBcG98... (PublicKey)", + configId: "D6yTTr... (Config PublicKey)", + initialPrice: 123.12, + startTime: 0, // or current UNIX timestamp + }, + output: { + status: "success", + message: "Create raydium clmm pool successfully", + transaction: "3skCN8... (transaction signature)", + }, + explanation: + "Creates a CLMM pool between mint1 and mint2 at an initial price of 123.12 and start time of 0.", + }, + ], + ], + // Validate tool inputs using zod + schema: z.object({ + mint1: z.string().min(1).describe("First token mint address (public key)"), + mint2: z.string().min(1).describe("Second token mint address (public key)"), + configId: z.string().min(1).describe("Raydium configId (public key)"), + initialPrice: z.number().describe("Initial price for the CLMM pool"), + startTime: z.number().describe( + "Start time in seconds (UNIX timestamp or zero)", + ), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const { mint1, mint2, configId, initialPrice, startTime } = input; + + const tx = await raydiumCreateClmm( + agent, + new PublicKey(mint1), + new PublicKey(mint2), + new PublicKey(configId), + new Decimal(initialPrice), + new BN(startTime), + ); + + return { + status: "success", + message: "Create raydium clmm pool successfully", + transaction: tx, + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to create CLMM pool: ${error.message}`, + code: error.code || "UNKNOWN_ERROR", + }; + } + }, +}; + +export default raydiumCreateClmmAction; \ No newline at end of file diff --git a/src/actions/resolveDomain.ts b/src/actions/resolveDomain.ts index aca514e..d159141 100644 --- a/src/actions/resolveDomain.ts +++ b/src/actions/resolveDomain.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { resolveAllDomains } from "../tools"; const resolveDomainAction: Action = { - name: "solana_resolve_domain", + name: "solana_resolve_all_domains", similes: [ "resolve domain", "lookup domain", diff --git a/src/actions/tokenDataByTicker.ts b/src/actions/tokenDataByTicker.ts new file mode 100644 index 0000000..6f45702 --- /dev/null +++ b/src/actions/tokenDataByTicker.ts @@ -0,0 +1,60 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { getTokenDataByTicker } from "../tools"; + +const tokenDataByTickerAction: Action = { + name: "solana_token_data_by_ticker", + similes: [ + "token data by ticker", + "fetch token info by ticker", + "lookup token ticker info", + "get token info by ticker", + ], + description: "Get the token data for a given token ticker", + examples: [ + [ + { + input: { + ticker: "USDC", + }, + output: { + status: "success", + tokenData: { + // Some placeholder example data + symbol: "USDC", + name: "USD Coin", + decimals: 6, + mintAddress: "FhRg...", + }, + }, + explanation: "Fetches metadata for the USDC token by its ticker.", + }, + ], + ], + schema: z.object({ + ticker: z.string().min(1).describe("Ticker of the token, e.g. 'USDC'"), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const ticker = input.ticker as string; + + // Use agent’s method to get token data by ticker + const tokenData = await getTokenDataByTicker(ticker); + + return { + status: "success", + tokenData: tokenData, + message: `Successfully fetched token data for ticker: ${ticker}`, + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to fetch token data for ticker: ${input.ticker || ""}. ${error.message}`, + code: error.code || "UNKNOWN_ERROR", + }; + } + }, +}; + +export default tokenDataByTickerAction; \ No newline at end of file diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 75aadb8..3dad335 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -36,6 +36,10 @@ import resolveSolDomainAction from "../actions/resolveSolDomain"; import getAllDomainsTLDsAction from "../actions/getAllDomainsTLDs"; import getMainAllDomainsDomainAction from "../actions/getMainAllDomainsDomain"; import raydiumCreateAmmV4Action from "../actions/raydiumCreateAmmV4"; +import tokenDataByTickerAction from "../actions/tokenDataByTicker"; +import compressedAirdropAction from "../actions/compressedAirdrop"; +import raydiumCreateClmmAction from "../actions/raydiumCreateClmm"; +import createOpenbookMarketAction from "../actions/createOpenbookMarket"; export class SolanaBalanceTool extends Tool { private action = balanceAction; @@ -541,7 +545,6 @@ export class SolanaFetchPriceTool extends Tool { const parsedInput = { tokenId: input.trim() }; const price = await this.action.handler(this.solanaKit, parsedInput); - //const price = await this.solanaKit.fetchTokenPrice(input.trim()); return JSON.stringify({ status: "success", tokenId: input.trim(), @@ -587,11 +590,9 @@ export class SolanaTokenDataTool extends Tool { } export class SolanaTokenDataByTickerTool extends Tool { - name = "solana_token_data_by_ticker"; - description = `Get the token data for a given token ticker - -Inputs: ticker is required. - ticker: string, eg "USDC"(required)`; + private action = tokenDataByTickerAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -600,7 +601,7 @@ Inputs: ticker is required. protected async _call(input: string): Promise { try { const ticker = input.trim(); - const tokenData = await this.solanaKit.getTokenDataByTicker(ticker); + const tokenData = await this.action.handler(this.solanaKit, { ticker }); return JSON.stringify({ status: "success", tokenData: tokenData, @@ -616,16 +617,9 @@ Inputs: ticker is required. } export class SolanaCompressedAirdropTool extends Tool { - name = "solana_compressed_airdrop"; - description = `Airdrop SPL tokens with ZK Compression(also called as airdropping tokens) - -Inputs(input is a JSON string): -mintAddress: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"(required) -amount: number, the amount of tokens to airdrop per recipient, e.g., 42(required) -decimals: number, the decimals of the token, e.g., 6(required) -recipients: string[], the recipient addresses, e.g., ["1nc1nerator11111111111111111111111111111111"](required) -priorityFeeInLamports: number, the priority fee in lamports.Default is 30_000.(optional) -shouldLog: boolean, whether to log progress to stdout.Default is false. (optional)`; + private action = compressedAirdropAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -634,16 +628,7 @@ shouldLog: boolean, whether to log progress to stdout.Default is false. (optiona protected async _call(input: string): Promise { try { const parsedInput = JSON.parse(input); - - const txs = await this.solanaKit.sendCompressedAirdrop( - parsedInput.mintAddress, - parsedInput.amount, - parsedInput.decimals, - parsedInput.recipients, - parsedInput.priorityFeeInLamports || 30_000, - parsedInput.shouldLog || false, - ); - + const txs = await this.action.handler(this.solanaKit, parsedInput); return JSON.stringify({ status: "success", message: `Airdropped ${parsedInput.amount} tokens to ${parsedInput.recipients.length} recipients.`, @@ -740,16 +725,9 @@ export class SolanaRaydiumCreateAmmV4 extends Tool { } export class SolanaRaydiumCreateClmm extends Tool { - name = "raydium_create_clmm"; - description = `Concentrated liquidity market maker, custom liquidity ranges, increased capital efficiency - -Inputs(input is a json string): -mint1: string(required) -mint2: string(required) -configId: string(required) stores pool info, id, index, protocolFeeRate, tradeFeeRate, tickSpacing, fundFeeRate -initialPrice: number, eg: 123.12(required) -startTime: number(seconds), eg: now number or zero(required) - `; + private action = raydiumCreateClmmAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -759,15 +737,7 @@ startTime: number(seconds), eg: now number or zero(required) try { const inputFormat = JSON.parse(input); - const tx = await this.solanaKit.raydiumCreateClmm( - new PublicKey(inputFormat.mint1), - new PublicKey(inputFormat.mint2), - - new PublicKey(inputFormat.configId), - - new Decimal(inputFormat.initialPrice), - new BN(inputFormat.startTime), - ); + const tx = await this.action.handler(this.solanaKit, inputFormat); return JSON.stringify({ status: "success", @@ -814,15 +784,9 @@ export class SolanaRaydiumCreateCpmm extends Tool { } export class SolanaOpenbookCreateMarket extends Tool { - name = "solana_openbook_create_market"; - description = `Openbook marketId, required for ammv4 - - Inputs(input is a json string): - baseMint: string(required) -quoteMint: string(required) -lotSize: number(required) -tickSize: number(required) - `; + private action = createOpenbookMarketAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -831,14 +795,7 @@ tickSize: number(required) async _call(input: string): Promise { try { const inputFormat = JSON.parse(input); - - const tx = await this.solanaKit.openbookCreateMarket( - new PublicKey(inputFormat.baseMint), - new PublicKey(inputFormat.quoteMint), - - inputFormat.lotSize, - inputFormat.tickSize, - ); + const tx = await this.action.handler(this.solanaKit, inputFormat); return JSON.stringify({ status: "success", @@ -887,13 +844,9 @@ export class SolanaPythFetchPrice extends Tool { } export class SolanaResolveAllDomainsTool extends Tool { - name = "solana_resolve_all_domains"; - description = `Resolve domain names to a public key for ALL domain types EXCEPT.sol domains. - Use this for domains like.blink, .bonk, etc. - DO NOT use this for .sol domains(use solana_resolve_domain instead). - - Input: - domain: string, eg "mydomain.blink" or "mydomain.bonk"(required)`; + private action = resolveDomainAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -901,7 +854,8 @@ export class SolanaResolveAllDomainsTool extends Tool { async _call(input: string): Promise { try { - const owner = await this.solanaKit.resolveAllDomains(input); + const parsedInput = JSON.parse(input); + const owner = await this.action.handler(this.solanaKit, parsedInput); if (!owner) { return JSON.stringify({ @@ -956,11 +910,9 @@ export class SolanaGetOwnedDomains extends Tool { } export class SolanaGetOwnedTldDomains extends Tool { - name = "solana_get_owned_tld_domains"; - description = `Get all domains owned by the agent's wallet for a specific TLD. - -Inputs: -tld: string, eg "bonk"(required)`; + private action = getOwnedDomainsForTLDAction; + name = this.action.name; + description = this.action.description; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -968,7 +920,7 @@ tld: string, eg "bonk"(required)`; async _call(input: string): Promise { try { - const domains = await this.solanaKit.getOwnedDomainsForTLD(input); + const domains = await this.action.handler(this.solanaKit, { tld: input }); return JSON.stringify({ status: "success", From f1e4fb21acb2d99366152dd620396b99ab137cc0 Mon Sep 17 00:00:00 2001 From: aryan Date: Tue, 31 Dec 2024 23:54:31 +0530 Subject: [PATCH 51/94] depreceated issue --- docs/assets/hierarchy.js | 1 + docs/assets/icons.js | 2 +- docs/assets/icons.svg | 2 +- docs/assets/main.js | 10 +- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/assets/style.css | 2827 +++++++++-------- docs/classes/SolanaAgentKit.html | 91 +- docs/functions/createSolanaTools.html | 2 +- docs/index.html | 50 +- docs/interfaces/CollectionDeployment.html | 4 +- docs/interfaces/CollectionOptions.html | 6 +- docs/interfaces/Config.html | 4 + docs/interfaces/Creator.html | 4 +- docs/interfaces/FetchPriceResponse.html | 8 +- docs/interfaces/GibworkCreateTaskReponse.html | 6 +- docs/interfaces/JupiterTokenData.html | 6 +- .../LuloAccountDetailsResponse.html | 10 +- .../interfaces/MintCollectionNFTResponse.html | 4 +- docs/interfaces/PumpFunTokenOptions.html | 8 +- docs/interfaces/PumpfunLaunchResponse.html | 6 +- docs/interfaces/PythFetchPriceResponse.html | 6 +- docs/modules.html | 15 +- package.json | 2 +- src/agent/index.ts | 25 +- test/index.ts | 2 +- 26 files changed, 1622 insertions(+), 1483 deletions(-) create mode 100644 docs/assets/hierarchy.js create mode 100644 docs/interfaces/Config.html diff --git a/docs/assets/hierarchy.js b/docs/assets/hierarchy.js new file mode 100644 index 0000000..fb85f0a --- /dev/null +++ b/docs/assets/hierarchy.js @@ -0,0 +1 @@ +window.hierarchyData = "eJyrVirKzy8pVrKKjtVRKkpNy0lNLsnMzytWsqqurQUAmx4Kpg==" \ No newline at end of file diff --git a/docs/assets/icons.js b/docs/assets/icons.js index 3dfbd32..58882d7 100644 --- a/docs/assets/icons.js +++ b/docs/assets/icons.js @@ -3,7 +3,7 @@ function addIcons() { if (document.readyState === "loading") return document.addEventListener("DOMContentLoaded", addIcons); const svg = document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg")); - svg.innerHTML = `MMNEPVFCICPMFPCPTTAAATR`; + svg.innerHTML = `MMNEPVFCICPMFPCPTTAAATR`; svg.style.display = "none"; if (location.protocol === "file:") updateUseElements(); } diff --git a/docs/assets/icons.svg b/docs/assets/icons.svg index a19417d..50ad579 100644 --- a/docs/assets/icons.svg +++ b/docs/assets/icons.svg @@ -1 +1 @@ -MMNEPVFCICPMFPCPTTAAATR \ No newline at end of file +MMNEPVFCICPMFPCPTTAAATR \ No newline at end of file diff --git a/docs/assets/main.js b/docs/assets/main.js index 99097a0..4f59cd9 100644 --- a/docs/assets/main.js +++ b/docs/assets/main.js @@ -1,9 +1,9 @@ "use strict"; -window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings."}; -"use strict";(()=>{var Pe=Object.create;var ie=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var Fe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _e(e))!Me.call(t,i)&&i!==n&&ie(t,i,{get:()=>e[i],enumerable:!(r=Oe(e,i))||r.enumerable});return t};var Ae=(t,e,n)=>(n=t!=null?Pe(Re(t)):{},De(e||!t||!t.__esModule?ie(n,"default",{value:t,enumerable:!0}):n,t));var ue=Fe((ae,le)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. -`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),p;m in s.node.edges?p=s.node.edges[m]:(p=new t.TokenSet,s.node.edges[m]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof ae=="object"?le.exports=n():e.lunr=n()}(this,function(){return t})})()});var se=[];function G(t,e){se.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){se.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!Ve(e)){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r,document.querySelector(".col-sidebar").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(!n)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};function Ve(t){let e=t.getBoundingClientRect(),n=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-n>=0)}var oe=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var pe=Ae(ue());async function ce(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=pe.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function fe(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{ce(e,t)}),ce(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");i.addEventListener("mouseup",()=>{te(t)}),r.addEventListener("focus",()=>t.classList.add("has-focus")),He(t,i,r,e)}function He(t,e,n,r){n.addEventListener("input",oe(()=>{Ne(t,e,n,r)},200)),n.addEventListener("keydown",i=>{i.key=="Enter"?Be(e,t):i.key=="ArrowUp"?(de(e,n,-1),i.preventDefault()):i.key==="ArrowDown"&&(de(e,n,1),i.preventDefault())}),document.body.addEventListener("keypress",i=>{i.altKey||i.ctrlKey||i.metaKey||!n.matches(":focus")&&i.key==="/"&&(i.preventDefault(),n.focus())}),document.body.addEventListener("keyup",i=>{t.classList.contains("has-focus")&&(i.key==="Escape"||!e.matches(":focus-within")&&!n.matches(":focus"))&&(n.blur(),te(t))})}function te(t){t.classList.remove("has-focus")}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=he(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` - ${he(l.parent,i)}.${d}`);let m=document.createElement("li");m.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,m.append(p),p.addEventListener("focus",()=>{e.querySelector(".current")?.classList.remove("current"),m.classList.add("current")}),e.appendChild(m)}}function de(t,e,n){let r=t.querySelector(".current");if(!r)r=t.querySelector(n==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let i=r;if(n===1)do i=i.nextElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);else do i=i.previousElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);i?(r.classList.remove("current"),i.classList.add("current")):n===-1&&(r.classList.remove("current"),e.focus())}}function Be(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),te(e)}}function he(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(ee(t.substring(s,o)),`${ee(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ee(t.substring(s))),i.join("")}var je={"&":"&","<":"<",">":">","'":"'",'"':"""};function ee(t){return t.replace(/[&<>"'"]/g,e=>je[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",ye="mousemove",N="mouseup",J={x:0,y:0},me=!1,ne=!1,qe=!1,D=!1,ve=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(ve?"is-mobile":"not-mobile");ve&&"ontouchstart"in document.documentElement&&(qe=!0,F="touchstart",ye="touchmove",N="touchend");document.addEventListener(F,t=>{ne=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(ye,t=>{if(ne&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(N,()=>{ne=!1});document.addEventListener("click",t=>{me&&(t.preventDefault(),t.stopImmediatePropagation(),me=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(N,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(N,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var re;try{re=localStorage}catch{re={getItem(){return null},setItem(){}}}var Q=re;var ge=document.head.appendChild(document.createElement("style"));ge.dataset.for="filters";var Y=class extends I{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ge.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } -`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var Z=class extends I{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function Ee(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,xe(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),xe(t.value)})}function xe(t){document.documentElement.dataset.theme=t}var K;function we(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Le),Le())}async function Le(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();K=t.dataset.base,K.endsWith("/")||(K+="/"),t.innerHTML="";for(let s of i)Se(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Se(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',be(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)Se(u,l,i)}else be(t,r,t.class)}function be(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=K+t.path,n&&(r.className=n),location.pathname===r.pathname&&!r.href.includes("#")&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else{let r=e.appendChild(document.createElement("span"));r.innerHTML='',r.appendChild(document.createElement("span")).textContent=t.text}}G(X,"a[data-toggle]");G(Z,".tsd-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Te=document.getElementById("tsd-theme");Te&&Ee(Te);var $e=new U;Object.defineProperty(window,"app",{value:$e});fe();we();})(); +window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings.","hierarchy_expand":"Expand","hierarchy_collapse":"Collapse"}; +"use strict";(()=>{var De=Object.create;var le=Object.defineProperty;var Fe=Object.getOwnPropertyDescriptor;var Ne=Object.getOwnPropertyNames;var Ve=Object.getPrototypeOf,Be=Object.prototype.hasOwnProperty;var qe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var je=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ne(e))!Be.call(t,i)&&i!==n&&le(t,i,{get:()=>e[i],enumerable:!(r=Fe(e,i))||r.enumerable});return t};var $e=(t,e,n)=>(n=t!=null?De(Ve(t)):{},je(e||!t||!t.__esModule?le(n,"default",{value:t,enumerable:!0}):n,t));var pe=qe((de,he)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,c],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[c+1]*i[d+1],c+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var c=s.node.edges["*"];else{var c=new t.TokenSet;s.node.edges["*"]=c}s.str.length==1&&(c.final=!0),i.push({node:c,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),p;m in s.node.edges?p=s.node.edges[m]:(p=new t.TokenSet,s.node.edges[m]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof de=="object"?he.exports=n():e.lunr=n()}(this,function(){return t})})()});window.translations||={copy:"Copy",copied:"Copied!",normally_hidden:"This member is normally hidden due to your filter settings.",hierarchy_expand:"Expand",hierarchy_collapse:"Collapse"};var ce=[];function G(t,e){ce.push({selector:e,constructor:t})}var J=class{alwaysVisibleMember=null;constructor(){this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){ce.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!ze(e)){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r,document.querySelector(".col-sidebar").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(!n)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};function ze(t){let e=t.getBoundingClientRect(),n=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-n>=0)}var ue=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var ge=$e(pe(),1);async function H(t){let e=Uint8Array.from(atob(t),s=>s.charCodeAt(0)),r=new Blob([e]).stream().pipeThrough(new DecompressionStream("deflate")),i=await new Response(r).text();return JSON.parse(i)}async function fe(t,e){if(!window.searchData)return;let n=await H(window.searchData);t.data=n,t.index=ge.Index.load(n.index),e.classList.remove("loading"),e.classList.add("ready")}function ve(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:document.documentElement.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{fe(e,t)}),fe(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");i.addEventListener("mouseup",()=>{re(t)}),r.addEventListener("focus",()=>t.classList.add("has-focus")),We(t,i,r,e)}function We(t,e,n,r){n.addEventListener("input",ue(()=>{Ue(t,e,n,r)},200)),n.addEventListener("keydown",i=>{i.key=="Enter"?Je(e,t):i.key=="ArrowUp"?(me(e,n,-1),i.preventDefault()):i.key==="ArrowDown"&&(me(e,n,1),i.preventDefault())}),document.body.addEventListener("keypress",i=>{i.altKey||i.ctrlKey||i.metaKey||!n.matches(":focus")&&i.key==="/"&&(i.preventDefault(),n.focus())}),document.body.addEventListener("keyup",i=>{t.classList.contains("has-focus")&&(i.key==="Escape"||!e.matches(":focus-within")&&!n.matches(":focus"))&&(n.blur(),re(t))})}function re(t){t.classList.remove("has-focus")}function Ue(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ye(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${ye(l.parent,i)}.${d}`);let m=document.createElement("li");m.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=c+d,m.append(p),p.addEventListener("focus",()=>{e.querySelector(".current")?.classList.remove("current"),m.classList.add("current")}),e.appendChild(m)}}function me(t,e,n){let r=t.querySelector(".current");if(!r)r=t.querySelector(n==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let i=r;if(n===1)do i=i.nextElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);else do i=i.previousElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);i?(r.classList.remove("current"),i.classList.add("current")):n===-1&&(r.classList.remove("current"),e.focus())}}function Je(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),re(e)}}function ye(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(ne(t.substring(s,o)),`${ne(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ne(t.substring(s))),i.join("")}var Ge={"&":"&","<":"<",">":">","'":"'",'"':"""};function ne(t){return t.replace(/[&<>"'"]/g,e=>Ge[e])}var I=class{el;app;constructor(e){this.el=e.el,this.app=e.app}};var A="mousedown",Ee="mousemove",B="mouseup",X={x:0,y:0},xe=!1,ie=!1,Xe=!1,D=!1,Le=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(Le?"is-mobile":"not-mobile");Le&&"ontouchstart"in document.documentElement&&(Xe=!0,A="touchstart",Ee="touchmove",B="touchend");document.addEventListener(A,t=>{ie=!0,D=!1;let e=A=="touchstart"?t.targetTouches[0]:t;X.y=e.pageY||0,X.x=e.pageX||0});document.addEventListener(Ee,t=>{if(ie&&!D){let e=A=="touchstart"?t.targetTouches[0]:t,n=X.x-(e.pageX||0),r=X.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ie=!1});document.addEventListener("click",t=>{xe&&(t.preventDefault(),t.stopImmediatePropagation(),xe=!1)});var Y=class extends I{active;className;constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(A,n=>this.onDocumentPointerDown(n)),document.addEventListener(B,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var se;try{se=localStorage}catch{se={getItem(){return null},setItem(){}}}var C=se;var be=document.head.appendChild(document.createElement("style"));be.dataset.for="filters";var Z=class extends I{key;value;constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),be.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=C.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){C.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var oe=new Map,ae=class{open;accordions=[];key;constructor(e,n){this.key=e,this.open=n}add(e){this.accordions.push(e),e.open=this.open,e.addEventListener("toggle",()=>{this.toggle(e.open)})}toggle(e){for(let n of this.accordions)n.open=e;C.setItem(this.key,e.toString())}},K=class extends I{constructor(e){super(e);let n=this.el.querySelector("summary"),r=n.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)});let i=`tsd-accordion-${n.dataset.key??n.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`,s;if(oe.has(i))s=oe.get(i);else{let o=C.getItem(i),a=o?o==="true":this.el.open;s=new ae(i,a),oe.set(i,s)}s.add(this.el)}};function Se(t){let e=C.getItem("tsd-theme")||"os";t.value=e,we(e),t.addEventListener("change",()=>{C.setItem("tsd-theme",t.value),we(t.value)})}function we(t){document.documentElement.dataset.theme=t}var ee;function Ce(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Te),Te())}async function Te(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let e=await H(window.navigationData);ee=document.documentElement.dataset.base,ee.endsWith("/")||(ee+="/"),t.innerHTML="";for(let n of e)Ie(n,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Ie(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',ke(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let c of t.children)Ie(c,l,i)}else ke(t,r,t.class)}function ke(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=ee+t.path,n&&(r.className=n),location.pathname===r.pathname&&!r.href.includes("#")&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else{let r=e.appendChild(document.createElement("span"));r.innerHTML='',r.appendChild(document.createElement("span")).textContent=t.text}}var te=document.documentElement.dataset.base;te.endsWith("/")||(te+="/");function Pe(){document.querySelector(".tsd-full-hierarchy")?Ye():document.querySelector(".tsd-hierarchy")&&Ze()}function Ye(){document.addEventListener("click",r=>{let i=r.target;for(;i.parentElement&&i.parentElement.tagName!="LI";)i=i.parentElement;i.dataset.dropdown&&(i.dataset.dropdown=String(i.dataset.dropdown!=="true"))});let t=new Map,e=new Set;for(let r of document.querySelectorAll(".tsd-full-hierarchy [data-refl]")){let i=r.querySelector("ul");t.has(r.dataset.refl)?e.add(r.dataset.refl):i&&t.set(r.dataset.refl,i)}for(let r of e)n(r);function n(r){let i=t.get(r).cloneNode(!0);i.querySelectorAll("[id]").forEach(s=>{s.removeAttribute("id")}),i.querySelectorAll("[data-dropdown]").forEach(s=>{s.dataset.dropdown="false"});for(let s of document.querySelectorAll(`[data-refl="${r}"]`)){let o=tt(),a=s.querySelector("ul");s.insertBefore(o,a),o.dataset.dropdown=String(!!a),a||s.appendChild(i.cloneNode(!0))}}}function Ze(){let t=document.getElementById("tsd-hierarchy-script");t&&(t.addEventListener("load",Qe),Qe())}async function Qe(){let t=document.querySelector(".tsd-panel.tsd-hierarchy:has(h4 a)");if(!t||!window.hierarchyData)return;let e=+t.dataset.refl,n=await H(window.hierarchyData),r=t.querySelector("ul"),i=document.createElement("ul");if(i.classList.add("tsd-hierarchy"),Ke(i,n,e),r.querySelectorAll("li").length==i.querySelectorAll("li").length)return;let s=document.createElement("span");s.classList.add("tsd-hierarchy-toggle"),s.textContent=window.translations.hierarchy_expand,t.querySelector("h4 a")?.insertAdjacentElement("afterend",s),s.insertAdjacentText("beforebegin",", "),s.addEventListener("click",()=>{s.textContent===window.translations.hierarchy_expand?(r.insertAdjacentElement("afterend",i),r.remove(),s.textContent=window.translations.hierarchy_collapse):(i.insertAdjacentElement("afterend",r),i.remove(),s.textContent=window.translations.hierarchy_expand)})}function Ke(t,e,n){let r=e.roots.filter(i=>et(e,i,n));for(let i of r)t.appendChild(Oe(e,i,n))}function Oe(t,e,n,r=new Set){if(r.has(e))return;r.add(e);let i=t.reflections[e],s=document.createElement("li");if(s.classList.add("tsd-hierarchy-item"),e===n){let o=s.appendChild(document.createElement("span"));o.textContent=i.name,o.classList.add("tsd-hierarchy-target")}else{for(let a of i.uniqueNameParents||[]){let l=t.reflections[a],c=s.appendChild(document.createElement("a"));c.textContent=l.name,c.href=te+l.url,c.className=l.class+" tsd-signature-type",s.append(document.createTextNode("."))}let o=s.appendChild(document.createElement("a"));o.textContent=t.reflections[e].name,o.href=te+i.url,o.className=i.class+" tsd-signature-type"}if(i.children){let o=s.appendChild(document.createElement("ul"));o.classList.add("tsd-hierarchy");for(let a of i.children){let l=Oe(t,a,n,r);l&&o.appendChild(l)}}return r.delete(e),s}function et(t,e,n){if(e===n)return!0;let r=new Set,i=[t.reflections[e]];for(;i.length;){let s=i.pop();if(!r.has(s)){r.add(s);for(let o of s.children||[]){if(o===n)return!0;i.push(t.reflections[o])}}}return!1}function tt(){let t=document.createElementNS("http://www.w3.org/2000/svg","svg");return t.setAttribute("width","20"),t.setAttribute("height","20"),t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.innerHTML='',t}G(Y,"a[data-toggle]");G(K,".tsd-accordion");G(Z,".tsd-filter-item input[type=checkbox]");var _e=document.getElementById("tsd-theme");_e&&Se(_e);var nt=new J;Object.defineProperty(window,"app",{value:nt});ve();Ce();Pe();})(); /*! Bundled license information: lunr/lunr.js: diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 54693ba..d9dd0b7 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE42TwU7DMAyG3yXniooJJtTbRFUkGDCN3hCHEFwaNXWixBFMaO+O6BCsLPW45OIv3x/ZzuOHIHgnUYgHayTKxSsg3WgSmXCSWlEIZWQIEPJx/aSl3ohMdBpfRHE6u9hmP6ZLawwo0hZLcMZuesA9n0YC30gFIU+BY/HsfJ4U37uvMxyxflOs0oMk69OiXY27XgGpduW1gjUEZzFA0nSIcdIr/fxmfTfEQy1Dt4Zp9RTMBVxHpwl8bTvAUpJMiv9CnHAZjV0oZSNSCSS1CWw7pnEu5FYj/c72rqrZjEmai1jF3jURlzKiall9kjymriIO7eS2N8Gx2g21/1zCNMrJ1bBUu49fW2v2XtxEHBob8gNobJyfbZ8+AWWuiIJlBAAA" \ No newline at end of file +window.navigationData = "eJyNlMFKw0AQht9lz8Fg0SK5FUMFrVpqbuJhXSfNks3ssjuLFum7S1PRxm6mXnKZb74/DD/7/CkIPkgU4skaiXK2BqQ7TSITTlIjCqGMDAFCPpyfNdQZkYlW45sozidX2+zHdG2NAUXaYgnO2E0HeODTSOBrqSDkKXAonlxOk+JHt/uGE9Zvildirdcjnt2IXfYgyfr09n7Grc+BVLP0WsEKgrMYIGk6xjjpjX59t77t46GSoV3BuHoM5gJuo9MEvrItYClJJsV/IU64iMbOlLIRqQSS2gT2HOM4F3KvkX6L8TCv2IxRmotYxs7VERcyompYfZI8pZ5H7M/JVT/BsdoNNf8sYRrl5Kov1f7VqKw1B39cR+wPG/IjaGicXmxfvgDluqEc" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 443f1f7..b50d74f 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css index 178bfb0..7f80f3d 100644 --- a/docs/assets/style.css +++ b/docs/assets/style.css @@ -1,115 +1,256 @@ -:root { - /* Light */ - --light-color-background: #f2f4f8; - --light-color-background-secondary: #eff0f1; - --light-color-warning-text: #222; - --light-color-background-warning: #e6e600; - --light-color-accent: #c5c7c9; - --light-color-active-menu-item: var(--light-color-accent); - --light-color-text: #222; - --light-color-text-aside: #6e6e6e; - - --light-color-icon-background: var(--light-color-background); - --light-color-icon-text: var(--light-color-text); - - --light-color-comment-tag-text: var(--light-color-text); - --light-color-comment-tag: var(--light-color-background); - - --light-color-link: #1f70c2; - --light-color-focus-outline: #3584e4; - - --light-color-ts-keyword: #056bd6; - --light-color-ts-project: #b111c9; - --light-color-ts-module: var(--light-color-ts-project); - --light-color-ts-namespace: var(--light-color-ts-project); - --light-color-ts-enum: #7e6f15; - --light-color-ts-enum-member: var(--light-color-ts-enum); - --light-color-ts-variable: #4760ec; - --light-color-ts-function: #572be7; - --light-color-ts-class: #1f70c2; - --light-color-ts-interface: #108024; - --light-color-ts-constructor: #4d7fff; - --light-color-ts-property: #ff984d; - --light-color-ts-method: #ff4db8; - --light-color-ts-reference: #ff4d82; - --light-color-ts-call-signature: var(--light-color-ts-method); - --light-color-ts-index-signature: var(--light-color-ts-property); - --light-color-ts-constructor-signature: var(--light-color-ts-constructor); - --light-color-ts-parameter: var(--light-color-ts-variable); - /* type literal not included as links will never be generated to it */ - --light-color-ts-type-parameter: #a55c0e; - --light-color-ts-accessor: #ff4d4d; - --light-color-ts-get-signature: var(--light-color-ts-accessor); - --light-color-ts-set-signature: var(--light-color-ts-accessor); - --light-color-ts-type-alias: #d51270; - /* reference not included as links will be colored with the kind that it points to */ - --light-color-document: #000000; - - --light-external-icon: url("data:image/svg+xml;utf8,"); - --light-color-scheme: light; - - /* Dark */ - --dark-color-background: #2b2e33; - --dark-color-background-secondary: #1e2024; - --dark-color-background-warning: #bebe00; - --dark-color-warning-text: #222; - --dark-color-accent: #9096a2; - --dark-color-active-menu-item: #5d5d6a; - --dark-color-text: #f5f5f5; - --dark-color-text-aside: #dddddd; - - --dark-color-icon-background: var(--dark-color-background-secondary); - --dark-color-icon-text: var(--dark-color-text); - - --dark-color-comment-tag-text: var(--dark-color-text); - --dark-color-comment-tag: var(--dark-color-background); - - --dark-color-link: #00aff4; - --dark-color-focus-outline: #4c97f2; - - --dark-color-ts-keyword: #3399ff; - --dark-color-ts-project: #e358ff; - --dark-color-ts-module: var(--dark-color-ts-project); - --dark-color-ts-namespace: var(--dark-color-ts-project); - --dark-color-ts-enum: #f4d93e; - --dark-color-ts-enum-member: var(--dark-color-ts-enum); - --dark-color-ts-variable: #798dff; - --dark-color-ts-function: #a280ff; - --dark-color-ts-class: #8ac4ff; - --dark-color-ts-interface: #6cff87; - --dark-color-ts-constructor: #4d7fff; - --dark-color-ts-property: #ff984d; - --dark-color-ts-method: #ff4db8; - --dark-color-ts-reference: #ff4d82; - --dark-color-ts-call-signature: var(--dark-color-ts-method); - --dark-color-ts-index-signature: var(--dark-color-ts-property); - --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); - --dark-color-ts-parameter: var(--dark-color-ts-variable); - /* type literal not included as links will never be generated to it */ - --dark-color-ts-type-parameter: #e07d13; - --dark-color-ts-accessor: #ff4d4d; - --dark-color-ts-get-signature: var(--dark-color-ts-accessor); - --dark-color-ts-set-signature: var(--dark-color-ts-accessor); - --dark-color-ts-type-alias: #ff6492; - /* reference not included as links will be colored with the kind that it points to */ - --dark-color-document: #ffffff; - - --dark-external-icon: url("data:image/svg+xml;utf8,"); - --dark-color-scheme: dark; -} - -@media (prefers-color-scheme: light) { +@layer typedoc { :root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-accent); + --light-color-text: #222; + --light-color-text-aside: #6e6e6e; + + --light-color-icon-background: var(--light-color-background); + --light-color-icon-text: var(--light-color-text); + + --light-color-comment-tag-text: var(--light-color-text); + --light-color-comment-tag: var(--light-color-background); + + --light-color-link: #1f70c2; + --light-color-focus-outline: #3584e4; + + --light-color-ts-keyword: #056bd6; + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: #9f5f30; + --light-color-ts-method: #be3989; + --light-color-ts-reference: #ff4d82; + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var( + --light-color-ts-constructor + ); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: #a55c0e; + --light-color-ts-accessor: #c73c3c; + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + --light-color-document: #000000; + + --light-color-alert-note: #0969d9; + --light-color-alert-tip: #1a7f37; + --light-color-alert-important: #8250df; + --light-color-alert-warning: #9a6700; + --light-color-alert-caution: #cf222e; + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: #5d5d6a; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-icon-text: var(--dark-color-text); + + --dark-color-comment-tag-text: var(--dark-color-text); + --dark-color-comment-tag: var(--dark-color-background); + + --dark-color-link: #00aff4; + --dark-color-focus-outline: #4c97f2; + + --dark-color-ts-keyword: #3399ff; + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: #ff984d; + --dark-color-ts-method: #ff4db8; + --dark-color-ts-reference: #ff4d82; + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: #e07d13; + --dark-color-ts-accessor: #ff6060; + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + --dark-color-document: #ffffff; + + --dark-color-alert-note: #0969d9; + --dark-color-alert-tip: #1a7f37; + --dark-color-alert-important: #8250df; + --dark-color-alert-warning: #9a6700; + --dark-color-alert-caution: #cf222e; + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; + } + + @media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var( + --light-color-background-secondary + ); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + + --color-icon-background: var(--light-color-icon-background); + --color-icon-text: var(--light-color-icon-text); + + --color-comment-tag-text: var(--light-color-text); + --color-comment-tag: var(--light-color-background); + + --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-project: var(--light-color-ts-project); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-reference: var(--light-color-ts-reference); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); + + --color-alert-note: var(--light-color-alert-note); + --color-alert-tip: var(--light-color-alert-tip); + --color-alert-important: var(--light-color-alert-important); + --color-alert-warning: var(--light-color-alert-warning); + --color-alert-caution: var(--light-color-alert-caution); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } + } + + @media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var( + --dark-color-background-secondary + ); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + + --color-icon-background: var(--dark-color-icon-background); + --color-icon-text: var(--dark-color-icon-text); + + --color-comment-tag-text: var(--dark-color-text); + --color-comment-tag: var(--dark-color-background); + + --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-project: var(--dark-color-ts-project); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-reference: var(--dark-color-ts-reference); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); + + --color-alert-note: var(--dark-color-alert-note); + --color-alert-tip: var(--dark-color-alert-tip); + --color-alert-important: var(--dark-color-alert-important); + --color-alert-warning: var(--dark-color-alert-warning); + --color-alert-caution: var(--dark-color-alert-caution); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } + } + + html { + color-scheme: var(--color-scheme); + } + + body { + margin: 0; + } + + :root[data-theme="light"] { --color-background: var(--light-color-background); --color-background-secondary: var(--light-color-background-secondary); --color-background-warning: var(--light-color-background-warning); --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); --color-accent: var(--light-color-accent); --color-active-menu-item: var(--light-color-active-menu-item); --color-text: var(--light-color-text); --color-text-aside: var(--light-color-text-aside); - - --color-icon-background: var(--light-color-icon-background); --color-icon-text: var(--light-color-icon-text); --color-comment-tag-text: var(--light-color-text); @@ -145,23 +286,26 @@ --color-ts-type-alias: var(--light-color-ts-type-alias); --color-document: var(--light-color-document); + --color-note: var(--light-color-note); + --color-tip: var(--light-color-tip); + --color-important: var(--light-color-important); + --color-warning: var(--light-color-warning); + --color-caution: var(--light-color-caution); + --external-icon: var(--light-external-icon); --color-scheme: var(--light-color-scheme); } -} -@media (prefers-color-scheme: dark) { - :root { + :root[data-theme="dark"] { --color-background: var(--dark-color-background); --color-background-secondary: var(--dark-color-background-secondary); --color-background-warning: var(--dark-color-background-warning); --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); --color-accent: var(--dark-color-accent); --color-active-menu-item: var(--dark-color-active-menu-item); --color-text: var(--dark-color-text); --color-text-aside: var(--dark-color-text-aside); - - --color-icon-background: var(--dark-color-icon-background); --color-icon-text: var(--dark-color-icon-text); --color-comment-tag-text: var(--dark-color-text); @@ -197,1297 +341,1270 @@ --color-ts-type-alias: var(--dark-color-ts-type-alias); --color-document: var(--dark-color-document); + --color-note: var(--dark-color-note); + --color-tip: var(--dark-color-tip); + --color-important: var(--dark-color-important); + --color-warning: var(--dark-color-warning); + --color-caution: var(--dark-color-caution); + --external-icon: var(--dark-external-icon); --color-scheme: var(--dark-color-scheme); } -} -html { - color-scheme: var(--color-scheme); -} - -body { - margin: 0; -} - -:root[data-theme="light"] { - --color-background: var(--light-color-background); - --color-background-secondary: var(--light-color-background-secondary); - --color-background-warning: var(--light-color-background-warning); - --color-warning-text: var(--light-color-warning-text); - --color-icon-background: var(--light-color-icon-background); - --color-accent: var(--light-color-accent); - --color-active-menu-item: var(--light-color-active-menu-item); - --color-text: var(--light-color-text); - --color-text-aside: var(--light-color-text-aside); - --color-icon-text: var(--light-color-icon-text); - - --color-comment-tag-text: var(--light-color-text); - --color-comment-tag: var(--light-color-background); - - --color-link: var(--light-color-link); - --color-focus-outline: var(--light-color-focus-outline); - - --color-ts-keyword: var(--light-color-ts-keyword); - --color-ts-project: var(--light-color-ts-project); - --color-ts-module: var(--light-color-ts-module); - --color-ts-namespace: var(--light-color-ts-namespace); - --color-ts-enum: var(--light-color-ts-enum); - --color-ts-enum-member: var(--light-color-ts-enum-member); - --color-ts-variable: var(--light-color-ts-variable); - --color-ts-function: var(--light-color-ts-function); - --color-ts-class: var(--light-color-ts-class); - --color-ts-interface: var(--light-color-ts-interface); - --color-ts-constructor: var(--light-color-ts-constructor); - --color-ts-property: var(--light-color-ts-property); - --color-ts-method: var(--light-color-ts-method); - --color-ts-reference: var(--light-color-ts-reference); - --color-ts-call-signature: var(--light-color-ts-call-signature); - --color-ts-index-signature: var(--light-color-ts-index-signature); - --color-ts-constructor-signature: var( - --light-color-ts-constructor-signature - ); - --color-ts-parameter: var(--light-color-ts-parameter); - --color-ts-type-parameter: var(--light-color-ts-type-parameter); - --color-ts-accessor: var(--light-color-ts-accessor); - --color-ts-get-signature: var(--light-color-ts-get-signature); - --color-ts-set-signature: var(--light-color-ts-set-signature); - --color-ts-type-alias: var(--light-color-ts-type-alias); - --color-document: var(--light-color-document); - - --external-icon: var(--light-external-icon); - --color-scheme: var(--light-color-scheme); -} - -:root[data-theme="dark"] { - --color-background: var(--dark-color-background); - --color-background-secondary: var(--dark-color-background-secondary); - --color-background-warning: var(--dark-color-background-warning); - --color-warning-text: var(--dark-color-warning-text); - --color-icon-background: var(--dark-color-icon-background); - --color-accent: var(--dark-color-accent); - --color-active-menu-item: var(--dark-color-active-menu-item); - --color-text: var(--dark-color-text); - --color-text-aside: var(--dark-color-text-aside); - --color-icon-text: var(--dark-color-icon-text); - - --color-comment-tag-text: var(--dark-color-text); - --color-comment-tag: var(--dark-color-background); - - --color-link: var(--dark-color-link); - --color-focus-outline: var(--dark-color-focus-outline); - - --color-ts-keyword: var(--dark-color-ts-keyword); - --color-ts-project: var(--dark-color-ts-project); - --color-ts-module: var(--dark-color-ts-module); - --color-ts-namespace: var(--dark-color-ts-namespace); - --color-ts-enum: var(--dark-color-ts-enum); - --color-ts-enum-member: var(--dark-color-ts-enum-member); - --color-ts-variable: var(--dark-color-ts-variable); - --color-ts-function: var(--dark-color-ts-function); - --color-ts-class: var(--dark-color-ts-class); - --color-ts-interface: var(--dark-color-ts-interface); - --color-ts-constructor: var(--dark-color-ts-constructor); - --color-ts-property: var(--dark-color-ts-property); - --color-ts-method: var(--dark-color-ts-method); - --color-ts-reference: var(--dark-color-ts-reference); - --color-ts-call-signature: var(--dark-color-ts-call-signature); - --color-ts-index-signature: var(--dark-color-ts-index-signature); - --color-ts-constructor-signature: var( - --dark-color-ts-constructor-signature - ); - --color-ts-parameter: var(--dark-color-ts-parameter); - --color-ts-type-parameter: var(--dark-color-ts-type-parameter); - --color-ts-accessor: var(--dark-color-ts-accessor); - --color-ts-get-signature: var(--dark-color-ts-get-signature); - --color-ts-set-signature: var(--dark-color-ts-set-signature); - --color-ts-type-alias: var(--dark-color-ts-type-alias); - --color-document: var(--dark-color-document); - - --external-icon: var(--dark-external-icon); - --color-scheme: var(--dark-color-scheme); -} - -*:focus-visible, -.tsd-accordion-summary:focus-visible svg { - outline: 2px solid var(--color-focus-outline); -} - -.always-visible, -.always-visible .tsd-signatures { - display: inherit !important; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - line-height: 1.2; -} - -h1 { - font-size: 1.875rem; - margin: 0.67rem 0; -} - -h2 { - font-size: 1.5rem; - margin: 0.83rem 0; -} - -h3 { - font-size: 1.25rem; - margin: 1rem 0; -} - -h4 { - font-size: 1.05rem; - margin: 1.33rem 0; -} - -h5 { - font-size: 1rem; - margin: 1.5rem 0; -} - -h6 { - font-size: 0.875rem; - margin: 2.33rem 0; -} - -dl, -menu, -ol, -ul { - margin: 1em 0; -} - -dd { - margin: 0 0 0 40px; -} - -.container { - max-width: 1700px; - padding: 0 2rem; -} - -/* Footer */ -footer { - border-top: 1px solid var(--color-accent); - padding-top: 1rem; - padding-bottom: 1rem; - max-height: 3.5rem; -} -footer > p { - margin: 0 1em; -} - -.container-main { - margin: 0 auto; - /* toolbar, footer, margin */ - min-height: calc(100vh - 41px - 56px - 4rem); -} - -@keyframes fade-in { - from { - opacity: 0; + *:focus-visible, + .tsd-accordion-summary:focus-visible svg { + outline: 2px solid var(--color-focus-outline); } - to { + + .always-visible, + .always-visible .tsd-signatures { + display: inherit !important; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + line-height: 1.2; + } + + h1 { + font-size: 1.875rem; + margin: 0.67rem 0; + } + + h2 { + font-size: 1.5rem; + margin: 0.83rem 0; + } + + h3 { + font-size: 1.25rem; + margin: 1rem 0; + } + + h4 { + font-size: 1.05rem; + margin: 1.33rem 0; + } + + h5 { + font-size: 1rem; + margin: 1.5rem 0; + } + + h6 { + font-size: 0.875rem; + margin: 2.33rem 0; + } + + dl, + menu, + ol, + ul { + margin: 1em 0; + } + + dd { + margin: 0 0 0 34px; + } + + .container { + max-width: 1700px; + padding: 0 2rem; + } + + /* Footer */ + footer { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; + } + footer > p { + margin: 0 1em; + } + + .container-main { + margin: 0 auto; + /* toolbar, footer, margin */ + min-height: calc(100vh - 41px - 56px - 4rem); + } + + @keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } + } + @keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } + } + @keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } + } + @keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } + } + @keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } + } + body { + background: var(--color-background); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + color: var(--color-text); + } + + a { + color: var(--color-link); + text-decoration: none; + } + a:hover { + text-decoration: underline; + } + a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; + } + a.tsd-anchor-link { + color: var(--color-text); + } + + code, + pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; + } + + pre { + position: relative; + white-space: pre-wrap; + word-wrap: break-word; + padding: 10px; + border: 1px solid var(--color-accent); + margin-bottom: 8px; + } + pre code { + padding: 0; + font-size: 100%; + } + pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; + } + pre:hover > button, + pre > button.visible { opacity: 1; } -} -@keyframes fade-out { - from { - opacity: 1; - visibility: visible; + + blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; } - to { + + .tsd-typography { + line-height: 1.333em; + } + .tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; + } + .tsd-typography .tsd-index-panel h3, + .tsd-index-panel .tsd-typography h3, + .tsd-typography h4, + .tsd-typography h5, + .tsd-typography h6 { + font-size: 1em; + } + .tsd-typography h5, + .tsd-typography h6 { + font-weight: normal; + } + .tsd-typography p, + .tsd-typography ul, + .tsd-typography ol { + margin: 1em 0; + } + .tsd-typography table { + border-collapse: collapse; + border: none; + } + .tsd-typography td, + .tsd-typography th { + padding: 6px 13px; + border: 1px solid var(--color-accent); + } + .tsd-typography thead, + .tsd-typography tr:nth-child(even) { + background-color: var(--color-background-secondary); + } + + .tsd-alert { + padding: 8px 16px; + margin-bottom: 16px; + border-left: 0.25em solid var(--alert-color); + } + .tsd-alert blockquote > :last-child, + .tsd-alert > :last-child { + margin-bottom: 0; + } + .tsd-alert-title { + color: var(--alert-color); + display: inline-flex; + align-items: center; + } + .tsd-alert-title span { + margin-left: 4px; + } + + .tsd-alert-note { + --alert-color: var(--color-alert-note); + } + .tsd-alert-tip { + --alert-color: var(--color-alert-tip); + } + .tsd-alert-important { + --alert-color: var(--color-alert-important); + } + .tsd-alert-warning { + --alert-color: var(--color-alert-warning); + } + .tsd-alert-caution { + --alert-color: var(--color-alert-caution); + } + + .tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); + } + .tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; + } + .tsd-breadcrumb a:hover { + text-decoration: underline; + } + .tsd-breadcrumb li { + display: inline; + } + .tsd-breadcrumb li:after { + content: " / "; + } + + .tsd-comment-tags { + display: flex; + flex-direction: column; + } + dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; + } + dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; + } + dl.tsd-comment-tag-group dd { + margin: 0; + } + code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; + } + h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; + } + + dl.tsd-comment-tag-group dd:before, + dl.tsd-comment-tag-group dd:after { + content: " "; + } + dl.tsd-comment-tag-group dd pre, + dl.tsd-comment-tag-group dd:after { + clear: both; + } + dl.tsd-comment-tag-group p { + margin: 0; + } + + .tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; + } + .tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; + } + + .tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; + } + .tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; + } + .tsd-filter-input { + display: flex; + width: -moz-fit-content; + width: fit-content; + align-items: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + } + .tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; opacity: 0; } -} -@keyframes fade-in-delayed { - 0% { - opacity: 0; + .tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; } - 33% { - opacity: 0; - } - 100% { - opacity: 1; - } -} -@keyframes fade-out-delayed { - 0% { - opacity: 1; - visibility: visible; - } - 66% { - opacity: 0; - } - 100% { - opacity: 0; - } -} -@keyframes pop-in-from-right { - from { - transform: translate(100%, 0); - } - to { - transform: translate(0, 0); - } -} -@keyframes pop-out-to-right { - from { - transform: translate(0, 0); - visibility: visible; - } - to { - transform: translate(100%, 0); - } -} -body { - background: var(--color-background); - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", - Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; - font-size: 16px; - color: var(--color-text); -} - -a { - color: var(--color-link); - text-decoration: none; -} -a:hover { - text-decoration: underline; -} -a.external[target="_blank"] { - background-image: var(--external-icon); - background-position: top 3px right; - background-repeat: no-repeat; - padding-right: 13px; -} -a.tsd-anchor-link { - color: var(--color-text); -} - -code, -pre { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - padding: 0.2em; - margin: 0; - font-size: 0.875rem; - border-radius: 0.8em; -} - -pre { - position: relative; - white-space: pre-wrap; - word-wrap: break-word; - padding: 10px; - border: 1px solid var(--color-accent); -} -pre code { - padding: 0; - font-size: 100%; -} -pre > button { - position: absolute; - top: 10px; - right: 10px; - opacity: 0; - transition: opacity 0.1s; - box-sizing: border-box; -} -pre:hover > button, -pre > button.visible { - opacity: 1; -} - -blockquote { - margin: 1em 0; - padding-left: 1em; - border-left: 4px solid gray; -} - -.tsd-typography { - line-height: 1.333em; -} -.tsd-typography ul { - list-style: square; - padding: 0 0 0 20px; - margin: 0; -} -.tsd-typography .tsd-index-panel h3, -.tsd-index-panel .tsd-typography h3, -.tsd-typography h4, -.tsd-typography h5, -.tsd-typography h6 { - font-size: 1em; -} -.tsd-typography h5, -.tsd-typography h6 { - font-weight: normal; -} -.tsd-typography p, -.tsd-typography ul, -.tsd-typography ol { - margin: 1em 0; -} -.tsd-typography table { - border-collapse: collapse; - border: none; -} -.tsd-typography td, -.tsd-typography th { - padding: 6px 13px; - border: 1px solid var(--color-accent); -} -.tsd-typography thead, -.tsd-typography tr:nth-child(even) { - background-color: var(--color-background-secondary); -} - -.tsd-breadcrumb { - margin: 0; - padding: 0; - color: var(--color-text-aside); -} -.tsd-breadcrumb a { - color: var(--color-text-aside); - text-decoration: none; -} -.tsd-breadcrumb a:hover { - text-decoration: underline; -} -.tsd-breadcrumb li { - display: inline; -} -.tsd-breadcrumb li:after { - content: " / "; -} - -.tsd-comment-tags { - display: flex; - flex-direction: column; -} -dl.tsd-comment-tag-group { - display: flex; - align-items: center; - overflow: hidden; - margin: 0.5em 0; -} -dl.tsd-comment-tag-group dt { - display: flex; - margin-right: 0.5em; - font-size: 0.875em; - font-weight: normal; -} -dl.tsd-comment-tag-group dd { - margin: 0; -} -code.tsd-tag { - padding: 0.25em 0.4em; - border: 0.1em solid var(--color-accent); - margin-right: 0.25em; - font-size: 70%; -} -h1 code.tsd-tag:first-of-type { - margin-left: 0.25em; -} - -dl.tsd-comment-tag-group dd:before, -dl.tsd-comment-tag-group dd:after { - content: " "; -} -dl.tsd-comment-tag-group dd pre, -dl.tsd-comment-tag-group dd:after { - clear: both; -} -dl.tsd-comment-tag-group p { - margin: 0; -} - -.tsd-panel.tsd-comment .lead { - font-size: 1.1em; - line-height: 1.333em; - margin-bottom: 2em; -} -.tsd-panel.tsd-comment .lead:last-child { - margin-bottom: 0; -} - -.tsd-filter-visibility h4 { - font-size: 1rem; - padding-top: 0.75rem; - padding-bottom: 0.5rem; - margin: 0; -} -.tsd-filter-item:not(:last-child) { - margin-bottom: 0.5rem; -} -.tsd-filter-input { - display: flex; - width: -moz-fit-content; - width: fit-content; - align-items: center; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; -} -.tsd-filter-input input[type="checkbox"] { - cursor: pointer; - position: absolute; - width: 1.5em; - height: 1.5em; - opacity: 0; -} -.tsd-filter-input input[type="checkbox"]:disabled { - pointer-events: none; -} -.tsd-filter-input svg { - cursor: pointer; - width: 1.5em; - height: 1.5em; - margin-right: 0.5em; - border-radius: 0.33em; - /* Leaving this at full opacity breaks event listeners on Firefox. + .tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. Don't remove unless you know what you're doing. */ - opacity: 0.99; -} -.tsd-filter-input input[type="checkbox"]:focus-visible + svg { - outline: 2px solid var(--color-focus-outline); -} -.tsd-checkbox-background { - fill: var(--color-accent); -} -input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { - stroke: var(--color-text); -} -.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { - fill: var(--color-background); - stroke: var(--color-accent); - stroke-width: 0.25rem; -} -.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { - stroke: var(--color-accent); -} - -.settings-label { - font-weight: bold; - text-transform: uppercase; - display: inline-block; -} - -.tsd-filter-visibility .settings-label { - margin: 0.75rem 0 0.5rem 0; -} - -.tsd-theme-toggle .settings-label { - margin: 0.75rem 0.75rem 0 0; -} - -.tsd-hierarchy { - list-style: square; - margin: 0; -} -.tsd-hierarchy .target { - font-weight: bold; -} - -.tsd-full-hierarchy:not(:last-child) { - margin-bottom: 1em; - padding-bottom: 1em; - border-bottom: 1px solid var(--color-accent); -} -.tsd-full-hierarchy, -.tsd-full-hierarchy ul { - list-style: none; - margin: 0; - padding: 0; -} -.tsd-full-hierarchy ul { - padding-left: 1.5rem; -} -.tsd-full-hierarchy a { - padding: 0.25rem 0 !important; - font-size: 1rem; - display: inline-flex; - align-items: center; - color: var(--color-text); -} - -.tsd-panel-group.tsd-index-group { - margin-bottom: 0; -} -.tsd-index-panel .tsd-index-list { - list-style: none; - line-height: 1.333em; - margin: 0; - padding: 0.25rem 0 0 0; - overflow: hidden; - display: grid; - grid-template-columns: repeat(3, 1fr); - column-gap: 1rem; - grid-template-rows: auto; -} -@media (max-width: 1024px) { - .tsd-index-panel .tsd-index-list { - grid-template-columns: repeat(2, 1fr); + opacity: 0.99; } -} -@media (max-width: 768px) { - .tsd-index-panel .tsd-index-list { - grid-template-columns: repeat(1, 1fr); + .tsd-filter-input input[type="checkbox"]:focus-visible + svg { + outline: 2px solid var(--color-focus-outline); + } + .tsd-checkbox-background { + fill: var(--color-accent); + } + input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); + } + .tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; + } + .tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); } -} -.tsd-index-panel .tsd-index-list li { - -webkit-page-break-inside: avoid; - -moz-page-break-inside: avoid; - -ms-page-break-inside: avoid; - -o-page-break-inside: avoid; - page-break-inside: avoid; -} -.tsd-flag { - display: inline-block; - padding: 0.25em 0.4em; - border-radius: 4px; - color: var(--color-comment-tag-text); - background-color: var(--color-comment-tag); - text-indent: 0; - font-size: 75%; - line-height: 1; - font-weight: normal; -} - -.tsd-anchor { - position: relative; - top: -100px; -} - -.tsd-member { - position: relative; -} -.tsd-member .tsd-anchor + h3 { - display: flex; - align-items: center; - margin-top: 0; - margin-bottom: 0; - border-bottom: none; -} - -.tsd-navigation.settings { - margin: 1rem 0; -} -.tsd-navigation > a, -.tsd-navigation .tsd-accordion-summary { - width: calc(100% - 0.25rem); - display: flex; - align-items: center; -} -.tsd-navigation a, -.tsd-navigation summary > span, -.tsd-page-navigation a { - display: flex; - width: calc(100% - 0.25rem); - align-items: center; - padding: 0.25rem; - color: var(--color-text); - text-decoration: none; - box-sizing: border-box; -} -.tsd-navigation a.current, -.tsd-page-navigation a.current { - background: var(--color-active-menu-item); -} -.tsd-navigation a:hover, -.tsd-page-navigation a:hover { - text-decoration: underline; -} -.tsd-navigation ul, -.tsd-page-navigation ul { - margin-top: 0; - margin-bottom: 0; - padding: 0; - list-style: none; -} -.tsd-navigation li, -.tsd-page-navigation li { - padding: 0; - max-width: 100%; -} -.tsd-navigation .tsd-nav-link { - display: none; -} -.tsd-nested-navigation { - margin-left: 3rem; -} -.tsd-nested-navigation > li > details { - margin-left: -1.5rem; -} -.tsd-small-nested-navigation { - margin-left: 1.5rem; -} -.tsd-small-nested-navigation > li > details { - margin-left: -1.5rem; -} - -.tsd-page-navigation-section { - margin-left: 10px; -} -.tsd-page-navigation-section > summary { - padding: 0.25rem; -} -.tsd-page-navigation-section > div { - margin-left: 20px; -} -.tsd-page-navigation ul { - padding-left: 1.75rem; -} - -#tsd-sidebar-links a { - margin-top: 0; - margin-bottom: 0.5rem; - line-height: 1.25rem; -} -#tsd-sidebar-links a:last-of-type { - margin-bottom: 0; -} - -a.tsd-index-link { - padding: 0.25rem 0 !important; - font-size: 1rem; - line-height: 1.25rem; - display: inline-flex; - align-items: center; - color: var(--color-text); -} -.tsd-accordion-summary { - list-style-type: none; /* hide marker on non-safari */ - outline: none; /* broken on safari, so just hide it */ -} -.tsd-accordion-summary::-webkit-details-marker { - display: none; /* hide marker on safari */ -} -.tsd-accordion-summary, -.tsd-accordion-summary a { - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; - - cursor: pointer; -} -.tsd-accordion-summary a { - width: calc(100% - 1.5rem); -} -.tsd-accordion-summary > * { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; -} -.tsd-accordion .tsd-accordion-summary > svg { - margin-left: 0.25rem; - vertical-align: text-top; -} -.tsd-index-content > :not(:first-child) { - margin-top: 0.75rem; -} -.tsd-index-heading { - margin-top: 1.5rem; - margin-bottom: 0.75rem; -} - -.tsd-no-select { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.tsd-kind-icon { - margin-right: 0.5rem; - width: 1.25rem; - height: 1.25rem; - min-width: 1.25rem; - min-height: 1.25rem; -} -.tsd-signature > .tsd-kind-icon { - margin-right: 0.8rem; -} - -.tsd-panel { - margin-bottom: 2.5rem; -} -.tsd-panel.tsd-member { - margin-bottom: 4rem; -} -.tsd-panel:empty { - display: none; -} -.tsd-panel > h1, -.tsd-panel > h2, -.tsd-panel > h3 { - margin: 1.5rem -1.5rem 0.75rem -1.5rem; - padding: 0 1.5rem 0.75rem 1.5rem; -} -.tsd-panel > h1.tsd-before-signature, -.tsd-panel > h2.tsd-before-signature, -.tsd-panel > h3.tsd-before-signature { - margin-bottom: 0; - border-bottom: none; -} - -.tsd-panel-group { - margin: 2rem 0; -} -.tsd-panel-group.tsd-index-group { - margin: 2rem 0; -} -.tsd-panel-group.tsd-index-group details { - margin: 2rem 0; -} -.tsd-panel-group > .tsd-accordion-summary { - margin-bottom: 1rem; -} - -#tsd-search { - transition: background-color 0.2s; -} -#tsd-search .title { - position: relative; - z-index: 2; -} -#tsd-search .field { - position: absolute; - left: 0; - top: 0; - right: 2.5rem; - height: 100%; -} -#tsd-search .field input { - box-sizing: border-box; - position: relative; - top: -50px; - z-index: 1; - width: 100%; - padding: 0 10px; - opacity: 0; - outline: 0; - border: 0; - background: transparent; - color: var(--color-text); -} -#tsd-search .field label { - position: absolute; - overflow: hidden; - right: -40px; -} -#tsd-search .field input, -#tsd-search .title, -#tsd-toolbar-links a { - transition: opacity 0.2s; -} -#tsd-search .results { - position: absolute; - visibility: hidden; - top: 40px; - width: 100%; - margin: 0; - padding: 0; - list-style: none; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); -} -#tsd-search .results li { - background-color: var(--color-background); - line-height: initial; - padding: 4px; -} -#tsd-search .results li:nth-child(even) { - background-color: var(--color-background-secondary); -} -#tsd-search .results li.state { - display: none; -} -#tsd-search .results li.current:not(.no-results), -#tsd-search .results li:hover:not(.no-results) { - background-color: var(--color-accent); -} -#tsd-search .results a { - display: flex; - align-items: center; - padding: 0.25rem; - box-sizing: border-box; -} -#tsd-search .results a:before { - top: 10px; -} -#tsd-search .results span.parent { - color: var(--color-text-aside); - font-weight: normal; -} -#tsd-search.has-focus { - background-color: var(--color-accent); -} -#tsd-search.has-focus .field input { - top: 0; - opacity: 1; -} -#tsd-search.has-focus .title, -#tsd-search.has-focus #tsd-toolbar-links a { - z-index: 0; - opacity: 0; -} -#tsd-search.has-focus .results { - visibility: visible; -} -#tsd-search.loading .results li.state.loading { - display: block; -} -#tsd-search.failure .results li.state.failure { - display: block; -} - -#tsd-toolbar-links { - position: absolute; - top: 0; - right: 2rem; - height: 100%; - display: flex; - align-items: center; - justify-content: flex-end; -} -#tsd-toolbar-links a { - margin-left: 1.5rem; -} -#tsd-toolbar-links a:hover { - text-decoration: underline; -} - -.tsd-signature { - margin: 0 0 1rem 0; - padding: 1rem 0.5rem; - border: 1px solid var(--color-accent); - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - font-size: 14px; - overflow-x: auto; -} - -.tsd-signature-keyword { - color: var(--color-ts-keyword); - font-weight: normal; -} - -.tsd-signature-symbol { - color: var(--color-text-aside); - font-weight: normal; -} - -.tsd-signature-type { - font-style: italic; - font-weight: normal; -} - -.tsd-signatures { - padding: 0; - margin: 0 0 1em 0; - list-style-type: none; -} -.tsd-signatures .tsd-signature { - margin: 0; - border-color: var(--color-accent); - border-width: 1px 0; - transition: background-color 0.1s; -} -.tsd-signatures .tsd-index-signature:not(:last-child) { - margin-bottom: 1em; -} -.tsd-signatures .tsd-index-signature .tsd-signature { - border-width: 1px; -} -.tsd-description .tsd-signatures .tsd-signature { - border-width: 1px; -} - -ul.tsd-parameter-list, -ul.tsd-type-parameter-list { - list-style: square; - margin: 0; - padding-left: 20px; -} -ul.tsd-parameter-list > li.tsd-parameter-signature, -ul.tsd-type-parameter-list > li.tsd-parameter-signature { - list-style: none; - margin-left: -20px; -} -ul.tsd-parameter-list h5, -ul.tsd-type-parameter-list h5 { - font-size: 16px; - margin: 1em 0 0.5em 0; -} -.tsd-sources { - margin-top: 1rem; - font-size: 0.875em; -} -.tsd-sources a { - color: var(--color-text-aside); - text-decoration: underline; -} -.tsd-sources ul { - list-style: none; - padding: 0; -} - -.tsd-page-toolbar { - position: sticky; - z-index: 1; - top: 0; - left: 0; - width: 100%; - color: var(--color-text); - background: var(--color-background-secondary); - border-bottom: 1px var(--color-accent) solid; - transition: transform 0.3s ease-in-out; -} -.tsd-page-toolbar a { - color: var(--color-text); - text-decoration: none; -} -.tsd-page-toolbar a.title { - font-weight: bold; -} -.tsd-page-toolbar a.title:hover { - text-decoration: underline; -} -.tsd-page-toolbar .tsd-toolbar-contents { - display: flex; - justify-content: space-between; - height: 2.5rem; - margin: 0 auto; -} -.tsd-page-toolbar .table-cell { - position: relative; - white-space: nowrap; - line-height: 40px; -} -.tsd-page-toolbar .table-cell:first-child { - width: 100%; -} -.tsd-page-toolbar .tsd-toolbar-icon { - box-sizing: border-box; - line-height: 0; - padding: 12px 0; -} - -.tsd-widget { - display: inline-block; - overflow: hidden; - opacity: 0.8; - height: 40px; - transition: - opacity 0.1s, - background-color 0.2s; - vertical-align: bottom; - cursor: pointer; -} -.tsd-widget:hover { - opacity: 0.9; -} -.tsd-widget.active { - opacity: 1; - background-color: var(--color-accent); -} -.tsd-widget.no-caption { - width: 40px; -} -.tsd-widget.no-caption:before { - margin: 0; -} - -.tsd-widget.options, -.tsd-widget.menu { - display: none; -} -input[type="checkbox"] + .tsd-widget:before { - background-position: -120px 0; -} -input[type="checkbox"]:checked + .tsd-widget:before { - background-position: -160px 0; -} - -img { - max-width: 100%; -} - -.tsd-anchor-icon { - display: inline-flex; - align-items: center; - margin-left: 0.5rem; - vertical-align: middle; - color: var(--color-text); -} - -.tsd-anchor-icon svg { - width: 1em; - height: 1em; - visibility: hidden; -} - -.tsd-anchor-link:hover > .tsd-anchor-icon svg { - visibility: visible; -} - -.deprecated { - text-decoration: line-through !important; -} - -.warning { - padding: 1rem; - color: var(--color-warning-text); - background: var(--color-background-warning); -} - -.tsd-kind-project { - color: var(--color-ts-project); -} -.tsd-kind-module { - color: var(--color-ts-module); -} -.tsd-kind-namespace { - color: var(--color-ts-namespace); -} -.tsd-kind-enum { - color: var(--color-ts-enum); -} -.tsd-kind-enum-member { - color: var(--color-ts-enum-member); -} -.tsd-kind-variable { - color: var(--color-ts-variable); -} -.tsd-kind-function { - color: var(--color-ts-function); -} -.tsd-kind-class { - color: var(--color-ts-class); -} -.tsd-kind-interface { - color: var(--color-ts-interface); -} -.tsd-kind-constructor { - color: var(--color-ts-constructor); -} -.tsd-kind-property { - color: var(--color-ts-property); -} -.tsd-kind-method { - color: var(--color-ts-method); -} -.tsd-kind-reference { - color: var(--color-ts-reference); -} -.tsd-kind-call-signature { - color: var(--color-ts-call-signature); -} -.tsd-kind-index-signature { - color: var(--color-ts-index-signature); -} -.tsd-kind-constructor-signature { - color: var(--color-ts-constructor-signature); -} -.tsd-kind-parameter { - color: var(--color-ts-parameter); -} -.tsd-kind-type-parameter { - color: var(--color-ts-type-parameter); -} -.tsd-kind-accessor { - color: var(--color-ts-accessor); -} -.tsd-kind-get-signature { - color: var(--color-ts-get-signature); -} -.tsd-kind-set-signature { - color: var(--color-ts-set-signature); -} -.tsd-kind-type-alias { - color: var(--color-ts-type-alias); -} - -/* if we have a kind icon, don't color the text by kind */ -.tsd-kind-icon ~ span { - color: var(--color-text); -} - -* { - scrollbar-width: thin; - scrollbar-color: var(--color-accent) var(--color-icon-background); -} - -*::-webkit-scrollbar { - width: 0.75rem; -} - -*::-webkit-scrollbar-track { - background: var(--color-icon-background); -} - -*::-webkit-scrollbar-thumb { - background-color: var(--color-accent); - border-radius: 999rem; - border: 0.25rem solid var(--color-icon-background); -} - -/* mobile */ -@media (max-width: 769px) { - .tsd-widget.options, - .tsd-widget.menu { + .settings-label { + font-weight: bold; + text-transform: uppercase; display: inline-block; } - .container-main { - display: flex; - } - html .col-content { - float: none; - max-width: 100%; - width: 100%; - } - html .col-sidebar { - position: fixed !important; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 1024; - top: 0 !important; - bottom: 0 !important; - left: auto !important; - right: 0 !important; - padding: 1.5rem 1.5rem 0 0; - width: 75vw; - visibility: hidden; - background-color: var(--color-background); - transform: translate(100%, 0); - } - html .col-sidebar > *:last-child { - padding-bottom: 20px; - } - html .overlay { - content: ""; - display: block; - position: fixed; - z-index: 1023; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, 0.75); - visibility: hidden; + .tsd-filter-visibility .settings-label { + margin: 0.75rem 0 0.5rem 0; } - .to-has-menu .overlay { - animation: fade-in 0.4s; + .tsd-theme-toggle .settings-label { + margin: 0.75rem 0.75rem 0 0; } - .to-has-menu .col-sidebar { - animation: pop-in-from-right 0.4s; + .tsd-hierarchy h4 label:hover span { + text-decoration: underline; } - .from-has-menu .overlay { - animation: fade-out 0.4s; + .tsd-hierarchy { + list-style: square; + margin: 0; + } + .tsd-hierarchy-target { + font-weight: bold; + } + .tsd-hierarchy-toggle { + color: var(--color-link); + cursor: pointer; } - .from-has-menu .col-sidebar { - animation: pop-out-to-right 0.4s; + .tsd-full-hierarchy:not(:last-child) { + margin-bottom: 1em; + padding-bottom: 1em; + border-bottom: 1px solid var(--color-accent); } - - .has-menu body { - overflow: hidden; + .tsd-full-hierarchy, + .tsd-full-hierarchy ul { + list-style: none; + margin: 0; + padding: 0; } - .has-menu .overlay { - visibility: visible; + .tsd-full-hierarchy ul { + padding-left: 1.5rem; } - .has-menu .col-sidebar { - visibility: visible; - transform: translate(0, 0); - display: flex; - flex-direction: column; - gap: 1.5rem; - max-height: 100vh; - padding: 1rem 2rem; + .tsd-full-hierarchy a { + padding: 0.25rem 0 !important; + font-size: 1rem; + display: inline-flex; + align-items: center; + color: var(--color-text); } - .has-menu .tsd-navigation { - max-height: 100%; + .tsd-full-hierarchy svg[data-dropdown] { + cursor: pointer; } - #tsd-toolbar-links { + .tsd-full-hierarchy svg[data-dropdown="false"] { + transform: rotate(-90deg); + } + .tsd-full-hierarchy svg[data-dropdown="false"] ~ ul { display: none; } - .tsd-navigation .tsd-nav-link { - display: flex; - } -} -/* one sidebar */ -@media (min-width: 770px) { - .container-main { + .tsd-panel-group.tsd-index-group { + margin-bottom: 0; + } + .tsd-index-panel .tsd-index-list { + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; display: grid; - grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); - grid-template-areas: "sidebar content"; - margin: 2rem auto; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; + } + @media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } + } + @media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); + } + } + .tsd-index-panel .tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; } - .col-sidebar { - grid-area: sidebar; + .tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; } - .col-content { - grid-area: content; - padding: 0 1rem; + + .tsd-anchor { + position: relative; + top: -100px; } -} -@media (min-width: 770px) and (max-width: 1399px) { - .col-sidebar { - max-height: calc(100vh - 2rem - 42px); - overflow: auto; - position: sticky; - top: 42px; - padding-top: 1rem; + + .tsd-member { + position: relative; } - .site-menu { + .tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + border-bottom: none; + } + + .tsd-navigation.settings { + margin: 1rem 0; + } + .tsd-navigation > a, + .tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.25rem); + display: flex; + align-items: center; + } + .tsd-navigation a, + .tsd-navigation summary > span, + .tsd-page-navigation a { + display: flex; + width: calc(100% - 0.25rem); + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; + } + .tsd-navigation a.current, + .tsd-page-navigation a.current { + background: var(--color-active-menu-item); + } + .tsd-navigation a:hover, + .tsd-page-navigation a:hover { + text-decoration: underline; + } + .tsd-navigation ul, + .tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; + } + .tsd-navigation li, + .tsd-page-navigation li { + padding: 0; + max-width: 100%; + } + .tsd-navigation .tsd-nav-link { + display: none; + } + .tsd-nested-navigation { + margin-left: 3rem; + } + .tsd-nested-navigation > li > details { + margin-left: -1.5rem; + } + .tsd-small-nested-navigation { + margin-left: 1.5rem; + } + .tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; + } + + .tsd-page-navigation-section { + margin-left: 10px; + } + .tsd-page-navigation-section > summary { + padding: 0.25rem; + } + .tsd-page-navigation-section > div { + margin-left: 20px; + } + .tsd-page-navigation ul { + padding-left: 1.75rem; + } + + #tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; + } + #tsd-sidebar-links a:last-of-type { + margin-bottom: 0; + } + + a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); + } + .tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ + } + .tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ + } + .tsd-accordion-summary, + .tsd-accordion-summary a { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + + cursor: pointer; + } + .tsd-accordion-summary a { + width: calc(100% - 1.5rem); + } + .tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + } + .tsd-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; + vertical-align: text-top; + } + /* + We need to be careful to target the arrow indicating whether the accordion + is open, but not any other SVGs included in the details element. +*/ + .tsd-accordion:not([open]) > .tsd-accordion-summary > svg:first-child, + .tsd-accordion:not([open]) > .tsd-accordion-summary > h1 > svg:first-child, + .tsd-accordion:not([open]) > .tsd-accordion-summary > h2 > svg:first-child, + .tsd-accordion:not([open]) > .tsd-accordion-summary > h3 > svg:first-child, + .tsd-accordion:not([open]) > .tsd-accordion-summary > h4 > svg:first-child { + transform: rotate(-90deg); + } + .tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; + } + .tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; + } + + .tsd-no-select { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } + .tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; + } + .tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; + } + + .tsd-panel { + margin-bottom: 2.5rem; + } + .tsd-panel.tsd-member { + margin-bottom: 4rem; + } + .tsd-panel:empty { + display: none; + } + .tsd-panel > h1, + .tsd-panel > h2, + .tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; + } + .tsd-panel > h1.tsd-before-signature, + .tsd-panel > h2.tsd-before-signature, + .tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; + } + + .tsd-panel-group { + margin: 2rem 0; + } + .tsd-panel-group.tsd-index-group { + margin: 2rem 0; + } + .tsd-panel-group.tsd-index-group details { + margin: 2rem 0; + } + .tsd-panel-group > .tsd-accordion-summary { + margin-bottom: 1rem; + } + + #tsd-search { + transition: background-color 0.2s; + } + #tsd-search .title { + position: relative; + z-index: 2; + } + #tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; + } + #tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); + } + #tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; + } + #tsd-search .field input, + #tsd-search .title, + #tsd-toolbar-links a { + transition: opacity 0.2s; + } + #tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); + } + #tsd-search .results li { + background-color: var(--color-background); + line-height: initial; + padding: 4px; + } + #tsd-search .results li:nth-child(even) { + background-color: var(--color-background-secondary); + } + #tsd-search .results li.state { + display: none; + } + #tsd-search .results li.current:not(.no-results), + #tsd-search .results li:hover:not(.no-results) { + background-color: var(--color-accent); + } + #tsd-search .results a { + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; + } + #tsd-search .results a:before { + top: 10px; + } + #tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; + } + #tsd-search.has-focus { + background-color: var(--color-accent); + } + #tsd-search.has-focus .field input { + top: 0; + opacity: 1; + } + #tsd-search.has-focus .title, + #tsd-search.has-focus #tsd-toolbar-links a { + z-index: 0; + opacity: 0; + } + #tsd-search.has-focus .results { + visibility: visible; + } + #tsd-search.loading .results li.state.loading { + display: block; + } + #tsd-search.failure .results li.state.failure { + display: block; + } + + #tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; + } + #tsd-toolbar-links a { + margin-left: 1.5rem; + } + #tsd-toolbar-links a:hover { + text-decoration: underline; + } + + .tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; + } + + .tsd-signature-keyword { + color: var(--color-ts-keyword); + font-weight: normal; + } + + .tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; + } + + .tsd-signature-type { + font-style: italic; + font-weight: normal; + } + + .tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; + } + .tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; + } + .tsd-signatures .tsd-index-signature:not(:last-child) { + margin-bottom: 1em; + } + .tsd-signatures .tsd-index-signature .tsd-signature { + border-width: 1px; + } + .tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; + } + + ul.tsd-parameter-list, + ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; + } + ul.tsd-parameter-list > li.tsd-parameter-signature, + ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; + } + ul.tsd-parameter-list h5, + ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; + } + .tsd-sources { margin-top: 1rem; + font-size: 0.875em; } -} - -/* two sidebars */ -@media (min-width: 1200px) { - .container-main { - grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); - grid-template-areas: "sidebar content toc"; + .tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; + } + .tsd-sources ul { + list-style: none; + padding: 0; } - .col-sidebar { - display: contents; - } - - .page-menu { - grid-area: toc; - padding-left: 1rem; - } - .site-menu { - grid-area: sidebar; - } - - .site-menu { - margin-top: 1rem; - } - - .page-menu, - .site-menu { - max-height: calc(100vh - 2rem - 42px); - overflow: auto; + .tsd-page-toolbar { position: sticky; - top: 42px; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; + } + .tsd-page-toolbar a { + color: var(--color-text); + text-decoration: none; + } + .tsd-page-toolbar a.title { + font-weight: bold; + } + .tsd-page-toolbar a.title:hover { + text-decoration: underline; + } + .tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; + } + .tsd-page-toolbar .table-cell { + position: relative; + white-space: nowrap; + line-height: 40px; + } + .tsd-page-toolbar .table-cell:first-child { + width: 100%; + } + .tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; + } + + .tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: + opacity 0.1s, + background-color 0.2s; + vertical-align: bottom; + cursor: pointer; + } + .tsd-widget:hover { + opacity: 0.9; + } + .tsd-widget.active { + opacity: 1; + background-color: var(--color-accent); + } + .tsd-widget.no-caption { + width: 40px; + } + .tsd-widget.no-caption:before { + margin: 0; + } + + .tsd-widget.options, + .tsd-widget.menu { + display: none; + } + input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; + } + input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; + } + + img { + max-width: 100%; + } + + .tsd-member-summary-name { + display: inline-flex; + align-items: center; + padding: 0.25rem; + text-decoration: none; + } + + .tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + color: var(--color-text); + } + + .tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; + } + + .tsd-member-summary-name:hover > .tsd-anchor-icon svg, + .tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; + } + + .deprecated { + text-decoration: line-through !important; + } + + .warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); + } + + .tsd-kind-project { + color: var(--color-ts-project); + } + .tsd-kind-module { + color: var(--color-ts-module); + } + .tsd-kind-namespace { + color: var(--color-ts-namespace); + } + .tsd-kind-enum { + color: var(--color-ts-enum); + } + .tsd-kind-enum-member { + color: var(--color-ts-enum-member); + } + .tsd-kind-variable { + color: var(--color-ts-variable); + } + .tsd-kind-function { + color: var(--color-ts-function); + } + .tsd-kind-class { + color: var(--color-ts-class); + } + .tsd-kind-interface { + color: var(--color-ts-interface); + } + .tsd-kind-constructor { + color: var(--color-ts-constructor); + } + .tsd-kind-property { + color: var(--color-ts-property); + } + .tsd-kind-method { + color: var(--color-ts-method); + } + .tsd-kind-reference { + color: var(--color-ts-reference); + } + .tsd-kind-call-signature { + color: var(--color-ts-call-signature); + } + .tsd-kind-index-signature { + color: var(--color-ts-index-signature); + } + .tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); + } + .tsd-kind-parameter { + color: var(--color-ts-parameter); + } + .tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); + } + .tsd-kind-accessor { + color: var(--color-ts-accessor); + } + .tsd-kind-get-signature { + color: var(--color-ts-get-signature); + } + .tsd-kind-set-signature { + color: var(--color-ts-set-signature); + } + .tsd-kind-type-alias { + color: var(--color-ts-type-alias); + } + + /* if we have a kind icon, don't color the text by kind */ + .tsd-kind-icon ~ span { + color: var(--color-text); + } + + * { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); + } + + *::-webkit-scrollbar { + width: 0.75rem; + } + + *::-webkit-scrollbar-track { + background: var(--color-icon-background); + } + + *::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); + } + + /* mobile */ + @media (max-width: 769px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } + + .container-main { + display: flex; + } + html .col-content { + float: none; + max-width: 100%; + width: 100%; + } + html .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-sidebar > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } + #tsd-toolbar-links { + display: none; + } + .tsd-navigation .tsd-nav-link { + display: flex; + } + } + + /* one sidebar */ + @media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + margin: 2rem auto; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } + } + @media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + padding-top: 1rem; + } + .site-menu { + margin-top: 1rem; + } + } + + /* two sidebars */ + @media (min-width: 1200px) { + .container-main { + grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax( + 0, + 20rem + ); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 1rem; + } + + .page-menu, + .site-menu { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + } } } diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index 57ee334..d2c7444 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,46 +1,59 @@ -SolanaAgentKit | solana-agent-kit

    Class SolanaAgentKit

    Main class for interacting with Solana blockchain +SolanaAgentKit | solana-agent-kit

    Class SolanaAgentKit

    Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, trading and more

    SolanaAgentKit

    -

    Constructors

    Properties

    Constructors

    • Parameters

      • private_key: string
      • rpc_url: string = "https://api.mainnet-beta.solana.com"
      • openai_api_key: null | string = null

      Returns SolanaAgentKit

    Properties

    connection: Connection

    Solana RPC connection

    -
    openai_api_key: null | string
    wallet: Keypair

    Wallet keypair for signing transactions

    -
    wallet_address: PublicKey

    Public key of the wallet

    -

    Methods

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • depositTokenAmount: BN
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier:
            | 0.01
            | 0.02
            | 0.04
            | 0.05
            | 0.16
            | 0.3
            | 0.65
            | 1
            | 2

      Returns Promise<string>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{
          signature: string;
          url: string;
      }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{
          mint: PublicKey;
      }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<String[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: {
                address: string;
                share: number;
            }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
        • Optionalcreators?: {
              address: string;
              share: number;
          }[]
        • name: string
        • OptionalsellerFeeBasisPoints?: number
        • uri: string
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    +

    Constructors

    • Parameters

      • private_key: string
      • rpc_url: string
      • openai_api_key: null | string

      Returns SolanaAgentKit

      Using openai_api_key directly in constructor is deprecated. +Please use the new constructor with Config object instead:

      +
      const agent = new SolanaAgentKit(privateKey, rpcUrl, { 
      OPENAI_API_KEY: 'your-key'
      }); +
      + +
    • Parameters

      • private_key: string
      • rpc_url: string
      • config: Config

      Returns SolanaAgentKit

    Properties

    config: Config

    Configuration object

    +
    connection: Connection

    Solana RPC connection

    +
    wallet: Keypair

    Wallet keypair for signing transactions

    +
    wallet_address: PublicKey

    Public key of the wallet

    +

    Methods

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index 1279b68..f763bbe 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaTradeTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaCreateSingleSidedWhirlpoolTool
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool)[]

    +createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaTradeTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
      )[]

    diff --git a/docs/index.html b/docs/index.html index b165d1c..8fecca2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,5 +1,5 @@ -solana-agent-kit

    solana-agent-kit

    -

    Solana Agent Kit

    Solana Agent Kit Cover 1 (3)

    +solana-agent-kit

    solana-agent-kit

    +

    Solana Agent Kit

    Solana Agent Kit Cover 1 (3)

    NPM Downloads GitHub forks GitHub License

    @@ -15,11 +15,11 @@
  • And more...
  • Anyone - whether an SF-based AI researcher or a crypto-native builder - can bring their AI agents trained with any model and seamlessly integrate with Solana.

    -

    Run on Repl.it

    +

    Run on Repl.it

    -

    Replit template created by Arpit Singh

    +

    Replit template created by Arpit Singh

    -
      +
      • Token Operations

          @@ -46,7 +46,7 @@
        • Launch on Pump via PumpPortal
        • Raydium pool creation (CPMM, CLMM, AMMv4)
        • Orca Whirlpool integration
        • -
        • Meteora Dynamic AMM, DLMM Pool, and Alpga Vault
        • +
        • Meteora Dynamic AMM, DLMM Pool, and Alpha Vault
        • Openbook market creation
        • Register and Resolve SNS
        • Jito Bundles
        • @@ -57,7 +57,7 @@
        • Solana Blinks

            -
          • Lending by Lulon (Best APR for USDC)
          • +
          • Lending by Lulo (Best APR for USDC)
          • Send Arcade Games
          • JupSOL staking
          @@ -69,7 +69,7 @@
      -
        +
        • LangChain Integration

            @@ -98,34 +98,34 @@
        -
        npm install solana-agent-kit
        +
        npm install solana-agent-kit
         
        -
        import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit";

        // Initialize with private key and optional RPC URL
        const agent = new SolanaAgentKit(
        "your-wallet-private-key-as-base58",
        "https://api.mainnet-beta.solana.com",
        "your-openai-api-key"
        );

        // Create LangChain tools
        const tools = createSolanaTools(agent); +
        import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit";

        // Initialize with private key and optional RPC URL
        const agent = new SolanaAgentKit(
        "your-wallet-private-key-as-base58",
        "https://api.mainnet-beta.solana.com",
        "your-openai-api-key"
        );

        // Create LangChain tools
        const tools = createSolanaTools(agent);
        -
        const result = await agent.deployToken(
        "my ai token", // name
        "uri", // uri
        "token", // symbol
        9, // decimals
        1000000 // initial supply
        );

        console.log("Token Mint Address:", result.mint.toString()); +
        const result = await agent.deployToken(
        "my ai token", // name
        "uri", // uri
        "token", // symbol
        9, // decimals
        1000000 // initial supply
        );

        console.log("Token Mint Address:", result.mint.toString());
        -
        const collection = await agent.deployCollection({
        name: "My NFT Collection",
        uri: "https://arweave.net/metadata.json",
        royaltyBasisPoints: 500, // 5%
        creators: [
        {
        address: "creator-wallet-address",
        percentage: 100,
        },
        ],
        }); +
        const collection = await agent.deployCollection({
        name: "My NFT Collection",
        uri: "https://arweave.net/metadata.json",
        royaltyBasisPoints: 500, // 5%
        creators: [
        {
        address: "creator-wallet-address",
        percentage: 100,
        },
        ],
        });
        -
        import { PublicKey } from "@solana/web3.js";

        const signature = await agent.trade(
        new PublicKey("target-token-mint"),
        100, // amount
        new PublicKey("source-token-mint"),
        300 // 3% slippage
        ); +
        import { PublicKey } from "@solana/web3.js";

        const signature = await agent.trade(
        new PublicKey("target-token-mint"),
        100, // amount
        new PublicKey("source-token-mint"),
        300 // 3% slippage
        );
        -
        import { PublicKey } from "@solana/web3.js";

        const signature = await agent.lendAssets(
        100 // amount of USDC to lend
        ); +
        import { PublicKey } from "@solana/web3.js";

        const signature = await agent.lendAssets(
        100 // amount of USDC to lend
        );
        -
        const signature = await agent.stake(
        1 // amount in SOL to stake
        ); +
        const signature = await agent.stake(
        1 // amount in SOL to stake
        );
        -
        import { PublicKey } from "@solana/web3.js";

        (async () => {
        console.log(
        "~Airdrop cost estimate:",
        getAirdropCostEstimate(
        1000, // recipients
        30_000 // priority fee in lamports
        )
        );

        const signature = await agent.sendCompressedAirdrop(
        new PublicKey("JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"), // mint
        42, // amount per recipient
        [
        new PublicKey("1nc1nerator11111111111111111111111111111111"),
        // ... add more recipients
        ],
        30_000 // priority fee in lamports
        );
        })(); +
        import { PublicKey } from "@solana/web3.js";

        (async () => {
        console.log(
        "~Airdrop cost estimate:",
        getAirdropCostEstimate(
        1000, // recipients
        30_000 // priority fee in lamports
        )
        );

        const signature = await agent.sendCompressedAirdrop(
        new PublicKey("JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"), // mint
        42, // amount per recipient
        [
        new PublicKey("1nc1nerator11111111111111111111111111111111"),
        // ... add more recipients
        ],
        30_000 // priority fee in lamports
        );
        })();
        -

        const price = await agent.pythFetchPrice(
        "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"
        );

        console.log("Price in BTC/USD:", price); +

        const price = await agent.pythFetchPrice(
        "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"
        );

        console.log("Price in BTC/USD:", price);
        -

        The repository includes an advanced example of building a multi-agent system using LangGraph and Solana Agent Kit. Located in examples/agent-kit-langgraph, this example demonstrates:

        +

        The repository includes an advanced example of building a multi-agent system using LangGraph and Solana Agent Kit. Located in examples/agent-kit-langgraph, this example demonstrates:

        • Multi-agent architecture using LangGraph's StateGraph
        • Specialized agents for different tasks: @@ -140,7 +140,7 @@
        • Environment-based configuration

        Check out the LangGraph example for a complete implementation of an advanced Solana agent system.

        -

        The toolkit relies on several key Solana and Metaplex libraries:

        +

        The toolkit relies on several key Solana and Metaplex libraries:

        • @solana/web3.js
        • @solana/spl-token
        • @@ -151,12 +151,12 @@
        • @lightprotocol/stateless.js
        • @pythnetwork/price-service-client
        -

        Contributions are welcome! Please feel free to submit a Pull Request. +

        Contributions are welcome! Please feel free to submit a Pull Request. Refer to CONTRIBUTING.md for detailed guidelines on how to contribute to this project.

        - + -

        Star History Chart

        -

        Apache-2 License

        -

        This toolkit handles private keys and transactions. Always ensure you're using it in a secure environment and never share your private keys.

        -
    +

    Star History Chart

    +

    Apache-2 License

    +

    This toolkit handles private keys and transactions. Always ensure you're using it in a secure environment and never share your private keys.

    +
    diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index 29d2d44..1b7ff4f 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array<ArrayBufferLike>;
    }

    Properties

    collectionAddress +CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array<ArrayBufferLike>
    +

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index cb6532a..055d6da 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators? +CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    +

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    diff --git a/docs/interfaces/Config.html b/docs/interfaces/Config.html new file mode 100644 index 0000000..9d46ae7 --- /dev/null +++ b/docs/interfaces/Config.html @@ -0,0 +1,4 @@ +Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index 717b3d8..e9bfa4c 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    address +Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    Properties

    address: string
    percentage: number
    +

    Properties

    address: string
    percentage: number
    diff --git a/docs/interfaces/FetchPriceResponse.html b/docs/interfaces/FetchPriceResponse.html index cfe4fa2..73e4378 100644 --- a/docs/interfaces/FetchPriceResponse.html +++ b/docs/interfaces/FetchPriceResponse.html @@ -1,6 +1,6 @@ -FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code? +FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    +tokenId? +

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    diff --git a/docs/interfaces/GibworkCreateTaskReponse.html b/docs/interfaces/GibworkCreateTaskReponse.html index 7709d81..520daa9 100644 --- a/docs/interfaces/GibworkCreateTaskReponse.html +++ b/docs/interfaces/GibworkCreateTaskReponse.html @@ -1,4 +1,4 @@ -GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature? +GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    +taskId? +

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    diff --git a/docs/interfaces/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index c1d72cb..e589814 100644 --- a/docs/interfaces/JupiterTokenData.html +++ b/docs/interfaces/JupiterTokenData.html @@ -1,12 +1,12 @@ -JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: {
            coingeckoId?: string;
        };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address +JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: {
        coingeckoId?: string;
    }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    +

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index 776cea4..9d03287 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ -LuloAccountDetailsResponse | solana-agent-kit

    Interface LuloAccountDetailsResponse

    Lulo Account Details response format

    -
    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interestEarned -realtimeApy +LuloAccountDetailsResponse | solana-agent-kit

    Interface LuloAccountDetailsResponse

    Lulo Account Details response format

    +
    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    +totalValue +

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index f479f62..db065a2 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    metadata +MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    Properties

    metadata: PublicKey
    mint: PublicKey
    +

    Properties

    metadata: PublicKey
    mint: PublicKey
    diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html index 0617315..eeccce9 100644 --- a/docs/interfaces/PumpFunTokenOptions.html +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -1,7 +1,7 @@ -PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL? -priorityFee? -slippageBps? +PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    +

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html index 0ee5045..93ddbad 100644 --- a/docs/interfaces/PumpfunLaunchResponse.html +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -1,5 +1,5 @@ -PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error? -metadataUri? +PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    +

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    diff --git a/docs/interfaces/PythFetchPriceResponse.html b/docs/interfaces/PythFetchPriceResponse.html index c1a1288..933f24a 100644 --- a/docs/interfaces/PythFetchPriceResponse.html +++ b/docs/interfaces/PythFetchPriceResponse.html @@ -1,6 +1,6 @@ -PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID: string;
        status: "success" | "error";
    }

    Properties

    code? +PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID: string;
        status: "success" | "error";
    }

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID: string
    status: "success" | "error"
    +

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID: string
    status: "success" | "error"
    diff --git a/docs/modules.html b/docs/modules.html index fba41cb..52a12f1 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1,14 +1 @@ -solana-agent-kit
    +solana-agent-kit
    diff --git a/package.json b/package.json index e041365..3f5de39 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "solana-agent-kit", - "version": "1.3.1", + "version": "1.3.2", "description": "connect any ai agents to solana protocols", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/src/agent/index.ts b/src/agent/index.ts index f880994..5d146a1 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -67,6 +67,7 @@ import { BN } from "@coral-xyz/anchor"; * @property {Connection} connection - Solana RPC connection * @property {Keypair} wallet - Wallet keypair for signing transactions * @property {PublicKey} wallet_address - Public key of the wallet + * @property {Config} config - Configuration object */ export class SolanaAgentKit { public connection: Connection; @@ -74,15 +75,31 @@ export class SolanaAgentKit { public wallet_address: PublicKey; public config: Config; + /** + * @deprecated Using openai_api_key directly in constructor is deprecated. + * Please use the new constructor with Config object instead: + * @example + * const agent = new SolanaAgentKit(privateKey, rpcUrl, { + * OPENAI_API_KEY: 'your-key' + * }); + */ + constructor(private_key: string, rpc_url: string, openai_api_key: string | null); + constructor(private_key: string, rpc_url: string, config: Config); constructor( private_key: string, - rpc_url = "https://api.mainnet-beta.solana.com", - config: Config, + rpc_url: string, + configOrKey: Config | string | null, ) { - this.connection = new Connection(rpc_url); + this.connection = new Connection(rpc_url || "https://api.mainnet-beta.solana.com"); this.wallet = Keypair.fromSecretKey(bs58.decode(private_key)); this.wallet_address = this.wallet.publicKey; - this.config = config; + + // Handle both old and new patterns + if (typeof configOrKey === 'string' || configOrKey === null) { + this.config = { OPENAI_API_KEY: configOrKey || '' }; + } else { + this.config = configOrKey; + } } // Tool methods diff --git a/test/index.ts b/test/index.ts index abd50d0..b6e51e7 100644 --- a/test/index.ts +++ b/test/index.ts @@ -52,7 +52,7 @@ async function initializeAgent() { const solanaAgent = new SolanaAgentKit( process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL, + process.env.RPC_URL!, { OPENAI_API_KEY: process.env.OPENAI_API_KEY!, }, From 8cc8d37d28ee49e67ccd3f46f768f936888ebade Mon Sep 17 00:00:00 2001 From: DonDuala Date: Tue, 31 Dec 2024 16:43:42 -0400 Subject: [PATCH 52/94] Update docs --- docs/index.html | 1 + src/langchain/index.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/index.html b/docs/index.html index 8fecca2..97d0e78 100644 --- a/docs/index.html +++ b/docs/index.html @@ -46,6 +46,7 @@
  • Launch on Pump via PumpPortal
  • Raydium pool creation (CPMM, CLMM, AMMv4)
  • Orca Whirlpool integration
  • +
  • Manifest market creation, and limit orders
  • Meteora Dynamic AMM, DLMM Pool, and Alpha Vault
  • Openbook market creation
  • Register and Resolve SNS
  • diff --git a/src/langchain/index.ts b/src/langchain/index.ts index eb1eec3..4605fd3 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1855,7 +1855,7 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaLimitOrderTool(solanaKit), new SolanaCancelAllOrdersTool(solanaKit), new SolanaWithdrawAllTool(solanaKit), - new SolanaClosePostition(solanaKit), + new SolanaClosePosition(solanaKit), new SolanaOrcaCreateCLMM(solanaKit), new SolanaOrcaCreateSingleSideLiquidityPool(solanaKit), new SolanaOrcaFetchPositions(solanaKit), From 15034ac749bb3977e2073f71f108ada172f0425f Mon Sep 17 00:00:00 2001 From: aryan Date: Wed, 1 Jan 2025 02:41:49 +0530 Subject: [PATCH 53/94] chore: docs --- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 18 +- docs/functions/createSolanaTools.html | 2 +- docs/interfaces/CollectionDeployment.html | 4 +- docs/interfaces/CollectionOptions.html | 4 +- docs/interfaces/Config.html | 4 +- docs/interfaces/Creator.html | 4 +- docs/interfaces/FetchPriceResponse.html | 4 +- docs/interfaces/GibworkCreateTaskReponse.html | 4 +- docs/interfaces/JupiterTokenData.html | 4 +- .../LuloAccountDetailsResponse.html | 4 +- .../interfaces/MintCollectionNFTResponse.html | 4 +- docs/interfaces/PumpFunTokenOptions.html | 4 +- docs/interfaces/PumpfunLaunchResponse.html | 4 +- docs/interfaces/PythFetchPriceResponse.html | 4 +- pnpm-lock.yaml | 863 ++++++++++++++++++ 16 files changed, 900 insertions(+), 33 deletions(-) diff --git a/docs/assets/search.js b/docs/assets/search.js index b50d74f..6cd8305 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "eJytnVtv2zoSx7+L8mq0ul/yluayyDlpGyTpWSyMwlAsOtFGlnQkuj3Zot99QV2soTiSR5afWsSc4Z/kj0NyZNG/tCL7WWrny1/aW5xG2rlh+gstDbdMO9cesyRMw4sXlvI/Y64ttF2RaOfaOgnLkpUf5Y8/vPJtoi3aT7VzTfu9aL06hrn3us7Skhe7Nc8KisszuTxwv9DysGApV5V2FRu6acOaU7bmcZZSK+6Kz6n3Z5gkjNR/Z/ui8+tbhVFUsLKcUC8wmdnPm/iF2sd10Yn1mbrdcVqwv3es5Dfhbs34zS6NaG1uzDaV2aYxm6MjYnmSvT9lb4wGWF2eN+Xn13yZJckEvmujNTSao+GF8U9hEqZrRqr9hfHnffHT1PuVvzJaTOkqzxqbOQq2ccq/3DyRahZl080RM1yqkRdhWm6IjQWF582yl7jkrLjKtmFMI6w1iVqTefWXWfKDPWbJJAWVUZklJ9Hwwvh9EW/D4n2ChhfG89roJBp4EUa0KdaWnFNbwtLooiwZp8VUUTxsi8/s6af7R2r/8vwU9YlAfBXy8NP7xYSlU1QvLKOQh8/vR6+gI2qe4vUbPbABMbw1nKNlw/j6tVJzX8TE4F7ZVELyxmYWg+EuXb/e77b5zS6lL6+1Wb7b5ptdeopVtuThG639bclZtbE0usy2ucCJRRdxERVZTqudpdF6bxnuLeeoyYp1eJlkJbvPypi8xRBWa2GVd1azVRQs5Ozy7vNnuoTKZJ1styer/zFOXxL2GEcsuov/3sVRzN/vsyyZqKms3JTCTdK6yWs3c3XeiDnYjhYtlAmzaurmwGyujq85Sy9ZylnBolbOv2P+uu82srQsZ+m68dQq/Bnz1wR4OoVaMLaTaRcawaCeiPtmG3ORNHsf6gGnsgqTZvNzglXp68+URRNlvDCeCbOT62hE3GTF093VJCmNjk1W8CSar6brkKe7K3KndP3Bk9lnz1rFQ7PhPmaMwiQp9uanHKvPYZx2cqZtnEXZTstpzhHhexTvtnUYv9hu/7Jpk6k2q8N2uN3+sE+p47JemybKOMGKJqvIj1KRz19Xc5Y+Z9lbLeNzWLwR82WtYa1k2xrO0ZK/89d67SRvd4VJvW6eYLdbN+Vf8fPPrHh7Css3WiKtsnqprXhtNYuLbP12H+aseFzHZZkVxBUnW7/lwqrsrOb3xVOcJ3E6pR/43mLWSZulZVbcxSU5u1NbJHF5ihxP5etSJKkSoSFOaSnV2m5d2SV7u4lKXLs3BnXJpyxLOhI2u7RKHJYflTKjTwNMx917v5RzxbHY3W3CNSs/1p+MOpKyzl/vr79c3K4u7m9Xf17/54DHKnCE8SrM49UbG944NvIGqvzj2/3t0/XD6uH65vrh4eJudXF5+fXbl6dDlf93l8ecFauCbVhRhMkqXK+zXTpMDE3GzfX16hNImhyofcPY6nkkcaJUKo2bGHHwBAfWVX9EH7n+g4oBX2eHciutpoFqclaI00P4wg7WJBWlViZj3WbVv+by+UsalF4hepdV/5BdnjXFh8a5r3Wg0l0RT6izLj2zyiJ7DxP+/iks4/I+i1M+oSPPGuNnYZy3xjMFrethnyIDmEyvHIfqqnp0s2UpH9fRlaOj1T0Q6mdBKVWcdeYHpyvWnAFRZfyShnxXHIC+LwaaHSUCdv/nOOVd8S83Tw+szLO0RDUNFqYPhHhUNN31WWOGN3e4DUMiGA9FMvkYIZ3p8WLgAMAM8EhYRYrRO53/jDln6Lo25Pess8Hbiekeqp4l7KUIt9Pq74xmC/jJnsuYo0gP1t/ZzK4+TmMeh8k+N/j49W6SlMZ+nxEsR1KpE2SVSZzn4Qv7lE8i7qy1G9tmTZCRF3FWxPz9hk0boNZuw44dpP403OzSu+rxylgMRAvSp+JozB/2TQj6eAsmhuERBaMheFrlTQz9hm+9xjQ0lmPbsElSWFHg+/0REa3NcdVD6O52SXZRn5KuGA/jpBwjb7j0hJUg42HyV5jsjqnhrLL+0VjjzR9p0mB0FMnZkl+HRcqiY2S1Hljr4VTSChYmPN6yi/z9GF2teZgPn8WniyoZF+kPNGYfUgRsZ8iBCP9Rn7v3D/YxVf0yJzlEo04PnqYVuROPonitoydRapXl+/YZPGo9WOm+/LxqI7aOt2EyoY+BxbyqeYhTjFfblJ5XZZK9ZN8ebum1CoOx1YbczWGcvK9+ZMluClg9q3kSNgVj/2OrcMdfq40TXQZiOU+K2EscI0SxmycjZ8U2TFnKV5E4bYT4EQGXgtrOk8P+EWnuoRMgLkOymVw9jOTd46GxTYhaasLel4d8h7ZtwOvZ3gJvGSJ5cN/zxtJbdHcxVHdlEg9vJ+iVVw/QbtNvj1eXUwRUZnG6K6P1CURsWVkOZImHBHQmcytfZ9GkmpvyR1Qrnemkh56jhzq05CnIHvF8iO4B+WOQ3TAW3V5N1VGZbhiLRmg/QsxRMk4kYIT2MQmHiJ8mYoj6MQWj5B+sHtLfPGyvv30gHrk/sEH+h8qeYgaM+j40BwYbMbilLN/wMD8uQ9iN0D9VxmiW50CHHEz0DIv5vtDiNGL/aOe/tB+sENsC7VwzP1gfAm2hbWImvpJ1vmxPN+ts2zxtibL1rvrv96bYX2xdPd05X9alP+raYqkvbOuDYX3/vli2ttXfqz+0Lrq/VHaGtlgaiJ2h2BmSnaktliZiZyp2pmRnaYulhdhZip0l2dnaYmkjdrZiZ0t2jrZYOgvL/6CbpmToKIaOZOhqi6WLVOgqdq5k52mLpYfYeYqdJ9n52mLpI3a+YudLdoG2WAaIXaDYBfLACw4MDBlDZcboQVNRg2KDcCODYwgeDAwdQ2XHkOExBBMGho+h8mPIABmCCwNDyFAZMmSIDIGG4WC2KkaGzJEh8DAwkgwVJUNmyRCIGBhNhoqTIfNkCEwMjChDRcqQmTIEKgZGlaFiZchcmQIVE+PKVLkyZa5MgYqJcWWqXJm9gFRFJDQkITFJ5soUqJgYV6bKlSlzZQpUTIwrU+XKlLkyBSomxpWpcmXKXJkCFRPjylS5MmWuTIGKiXFlqlyZMlemQMXEuDJVrkyZK1OgYmJcmSpXpsyVJVCxMK4slStL5soSqFgYV5bKlSVzZQlULIwrS+XK6i121WqHLnfIeidzZQlULIwrS+XKkrmyBCoWxpWlcmXJXFkCFQvjylK5smSuLIGKhXFlqVxZMleWQMXCuLJUriyZK0ugYmFcWSpXlsyVLVCxMa5slStb5soWqNgYV7bKlS1zZQtUbIwrW+XKlrmyBSo2xpWtcmX3NlLVTgrdSiF7KZkrW6BiY1zZKle2zJUtULExrmyVK1vmyhao2BhXtsqVLXNl+0M7QFvlypa5sgUqNsakrXJly1w5FVcYk47KlSNz5QhUHIxJR+XKkblyBCoOxqSjcuXIXDkCFcdEt8sqWI4MliNYcTAoHRUsp7dLr7bpGJQOsk+XwXIEKw6+x1fJcmSyHAGLg1HpqGQ5MllORRZGpaOS5chkOQIWByPLUclyZLJcAYuDkeWqZLkyWa6AxcXIclWyXJksV8DiGgvL/uA6nmysouXKaLkCFhcLd65KliuT5QpYXAsbYVdFy5XRcgUtLoaWq6Ll9s6A1SEQi3cucgyUyXIFLC56glTJcmWyXAGLi5HlqmS5MlmugMXFyHJVslyZLE/A4mJkeSpZnkyWJ2DxMLI8lSxPJssTrHhYzPJUsDwZLE+w4mFgeSpYngyWZw8S7algeTJYnjNIpaeS5clkeQIWDwuWnkqW18swVCkGjGgPSTLIZHkCFg8j2lPJ8mSyPAGLhxHtqWR5Mlm+gMXDiPZVsnyZLL8iC82NqGT5Mll+RRZGtK+S5ctk+QIWHyPaV8nyZbJ8e3Al9VWyfJks3xlc0XyVLF8myxew+Nhc8lWyfJksX8DiY3PJV8nye/mrKoGFEe0jKSyZLF/A4mNE+ypZvkxWIGDxMaIDlaxAJisQsPgY0YFKViCTFQhYfIzoQCUrkMkKKrIwogOVrEAmKxCs+GjGTwUrkMEKBCoBRnSgchXIXAUClQCNlYEKViCDFQhWAgysQAUrkMEKBCsBBlagghX0kqNVdtTGZlKAJEj7GVJBS4DOw/oz2Rz8rbEXxARo6k9H8qR6L1Gqm4M9Xn/Wt+8lS3UBToBmD3UkXar38qW6YCdAE4g6kjHVeylT3Rns+vqzvn0vbaq7I52PZE71XupUr5BDc5g6kjzVe9lT3R/pfCSBqvcyqHqVQtXx/DqSRNV77FUZd3xrYmAJ+uZv1ROmH6zgLLqtnzQtl9239H5pq+b5k7O/GvGX5lja+a/fC823xb+/u+dO1V/3j57EZ7UM8QS0cxU4nSsxBSorMRw0Z8qLO51nV+88u8ZEfxF4Wwm0OwAu9Ykus/b1D+DPBv3oEP3VL58CJ8BHbWT7VFf7yyI7d2BoTaqb7rLLzo8BxpXmR30dvPNmA1k2UVd9W031gi+vXwIG/jzgz5vgb/+aNvAFRtEmzoL2VVQwjKDDnAktrN7SA2584CYguZG/hti58gFZAY327sujwA0YOp/W1eo1j8Ad8DbBWXOZVucHAEAT1bwYADyAcfeIPsD3+UCTQFgJaAB1VzcU+y8+gaAKQl9AiyvK9WcgIgAyTdpcVr9SClrrAnE0d8jNM50/CwyDReu9satjgGPAv0XrRXhDKBgO0OCJbpq7PkFY1eF6SfWG30kDmgrGxKKtvdgVScAhmPQWLZoNXHQEfFrAp0X12bvHEvQk3HmQhxe7NxH4BENtkMcauf4QzD4w4CZ5wKvbJYEuEDUNWthsFuJm1QvLt4KpcQY2V6eFQPR1R7BrAy49WnP7LwiBCA2CvE9zptw0AZZWMBIOLXAN35oBtg+gxc4kkXtupPAKVPq0WYLdOgkAhDtC2lSGV6oCCMFoGDRY9u9ngPaBcO/TpliyS7Km46P6tSds0fRAPPBoc2T/hVIwJYC8IGiPM7Tw0r19DuYD8OdOc9PrOA+ET48W4+uXQoEY4MK1ayOPKKr3bgcYUIBFQONLOOt2h+mGY+PpAm5d2kTY33QNoIXnGNqkr4rDuAFPaG5t5NN6rX/lD4gaIKLbtGmAXzwGXILIYdMCEXJZKggcoN0msb29m0+BM7BDMWn0Uq4sBRUADE1adMLuHgUOwQiZtHhCvDEU1AHWDpNIwdiNn2CzBWCwaDDAG4gA/SBmOLTtOfbyFYgXoF8D2rxWjjQB3A/pRFXwPQrgCq5q+gQ97bs/wBXoqoBGjHRNAoj1IGp5tJjaLP/1XgBdH0E89YjtBFsKJP3lggDh0uZ0/9pCEL1Ak21aoJadoQdpFw4uzSt26yaYVwAXixZmkPszgT9AskVjBrkJE/gDEcWiRRTpRXjAC8zUELuu9+MLYBkGU8OgwYf9VgpgD6BHdKfcTAx6DcBnUdva/5kH0Fqw6TNo0Qm5xhLMDdB7NrH3kIvIQFAHFDs06gZueAdrGWi0SWt0d+EBwA4A7NNCH3gpBwAChtQ1m71us+c1iJkX6S4dIBGsrR6NljqNHYpbL99iadcGfBFF1Rf9g44HdJg0Otr3ukCkBN0VNJtc8Uyx+Q+RkebSA7DYA7c+baLWNwkAF6B5Pk1H+74YTLtJeTdaYOwuuQJYgZnjEtVgt6OCyQ1CmU3sIvnOV+ALrMg2bcu+f5EasAB2CgFtjYN3z4CJAprmEfu8/gEZMHJwCSd2z/7Xh4Ab0CaDFlb2d6yB0YfLDq1neqd4B3hwaB7aH2gDyxVYrSa4WCEZT/jsi+aqvXkN9ArYKbiEYf6+0PI4Z0mcMu18+f337/8DaMoOgA=="; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index d2c7444..3950b2e 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,12 +1,13 @@ SolanaAgentKit | solana-agent-kit

    Class SolanaAgentKit

    Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, trading and more

    SolanaAgentKit

    -

    Constructors

    Constructors

    Properties

    Methods

    Methods

    cancelAllOrders +createGibworkTask createTiplink deployCollection deployToken @@ -24,6 +25,8 @@ Provides a unified interface for token operations, NFT management, trading and m getTPS launchPumpFunToken lendAssets +limitOrder +manifestCreateMarket mintNFT openbookCreateMarket orcaClosePosition @@ -47,13 +50,14 @@ Provides a unified interface for token operations, NFT management, trading and m tensorListNFT trade transfer +withdrawAll

    Constructors

    • Parameters

      • private_key: string
      • rpc_url: string
      • openai_api_key: null | string

      Returns SolanaAgentKit

      Using openai_api_key directly in constructor is deprecated. Please use the new constructor with Config object instead:

      const agent = new SolanaAgentKit(privateKey, rpcUrl, { 
      OPENAI_API_KEY: 'your-key'
      });
      -
    • Parameters

      • private_key: string
      • rpc_url: string
      • config: Config

      Returns SolanaAgentKit

    Properties

    config: Config

    Configuration object

    -
    connection: Connection

    Solana RPC connection

    -
    wallet: Keypair

    Wallet keypair for signing transactions

    -
    wallet_address: PublicKey

    Public key of the wallet

    -

    Methods

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    +
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    +
    connection: Connection

    Solana RPC connection

    +
    wallet: Keypair

    Wallet keypair for signing transactions

    +
    wallet_address: PublicKey

    Public key of the wallet

    +

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • quantity: number
      • side: string
      • price: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index f763bbe..7b3f28e 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaTradeTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
      )[]

    +createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaTradeTool
          | SolanaLimitOrderTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
      )[]

    diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index 1b7ff4f..f380d30 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress +CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    +

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index 055d6da..f55a4f5 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators? +CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    +

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    diff --git a/docs/interfaces/Config.html b/docs/interfaces/Config.html index 9d46ae7..c0dcef2 100644 --- a/docs/interfaces/Config.html +++ b/docs/interfaces/Config.html @@ -1,4 +1,4 @@ -Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS? +Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    +

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index e9bfa4c..4eb77fe 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    address +Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    Properties

    address: string
    percentage: number
    +

    Properties

    address: string
    percentage: number
    diff --git a/docs/interfaces/FetchPriceResponse.html b/docs/interfaces/FetchPriceResponse.html index 73e4378..4ee4fc0 100644 --- a/docs/interfaces/FetchPriceResponse.html +++ b/docs/interfaces/FetchPriceResponse.html @@ -1,6 +1,6 @@ -FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code? +FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    +

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    diff --git a/docs/interfaces/GibworkCreateTaskReponse.html b/docs/interfaces/GibworkCreateTaskReponse.html index 520daa9..5d8987b 100644 --- a/docs/interfaces/GibworkCreateTaskReponse.html +++ b/docs/interfaces/GibworkCreateTaskReponse.html @@ -1,4 +1,4 @@ -GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature? +GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    +

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    diff --git a/docs/interfaces/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index e589814..f2946f1 100644 --- a/docs/interfaces/JupiterTokenData.html +++ b/docs/interfaces/JupiterTokenData.html @@ -1,4 +1,4 @@ -JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address +JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    +

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index 9d03287..6187512 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

    Interface LuloAccountDetailsResponse

    Lulo Account Details response format

    -
    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    +

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index db065a2..593bef2 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    metadata +MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    Properties

    metadata: PublicKey
    mint: PublicKey
    +

    Properties

    metadata: PublicKey
    mint: PublicKey
    diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html index eeccce9..15b26cd 100644 --- a/docs/interfaces/PumpFunTokenOptions.html +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -1,7 +1,7 @@ -PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL? +PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    +

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html index 93ddbad..7d66324 100644 --- a/docs/interfaces/PumpfunLaunchResponse.html +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -1,5 +1,5 @@ -PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error? +PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    +

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    diff --git a/docs/interfaces/PythFetchPriceResponse.html b/docs/interfaces/PythFetchPriceResponse.html index 933f24a..0b5661b 100644 --- a/docs/interfaces/PythFetchPriceResponse.html +++ b/docs/interfaces/PythFetchPriceResponse.html @@ -1,6 +1,6 @@ -PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID: string;
        status: "success" | "error";
    }

    Properties

    code? +PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID: string;
        status: "success" | "error";
    }

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID: string
    status: "success" | "error"
    +

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID: string
    status: "success" | "error"
    diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f0c6ab5..5047863 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: '@bonfida/spl-name-service': specifier: ^3.0.7 version: 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@cks-systems/manifest-sdk': + specifier: ^0.1.73 + version: 0.1.73(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) @@ -158,6 +161,9 @@ packages: '@cfworker/json-schema@4.0.3': resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} + '@cks-systems/manifest-sdk@0.1.73': + resolution: {integrity: sha512-IcRM7k3YZ/jK5nJwE3xGp2Xg7Um4/XCeqrLs5yB3+IjS7W089Qs/prJXdRGKbFwCLkMt9ds6pElHufQr8an0Iw==} + '@coral-xyz/anchor@0.26.0': resolution: {integrity: sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==} engines: {node: '>=11'} @@ -192,14 +198,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'} @@ -221,6 +251,14 @@ packages: '@gerrit0/mini-shiki@1.24.4': resolution: {integrity: sha512-YEHW1QeAg6UmxEmswiQbOVEg1CW22b1XUD/lNTliOsu0LD0wqoyleFMnmbTp697QE0pcadQiR5cVtbbAPncvpw==} + '@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'} @@ -234,6 +272,18 @@ 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'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -298,6 +348,9 @@ packages: '@metaplex-foundation/beet-solana@0.4.1': resolution: {integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==} + '@metaplex-foundation/beet@0.4.0': + resolution: {integrity: sha512-2OAKJnLatCc3mBXNL0QmWVQKAWK2C7XDfepgL0p/9+8oSx4bmRAFHFqptl1A/C0U5O3dxGwKfmKluW161OVGcA==} + '@metaplex-foundation/beet@0.6.1': resolution: {integrity: sha512-OYgnijLFzw0cdUlRKH5POp0unQECPOW9muJ2X3QIVyak5G6I6l/rKo72sICgPLIFKdmsi2jmnkuLY7wp14iXdw==} @@ -335,6 +388,13 @@ packages: peerDependencies: '@metaplex-foundation/umi': '>= 0.8.2 < 1' + '@metaplex-foundation/rustbin@0.3.5': + resolution: {integrity: sha512-m0wkRBEQB/8krwMwKBvFugufZtYwMXiGHud2cTDAv+aGXK4M90y0Hx67/wpu+AqqoQfdV8VM9YezUOHKD+Z5kA==} + + '@metaplex-foundation/solita@0.12.2': + resolution: {integrity: sha512-oczMfE43NNHWweSqhXPTkQBUbap/aAiwjDQw8zLKNnd/J8sXr/0+rKcN5yJIEgcHeKRkp90eTqkmt2WepQc8yw==} + hasBin: true + '@metaplex-foundation/umi-bundle-defaults@0.9.2': resolution: {integrity: sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw==} peerDependencies: @@ -463,6 +523,10 @@ packages: borsh: ^0.7.0 buffer: 6.0.1 + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + '@orca-so/common-sdk@0.6.4': resolution: {integrity: sha512-iOiC6exTA9t2CEOaUPoWlNP3soN/1yZFjoz1mSf7NvOqo/PJZeIdWpB7BRXwU0mGGatjxU4SFgMGQ8NrSx+ONw==} peerDependencies: @@ -479,6 +543,10 @@ packages: '@solana/web3.js': ^1.90.0 decimal.js: ^10.4.3 + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + '@pkgr/core@0.1.1': resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -514,9 +582,18 @@ packages: '@scure/bip39@1.3.0': resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + '@shikijs/core@1.24.4': + resolution: {integrity: sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==} + + '@shikijs/engine-javascript@1.24.4': + resolution: {integrity: sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==} + '@shikijs/engine-oniguruma@1.24.3': resolution: {integrity: sha512-iNnx950gs/5Nk+zrp1LuF+S+L7SKEhn8k9eXgFYPGhVshKppsYwRmW8tpmAMvILIMSDfrgqZ0w+3xWVQB//1Xw==} + '@shikijs/engine-oniguruma@1.24.4': + resolution: {integrity: sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==} + '@shikijs/types@1.24.3': resolution: {integrity: sha512-FPMrJ69MNxhRtldRk69CghvaGlbbN3pKRuvko0zvbfa2dXp4pAngByToqS5OY5jvN8D7LKR4RJE8UvzlCOuViw==} @@ -736,12 +813,18 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/node-fetch@2.6.12': resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} @@ -861,6 +944,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -869,6 +956,10 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + ansicolors@0.3.2: resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} @@ -933,6 +1024,9 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + bintrees@1.0.2: + resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==} + bn.js@4.11.6: resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} @@ -1004,6 +1098,9 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chai@5.1.2: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} @@ -1016,6 +1113,12 @@ packages: resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} @@ -1031,6 +1134,9 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} @@ -1107,6 +1213,13 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -1130,6 +1243,18 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -1183,6 +1308,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} @@ -1197,6 +1326,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} @@ -1273,6 +1416,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==} @@ -1280,6 +1427,10 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + find-process@1.4.8: + resolution: {integrity: sha512-W2PIdgXfhYeIlTzGiDyGJhjslZcwQCRcSw6plgyLu3CFk1PhQrKkTbQ5jkJ2NhOabMwETTrhl7c+xBcQ7B2jRg==} + hasBin: true + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -1288,6 +1439,10 @@ packages: 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==} @@ -1303,6 +1458,10 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + form-data-encoder@1.7.2: resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} @@ -1332,6 +1491,15 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@10.4.5: + 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 @@ -1340,6 +1508,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'} @@ -1378,6 +1550,15 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hast-util-to-html@9.0.4: + resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} @@ -1419,6 +1600,10 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} @@ -1462,6 +1647,13 @@ packages: peerDependencies: ws: '*' + 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'} @@ -1470,6 +1662,9 @@ packages: js-base64@3.7.7: resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + js-sha256@0.11.0: + resolution: {integrity: sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q==} + js-sha256@0.9.0: resolution: {integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==} @@ -1604,12 +1799,23 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} + engines: {node: '>= 0.6.0'} + loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + 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==} @@ -1627,6 +1833,9 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -1641,6 +1850,21 @@ packages: micro-ftch@0.3.1: resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.1: + resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -1656,6 +1880,10 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + 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==} @@ -1666,6 +1894,10 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1723,6 +1955,9 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + oniguruma-to-es@0.8.1: + resolution: {integrity: sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==} + openai@4.77.0: resolution: {integrity: sha512-WWacavtns/7pCUkOWvQIjyOfcdr9X+9n9Vvb0zFeKVDAqwCMDHB+iSr24SVaBAhplvSG6JrRXFpcNM9gWhOGIw==} hasBin: true @@ -1763,6 +1998,9 @@ packages: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} @@ -1785,10 +2023,21 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-scurry@1.11.1: + 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} + pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} + percentile@1.6.0: + resolution: {integrity: sha512-8vSyjdzwxGDHHwH+cSGch3A9Uj2On3UpgOWxWXMKwUvoAbnujx6DaqmV1duWXNiH/oEWpyVd6nSQccix6DM3Ng==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -1808,15 +2057,27 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + prettier@3.4.2: resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} engines: {node: '>=14'} hasBin: true + prom-client@15.1.3: + resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==} + engines: {node: ^16 || ^18 || >=20} + promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -1841,6 +2102,15 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -1862,6 +2132,15 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + rimraf@5.0.10: + 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 + rpc-websockets@9.0.4: resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} @@ -1892,6 +2171,13 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shiki@1.24.4: + resolution: {integrity: sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} @@ -1903,13 +2189,34 @@ packages: peerDependencies: sodium-native: ^3.2.0 + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + spok@1.5.5: + resolution: {integrity: sha512-IrJIXY54sCNFASyHPOY+jEirkiJ26JDqsGiI0Dvhwcnkl0PEWi1PSsrkYql0rzDw8LFVTcA7rdUCAJdE2HE+2Q==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -1937,6 +2244,9 @@ packages: resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} engines: {node: ^14.18.0 || >=16.0.0} + tdigest@0.1.2: + resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} + text-encoding-utf-8@1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} @@ -1969,6 +2279,9 @@ packages: resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} engines: {node: '>=0.6'} + 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'} @@ -2016,6 +2329,13 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typedoc@0.26.11: + resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} + engines: {node: '>= 18'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x + typedoc@0.27.6: resolution: {integrity: sha512-oBFRoh2Px6jFx366db0lLlihcalq/JzyCVp7Vaq1yphL/tbgx2e+bkpkCgJPunaPvPwoTOXSwasfklWHm7GfAw==} engines: {node: '>= 18'} @@ -2048,6 +2368,21 @@ packages: unicode-trie@2.0.0: resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -2083,6 +2418,12 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} @@ -2114,6 +2455,14 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -2165,6 +2514,12 @@ packages: zod@3.24.1: resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} + zstddec@0.0.2: + resolution: {integrity: sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + snapshots: '@babel/runtime@7.26.0': @@ -2199,6 +2554,33 @@ snapshots: '@cfworker/json-schema@4.0.3': {} + '@cks-systems/manifest-sdk@0.1.73(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 6.0.0 + js-sha256: 0.11.0 + keccak256: 1.0.6 + percentile: 1.6.0 + prom-client: 15.1.3 + rimraf: 5.0.10 + typedoc: 0.26.11(typescript@5.7.2) + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + zstddec: 0.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - jiti + - supports-color + - typescript + - utf-8-validate + '@coral-xyz/anchor@0.26.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) @@ -2263,8 +2645,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 @@ -2279,8 +2678,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': @@ -2307,6 +2728,13 @@ snapshots: '@shikijs/types': 1.24.4 '@shikijs/vscode-textmate': 9.3.1 + '@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 @@ -2319,6 +2747,19 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.1': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.0': {} @@ -2454,6 +2895,14 @@ snapshots: - supports-color - utf-8-validate + '@metaplex-foundation/beet@0.4.0': + dependencies: + ansicolors: 0.3.2 + bn.js: 5.2.1 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + '@metaplex-foundation/beet@0.6.1': dependencies: ansicolors: 0.3.2 @@ -2547,6 +2996,34 @@ snapshots: dependencies: '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/rustbin@0.3.5': + dependencies: + debug: 4.4.0 + semver: 7.6.3 + text-table: 0.2.0 + toml: 3.0.0 + transitivePeerDependencies: + - supports-color + + '@metaplex-foundation/solita@0.12.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@metaplex-foundation/beet': 0.4.0 + '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@metaplex-foundation/rustbin': 0.3.5 + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + camelcase: 6.3.0 + debug: 4.4.0 + js-sha256: 0.9.0 + prettier: 2.8.8 + snake-case: 3.0.4 + spok: 1.5.5 + 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.8)(utf-8-validate@5.0.10))': dependencies: '@metaplex-foundation/umi': 0.9.2 @@ -2686,6 +3163,8 @@ snapshots: - supports-color - utf-8-validate + '@opentelemetry/api@1.9.0': {} + '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) @@ -2702,6 +3181,9 @@ snapshots: decimal.js: 10.4.3 tiny-invariant: 1.3.3 + '@pkgjs/parseargs@0.11.0': + optional: true + '@pkgr/core@0.1.1': {} '@pythnetwork/price-service-client@1.9.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': @@ -2776,11 +3258,31 @@ snapshots: '@noble/hashes': 1.4.0 '@scure/base': 1.1.9 + '@shikijs/core@1.24.4': + dependencies: + '@shikijs/engine-javascript': 1.24.4 + '@shikijs/engine-oniguruma': 1.24.4 + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.4 + + '@shikijs/engine-javascript@1.24.4': + dependencies: + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + oniguruma-to-es: 0.8.1 + '@shikijs/engine-oniguruma@1.24.3': dependencies: '@shikijs/types': 1.24.3 '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/engine-oniguruma@1.24.4': + dependencies: + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/types@1.24.3': dependencies: '@shikijs/vscode-textmate': 9.3.1 @@ -3306,12 +3808,18 @@ snapshots: '@types/deep-eql@4.0.2': {} + '@types/estree@1.0.6': {} + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 '@types/json-schema@7.0.15': {} + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/node-fetch@2.6.12': dependencies: '@types/node': 22.10.2 @@ -3460,12 +3968,16 @@ snapshots: ansi-regex@5.0.1: {} + ansi-regex@6.1.0: {} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 ansi-styles@5.2.0: {} + ansi-styles@6.2.1: {} + ansicolors@0.3.2: {} arg@4.1.3: {} @@ -3535,6 +4047,8 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 + bintrees@1.0.2: {} + bn.js@4.11.6: {} bn.js@5.2.1: {} @@ -3614,6 +4128,8 @@ snapshots: camelcase@6.3.0: {} + ccount@2.0.1: {} + chai@5.1.2: dependencies: assertion-error: 2.0.1 @@ -3629,6 +4145,10 @@ snapshots: chalk@5.4.1: {} + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + check-error@2.1.1: {} color-convert@2.0.1: @@ -3641,6 +4161,8 @@ snapshots: dependencies: delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} + commander@10.0.1: {} commander@12.1.0: {} @@ -3699,6 +4221,12 @@ snapshots: delayed-stream@1.0.0: {} + dequal@2.0.3: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + diff@4.0.2: {} doctrine@3.0.0: @@ -3720,6 +4248,14 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + eastasianwidth@0.2.0: {} + + emoji-regex-xs@1.0.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + entities@4.5.0: {} err-code@2.0.3: {} @@ -3758,6 +4294,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: {} @@ -3805,6 +4346,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 @@ -3877,12 +4463,29 @@ 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: dependencies: to-regex-range: 5.0.1 + find-process@1.4.8: + dependencies: + 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: locate-path: 6.0.0 @@ -3894,6 +4497,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: {} @@ -3902,6 +4510,11 @@ snapshots: dependencies: is-callable: 1.2.7 + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + form-data-encoder@1.7.2: {} form-data@4.0.1: @@ -3940,6 +4553,24 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + 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 @@ -3953,6 +4584,8 @@ snapshots: dependencies: type-fest: 0.20.2 + globals@14.0.0: {} + gopd@1.2.0: {} graceful-fs@4.2.11: @@ -3999,6 +4632,26 @@ snapshots: dependencies: function-bind: 1.1.2 + hast-util-to-html@9.0.4: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + html-void-elements@3.0.0: {} + humanize-ms@1.2.1: dependencies: ms: 2.1.3 @@ -4032,6 +4685,8 @@ snapshots: is-extglob@2.1.1: {} + is-fullwidth-code-point@3.0.0: {} + is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.2 @@ -4069,6 +4724,16 @@ snapshots: dependencies: ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jackspeak@4.0.2: + dependencies: + '@isaacs/cliui': 8.0.2 + jayson@4.1.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@types/connect': 3.4.38 @@ -4089,6 +4754,8 @@ snapshots: js-base64@3.7.7: {} + js-sha256@0.11.0: {} + js-sha256@0.9.0: {} js-sha3@0.8.0: {} @@ -4199,12 +4866,18 @@ snapshots: lodash@4.17.21: {} + loglevel@1.9.2: {} + loupe@3.1.2: {} lower-case@2.0.2: dependencies: tslib: 2.8.1 + lru-cache@10.4.3: {} + + lru-cache@11.0.2: {} + lunr@2.3.9: {} make-error@1.3.6: {} @@ -4222,6 +4895,18 @@ snapshots: math-intrinsics@1.1.0: {} + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.1 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + mdurl@2.0.0: {} merge2@1.4.1: {} @@ -4236,6 +4921,23 @@ snapshots: micro-ftch@0.3.1: {} + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.1: {} + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -4249,6 +4951,10 @@ snapshots: minimalistic-assert@1.0.1: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -4259,6 +4965,8 @@ snapshots: minimist@1.2.8: {} + minipass@7.1.2: {} + ms@2.1.3: {} mustache@4.2.0: {} @@ -4307,6 +5015,12 @@ snapshots: dependencies: wrappy: 1.0.2 + oniguruma-to-es@0.8.1: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 + openai@4.77.0(zod@3.24.1): dependencies: '@types/node': 18.19.68 @@ -4356,6 +5070,8 @@ snapshots: dependencies: p-finally: 1.0.0 + package-json-from-dist@1.0.1: {} + pako@0.2.9: {} pako@2.1.0: {} @@ -4370,8 +5086,20 @@ snapshots: path-key@3.1.1: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.2 + minipass: 7.1.2 + pathval@2.0.0: {} + percentile@1.6.0: {} + picomatch@2.3.1: {} poly1305-js@0.4.4: @@ -4386,13 +5114,22 @@ snapshots: dependencies: fast-diff: 1.3.0 + prettier@2.8.8: {} + prettier@3.4.2: {} + prom-client@15.1.3: + dependencies: + '@opentelemetry/api': 1.9.0 + tdigest: 0.1.2 + promise-retry@2.0.1: dependencies: err-code: 2.0.3 retry: 0.12.0 + property-information@6.5.0: {} + proxy-from-env@1.1.0: {} punycode.js@2.3.1: {} @@ -4413,6 +5150,17 @@ snapshots: regenerator-runtime@0.14.1: {} + regex-recursion@5.1.1: + dependencies: + regex: 5.1.1 + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@5.1.1: + dependencies: + regex-utilities: 2.3.0 + resolve-from@4.0.0: {} retry@0.12.0: {} @@ -4425,6 +5173,15 @@ snapshots: dependencies: glob: 7.2.3 + rimraf@5.0.10: + dependencies: + glob: 10.4.5 + + rimraf@6.0.1: + dependencies: + glob: 11.0.0 + package-json-from-dist: 1.0.1 + rpc-websockets@9.0.4: dependencies: '@swc/helpers': 0.5.15 @@ -4463,6 +5220,17 @@ snapshots: shebang-regex@3.0.0: {} + shiki@1.24.4: + dependencies: + '@shikijs/core': 1.24.4 + '@shikijs/engine-javascript': 1.24.4 + '@shikijs/engine-oniguruma': 1.24.4 + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + + signal-exit@4.1.0: {} + snake-case@3.0.4: dependencies: dot-case: 3.0.4 @@ -4481,14 +5249,45 @@ snapshots: typedarray-to-buffer: 3.1.5 xsalsa20: 1.2.0 + space-separated-tokens@2.0.2: {} + + spok@1.5.5: + dependencies: + ansicolors: 0.3.2 + find-process: 1.4.8 + transitivePeerDependencies: + - jiti + - supports-color + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + strip-bom@3.0.0: {} strip-hex-prefix@1.0.0: @@ -4510,6 +5309,10 @@ snapshots: '@pkgr/core': 0.1.1 tslib: 2.8.1 + tdigest@0.1.2: + dependencies: + bintrees: 1.0.2 + text-encoding-utf-8@1.0.2: {} text-table@0.2.0: {} @@ -4532,6 +5335,8 @@ snapshots: treeify@1.1.0: {} + trim-lines@3.0.1: {} + ts-api-utils@1.4.3(typescript@5.7.2): dependencies: typescript: 5.7.2 @@ -4578,6 +5383,15 @@ snapshots: dependencies: is-typedarray: 1.0.0 + typedoc@0.26.11(typescript@5.7.2): + dependencies: + lunr: 2.3.9 + markdown-it: 14.1.0 + minimatch: 9.0.5 + shiki: 1.24.4 + typescript: 5.7.2 + yaml: 2.6.1 + typedoc@0.27.6(typescript@5.7.2): dependencies: '@gerrit0/mini-shiki': 1.24.4 @@ -4604,6 +5418,29 @@ snapshots: pako: 0.2.9 tiny-inflate: 1.0.3 + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + universalify@2.0.1: {} uri-js@4.4.1: @@ -4635,6 +5472,16 @@ snapshots: v8-compile-cache-lib@3.0.1: {} + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + web-streams-polyfill@3.3.3: {} web-streams-polyfill@4.0.0-beta.3: {} @@ -4672,6 +5519,18 @@ snapshots: word-wrap@1.2.5: {} + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + wrappy@1.0.2: {} ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): @@ -4697,3 +5556,7 @@ snapshots: zod: 3.24.1 zod@3.24.1: {} + + zstddec@0.0.2: {} + + zwitch@2.0.4: {} From 42e8e4758ad858332c3696a432ee84653f8365d3 Mon Sep 17 00:00:00 2001 From: aryan Date: Wed, 1 Jan 2025 02:51:40 +0530 Subject: [PATCH 54/94] wip: langchain --- src/actions/compressedAirdrop.ts | 187 +++++---- src/actions/raydiumCreateClmm.ts | 124 +++--- src/actions/tokenDataByTicker.ts | 98 ++--- src/langchain/index.ts | 650 +++++++++++++++++++------------ 4 files changed, 601 insertions(+), 458 deletions(-) diff --git a/src/actions/compressedAirdrop.ts b/src/actions/compressedAirdrop.ts index 652ae28..4be2fb4 100644 --- a/src/actions/compressedAirdrop.ts +++ b/src/actions/compressedAirdrop.ts @@ -4,102 +4,101 @@ import { z } from "zod"; import { sendCompressedAirdrop } from "../tools"; const compressedAirdropAction: Action = { - name: "solana_compressed_airdrop", - similes: [ - "ZK Compressed airdrop", - "Airdrop tokens with compression", - "Send compressed SPL airdrop", - "Airdrop to multiple recipients", + name: "solana_compressed_airdrop", + similes: [ + "ZK Compressed airdrop", + "Airdrop tokens with compression", + "Send compressed SPL airdrop", + "Airdrop to multiple recipients", + ], + description: + "Airdrop SPL tokens with ZK Compression (also known as airdropping tokens) to multiple recipients", + examples: [ + [ + { + input: { + mintAddress: "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", + amount: 42, + decimals: 6, + recipients: [ + "1nc1nerator11111111111111111111111111111111", + "BrFndAe111111111111111111111111111111111", + ], + priorityFeeInLamports: 30000, + shouldLog: true, + }, + output: { + status: "success", + message: "Airdropped 42 tokens to 2 recipients.", + transactionHashes: ["4uyfBN...", "9XsF2N..."], + }, + explanation: + "Airdrops 42 tokens (with 6 decimals) to 2 recipients, optionally logging progress to stdout.", + }, ], - description: - "Airdrop SPL tokens with ZK Compression (also known as airdropping tokens) to multiple recipients", - examples: [ - [ - { - input: { - mintAddress: "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", - amount: 42, - decimals: 6, - recipients: [ - "1nc1nerator11111111111111111111111111111111", - "BrFndAe111111111111111111111111111111111", - ], - priorityFeeInLamports: 30000, - shouldLog: true, - }, - output: { - status: "success", - message: - "Airdropped 42 tokens to 2 recipients.", - transactionHashes: ["4uyfBN...", "9XsF2N..."], - }, - explanation: - "Airdrops 42 tokens (with 6 decimals) to 2 recipients, optionally logging progress to stdout.", - }, - ], - ], - // Validate inputs with zod - schema: z.object({ - mintAddress: z - .string() - .min(1) - .describe("Mint address of the token, e.g., 'JUPy...'"), - amount: z - .number() - .positive() - .describe("Number of tokens to airdrop per recipient, e.g., 42"), - decimals: z - .number() - .nonnegative() - .int() - .describe("Decimals of the token, e.g., 6"), - recipients: z - .array(z.string()) - .nonempty() - .describe("Array of recipient addresses, e.g., ['1nc1n...']"), - priorityFeeInLamports: z - .number() - .optional() - .describe("Priority fee in lamports (default is 30_000)"), - shouldLog: z - .boolean() - .optional() - .describe("Whether to log progress to stdout (default is false)"), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - try { - const { - mintAddress, - amount, - decimals, - recipients, - priorityFeeInLamports, - shouldLog, - } = input; + ], + // Validate inputs with zod + schema: z.object({ + mintAddress: z + .string() + .min(1) + .describe("Mint address of the token, e.g., 'JUPy...'"), + amount: z + .number() + .positive() + .describe("Number of tokens to airdrop per recipient, e.g., 42"), + decimals: z + .number() + .nonnegative() + .int() + .describe("Decimals of the token, e.g., 6"), + recipients: z + .array(z.string()) + .nonempty() + .describe("Array of recipient addresses, e.g., ['1nc1n...']"), + priorityFeeInLamports: z + .number() + .optional() + .describe("Priority fee in lamports (default is 30_000)"), + shouldLog: z + .boolean() + .optional() + .describe("Whether to log progress to stdout (default is false)"), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const { + mintAddress, + amount, + decimals, + recipients, + priorityFeeInLamports, + shouldLog, + } = input; - // Call your airdrop method on the SolanaAgentKit - const txs = await sendCompressedAirdrop( - mintAddress, - amount, - decimals, - recipients, - priorityFeeInLamports || 30_000, - shouldLog || false, - ); + // Call your airdrop method on the SolanaAgentKit + const txs = await sendCompressedAirdrop( + mintAddress, + amount, + decimals, + recipients, + priorityFeeInLamports || 30_000, + shouldLog || false, + ); - return { - status: "success", - message: `Airdropped ${amount} tokens to ${recipients.length} recipients.`, - transactionHashes: txs, - }; - } catch (error: any) { - return { - status: "error", - message: `Failed to airdrop tokens: ${error.message}`, - code: error.code || "UNKNOWN_ERROR", - }; - } - }, + return { + status: "success", + message: `Airdropped ${amount} tokens to ${recipients.length} recipients.`, + transactionHashes: txs, + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to airdrop tokens: ${error.message}`, + code: error.code || "UNKNOWN_ERROR", + }; + } + }, }; -export default compressedAirdropAction; \ No newline at end of file +export default compressedAirdropAction; diff --git a/src/actions/raydiumCreateClmm.ts b/src/actions/raydiumCreateClmm.ts index 60a24db..277cc06 100644 --- a/src/actions/raydiumCreateClmm.ts +++ b/src/actions/raydiumCreateClmm.ts @@ -7,70 +7,70 @@ import Decimal from "decimal.js"; import { raydiumCreateClmm } from "../tools"; const raydiumCreateClmmAction: Action = { - name: "raydium_create_clmm", - similes: [ - "create clmm pool", - "create concentrated liquidity pool", - "raydium clmm setup", - "launch concentrated liquidity market maker", + name: "raydium_create_clmm", + similes: [ + "create clmm pool", + "create concentrated liquidity pool", + "raydium clmm setup", + "launch concentrated liquidity market maker", + ], + description: `Create a Raydium Concentrated Liquidity Market Maker (CLMM) pool with custom ranges, providing increased capital efficiency`, + examples: [ + [ + { + input: { + mint1: "9xU1vzz456... (PublicKey)", + mint2: "EfrsBcG98... (PublicKey)", + configId: "D6yTTr... (Config PublicKey)", + initialPrice: 123.12, + startTime: 0, // or current UNIX timestamp + }, + output: { + status: "success", + message: "Create raydium clmm pool successfully", + transaction: "3skCN8... (transaction signature)", + }, + explanation: + "Creates a CLMM pool between mint1 and mint2 at an initial price of 123.12 and start time of 0.", + }, ], - description: `Create a Raydium Concentrated Liquidity Market Maker (CLMM) pool with custom ranges, providing increased capital efficiency`, - examples: [ - [ - { - input: { - mint1: "9xU1vzz456... (PublicKey)", - mint2: "EfrsBcG98... (PublicKey)", - configId: "D6yTTr... (Config PublicKey)", - initialPrice: 123.12, - startTime: 0, // or current UNIX timestamp - }, - output: { - status: "success", - message: "Create raydium clmm pool successfully", - transaction: "3skCN8... (transaction signature)", - }, - explanation: - "Creates a CLMM pool between mint1 and mint2 at an initial price of 123.12 and start time of 0.", - }, - ], - ], - // Validate tool inputs using zod - schema: z.object({ - mint1: z.string().min(1).describe("First token mint address (public key)"), - mint2: z.string().min(1).describe("Second token mint address (public key)"), - configId: z.string().min(1).describe("Raydium configId (public key)"), - initialPrice: z.number().describe("Initial price for the CLMM pool"), - startTime: z.number().describe( - "Start time in seconds (UNIX timestamp or zero)", - ), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - try { - const { mint1, mint2, configId, initialPrice, startTime } = input; + ], + // Validate tool inputs using zod + schema: z.object({ + mint1: z.string().min(1).describe("First token mint address (public key)"), + mint2: z.string().min(1).describe("Second token mint address (public key)"), + configId: z.string().min(1).describe("Raydium configId (public key)"), + initialPrice: z.number().describe("Initial price for the CLMM pool"), + startTime: z + .number() + .describe("Start time in seconds (UNIX timestamp or zero)"), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const { mint1, mint2, configId, initialPrice, startTime } = input; - const tx = await raydiumCreateClmm( - agent, - new PublicKey(mint1), - new PublicKey(mint2), - new PublicKey(configId), - new Decimal(initialPrice), - new BN(startTime), - ); + const tx = await raydiumCreateClmm( + agent, + new PublicKey(mint1), + new PublicKey(mint2), + new PublicKey(configId), + new Decimal(initialPrice), + new BN(startTime), + ); - return { - status: "success", - message: "Create raydium clmm pool successfully", - transaction: tx, - }; - } catch (error: any) { - return { - status: "error", - message: `Failed to create CLMM pool: ${error.message}`, - code: error.code || "UNKNOWN_ERROR", - }; - } - }, + return { + status: "success", + message: "Create raydium clmm pool successfully", + transaction: tx, + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to create CLMM pool: ${error.message}`, + code: error.code || "UNKNOWN_ERROR", + }; + } + }, }; -export default raydiumCreateClmmAction; \ No newline at end of file +export default raydiumCreateClmmAction; diff --git a/src/actions/tokenDataByTicker.ts b/src/actions/tokenDataByTicker.ts index 6f45702..3ab3f12 100644 --- a/src/actions/tokenDataByTicker.ts +++ b/src/actions/tokenDataByTicker.ts @@ -4,57 +4,57 @@ import { z } from "zod"; import { getTokenDataByTicker } from "../tools"; const tokenDataByTickerAction: Action = { - name: "solana_token_data_by_ticker", - similes: [ - "token data by ticker", - "fetch token info by ticker", - "lookup token ticker info", - "get token info by ticker", + name: "solana_token_data_by_ticker", + similes: [ + "token data by ticker", + "fetch token info by ticker", + "lookup token ticker info", + "get token info by ticker", + ], + description: "Get the token data for a given token ticker", + examples: [ + [ + { + input: { + ticker: "USDC", + }, + output: { + status: "success", + tokenData: { + // Some placeholder example data + symbol: "USDC", + name: "USD Coin", + decimals: 6, + mintAddress: "FhRg...", + }, + }, + explanation: "Fetches metadata for the USDC token by its ticker.", + }, ], - description: "Get the token data for a given token ticker", - examples: [ - [ - { - input: { - ticker: "USDC", - }, - output: { - status: "success", - tokenData: { - // Some placeholder example data - symbol: "USDC", - name: "USD Coin", - decimals: 6, - mintAddress: "FhRg...", - }, - }, - explanation: "Fetches metadata for the USDC token by its ticker.", - }, - ], - ], - schema: z.object({ - ticker: z.string().min(1).describe("Ticker of the token, e.g. 'USDC'"), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - try { - const ticker = input.ticker as string; + ], + schema: z.object({ + ticker: z.string().min(1).describe("Ticker of the token, e.g. 'USDC'"), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const ticker = input.ticker as string; - // Use agent’s method to get token data by ticker - const tokenData = await getTokenDataByTicker(ticker); + // Use agent’s method to get token data by ticker + const tokenData = await getTokenDataByTicker(ticker); - return { - status: "success", - tokenData: tokenData, - message: `Successfully fetched token data for ticker: ${ticker}`, - }; - } catch (error: any) { - return { - status: "error", - message: `Failed to fetch token data for ticker: ${input.ticker || ""}. ${error.message}`, - code: error.code || "UNKNOWN_ERROR", - }; - } - }, + return { + status: "success", + tokenData: tokenData, + message: `Successfully fetched token data for ticker: ${ticker}`, + }; + } catch (error: any) { + return { + status: "error", + message: `Failed to fetch token data for ticker: ${input.ticker || ""}. ${error.message}`, + code: error.code || "UNKNOWN_ERROR", + }; + } + }, }; -export default tokenDataByTickerAction; \ No newline at end of file +export default tokenDataByTickerAction; diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 3dad335..43e0ea6 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1,6 +1,6 @@ import { PublicKey } from "@solana/web3.js"; import Decimal from "decimal.js"; -import { Tool } from "@langchain/core/tools"; +import { Tool } from "langchain/tools"; import { GibworkCreateTaskReponse, PythFetchPriceResponse, @@ -8,57 +8,31 @@ import { } from "../index"; import { create_image } from "../tools/create_image"; import { BN } from "@coral-xyz/anchor"; -import { FEE_TIERS, getMainAllDomainsDomain } from "../tools"; -import { toJSON } from "../utils/toJSON"; -import deployTokenAction from "../actions/deployToken"; -import balanceAction from "../actions/balance"; -import transferAction from "../actions/transfer"; -import deployCollectionAction from "../actions/deployCollection"; -import mintNFTAction from "../actions/mintNFT"; -import tradeAction from "../actions/trade"; -import requestFundsAction from "../actions/requestFunds"; -import fetchPriceAction from "../actions/fetchPrice"; -import registerDomainAction from "../actions/registerDomain"; -import resolveDomainAction from "../actions/resolveDomain"; -import getPrimaryDomainAction from "../actions/getPrimaryDomain"; -import launchPumpfunTokenAction from "../actions/launchPumpfunToken"; -import createImageAction from "../actions/createImage"; -import lendAssetAction from "../actions/lendAsset"; -import getTPSAction from "../actions/getTPS"; -import createOrcaSingleSidedWhirlpoolAction from "../actions/createOrcaSingleSidedWhirlpool"; -import raydiumCreateCpmmAction from "../actions/raydiumCreateCpmm"; -import pythFetchPriceAction from "../actions/pythFetchPrice"; -import getOwnedDomainsForTLDAction from "../actions/getOwnedDomainsForTLD"; -import createGibworkTaskAction from "../actions/createGibworkTask"; -import getTokenDataAction from "../actions/getTokenData"; -import stakeWithJupAction from "../actions/stakeWithJup"; -import resolveSolDomainAction from "../actions/resolveSolDomain"; -import getAllDomainsTLDsAction from "../actions/getAllDomainsTLDs"; -import getMainAllDomainsDomainAction from "../actions/getMainAllDomainsDomain"; -import raydiumCreateAmmV4Action from "../actions/raydiumCreateAmmV4"; -import tokenDataByTickerAction from "../actions/tokenDataByTicker"; -import compressedAirdropAction from "../actions/compressedAirdrop"; -import raydiumCreateClmmAction from "../actions/raydiumCreateClmm"; -import createOpenbookMarketAction from "../actions/createOpenbookMarket"; export class SolanaBalanceTool extends Tool { - private action = balanceAction; - name = this.action.name; - description = this.action.description; + name = "solana_balance"; + description = `Get the balance of a Solana wallet or token account. + + If you want to get the balance of your wallet, you don't need to provide the tokenAddress. + If no tokenAddress is provided, the balance will be in SOL. + + Inputs ( input is a JSON string ): + tokenAddress: string, eg "So11111111111111111111111111111111111111112" (optional)`; constructor(private solanaKit: SolanaAgentKit) { super(); } - async _call(input: string): Promise { + protected async _call(input: string): Promise { try { - // Parse input as JSON if provided, otherwise use empty object - const parsedInput = input ? JSON.parse(input) : {}; + const tokenAddress = input ? new PublicKey(input) : undefined; + const balance = await this.solanaKit.getBalance(tokenAddress); - // Validate and execute using the action - const result = await this.action.handler(this.solanaKit, parsedInput); - - return JSON.stringify(result); + return JSON.stringify({ + status: "success", + balance, + token: input || "SOL", + }); } catch (error: any) { return JSON.stringify({ status: "error", @@ -70,23 +44,41 @@ export class SolanaBalanceTool extends Tool { } export class SolanaTransferTool extends Tool { - private action = transferAction; - name = this.action.name; - description = this.action.description; + name = "solana_transfer"; + description = `Transfer tokens or SOL to another address ( also called as wallet address ). + + Inputs ( input is a JSON string ): + to: string, eg "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk" (required) + amount: number, eg 1 (required) + mint?: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (optional)`; constructor(private solanaKit: SolanaAgentKit) { super(); } - async _call(input: string): Promise { + protected async _call(input: string): Promise { try { - // Parse input as JSON const parsedInput = JSON.parse(input); - // Validate and execute using the action - const result = await this.action.handler(this.solanaKit, parsedInput); + const recipient = new PublicKey(parsedInput.to); + const mintAddress = parsedInput.mint + ? new PublicKey(parsedInput.mint) + : undefined; - return JSON.stringify(result); + const tx = await this.solanaKit.transfer( + recipient, + parsedInput.amount, + mintAddress, + ); + + return JSON.stringify({ + status: "success", + message: "Transfer completed successfully", + amount: parsedInput.amount, + recipient: parsedInput.to, + token: parsedInput.mint || "SOL", + transaction: tx, + }); } catch (error: any) { return JSON.stringify({ status: "error", @@ -98,23 +90,38 @@ export class SolanaTransferTool extends Tool { } export class SolanaDeployTokenTool extends Tool { - private action = deployTokenAction; - name = this.action.name; - description = this.action.description; + name = "solana_deploy_token"; + description = `Deploy a new token on Solana blockchain. + + Inputs (input is a JSON string): + name: string, eg "My Token" (required) + uri: string, eg "https://example.com/token.json" (required) + symbol: string, eg "MTK" (required) + decimals?: number, eg 9 (optional, defaults to 9) + initialSupply?: number, eg 1000000 (optional)`; constructor(private solanaKit: SolanaAgentKit) { super(); } - async _call(input: string): Promise { + protected async _call(input: string): Promise { try { - // Parse input as JSON const parsedInput = JSON.parse(input); - // Validate and execute using the action - const result = await this.action.handler(this.solanaKit, parsedInput); + const result = await this.solanaKit.deployToken( + parsedInput.name, + parsedInput.uri, + parsedInput.symbol, + parsedInput.decimals, + parsedInput.initialSupply, + ); - return JSON.stringify(result); + return JSON.stringify({ + status: "success", + message: "Token deployed successfully", + mintAddress: result.mint.toString(), + decimals: parsedInput.decimals || 9, + }); } catch (error: any) { return JSON.stringify({ status: "error", @@ -126,23 +133,30 @@ export class SolanaDeployTokenTool extends Tool { } export class SolanaDeployCollectionTool extends Tool { - private action = deployCollectionAction; - name = this.action.name; - description = this.action.description; + name = "solana_deploy_collection"; + description = `Deploy a new NFT collection on Solana blockchain. + + Inputs (input is a JSON string): + name: string, eg "My Collection" (required) + uri: string, eg "https://example.com/collection.json" (required) + royaltyBasisPoints?: number, eg 500 for 5% (optional)`; constructor(private solanaKit: SolanaAgentKit) { super(); } - async _call(input: string): Promise { + protected async _call(input: string): Promise { try { - // Parse input as JSON const parsedInput = JSON.parse(input); - // Validate and execute using the action - const result = await this.action.handler(this.solanaKit, parsedInput); + const result = await this.solanaKit.deployCollection(parsedInput); - return JSON.stringify(result); + return JSON.stringify({ + status: "success", + message: "Collection deployed successfully", + collectionAddress: result.collectionAddress.toString(), + name: parsedInput.name, + }); } catch (error: any) { return JSON.stringify({ status: "error", @@ -154,23 +168,45 @@ export class SolanaDeployCollectionTool extends Tool { } export class SolanaMintNFTTool extends Tool { - private action = mintNFTAction; - name = this.action.name; - description = this.action.description; + name = "solana_mint_nft"; + description = `Mint a new NFT in a collection on Solana blockchain. + + Inputs (input is a JSON string): + collectionMint: string, eg "J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w" (required) - The address of the collection to mint into + name: string, eg "My NFT" (required) + uri: string, eg "https://example.com/nft.json" (required) + recipient?: string, eg "9aUn5swQzUTRanaaTwmszxiv89cvFwUCjEBv1vZCoT1u" (optional) - The wallet to receive the NFT, defaults to agent's wallet which is ${this.solanaKit.wallet_address.toString()}`; constructor(private solanaKit: SolanaAgentKit) { super(); } - async _call(input: string): Promise { + protected async _call(input: string): Promise { try { - // Parse input as JSON const parsedInput = JSON.parse(input); - // Validate and execute using the action - const result = await this.action.handler(this.solanaKit, parsedInput); + const result = await this.solanaKit.mintNFT( + new PublicKey(parsedInput.collectionMint), + { + name: parsedInput.name, + uri: parsedInput.uri, + }, + parsedInput.recipient + ? new PublicKey(parsedInput.recipient) + : this.solanaKit.wallet_address, + ); - return JSON.stringify(result); + return JSON.stringify({ + status: "success", + message: "NFT minted successfully", + mintAddress: result.mint.toString(), + metadata: { + name: parsedInput.name, + symbol: parsedInput.symbol, + uri: parsedInput.uri, + }, + recipient: parsedInput.recipient || result.mint.toString(), + }); } catch (error: any) { return JSON.stringify({ status: "error", @@ -182,23 +218,40 @@ export class SolanaMintNFTTool extends Tool { } export class SolanaTradeTool extends Tool { - private action = tradeAction; - name = this.action.name; - description = this.action.description; + name = "solana_trade"; + description = `This tool can be used to swap tokens to another token ( It uses Jupiter Exchange ). + + Inputs ( input is a JSON string ): + outputMint: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (required) + inputAmount: number, eg 1 or 0.01 (required) + inputMint?: string, eg "So11111111111111111111111111111111111111112" (optional) + slippageBps?: number, eg 100 (optional)`; constructor(private solanaKit: SolanaAgentKit) { super(); } - async _call(input: string): Promise { + protected async _call(input: string): Promise { try { - // Parse input as JSON const parsedInput = JSON.parse(input); - // Validate and execute using the action - const result = await this.action.handler(this.solanaKit, parsedInput); + const tx = await this.solanaKit.trade( + new PublicKey(parsedInput.outputMint), + parsedInput.inputAmount, + parsedInput.inputMint + ? new PublicKey(parsedInput.inputMint) + : new PublicKey("So11111111111111111111111111111111111111112"), + parsedInput.slippageBps, + ); - return JSON.stringify(result); + return JSON.stringify({ + status: "success", + message: "Trade executed successfully", + transaction: tx, + inputAmount: parsedInput.inputAmount, + inputToken: parsedInput.inputMint || "SOL", + outputToken: parsedInput.outputMint, + }); } catch (error: any) { return JSON.stringify({ status: "error", @@ -210,20 +263,22 @@ export class SolanaTradeTool extends Tool { } export class SolanaRequestFundsTool extends Tool { - private action = requestFundsAction; - name = this.action.name; - description = this.action.description; + name = "solana_request_funds"; + description = "Request SOL from Solana faucet (devnet/testnet only)"; constructor(private solanaKit: SolanaAgentKit) { super(); } - async _call(_input: string): Promise { + protected async _call(_input: string): Promise { try { - // No input needed for this action - const result = await this.action.handler(this.solanaKit, {}); + await this.solanaKit.requestFaucetFunds(); - return JSON.stringify(result); + return JSON.stringify({ + status: "success", + message: "Successfully requested faucet funds", + network: this.solanaKit.connection.rpcEndpoint.split("/")[2], + }); } catch (error: any) { return JSON.stringify({ status: "error", @@ -235,9 +290,13 @@ export class SolanaRequestFundsTool extends Tool { } export class SolanaRegisterDomainTool extends Tool { - private action = registerDomainAction - name = this.action.name; - description = this.action.description; + name = "solana_register_domain"; + description = `Register a .sol domain name for your wallet. + + Inputs: + name: string, eg "pumpfun.sol" (required) + spaceKB: number, eg 1 (optional, default is 1) + `; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -257,10 +316,13 @@ export class SolanaRegisterDomainTool extends Tool { protected async _call(input: string): Promise { try { - const parsedInput = toJSON(input); + const parsedInput = JSON.parse(input); this.validateInput(parsedInput); - const tx = await this.action.handler(this.solanaKit, parsedInput); + const tx = await this.solanaKit.registerDomain( + parsedInput.name, + parsedInput.spaceKB || 1, + ); return JSON.stringify({ status: "success", @@ -280,9 +342,14 @@ export class SolanaRegisterDomainTool extends Tool { } export class SolanaResolveDomainTool extends Tool { - private action = resolveSolDomainAction; - name = this.action.name; - description = this.action.description; + name = "solana_resolve_domain"; + description = `Resolve ONLY .sol domain names to a Solana PublicKey. + This tool is exclusively for .sol domains. + DO NOT use this for other domain types like .blink, .bonk, etc. + + Inputs: + domain: string, eg "pumpfun.sol" (required) + `; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -290,8 +357,8 @@ export class SolanaResolveDomainTool extends Tool { protected async _call(input: string): Promise { try { - const domain = { domain: input.trim() }; - const publicKey = await this.action.handler(this.solanaKit, domain); + const domain = input.trim(); + const publicKey = await this.solanaKit.resolveSolDomain(domain); return JSON.stringify({ status: "success", @@ -309,9 +376,12 @@ export class SolanaResolveDomainTool extends Tool { } export class SolanaGetDomainTool extends Tool { - private action = getPrimaryDomainAction; - name = this.action.name; - description = this.action.description; + name = "solana_get_domain"; + description = `Retrieve the .sol domain associated for a given account address. + + Inputs: + account: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required) + `; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -351,10 +421,18 @@ export class SolanaGetWalletAddressTool extends Tool { } export class SolanaPumpfunTokenLaunchTool extends Tool { - private action = launchPumpfunTokenAction; - name = this.action.name; + name = "solana_launch_pumpfun_token"; - description = this.action.description; + description = `This tool can be used to launch a token on Pump.fun, + do not use this tool for any other purpose, or for creating SPL tokens. + If the user asks you to chose the parameters, you should generate valid values. + For generating the image, you can use the solana_create_image tool. + + Inputs: + tokenName: string, eg "PumpFun Token", + tokenTicker: string, eg "PUMP", + description: string, eg "PumpFun Token is a token on the Solana blockchain", + imageUrl: string, eg "https://i.imgur.com/UFm07Np_d.png`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -390,9 +468,17 @@ export class SolanaPumpfunTokenLaunchTool extends Tool { this.validateInput(parsedInput); // Launch token with validated input - await this.action.handler( - this.solanaKit, - parsedInput, + await this.solanaKit.launchPumpFunToken( + parsedInput.tokenName, + parsedInput.tokenTicker, + parsedInput.description, + parsedInput.imageUrl, + { + twitter: parsedInput.twitter, + telegram: parsedInput.telegram, + website: parsedInput.website, + initialLiquiditySOL: parsedInput.initialLiquiditySOL, + }, ); return JSON.stringify({ @@ -412,9 +498,9 @@ export class SolanaPumpfunTokenLaunchTool extends Tool { } export class SolanaCreateImageTool extends Tool { - private action = createImageAction; - name = this.action.name; - description = this.action.description; + name = "solana_create_image"; + description = + "Create an image using OpenAI's DALL-E. Input should be a string prompt for the image."; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -429,8 +515,7 @@ export class SolanaCreateImageTool extends Tool { protected async _call(input: string): Promise { try { this.validateInput(input); - const parsedInput = JSON.parse(input); - const result = await this.action.handler(this.solanaKit, parsedInput); + const result = await create_image(this.solanaKit, input.trim()); return JSON.stringify({ status: "success", @@ -448,9 +533,11 @@ export class SolanaCreateImageTool extends Tool { } export class SolanaLendAssetTool extends Tool { - private action = lendAssetAction; - name = this.action.name; - description = this.action.description; + name = "solana_lend_asset"; + description = `Lend idle USDC for yield using Lulo. ( only USDC is supported ) + + Inputs (input is a json string): + amount: number, eg 1, 0.01 (required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -460,13 +547,13 @@ export class SolanaLendAssetTool extends Tool { try { const amount = JSON.parse(input).amount || input; - const tx = await this.action.handler(this.solanaKit, { amount }); + const tx = await this.solanaKit.lendAssets(amount); return JSON.stringify({ status: "success", message: "Asset lent successfully", transaction: tx, - amount: amount, + amount, }); } catch (error: any) { return JSON.stringify({ @@ -479,9 +566,8 @@ export class SolanaLendAssetTool extends Tool { } export class SolanaTPSCalculatorTool extends Tool { - private action = getTPSAction; - name = this.action.name; - description = this.action.description; + name = "solana_get_tps"; + description = "Get the current TPS of the Solana network"; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -489,7 +575,7 @@ export class SolanaTPSCalculatorTool extends Tool { async _call(_input: string): Promise { try { - const tps = await this.action.handler(this.solanaKit, {}); + const tps = await this.solanaKit.getTPS(); return `Solana (mainnet-beta) current transactions per second: ${tps}`; } catch (error: any) { return `Error fetching TPS: ${error.message}`; @@ -498,9 +584,11 @@ export class SolanaTPSCalculatorTool extends Tool { } export class SolanaStakeTool extends Tool { - private action = stakeWithJupAction; - name = this.action.name; - description = this.action.description; + name = "solana_stake"; + description = `This tool can be used to stake your SOL (Solana), also called as SOL staking or liquid staking. + + Inputs ( input is a JSON string ): + amount: number, eg 1 or 0.01 (required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -510,7 +598,7 @@ export class SolanaStakeTool extends Tool { try { const parsedInput = JSON.parse(input) || Number(input); - const tx = await this.action.handler(this.solanaKit, parsedInput); + const tx = await this.solanaKit.stake(parsedInput.amount); return JSON.stringify({ status: "success", @@ -532,9 +620,11 @@ export class SolanaStakeTool extends Tool { * Tool to fetch the price of a token in USDC */ export class SolanaFetchPriceTool extends Tool { - private action = fetchPriceAction; - name = this.action.name; - description = this.action.description; + name = "solana_fetch_price"; + description = `Fetch the price of a given token in USDC. + + Inputs: + - tokenId: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -542,9 +632,7 @@ export class SolanaFetchPriceTool extends Tool { async _call(input: string): Promise { try { - - const parsedInput = { tokenId: input.trim() }; - const price = await this.action.handler(this.solanaKit, parsedInput); + const price = await this.solanaKit.fetchTokenPrice(input.trim()); return JSON.stringify({ status: "success", tokenId: input.trim(), @@ -561,9 +649,11 @@ export class SolanaFetchPriceTool extends Tool { } export class SolanaTokenDataTool extends Tool { - private action = getTokenDataAction - name = this.action.name; - description = this.action.description; + name = "solana_token_data"; + description = `Get the token data for a given token mint address + + Inputs: mintAddress is required. + mintAddress: string, eg "So11111111111111111111111111111111111111112" (required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -571,13 +661,13 @@ export class SolanaTokenDataTool extends Tool { protected async _call(input: string): Promise { try { + const parsedInput = input.trim(); - const parsedInput = JSON.parse(input); - const tokenData = await this.action.handler(this.solanaKit, parsedInput); + const tokenData = await this.solanaKit.getTokenDataByAddress(parsedInput); return JSON.stringify({ status: "success", - tokenData: tokenData, + tokenData, }); } catch (error: any) { return JSON.stringify({ @@ -590,9 +680,11 @@ export class SolanaTokenDataTool extends Tool { } export class SolanaTokenDataByTickerTool extends Tool { - private action = tokenDataByTickerAction; - name = this.action.name; - description = this.action.description; + name = "solana_token_data_by_ticker"; + description = `Get the token data for a given token ticker + + Inputs: ticker is required. + ticker: string, eg "USDC" (required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -601,10 +693,10 @@ export class SolanaTokenDataByTickerTool extends Tool { protected async _call(input: string): Promise { try { const ticker = input.trim(); - const tokenData = await this.action.handler(this.solanaKit, { ticker }); + const tokenData = await this.solanaKit.getTokenDataByTicker(ticker); return JSON.stringify({ status: "success", - tokenData: tokenData, + tokenData, }); } catch (error: any) { return JSON.stringify({ @@ -617,9 +709,16 @@ export class SolanaTokenDataByTickerTool extends Tool { } export class SolanaCompressedAirdropTool extends Tool { - private action = compressedAirdropAction; - name = this.action.name; - description = this.action.description; + name = "solana_compressed_airdrop"; + description = `Airdrop SPL tokens with ZK Compression (also called as airdropping tokens) + + Inputs (input is a JSON string): + mintAddress: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" (required) + amount: number, the amount of tokens to airdrop per recipient, e.g., 42 (required) + decimals: number, the decimals of the token, e.g., 6 (required) + recipients: string[], the recipient addresses, e.g., ["1nc1nerator11111111111111111111111111111111"] (required) + priorityFeeInLamports: number, the priority fee in lamports. Default is 30_000. (optional) + shouldLog: boolean, whether to log progress to stdout. Default is false. (optional)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -628,7 +727,16 @@ export class SolanaCompressedAirdropTool extends Tool { protected async _call(input: string): Promise { try { const parsedInput = JSON.parse(input); - const txs = await this.action.handler(this.solanaKit, parsedInput); + + const txs = await this.solanaKit.sendCompressedAirdrop( + parsedInput.mintAddress, + parsedInput.amount, + parsedInput.decimals, + parsedInput.recipients, + parsedInput.priorityFeeInLamports || 30_000, + parsedInput.shouldLog || false, + ); + return JSON.stringify({ status: "success", message: `Airdropped ${parsedInput.amount} tokens to ${parsedInput.recipients.length} recipients.`, @@ -644,60 +752,16 @@ export class SolanaCompressedAirdropTool extends Tool { } } -export class SolanaCreateSingleSidedWhirlpoolTool extends Tool { - private action = createOrcaSingleSidedWhirlpoolAction; - name = this.action.name; - description = this.action.description; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - const depositTokenAmount = new BN(inputFormat.depositTokenAmount); - const depositTokenMint = new PublicKey(inputFormat.depositTokenMint); - const otherTokenMint = new PublicKey(inputFormat.otherTokenMint); - const initialPrice = new Decimal(inputFormat.initialPrice); - const maxPrice = new Decimal(inputFormat.maxPrice); - const feeTier = inputFormat.feeTier; - - if (!feeTier || !(feeTier in FEE_TIERS)) { - throw new Error( - `Invalid feeTier.Available options: ${Object.keys(FEE_TIERS).join( - ", ", - ) - } `, - ); - } - const txId = await this.action.handler(this.solanaKit, { - depositTokenAmount, - depositTokenMint, - otherTokenMint, - initialPrice, - maxPrice, - feeTier, - }); - return JSON.stringify({ - status: "success", - message: "Single-sided Whirlpool created successfully", - transaction: txId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - export class SolanaRaydiumCreateAmmV4 extends Tool { - private action = raydiumCreateAmmV4Action; - name = this.action.name; - description = this.action.description; + name = "raydium_create_ammV4"; + description = `Raydium's Legacy AMM that requires an OpenBook marketID + + Inputs (input is a json string): + marketId: string (required) + baseAmount: number(int), eg: 111111 (required) + quoteAmount: number(int), eg: 111111 (required) + startTime: number(seconds), eg: now number or zero (required) + `; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -707,11 +771,16 @@ export class SolanaRaydiumCreateAmmV4 extends Tool { try { const inputFormat = JSON.parse(input); - const tx = await this.action.handler(this.solanaKit, inputFormat); + const tx = await this.solanaKit.raydiumCreateAmmV4( + new PublicKey(inputFormat.marketId), + new BN(inputFormat.baseAmount), + new BN(inputFormat.quoteAmount), + new BN(inputFormat.startTime), + ); return JSON.stringify({ status: "success", - message: "Create raydium amm v4 pool successfully", + message: "Raydium amm v4 pool created successfully", transaction: tx, }); } catch (error: any) { @@ -725,9 +794,16 @@ export class SolanaRaydiumCreateAmmV4 extends Tool { } export class SolanaRaydiumCreateClmm extends Tool { - private action = raydiumCreateClmmAction; - name = this.action.name; - description = this.action.description; + name = "raydium_create_clmm"; + description = `Concentrated liquidity market maker, custom liquidity ranges, increased capital efficiency + + Inputs (input is a json string): + mint1: string (required) + mint2: string (required) + configId: string (required) stores pool info, id, index, protocolFeeRate, tradeFeeRate, tickSpacing, fundFeeRate + initialPrice: number, eg: 123.12 (required) + startTime: number(seconds), eg: now number or zero (required) + `; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -737,11 +813,19 @@ export class SolanaRaydiumCreateClmm extends Tool { try { const inputFormat = JSON.parse(input); - const tx = await this.action.handler(this.solanaKit, inputFormat); + const tx = await this.solanaKit.raydiumCreateClmm( + new PublicKey(inputFormat.mint1), + new PublicKey(inputFormat.mint2), + + new PublicKey(inputFormat.configId), + + new Decimal(inputFormat.initialPrice), + new BN(inputFormat.startTime), + ); return JSON.stringify({ status: "success", - message: "Create raydium clmm pool successfully", + message: "Raydium clmm pool created successfully", transaction: tx, }); } catch (error: any) { @@ -755,9 +839,17 @@ export class SolanaRaydiumCreateClmm extends Tool { } export class SolanaRaydiumCreateCpmm extends Tool { - private action = raydiumCreateCpmmAction; - name = this.action.name; - description = this.action.description; + name = "raydium_create_cpmm"; + description = `Raydium's newest CPMM, does not require marketID, supports Token 2022 standard + + Inputs (input is a json string): + mint1: string (required) + mint2: string (required) + configId: string (required), stores pool info, index, protocolFeeRate, tradeFeeRate, fundFeeRate, createPoolFee + mintAAmount: number(int), eg: 1111 (required) + mintBAmount: number(int), eg: 2222 (required) + startTime: number(seconds), eg: now number or zero (required) + `; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -766,11 +858,22 @@ export class SolanaRaydiumCreateCpmm extends Tool { async _call(input: string): Promise { try { const inputFormat = JSON.parse(input); - const tx = await this.action.handler(this.solanaKit, inputFormat); + + const tx = await this.solanaKit.raydiumCreateCpmm( + new PublicKey(inputFormat.mint1), + new PublicKey(inputFormat.mint2), + + new PublicKey(inputFormat.configId), + + new BN(inputFormat.mintAAmount), + new BN(inputFormat.mintBAmount), + + new BN(inputFormat.startTime), + ); return JSON.stringify({ status: "success", - message: "Create raydium cpmm pool successfully", + message: "Raydium cpmm pool created successfully", transaction: tx, }); } catch (error: any) { @@ -784,9 +887,15 @@ export class SolanaRaydiumCreateCpmm extends Tool { } export class SolanaOpenbookCreateMarket extends Tool { - private action = createOpenbookMarketAction; - name = this.action.name; - description = this.action.description; + name = "solana_openbook_create_market"; + description = `Openbook marketId, required for ammv4 + + Inputs (input is a json string): + baseMint: string (required) + quoteMint: string (required) + lotSize: number (required) + tickSize: number (required) + `; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -795,11 +904,18 @@ export class SolanaOpenbookCreateMarket extends Tool { async _call(input: string): Promise { try { const inputFormat = JSON.parse(input); - const tx = await this.action.handler(this.solanaKit, inputFormat); + + const tx = await this.solanaKit.openbookCreateMarket( + new PublicKey(inputFormat.baseMint), + new PublicKey(inputFormat.quoteMint), + + inputFormat.lotSize, + inputFormat.tickSize, + ); return JSON.stringify({ status: "success", - message: "Create openbook market successfully", + message: "Openbook market created successfully", transaction: tx, }); } catch (error: any) { @@ -813,9 +929,11 @@ export class SolanaOpenbookCreateMarket extends Tool { } export class SolanaPythFetchPrice extends Tool { - private action = pythFetchPriceAction; - name = this.action.name; - description = this.action.description; + name = "solana_pyth_fetch_price"; + description = `Fetch the price of a given price feed from Pyth's Hermes service + + Inputs: + priceFeedID: string, the price feed ID, e.g., "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43" for BTC/USD`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -823,12 +941,11 @@ export class SolanaPythFetchPrice extends Tool { async _call(input: string): Promise { try { - const parsedInput = { tokenId: input.trim() }; - const price = await this.action.handler(this.solanaKit, parsedInput); + const price = await this.solanaKit.pythFetchPrice(input); const response: PythFetchPriceResponse = { status: "success", priceFeedID: input, - price: price.price, + price, }; return JSON.stringify(response); } catch (error: any) { @@ -844,9 +961,13 @@ export class SolanaPythFetchPrice extends Tool { } export class SolanaResolveAllDomainsTool extends Tool { - private action = resolveDomainAction; - name = this.action.name; - description = this.action.description; + name = "solana_resolve_all_domains"; + description = `Resolve domain names to a public key for ALL domain types EXCEPT .sol domains. + Use this for domains like .blink, .bonk, etc. + DO NOT use this for .sol domains (use solana_resolve_domain instead). + + Input: + domain: string, eg "mydomain.blink" or "mydomain.bonk" (required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -854,8 +975,7 @@ export class SolanaResolveAllDomainsTool extends Tool { async _call(input: string): Promise { try { - const parsedInput = JSON.parse(input); - const owner = await this.action.handler(this.solanaKit, parsedInput); + const owner = await this.solanaKit.resolveAllDomains(input); if (!owner) { return JSON.stringify({ @@ -881,9 +1001,11 @@ export class SolanaResolveAllDomainsTool extends Tool { } export class SolanaGetOwnedDomains extends Tool { - private action = getOwnedDomainsForTLDAction; - name = this.action.name; - description = this.action.description; + name = "solana_get_owned_domains"; + description = `Get all domains owned by a specific wallet address. + + Inputs: + owner: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -892,12 +1014,12 @@ export class SolanaGetOwnedDomains extends Tool { async _call(input: string): Promise { try { const ownerPubkey = new PublicKey(input.trim()); - const domains = await this.action.handler(this.solanaKit, ownerPubkey); + const domains = await this.solanaKit.getOwnedAllDomains(ownerPubkey); return JSON.stringify({ status: "success", message: "Owned domains fetched successfully", - domains: domains, + domains, }); } catch (error: any) { return JSON.stringify({ @@ -910,9 +1032,11 @@ export class SolanaGetOwnedDomains extends Tool { } export class SolanaGetOwnedTldDomains extends Tool { - private action = getOwnedDomainsForTLDAction; - name = this.action.name; - description = this.action.description; + name = "solana_get_owned_tld_domains"; + description = `Get all domains owned by the agent's wallet for a specific TLD. + + Inputs: + tld: string, eg "bonk" (required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -920,12 +1044,12 @@ export class SolanaGetOwnedTldDomains extends Tool { async _call(input: string): Promise { try { - const domains = await this.action.handler(this.solanaKit, { tld: input }); + const domains = await this.solanaKit.getOwnedDomainsForTLD(input); return JSON.stringify({ status: "success", message: "TLD domains fetched successfully", - domains: domains, + domains, }); } catch (error: any) { return JSON.stringify({ @@ -938,9 +1062,8 @@ export class SolanaGetOwnedTldDomains extends Tool { } export class SolanaGetAllTlds extends Tool { - private action = getAllDomainsTLDsAction; - name = this.action.name; - description = this.action.description; + name = "solana_get_all_tlds"; + description = `Get all active top-level domains (TLDs) in the AllDomains Name Service`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -948,12 +1071,12 @@ export class SolanaGetAllTlds extends Tool { async _call(): Promise { try { - const tlds = await this.action.handler(this.solanaKit, {}); + const tlds = await this.solanaKit.getAllDomainsTLDs(); return JSON.stringify({ status: "success", message: "TLDs fetched successfully", - tlds: tlds, + tlds, }); } catch (error: any) { return JSON.stringify({ @@ -966,9 +1089,12 @@ export class SolanaGetAllTlds extends Tool { } export class SolanaGetMainDomain extends Tool { - private action = getMainAllDomainsDomainAction; - name = this.action.name; - description = this.action.description; + name = "solana_get_main_domain"; + description = `Get the main/favorite domain for a given wallet address. + + Inputs: + owner: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required)`; + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -977,7 +1103,7 @@ export class SolanaGetMainDomain extends Tool { try { const ownerPubkey = new PublicKey(input.trim()); const mainDomain = - await this.action.handler(this.solanaKit, ownerPubkey); + await this.solanaKit.getMainAllDomainsDomain(ownerPubkey); return JSON.stringify({ status: "success", @@ -995,9 +1121,19 @@ export class SolanaGetMainDomain extends Tool { } export class SolanaCreateGibworkTask extends Tool { - private action = createGibworkTaskAction; - name = this.action.name; - description = this.action.description; + name = "create_gibwork_task"; + description = `Create a task on Gibwork. + + Inputs (input is a JSON string): + title: string, title of the task (required) + content: string, description of the task (required) + requirements: string, requirements to complete the task (required) + tags: string[], list of tags associated with the task (required) + payer: string, payer address (optional, defaults to agent wallet) + tokenMintAddress: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" (required) + amount: number, payment amount (required) + `; + constructor(private solanaSdk: SolanaAgentKit) { super(); } @@ -1005,7 +1141,16 @@ export class SolanaCreateGibworkTask extends Tool { protected async _call(input: string): Promise { try { const parsedInput = JSON.parse(input); - const taskData = await this.action.handler(this.solanaSdk, parsedInput); + + const taskData = await this.solanaSdk.createGibworkTask( + parsedInput.title, + parsedInput.content, + parsedInput.requirements, + parsedInput.tags, + parsedInput.tokenMintAddress, + parsedInput.amount, + parsedInput.payer, + ); const response: GibworkCreateTaskReponse = { status: "success", @@ -1049,7 +1194,6 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaRaydiumCreateClmm(solanaKit), new SolanaRaydiumCreateCpmm(solanaKit), new SolanaOpenbookCreateMarket(solanaKit), - new SolanaCreateSingleSidedWhirlpoolTool(solanaKit), new SolanaPythFetchPrice(solanaKit), new SolanaResolveDomainTool(solanaKit), new SolanaGetOwnedDomains(solanaKit), From e438f8e4fa4c330d12ddeff8fca190040674d664 Mon Sep 17 00:00:00 2001 From: aryan Date: Wed, 1 Jan 2025 02:56:34 +0530 Subject: [PATCH 55/94] fix: dependency --- package.json | 13 +++++++------ pnpm-lock.yaml | 3 +++ src/types/index.ts | 1 + 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index abd3301..564ecd3 100644 --- a/package.json +++ b/package.json @@ -50,19 +50,20 @@ "form-data": "^4.0.1", "langchain": "^0.3.6", "openai": "^4.75.0", - "typedoc": "^0.26.11" + "typedoc": "^0.26.11", + "zod": "^3.24.1" }, "devDependencies": { "@types/bn.js": "^5.1.5", "@types/chai": "^5.0.1", "@types/node": "^22.9.0", - "ts-node": "^10.9.2", - "typescript": "^5.7.2", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0", - "prettier": "^3.2.5" + "prettier": "^3.2.5", + "ts-node": "^10.9.2", + "typescript": "^5.7.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddfc583..7e2d727 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -98,6 +98,9 @@ importers: typedoc: specifier: ^0.26.11 version: 0.26.11(typescript@5.7.2) + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@types/bn.js': specifier: ^5.1.5 diff --git a/src/types/index.ts b/src/types/index.ts index 95d1fc5..3d27431 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -91,3 +91,4 @@ export interface GibworkCreateTaskReponse { taskId?: string | undefined; signature?: string | undefined; } + From 31713f9facb28599a10a3a805206be66c5ba9fb5 Mon Sep 17 00:00:00 2001 From: aryan Date: Wed, 1 Jan 2025 03:22:52 +0530 Subject: [PATCH 56/94] chore: docs --- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 12 ++++++------ docs/functions/createSolanaTools.html | 2 +- docs/functions/executeAction.html | 2 ++ docs/functions/findAction.html | 2 ++ docs/functions/getActionExamples.html | 2 ++ docs/interfaces/Action.html | 16 ++++++++++++++++ docs/interfaces/ActionExample.html | 5 +++++ docs/interfaces/CollectionDeployment.html | 4 ++-- docs/interfaces/CollectionOptions.html | 4 ++-- docs/interfaces/Config.html | 4 ++-- docs/interfaces/Creator.html | 4 ++-- docs/interfaces/FetchPriceResponse.html | 4 ++-- docs/interfaces/GibworkCreateTaskReponse.html | 4 ++-- docs/interfaces/JupiterTokenData.html | 4 ++-- docs/interfaces/LuloAccountDetailsResponse.html | 4 ++-- docs/interfaces/MintCollectionNFTResponse.html | 4 ++-- docs/interfaces/PumpFunTokenOptions.html | 4 ++-- docs/interfaces/PumpfunLaunchResponse.html | 4 ++-- docs/interfaces/PythFetchPriceResponse.html | 4 ++-- docs/modules.html | 2 +- docs/types/Handler.html | 2 ++ docs/variables/actions.html | 1 + 24 files changed, 64 insertions(+), 34 deletions(-) create mode 100644 docs/functions/executeAction.html create mode 100644 docs/functions/findAction.html create mode 100644 docs/functions/getActionExamples.html create mode 100644 docs/interfaces/Action.html create mode 100644 docs/interfaces/ActionExample.html create mode 100644 docs/types/Handler.html create mode 100644 docs/variables/actions.html diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index d9dd0b7..f44ac19 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "eJyNlMFKw0AQht9lz8Fg0SK5FUMFrVpqbuJhXSfNks3ssjuLFum7S1PRxm6mXnKZb74/DD/7/CkIPkgU4skaiXK2BqQ7TSITTlIjCqGMDAFCPpyfNdQZkYlW45sozidX2+zHdG2NAUXaYgnO2E0HeODTSOBrqSDkKXAonlxOk+JHt/uGE9Zvildirdcjnt2IXfYgyfr09n7Grc+BVLP0WsEKgrMYIGk6xjjpjX59t77t46GSoV3BuHoM5gJuo9MEvrItYClJJsV/IU64iMbOlLIRqQSS2gT2HOM4F3KvkX6L8TCv2IxRmotYxs7VERcyompYfZI8pZ5H7M/JVT/BsdoNNf8sYRrl5Kov1f7VqKw1B39cR+wPG/IjaGicXmxfvgDluqEc" \ No newline at end of file +window.navigationData = "eJyNlFFPwjAQx79Ln4kTFFTeiIhGUQnyZnwo5caadddlvSrE+N2NQGRj3cHLHna//+/Sy7Xv34JgRaIv3qyRKAdLQHrSJFoil5SIvlBGOgcuqtbPEsqMaIlU40L0253rn9a/aaBIW9wbNBIUsVTgom2pGu50e7Xw3UpmuQHGsSM41a01BjbwEHJj1xkgBY0h8DTxa/73dUesO4pXYqyXDZ6/EhsuQJItwultjYuPgFQyKbSCKbjcogvPvY5x0ns9/7JFumkPM+nSKTSrm2CuwaPPNUExsyngUJIMig8hTjj2xg6Ush5pCCS1cew4mnGuybNG2i/Gy2jG9mikuRYTn+Wxx7H0qBJWHySPqUceN+PkVj/Asdo1JScuYRjl5A8SFwZKl4PWObho9/sgeX5z1e52SmmpDk75KQst5wZctCtVDRflsNrs8/bhnFlrSprY4zYe1aCqsHdZEsIKlCc4fGD3sgrAiGKNi2bLvsoolkCVlzh4uBpUE378Ahp6RJM=" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 6cd8305..a216523 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "eJytnVtznDgWgP8Lfu1KEHf85jj2bmaciStxZmurK+WSG7XNmgYW6CTeVP77lrg0R+iAD00/zVSsc5H06Ug6oqVfRpH9KI3z9S/jOU4j45xZwcpI+U4Y58aXLOEpv3gUafVnXBkrY18kxrmxSXhZivKt+uc3T9UuMVbdX41zw/i96rS6zDpo3WRpWRX7TZUVFJVnanmgfmXkvBBppXvaG2am5UDLqdhUcZZSDffFl9j9wZNEkNrv7FB0ub17HkWFKMsZdoHIwnbexo/UNm6KzrRnmU7PaSH+uxdldc33G1Fd79OIVudWbFuLbVuxJX5EIk+yl7vsWdAAa8pXbfnlli+zJJnBdyO0gUJLfHgU1Tue8HQjSNYfRfVwKH4au5+qJ0GLKb3xrJVZ4sEuTqu/ru9IlmXZdHvECFcsVgVPyy2xsqDwslH2GJeVKN5nOx7TCOtEok5kmf0yS76LL1kyy4NaqMySk/jwKKrbIt7x4mWGD4+iyhuhk/hQFTyiDbGu5BJrSbyLq09FRGStLp61xZfY3cjBmVwkSW2bFtAbGZ4kWSezxIMfcfUUFfzHRZLQptC2PE+SpW0u0uiiLEVFq7YszrviC+m+u/1CZbrKT2FPTn7vecXfvVzMWK5I81Iy4hV/eDl61TLhzV28eaZPJsCZqhNc4stWVJun2pvbIiZOqLVM7UjeyixikO/TzdPtfpdf71P6kqYRy/e7fLtPT7GyKSv+TKt/V3KRNZFGl9kulziJ6CIuoiLLadZFGm0OkvwgucSbrNjwyyQrxW1WxuRlnZTaSKm8l1rsRSF4JS5vPn6ku1CLbJLd7mT2v8TpYyK+xJGIbuL/7uMorl5us4wWnnufylpNKdUknZq8UbPUz2s5BrveooUyKVYP3RyILfXjUy7SS5FWohBR586/4urp0Gxk17JcpJtWU+ehnOkSoOkU3oK+nU279BF06om4b5eOF0m73qRuKmspnrQLzhPMSp9+pCKa6cajqDIpdnI/Wieus+Lu5v0sV1o/tllRJdFyb/oGubt5T26Uvj2qZPF+v/Hic7vJOaaPeJIUB/FT9tVHHqe9O/M2K7Js78tp9m78JYr3uyaMX+x2fzu0wdSINWGb73bfnVP6cdnMTTPdOMGMpnqRH+VFvnxezUX6kGXPjRsfefFMzFF2go0nu05wUQaFp/FWlNVsXzrBE/qSv1RPzTxOXnpLkWYOP8HKu6nKP+KHH1nxfMfLZ9ret5Z6bKSqRmoRo9nm+ZbnoviyicsyI+7ApVQupcpeanlb3MV5Eqdz2qE6SCzKtIi0zIqbuCRn9xqJJC5PkeOrdV3WOQ3pQ5zSUuqNXJMLSQ5yMz3xnEEfNCXvsizpSdju0zpxXL7VykyeBlmud9B+qZ4VxHKlueUbUb5t/jKpSDl1+HR79dfFh/uL2w/3f179+xWNdRDj8T3P4/tnMb6Ibd0bMfnH19sPd1ef7z9fXV99/nxxc39xefnp6193rxn/zz6PK1HcF2IrioIn93yzyfbpODE0N66vru7fgQTOK9a3Qtw/TCRxNKNKv8keByd40FbzJ3rPDQ+qRnSdvZbn6XwaMZOLQu5k+KN41ZJSlGpMxbo7VfmUq3tBpVMGhehNVv+HrPKsLT7Wz0NfR4zui3iGzab0QpNF9sKT6uUdL+PyNovTakZDnrXCD1I474QXOrRpun2OG0BkvnEcqvf10d1OpNW0H305Olr9geAwI0sxcdaLvzpcseqMOFXGjymv9sUr0A+dgWJHOQGb/2OcVn3xv67vPosyz9IS9Wm0ML0j5FHhfNVnrRhe3fE6jDkhKi4T28c40ose7wzsAJiNngirSDF6o1c/4qoS6Lw2pvesl8Hrifk9Zl4k4rHgu3n2e6HFDvwQD2VcoUiP2u9lFpuP07iKeXLIU375dDPLlVb+kJ0sJ9K6M9wqkzjP+aN4l88i7qyTm1pmzXAjL+KsiKuXazGvgzq5rTi2k4bDcLtPb+qjnqkYiBakD8XJmD+umxD08RrMDMMTHkyG4HnG2xj6FV96TfnQSk4tw2a5IooCX+9PONHJHGceQnezT7KLZpf0XlQ8Tsop8sZLz5gJsoonf/Nkf4yFs1r6eyuNV3+iSqPRUSaKy+qKF6mIjnGr0yA6DadyrRA8qeKduMhfjvGrE+f5+F58vlOlqGT6A43Zr3kEZBe4AxH+o9l3Hz4ywLwaljnJJhpV+upuWnN35lYUtzq5E6WaLF92D+DY91Wjh/LLzEZiE+94MqONgcQy0xXHKcbNtqWXmUyyx+zr5w90q1JgarYhNzOPk5f771mynwPWQGqZC9tCiP+Je76vnuqFE90NRHKZK3ItcYwjmtwyN3JR7Hgq0uo+krsNjm8RcFdQ2WXuiJ8yzT22A8TdUGRmm4eRvD8emlqE6KVmrH0rXu3Ruo1oPTtI4DVDXB5d9zyL9AO6uhizXYvE48sJuvH6AO1D+vXL+8s5DtRicbovo80JnNiJshzJEo850IssNb7JolmW2/JHmFX2dMqh5+SmDi15CrInNL9G94j7U5BdCxF9eD/Xj1p0K0Q0QfsRzhzlxokcmKB9yoXXiJ/nxBj1Ux5Mkv+qeUh/e9jefH0gj9w/i1H+x8qeYgRM6n5tDIxWYnRJWT7jYX7aDSk3Qf9cNyazPK80yKuJHoIzdv/LRL5Rc8rfeRHzh0SUb9u/kE+1L9RfYYEaNX9ZftAH9EzvqVpXRlt/FycChRFa6IsdYyQS5aaIc0KTnKlFjzEmfvJdTqgSKHdUw22exA7dwivt1pU6xsQTT6MEP4qANvpiRCM6qFdNW4xbagvQsY3TfI9mTXV9Z13ZKfc7D0fMZfuKbu9QeIFB8TOX37pMI61YVSXmmbbM0GduH6j+OSCjeslF+bb918lOAt/1bOM0GsSp/oOe/o9UdeKn2OwrMapR+TtVqfzCFrYJ9u2RVgZT/m1lxGkkfhrnv4zvopC7QOPcsN7Yb0JjZWxjIb8GPl934XaT7drD9Sjb7Ov//dYW+1ts6sP883VT+q1prNbmynHe+L797dtq3QnXf6j/odPR/0styIzVmmGCTBNkiqBlrNYWJmhpgpYiaBurtY0J2pqgrQg6xmrtYIKOJugogq6xWrsrO3zjea4i6GqCriLoGau1h1n0NEFPEfSN1drHBH1N0FcEA2O1DjDBQBMMFMHQWK1DTDDUBEMVAMkDQ9lhOjxsQE+ND84PApBKEJNcMJQhpkPEVIqYZIOhHDEdJKaSxCQfDGWJ6TAxlSYmGWEuKqwDxVSimOSEoUwxHSqmUsUkKwzliulgMZUsJnlhKFtMh4updDHJDEP5YjpgTCXMksxYKGGWTpilEmZJZiyUMEsnzBrEqDpI4VEKCVMqYZZkxkIJs3TCLJUwSzJjoYRZOmGWSpglmbFQwiydMEslzJLMWChhlk6YpRJmSWYslDBLJ8xSCbMkMxZKmKUTZqmEWZIZCyXM0gmzVMJsyYyNEmbrhNkqYbZkxkYJs3XCbJUwWzJjo4TZOmH2YCasp0J8LkQmQ5UwWzJjo4TZOmG2SpgtmbFRwmydMFslzJbM2Chhtk6YrRJmS2ZslDBbJ8xWCbMlMzZKmK0TZquE2ZIZGyXM1gmzVcIcyYyDEubohDkqYY5kxkEJc3TCHJUwRzLjoIQ5OmGOSpgjmXFQwhydMGew3qoXXPiKC1lyqYQ5khkHJczRCXNUwhzJjIMS5uiEOSphjmTGQQlzdMIclTBHMuOghDk6YY5KmCOZcVDCHJ0wRyXMlcy4KGGuTpirEuZKZlyUMFcnzFUJc63R9bEOmKsC5kpkXJROVwfMVQFzJTIuSqerA+YOFvX1qh6l00XW9SpgrkTGRel0dcBcFTBXIuN6aIPpgLkqYK5ExkXpdHXAXBUwVyLjonS6OmCuCphXAxaubO/NYDOj4+WpeHkSGA9l09Px8lS8PEmMh7Lp6Xx5Kl+eJMZD+fJ0vjyVL08S46F8eTpfnsqXJ4nxUL48nS9vsHGsd44u0tbIzlGly5O8ePiuU6fLU+nyJC+ej6Hp6XR5Kl2e5MVD6fJ0ujyVLl8S46Gxz9f58lW+fEmMj/Ll63z5Kl++JMZH+fJ1vnyVL18S46N8+TpfvsqXL4nxUb58nS9f5cuXxPgoX77Ol6/y5UtmfDR++Tph/iA5UWcnUMJ8JD+hEuYHI2T7Ol++ypcfjsLp63z5Kl+BJMZH42ag8xWofAU1X3heRecrUPkKar5QsgOdr0DlK5DEBCjZgc5XoPIVSGIClOxA5ytQ+QokMQFKdqDzFah8BZKYACU70PkKVL4CSUyAkh3ofAWDBFgwOrkGSA5MJSwIR6a4QOcrUPkKJTEBOqJCna9Q5SuUxAToiAp1vkKVr1ASE6BkhzpfocpXWPOFkh3qfIUqX2HNF5411PkKVb5CSUyIkh3qfIUqX6EkJkTJDnW+QpWvUBITomSHOl+hylcoiQlRskOdr3CQZK2zrCjZIZJnHSZaJTQhEjqbv6jC4N9aaUlNiGcOTSTXag6SraYEJ8SThyaSbjUH+VZTshMG2MBs/jaUH6RcTYlPGOLySNLVHGRdzTrtao4kqpHEqznIvJreaPMjmVdzkHo169yriae6TST7ag7Sr2adfzXxdLeJZGDNQQrWDCc6AEnCmgP86tT9SAdgmX4t1V/n+k085Y5m+wcE1hl8tAOwdP8w398k/E08aY+l/Ic5/zqNj61cGJbzHyb9m6y/iaf9sbz/MPHfZP5NfABjuf9h8r/O52OTG8OS/8Psf5P+N/Hxjx0ADE8AmiMAEz9AwA4BBqcAzGoOmvBDBOQggA1OApjVHDbhEQA5DGCD0wBWJ/gZY+gQQA4E2OBEgNVJfjZ2ZIUwODgVYHWin40cWyEHA2xwMsDqZD8bObpCDgfY4HSA1Ql/NnJ8hRwQsMEJAauT/qONiJA4OCVgdeKfjZyBIQcFbHBSwOrkPxs5B0MOC9jgtIDVBwBs5CwMOTDo/q0+v/8uikpEH5pz/PW6/V7LWP0y7tvDfTnIa0vynF8O4/Nfv3/3x/nnv36DE335N2msUSO6b2CAtv7W+l+GBIqurVS9cqFXLk1P9/OcXo8LKuf6jVwQkLRpV+MC7wLgHFFb/eVlryIMgQrTaaTkLEZTpl0Y0GvuvwX5ZXi0huv1ReCWBKDSBiqdmSqzXOtdF7SfGxL1NZfeACVARyPkWlRVh0cKenWAW7Ka/pEFwAboV5oe/RqqXpsD+HVoY7O9sbO+WKhqLh8CjQbcc+f4d7geCvgGetEhjoLuChzgEezHGTXM1CHpgf7zaGFH/flTryoAQzOk0d7/aA2oAV0X0ppaf14AqOu10dpaeSqh1+P3enyiHvB9KYzQMAgy2ihuf9wMvIHVojVS/xUqdAaGU4sWRdvP65ApkflQG7Fq8GNFqAtOZBYNcPizKzBlgCgc0hjob9grDr9PAQrBTBHSaqndmA0CKNBm0YaN/GQSa364IrGINdV+RAjqaYJ60mZEedEoXOOotCnzv02jDblJtddoA+Bs2rCcugoVKAae2rSWhK+MgDYETThTTfteCBytcO1D1YbfsQqqCly0yT5qV/4ChWDk2mRssIt7gU6Atk0LBvpbGKAlYXAhu4i9AwDGMVwJ0ZZC+HX+QCWIXMQ9QfdaAlACli4WbapoF1XtCoaXz4XQgqDMEYF5jKb48AMCGBTgyq9puJUh95MUheglPGCaBD76tNja/kQAOggrSozQw8svwHoEVDegKdNuUQSrQDB5uDSQx2+EBGpBld1ZTh54VuoMvAxoHYu97gCYBuPXolUbPl0CFIGQSlz+wHdnACVw6UOsYneJAWgoMO2EtAGf7JOs7cGouRsEW7L4IMgHtOCE33cMtjGgUx0aI4cfcoL5ES4JTLsd/SZtHuqvfQMbGqDQm6dm0Bk+6NKAxkZzGxNwBqjwgkbIJzo1uFQBNBmIICFtLpTK+u1Ruq0wRjwwx3o0hA9PjMFwCacFkpa6OIw+AFbPbISCsEWDOLiGl+4C7WCedmljDL+GHAwFEC4dokr96RQQlQDDxHX88B0UoAy0JnFPRnnABKzNQAwlLuqxl0iAQoCQTUOI+H4IsAEosGkBcfL9D6AZwGATYWh/JghHkQMXHbQpDl4lDHgHMcilwYTdogLiD2i6kDYatU2vPCIFcZ/oFrwRAeqCIcec4VF3jQeoG5zGTRoXypWHYPoAaxSfFqbb5U6z9kGncRCifWJFwRIKSSl7IDr4tME7fIIAxEFQZYfIrKIMq7P8GgD0CU0t9pwH8BNodGiVRh7mAPoAgA4tYCFPbAB9YHA4NAiVW+3AghJoCohNN3hJE/QE3AjRIhv28C2AD8zzRHXak0cg8IKQadMWpPqbnaC2MAIT1elvUoBOBaHFoY1d7FZx0HqAOo9GSXdJAJxo4Ogi5gdGXqADaw5QV+JOvr8EEdALgAtohICLOkBLgbjkee0yPOgWlLS+PdxLASMTnC2IB5rKPb0gsgPafNpAbY6quHxR4zlWVg+gS2nRrX3QEHQgGJrE5Ht3ZwyYTGGWzWwX8vKbq7bhicy2NyoCLIDekFbB5ppCoAL0XEjzo7uMBvY/DBHEiNjfoA06H4xkn+gN9vQKWPQBBFxiE6kPyoDABZYIDm0DcbilDcAADydMWpyBN9uCvgN1C4iN3jxPDLoOekPju3/bGqhRvtqgqelucAfdDyrk01pmkKrwgAaPpkE+HqzuYuG+ZYaKeyQXDlNDNFXdve6gVUDb+kSH4LvIoJfgIScB4G8rI49zkcSpMM7X337//j+lb/9s"; \ No newline at end of file diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index 3950b2e..75d01d1 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,7 +1,7 @@ SolanaAgentKit | solana-agent-kit

    Class SolanaAgentKit

    Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, trading and more

    SolanaAgentKit

    -

    Constructors

    Constructors

    Properties

    config connection wallet @@ -56,8 +56,8 @@ Please use the new constructor with Config object instead:

    const agent = new SolanaAgentKit(privateKey, rpcUrl, { 
    OPENAI_API_KEY: 'your-key'
    });
    -
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    -
    connection: Connection

    Solana RPC connection

    -
    wallet: Keypair

    Wallet keypair for signing transactions

    -
    wallet_address: PublicKey

    Public key of the wallet

    -

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • quantity: number
      • side: string
      • price: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    +
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    +
    connection: Connection

    Solana RPC connection

    +
    wallet: Keypair

    Wallet keypair for signing transactions

    +
    wallet_address: PublicKey

    Public key of the wallet

    +

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • quantity: number
      • side: string
      • price: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index 7b3f28e..58a1447 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaTradeTool
          | SolanaLimitOrderTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
      )[]

    +createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaTradeTool
          | SolanaLimitOrderTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
      )[]

    diff --git a/docs/functions/executeAction.html b/docs/functions/executeAction.html new file mode 100644 index 0000000..9770295 --- /dev/null +++ b/docs/functions/executeAction.html @@ -0,0 +1,2 @@ +executeAction | solana-agent-kit

    Function executeAction

    diff --git a/docs/functions/findAction.html b/docs/functions/findAction.html new file mode 100644 index 0000000..956c00b --- /dev/null +++ b/docs/functions/findAction.html @@ -0,0 +1,2 @@ +findAction | solana-agent-kit

    Function findAction

    diff --git a/docs/functions/getActionExamples.html b/docs/functions/getActionExamples.html new file mode 100644 index 0000000..66c7fcc --- /dev/null +++ b/docs/functions/getActionExamples.html @@ -0,0 +1,2 @@ +getActionExamples | solana-agent-kit

    Function getActionExamples

    diff --git a/docs/interfaces/Action.html b/docs/interfaces/Action.html new file mode 100644 index 0000000..3674de1 --- /dev/null +++ b/docs/interfaces/Action.html @@ -0,0 +1,16 @@ +Action | solana-agent-kit

    Interface Action

    Main Action interface inspired by ELIZA +This interface makes it easier to implement actions across different frameworks

    +
    interface Action {
        description: string;
        examples: ActionExample[][];
        handler: Handler;
        name: string;
        schema: ZodType;
        similes: string[];
    }

    Properties

    description: string

    Detailed description of what the action does

    +
    examples: ActionExample[][]

    Array of example inputs and outputs for the action +Each inner array represents a group of related examples

    +
    handler: Handler

    Function that executes the action

    +
    name: string

    Unique name of the action

    +
    schema: ZodType

    Zod schema for input validation

    +
    similes: string[]

    Alternative names/phrases that can trigger this action

    +
    diff --git a/docs/interfaces/ActionExample.html b/docs/interfaces/ActionExample.html new file mode 100644 index 0000000..cce4440 --- /dev/null +++ b/docs/interfaces/ActionExample.html @@ -0,0 +1,5 @@ +ActionExample | solana-agent-kit

    Interface ActionExample

    Example of an action with input and output

    +
    interface ActionExample {
        explanation: string;
        input: Record<string, any>;
        output: Record<string, any>;
    }

    Properties

    Properties

    explanation: string
    input: Record<string, any>
    output: Record<string, any>
    diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index f380d30..dde0571 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress +CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    +

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index f55a4f5..175ff9e 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators? +CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    +

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    diff --git a/docs/interfaces/Config.html b/docs/interfaces/Config.html index c0dcef2..193bb10 100644 --- a/docs/interfaces/Config.html +++ b/docs/interfaces/Config.html @@ -1,4 +1,4 @@ -Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS? +Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    +

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index 4eb77fe..a3fb74b 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    address +Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    Properties

    address: string
    percentage: number
    +

    Properties

    address: string
    percentage: number
    diff --git a/docs/interfaces/FetchPriceResponse.html b/docs/interfaces/FetchPriceResponse.html index 4ee4fc0..6553e66 100644 --- a/docs/interfaces/FetchPriceResponse.html +++ b/docs/interfaces/FetchPriceResponse.html @@ -1,6 +1,6 @@ -FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code? +FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    +

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    diff --git a/docs/interfaces/GibworkCreateTaskReponse.html b/docs/interfaces/GibworkCreateTaskReponse.html index 5d8987b..062d006 100644 --- a/docs/interfaces/GibworkCreateTaskReponse.html +++ b/docs/interfaces/GibworkCreateTaskReponse.html @@ -1,4 +1,4 @@ -GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature? +GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    +

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    diff --git a/docs/interfaces/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index f2946f1..bdf6d93 100644 --- a/docs/interfaces/JupiterTokenData.html +++ b/docs/interfaces/JupiterTokenData.html @@ -1,4 +1,4 @@ -JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address +JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    +

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index 6187512..2f6c104 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

    Interface LuloAccountDetailsResponse

    Lulo Account Details response format

    -
    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    +

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index 593bef2..59e93db 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    metadata +MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    Properties

    metadata: PublicKey
    mint: PublicKey
    +

    Properties

    metadata: PublicKey
    mint: PublicKey
    diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html index 15b26cd..739e7bd 100644 --- a/docs/interfaces/PumpFunTokenOptions.html +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -1,7 +1,7 @@ -PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL? +PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    +

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html index 7d66324..26b3f0c 100644 --- a/docs/interfaces/PumpfunLaunchResponse.html +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -1,5 +1,5 @@ -PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error? +PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    +

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    diff --git a/docs/interfaces/PythFetchPriceResponse.html b/docs/interfaces/PythFetchPriceResponse.html index 0b5661b..825c164 100644 --- a/docs/interfaces/PythFetchPriceResponse.html +++ b/docs/interfaces/PythFetchPriceResponse.html @@ -1,6 +1,6 @@ -PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID: string;
        status: "success" | "error";
    }

    Properties

    code? +PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID: string;
        status: "success" | "error";
    }

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID: string
    status: "success" | "error"
    +

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID: string
    status: "success" | "error"
    diff --git a/docs/modules.html b/docs/modules.html index 52a12f1..37d8574 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1 +1 @@ -solana-agent-kit
    +solana-agent-kit
    diff --git a/docs/types/Handler.html b/docs/types/Handler.html new file mode 100644 index 0000000..9844f48 --- /dev/null +++ b/docs/types/Handler.html @@ -0,0 +1,2 @@ +Handler | solana-agent-kit

    Type Alias Handler

    Handler: (
        agent: SolanaAgentKit,
        input: Record<string, any>,
    ) => Promise<Record<string, any>>

    Handler function type for executing the action

    +

    Type declaration

      • (
            agent: SolanaAgentKit,
            input: Record<string, any>,
        ): Promise<Record<string, any>>
      • Parameters

        Returns Promise<Record<string, any>>

    diff --git a/docs/variables/actions.html b/docs/variables/actions.html new file mode 100644 index 0000000..712f2a5 --- /dev/null +++ b/docs/variables/actions.html @@ -0,0 +1 @@ +actions | solana-agent-kit

    Variable actionsConst

    actions: Action[] = ...
    From 18b719012bde33d95463cd07719159b31cce0226 Mon Sep 17 00:00:00 2001 From: aryan Date: Wed, 1 Jan 2025 03:23:17 +0530 Subject: [PATCH 57/94] fix: pkg version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 770d4db..126272b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "solana-agent-kit", - "version": "1.3.2", + "version": "1.3.3", "description": "connect any ai agents to solana protocols", "main": "dist/index.js", "types": "dist/index.d.ts", From e2f153677496c4dd9aed2400d18ca0874c7a5e23 Mon Sep 17 00:00:00 2001 From: aryan Date: Wed, 1 Jan 2025 03:37:56 +0530 Subject: [PATCH 58/94] fix: naming --- src/actions/balance.ts | 2 +- src/actions/compressedAirdrop.ts | 2 +- src/actions/createGibworkTask.ts | 2 +- src/actions/createImage.ts | 2 +- src/actions/createOpenbookMarket.ts | 2 +- src/actions/createOrcaSingleSidedWhirlpool.ts | 2 +- src/actions/deployCollection.ts | 2 +- src/actions/deployToken.ts | 2 +- src/actions/fetchPrice.ts | 2 +- src/actions/getAllDomainsTLDs.ts | 2 +- src/actions/getAllRegisteredAllDomains.ts | 2 +- src/actions/getMainAllDomainsDomain.ts | 2 +- src/actions/getOwnedAllDomains.ts | 2 +- src/actions/getOwnedDomainsForTLD.ts | 2 +- src/actions/getPrimaryDomain.ts | 2 +- src/actions/getTPS.ts | 2 +- src/actions/getTokenData.ts | 2 +- src/actions/index.ts | 60 +++++++++---------- src/actions/launchPumpfunToken.ts | 2 +- src/actions/lendAsset.ts | 2 +- src/actions/mintNFT.ts | 2 +- src/actions/pythFetchPrice.ts | 2 +- src/actions/raydiumCreateAmmV4.ts | 2 +- src/actions/raydiumCreateClmm.ts | 2 +- src/actions/raydiumCreateCpmm.ts | 2 +- src/actions/registerDomain.ts | 2 +- src/actions/requestFunds.ts | 2 +- src/actions/resolveDomain.ts | 2 +- src/actions/resolveSolDomain.ts | 2 +- src/actions/stakeWithJup.ts | 2 +- src/actions/tokenDataByTicker.ts | 2 +- src/actions/trade.ts | 2 +- src/actions/transfer.ts | 2 +- src/index.ts | 3 +- src/types/index.ts | 55 +++++++++++++++++ src/utils/actionExecutor.ts | 4 +- test/index.ts | 2 +- 37 files changed, 121 insertions(+), 67 deletions(-) diff --git a/src/actions/balance.ts b/src/actions/balance.ts index 107b709..381b2a5 100644 --- a/src/actions/balance.ts +++ b/src/actions/balance.ts @@ -5,7 +5,7 @@ import { z } from "zod"; import { get_balance } from "../tools"; const balanceAction: Action = { - name: "solana_balance", + name: "BALANCE_ACTION", similes: [ "check balance", "get wallet balance", diff --git a/src/actions/compressedAirdrop.ts b/src/actions/compressedAirdrop.ts index 4be2fb4..107d352 100644 --- a/src/actions/compressedAirdrop.ts +++ b/src/actions/compressedAirdrop.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { sendCompressedAirdrop } from "../tools"; const compressedAirdropAction: Action = { - name: "solana_compressed_airdrop", + name: "COMPRESSED_AIRDROP", similes: [ "ZK Compressed airdrop", "Airdrop tokens with compression", diff --git a/src/actions/createGibworkTask.ts b/src/actions/createGibworkTask.ts index 3ff8b12..12aa809 100644 --- a/src/actions/createGibworkTask.ts +++ b/src/actions/createGibworkTask.ts @@ -5,7 +5,7 @@ import { PublicKey } from "@solana/web3.js"; import { create_gibwork_task } from "../tools"; const createGibworkTaskAction: Action = { - name: "solana_create_gibwork_task", + name: "CREATE_GIBWORK_TASK", similes: [ "create task", "post job", diff --git a/src/actions/createImage.ts b/src/actions/createImage.ts index 895fefb..adbf55c 100644 --- a/src/actions/createImage.ts +++ b/src/actions/createImage.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { create_image } from "../tools/create_image"; const createImageAction: Action = { - name: "solana_create_image", + name: "CREATE_IMAGE", similes: [ "generate image", "create artwork", diff --git a/src/actions/createOpenbookMarket.ts b/src/actions/createOpenbookMarket.ts index dafb509..ae76559 100644 --- a/src/actions/createOpenbookMarket.ts +++ b/src/actions/createOpenbookMarket.ts @@ -5,7 +5,7 @@ import { PublicKey } from "@solana/web3.js"; import { openbookCreateMarket } from "../tools"; const createOpenbookMarketAction: Action = { - name: "solana_create_openbook_market", + name: "CREATE_OPENBOOK_MARKET", similes: [ "create openbook market", "setup trading market", diff --git a/src/actions/createOrcaSingleSidedWhirlpool.ts b/src/actions/createOrcaSingleSidedWhirlpool.ts index 9b95cdf..affc445 100644 --- a/src/actions/createOrcaSingleSidedWhirlpool.ts +++ b/src/actions/createOrcaSingleSidedWhirlpool.ts @@ -20,7 +20,7 @@ const FEE_TIERS = { } as const; const createOrcaSingleSidedWhirlpoolAction: Action = { - name: "solana_create_orca_single_sided_whirlpool", + name: "CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL", similes: [ "create orca whirlpool", "setup orca single sided pool", diff --git a/src/actions/deployCollection.ts b/src/actions/deployCollection.ts index 0ac8e6c..1ca5e14 100644 --- a/src/actions/deployCollection.ts +++ b/src/actions/deployCollection.ts @@ -10,7 +10,7 @@ interface CollectionOptions { } const deployCollectionAction: Action = { - name: "solana_deploy_collection", + name: "DEPLOY_COLLECTION", similes: [ "create collection", "launch collection", diff --git a/src/actions/deployToken.ts b/src/actions/deployToken.ts index d365054..3a3f25d 100644 --- a/src/actions/deployToken.ts +++ b/src/actions/deployToken.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { deploy_token } from "../tools"; const deployTokenAction: Action = { - name: "deploy_token", + name: "DEPLOY_TOKEN", similes: [ "create token", "launch token", diff --git a/src/actions/fetchPrice.ts b/src/actions/fetchPrice.ts index 0c45391..b232671 100644 --- a/src/actions/fetchPrice.ts +++ b/src/actions/fetchPrice.ts @@ -5,7 +5,7 @@ import { PublicKey } from "@solana/web3.js"; import { fetchPrice } from "../tools"; const fetchPriceAction: Action = { - name: "solana_fetch_price", + name: "FETCH_PRICE", similes: [ "get token price", "check price", diff --git a/src/actions/getAllDomainsTLDs.ts b/src/actions/getAllDomainsTLDs.ts index 1eae1aa..d8d2b64 100644 --- a/src/actions/getAllDomainsTLDs.ts +++ b/src/actions/getAllDomainsTLDs.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { getAllDomainsTLDs } from "../tools"; const getAllDomainsTLDsAction: Action = { - name: "solana_get_all_tlds", + name: "GET_ALL_TLDS", similes: [ "list domain tlds", "get domain extensions", diff --git a/src/actions/getAllRegisteredAllDomains.ts b/src/actions/getAllRegisteredAllDomains.ts index 6ed9140..a4d5688 100644 --- a/src/actions/getAllRegisteredAllDomains.ts +++ b/src/actions/getAllRegisteredAllDomains.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { getAllRegisteredAllDomains } from "../tools"; const getAllRegisteredAllDomainsAction: Action = { - name: "solana_get_all_registered_all_domains", + name: "GET_ALL_REGISTERED_ALL_DOMAINS", similes: [ "list registered domains", "get all domains", diff --git a/src/actions/getMainAllDomainsDomain.ts b/src/actions/getMainAllDomainsDomain.ts index de35ee2..1071050 100644 --- a/src/actions/getMainAllDomainsDomain.ts +++ b/src/actions/getMainAllDomainsDomain.ts @@ -5,7 +5,7 @@ import { PublicKey } from "@solana/web3.js"; import { getMainAllDomainsDomain } from "../tools"; const getMainAllDomainsDomainAction: Action = { - name: "solana_get_main_domain", + name: "GET_MAIN_ALL_DOMAINS_DOMAIN", similes: [ "get main domain", "fetch primary domain", diff --git a/src/actions/getOwnedAllDomains.ts b/src/actions/getOwnedAllDomains.ts index 359bf38..e9f294a 100644 --- a/src/actions/getOwnedAllDomains.ts +++ b/src/actions/getOwnedAllDomains.ts @@ -5,7 +5,7 @@ import { PublicKey } from "@solana/web3.js"; import { getOwnedAllDomains } from "../tools"; const getOwnedAllDomainsAction: Action = { - name: "solana_get_owned_all_domains", + name: "GET_OWNED_ALL_DOMAINS", similes: [ "list owned domains", "get my domains", diff --git a/src/actions/getOwnedDomainsForTLD.ts b/src/actions/getOwnedDomainsForTLD.ts index 1c0b4be..4343488 100644 --- a/src/actions/getOwnedDomainsForTLD.ts +++ b/src/actions/getOwnedDomainsForTLD.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { getOwnedDomainsForTLD } from "../tools"; const getOwnedDomainsForTLDAction: Action = { - name: "solana_get_owned_tld_domains", + name: "GET_OWNED_DOMAINS_FOR_TLD", similes: [ "list owned domains for tld", "get my domains for extension", diff --git a/src/actions/getPrimaryDomain.ts b/src/actions/getPrimaryDomain.ts index f678a31..2655dae 100644 --- a/src/actions/getPrimaryDomain.ts +++ b/src/actions/getPrimaryDomain.ts @@ -5,7 +5,7 @@ import { PublicKey } from "@solana/web3.js"; import { getPrimaryDomain } from "../tools"; const getPrimaryDomainAction: Action = { - name: "solana_get_domain", + name: "GET_PRIMARY_DOMAIN", similes: [ "get primary domain", "lookup primary domain", diff --git a/src/actions/getTPS.ts b/src/actions/getTPS.ts index b5c0979..490bfb4 100644 --- a/src/actions/getTPS.ts +++ b/src/actions/getTPS.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { getTPS } from "../tools"; const getTPSAction: Action = { - name: "solana_get_tps", + name: "GET_TPS", similes: [ "get transactions per second", "check network speed", diff --git a/src/actions/getTokenData.ts b/src/actions/getTokenData.ts index f416a0c..bf820dc 100644 --- a/src/actions/getTokenData.ts +++ b/src/actions/getTokenData.ts @@ -6,7 +6,7 @@ import { JupiterTokenData } from "../types"; import { getTokenAddressFromTicker, getTokenDataByAddress } from "../tools"; const getTokenDataAction: Action = { - name: "solana_token_data", + name: "GET_TOKEN_DATA", similes: [ "get token info", "token details", diff --git a/src/actions/index.ts b/src/actions/index.ts index cb81ce1..b66c89e 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -27,35 +27,35 @@ import raydiumCreateAmmV4Action from "./raydiumCreateAmmV4"; import createOrcaSingleSidedWhirlpoolAction from "./createOrcaSingleSidedWhirlpool"; import launchPumpfunTokenAction from "./launchPumpfunToken"; -export const actions = [ - deployTokenAction, - balanceAction, - transferAction, - deployCollectionAction, - mintNFTAction, - tradeAction, - requestFundsAction, - resolveDomainAction, - getTokenDataAction, - getTPSAction, - fetchPriceAction, - stakeWithJupAction, - registerDomainAction, - lendAssetAction, - createGibworkTaskAction, - resolveSolDomainAction, - pythFetchPriceAction, - getOwnedDomainsForTLDAction, - getPrimaryDomainAction, - getAllDomainsTLDsAction, - getOwnedAllDomainsAction, - createImageAction, - getMainAllDomainsDomainAction, - getAllRegisteredAllDomainsAction, - raydiumCreateCpmmAction, - raydiumCreateAmmV4Action, - createOrcaSingleSidedWhirlpoolAction, - launchPumpfunTokenAction, -]; +export const ACTIONS = { + "DEPLOY_TOKEN_ACTION" : deployTokenAction, + "BALANCE_ACTION" : balanceAction, + "TRANSFER_ACTION" : transferAction, + "DEPLOY_COLLECTION_ACTION" : deployCollectionAction, + "MINT_NFT_ACTION" : mintNFTAction, + "TRADE_ACTION" : tradeAction, + "REQUEST_FUNDS_ACTION" : requestFundsAction, + "RESOLVE_DOMAIN_ACTION" : resolveDomainAction, + "GET_TOKEN_DATA_ACTION" : getTokenDataAction, + "GET_TPS_ACTION" : getTPSAction, + "FETCH_PRICE_ACTION" : fetchPriceAction, + "STAKE_WITH_JUP_ACTION" : stakeWithJupAction, + "REGISTER_DOMAIN_ACTION" : registerDomainAction, + "LEND_ASSET_ACTION" : lendAssetAction, + "CREATE_GIBWORK_TASK_ACTION" : createGibworkTaskAction, + "RESOLVE_SOL_DOMAIN_ACTION" : resolveSolDomainAction, + "PYTH_FETCH_PRICE_ACTION" : pythFetchPriceAction, + "GET_OWNED_DOMAINS_FOR_TLD_ACTION" : getOwnedDomainsForTLDAction, + "GET_PRIMARY_DOMAIN_ACTION" : getPrimaryDomainAction, + "GET_ALL_DOMAINS_TLDS_ACTION" : getAllDomainsTLDsAction, + "GET_OWNED_ALL_DOMAINS_ACTION" : getOwnedAllDomainsAction, + "CREATE_IMAGE_ACTION" : createImageAction, + "GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION" : getMainAllDomainsDomainAction, + "GET_ALL_REGISTERED_ALL_DOMAINS_ACTION" : getAllRegisteredAllDomainsAction, + "RAYDIUM_CREATE_CPMM_ACTION" : raydiumCreateCpmmAction, + "RAYDIUM_CREATE_AMM_V4_ACTION" : raydiumCreateAmmV4Action, + "CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION" : createOrcaSingleSidedWhirlpoolAction, + "LAUNCH_PUMPFUN_TOKEN_ACTION" : launchPumpfunTokenAction, +}; export type { Action, ActionExample, Handler } from "../types/action"; diff --git a/src/actions/launchPumpfunToken.ts b/src/actions/launchPumpfunToken.ts index 601bb47..3c23394 100644 --- a/src/actions/launchPumpfunToken.ts +++ b/src/actions/launchPumpfunToken.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { launchPumpFunToken } from "../tools"; const launchPumpfunTokenAction: Action = { - name: "solana_launch_pumpfun_token", + name: "LAUNCH_PUMPFUN_TOKEN", similes: [ "create pumpfun token", "launch token on pumpfun", diff --git a/src/actions/lendAsset.ts b/src/actions/lendAsset.ts index 1072ace..9ceb20e 100644 --- a/src/actions/lendAsset.ts +++ b/src/actions/lendAsset.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { lendAsset } from "../tools"; const lendAssetAction: Action = { - name: "solana_lend_asset", + name: "LEND_ASSET", similes: [ "lend usdc", "deposit for yield", diff --git a/src/actions/mintNFT.ts b/src/actions/mintNFT.ts index 5c3d691..f04cfb7 100644 --- a/src/actions/mintNFT.ts +++ b/src/actions/mintNFT.ts @@ -5,7 +5,7 @@ import { z } from "zod"; import { mintCollectionNFT } from "../tools"; const mintNFTAction: Action = { - name: "solana_mint_nft", + name: "MINT_NFT", similes: [ "mint nft", "create nft", diff --git a/src/actions/pythFetchPrice.ts b/src/actions/pythFetchPrice.ts index ed3d5be..8dc11f6 100644 --- a/src/actions/pythFetchPrice.ts +++ b/src/actions/pythFetchPrice.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { pythFetchPrice } from "../tools"; const pythFetchPriceAction: Action = { - name: "solana_pyth_fetch_price", + name: "PYTH_FETCH_PRICE", similes: [ "get pyth price", "check pyth price", diff --git a/src/actions/raydiumCreateAmmV4.ts b/src/actions/raydiumCreateAmmV4.ts index 7d4e37b..8ad228d 100644 --- a/src/actions/raydiumCreateAmmV4.ts +++ b/src/actions/raydiumCreateAmmV4.ts @@ -6,7 +6,7 @@ import BN from "bn.js"; import { raydiumCreateAmmV4 } from "../tools"; const raydiumCreateAmmV4Action: Action = { - name: "raydium_create_ammV4", + name: "RAYDIUM_CREATE_AMM_V4", similes: [ "create raydium v4 pool", "setup raydium v4 liquidity pool", diff --git a/src/actions/raydiumCreateClmm.ts b/src/actions/raydiumCreateClmm.ts index 277cc06..dd24322 100644 --- a/src/actions/raydiumCreateClmm.ts +++ b/src/actions/raydiumCreateClmm.ts @@ -7,7 +7,7 @@ import Decimal from "decimal.js"; import { raydiumCreateClmm } from "../tools"; const raydiumCreateClmmAction: Action = { - name: "raydium_create_clmm", + name: "RAYDIUM_CREATE_CLMM", similes: [ "create clmm pool", "create concentrated liquidity pool", diff --git a/src/actions/raydiumCreateCpmm.ts b/src/actions/raydiumCreateCpmm.ts index 28fe82a..b2159b5 100644 --- a/src/actions/raydiumCreateCpmm.ts +++ b/src/actions/raydiumCreateCpmm.ts @@ -6,7 +6,7 @@ import BN from "bn.js"; import { raydiumCreateCpmm } from "../tools"; const raydiumCreateCpmmAction: Action = { - name: "solana_raydium_create_cpmm", + name: "RAYDIUM_CREATE_CPMM", similes: [ "create raydium pool", "setup raydium liquidity pool", diff --git a/src/actions/registerDomain.ts b/src/actions/registerDomain.ts index b4a6d8d..55f9354 100644 --- a/src/actions/registerDomain.ts +++ b/src/actions/registerDomain.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { registerDomain } from "../tools"; const registerDomainAction: Action = { - name: "solana_register_domain", + name: "REGISTER_DOMAIN", similes: [ "register domain", "buy domain", diff --git a/src/actions/requestFunds.ts b/src/actions/requestFunds.ts index 116c15e..a4a95c2 100644 --- a/src/actions/requestFunds.ts +++ b/src/actions/requestFunds.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { request_faucet_funds } from "../tools"; const requestFundsAction: Action = { - name: "solana_request_funds", + name: "REQUEST_FUNDS", similes: [ "request sol", "get test sol", diff --git a/src/actions/resolveDomain.ts b/src/actions/resolveDomain.ts index d159141..e54adea 100644 --- a/src/actions/resolveDomain.ts +++ b/src/actions/resolveDomain.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { resolveAllDomains } from "../tools"; const resolveDomainAction: Action = { - name: "solana_resolve_all_domains", + name: "RESOLVE_ALL_DOMAINS", similes: [ "resolve domain", "lookup domain", diff --git a/src/actions/resolveSolDomain.ts b/src/actions/resolveSolDomain.ts index 26ebae0..60281e2 100644 --- a/src/actions/resolveSolDomain.ts +++ b/src/actions/resolveSolDomain.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { resolveSolDomain } from "../tools"; const resolveSolDomainAction: Action = { - name: "solana_resolve_sol_domain", + name: "RESOLVE_SOL_DOMAIN", similes: [ "resolve sol domain", "lookup sol domain", diff --git a/src/actions/stakeWithJup.ts b/src/actions/stakeWithJup.ts index 630f024..7f7680f 100644 --- a/src/actions/stakeWithJup.ts +++ b/src/actions/stakeWithJup.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { stakeWithJup } from "../tools"; const stakeWithJupAction: Action = { - name: "solana_stake_with_jup", + name: "STAKE_WITH_JUPITER", similes: [ "stake sol", "stake with jupiter", diff --git a/src/actions/tokenDataByTicker.ts b/src/actions/tokenDataByTicker.ts index 3ab3f12..28995a5 100644 --- a/src/actions/tokenDataByTicker.ts +++ b/src/actions/tokenDataByTicker.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { getTokenDataByTicker } from "../tools"; const tokenDataByTickerAction: Action = { - name: "solana_token_data_by_ticker", + name: "GET_TOKEN_DATA_BY_TICKER", similes: [ "token data by ticker", "fetch token info by ticker", diff --git a/src/actions/trade.ts b/src/actions/trade.ts index 397f0ca..a4c9e48 100644 --- a/src/actions/trade.ts +++ b/src/actions/trade.ts @@ -5,7 +5,7 @@ import { z } from "zod"; import { trade } from "../tools"; const tradeAction: Action = { - name: "solana_trade", + name: "TRADE", similes: [ "swap tokens", "exchange tokens", diff --git a/src/actions/transfer.ts b/src/actions/transfer.ts index cc8a648..f4206aa 100644 --- a/src/actions/transfer.ts +++ b/src/actions/transfer.ts @@ -5,7 +5,7 @@ import { z } from "zod"; import { transfer } from "../tools"; const transferAction: Action = { - name: "solana_transfer", + name: "TRANSFER", similes: [ "send tokens", "transfer funds", diff --git a/src/index.ts b/src/index.ts index 4ae9056..8a79662 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,6 +7,5 @@ export { SolanaAgentKit, createSolanaTools }; export * from "./types"; // Export action system -export * from "./actions"; -export * from "./types/action"; +export { ACTIONS } from "./actions"; export * from "./utils/actionExecutor"; diff --git a/src/types/index.ts b/src/types/index.ts index 5c7786c..6d31949 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,4 +1,6 @@ import { PublicKey } from "@solana/web3.js"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; export interface Config { OPENAI_API_KEY?: string; @@ -98,3 +100,56 @@ export interface GibworkCreateTaskReponse { signature?: string | undefined; } +/** + * Example of an action with input and output + */ +export interface ActionExample { + input: Record; + output: Record; + explanation: string; +} + +/** + * Handler function type for executing the action + */ +export type Handler = ( + agent: SolanaAgentKit, + input: Record, +) => Promise>; + +/** + * Main Action interface inspired by ELIZA + * This interface makes it easier to implement actions across different frameworks + */ +export interface Action { + /** + * Unique name of the action + */ + name: string; + + /** + * Alternative names/phrases that can trigger this action + */ + similes: string[]; + + /** + * Detailed description of what the action does + */ + description: string; + + /** + * Array of example inputs and outputs for the action + * Each inner array represents a group of related examples + */ + examples: ActionExample[][]; + + /** + * Zod schema for input validation + */ + schema: z.ZodType; + + /** + * Function that executes the action + */ + handler: Handler; +} diff --git a/src/utils/actionExecutor.ts b/src/utils/actionExecutor.ts index e152ecb..ed2bd90 100644 --- a/src/utils/actionExecutor.ts +++ b/src/utils/actionExecutor.ts @@ -1,13 +1,13 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; -import { actions } from "../actions"; +import { ACTIONS } from "../actions"; /** * Find an action by its name or one of its similes */ export function findAction(query: string): Action | undefined { const normalizedQuery = query.toLowerCase().trim(); - return actions.find( + return Object.values(ACTIONS).find( (action) => action.name.toLowerCase() === normalizedQuery || action.similes.some((simile) => simile.toLowerCase() === normalizedQuery), diff --git a/test/index.ts b/test/index.ts index a9b115f..0ac7f5f 100644 --- a/test/index.ts +++ b/test/index.ts @@ -1,4 +1,4 @@ -import { SolanaAgentKit } from "../src"; +import { SolanaAgentKit , actions} from "../src"; import { createSolanaTools } from "../src/langchain"; import { HumanMessage } from "@langchain/core/messages"; import { MemorySaver } from "@langchain/langgraph"; From ff26c252fd0885fea6ea9440c16a806805ff5fc9 Mon Sep 17 00:00:00 2001 From: aryan Date: Wed, 1 Jan 2025 03:43:14 +0530 Subject: [PATCH 59/94] fix: pkg for actions --- package.json | 2 +- test/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 126272b..1ee3da7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "solana-agent-kit", - "version": "1.3.3", + "version": "1.3.4", "description": "connect any ai agents to solana protocols", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/test/index.ts b/test/index.ts index 0ac7f5f..2a3312b 100644 --- a/test/index.ts +++ b/test/index.ts @@ -1,4 +1,4 @@ -import { SolanaAgentKit , actions} from "../src"; +import { SolanaAgentKit , ACTIONS} from "../src"; import { createSolanaTools } from "../src/langchain"; import { HumanMessage } from "@langchain/core/messages"; import { MemorySaver } from "@langchain/langgraph"; From 802f42ca6f6922cd89b2adf58baa5028891f6c83 Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Wed, 1 Jan 2025 05:11:03 +0100 Subject: [PATCH 60/94] fix: update to the new actions architecture and add the wallet address action --- package.json | 147 ++- pnpm-lock.yaml | 18 +- src/actions/getWalletAddress.ts | 29 + src/actions/index.ts | 59 +- src/langchain/index.ts | 1895 +------------------------------ src/tools/get_wallet_address.ts | 10 + src/tools/index.ts | 1 + src/vercel-ai/index.ts | 1500 +----------------------- test/agent_sdks/vercel_ai.ts | 267 ++--- 9 files changed, 334 insertions(+), 3592 deletions(-) create mode 100644 src/actions/getWalletAddress.ts create mode 100644 src/tools/get_wallet_address.ts diff --git a/package.json b/package.json index bcb2d27..a84f7b5 100644 --- a/package.json +++ b/package.json @@ -1,76 +1,75 @@ { - "name": "solana-agent-kit", - "version": "1.3.4", - "description": "connect any ai agents to solana protocols", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "scripts": { - "build": "tsc", - "docs": "typedoc src --out docs", - "test": "ts-node test/index.ts", - "test:vercel-ai": "ts-node test/agent_sdks/vercel_ai.ts", - "generate": "ts-node src/utils/keypair.ts", - "lint": "eslint . --ext .ts,.json", - "lint:fix": "eslint . --ext .ts,.json --fix", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"" - }, - "engines": { - "node": ">=22.0.0", - "pnpm": ">=8.0.0" - }, - "keywords": [], - "author": "sendaifun", - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/openai": "^1.0.11", - "@bonfida/spl-name-service": "^3.0.7", - "@cks-systems/manifest-sdk": "^0.1.73", - "@coral-xyz/anchor": "0.29", - "@langchain/core": "^0.3.26", - "@langchain/groq": "^0.1.2", - "@langchain/langgraph": "^0.2.36", - "@langchain/openai": "^0.3.16", - "@lightprotocol/compressed-token": "^0.17.1", - "@lightprotocol/stateless.js": "^0.17.1", - "@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-web3js-adapters": "^0.9.2", - "@onsol/tldparser": "^0.6.7", - "@orca-so/common-sdk": "0.6.4", - "@orca-so/whirlpools-sdk": "^0.13.12", - "@pythnetwork/price-service-client": "^1.9.0", - "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", - "@solana/spl-token": "^0.4.9", - "ai": "^4.0.22", - "@tensor-oss/tensorswap-sdk": "^4.5.0", - "@solana/web3.js": "^1.98.0", - "@tiplink/api": "^0.3.1", - "bn.js": "^5.2.1", - "bs58": "^6.0.0", - "chai": "^5.1.2", - "decimal.js": "^10.4.3", - "dotenv": "^16.4.7", - "form-data": "^4.0.1", - "zod": "^3.24.1" - "langchain": "^0.3.8", - "openai": "^4.77.0", - "typedoc": "^0.27.6", - "zod": "^3.24.1" - }, - "devDependencies": { - "@types/bn.js": "^5.1.6", - "@types/chai": "^5.0.1", - "@types/node": "^22.10.2", - "@typescript-eslint/eslint-plugin": "^8.18.2", - "@typescript-eslint/parser": "^8.18.2", - "eslint": "^8.56.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.2.1", - "prettier": "^3.4.2", - "ts-node": "^10.9.2", - "typescript": "^5.7.2" - } + "name": "solana-agent-kit", + "version": "1.3.4", + "description": "connect any ai agents to solana protocols", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsc", + "docs": "typedoc src --out docs", + "test": "ts-node test/index.ts", + "test:vercel-ai": "ts-node test/agent_sdks/vercel_ai.ts", + "generate": "ts-node src/utils/keypair.ts", + "lint": "eslint . --ext .ts,.json", + "lint:fix": "eslint . --ext .ts,.json --fix", + "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"" + }, + "engines": { + "node": ">=22.0.0", + "pnpm": ">=8.0.0" + }, + "keywords": [], + "author": "sendaifun", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/openai": "^1.0.11", + "@bonfida/spl-name-service": "^3.0.7", + "@cks-systems/manifest-sdk": "^0.1.73", + "@coral-xyz/anchor": "0.29", + "@langchain/core": "^0.3.26", + "@langchain/groq": "^0.1.2", + "@langchain/langgraph": "^0.2.36", + "@langchain/openai": "^0.3.16", + "@lightprotocol/compressed-token": "^0.17.1", + "@lightprotocol/stateless.js": "^0.17.1", + "@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-web3js-adapters": "^0.9.2", + "@onsol/tldparser": "^0.6.7", + "@orca-so/common-sdk": "0.6.4", + "@orca-so/whirlpools-sdk": "^0.13.12", + "@pythnetwork/price-service-client": "^1.9.0", + "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", + "@solana/spl-token": "^0.4.9", + "ai": "^4.0.22", + "@tensor-oss/tensorswap-sdk": "^4.5.0", + "@solana/web3.js": "^1.98.0", + "@tiplink/api": "^0.3.1", + "bn.js": "^5.2.1", + "bs58": "^6.0.0", + "chai": "^5.1.2", + "decimal.js": "^10.4.3", + "dotenv": "^16.4.7", + "form-data": "^4.0.1", + "zod": "^3.24.1", + "langchain": "^0.3.8", + "openai": "^4.77.0", + "typedoc": "^0.27.6" + }, + "devDependencies": { + "@types/bn.js": "^5.1.6", + "@types/chai": "^5.0.1", + "@types/node": "^22.10.2", + "@typescript-eslint/eslint-plugin": "^8.18.2", + "@typescript-eslint/parser": "^8.18.2", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.1", + "prettier": "^3.4.2", + "ts-node": "^10.9.2", + "typescript": "^5.7.2" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index edb9a3e..40aa400 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -77,15 +77,15 @@ importers: '@solana/web3.js': specifier: ^1.98.0 version: 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ai: - specifier: ^4.0.22 - version: 4.0.22(react@19.0.0)(zod@3.24.1) '@tensor-oss/tensorswap-sdk': specifier: ^4.5.0 version: 4.5.0(bufferutil@4.0.8)(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.8)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10) + ai: + specifier: ^4.0.22 + version: 4.0.22(react@19.0.0)(zod@3.24.1) bn.js: specifier: ^5.2.1 version: 5.2.1 @@ -2165,12 +2165,12 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + react@19.0.0: resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} engines: {node: '>=0.10.0'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} @@ -4923,7 +4923,7 @@ snapshots: jsondiffpatch@0.6.0: dependencies: '@types/diff-match-patch': 1.0.36 - chalk: 5.4.0 + chalk: 5.4.1 diff-match-patch: 1.0.5 jsonfile@6.1.0: @@ -5286,12 +5286,12 @@ snapshots: queue-microtask@1.2.3: {} - react@19.0.0: {} - randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 + react@19.0.0: {} + readable-stream@3.6.2: dependencies: inherits: 2.0.4 diff --git a/src/actions/getWalletAddress.ts b/src/actions/getWalletAddress.ts new file mode 100644 index 0000000..114d642 --- /dev/null +++ b/src/actions/getWalletAddress.ts @@ -0,0 +1,29 @@ +import { z } from "zod"; +import { SolanaAgentKit } from ".."; +import { get_wallet_address } from "../tools"; +import { Action } from "../types/action"; + +const getWalletAddressAction: Action = { + name: "GET_WALLET_ADDRESS", + similes: ["wallet address", "address", "wallet"], + description: "Get wallet address of the agent", + examples: [ + [ + { + input: {}, + output: { + status: "success", + address: "0x1234567890abcdef", + }, + explanation: "The agent's wallet address is 0x1234567890abcdef", + }, + ], + ], + schema: z.object({}), + handler: async (agent: SolanaAgentKit) => ({ + status: "success", + address: get_wallet_address(agent), + }), +}; + +export default getWalletAddressAction; diff --git a/src/actions/index.ts b/src/actions/index.ts index b66c89e..b99698a 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -26,36 +26,39 @@ import raydiumCreateCpmmAction from "./raydiumCreateCpmm"; import raydiumCreateAmmV4Action from "./raydiumCreateAmmV4"; import createOrcaSingleSidedWhirlpoolAction from "./createOrcaSingleSidedWhirlpool"; import launchPumpfunTokenAction from "./launchPumpfunToken"; +import getWalletAddressAction from "./getWalletAddress"; export const ACTIONS = { - "DEPLOY_TOKEN_ACTION" : deployTokenAction, - "BALANCE_ACTION" : balanceAction, - "TRANSFER_ACTION" : transferAction, - "DEPLOY_COLLECTION_ACTION" : deployCollectionAction, - "MINT_NFT_ACTION" : mintNFTAction, - "TRADE_ACTION" : tradeAction, - "REQUEST_FUNDS_ACTION" : requestFundsAction, - "RESOLVE_DOMAIN_ACTION" : resolveDomainAction, - "GET_TOKEN_DATA_ACTION" : getTokenDataAction, - "GET_TPS_ACTION" : getTPSAction, - "FETCH_PRICE_ACTION" : fetchPriceAction, - "STAKE_WITH_JUP_ACTION" : stakeWithJupAction, - "REGISTER_DOMAIN_ACTION" : registerDomainAction, - "LEND_ASSET_ACTION" : lendAssetAction, - "CREATE_GIBWORK_TASK_ACTION" : createGibworkTaskAction, - "RESOLVE_SOL_DOMAIN_ACTION" : resolveSolDomainAction, - "PYTH_FETCH_PRICE_ACTION" : pythFetchPriceAction, - "GET_OWNED_DOMAINS_FOR_TLD_ACTION" : getOwnedDomainsForTLDAction, - "GET_PRIMARY_DOMAIN_ACTION" : getPrimaryDomainAction, - "GET_ALL_DOMAINS_TLDS_ACTION" : getAllDomainsTLDsAction, - "GET_OWNED_ALL_DOMAINS_ACTION" : getOwnedAllDomainsAction, - "CREATE_IMAGE_ACTION" : createImageAction, - "GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION" : getMainAllDomainsDomainAction, - "GET_ALL_REGISTERED_ALL_DOMAINS_ACTION" : getAllRegisteredAllDomainsAction, - "RAYDIUM_CREATE_CPMM_ACTION" : raydiumCreateCpmmAction, - "RAYDIUM_CREATE_AMM_V4_ACTION" : raydiumCreateAmmV4Action, - "CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION" : createOrcaSingleSidedWhirlpoolAction, - "LAUNCH_PUMPFUN_TOKEN_ACTION" : launchPumpfunTokenAction, + WALLET_ADDRESS_ACTION: getWalletAddressAction, + DEPLOY_TOKEN_ACTION: deployTokenAction, + BALANCE_ACTION: balanceAction, + TRANSFER_ACTION: transferAction, + DEPLOY_COLLECTION_ACTION: deployCollectionAction, + MINT_NFT_ACTION: mintNFTAction, + TRADE_ACTION: tradeAction, + REQUEST_FUNDS_ACTION: requestFundsAction, + RESOLVE_DOMAIN_ACTION: resolveDomainAction, + GET_TOKEN_DATA_ACTION: getTokenDataAction, + GET_TPS_ACTION: getTPSAction, + FETCH_PRICE_ACTION: fetchPriceAction, + STAKE_WITH_JUP_ACTION: stakeWithJupAction, + REGISTER_DOMAIN_ACTION: registerDomainAction, + LEND_ASSET_ACTION: lendAssetAction, + CREATE_GIBWORK_TASK_ACTION: createGibworkTaskAction, + RESOLVE_SOL_DOMAIN_ACTION: resolveSolDomainAction, + PYTH_FETCH_PRICE_ACTION: pythFetchPriceAction, + GET_OWNED_DOMAINS_FOR_TLD_ACTION: getOwnedDomainsForTLDAction, + GET_PRIMARY_DOMAIN_ACTION: getPrimaryDomainAction, + GET_ALL_DOMAINS_TLDS_ACTION: getAllDomainsTLDsAction, + GET_OWNED_ALL_DOMAINS_ACTION: getOwnedAllDomainsAction, + CREATE_IMAGE_ACTION: createImageAction, + GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: getMainAllDomainsDomainAction, + GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: getAllRegisteredAllDomainsAction, + RAYDIUM_CREATE_CPMM_ACTION: raydiumCreateCpmmAction, + RAYDIUM_CREATE_AMM_V4_ACTION: raydiumCreateAmmV4Action, + CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: + createOrcaSingleSidedWhirlpoolAction, + LAUNCH_PUMPFUN_TOKEN_ACTION: launchPumpfunTokenAction, }; export type { Action, ActionExample, Handler } from "../types/action"; diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 4605fd3..567cf8e 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1,1877 +1,36 @@ -import { PublicKey } from "@solana/web3.js"; -import Decimal from "decimal.js"; import { Tool } from "langchain/tools"; -import { - GibworkCreateTaskReponse, - PythFetchPriceResponse, - SolanaAgentKit, -} from "../index"; -import { create_image } from "../tools/create_image"; -import { BN } from "@coral-xyz/anchor"; -import { FEE_TIERS } from "../tools"; +import { ACTIONS, executeAction, SolanaAgentKit } from "../index"; +import { Action } from "../actions"; -export class SolanaBalanceTool extends Tool { - name = "solana_balance"; - description = `Get the balance of a Solana wallet or token account. +class ToolWrapper extends Tool { + constructor( + private solanaAgentKit: SolanaAgentKit, + private action: Action, + ) { + super(); + this.name = action.name; + this.description = action.description; + } - If you want to get the balance of your wallet, you don't need to provide the tokenAddress. - If no tokenAddress is provided, the balance will be in SOL. + name: string; + description: string; - Inputs ( input is a JSON string ): - tokenAddress: string, eg "So11111111111111111111111111111111111111112" (optional)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const tokenAddress = input ? new PublicKey(input) : undefined; - const balance = await this.solanaKit.getBalance(tokenAddress); - - return JSON.stringify({ - status: "success", - balance, - token: input || "SOL", - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + protected async _call( + input: typeof this.action.schema, + ): ReturnType { + return await executeAction(this.action, this.solanaAgentKit, input); + } } -export class SolanaBalanceOtherTool extends Tool { - name = "solana_balance_other"; - description = `Get the balance of a Solana wallet or token account which is different from the agent's wallet. +export function createSolanaTools(solanaAgentKit: SolanaAgentKit): Tool[] { + const tools: Tool[] = []; + const actionKeys = Object.keys(ACTIONS); - If no tokenAddress is provided, the SOL balance of the wallet will be returned. + for (const actionKey of actionKeys) { + const action = ACTIONS[actionKey as keyof typeof ACTIONS]; + const tool = new ToolWrapper(solanaAgentKit, action); + tools.push(tool); + } - Inputs ( input is a JSON string ): - walletAddress: string, eg "GDEkQF7UMr7RLv1KQKMtm8E2w3iafxJLtyXu3HVQZnME" (required) - tokenAddress: string, eg "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (optional)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const { walletAddress, tokenAddress } = JSON.parse(input); - - const tokenPubKey = tokenAddress - ? new PublicKey(tokenAddress) - : undefined; - - const balance = await this.solanaKit.getBalanceOther( - new PublicKey(walletAddress), - tokenPubKey, - ); - - return JSON.stringify({ - status: "success", - balance, - wallet: walletAddress, - token: tokenAddress || "SOL", - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaTransferTool extends Tool { - name = "solana_transfer"; - description = `Transfer tokens or SOL to another address ( also called as wallet address ). - - Inputs ( input is a JSON string ): - to: string, eg "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk" (required) - amount: number, eg 1 (required) - mint?: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (optional)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const recipient = new PublicKey(parsedInput.to); - const mintAddress = parsedInput.mint - ? new PublicKey(parsedInput.mint) - : undefined; - - const tx = await this.solanaKit.transfer( - recipient, - parsedInput.amount, - mintAddress, - ); - - return JSON.stringify({ - status: "success", - message: "Transfer completed successfully", - amount: parsedInput.amount, - recipient: parsedInput.to, - token: parsedInput.mint || "SOL", - transaction: tx, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaDeployTokenTool extends Tool { - name = "solana_deploy_token"; - description = `Deploy a new token on Solana blockchain. - - Inputs (input is a JSON string): - name: string, eg "My Token" (required) - uri: string, eg "https://example.com/token.json" (required) - symbol: string, eg "MTK" (required) - decimals?: number, eg 9 (optional, defaults to 9) - initialSupply?: number, eg 1000000 (optional)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const result = await this.solanaKit.deployToken( - parsedInput.name, - parsedInput.uri, - parsedInput.symbol, - parsedInput.decimals, - parsedInput.initialSupply, - ); - - return JSON.stringify({ - status: "success", - message: "Token deployed successfully", - mintAddress: result.mint.toString(), - decimals: parsedInput.decimals || 9, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaDeployCollectionTool extends Tool { - name = "solana_deploy_collection"; - description = `Deploy a new NFT collection on Solana blockchain. - - Inputs (input is a JSON string): - name: string, eg "My Collection" (required) - uri: string, eg "https://example.com/collection.json" (required) - royaltyBasisPoints?: number, eg 500 for 5% (optional)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const result = await this.solanaKit.deployCollection(parsedInput); - - return JSON.stringify({ - status: "success", - message: "Collection deployed successfully", - collectionAddress: result.collectionAddress.toString(), - name: parsedInput.name, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaMintNFTTool extends Tool { - name = "solana_mint_nft"; - description = `Mint a new NFT in a collection on Solana blockchain. - - Inputs (input is a JSON string): - collectionMint: string, eg "J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w" (required) - The address of the collection to mint into - name: string, eg "My NFT" (required) - uri: string, eg "https://example.com/nft.json" (required) - recipient?: string, eg "9aUn5swQzUTRanaaTwmszxiv89cvFwUCjEBv1vZCoT1u" (optional) - The wallet to receive the NFT, defaults to agent's wallet which is ${this.solanaKit.wallet_address.toString()}`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const result = await this.solanaKit.mintNFT( - new PublicKey(parsedInput.collectionMint), - { - name: parsedInput.name, - uri: parsedInput.uri, - }, - parsedInput.recipient - ? new PublicKey(parsedInput.recipient) - : this.solanaKit.wallet_address, - ); - - return JSON.stringify({ - status: "success", - message: "NFT minted successfully", - mintAddress: result.mint.toString(), - metadata: { - name: parsedInput.name, - symbol: parsedInput.symbol, - uri: parsedInput.uri, - }, - recipient: parsedInput.recipient || result.mint.toString(), - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaTradeTool extends Tool { - name = "solana_trade"; - description = `This tool can be used to swap tokens to another token ( It uses Jupiter Exchange ). - - Inputs ( input is a JSON string ): - outputMint: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (required) - inputAmount: number, eg 1 or 0.01 (required) - inputMint?: string, eg "So11111111111111111111111111111111111111112" (optional) - slippageBps?: number, eg 100 (optional)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const tx = await this.solanaKit.trade( - new PublicKey(parsedInput.outputMint), - parsedInput.inputAmount, - parsedInput.inputMint - ? new PublicKey(parsedInput.inputMint) - : new PublicKey("So11111111111111111111111111111111111111112"), - parsedInput.slippageBps, - ); - - return JSON.stringify({ - status: "success", - message: "Trade executed successfully", - transaction: tx, - inputAmount: parsedInput.inputAmount, - inputToken: parsedInput.inputMint || "SOL", - outputToken: parsedInput.outputMint, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaLimitOrderTool extends Tool { - name = "solana_limit_order"; - description = `This tool can be used to place limit orders using Manifest. - - Inputs ( input is a JSON string ): - marketId: PublicKey, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required) - quantity: number, eg 1 or 0.01 (required) - side: string, eg "Buy" or "Sell" (required) - price: number, in tokens eg 200 for SOL/USDC (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const tx = await this.solanaKit.limitOrder( - new PublicKey(parsedInput.marketId), - parsedInput.quantity, - parsedInput.side, - parsedInput.price, - ); - - return JSON.stringify({ - status: "success", - message: "Trade executed successfully", - transaction: tx, - marketId: parsedInput.marketId, - quantity: parsedInput.quantity, - side: parsedInput.side, - price: parsedInput.price, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaCancelAllOrdersTool extends Tool { - name = "solana_cancel_all_orders"; - description = `This tool can be used to cancel all orders from a Manifest market. - - Input ( input is a JSON string ): - marketId: string, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const marketId = new PublicKey(input.trim()); - const tx = await this.solanaKit.cancelAllOrders(marketId); - - return JSON.stringify({ - status: "success", - message: "Cancel orders successfully", - transaction: tx, - marketId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaWithdrawAllTool extends Tool { - name = "solana_withdraw_all"; - description = `This tool can be used to withdraw all funds from a Manifest market. - - Input ( input is a JSON string ): - marketId: string, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const marketId = new PublicKey(input.trim()); - const tx = await this.solanaKit.withdrawAll(marketId); - - return JSON.stringify({ - status: "success", - message: "Withdrew successfully", - transaction: tx, - marketId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaRequestFundsTool extends Tool { - name = "solana_request_funds"; - description = "Request SOL from Solana faucet (devnet/testnet only)"; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(_input: string): Promise { - try { - await this.solanaKit.requestFaucetFunds(); - - return JSON.stringify({ - status: "success", - message: "Successfully requested faucet funds", - network: this.solanaKit.connection.rpcEndpoint.split("/")[2], - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaRegisterDomainTool extends Tool { - name = "solana_register_domain"; - description = `Register a .sol domain name for your wallet. - - Inputs: - name: string, eg "pumpfun.sol" (required) - spaceKB: number, eg 1 (optional, default is 1) - `; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - private validateInput(input: any): void { - if (!input.name || typeof input.name !== "string") { - throw new Error("name is required and must be a string"); - } - if ( - input.spaceKB !== undefined && - (typeof input.spaceKB !== "number" || input.spaceKB <= 0) - ) { - throw new Error("spaceKB must be a positive number when provided"); - } - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - this.validateInput(parsedInput); - - const tx = await this.solanaKit.registerDomain( - parsedInput.name, - parsedInput.spaceKB || 1, - ); - - return JSON.stringify({ - status: "success", - message: "Domain registered successfully", - transaction: tx, - domain: `${parsedInput.name}.sol`, - spaceKB: parsedInput.spaceKB || 1, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaResolveDomainTool extends Tool { - name = "solana_resolve_domain"; - description = `Resolve ONLY .sol domain names to a Solana PublicKey. - This tool is exclusively for .sol domains. - DO NOT use this for other domain types like .blink, .bonk, etc. - - Inputs: - domain: string, eg "pumpfun.sol" (required) - `; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const domain = input.trim(); - const publicKey = await this.solanaKit.resolveSolDomain(domain); - - return JSON.stringify({ - status: "success", - message: "Domain resolved successfully", - publicKey: publicKey.toBase58(), - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaGetDomainTool extends Tool { - name = "solana_get_domain"; - description = `Retrieve the .sol domain associated for a given account address. - - Inputs: - account: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required) - `; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const account = new PublicKey(input.trim()); - const domain = await this.solanaKit.getPrimaryDomain(account); - - return JSON.stringify({ - status: "success", - message: "Primary domain retrieved successfully", - domain, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaGetWalletAddressTool extends Tool { - name = "solana_get_wallet_address"; - description = `Get the wallet address of the agent`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(_input: string): Promise { - return this.solanaKit.wallet_address.toString(); - } -} - -export class SolanaPumpfunTokenLaunchTool extends Tool { - name = "solana_launch_pumpfun_token"; - - description = `This tool can be used to launch a token on Pump.fun, - do not use this tool for any other purpose, or for creating SPL tokens. - If the user asks you to chose the parameters, you should generate valid values. - For generating the image, you can use the solana_create_image tool. - - Inputs: - tokenName: string, eg "PumpFun Token", - tokenTicker: string, eg "PUMP", - description: string, eg "PumpFun Token is a token on the Solana blockchain", - imageUrl: string, eg "https://i.imgur.com/UFm07Np_d.png`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - private validateInput(input: any): void { - if (!input.tokenName || typeof input.tokenName !== "string") { - throw new Error("tokenName is required and must be a string"); - } - if (!input.tokenTicker || typeof input.tokenTicker !== "string") { - throw new Error("tokenTicker is required and must be a string"); - } - if (!input.description || typeof input.description !== "string") { - throw new Error("description is required and must be a string"); - } - if (!input.imageUrl || typeof input.imageUrl !== "string") { - throw new Error("imageUrl is required and must be a string"); - } - if ( - input.initialLiquiditySOL !== undefined && - typeof input.initialLiquiditySOL !== "number" - ) { - throw new Error("initialLiquiditySOL must be a number when provided"); - } - } - - protected async _call(input: string): Promise { - try { - // Parse and normalize input - input = input.trim(); - const parsedInput = JSON.parse(input); - - this.validateInput(parsedInput); - - // Launch token with validated input - await this.solanaKit.launchPumpFunToken( - parsedInput.tokenName, - parsedInput.tokenTicker, - parsedInput.description, - parsedInput.imageUrl, - { - twitter: parsedInput.twitter, - telegram: parsedInput.telegram, - website: parsedInput.website, - initialLiquiditySOL: parsedInput.initialLiquiditySOL, - }, - ); - - return JSON.stringify({ - status: "success", - message: "Token launched successfully on Pump.fun", - tokenName: parsedInput.tokenName, - tokenTicker: parsedInput.tokenTicker, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaCreateImageTool extends Tool { - name = "solana_create_image"; - description = - "Create an image using OpenAI's DALL-E. Input should be a string prompt for the image."; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - private validateInput(input: string): void { - if (typeof input !== "string" || input.trim().length === 0) { - throw new Error("Input must be a non-empty string prompt"); - } - } - - protected async _call(input: string): Promise { - try { - this.validateInput(input); - const result = await create_image(this.solanaKit, input.trim()); - - return JSON.stringify({ - status: "success", - message: "Image created successfully", - ...result, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaLendAssetTool extends Tool { - name = "solana_lend_asset"; - description = `Lend idle USDC for yield using Lulo. ( only USDC is supported ) - - Inputs (input is a json string): - amount: number, eg 1, 0.01 (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const amount = JSON.parse(input).amount || input; - - const tx = await this.solanaKit.lendAssets(amount); - - return JSON.stringify({ - status: "success", - message: "Asset lent successfully", - transaction: tx, - amount, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaTPSCalculatorTool extends Tool { - name = "solana_get_tps"; - description = "Get the current TPS of the Solana network"; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(_input: string): Promise { - try { - const tps = await this.solanaKit.getTPS(); - return `Solana (mainnet-beta) current transactions per second: ${tps}`; - } catch (error: any) { - return `Error fetching TPS: ${error.message}`; - } - } -} - -export class SolanaStakeTool extends Tool { - name = "solana_stake"; - description = `This tool can be used to stake your SOL (Solana), also called as SOL staking or liquid staking. - - Inputs ( input is a JSON string ): - amount: number, eg 1 or 0.01 (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input) || Number(input); - - const tx = await this.solanaKit.stake(parsedInput.amount); - - return JSON.stringify({ - status: "success", - message: "Staked successfully", - transaction: tx, - amount: parsedInput.amount, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -/** - * Tool to fetch the price of a token in USDC - */ -export class SolanaFetchPriceTool extends Tool { - name = "solana_fetch_price"; - description = `Fetch the price of a given token in USDC. - - Inputs: - - tokenId: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const price = await this.solanaKit.fetchTokenPrice(input.trim()); - return JSON.stringify({ - status: "success", - tokenId: input.trim(), - priceInUSDC: price, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaTokenDataTool extends Tool { - name = "solana_token_data"; - description = `Get the token data for a given token mint address - - Inputs: mintAddress is required. - mintAddress: string, eg "So11111111111111111111111111111111111111112" (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = input.trim(); - - const tokenData = await this.solanaKit.getTokenDataByAddress(parsedInput); - - return JSON.stringify({ - status: "success", - tokenData, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaTokenDataByTickerTool extends Tool { - name = "solana_token_data_by_ticker"; - description = `Get the token data for a given token ticker - - Inputs: ticker is required. - ticker: string, eg "USDC" (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const ticker = input.trim(); - const tokenData = await this.solanaKit.getTokenDataByTicker(ticker); - return JSON.stringify({ - status: "success", - tokenData, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaCompressedAirdropTool extends Tool { - name = "solana_compressed_airdrop"; - description = `Airdrop SPL tokens with ZK Compression (also called as airdropping tokens) - - Inputs (input is a JSON string): - mintAddress: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" (required) - amount: number, the amount of tokens to airdrop per recipient, e.g., 42 (required) - decimals: number, the decimals of the token, e.g., 6 (required) - recipients: string[], the recipient addresses, e.g., ["1nc1nerator11111111111111111111111111111111"] (required) - priorityFeeInLamports: number, the priority fee in lamports. Default is 30_000. (optional) - shouldLog: boolean, whether to log progress to stdout. Default is false. (optional)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const txs = await this.solanaKit.sendCompressedAirdrop( - parsedInput.mintAddress, - parsedInput.amount, - parsedInput.decimals, - parsedInput.recipients, - parsedInput.priorityFeeInLamports || 30_000, - parsedInput.shouldLog || false, - ); - - return JSON.stringify({ - status: "success", - message: `Airdropped ${parsedInput.amount} tokens to ${parsedInput.recipients.length} recipients.`, - transactionHashes: txs, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaClosePosition extends Tool { - name = "orca_close_position"; - description = `Closes an existing liquidity position in an Orca Whirlpool. This function fetches the position - details using the provided mint address and closes the position with a 1% slippage. - - Inputs (JSON string): - - positionMintAddress: string, the address of the position mint that represents the liquidity position.`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - const positionMintAddress = new PublicKey( - inputFormat.positionMintAddress, - ); - - const txId = await this.solanaKit.orcaClosePosition(positionMintAddress); - - return JSON.stringify({ - status: "success", - message: "Liquidity position closed successfully.", - transaction: txId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaOrcaCreateCLMM extends Tool { - name = "orca_create_clmm"; - description = `Create a Concentrated Liquidity Market Maker (CLMM) pool on Orca, the most efficient and capital-optimized CLMM on Solana. This function initializes a CLMM pool but does not add liquidity. You can add liquidity later using a centered position or a single-sided position. - - Inputs (JSON string): - - mintDeploy: string, the mint of the token you want to deploy (required). - - mintPair: string, The mint of the token you want to pair the deployed mint with (required). - - initialPrice: number, initial price of mintA in terms of mintB, e.g., 0.001 (required). - - feeTier: number, fee tier in bps. Options: 1, 2, 4, 5, 16, 30, 65, 100, 200 (required).`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - const mintA = new PublicKey(inputFormat.mintDeploy); - const mintB = new PublicKey(inputFormat.mintPair); - const initialPrice = new Decimal(inputFormat.initialPrice); - const feeTier = inputFormat.feeTier; - - if (!feeTier || !(feeTier in FEE_TIERS)) { - throw new Error( - `Invalid feeTier. Available options: ${Object.keys(FEE_TIERS).join( - ", ", - )}`, - ); - } - - const txId = await this.solanaKit.orcaCreateCLMM( - mintA, - mintB, - initialPrice, - feeTier, - ); - - return JSON.stringify({ - status: "success", - message: - "CLMM pool created successfully. Note: No liquidity was added.", - transaction: txId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaOrcaCreateSingleSideLiquidityPool extends Tool { - name = "orca_create_single_sided_liquidity_pool"; - description = `Create a single-sided liquidity pool on Orca, the most efficient and capital-optimized CLMM platform on Solana. - - This function initializes a single-sided liquidity pool, ideal for community driven project, fair launches, and fundraising. Minimize price impact by setting a narrow price range. - - Inputs (JSON string): - - depositTokenAmount: number, in units of the deposit token including decimals, e.g., 1000000000 (required). - - depositTokenMint: string, mint address of the deposit token, e.g., "DepositTokenMintAddress" (required). - - otherTokenMint: string, mint address of the other token, e.g., "OtherTokenMintAddress" (required). - - initialPrice: number, initial price of the deposit token in terms of the other token, e.g., 0.001 (required). - - maxPrice: number, maximum price at which liquidity is added, e.g., 5.0 (required). - - feeTier: number, fee tier for the pool in bps. Options: 1, 2, 4, 5, 16, 30, 65, 100, 200 (required).`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - const depositTokenAmount = inputFormat.depositTokenAmount; - const depositTokenMint = new PublicKey(inputFormat.depositTokenMint); - const otherTokenMint = new PublicKey(inputFormat.otherTokenMint); - const initialPrice = new Decimal(inputFormat.initialPrice); - const maxPrice = new Decimal(inputFormat.maxPrice); - const feeTier = inputFormat.feeTier; - - if (!feeTier || !(feeTier in FEE_TIERS)) { - throw new Error( - `Invalid feeTier. Available options: ${Object.keys(FEE_TIERS).join( - ", ", - )}`, - ); - } - - const txId = await this.solanaKit.orcaCreateSingleSidedLiquidityPool( - depositTokenAmount, - depositTokenMint, - otherTokenMint, - initialPrice, - maxPrice, - feeTier, - ); - - return JSON.stringify({ - status: "success", - message: "Single-sided Whirlpool created successfully", - transaction: txId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaOrcaFetchPositions extends Tool { - name = "orca_fetch_positions"; - description = `Fetch all the liquidity positions in an Orca Whirlpool by owner. Returns an object with positiont mint addresses as keys and position status details as values.`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(): Promise { - try { - const txId = await this.solanaKit.orcaFetchPositions(); - - return JSON.stringify({ - status: "success", - message: "Liquidity positions fetched.", - transaction: txId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaOrcaOpenCenteredPosition extends Tool { - name = "orca_open_centered_position_with_liquidity"; - description = `Add liquidity to a CLMM by opening a centered position in an Orca Whirlpool, the most efficient liquidity pool on Solana. - - Inputs (JSON string): - - whirlpoolAddress: string, address of the Orca Whirlpool (required). - - priceOffsetBps: number, bps offset (one side) from the current pool price, e.g., 500 for 5% (required). - - inputTokenMint: string, mint address of the deposit token (required). - - inputAmount: number, amount of the deposit token, e.g., 100.0 (required).`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - const whirlpoolAddress = new PublicKey(inputFormat.whirlpoolAddress); - const priceOffsetBps = parseInt(inputFormat.priceOffsetBps, 10); - const inputTokenMint = new PublicKey(inputFormat.inputTokenMint); - const inputAmount = new Decimal(inputFormat.inputAmount); - - if (priceOffsetBps < 0) { - throw new Error( - "Invalid distanceFromCurrentPriceBps. It must be equal or greater than 0.", - ); - } - - const txId = await this.solanaKit.orcaOpenCenteredPositionWithLiquidity( - whirlpoolAddress, - priceOffsetBps, - inputTokenMint, - inputAmount, - ); - - return JSON.stringify({ - status: "success", - message: "Centered liquidity position opened successfully.", - transaction: txId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaOrcaOpenSingleSidedPosition extends Tool { - name = "orca_open_single_sided_position"; - description = `Add liquidity to a CLMM by opening a single-sided position in an Orca Whirlpool, the most efficient liquidity pool on Solana. - - Inputs (JSON string): - - whirlpoolAddress: string, address of the Orca Whirlpool (required). - - distanceFromCurrentPriceBps: number, distance in basis points from the current price for the position (required). - - widthBps: number, width of the position in basis points (required). - - inputTokenMint: string, mint address of the deposit token (required). - - inputAmount: number, amount of the deposit token, e.g., 100.0 (required).`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - const whirlpoolAddress = new PublicKey(inputFormat.whirlpoolAddress); - const distanceFromCurrentPriceBps = - inputFormat.distanceFromCurrentPriceBps; - const widthBps = inputFormat.widthBps; - const inputTokenMint = new PublicKey(inputFormat.inputTokenMint); - const inputAmount = new Decimal(inputFormat.inputAmount); - - if (distanceFromCurrentPriceBps < 0 || widthBps < 0) { - throw new Error( - "Invalid distanceFromCurrentPriceBps or width. It must be equal or greater than 0.", - ); - } - - const txId = await this.solanaKit.orcaOpenSingleSidedPosition( - whirlpoolAddress, - distanceFromCurrentPriceBps, - widthBps, - inputTokenMint, - inputAmount, - ); - - return JSON.stringify({ - status: "success", - message: "Single-sided liquidity position opened successfully.", - transaction: txId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaRaydiumCreateAmmV4 extends Tool { - name = "raydium_create_ammV4"; - description = `Raydium's Legacy AMM that requires an OpenBook marketID - - Inputs (input is a json string): - marketId: string (required) - baseAmount: number(int), eg: 111111 (required) - quoteAmount: number(int), eg: 111111 (required) - startTime: number(seconds), eg: now number or zero (required) - `; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - - const tx = await this.solanaKit.raydiumCreateAmmV4( - new PublicKey(inputFormat.marketId), - new BN(inputFormat.baseAmount), - new BN(inputFormat.quoteAmount), - new BN(inputFormat.startTime), - ); - - return JSON.stringify({ - status: "success", - message: "Raydium amm v4 pool created successfully", - transaction: tx, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaRaydiumCreateClmm extends Tool { - name = "raydium_create_clmm"; - description = `Concentrated liquidity market maker, custom liquidity ranges, increased capital efficiency - - Inputs (input is a json string): - mint1: string (required) - mint2: string (required) - configId: string (required) stores pool info, id, index, protocolFeeRate, tradeFeeRate, tickSpacing, fundFeeRate - initialPrice: number, eg: 123.12 (required) - startTime: number(seconds), eg: now number or zero (required) - `; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - - const tx = await this.solanaKit.raydiumCreateClmm( - new PublicKey(inputFormat.mint1), - new PublicKey(inputFormat.mint2), - - new PublicKey(inputFormat.configId), - - new Decimal(inputFormat.initialPrice), - new BN(inputFormat.startTime), - ); - - return JSON.stringify({ - status: "success", - message: "Raydium clmm pool created successfully", - transaction: tx, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaRaydiumCreateCpmm extends Tool { - name = "raydium_create_cpmm"; - description = `Raydium's newest CPMM, does not require marketID, supports Token 2022 standard - - Inputs (input is a json string): - mint1: string (required) - mint2: string (required) - configId: string (required), stores pool info, index, protocolFeeRate, tradeFeeRate, fundFeeRate, createPoolFee - mintAAmount: number(int), eg: 1111 (required) - mintBAmount: number(int), eg: 2222 (required) - startTime: number(seconds), eg: now number or zero (required) - `; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - - const tx = await this.solanaKit.raydiumCreateCpmm( - new PublicKey(inputFormat.mint1), - new PublicKey(inputFormat.mint2), - - new PublicKey(inputFormat.configId), - - new BN(inputFormat.mintAAmount), - new BN(inputFormat.mintBAmount), - - new BN(inputFormat.startTime), - ); - - return JSON.stringify({ - status: "success", - message: "Raydium cpmm pool created successfully", - transaction: tx, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaOpenbookCreateMarket extends Tool { - name = "solana_openbook_create_market"; - description = `Openbook marketId, required for ammv4 - - Inputs (input is a json string): - baseMint: string (required) - quoteMint: string (required) - lotSize: number (required) - tickSize: number (required) - `; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - - const tx = await this.solanaKit.openbookCreateMarket( - new PublicKey(inputFormat.baseMint), - new PublicKey(inputFormat.quoteMint), - - inputFormat.lotSize, - inputFormat.tickSize, - ); - - return JSON.stringify({ - status: "success", - message: "Openbook market created successfully", - transaction: tx, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaManifestCreateMarket extends Tool { - name = "solana_manifest_create_market"; - description = `Manifest market - - Inputs (input is a json string): - baseMint: string (required) - quoteMint: string (required) - `; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - - const tx = await this.solanaKit.manifestCreateMarket( - new PublicKey(inputFormat.baseMint), - new PublicKey(inputFormat.quoteMint), - ); - - return JSON.stringify({ - status: "success", - message: "Create manifest market successfully", - transaction: tx[0], - marketId: tx[1], - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaPythFetchPrice extends Tool { - name = "solana_pyth_fetch_price"; - description = `Fetch the price of a given price feed from Pyth's Hermes service - - Inputs: - priceFeedID: string, the price feed ID, e.g., "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43" for BTC/USD`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const price = await this.solanaKit.pythFetchPrice(input); - const response: PythFetchPriceResponse = { - status: "success", - priceFeedID: input, - price, - }; - return JSON.stringify(response); - } catch (error: any) { - const response: PythFetchPriceResponse = { - status: "error", - priceFeedID: input, - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }; - return JSON.stringify(response); - } - } -} - -export class SolanaResolveAllDomainsTool extends Tool { - name = "solana_resolve_all_domains"; - description = `Resolve domain names to a public key for ALL domain types EXCEPT .sol domains. - Use this for domains like .blink, .bonk, etc. - DO NOT use this for .sol domains (use solana_resolve_domain instead). - - Input: - domain: string, eg "mydomain.blink" or "mydomain.bonk" (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const owner = await this.solanaKit.resolveAllDomains(input); - - if (!owner) { - return JSON.stringify({ - status: "error", - message: "Domain not found", - code: "DOMAIN_NOT_FOUND", - }); - } - - return JSON.stringify({ - status: "success", - message: "Domain resolved successfully", - owner: owner?.toString(), - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "DOMAIN_RESOLUTION_ERROR", - }); - } - } -} - -export class SolanaGetOwnedDomains extends Tool { - name = "solana_get_owned_domains"; - description = `Get all domains owned by a specific wallet address. - - Inputs: - owner: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const ownerPubkey = new PublicKey(input.trim()); - const domains = await this.solanaKit.getOwnedAllDomains(ownerPubkey); - - return JSON.stringify({ - status: "success", - message: "Owned domains fetched successfully", - domains, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "FETCH_OWNED_DOMAINS_ERROR", - }); - } - } -} - -export class SolanaGetOwnedTldDomains extends Tool { - name = "solana_get_owned_tld_domains"; - description = `Get all domains owned by the agent's wallet for a specific TLD. - - Inputs: - tld: string, eg "bonk" (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const domains = await this.solanaKit.getOwnedDomainsForTLD(input); - - return JSON.stringify({ - status: "success", - message: "TLD domains fetched successfully", - domains, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "FETCH_TLD_DOMAINS_ERROR", - }); - } - } -} - -export class SolanaGetAllTlds extends Tool { - name = "solana_get_all_tlds"; - description = `Get all active top-level domains (TLDs) in the AllDomains Name Service`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(): Promise { - try { - const tlds = await this.solanaKit.getAllDomainsTLDs(); - - return JSON.stringify({ - status: "success", - message: "TLDs fetched successfully", - tlds, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "FETCH_TLDS_ERROR", - }); - } - } -} - -export class SolanaGetMainDomain extends Tool { - name = "solana_get_main_domain"; - description = `Get the main/favorite domain for a given wallet address. - - Inputs: - owner: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const ownerPubkey = new PublicKey(input.trim()); - const mainDomain = - await this.solanaKit.getMainAllDomainsDomain(ownerPubkey); - - return JSON.stringify({ - status: "success", - message: "Main domain fetched successfully", - domain: mainDomain, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "FETCH_MAIN_DOMAIN_ERROR", - }); - } - } -} - -export class SolanaCreateGibworkTask extends Tool { - name = "create_gibwork_task"; - description = `Create a task on Gibwork. - - Inputs (input is a JSON string): - title: string, title of the task (required) - content: string, description of the task (required) - requirements: string, requirements to complete the task (required) - tags: string[], list of tags associated with the task (required) - payer: string, payer address (optional, defaults to agent wallet) - tokenMintAddress: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" (required) - amount: number, payment amount (required) - `; - - constructor(private solanaSdk: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const taskData = await this.solanaSdk.createGibworkTask( - parsedInput.title, - parsedInput.content, - parsedInput.requirements, - parsedInput.tags, - parsedInput.tokenMintAddress, - parsedInput.amount, - parsedInput.payer, - ); - - const response: GibworkCreateTaskReponse = { - status: "success", - taskId: taskData.taskId, - signature: taskData.signature, - }; - - return JSON.stringify(response); - } catch (err: any) { - return JSON.stringify({ - status: "error", - message: err.message, - code: err.code || "CREATE_TASK_ERROR", - }); - } - } -} - -export class SolanaRockPaperScissorsTool extends Tool { - name = "rock_paper_scissors"; - description = `Play rock paper scissors to win SEND coins. - - Inputs (input is a JSON string): - choice: string, either "rock", "paper", or "scissors" (required) - amount: number, amount of SOL to play with - must be 0.1, 0.01, or 0.005 SOL (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - private validateInput(input: any): void { - if (input.choice !== undefined) { - throw new Error("choice is required."); - } - if ( - input.amount !== undefined && - (typeof input.spaceKB !== "number" || input.spaceKB <= 0) - ) { - throw new Error("amount must be a positive number when provided"); - } - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - this.validateInput(parsedInput); - const result = await this.solanaKit.rockPaperScissors( - Number(parsedInput['"amount"']), - parsedInput['"choice"'].replace(/^"|"$/g, "") as - | "rock" - | "paper" - | "scissors", - ); - - return JSON.stringify({ - status: "success", - message: result, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaTipLinkTool extends Tool { - name = "solana_tiplink"; - description = `Create a TipLink for transferring SOL or SPL tokens. - Input is a JSON string with: - - amount: number (required) - Amount to transfer - - splmintAddress: string (optional) - SPL token mint address`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - if (!parsedInput.amount) { - throw new Error("Amount is required"); - } - - const amount = parseFloat(parsedInput.amount); - const splmintAddress = parsedInput.splmintAddress - ? new PublicKey(parsedInput.splmintAddress) - : undefined; - - const { url, signature } = await this.solanaKit.createTiplink( - amount, - splmintAddress, - ); - - return JSON.stringify({ - status: "success", - url, - signature, - amount, - tokenType: splmintAddress ? "SPL" : "SOL", - message: `TipLink created successfully`, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaListNFTForSaleTool extends Tool { - name = "solana_list_nft_for_sale"; - description = `List an NFT for sale on Tensor Trade. - - Inputs (input is a JSON string): - nftMint: string, the mint address of the NFT (required) - price: number, price in SOL (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - // Validate NFT ownership first - const nftAccount = - await this.solanaKit.connection.getTokenAccountsByOwner( - this.solanaKit.wallet_address, - { mint: new PublicKey(parsedInput.nftMint) }, - ); - - if (nftAccount.value.length === 0) { - return JSON.stringify({ - status: "error", - message: - "NFT not found in wallet. Please make sure you own this NFT.", - code: "NFT_NOT_FOUND", - }); - } - - const tx = await this.solanaKit.tensorListNFT( - new PublicKey(parsedInput.nftMint), - parsedInput.price, - ); - - return JSON.stringify({ - status: "success", - message: "NFT listed for sale successfully", - transaction: tx, - price: parsedInput.price, - nftMint: parsedInput.nftMint, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaCancelNFTListingTool extends Tool { - name = "solana_cancel_nft_listing"; - description = `Cancel an NFT listing on Tensor Trade. - - Inputs (input is a JSON string): - nftMint: string, the mint address of the NFT (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const tx = await this.solanaKit.tensorCancelListing( - new PublicKey(parsedInput.nftMint), - ); - - return JSON.stringify({ - status: "success", - message: "NFT listing cancelled successfully", - transaction: tx, - nftMint: parsedInput.nftMint, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export function createSolanaTools(solanaKit: SolanaAgentKit) { - return [ - new SolanaBalanceTool(solanaKit), - new SolanaBalanceOtherTool(solanaKit), - new SolanaTransferTool(solanaKit), - new SolanaDeployTokenTool(solanaKit), - new SolanaDeployCollectionTool(solanaKit), - new SolanaMintNFTTool(solanaKit), - new SolanaTradeTool(solanaKit), - new SolanaRequestFundsTool(solanaKit), - new SolanaRegisterDomainTool(solanaKit), - new SolanaGetWalletAddressTool(solanaKit), - new SolanaPumpfunTokenLaunchTool(solanaKit), - new SolanaCreateImageTool(solanaKit), - new SolanaLendAssetTool(solanaKit), - new SolanaTPSCalculatorTool(solanaKit), - new SolanaStakeTool(solanaKit), - new SolanaFetchPriceTool(solanaKit), - new SolanaGetDomainTool(solanaKit), - new SolanaTokenDataTool(solanaKit), - new SolanaTokenDataByTickerTool(solanaKit), - new SolanaCompressedAirdropTool(solanaKit), - new SolanaRaydiumCreateAmmV4(solanaKit), - new SolanaRaydiumCreateClmm(solanaKit), - new SolanaRaydiumCreateCpmm(solanaKit), - new SolanaOpenbookCreateMarket(solanaKit), - new SolanaManifestCreateMarket(solanaKit), - new SolanaLimitOrderTool(solanaKit), - new SolanaCancelAllOrdersTool(solanaKit), - new SolanaWithdrawAllTool(solanaKit), - new SolanaClosePosition(solanaKit), - new SolanaOrcaCreateCLMM(solanaKit), - new SolanaOrcaCreateSingleSideLiquidityPool(solanaKit), - new SolanaOrcaFetchPositions(solanaKit), - new SolanaOrcaOpenCenteredPosition(solanaKit), - new SolanaOrcaOpenSingleSidedPosition(solanaKit), - new SolanaPythFetchPrice(solanaKit), - new SolanaResolveDomainTool(solanaKit), - new SolanaGetOwnedDomains(solanaKit), - new SolanaGetOwnedTldDomains(solanaKit), - new SolanaGetAllTlds(solanaKit), - new SolanaGetMainDomain(solanaKit), - new SolanaResolveAllDomainsTool(solanaKit), - new SolanaCreateGibworkTask(solanaKit), - new SolanaRockPaperScissorsTool(solanaKit), - new SolanaTipLinkTool(solanaKit), - new SolanaListNFTForSaleTool(solanaKit), - new SolanaCancelNFTListingTool(solanaKit), - ]; + return tools; } diff --git a/src/tools/get_wallet_address.ts b/src/tools/get_wallet_address.ts new file mode 100644 index 0000000..d0b0ad4 --- /dev/null +++ b/src/tools/get_wallet_address.ts @@ -0,0 +1,10 @@ +import { SolanaAgentKit } from ".."; + +/** + * Get the agents wallet address + * @param agent - SolanaAgentKit instance + * @returns string + */ +export function get_wallet_address(agent: SolanaAgentKit) { + return agent.wallet_address.toBase58(); +} diff --git a/src/tools/index.ts b/src/tools/index.ts index b9f7542..9d66118 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -1,3 +1,4 @@ +export * from "./get_wallet_address"; export * from "./request_faucet_funds"; export * from "./deploy_token"; export * from "./deploy_collection"; diff --git a/src/vercel-ai/index.ts b/src/vercel-ai/index.ts index 800241e..a9a47d4 100644 --- a/src/vercel-ai/index.ts +++ b/src/vercel-ai/index.ts @@ -1,1489 +1,25 @@ import { tool, type CoreTool } from "ai"; import { SolanaAgentKit } from "../agent"; -import z from "zod"; -import { PublicKey } from "@solana/web3.js"; -import { create_image } from "../tools/create_image"; -import BN from "bn.js"; -import Decimal from "decimal.js"; -import { FEE_TIERS } from "../tools"; -import { GibworkCreateTaskReponse, PythFetchPriceResponse } from "../types"; - -export class VercelAITools { - constructor(private solanaKit: SolanaAgentKit) {} - - solanaBalanceTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.balance", - description: `Get the balance of a Solana wallet or token account. - - If you want to get the balance of your wallet, you don't need to provide the tokenAddress. - If no tokenAddress is provided, the balance will be in SOL. - - Inputs: - tokenAccountAddress: string, eg "So11111111111111111111111111111111111111112" (optional)`, - parameters: z.object({ - tokenAccountAddress: z.string().optional(), - }), - execute: async ({ tokenAccountAddress }) => { - try { - const address = tokenAccountAddress - ? new PublicKey(tokenAccountAddress) - : undefined; - const balance = await this.solanaKit.getBalance(address); - - return { - status: "success", - balance: balance, - token: address ? address.toBase58() : "SOL", - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaTransferTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.transfer", - description: ` - Transfer tokens or SOL to another address ( also called as wallet address ). - - Inputs ( input is a JSON string ): - to: string, eg "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk" (required) - amount: number, eg 1 (required) - mint?: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (optional) `, - parameters: z.object({ - to: z.string(), - amount: z.number(), - mint: z.string().optional(), - }), - execute: async ({ to, amount, mint }) => { - try { - const recipient = new PublicKey(to); - const mintAddress = mint ? new PublicKey(mint) : undefined; - - const tx = await this.solanaKit.transfer( - recipient, - amount, - mintAddress, - ); - - return { - status: "success", - message: "Transfer completed successfully", - amount: amount, - recipient: to, - token: mint || "SOL", - transaction: tx, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaDeployTokenTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.deployToken", - description: `Deploy a new token on Solana blockchain. - - Inputs (input is a JSON string): - name: string, eg "My Token" (required) - uri: string, eg "https://example.com/token.json" (required) - symbol: string, eg "MTK" (required) - decimals?: number, eg 9 (optional, defaults to 9) - initialSupply?: number, eg 1000000 (optional)`, - parameters: z.object({ - name: z.string(), - uri: z.string(), - symbol: z.string(), - decimals: z.number().optional(), - initialSupply: z.number().optional(), - }), - execute: async ({ - name, - uri, - symbol, - decimals = 9, - initialSupply = 0, - }) => { - try { - const result = await this.solanaKit.deployToken( - name, - uri, - symbol, - decimals, - initialSupply, - ); - - return { - status: "success", - message: "Token deployed successfully", - mintAddress: result.mint.toString(), - decimals: decimals || 9, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaDeployCollectionTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.deployCollection", - description: "Deploy a new NFT collection on Solana blockchain", - parameters: z.object({ - name: z.string(), - uri: z.string(), - royaltyBasisPoints: z.number().optional(), - }), - execute: async ({ name, uri, royaltyBasisPoints = 0 }) => { - try { - const result = await this.solanaKit.deployCollection({ - name, - uri, - royaltyBasisPoints, - }); - return { - status: "success", - message: "Collection deployed successfully", - collectionAddress: result.collectionAddress.toString(), - name, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaMintNFTTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.mintNFT", - description: "Mint a new NFT in a collection on Solana blockchain", - parameters: z.object({ - collectionMint: z.string(), - name: z.string(), - uri: z.string(), - recipient: z.string().optional(), - }), - execute: async ({ collectionMint, name, uri, recipient }) => { - try { - const result = await this.solanaKit.mintNFT( - new PublicKey(collectionMint), - { name, uri }, - recipient - ? new PublicKey(recipient) - : this.solanaKit.wallet_address, - ); - return { - status: "success", - message: "NFT minted successfully", - mintAddress: result.mint.toString(), - metadata: { name, uri }, - recipient: recipient || result.mint.toString(), - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaTradeTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.trade", - description: "Swap tokens using Jupiter Exchange", - parameters: z.object({ - outputMint: z.string(), - inputAmount: z.number(), - inputMint: z.string().optional(), - slippageBps: z.number().optional(), - }), - execute: async ({ outputMint, inputAmount, inputMint, slippageBps }) => { - try { - const tx = await this.solanaKit.trade( - new PublicKey(outputMint), - inputAmount, - inputMint - ? new PublicKey(inputMint) - : new PublicKey("So11111111111111111111111111111111111111112"), - slippageBps, - ); - return { - status: "success", - message: "Trade executed successfully", - transaction: tx, - inputAmount, - inputToken: inputMint || "SOL", - outputToken: outputMint, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaRequestFundsTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.requestFunds", - description: "Request SOL from Solana faucet (devnet/testnet only)", - parameters: z.object({}), - execute: async () => { - try { - await this.solanaKit.requestFaucetFunds(); - return { - status: "success", - message: "Successfully requested faucet funds", - network: this.solanaKit.connection.rpcEndpoint.split("/")[2], - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaRegisterDomainTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.registerDomain", - description: "Register a .sol domain name for your wallet", - parameters: z.object({ - name: z.string().min(1, "Name is required"), - spaceKB: z - .number() - .positive("spaceKB must be a positive number") - .default(1) - .optional(), - }), - execute: async ({ name, spaceKB = 1 }) => { - try { - const tx = await this.solanaKit.registerDomain(name, spaceKB); - return { - status: "success", - message: "Domain registered successfully", - transaction: tx, - domain: `${name}.sol`, - spaceKB, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaResolveDomainTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.resolveDomain", - description: `Resolve ONLY .sol domain names to a Solana PublicKey. - This tool is exclusively for .sol domains. - DO NOT use this for other domain types like .blink, .bonk, etc.`, - parameters: z.object({ - domain: z - .string() - .trim() - .min(1, "Domain name is required") - .regex(/\.sol$/, "Domain must end with .sol"), - }), - execute: async ({ domain }) => { - try { - const publicKey = await this.solanaKit.resolveSolDomain(domain); - return { - status: "success", - message: "Domain resolved successfully", - publicKey: publicKey.toBase58(), - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaGetDomainTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.getDomain", - description: - "Retrieve the .sol domain associated with a given account address", - parameters: z.object({ - account: z - .string() - .trim() - .min(1, "Account address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid Solana account address"), - }), - execute: async ({ account }) => { - try { - const publicKey = new PublicKey(account); - const domain = await this.solanaKit.getPrimaryDomain(publicKey); - return { - status: "success", - message: "Primary domain retrieved successfully", - domain, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaGetWalletAddressTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.getWalletAddress", - description: "Get the wallet address of the agent", - parameters: z.object({}), - execute: async () => { - return { - status: "success", - message: "Wallet address retrieved successfully", - address: this.solanaKit.wallet_address.toString(), - }; - }, - }); - } - - solanaPumpfunTokenLaunchTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.launchPumpfunToken", - description: `Launch a token on Pump.fun. - Do not use this tool for any other purpose, or for creating SPL tokens. - If the user asks you to choose the parameters, you should generate valid values. - For generating the image, you can use the solana_create_image tool.`, - parameters: z.object({ - tokenName: z.string().min(1, "Token name is required"), - tokenTicker: z.string().min(1, "Token ticker is required"), - description: z.string().min(1, "Description is required"), - imageUrl: z.string().url("Invalid image URL"), - twitter: z.string().url("Invalid Twitter URL").optional(), - telegram: z.string().url("Invalid Telegram URL").optional(), - website: z.string().url("Invalid website URL").optional(), - initialLiquiditySOL: z - .number() - .positive("Initial liquidity must be positive") - .optional(), - }), - execute: async ({ - tokenName, - tokenTicker, - description, - imageUrl, - twitter, - telegram, - website, - initialLiquiditySOL, - }) => { - try { - await this.solanaKit.launchPumpFunToken( - tokenName, - tokenTicker, - description, - imageUrl, - // @ts-expect-error Value matches type however TS still shows error - { - twitter, - telegram, - website, - initialLiquiditySOL, - }, - ); - - return { - status: "success", - message: "Token launched successfully on Pump.fun", - tokenName, - tokenTicker, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaCreateImageTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.createImage", - description: - "Create an image using OpenAI's DALL-E. Input should be a string prompt for the image.", - parameters: z.object({ - prompt: z.string().trim().min(1, "Image prompt cannot be empty"), - }), - execute: async ({ prompt }) => { - try { - const result = await create_image(this.solanaKit, prompt); - return { - status: "success", - message: "Image created successfully", - ...result, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaLendAssetTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.lendAsset", - description: - "Lend idle USDC for yield using Lulo (only USDC is supported)", - parameters: z.object({ - amount: z - .number() - .positive("Amount must be positive") - .min(0.000001, "Amount must be at least 0.000001 USDC"), - }), - execute: async ({ amount }) => { - try { - const tx = await this.solanaKit.lendAssets(amount); - return { - status: "success", - message: "Asset lent successfully", - transaction: tx, - amount, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaTPSCalculatorTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.getTPS", - description: - "Get the current TPS (transactions per second) of the Solana network", - parameters: z.object({}), - execute: async () => { - try { - const tps = await this.solanaKit.getTPS(); - return { - status: "success", - message: "TPS fetched successfully", - network: "mainnet-beta", - tps: tps, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaStakeTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.stake", - description: - "Stake your SOL (Solana), also called as SOL staking or liquid staking", - parameters: z.object({ - amount: z - .number() - .positive("Stake amount must be positive") - .min(0.001, "Minimum stake amount is 0.001 SOL"), - }), - execute: async ({ amount }) => { - try { - const tx = await this.solanaKit.stake(amount); - return { - status: "success", - message: "Staked successfully", - transaction: tx, - amount, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaFetchPriceTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.fetchPrice", - description: "Fetch the price of a given token in USDC", - parameters: z.object({ - tokenId: z - .string() - .trim() - .min(1, "Token ID is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid Solana token address"), - }), - execute: async ({ tokenId }) => { - try { - const price = await this.solanaKit.fetchTokenPrice(tokenId); - return { - status: "success", - tokenId, - priceInUSDC: price, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaTokenDataTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.tokenData", - description: "Get the token data for a given token mint address", - parameters: z.object({ - mintAddress: z - .string() - .trim() - .min(1, "Mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid Solana token address"), - }), - execute: async ({ mintAddress }) => { - try { - const tokenData = - await this.solanaKit.getTokenDataByAddress(mintAddress); - return { - status: "success", - tokenData, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaTokenDataByTickerTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.tokenDataByTicker", - description: "Get the token data for a given token ticker", - parameters: z.object({ - ticker: z - .string() - .trim() - .min(1, "Ticker is required") - .max(10, "Ticker too long"), - }), - execute: async ({ ticker }) => { - try { - const tokenData = await this.solanaKit.getTokenDataByTicker(ticker); - return { - status: "success", - tokenData, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaCompressedAirdropTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.compressedAirdrop", - description: "Airdrop SPL tokens with ZK Compression", - parameters: z.object({ - mintAddress: z - .string() - .trim() - .min(1, "Mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid token mint address"), - amount: z.number().positive("Amount must be positive"), - decimals: z - .number() - .int("Decimals must be an integer") - .min(0, "Decimals must be non-negative") - .max(9, "Decimals cannot exceed 9"), - recipients: z - .array(z.string()) - .min(1, "At least one recipient is required") - .refine( - (recipients) => - recipients.every((addr) => { - try { - new PublicKey(addr); - return true; - } catch { - return false; - } - }), - "One or more recipient addresses are invalid", - ), - priorityFeeInLamports: z - .number() - .int("Priority fee must be an integer") - .nonnegative("Priority fee cannot be negative") - .default(30_000), - shouldLog: z.boolean().default(false), - }), - execute: async ({ - mintAddress, - amount, - decimals, - recipients, - priorityFeeInLamports, - shouldLog, - }) => { - try { - const txs = await this.solanaKit.sendCompressedAirdrop( - mintAddress, - amount, - decimals, - recipients, - priorityFeeInLamports, - shouldLog, - ); - return { - status: "success", - message: `Airdropped ${amount} tokens to ${recipients.length} recipients.`, - transactionHashes: txs, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaCreateSingleSidedWhirlpoolTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.createOrcaSingleSidedWhirlpool", - description: "Create a single-sided Whirlpool with liquidity", - parameters: z.object({ - depositTokenAmount: z - .number() - .int("Deposit amount must be an integer") - .positive("Deposit amount must be positive"), - depositTokenMint: z - .string() - .trim() - .min(1, "Deposit token mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid deposit token mint address"), - otherTokenMint: z - .string() - .trim() - .min(1, "Other token mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid other token mint address"), - initialPrice: z.number().positive("Initial price must be positive"), - maxPrice: z - .number() - .positive("Max price must be positive") - .refine((val) => val > 0, "Max price must be greater than 0"), - feeTier: z - .number() - .refine( - (val) => val in FEE_TIERS, - `Invalid fee tier. Available options: ${Object.keys(FEE_TIERS).join(", ")}`, - ), - }), - execute: async ({ - depositTokenAmount, - depositTokenMint, - otherTokenMint, - initialPrice, - maxPrice, - feeTier, - }) => { - try { - const txId = await this.solanaKit.createOrcaSingleSidedWhirlpool( - new BN(depositTokenAmount), - new PublicKey(depositTokenMint), - new PublicKey(otherTokenMint), - new Decimal(initialPrice), - new Decimal(maxPrice), - // @ts-expect-error Value matches type however TS still shows error - feeTier, - ); - - return { - status: "success", - message: "Single-sided Whirlpool created successfully", - transaction: txId, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaRaydiumCreateAmmV4Tool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.raydiumCreateAmmV4", - description: - "Create Raydium's Legacy AMM that requires an OpenBook marketID", - parameters: z.object({ - marketId: z - .string() - .trim() - .min(1, "Market ID is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid market ID"), - baseAmount: z - .number() - .int("Base amount must be an integer") - .positive("Base amount must be positive"), - quoteAmount: z - .number() - .int("Quote amount must be an integer") - .positive("Quote amount must be positive"), - startTime: z - .number() - .int("Start time must be an integer") - .nonnegative("Start time cannot be negative"), - }), - execute: async ({ marketId, baseAmount, quoteAmount, startTime }) => { - try { - const tx = await this.solanaKit.raydiumCreateAmmV4( - new PublicKey(marketId), - new BN(baseAmount), - new BN(quoteAmount), - new BN(startTime), - ); - - return { - status: "success", - message: "Raydium AMM V4 pool created successfully", - transaction: tx, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaRaydiumCreateClmmTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.raydiumCreateClmm", - description: - "Create a Concentrated Liquidity Market Maker (CLMM) pool with custom liquidity ranges", - parameters: z.object({ - mint1: z - .string() - .trim() - .min(1, "First mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid first mint address"), - mint2: z - .string() - .trim() - .min(1, "Second mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid second mint address"), - configId: z - .string() - .trim() - .min(1, "Config ID is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid config ID"), - initialPrice: z.number().positive("Initial price must be positive"), - startTime: z - .number() - .int("Start time must be an integer") - .nonnegative("Start time cannot be negative"), - }), - execute: async ({ mint1, mint2, configId, initialPrice, startTime }) => { - try { - const tx = await this.solanaKit.raydiumCreateClmm( - new PublicKey(mint1), - new PublicKey(mint2), - new PublicKey(configId), - new Decimal(initialPrice), - new BN(startTime), - ); - - return { - status: "success", - message: "Raydium CLMM pool created successfully", - transaction: tx, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaRaydiumCreateCpmmTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.raydiumCreateCpmm", - description: - "Create Raydium's newest CPMM pool (supports Token 2022 standard)", - parameters: z.object({ - mint1: z - .string() - .trim() - .min(1, "First mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid first mint address"), - mint2: z - .string() - .trim() - .min(1, "Second mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid second mint address"), - configId: z - .string() - .trim() - .min(1, "Config ID is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid config ID"), - mintAAmount: z - .number() - .int("Mint A amount must be an integer") - .positive("Mint A amount must be positive"), - mintBAmount: z - .number() - .int("Mint B amount must be an integer") - .positive("Mint B amount must be positive"), - startTime: z - .number() - .int("Start time must be an integer") - .nonnegative("Start time cannot be negative"), - }), - execute: async ({ - mint1, - mint2, - configId, - mintAAmount, - mintBAmount, - startTime, - }) => { - try { - const tx = await this.solanaKit.raydiumCreateCpmm( - new PublicKey(mint1), - new PublicKey(mint2), - new PublicKey(configId), - new BN(mintAAmount), - new BN(mintBAmount), - new BN(startTime), - ); - - return { - status: "success", - message: "Raydium CPMM pool created successfully", - transaction: tx, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaOpenbookCreateMarketTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.openbookCreateMarket", - description: "Create an Openbook market (required for AMM v4)", - parameters: z.object({ - baseMint: z - .string() - .trim() - .min(1, "Base mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid base mint address"), - quoteMint: z - .string() - .trim() - .min(1, "Quote mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid quote mint address"), - lotSize: z.number().positive("Lot size must be positive"), - tickSize: z.number().positive("Tick size must be positive"), - }), - execute: async ({ baseMint, quoteMint, lotSize, tickSize }) => { - try { - const tx = await this.solanaKit.openbookCreateMarket( - new PublicKey(baseMint), - new PublicKey(quoteMint), - lotSize, - tickSize, - ); - - return { - status: "success", - message: "Openbook market created successfully", - transaction: tx, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "UNKNOWN_ERROR", - }; - } - }, - }); - } - - solanaPythFetchPriceTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.pythFetchPrice", - description: - "Fetch the price of a given price feed from Pyth's Hermes service", - parameters: z.object({ - priceFeedID: z - .string() - .trim() - .min(1, "Price feed ID is required") - .regex( - /^0x[a-fA-F0-9]{64}$/, - "Invalid price feed ID format. Must be a 32-byte hex string starting with 0x", - ), - }), - execute: async ({ priceFeedID }) => { - try { - const price = await this.solanaKit.pythFetchPrice(priceFeedID); - return { - status: "success", - priceFeedID, - price, - } as PythFetchPriceResponse; - } catch (e: any) { - return { - status: "error", - priceFeedID, - message: e.message, - code: e.code || "UNKNOWN_ERROR", - } as PythFetchPriceResponse; - } - }, - }); - } - - solanaResolveAllDomainsTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.resolveAllDomains", - description: `Resolve domain names to a public key for ALL domain types EXCEPT .sol domains. - Use this for domains like .blink, .bonk, etc. - DO NOT use this for .sol domains.`, - parameters: z.object({ - domain: z - .string() - .trim() - .min(1, "Domain name is required") - .refine( - (val) => !val.endsWith(".sol"), - "This tool cannot be used for .sol domains. Use solana.resolveDomain instead.", - ) - .refine( - (val) => val.includes("."), - "Invalid domain format. Must include a TLD (e.g., .blink, .bonk)", - ), - }), - execute: async ({ domain }) => { - try { - const owner = await this.solanaKit.resolveAllDomains(domain); - - if (!owner) { - return { - status: "error", - message: "Domain not found", - code: "DOMAIN_NOT_FOUND", - }; - } - - return { - status: "success", - message: "Domain resolved successfully", - owner: owner.toString(), - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "DOMAIN_RESOLUTION_ERROR", - }; - } - }, - }); - } - - solanaGetOwnedDomainsTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.getOwnedDomains", - description: "Get all domains owned by a specific wallet address", - parameters: z.object({ - owner: z - .string() - .trim() - .min(1, "Owner address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid Solana wallet address"), - }), - execute: async ({ owner }) => { - try { - const ownerPubkey = new PublicKey(owner); - const domains = await this.solanaKit.getOwnedAllDomains(ownerPubkey); - return { - status: "success", - message: "Owned domains fetched successfully", - domains, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "FETCH_OWNED_DOMAINS_ERROR", - }; - } - }, - }); - } - - solanaGetOwnedTldDomainsTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.getOwnedTldDomains", - description: - "Get all domains owned by the agent's wallet for a specific TLD", - parameters: z.object({ - tld: z - .string() - .trim() - .min(1, "TLD is required") - .regex( - /^[a-zA-Z0-9]+$/, - "TLD must contain only alphanumeric characters", - ), - }), - execute: async ({ tld }) => { - try { - const domains = await this.solanaKit.getOwnedDomainsForTLD(tld); - return { - status: "success", - message: "TLD domains fetched successfully", - domains, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "FETCH_TLD_DOMAINS_ERROR", - }; - } - }, - }); - } - - solanaGetAllTldsTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.getAllTlds", - description: - "Get all active top-level domains (TLDs) in the AllDomains Name Service", - parameters: z.object({}), - execute: async () => { - try { - const tlds = await this.solanaKit.getAllDomainsTLDs(); - return { - status: "success", - message: "TLDs fetched successfully", - tlds, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "FETCH_TLDS_ERROR", - }; - } - }, - }); - } - - solanaGetMainDomainTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.getMainDomain", - description: "Get the main/favorite domain for a given wallet address", - parameters: z.object({ - owner: z - .string() - .trim() - .min(1, "Owner address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid Solana wallet address"), - }), - execute: async ({ owner }) => { - try { - const ownerPubkey = new PublicKey(owner); - const mainDomain = - await this.solanaKit.getMainAllDomainsDomain(ownerPubkey); - return { - status: "success", - message: "Main domain fetched successfully", - domain: mainDomain, - }; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "FETCH_MAIN_DOMAIN_ERROR", - }; - } - }, - }); - } - - solanaCreateGibworkTaskTool(): CoreTool { - return tool({ - // @ts-expect-error Value matches type however TS still shows error - id: "solana.createGibworkTask", - description: "Create a task on Gibwork", - parameters: z.object({ - title: z - .string() - .trim() - .min(1, "Title is required") - .max(200, "Title too long"), - content: z.string().trim().min(1, "Description is required"), - requirements: z.string().trim().min(1, "Requirements are required"), - tags: z - .array(z.string()) - .min(1, "At least one tag is required") - .max(10, "Maximum 10 tags allowed"), - payer: z - .string() - .trim() - .optional() - .refine((val) => { - if (!val) { - return true; - } - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid payer wallet address"), - tokenMintAddress: z - .string() - .trim() - .min(1, "Token mint address is required") - .refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid token mint address"), - amount: z - .number() - .positive("Amount must be positive") - .min(0.000001, "Amount must be at least 0.000001"), - }), - execute: async ({ - title, - content, - requirements, - tags, - tokenMintAddress, - amount, - payer, - }) => { - try { - const taskData = await this.solanaKit.createGibworkTask( - title, - content, - requirements, - tags, - tokenMintAddress, - amount, - payer, - ); - - return { - status: "success", - taskId: taskData.taskId, - signature: taskData.signature, - } as GibworkCreateTaskReponse; - } catch (e: any) { - return { - status: "error", - message: e.message, - code: e.code || "CREATE_TASK_ERROR", - }; - } - }, - }); - } -} +import { executeAction } from "../utils/actionExecutor"; +import { ACTIONS } from "../actions"; export function createSolanaTools( - solanaKit: SolanaAgentKit, + solanaAgentKit: SolanaAgentKit, ): Record { - const vercelTools = new VercelAITools(solanaKit); + const tools: Record = {}; + const actionKeys = Object.keys(ACTIONS); - return { - solanaBalanceTool: vercelTools.solanaBalanceTool(), - solanaTransferTool: vercelTools.solanaTransferTool(), - solanaDeployTokenTool: vercelTools.solanaDeployTokenTool(), - solanaDeployCollectionTool: vercelTools.solanaDeployCollectionTool(), - solanaMintNFTTool: vercelTools.solanaMintNFTTool(), - solanaTradeTool: vercelTools.solanaTradeTool(), - solanaRequestFundsTool: vercelTools.solanaRequestFundsTool(), - solanaRegisterDomainTool: vercelTools.solanaRegisterDomainTool(), - solanaGetWalletAddressTool: vercelTools.solanaGetWalletAddressTool(), - solanaPumpfunTokenLaunchTool: vercelTools.solanaPumpfunTokenLaunchTool(), - solanaCreateImageTool: vercelTools.solanaCreateImageTool(), - solanaLendAssetTool: vercelTools.solanaLendAssetTool(), - solanaTPSCalculatorTool: vercelTools.solanaTPSCalculatorTool(), - solanaStakeTool: vercelTools.solanaStakeTool(), - solanaFetchPriceTool: vercelTools.solanaFetchPriceTool(), - solanaTokenDataTool: vercelTools.solanaTokenDataTool(), - solanaTokenDataByTickerTool: vercelTools.solanaTokenDataByTickerTool(), - solanaCompressedAirdropTool: vercelTools.solanaCompressedAirdropTool(), - solanaRaydiumCreateAmmV4Tool: vercelTools.solanaRaydiumCreateAmmV4Tool(), - solanaRaydiumCreateClmmTool: vercelTools.solanaRaydiumCreateClmmTool(), - solanaRaydiumCreateCpmmTool: vercelTools.solanaRaydiumCreateCpmmTool(), - solanaOpenbookCreateMarketTool: - vercelTools.solanaOpenbookCreateMarketTool(), - solanaCreateSingleSidedWhirlpoolTool: - vercelTools.solanaCreateSingleSidedWhirlpoolTool(), - solanaPythFetchPriceTool: vercelTools.solanaPythFetchPriceTool(), - solanaResolveDomainTool: vercelTools.solanaResolveDomainTool(), - solanaResolveAllDomainsTool: vercelTools.solanaResolveAllDomainsTool(), - solanaGetDomainTool: vercelTools.solanaGetDomainTool(), - solanaGetOwnedDomainsTool: vercelTools.solanaGetOwnedDomainsTool(), - solanaGetOwnedTldDomainsTool: vercelTools.solanaGetOwnedTldDomainsTool(), - solanaGetAllTldsTool: vercelTools.solanaGetAllTldsTool(), - solanaGetMainDomainTool: vercelTools.solanaGetMainDomainTool(), - solanaCreateGibworkTaskTool: vercelTools.solanaCreateGibworkTaskTool(), - }; + for (const key of actionKeys) { + const action = ACTIONS[key as keyof typeof ACTIONS]; + tools[key] = tool({ + // @ts-expect-error Value matches type however TS still shows error + id: action.name, + description: action.description, + parameters: action.schema, + execute: async (params) => + await executeAction(action, solanaAgentKit, params), + }); + } + + return tools; } diff --git a/test/agent_sdks/vercel_ai.ts b/test/agent_sdks/vercel_ai.ts index 09c5f60..8fd19c1 100644 --- a/test/agent_sdks/vercel_ai.ts +++ b/test/agent_sdks/vercel_ai.ts @@ -8,186 +8,191 @@ import { createOpenAI } from "@ai-sdk/openai"; dotenv.config(); function validateEnvironment(): void { - const missingVars: string[] = []; - const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY"]; + const missingVars: string[] = []; + const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY"]; - requiredVars.forEach((varName) => { - if (!process.env[varName]) { - missingVars.push(varName); - } - }); + 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); - } + 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(); async function runAutonomousMode(interval = 10) { - console.log("Starting autonomous mode..."); - const openai = createOpenAI({ - apiKey: process.env.OPENAI_API_KEY as string, - }); + console.log("Starting autonomous mode..."); + const openai = createOpenAI({ + apiKey: process.env.OPENAI_API_KEY as string, + }); - const solanaAgent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL, - process.env.OPENAI_API_KEY!, - ); + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); - const tools = createVercelAITools(solanaAgent); + const tools = createVercelAITools(solanaAgent); - 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."; + 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 response = streamText({ - prompt: thought, - tools, - model: openai("gpt-4o-mini"), - temperature: 0.7, - system: `You are a helpful agent that can interact onchain using the Solana Agent Kit. You are + const response = streamText({ + prompt: thought, + tools, + model: openai("gpt-4o-mini"), + temperature: 0.7, + system: `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.`, - maxSteps: 10, - }); + maxSteps: 10, + }); - for await (const textPart of response.textStream) { - process.stdout.write(textPart); - } - console.log(); + for await (const textPart of response.textStream) { + process.stdout.write(textPart); + } + console.log(); - await new Promise((resolve) => setTimeout(resolve, interval * 1000)); - } catch (error) { - if (error instanceof Error) { - console.error("Error:", error.message); - } - process.exit(1); - } - } + 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() { - console.log("Starting chat mode... Type 'exit' to end."); - const openai = createOpenAI({ - apiKey: process.env.OPENAI_API_KEY as string, - }); + console.log("Starting chat mode... Type 'exit' to end."); + const openai = createOpenAI({ + apiKey: process.env.OPENAI_API_KEY as string, + }); - const solanaAgent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL, - process.env.OPENAI_API_KEY!, - ); + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); - const tools = createVercelAITools(solanaAgent); + const tools = createVercelAITools(solanaAgent); + console.log(tools); - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - }); + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); - const question = (prompt: string): Promise => - new Promise((resolve) => rl.question(prompt, resolve)); + const question = (prompt: string): Promise => + new Promise((resolve) => rl.question(prompt, resolve)); - try { - while (true) { - const userInput = await question("\nPrompt: "); + try { + while (true) { + const userInput = await question("\nPrompt: "); - if (userInput.toLowerCase() === "exit") { - break; - } + if (userInput.toLowerCase() === "exit") { + break; + } - const response = streamText({ - prompt: userInput, - tools, - model: openai("gpt-4o-mini"), - temperature: 0.7, - system: `You are a helpful agent that can interact onchain using the Solana Agent Kit. You are + const response = streamText({ + prompt: userInput, + tools, + model: openai("gpt-4o-mini"), + temperature: 0.7, + system: `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.`, - maxSteps: 10, - }); + maxSteps: 10, + }); - for await (const textPart of response.textStream) { - process.stdout.write(textPart); - } - console.log(); - } - } catch (error) { - if (error instanceof Error) { - console.error("Error:", error.message); - } - process.exit(1); - } finally { - rl.close(); - } + for await (const textPart of response.textStream) { + process.stdout.write(textPart); + } + 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 rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); - const question = (prompt: string): Promise => - new Promise((resolve) => rl.question(prompt, resolve)); + 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"); + 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(); + const choice = (await question("\nChoose a mode (enter number or name): ")) + .toLowerCase() + .trim(); - rl.close(); + rl.close(); - if (choice === "1" || choice === "chat") { - return "chat"; - } else if (choice === "2" || choice === "auto") { - return "auto"; - } - console.log("Invalid choice. Please try again."); - } + 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 mode = await chooseMode(); + try { + console.log("Starting Agent..."); + const mode = await chooseMode(); - if (mode === "chat") { - await runChatMode(); - } else { - await runAutonomousMode(); - } - } catch (error) { - if (error instanceof Error) { - console.error("Error:", error.message); - } - process.exit(1); - } + if (mode === "chat") { + await runChatMode(); + } else { + await runAutonomousMode(); + } + } 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); - }); + main().catch((error) => { + console.error("Fatal error:", error); + process.exit(1); + }); } From e363439c80d876fd8e9a5d912afbafe180615537 Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Wed, 1 Jan 2025 05:12:23 +0100 Subject: [PATCH 61/94] chore: generate doc --- docs/assets/hierarchy.js | 2 +- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 12 ++++++------ docs/functions/createSolanaTools.html | 2 +- docs/functions/createVercelAITools.html | 2 +- docs/functions/executeAction.html | 4 ++-- docs/functions/findAction.html | 4 ++-- docs/functions/getActionExamples.html | 4 ++-- docs/index.html | 8 ++++++++ docs/interfaces/Action.html | 14 +++++++------- docs/interfaces/ActionExample.html | 4 ++-- docs/interfaces/CollectionDeployment.html | 4 ++-- docs/interfaces/CollectionOptions.html | 4 ++-- docs/interfaces/Config.html | 4 ++-- docs/interfaces/Creator.html | 4 ++-- docs/interfaces/FetchPriceResponse.html | 4 ++-- docs/interfaces/GibworkCreateTaskReponse.html | 4 ++-- docs/interfaces/JupiterTokenData.html | 4 ++-- docs/interfaces/LuloAccountDetailsResponse.html | 4 ++-- docs/interfaces/MintCollectionNFTResponse.html | 4 ++-- docs/interfaces/PumpFunTokenOptions.html | 4 ++-- docs/interfaces/PumpfunLaunchResponse.html | 4 ++-- docs/interfaces/PythFetchPriceResponse.html | 4 ++-- docs/modules.html | 2 +- docs/types/Handler.html | 2 +- docs/variables/actions.html | 2 +- 27 files changed, 61 insertions(+), 53 deletions(-) diff --git a/docs/assets/hierarchy.js b/docs/assets/hierarchy.js index fb85f0a..88636f0 100644 --- a/docs/assets/hierarchy.js +++ b/docs/assets/hierarchy.js @@ -1 +1 @@ -window.hierarchyData = "eJyrVirKzy8pVrKKjtVRKkpNy0lNLsnMzytWsqqurQUAmx4Kpg==" \ No newline at end of file +window.hierarchyData = "eJyrVirKzy8pVrKKjtVRKkpNy0lNLsnMzwMKVNfWAgCbHgqm" \ No newline at end of file diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index f44ac19..d12a9f9 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "eJyNlFFPwjAQx79Ln4kTFFTeiIhGUQnyZnwo5caadddlvSrE+N2NQGRj3cHLHna//+/Sy7Xv34JgRaIv3qyRKAdLQHrSJFoil5SIvlBGOgcuqtbPEsqMaIlU40L0253rn9a/aaBIW9wbNBIUsVTgom2pGu50e7Xw3UpmuQHGsSM41a01BjbwEHJj1xkgBY0h8DTxa/73dUesO4pXYqyXDZ6/EhsuQJItwultjYuPgFQyKbSCKbjcogvPvY5x0ns9/7JFumkPM+nSKTSrm2CuwaPPNUExsyngUJIMig8hTjj2xg6Ush5pCCS1cew4mnGuybNG2i/Gy2jG9mikuRYTn+Wxx7H0qBJWHySPqUceN+PkVj/Asdo1JScuYRjl5A8SFwZKl4PWObho9/sgeX5z1e52SmmpDk75KQst5wZctCtVDRflsNrs8/bhnFlrSprY4zYe1aCqsHdZEsIKlCc4fGD3sgrAiGKNi2bLvsoolkCVlzh4uBpUE378Ahp6RJM=" \ No newline at end of file +window.navigationData = "eJyNlMFSwjAQQP+lZ0YEBZUbA6IoAgMdL46HELY0Q0g67UZhHP/dUBjb0nTh0kP27dt0u92PHw9hi17Hm2vJFOuuQOGrQK/mRQxDe84lSxJI6sX4VYgbaaG1UEuv02je/9b+TV2OQqvMIBRCHDBuJYdQMbnZapeSH7dsE0kgHEeCUvW0lJDCfYik3m3s1Z1GF3iZeBLtn8kZ65GilSoQqwrPPkQmx8BQx+7sQ4xKHwDycBoLDjNIIntRd9/LGCV9EotvHa/T8uCzZD2DanUVTBV4MZGwAl+vQfUZMqf4FKKEIyN1l3NtFPYBmZAJ2Y5qnCryZg3ZYIwHPlmjkqZKTM0mCowaMaN4SOqd5Dn1wKi0ndToOzhSu8PwwiF0o5T8mamlhNzPgbvIio7HJ5nXD3eNVjO/jnr+cDKeZ9lfLBZsIfd76BAqGm7yyTyd58Pi9LWWuWbZtqffNKmXoKKwfVsSvkPMQXaHZ5QFjJDCFrhBON3ama4AEKLAHlVbsiihWAEW1rvz9UpQSfj5ByOPYJ4=" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 5751c5a..b1b505a 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; +window.searchData = "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"; \ No newline at end of file diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index 75d01d1..6e60d93 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,7 +1,7 @@ SolanaAgentKit | solana-agent-kit

    Class SolanaAgentKit

    Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, trading and more

    SolanaAgentKit

    -

    Constructors

    Constructors

    Properties

    config connection wallet @@ -56,8 +56,8 @@ Please use the new constructor with Config object instead:

    const agent = new SolanaAgentKit(privateKey, rpcUrl, { 
    OPENAI_API_KEY: 'your-key'
    });
    -
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    -
    connection: Connection

    Solana RPC connection

    -
    wallet: Keypair

    Wallet keypair for signing transactions

    -
    wallet_address: PublicKey

    Public key of the wallet

    -

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • quantity: number
      • side: string
      • price: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    +
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    +
    connection: Connection

    Solana RPC connection

    +
    wallet: Keypair

    Wallet keypair for signing transactions

    +
    wallet_address: PublicKey

    Public key of the wallet

    +

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • quantity: number
      • side: string
      • price: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index 58a1447..4dfd843 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaTradeTool
          | SolanaLimitOrderTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
      )[]

    +createSolanaTools | solana-agent-kit

    Function createSolanaTools

    diff --git a/docs/functions/createVercelAITools.html b/docs/functions/createVercelAITools.html index 1702ff1..9dcb266 100644 --- a/docs/functions/createVercelAITools.html +++ b/docs/functions/createVercelAITools.html @@ -1 +1 @@ -createVercelAITools | solana-agent-kit

    Function createVercelAITools

    • Parameters

      Returns CoreTool[]

    +createVercelAITools | solana-agent-kit

    Function createVercelAITools

    diff --git a/docs/functions/executeAction.html b/docs/functions/executeAction.html index 9770295..0e94c84 100644 --- a/docs/functions/executeAction.html +++ b/docs/functions/executeAction.html @@ -1,2 +1,2 @@ -executeAction | solana-agent-kit

    Function executeAction

    +executeAction | solana-agent-kit

    Function executeAction

    • Execute an action with the given input

      +

      Parameters

      Returns Promise<Record<string, any>>

    diff --git a/docs/functions/findAction.html b/docs/functions/findAction.html index 956c00b..08fcdf2 100644 --- a/docs/functions/findAction.html +++ b/docs/functions/findAction.html @@ -1,2 +1,2 @@ -findAction | solana-agent-kit

    Function findAction

    +findAction | solana-agent-kit

    Function findAction

    • Find an action by its name or one of its similes

      +

      Parameters

      • query: string

      Returns Action | undefined

    diff --git a/docs/functions/getActionExamples.html b/docs/functions/getActionExamples.html index 66c7fcc..e93920e 100644 --- a/docs/functions/getActionExamples.html +++ b/docs/functions/getActionExamples.html @@ -1,2 +1,2 @@ -getActionExamples | solana-agent-kit

    Function getActionExamples

    +getActionExamples | solana-agent-kit

    Function getActionExamples

    • Get examples for an action

      +

      Parameters

      • action: Action

      Returns string

    diff --git a/docs/index.html b/docs/index.html index 97d0e78..d7f32e7 100644 --- a/docs/index.html +++ b/docs/index.html @@ -81,6 +81,14 @@
  • +

    Vercel AI SDK Integration

    +
      +
    • Vercel AI SDK for AI agent integration
    • +
    • Framework agnostic support
    • +
    • Quick and easy toolkit setup
    • +
    +
  • +
  • Autonomous Modes

    • Interactive chat mode for guided operations
    • diff --git a/docs/interfaces/Action.html b/docs/interfaces/Action.html index 3674de1..5b3d7d6 100644 --- a/docs/interfaces/Action.html +++ b/docs/interfaces/Action.html @@ -1,16 +1,16 @@ Action | solana-agent-kit

      Interface Action

      Main Action interface inspired by ELIZA This interface makes it easier to implement actions across different frameworks

      -
      interface Action {
          description: string;
          examples: ActionExample[][];
          handler: Handler;
          name: string;
          schema: ZodType;
          similes: string[];
      }

      Properties

      interface Action {
          description: string;
          examples: ActionExample[][];
          handler: Handler;
          name: string;
          schema: ZodType;
          similes: string[];
      }

      Properties

      description: string

      Detailed description of what the action does

      -
      examples: ActionExample[][]

      Array of example inputs and outputs for the action +

      examples: ActionExample[][]

      Array of example inputs and outputs for the action Each inner array represents a group of related examples

      -
      handler: Handler

      Function that executes the action

      -
      name: string

      Unique name of the action

      -
      schema: ZodType

      Zod schema for input validation

      -
      similes: string[]

      Alternative names/phrases that can trigger this action

      -
      +
      handler: Handler

      Function that executes the action

      +
      name: string

      Unique name of the action

      +
      schema: ZodType

      Zod schema for input validation

      +
      similes: string[]

      Alternative names/phrases that can trigger this action

      +
      diff --git a/docs/interfaces/ActionExample.html b/docs/interfaces/ActionExample.html index cce4440..2bdac86 100644 --- a/docs/interfaces/ActionExample.html +++ b/docs/interfaces/ActionExample.html @@ -1,5 +1,5 @@ ActionExample | solana-agent-kit

      Interface ActionExample

      Example of an action with input and output

      -
      interface ActionExample {
          explanation: string;
          input: Record<string, any>;
          output: Record<string, any>;
      }

      Properties

      interface ActionExample {
          explanation: string;
          input: Record<string, any>;
          output: Record<string, any>;
      }

      Properties

      explanation: string
      input: Record<string, any>
      output: Record<string, any>
      +

      Properties

      explanation: string
      input: Record<string, any>
      output: Record<string, any>
      diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index dde0571..e45516a 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

      Interface CollectionDeployment

      interface CollectionDeployment {
          collectionAddress: PublicKey;
          signature: Uint8Array;
      }

      Properties

      collectionAddress +CollectionDeployment | solana-agent-kit

      Interface CollectionDeployment

      interface CollectionDeployment {
          collectionAddress: PublicKey;
          signature: Uint8Array;
      }

      Properties

      collectionAddress: PublicKey
      signature: Uint8Array
      +

      Properties

      collectionAddress: PublicKey
      signature: Uint8Array
      diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index 175ff9e..454069c 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

      Interface CollectionOptions

      interface CollectionOptions {
          creators?: Creator[];
          name: string;
          royaltyBasisPoints?: number;
          uri: string;
      }

      Properties

      creators? +CollectionOptions | solana-agent-kit

      Interface CollectionOptions

      interface CollectionOptions {
          creators?: Creator[];
          name: string;
          royaltyBasisPoints?: number;
          uri: string;
      }

      Properties

      creators?: Creator[]
      name: string
      royaltyBasisPoints?: number
      uri: string
      +

      Properties

      creators?: Creator[]
      name: string
      royaltyBasisPoints?: number
      uri: string
      diff --git a/docs/interfaces/Config.html b/docs/interfaces/Config.html index 193bb10..58e803e 100644 --- a/docs/interfaces/Config.html +++ b/docs/interfaces/Config.html @@ -1,4 +1,4 @@ -Config | solana-agent-kit

      Interface Config

      interface Config {
          JUPITER_FEE_BPS?: number;
          JUPITER_REFERRAL_ACCOUNT?: string;
          OPENAI_API_KEY?: string;
      }

      Properties

      JUPITER_FEE_BPS? +Config | solana-agent-kit

      Interface Config

      interface Config {
          JUPITER_FEE_BPS?: number;
          JUPITER_REFERRAL_ACCOUNT?: string;
          OPENAI_API_KEY?: string;
      }

      Properties

      JUPITER_FEE_BPS?: number
      JUPITER_REFERRAL_ACCOUNT?: string
      OPENAI_API_KEY?: string
      +

      Properties

      JUPITER_FEE_BPS?: number
      JUPITER_REFERRAL_ACCOUNT?: string
      OPENAI_API_KEY?: string
      diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index a3fb74b..f13dc02 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

      Interface Creator

      interface Creator {
          address: string;
          percentage: number;
      }

      Properties

      address +Creator | solana-agent-kit

      Interface Creator

      interface Creator {
          address: string;
          percentage: number;
      }

      Properties

      Properties

      address: string
      percentage: number
      +

      Properties

      address: string
      percentage: number
      diff --git a/docs/interfaces/FetchPriceResponse.html b/docs/interfaces/FetchPriceResponse.html index 6553e66..e2e4841 100644 --- a/docs/interfaces/FetchPriceResponse.html +++ b/docs/interfaces/FetchPriceResponse.html @@ -1,6 +1,6 @@ -FetchPriceResponse | solana-agent-kit

      Interface FetchPriceResponse

      interface FetchPriceResponse {
          code?: string;
          message?: string;
          priceInUSDC?: string;
          status: "success" | "error";
          tokenId?: string;
      }

      Properties

      code? +FetchPriceResponse | solana-agent-kit

      Interface FetchPriceResponse

      interface FetchPriceResponse {
          code?: string;
          message?: string;
          priceInUSDC?: string;
          status: "success" | "error";
          tokenId?: string;
      }

      Properties

      code?: string
      message?: string
      priceInUSDC?: string
      status: "success" | "error"
      tokenId?: string
      +

      Properties

      code?: string
      message?: string
      priceInUSDC?: string
      status: "success" | "error"
      tokenId?: string
      diff --git a/docs/interfaces/GibworkCreateTaskReponse.html b/docs/interfaces/GibworkCreateTaskReponse.html index 062d006..9951c91 100644 --- a/docs/interfaces/GibworkCreateTaskReponse.html +++ b/docs/interfaces/GibworkCreateTaskReponse.html @@ -1,4 +1,4 @@ -GibworkCreateTaskReponse | solana-agent-kit

      Interface GibworkCreateTaskReponse

      interface GibworkCreateTaskReponse {
          signature?: string;
          status: "success" | "error";
          taskId?: string;
      }

      Properties

      signature? +GibworkCreateTaskReponse | solana-agent-kit

      Interface GibworkCreateTaskReponse

      interface GibworkCreateTaskReponse {
          signature?: string;
          status: "success" | "error";
          taskId?: string;
      }

      Properties

      signature?: string
      status: "success" | "error"
      taskId?: string
      +

      Properties

      signature?: string
      status: "success" | "error"
      taskId?: string
      diff --git a/docs/interfaces/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index bdf6d93..92b63c9 100644 --- a/docs/interfaces/JupiterTokenData.html +++ b/docs/interfaces/JupiterTokenData.html @@ -1,4 +1,4 @@ -JupiterTokenData | solana-agent-kit

      Interface JupiterTokenData

      interface JupiterTokenData {
          address: string;
          daily_volume: number;
          decimals: number;
          extensions: { coingeckoId?: string };
          freeze_authority: null | string;
          logoURI: string;
          mint_authority: null | string;
          name: string;
          permanent_delegate: null | string;
          symbol: string;
          tags: string[];
      }

      Properties

      address +JupiterTokenData | solana-agent-kit

      Interface JupiterTokenData

      interface JupiterTokenData {
          address: string;
          daily_volume: number;
          decimals: number;
          extensions: { coingeckoId?: string };
          freeze_authority: null | string;
          logoURI: string;
          mint_authority: null | string;
          name: string;
          permanent_delegate: null | string;
          symbol: string;
          tags: string[];
      }

      Properties

      address: string
      daily_volume: number
      decimals: number
      extensions: { coingeckoId?: string }
      freeze_authority: null | string
      logoURI: string
      mint_authority: null | string
      name: string
      permanent_delegate: null | string
      symbol: string
      tags: string[]
      +

      Properties

      address: string
      daily_volume: number
      decimals: number
      extensions: { coingeckoId?: string }
      freeze_authority: null | string
      logoURI: string
      mint_authority: null | string
      name: string
      permanent_delegate: null | string
      symbol: string
      tags: string[]
      diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index 2f6c104..34cd985 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

      Interface LuloAccountDetailsResponse

      Lulo Account Details response format

      -
      interface LuloAccountDetailsResponse {
          interestEarned: number;
          realtimeApy: number;
          settings: {
              allowedProtocols: null | string;
              homebase: null | string;
              minimumRate: string;
              owner: string;
          };
          totalValue: number;
      }

      Properties

      interface LuloAccountDetailsResponse {
          interestEarned: number;
          realtimeApy: number;
          settings: {
              allowedProtocols: null | string;
              homebase: null | string;
              minimumRate: string;
              owner: string;
          };
          totalValue: number;
      }

      Properties

      interestEarned: number
      realtimeApy: number
      settings: {
          allowedProtocols: null | string;
          homebase: null | string;
          minimumRate: string;
          owner: string;
      }
      totalValue: number
      +

      Properties

      interestEarned: number
      realtimeApy: number
      settings: {
          allowedProtocols: null | string;
          homebase: null | string;
          minimumRate: string;
          owner: string;
      }
      totalValue: number
      diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index 59e93db..8c5b19f 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

      Interface MintCollectionNFTResponse

      interface MintCollectionNFTResponse {
          metadata: PublicKey;
          mint: PublicKey;
      }

      Properties

      metadata +MintCollectionNFTResponse | solana-agent-kit

      Interface MintCollectionNFTResponse

      interface MintCollectionNFTResponse {
          metadata: PublicKey;
          mint: PublicKey;
      }

      Properties

      Properties

      metadata: PublicKey
      mint: PublicKey
      +

      Properties

      metadata: PublicKey
      mint: PublicKey
      diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html index 739e7bd..6d9ca1c 100644 --- a/docs/interfaces/PumpFunTokenOptions.html +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -1,7 +1,7 @@ -PumpFunTokenOptions | solana-agent-kit

      Interface PumpFunTokenOptions

      interface PumpFunTokenOptions {
          initialLiquiditySOL?: number;
          priorityFee?: number;
          slippageBps?: number;
          telegram?: string;
          twitter?: string;
          website?: string;
      }

      Properties

      initialLiquiditySOL? +PumpFunTokenOptions | solana-agent-kit

      Interface PumpFunTokenOptions

      interface PumpFunTokenOptions {
          initialLiquiditySOL?: number;
          priorityFee?: number;
          slippageBps?: number;
          telegram?: string;
          twitter?: string;
          website?: string;
      }

      Properties

      initialLiquiditySOL?: number
      priorityFee?: number
      slippageBps?: number
      telegram?: string
      twitter?: string
      website?: string
      +

      Properties

      initialLiquiditySOL?: number
      priorityFee?: number
      slippageBps?: number
      telegram?: string
      twitter?: string
      website?: string
      diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html index 26b3f0c..8e1fe85 100644 --- a/docs/interfaces/PumpfunLaunchResponse.html +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -1,5 +1,5 @@ -PumpfunLaunchResponse | solana-agent-kit

      Interface PumpfunLaunchResponse

      interface PumpfunLaunchResponse {
          error?: string;
          metadataUri?: string;
          mint: string;
          signature: string;
      }

      Properties

      error? +PumpfunLaunchResponse | solana-agent-kit

      Interface PumpfunLaunchResponse

      interface PumpfunLaunchResponse {
          error?: string;
          metadataUri?: string;
          mint: string;
          signature: string;
      }

      Properties

      error?: string
      metadataUri?: string
      mint: string
      signature: string
      +

      Properties

      error?: string
      metadataUri?: string
      mint: string
      signature: string
      diff --git a/docs/interfaces/PythFetchPriceResponse.html b/docs/interfaces/PythFetchPriceResponse.html index 825c164..35e693b 100644 --- a/docs/interfaces/PythFetchPriceResponse.html +++ b/docs/interfaces/PythFetchPriceResponse.html @@ -1,6 +1,6 @@ -PythFetchPriceResponse | solana-agent-kit

      Interface PythFetchPriceResponse

      interface PythFetchPriceResponse {
          code?: string;
          message?: string;
          price?: string;
          priceFeedID: string;
          status: "success" | "error";
      }

      Properties

      code? +PythFetchPriceResponse | solana-agent-kit

      Interface PythFetchPriceResponse

      interface PythFetchPriceResponse {
          code?: string;
          message?: string;
          price?: string;
          priceFeedID: string;
          status: "success" | "error";
      }

      Properties

      code?: string
      message?: string
      price?: string
      priceFeedID: string
      status: "success" | "error"
      +

      Properties

      code?: string
      message?: string
      price?: string
      priceFeedID: string
      status: "success" | "error"
      diff --git a/docs/modules.html b/docs/modules.html index 37d8574..c08dc3f 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1 +1 @@ -solana-agent-kit
      +solana-agent-kit
      diff --git a/docs/types/Handler.html b/docs/types/Handler.html index 9844f48..f3c78b2 100644 --- a/docs/types/Handler.html +++ b/docs/types/Handler.html @@ -1,2 +1,2 @@ Handler | solana-agent-kit

      Type Alias Handler

      Handler: (
          agent: SolanaAgentKit,
          input: Record<string, any>,
      ) => Promise<Record<string, any>>

      Handler function type for executing the action

      -

      Type declaration

        • (
              agent: SolanaAgentKit,
              input: Record<string, any>,
          ): Promise<Record<string, any>>
        • Parameters

          Returns Promise<Record<string, any>>

      +

      Type declaration

        • (
              agent: SolanaAgentKit,
              input: Record<string, any>,
          ): Promise<Record<string, any>>
        • Parameters

          Returns Promise<Record<string, any>>

      diff --git a/docs/variables/actions.html b/docs/variables/actions.html index 712f2a5..863c0af 100644 --- a/docs/variables/actions.html +++ b/docs/variables/actions.html @@ -1 +1 @@ -actions | solana-agent-kit

      Variable actionsConst

      actions: Action[] = ...
      +ACTIONS | solana-agent-kit

      Variable ACTIONSConst

      ACTIONS: {
          BALANCE_ACTION: Action;
          CREATE_GIBWORK_TASK_ACTION: Action;
          CREATE_IMAGE_ACTION: Action;
          CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
          DEPLOY_COLLECTION_ACTION: Action;
          DEPLOY_TOKEN_ACTION: Action;
          FETCH_PRICE_ACTION: Action;
          GET_ALL_DOMAINS_TLDS_ACTION: Action;
          GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
          GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
          GET_OWNED_ALL_DOMAINS_ACTION: Action;
          GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
          GET_PRIMARY_DOMAIN_ACTION: Action;
          GET_TOKEN_DATA_ACTION: Action;
          GET_TPS_ACTION: Action;
          LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
          LEND_ASSET_ACTION: Action;
          MINT_NFT_ACTION: Action;
          PYTH_FETCH_PRICE_ACTION: Action;
          RAYDIUM_CREATE_AMM_V4_ACTION: Action;
          RAYDIUM_CREATE_CPMM_ACTION: Action;
          REGISTER_DOMAIN_ACTION: Action;
          REQUEST_FUNDS_ACTION: Action;
          RESOLVE_DOMAIN_ACTION: Action;
          RESOLVE_SOL_DOMAIN_ACTION: Action;
          STAKE_WITH_JUP_ACTION: Action;
          TRADE_ACTION: Action;
          TRANSFER_ACTION: Action;
          WALLET_ADDRESS_ACTION: Action;
      } = ...

      Type declaration

      • BALANCE_ACTION: Action
      • CREATE_GIBWORK_TASK_ACTION: Action
      • CREATE_IMAGE_ACTION: Action
      • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
      • DEPLOY_COLLECTION_ACTION: Action
      • DEPLOY_TOKEN_ACTION: Action
      • FETCH_PRICE_ACTION: Action
      • GET_ALL_DOMAINS_TLDS_ACTION: Action
      • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
      • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
      • GET_OWNED_ALL_DOMAINS_ACTION: Action
      • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
      • GET_PRIMARY_DOMAIN_ACTION: Action
      • GET_TOKEN_DATA_ACTION: Action
      • GET_TPS_ACTION: Action
      • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
      • LEND_ASSET_ACTION: Action
      • MINT_NFT_ACTION: Action
      • PYTH_FETCH_PRICE_ACTION: Action
      • RAYDIUM_CREATE_AMM_V4_ACTION: Action
      • RAYDIUM_CREATE_CPMM_ACTION: Action
      • REGISTER_DOMAIN_ACTION: Action
      • REQUEST_FUNDS_ACTION: Action
      • RESOLVE_DOMAIN_ACTION: Action
      • RESOLVE_SOL_DOMAIN_ACTION: Action
      • STAKE_WITH_JUP_ACTION: Action
      • TRADE_ACTION: Action
      • TRANSFER_ACTION: Action
      • WALLET_ADDRESS_ACTION: Action
      From 376eaadffe3e0e13037594a9900250e98eade07d Mon Sep 17 00:00:00 2001 From: simplysabir Date: Wed, 1 Jan 2025 17:17:24 +0530 Subject: [PATCH 62/94] fix: latest pull --- src/actions/createOrcaSingleSidedWhirlpool.ts | 2 +- src/actions/index.ts | 57 ++++++++--------- src/agent/index.ts | 28 +++++++-- src/langchain/index.ts | 63 +++++++++++++++++++ src/tools/index.ts | 3 + src/tools/rugcheck.ts | 53 ++++++++++++++++ src/types/index.ts | 12 ++++ test/index.ts | 2 +- 8 files changed, 184 insertions(+), 36 deletions(-) create mode 100644 src/tools/rugcheck.ts diff --git a/src/actions/createOrcaSingleSidedWhirlpool.ts b/src/actions/createOrcaSingleSidedWhirlpool.ts index affc445..3a1fb52 100644 --- a/src/actions/createOrcaSingleSidedWhirlpool.ts +++ b/src/actions/createOrcaSingleSidedWhirlpool.ts @@ -87,7 +87,7 @@ const createOrcaSingleSidedWhirlpoolAction: Action = { const otherTokenMint = new PublicKey(input.otherTokenMint); const initialPrice = new Decimal(input.initialPrice); const maxPrice = new Decimal(input.maxPrice); - const feeTier = input.feeTier + const feeTier = input.feeTier; // Create the whirlpool const signature = await orcaCreateSingleSidedLiquidityPool( diff --git a/src/actions/index.ts b/src/actions/index.ts index b66c89e..1ccdb64 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -28,34 +28,35 @@ import createOrcaSingleSidedWhirlpoolAction from "./createOrcaSingleSidedWhirlpo import launchPumpfunTokenAction from "./launchPumpfunToken"; export const ACTIONS = { - "DEPLOY_TOKEN_ACTION" : deployTokenAction, - "BALANCE_ACTION" : balanceAction, - "TRANSFER_ACTION" : transferAction, - "DEPLOY_COLLECTION_ACTION" : deployCollectionAction, - "MINT_NFT_ACTION" : mintNFTAction, - "TRADE_ACTION" : tradeAction, - "REQUEST_FUNDS_ACTION" : requestFundsAction, - "RESOLVE_DOMAIN_ACTION" : resolveDomainAction, - "GET_TOKEN_DATA_ACTION" : getTokenDataAction, - "GET_TPS_ACTION" : getTPSAction, - "FETCH_PRICE_ACTION" : fetchPriceAction, - "STAKE_WITH_JUP_ACTION" : stakeWithJupAction, - "REGISTER_DOMAIN_ACTION" : registerDomainAction, - "LEND_ASSET_ACTION" : lendAssetAction, - "CREATE_GIBWORK_TASK_ACTION" : createGibworkTaskAction, - "RESOLVE_SOL_DOMAIN_ACTION" : resolveSolDomainAction, - "PYTH_FETCH_PRICE_ACTION" : pythFetchPriceAction, - "GET_OWNED_DOMAINS_FOR_TLD_ACTION" : getOwnedDomainsForTLDAction, - "GET_PRIMARY_DOMAIN_ACTION" : getPrimaryDomainAction, - "GET_ALL_DOMAINS_TLDS_ACTION" : getAllDomainsTLDsAction, - "GET_OWNED_ALL_DOMAINS_ACTION" : getOwnedAllDomainsAction, - "CREATE_IMAGE_ACTION" : createImageAction, - "GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION" : getMainAllDomainsDomainAction, - "GET_ALL_REGISTERED_ALL_DOMAINS_ACTION" : getAllRegisteredAllDomainsAction, - "RAYDIUM_CREATE_CPMM_ACTION" : raydiumCreateCpmmAction, - "RAYDIUM_CREATE_AMM_V4_ACTION" : raydiumCreateAmmV4Action, - "CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION" : createOrcaSingleSidedWhirlpoolAction, - "LAUNCH_PUMPFUN_TOKEN_ACTION" : launchPumpfunTokenAction, + DEPLOY_TOKEN_ACTION: deployTokenAction, + BALANCE_ACTION: balanceAction, + TRANSFER_ACTION: transferAction, + DEPLOY_COLLECTION_ACTION: deployCollectionAction, + MINT_NFT_ACTION: mintNFTAction, + TRADE_ACTION: tradeAction, + REQUEST_FUNDS_ACTION: requestFundsAction, + RESOLVE_DOMAIN_ACTION: resolveDomainAction, + GET_TOKEN_DATA_ACTION: getTokenDataAction, + GET_TPS_ACTION: getTPSAction, + FETCH_PRICE_ACTION: fetchPriceAction, + STAKE_WITH_JUP_ACTION: stakeWithJupAction, + REGISTER_DOMAIN_ACTION: registerDomainAction, + LEND_ASSET_ACTION: lendAssetAction, + CREATE_GIBWORK_TASK_ACTION: createGibworkTaskAction, + RESOLVE_SOL_DOMAIN_ACTION: resolveSolDomainAction, + PYTH_FETCH_PRICE_ACTION: pythFetchPriceAction, + GET_OWNED_DOMAINS_FOR_TLD_ACTION: getOwnedDomainsForTLDAction, + GET_PRIMARY_DOMAIN_ACTION: getPrimaryDomainAction, + GET_ALL_DOMAINS_TLDS_ACTION: getAllDomainsTLDsAction, + GET_OWNED_ALL_DOMAINS_ACTION: getOwnedAllDomainsAction, + CREATE_IMAGE_ACTION: createImageAction, + GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: getMainAllDomainsDomainAction, + GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: getAllRegisteredAllDomainsAction, + RAYDIUM_CREATE_CPMM_ACTION: raydiumCreateCpmmAction, + RAYDIUM_CREATE_AMM_V4_ACTION: raydiumCreateAmmV4Action, + CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: + createOrcaSingleSidedWhirlpoolAction, + LAUNCH_PUMPFUN_TOKEN_ACTION: launchPumpfunTokenAction, }; export type { Action, ActionExample, Handler } from "../types/action"; diff --git a/src/agent/index.ts b/src/agent/index.ts index 4acf694..31771f3 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -2,7 +2,7 @@ import { Connection, Keypair, PublicKey } from "@solana/web3.js"; import bs58 from "bs58"; import Decimal from "decimal.js"; import { DEFAULT_OPTIONS } from "../constants"; -import { Config } from "../types"; +import { Config, TokenCheck } from "../types"; import { deploy_collection, deploy_token, @@ -50,6 +50,8 @@ import { create_TipLink, listNFTForSale, cancelListing, + fetchTokenReportSummary, + fetchTokenDetailedReport, } from "../tools"; import { @@ -83,24 +85,30 @@ export class SolanaAgentKit { * @deprecated Using openai_api_key directly in constructor is deprecated. * Please use the new constructor with Config object instead: * @example - * const agent = new SolanaAgentKit(privateKey, rpcUrl, { + * const agent = new SolanaAgentKit(privateKey, rpcUrl, { * OPENAI_API_KEY: 'your-key' * }); */ - constructor(private_key: string, rpc_url: string, openai_api_key: string | null); + constructor( + private_key: string, + rpc_url: string, + openai_api_key: string | null, + ); constructor(private_key: string, rpc_url: string, config: Config); constructor( private_key: string, rpc_url: string, configOrKey: Config | string | null, ) { - this.connection = new Connection(rpc_url || "https://api.mainnet-beta.solana.com"); + this.connection = new Connection( + rpc_url || "https://api.mainnet-beta.solana.com", + ); this.wallet = Keypair.fromSecretKey(bs58.decode(private_key)); this.wallet_address = this.wallet.publicKey; // Handle both old and new patterns - if (typeof configOrKey === 'string' || configOrKey === null) { - this.config = { OPENAI_API_KEY: configOrKey || '' }; + if (typeof configOrKey === "string" || configOrKey === null) { + this.config = { OPENAI_API_KEY: configOrKey || "" }; } else { this.config = configOrKey; } @@ -467,4 +475,12 @@ export class SolanaAgentKit { async tensorCancelListing(nftMint: PublicKey): Promise { return cancelListing(this, nftMint); } + + async fetchTokenReportSummary(mint: string): Promise { + return fetchTokenReportSummary(mint); + } + + async fetchTokenDetailedReport(mint: string): Promise { + return fetchTokenDetailedReport(mint); + } } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 4605fd3..a6e1c51 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1825,6 +1825,67 @@ export class SolanaCancelNFTListingTool extends Tool { } } +export class SolanaFetchTokenReportSummaryTool extends Tool { + name = "solana_fetch_token_report_summary"; + description = `Fetches a summary report for a specific token from RugCheck. + Inputs: + - mint: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" (required).`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const mint = input.trim(); + const report = await this.solanaKit.fetchTokenReportSummary(mint); + + return JSON.stringify({ + status: "success", + message: "Token report summary fetched successfully", + report, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "FETCH_TOKEN_REPORT_SUMMARY_ERROR", + }); + } + } +} + +export class SolanaFetchTokenDetailedReportTool extends Tool { + name = "solana_fetch_token_detailed_report"; + description = `Fetches a detailed report for a specific token from RugCheck. + Inputs: + - mint: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" (required).`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const mint = input.trim(); + const detailedReport = + await this.solanaKit.fetchTokenDetailedReport(mint); + + return JSON.stringify({ + status: "success", + message: "Detailed token report fetched successfully", + report: detailedReport, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "FETCH_TOKEN_DETAILED_REPORT_ERROR", + }); + } + } +} + export function createSolanaTools(solanaKit: SolanaAgentKit) { return [ new SolanaBalanceTool(solanaKit), @@ -1873,5 +1934,7 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaTipLinkTool(solanaKit), new SolanaListNFTForSaleTool(solanaKit), new SolanaCancelNFTListingTool(solanaKit), + new SolanaFetchTokenReportSummaryTool(solanaKit), + new SolanaFetchTokenDetailedReportTool(solanaKit), ]; } diff --git a/src/tools/index.ts b/src/tools/index.ts index b9f7542..c0a5e7e 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -1,3 +1,5 @@ +import exp from "constants"; + export * from "./request_faucet_funds"; export * from "./deploy_token"; export * from "./deploy_collection"; @@ -52,3 +54,4 @@ export * from "./rock_paper_scissor"; export * from "./create_tiplinks"; export * from "./tensor_trade"; +export * from "./rugcheck"; diff --git a/src/tools/rugcheck.ts b/src/tools/rugcheck.ts new file mode 100644 index 0000000..11d533d --- /dev/null +++ b/src/tools/rugcheck.ts @@ -0,0 +1,53 @@ +import { TokenCheck } from "../types"; + +const BASE_URL = "https://api.rugcheck.xyz/v1"; + +/** + * Fetches a summary report for a specific token. + * @async + * @param {string} mint - The mint address of the token. + * @returns {Promise} The token summary report. + * @throws {Error} If the API call fails. + */ +export async function fetchTokenReportSummary( + mint: string, +): Promise { + try { + const response = await fetch(`${BASE_URL}/tokens/${mint}/report/summary`); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return await response.json(); + } catch (error: any) { + console.error( + `Error fetching report summary for token ${mint}:`, + error.message, + ); + throw new Error(`Failed to fetch report summary for token ${mint}.`); + } +} + +/** + * Fetches a detailed report for a specific token. + * @async + * @param {string} mint - The mint address of the token. + * @returns {Promise} The detailed token report. + * @throws {Error} If the API call fails. + */ +export async function fetchTokenDetailedReport( + mint: string, +): Promise { + try { + const response = await fetch(`${BASE_URL}/tokens/${mint}/report`); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return await response.json(); + } catch (error: any) { + console.error( + `Error fetching detailed report for token ${mint}:`, + error.message, + ); + throw new Error(`Failed to fetch detailed report for token ${mint}.`); + } +} diff --git a/src/types/index.ts b/src/types/index.ts index 6d31949..1dac764 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -153,3 +153,15 @@ export interface Action { */ handler: Handler; } + +export interface TokenCheck { + tokenProgram: string; + tokenType: string; + risks: Array<{ + name: string; + level: string; + description: string; + score: number; + }>; + score: number; +} diff --git a/test/index.ts b/test/index.ts index 2a3312b..00f9976 100644 --- a/test/index.ts +++ b/test/index.ts @@ -1,4 +1,4 @@ -import { SolanaAgentKit , ACTIONS} from "../src"; +import { SolanaAgentKit, ACTIONS } from "../src"; import { createSolanaTools } from "../src/langchain"; import { HumanMessage } from "@langchain/core/messages"; import { MemorySaver } from "@langchain/langgraph"; From e8f8e453e5ad3aa06852391d4981a627aa6ccf16 Mon Sep 17 00:00:00 2001 From: DonDuala Date: Wed, 1 Jan 2025 18:35:14 -0400 Subject: [PATCH 63/94] Add batch order from Manifest --- src/agent/index.ts | 9 ++ src/langchain/index.ts | 97 +++++++++++++++++++++- src/tools/batch_order.ts | 172 +++++++++++++++++++++++++++++++++++++++ src/tools/index.ts | 1 + 4 files changed, 278 insertions(+), 1 deletion(-) create mode 100644 src/tools/batch_order.ts diff --git a/src/agent/index.ts b/src/agent/index.ts index 4acf694..d0b017a 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -23,6 +23,7 @@ import { request_faucet_funds, trade, limitOrder, + batchOrder, cancelAllOrders, withdrawAll, transfer, @@ -50,6 +51,7 @@ import { create_TipLink, listNFTForSale, cancelListing, + OrderParams, } from "../tools"; import { @@ -184,6 +186,13 @@ export class SolanaAgentKit { return limitOrder(this, marketId, quantity, side, price); } + async batchOrder( + marketId: PublicKey, + orders: OrderParams[], + ): Promise { + return batchOrder(this, marketId, orders); + } + async cancelAllOrders(marketId: PublicKey): Promise { return cancelAllOrders(this, marketId); } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 4605fd3..4c50cc7 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -8,7 +8,7 @@ import { } from "../index"; import { create_image } from "../tools/create_image"; import { BN } from "@coral-xyz/anchor"; -import { FEE_TIERS } from "../tools"; +import { FEE_TIERS, generateOrdersfromPattern, OrderParams } from "../tools"; export class SolanaBalanceTool extends Tool { name = "solana_balance"; @@ -310,6 +310,8 @@ export class SolanaLimitOrderTool extends Tool { name = "solana_limit_order"; description = `This tool can be used to place limit orders using Manifest. + Do not allow users to place multiple orders with this instruction, use solana_batch_order instead. + Inputs ( input is a JSON string ): marketId: PublicKey, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required) quantity: number, eg 1 or 0.01 (required) @@ -350,6 +352,98 @@ export class SolanaLimitOrderTool extends Tool { } } +export class SolanaBatchOrderTool extends Tool { + name = "solana_batch_order"; + description = `Places multiple limit orders in one transaction using Manifest. Submit orders either as a list or pattern: + + 1. List format: + { + "marketId": "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ", + "orders": [ + { "quantity": 1, "side": "Buy", "price": 200 }, + { "quantity": 0.5, "side": "Sell", "price": 205 } + ] + } + + 2. Pattern format: + { + "marketId": "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ", + "pattern": { + "side": "Buy", + "totalQuantity": 100, + "priceRange": { "max": 1.0 }, + "spacing": { "type": "percentage", "value": 1 }, + "numberOfOrders": 5 + } + } + + Examples: + - "Place 5 buy orders totaling 100 tokens, 1% apart below $1" + - "Create 3 sell orders of 10 tokens each between $50-$55" + - "Place buy orders worth 50 tokens, $0.10 spacing from $0.80" + + Important: All orders must be in one transaction. Combine buy and sell orders into a single pattern or list. Never break the orders down to individual buy or sell orders.`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + let ordersToPlace: OrderParams[] = []; + + if (!parsedInput.marketId) { + throw new Error("Market ID is required"); + } + + if (parsedInput.pattern) { + ordersToPlace = generateOrdersfromPattern(parsedInput.pattern); + } else if (Array.isArray(parsedInput.orders)) { + ordersToPlace = parsedInput.orders; + } else { + throw new Error("Either pattern or orders array is required"); + } + + if (ordersToPlace.length === 0) { + throw new Error("No orders generated or provided"); + } + + ordersToPlace.forEach((order: OrderParams, index: number) => { + if (!order.quantity || !order.side || !order.price) { + throw new Error( + `Invalid order at index ${index}: quantity, side, and price are required`, + ); + } + if (order.side !== "Buy" && order.side !== "Sell") { + throw new Error( + `Invalid side at index ${index}: must be "Buy" or "Sell"`, + ); + } + }); + + const tx = await this.solanaKit.batchOrder( + new PublicKey(parsedInput.marketId), + parsedInput.orders, + ); + + return JSON.stringify({ + status: "success", + message: "Batch order executed successfully", + transaction: tx, + marketId: parsedInput.marketId, + orders: parsedInput.orders, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + export class SolanaCancelAllOrdersTool extends Tool { name = "solana_cancel_all_orders"; description = `This tool can be used to cancel all orders from a Manifest market. @@ -1853,6 +1947,7 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaOpenbookCreateMarket(solanaKit), new SolanaManifestCreateMarket(solanaKit), new SolanaLimitOrderTool(solanaKit), + new SolanaBatchOrderTool(solanaKit), new SolanaCancelAllOrdersTool(solanaKit), new SolanaWithdrawAllTool(solanaKit), new SolanaClosePosition(solanaKit), diff --git a/src/tools/batch_order.ts b/src/tools/batch_order.ts new file mode 100644 index 0000000..f788ba4 --- /dev/null +++ b/src/tools/batch_order.ts @@ -0,0 +1,172 @@ +import { + PublicKey, + Transaction, + sendAndConfirmTransaction, + TransactionInstruction, +} from "@solana/web3.js"; +import { SolanaAgentKit } from "../index"; +import { + ManifestClient, + WrapperPlaceOrderParamsExternal, +} from "@cks-systems/manifest-sdk"; +import { OrderType } from "@cks-systems/manifest-sdk/client/ts/src/wrapper/types/OrderType"; + +export interface OrderParams { + quantity: number; + side: string; + price: number; +} + +interface BatchOrderPattern { + side: string; + totalQuantity?: number; + priceRange?: { + min?: number; + max?: number; + }; + spacing?: { + type: "percentage" | "fixed"; + value: number; + }; + numberOfOrders?: number; + individualQuantity?: number; +} + +/** + * Generates an array of orders based on the specified pattern + */ +export function generateOrdersfromPattern( + pattern: BatchOrderPattern, +): OrderParams[] { + const orders: OrderParams[] = []; + + // Random number of orders if not specified, max of 8 + const numOrders = pattern.numberOfOrders || Math.ceil(Math.random() * 8); + + // Calculate price points + const prices: number[] = []; + if (pattern.priceRange) { + const { min, max } = pattern.priceRange; + if (min && max) { + // Generate evenly spaced prices + for (let i = 0; i < numOrders; i++) { + if (pattern.spacing?.type === "percentage") { + const factor = 1 + pattern.spacing.value / 100; + prices.push(min * Math.pow(factor, i)); + } else { + const step = (max - min) / (numOrders - 1); + prices.push(min + step * i); + } + } + } else if (min) { + // Generate prices starting from min with specified spacing + for (let i = 0; i < numOrders; i++) { + if (pattern.spacing?.type === "percentage") { + const factor = 1 + pattern.spacing.value / 100; + prices.push(min * Math.pow(factor, i)); + } else { + prices.push(min + (pattern.spacing?.value || 0.01) * i); + } + } + } + } + + // Calculate quantities + let quantities: number[] = []; + if (pattern.totalQuantity) { + const individualQty = pattern.totalQuantity / numOrders; + quantities = Array(numOrders).fill(individualQty); + } else if (pattern.individualQuantity) { + quantities = Array(numOrders).fill(pattern.individualQuantity); + } + + // Generate orders + for (let i = 0; i < numOrders; i++) { + orders.push({ + side: pattern.side, + price: prices[i], + quantity: quantities[i], + }); + } + + return orders; +} + +/** + * Validates that sell orders are not priced below buy orders + * @param orders Array of order parameters to validate + * @throws Error if orders are crossed + */ +function validateNoCrossedOrders(orders: OrderParams[]): void { + // Find lowest sell and highest buy prices + let lowestSell = Number.MAX_SAFE_INTEGER; + let highestBuy = 0; + + orders.forEach((order) => { + if (order.side === "Sell" && order.price < lowestSell) { + lowestSell = order.price; + } + if (order.side === "Buy" && order.price > highestBuy) { + highestBuy = order.price; + } + }); + + // Check if orders cross + if (lowestSell <= highestBuy) { + throw new Error( + `Invalid order prices: Sell order at ${lowestSell} is lower than or equal to Buy order at ${highestBuy}. Orders cannot cross.`, + ); + } +} + +/** + * Place batch orders using Manifest + * @param agent SolanaAgentKit instance + * @param marketId Public key for the manifest market + * @param quantity Amount to trade in tokens + * @param side Buy or Sell + * @param price Price in tokens ie. SOL/USDC + * @returns Transaction signature + */ +export async function batchOrder( + agent: SolanaAgentKit, + marketId: PublicKey, + orders: OrderParams[], +): Promise { + try { + validateNoCrossedOrders(orders); + + const mfxClient = await ManifestClient.getClientForMarket( + agent.connection, + marketId, + agent.wallet, + ); + + const placeParams: WrapperPlaceOrderParamsExternal[] = orders.map( + (order) => ({ + numBaseTokens: order.quantity, + tokenPrice: order.price, + isBid: order.side === "Buy", + lastValidSlot: 0, + orderType: OrderType.Limit, + clientOrderId: Number(Math.random() * 10000), + }), + ); + + const batchOrderIx: TransactionInstruction = await mfxClient.batchUpdateIx( + placeParams, + [], + true, + ); + + const signature = await sendAndConfirmTransaction( + agent.connection, + new Transaction().add(batchOrderIx), + [agent.wallet], + ); + + return signature; + } catch (error: any) { + throw new Error(`Batch Order failed: ${error.message}`); + } +} diff --git a/src/tools/index.ts b/src/tools/index.ts index b9f7542..2855459 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -7,6 +7,7 @@ export * from "./mint_nft"; export * from "./transfer"; export * from "./trade"; export * from "./limit_order"; +export * from "./batch_order"; export * from "./cancel_all_orders"; export * from "./withdraw_all"; export * from "./register_domain"; From 1a34e9a4e528714429cd3823723d7ffda32624a1 Mon Sep 17 00:00:00 2001 From: JoshuaSum <0xjoshuasum@gmail.com> Date: Wed, 1 Jan 2025 17:41:46 -0800 Subject: [PATCH 64/94] Add Solayer staking through blinks --- README.md | 10 + pnpm-lock.yaml | 6946 ++++++++++++++----------------- src/actions/index.ts | 2 + src/actions/stakeWithSolayer.ts | 60 + src/agent/index.ts | 5 + src/langchain/index.ts | 34 + src/tools/index.ts | 1 + src/tools/stake_with_solayer.ts | 64 + 8 files changed, 3337 insertions(+), 3785 deletions(-) create mode 100644 src/actions/stakeWithSolayer.ts create mode 100644 src/tools/stake_with_solayer.ts diff --git a/README.md b/README.md index f4d5562..2f0f8be 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ Anyone - whether an SF-based AI researcher or a crypto-native builder - can brin - Lending by Lulo (Best APR for USDC) - Send Arcade Games - JupSOL staking + - Solayer SOL (sSOL)staking - **Non-Financial Actions** - Gib Work for registering bounties @@ -168,6 +169,15 @@ const signature = await agent.stake( ); ``` +### Stake SOL on Solayer + +```typescript +const signature = await agent.restake( + 1 // amount in SOL to stake +); + +``` + ### Send an SPL Token Airdrop via ZK Compression ```typescript diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac4bb30..80bd402 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,523 +1,1061 @@ -lockfileVersion: '9.0' +lockfileVersion: '6.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -importers: +dependencies: + '@bonfida/spl-name-service': + specifier: ^3.0.7 + version: 3.0.7(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@cks-systems/manifest-sdk': + specifier: ^0.1.73 + version: 0.1.73(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@coral-xyz/anchor': + specifier: '0.29' + version: 0.29.0 + '@langchain/core': + specifier: ^0.3.26 + version: 0.3.26(openai@4.77.0) + '@langchain/groq': + specifier: ^0.1.2 + version: 0.1.2(@langchain/core@0.3.26) + '@langchain/langgraph': + specifier: ^0.2.36 + version: 0.2.36(@langchain/core@0.3.26) + '@langchain/openai': + specifier: ^0.3.16 + version: 0.3.16(@langchain/core@0.3.26) + '@lightprotocol/compressed-token': + specifier: ^0.17.1 + version: 0.17.1(@lightprotocol/stateless.js@0.17.1)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@lightprotocol/stateless.js': + specifier: ^0.17.1 + version: 0.17.1 + '@metaplex-foundation/mpl-core': + specifier: ^1.1.1 + version: 1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1) + '@metaplex-foundation/mpl-token-metadata': + specifier: ^3.3.0 + version: 3.3.0(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/mpl-toolbox': + specifier: ^0.9.4 + version: 0.9.4(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi': + specifier: ^0.9.2 + version: 0.9.2 + '@metaplex-foundation/umi-bundle-defaults': + specifier: ^0.9.2 + version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0) + '@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) + '@onsol/tldparser': + specifier: ^0.6.7 + version: 0.6.7(@solana/web3.js@1.98.0)(bn.js@5.2.1)(borsh@0.7.0)(buffer@6.0.1) + '@orca-so/common-sdk': + specifier: 0.6.4 + version: 0.6.4(@solana/spl-token@0.4.9)(@solana/web3.js@1.98.0)(decimal.js@10.4.3) + '@orca-so/whirlpools-sdk': + specifier: ^0.13.12 + version: 0.13.12(@coral-xyz/anchor@0.29.0)(@orca-so/common-sdk@0.6.4)(@solana/spl-token@0.4.9)(@solana/web3.js@1.98.0)(decimal.js@10.4.3) + '@pythnetwork/price-service-client': + specifier: ^1.9.0 + version: 1.9.0 + '@raydium-io/raydium-sdk-v2': + specifier: 0.1.95-alpha + version: 0.1.95-alpha(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-token': + specifier: ^0.4.9 + version: 0.4.9(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': + specifier: ^1.98.0 + version: 1.98.0 + '@tensor-oss/tensorswap-sdk': + specifier: ^4.5.0 + version: 4.5.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@tiplink/api': + specifier: ^0.3.1 + version: 0.3.1(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1) + bn.js: + specifier: ^5.2.1 + version: 5.2.1 + bs58: + specifier: ^6.0.0 + version: 6.0.0 + chai: + specifier: ^5.1.2 + version: 5.1.2 + decimal.js: + specifier: ^10.4.3 + version: 10.4.3 + dotenv: + specifier: ^16.4.7 + version: 16.4.7 + form-data: + specifier: ^4.0.1 + version: 4.0.1 + langchain: + specifier: ^0.3.8 + version: 0.3.8(@langchain/core@0.3.26)(@langchain/groq@0.1.2)(openai@4.77.0) + openai: + specifier: ^4.77.0 + version: 4.77.0(zod@3.24.1) + typedoc: + specifier: ^0.27.6 + version: 0.27.6(typescript@5.7.2) + zod: + specifier: ^3.24.1 + version: 3.24.1 - .: - dependencies: - '@bonfida/spl-name-service': - specifier: ^3.0.7 - version: 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@cks-systems/manifest-sdk': - specifier: ^0.1.73 - version: 0.1.73(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) - '@langchain/core': - specifier: ^0.3.26 - version: 0.3.26(openai@4.77.0(zod@3.24.1)) - '@langchain/groq': - specifier: ^0.1.2 - version: 0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) - '@langchain/langgraph': - specifier: ^0.2.36 - version: 0.2.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) - '@langchain/openai': - specifier: ^0.3.16 - version: 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) - '@lightprotocol/compressed-token': - specifier: ^0.17.1 - version: 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-core': - specifier: ^1.1.1 - version: 1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1) - '@metaplex-foundation/mpl-token-metadata': - specifier: ^3.3.0 - version: 3.3.0(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/mpl-toolbox': - specifier: ^0.9.4 - version: 0.9.4(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi': - specifier: ^0.9.2 - version: 0.9.2 - '@metaplex-foundation/umi-bundle-defaults': - specifier: ^0.9.2 - version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - '@metaplex-foundation/umi-web3js-adapters': - specifier: ^0.9.2 - version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) - '@orca-so/whirlpools-sdk': - specifier: ^0.13.12 - version: 0.13.12(@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3) - '@pythnetwork/price-service-client': - specifier: ^1.9.0 - version: 1.9.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@raydium-io/raydium-sdk-v2': - specifier: 0.1.95-alpha - version: 0.1.95-alpha(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) - '@tensor-oss/tensorswap-sdk': - specifier: ^4.5.0 - version: 4.5.0(bufferutil@4.0.8)(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.8)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10) - bn.js: - specifier: ^5.2.1 - version: 5.2.1 - bs58: - specifier: ^6.0.0 - version: 6.0.0 - chai: - specifier: ^5.1.2 - version: 5.1.2 - decimal.js: - specifier: ^10.4.3 - version: 10.4.3 - dotenv: - specifier: ^16.4.7 - version: 16.4.7 - form-data: - specifier: ^4.0.1 - version: 4.0.1 - langchain: - specifier: ^0.3.8 - version: 0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.9)(openai@4.77.0(zod@3.24.1)) - openai: - specifier: ^4.77.0 - version: 4.77.0(zod@3.24.1) - typedoc: - specifier: ^0.27.6 - version: 0.27.6(typescript@5.7.2) - zod: - specifier: ^3.24.1 - version: 3.24.1 - devDependencies: - '@types/bn.js': - specifier: ^5.1.6 - version: 5.1.6 - '@types/chai': - specifier: ^5.0.1 - version: 5.0.1 - '@types/node': - specifier: ^22.10.2 - version: 22.10.2 - '@typescript-eslint/eslint-plugin': - specifier: ^8.18.2 - version: 8.18.2(@typescript-eslint/parser@8.18.2(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.18.2(eslint@8.57.1)(typescript@5.7.2) - eslint: - specifier: ^8.56.0 - version: 8.57.1 - eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.1) - eslint-plugin-prettier: - specifier: ^5.2.1 - version: 5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2) - prettier: - specifier: ^3.4.2 - version: 3.4.2 - ts-node: - specifier: ^10.9.2 - version: 10.9.2(@types/node@22.10.2)(typescript@5.7.2) - typescript: - specifier: ^5.7.2 - version: 5.7.2 +devDependencies: + '@types/bn.js': + specifier: ^5.1.6 + version: 5.1.6 + '@types/chai': + specifier: ^5.0.1 + version: 5.0.1 + '@types/node': + specifier: ^22.10.2 + version: 22.10.2 + '@typescript-eslint/eslint-plugin': + specifier: ^8.18.2 + version: 8.18.2(@typescript-eslint/parser@8.18.2)(eslint@8.56.0)(typescript@5.7.2) + '@typescript-eslint/parser': + specifier: ^8.18.2 + version: 8.18.2(eslint@8.56.0)(typescript@5.7.2) + eslint: + specifier: ^8.56.0 + version: 8.56.0 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.56.0) + eslint-plugin-prettier: + specifier: ^5.2.1 + version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.4.2) + prettier: + specifier: ^3.4.2 + version: 3.4.2 + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@22.10.2)(typescript@5.7.2) + typescript: + specifier: ^5.7.2 + version: 5.7.2 packages: - '@babel/runtime@7.26.0': + /@babel/runtime@7.26.0: resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false - '@bonfida/sns-records@0.0.1': + /@bonfida/sns-records@0.0.1(@solana/web3.js@1.98.0): resolution: {integrity: sha512-i28w9+BMFufhhpmLQCNx1CKKXTsEn+5RT18VFpPqdGO3sqaYlnUWC1m3wDpOvlzGk498dljgRpRo5wmcsnuEMg==} peerDependencies: '@solana/web3.js': ^1.87.3 + dependencies: + '@solana/web3.js': 1.98.0 + borsh: 1.0.0 + bs58: 5.0.0 + buffer: 6.0.3 + dev: false - '@bonfida/spl-name-service@3.0.7': + /@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-okOLXhy+fQoyQ/sZgMleO5RrIZfTkWEoHMxWgUqg6RP/MTBlrKxlhKC6ymKn4UUe0C5s3Nb8A+3Ams7vX0nMDg==} peerDependencies: '@solana/web3.js': ^1.87.3 + dependencies: + '@bonfida/sns-records': 0.0.1(@solana/web3.js@1.98.0) + '@noble/curves': 1.7.0 + '@scure/base': 1.2.1 + '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0 + borsh: 2.0.0 + buffer: 6.0.3 + graphemesplit: 2.4.4 + ipaddr.js: 2.2.0 + punycode: 2.3.1 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + dev: false - '@cfworker/json-schema@4.0.3': + /@cfworker/json-schema@4.0.3: resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} + dev: false - '@cks-systems/manifest-sdk@0.1.73': + /@cks-systems/manifest-sdk@0.1.73(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-IcRM7k3YZ/jK5nJwE3xGp2Xg7Um4/XCeqrLs5yB3+IjS7W089Qs/prJXdRGKbFwCLkMt9ds6pElHufQr8an0Iw==} + dependencies: + '@metaplex-foundation/beet': 0.7.2 + '@metaplex-foundation/rustbin': 0.3.5 + '@metaplex-foundation/solita': 0.12.2 + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 6.0.0 + js-sha256: 0.11.0 + keccak256: 1.0.6 + percentile: 1.6.0 + prom-client: 15.1.3 + rimraf: 5.0.10 + 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 + dev: false - '@coral-xyz/anchor@0.26.0': + /@coral-xyz/anchor@0.26.0: resolution: {integrity: sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==} engines: {node: '>=11'} + dependencies: + '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.98.0) + '@solana/web3.js': 1.98.0 + 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 + 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 + dev: false - '@coral-xyz/anchor@0.29.0': + /@coral-xyz/anchor@0.29.0: resolution: {integrity: sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==} engines: {node: '>=11'} + dependencies: + '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.98.0) + '@noble/hashes': 1.6.1 + '@solana/web3.js': 1.98.0 + bn.js: 5.2.1 + bs58: 4.0.1 + buffer-layout: 1.2.2 + camelcase: 6.3.0 + cross-fetch: 3.2.0 + crypto-hash: 1.3.0 + eventemitter3: 4.0.7 + pako: 2.1.0 + snake-case: 3.0.4 + superstruct: 0.15.5 + toml: 3.0.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false - '@coral-xyz/borsh@0.26.0': + /@coral-xyz/borsh@0.26.0(@solana/web3.js@1.98.0): resolution: {integrity: sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==} engines: {node: '>=10'} peerDependencies: '@solana/web3.js': ^1.68.0 + dependencies: + '@solana/web3.js': 1.98.0 + bn.js: 5.2.1 + buffer-layout: 1.2.2 + dev: false - '@coral-xyz/borsh@0.29.0': + /@coral-xyz/borsh@0.29.0(@solana/web3.js@1.98.0): resolution: {integrity: sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==} engines: {node: '>=10'} peerDependencies: '@solana/web3.js': ^1.68.0 + dependencies: + '@solana/web3.js': 1.98.0 + bn.js: 5.2.1 + buffer-layout: 1.2.2 + dev: false - '@cspotcode/source-map-support@0.8.1': + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true - '@eslint-community/eslint-utils@4.4.1': + /@eslint-community/eslint-utils@4.4.1(eslint@8.56.0): resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.56.0 + eslint-visitor-keys: 3.4.3 + dev: true - '@eslint-community/regexpp@4.12.1': + /@eslint-community/eslint-utils@4.4.1(eslint@9.17.0): + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 9.17.0 + eslint-visitor-keys: 3.4.3 + dev: false + + /@eslint-community/regexpp@4.12.1: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.19.1': + /@eslint/config-array@0.19.1: resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@eslint/object-schema': 2.1.5 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: false - '@eslint/core@0.9.1': + /@eslint/core@0.9.1: resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@types/json-schema': 7.0.15 + dev: false - '@eslint/eslintrc@2.1.4': + /@eslint/eslintrc@2.1.4: resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + 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 + dev: true - '@eslint/eslintrc@3.2.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} + 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 + dev: false - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true - '@eslint/js@9.17.0': + /@eslint/js@9.17.0: resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: false - '@eslint/object-schema@2.1.5': + /@eslint/object-schema@2.1.5: resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: false - '@eslint/plugin-kit@0.2.4': + /@eslint/plugin-kit@0.2.4: resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + levn: 0.4.1 + dev: false - '@ethereumjs/rlp@4.0.1': + /@ethereumjs/rlp@4.0.1: resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} engines: {node: '>=14'} hasBin: true + dev: false - '@ethereumjs/util@8.1.0': + /@ethereumjs/util@8.1.0: resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} engines: {node: '>=14'} + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.2.1 + micro-ftch: 0.3.1 + dev: false - '@ethersproject/bytes@5.7.0': + /@ethersproject/bytes@5.7.0: resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: false - '@ethersproject/logger@5.7.0': + /@ethersproject/logger@5.7.0: resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + dev: false - '@ethersproject/sha2@5.7.0': + /@ethersproject/sha2@5.7.0: resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + dev: false - '@gerrit0/mini-shiki@1.24.4': + /@gerrit0/mini-shiki@1.24.4: resolution: {integrity: sha512-YEHW1QeAg6UmxEmswiQbOVEg1CW22b1XUD/lNTliOsu0LD0wqoyleFMnmbTp697QE0pcadQiR5cVtbbAPncvpw==} + dependencies: + '@shikijs/engine-oniguruma': 1.24.4 + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + dev: false - '@humanfs/core@0.19.1': + /@humanfs/core@0.19.1: resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} + dev: false - '@humanfs/node@0.16.6': + /@humanfs/node@0.16.6: resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} engines: {node: '>=18.18.0'} + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + dev: false - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} deprecated: Use @eslint/config-array instead + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true - '@humanwhocodes/module-importer@1.0.1': + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': + /@humanwhocodes/object-schema@2.0.3: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead + dev: true - '@humanwhocodes/retry@0.3.1': + /@humanwhocodes/retry@0.3.1: resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} + dev: false - '@humanwhocodes/retry@0.4.1': + /@humanwhocodes/retry@0.4.1: resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} engines: {node: '>=18.18'} + dev: false - '@isaacs/cliui@8.0.2': + /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: false - '@jridgewell/resolve-uri@3.1.2': + /@jridgewell/resolve-uri@3.1.2: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} + dev: true - '@jridgewell/sourcemap-codec@1.5.0': + /@jridgewell/sourcemap-codec@1.5.0: resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + dev: true - '@jridgewell/trace-mapping@0.3.9': + /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true - '@langchain/core@0.3.26': + /@langchain/core@0.3.26(openai@4.77.0): resolution: {integrity: sha512-6RUQHEp8wv+JwtYIIEBYBzbLlcAQZFc7EDOgAM0ukExjh9HiXoJzoWpgMRRCrr/koIbtwXPJUqBprZK1I1CXHQ==} engines: {node: '>=18'} + dependencies: + '@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.0) + mustache: 4.2.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 10.0.0 + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + transitivePeerDependencies: + - openai + dev: false - '@langchain/groq@0.1.2': + /@langchain/groq@0.1.2(@langchain/core@0.3.26): resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.21 <0.4.0' + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0) + '@langchain/openai': 0.3.16(@langchain/core@0.3.26) + groq-sdk: 0.5.0 + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + transitivePeerDependencies: + - encoding + dev: false - '@langchain/langgraph-checkpoint@0.0.13': + /@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.26): resolution: {integrity: sha512-amdmBcNT8a9xP2VwcEWxqArng4gtRDcnVyVI4DsQIo1Aaz8e8+hH17zSwrUF3pt1pIYztngIfYnBOim31mtKMg==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.31 <0.4.0' + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0) + uuid: 10.0.0 + dev: false - '@langchain/langgraph-sdk@0.0.32': - resolution: {integrity: sha512-KQyM9kLO7T6AxwNrceajH7JOybP3pYpvUPnhiI2rrVndI1WyZUJ1eVC1e722BVRAPi6o+WcoTT4uMSZVinPOtA==} + /@langchain/langgraph-sdk@0.0.33: + resolution: {integrity: sha512-l/hRbI6roLzplBXy2VyDUwqY1TkK7RcjPmrMUuVdvCCH4LTwLfIXh/G1kHatNiN7VUTskw0FkfBbgq6gtj0ang==} + dependencies: + '@types/json-schema': 7.0.15 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 9.0.1 + dev: false - '@langchain/langgraph@0.2.36': + /@langchain/langgraph@0.2.36(@langchain/core@0.3.26): resolution: {integrity: sha512-zxk7ZCVxP0/Ut9785EiXCS7BE7sXd8cu943mcZUF2aNFUaQRTBbbiKpNdR3nb1+xO/B+HVktrJT2VFdkAywnng==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0' + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0) + '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.26) + '@langchain/langgraph-sdk': 0.0.33 + uuid: 10.0.0 + zod: 3.24.1 + dev: false - '@langchain/openai@0.3.16': + /@langchain/openai@0.3.16(@langchain/core@0.3.26): resolution: {integrity: sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.26 <0.4.0' + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0) + js-tiktoken: 1.0.16 + openai: 4.77.0(zod@3.24.1) + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + transitivePeerDependencies: + - encoding + dev: false - '@langchain/textsplitters@0.1.0': + /@langchain/textsplitters@0.1.0(@langchain/core@0.3.26): resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.21 <0.4.0' + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0) + js-tiktoken: 1.0.16 + dev: false - '@lightprotocol/compressed-token@0.17.1': + /@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-493KCmZGw1BcHVRJaeRm8EEs+L7gX8dwY7JG13w2pfgOMtZXZ7Wxt261jFJxQJzRLTrUSlrbRJOmfW1+S1Y8SQ==} peerDependencies: '@lightprotocol/stateless.js': 0.17.1 + dependencies: + '@coral-xyz/anchor': 0.29.0 + '@lightprotocol/stateless.js': 0.17.1 + '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.95.3 + buffer: 6.0.3 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + dev: false - '@lightprotocol/stateless.js@0.17.1': + /@lightprotocol/stateless.js@0.17.1: resolution: {integrity: sha512-EjId1n33A6dBwpce33Wsa/fs/CDKtMtRrkxbApH0alXrnEXmbW6QhIViXOrKYXjZ4uJQM1xsBtsKe0vqJ4nbtQ==} + dependencies: + '@coral-xyz/anchor': 0.29.0 + '@noble/hashes': 1.5.0 + '@solana/web3.js': 1.95.3 + buffer: 6.0.3 + superstruct: 2.0.2 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false - '@metaplex-foundation/beet-solana@0.3.1': + /@metaplex-foundation/beet-solana@0.3.1: resolution: {integrity: sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g==} + dependencies: + '@metaplex-foundation/beet': 0.7.2 + '@solana/web3.js': 1.98.0 + bs58: 5.0.0 + debug: 4.4.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false - '@metaplex-foundation/beet-solana@0.4.0': + /@metaplex-foundation/beet-solana@0.4.0: resolution: {integrity: sha512-B1L94N3ZGMo53b0uOSoznbuM5GBNJ8LwSeznxBxJ+OThvfHQ4B5oMUqb+0zdLRfkKGS7Q6tpHK9P+QK0j3w2cQ==} + dependencies: + '@metaplex-foundation/beet': 0.7.1 + '@solana/web3.js': 1.98.0 + bs58: 5.0.0 + debug: 4.4.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false - '@metaplex-foundation/beet-solana@0.4.1': + /@metaplex-foundation/beet-solana@0.4.1: resolution: {integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==} + dependencies: + '@metaplex-foundation/beet': 0.7.2 + '@solana/web3.js': 1.98.0 + bs58: 5.0.0 + debug: 4.4.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false - '@metaplex-foundation/beet@0.4.0': + /@metaplex-foundation/beet@0.4.0: resolution: {integrity: sha512-2OAKJnLatCc3mBXNL0QmWVQKAWK2C7XDfepgL0p/9+8oSx4bmRAFHFqptl1A/C0U5O3dxGwKfmKluW161OVGcA==} + dependencies: + ansicolors: 0.3.2 + bn.js: 5.2.1 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + dev: false - '@metaplex-foundation/beet@0.6.1': + /@metaplex-foundation/beet@0.6.1: resolution: {integrity: sha512-OYgnijLFzw0cdUlRKH5POp0unQECPOW9muJ2X3QIVyak5G6I6l/rKo72sICgPLIFKdmsi2jmnkuLY7wp14iXdw==} + dependencies: + ansicolors: 0.3.2 + bn.js: 5.2.1 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + dev: false - '@metaplex-foundation/beet@0.7.1': + /@metaplex-foundation/beet@0.7.1: resolution: {integrity: sha512-hNCEnS2WyCiYyko82rwuISsBY3KYpe828ubsd2ckeqZr7tl0WVLivGkoyA/qdiaaHEBGdGl71OpfWa2rqL3DiA==} + dependencies: + ansicolors: 0.3.2 + bn.js: 5.2.1 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + dev: false - '@metaplex-foundation/beet@0.7.2': + /@metaplex-foundation/beet@0.7.2: resolution: {integrity: sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==} + dependencies: + ansicolors: 0.3.2 + assert: 2.1.0 + bn.js: 5.2.1 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + dev: false - '@metaplex-foundation/cusper@0.0.2': + /@metaplex-foundation/cusper@0.0.2: resolution: {integrity: sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==} + dev: false - '@metaplex-foundation/mpl-auction-house@2.5.1': + /@metaplex-foundation/mpl-auction-house@2.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-O+IAdYVaoOvgACB8pm+1lF5BNEjl0COkqny2Ho8KQZwka6aC/vHbZ239yRwAMtJhf5992BPFdT4oifjyE0O+Mw==} + dependencies: + '@metaplex-foundation/beet': 0.6.1 + '@metaplex-foundation/beet-solana': 0.3.1 + '@metaplex-foundation/cusper': 0.0.2 + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0 + bn.js: 5.2.1 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - typescript + - utf-8-validate + dev: false - '@metaplex-foundation/mpl-bubblegum@0.7.0': + /@metaplex-foundation/mpl-bubblegum@0.7.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-HCo6q+nh8M3KRv9/aUaZcJo5/vPJEeZwPGRDWkqN7lUXoMIvhd83fZi7MB1rIg1gwpVHfHqim0A02LCYKisWFg==} + dependencies: + '@metaplex-foundation/beet': 0.7.1 + '@metaplex-foundation/beet-solana': 0.4.0 + '@metaplex-foundation/cusper': 0.0.2 + '@metaplex-foundation/mpl-token-metadata': 2.13.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0) + '@solana/spl-token': 0.1.8 + '@solana/web3.js': 1.98.0 + js-sha3: 0.8.0 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - typescript + - utf-8-validate + dev: false - '@metaplex-foundation/mpl-core@1.1.1': + /@metaplex-foundation/mpl-core@1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1): resolution: {integrity: sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA==} peerDependencies: '@metaplex-foundation/umi': '>=0.8.2 < 1' '@noble/hashes': ^1.3.1 + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@msgpack/msgpack': 3.0.0-beta2 + '@noble/hashes': 1.6.1 + dev: false - '@metaplex-foundation/mpl-token-metadata@2.13.0': + /@metaplex-foundation/mpl-token-metadata@2.13.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==} + dependencies: + '@metaplex-foundation/beet': 0.7.1 + '@metaplex-foundation/beet-solana': 0.4.0 + '@metaplex-foundation/cusper': 0.0.2 + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0 + bn.js: 5.2.1 + debug: 4.4.0 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - typescript + - utf-8-validate + dev: false - '@metaplex-foundation/mpl-token-metadata@3.3.0': + /@metaplex-foundation/mpl-token-metadata@3.3.0(@metaplex-foundation/umi@0.9.2): resolution: {integrity: sha512-t5vO8Wr3ZZZPGrVrGNcosX5FMkwQSgBiVMQMRNDG2De7voYFJmIibD5jdG05EoQ4Y5kZVEiwhYaO+wJB3aO5AA==} peerDependencies: '@metaplex-foundation/umi': '>= 0.8.2 < 1' + dependencies: + '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi': 0.9.2 + dev: false - '@metaplex-foundation/mpl-toolbox@0.9.4': + /@metaplex-foundation/mpl-toolbox@0.9.4(@metaplex-foundation/umi@0.9.2): resolution: {integrity: sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ==} peerDependencies: '@metaplex-foundation/umi': '>= 0.8.2 < 1' + dependencies: + '@metaplex-foundation/umi': 0.9.2 + dev: false - '@metaplex-foundation/rustbin@0.3.5': + /@metaplex-foundation/rustbin@0.3.5: resolution: {integrity: sha512-m0wkRBEQB/8krwMwKBvFugufZtYwMXiGHud2cTDAv+aGXK4M90y0Hx67/wpu+AqqoQfdV8VM9YezUOHKD+Z5kA==} + dependencies: + debug: 4.4.0 + semver: 7.6.3 + text-table: 0.2.0 + toml: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: false - '@metaplex-foundation/solita@0.12.2': + /@metaplex-foundation/solita@0.12.2: resolution: {integrity: sha512-oczMfE43NNHWweSqhXPTkQBUbap/aAiwjDQw8zLKNnd/J8sXr/0+rKcN5yJIEgcHeKRkp90eTqkmt2WepQc8yw==} hasBin: true + dependencies: + '@metaplex-foundation/beet': 0.4.0 + '@metaplex-foundation/beet-solana': 0.3.1 + '@metaplex-foundation/rustbin': 0.3.5 + '@solana/web3.js': 1.98.0 + camelcase: 6.3.0 + debug: 4.4.0 + js-sha256: 0.9.0 + prettier: 2.8.8 + snake-case: 3.0.4 + spok: 1.5.5 + transitivePeerDependencies: + - bufferutil + - encoding + - jiti + - supports-color + - utf-8-validate + dev: false - '@metaplex-foundation/umi-bundle-defaults@0.9.2': + /@metaplex-foundation/umi-bundle-defaults@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0): resolution: {integrity: sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw==} peerDependencies: '@metaplex-foundation/umi': ^0.9.2 '@solana/web3.js': ^1.72.0 + 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) + '@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) + '@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) + '@solana/web3.js': 1.98.0 + transitivePeerDependencies: + - encoding + dev: false - '@metaplex-foundation/umi-downloader-http@0.9.2': + /@metaplex-foundation/umi-downloader-http@0.9.2(@metaplex-foundation/umi@0.9.2): resolution: {integrity: sha512-tzPT9hBwenzTzAQg07rmsrqZfgguAXELbcJrsYMoASp5VqWFXYIP00g94KET6XLjWUXH4P1J2zoa6hGennPXHA==} peerDependencies: '@metaplex-foundation/umi': ^0.9.2 + dependencies: + '@metaplex-foundation/umi': 0.9.2 + dev: false - '@metaplex-foundation/umi-eddsa-web3js@0.9.2': + /@metaplex-foundation/umi-eddsa-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0): resolution: {integrity: sha512-hhPCxXbYIp4BC4z9gK78sXpWLkNSrfv4ndhF5ruAkdIp7GcRVYKj0QnOUO6lGYGiIkNlw20yoTwOe1CT//OfTQ==} peerDependencies: '@metaplex-foundation/umi': ^0.9.2 '@solana/web3.js': ^1.72.0 + 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) + '@noble/curves': 1.7.0 + '@solana/web3.js': 1.98.0 + dev: false - '@metaplex-foundation/umi-http-fetch@0.9.2': + /@metaplex-foundation/umi-http-fetch@0.9.2(@metaplex-foundation/umi@0.9.2): resolution: {integrity: sha512-YCZuBu24T9ZzEDe4+w12LEZm/fO9pkyViZufGgASC5NX93814Lvf6Ssjn/hZzjfA7CvZbvLFbmujc6CV3Q/m9Q==} peerDependencies: '@metaplex-foundation/umi': ^0.9.2 + dependencies: + '@metaplex-foundation/umi': 0.9.2 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: false - '@metaplex-foundation/umi-options@0.8.9': + /@metaplex-foundation/umi-options@0.8.9: resolution: {integrity: sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A==} + dev: false - '@metaplex-foundation/umi-program-repository@0.9.2': + /@metaplex-foundation/umi-program-repository@0.9.2(@metaplex-foundation/umi@0.9.2): resolution: {integrity: sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA==} peerDependencies: '@metaplex-foundation/umi': ^0.9.2 + dependencies: + '@metaplex-foundation/umi': 0.9.2 + dev: false - '@metaplex-foundation/umi-public-keys@0.8.9': + /@metaplex-foundation/umi-public-keys@0.8.9: resolution: {integrity: sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q==} + dependencies: + '@metaplex-foundation/umi-serializers-encodings': 0.8.9 + dev: false - '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2': + /@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2(@metaplex-foundation/umi@0.9.2): resolution: {integrity: sha512-YRwVf6xH0jPBAUgMhEPi+UbjioAeqTXmjsN2TnmQCPAmHbrHrMRj0rlWYwFLWAgkmoxazYrXP9lqOFRrfOGAEA==} peerDependencies: '@metaplex-foundation/umi': ^0.9.2 + dependencies: + '@metaplex-foundation/umi': 0.9.2 + dev: false - '@metaplex-foundation/umi-rpc-web3js@0.9.2': + /@metaplex-foundation/umi-rpc-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0): resolution: {integrity: sha512-MqcsBz8B4wGl6jxsf2Jo/rAEpYReU9VCSR15QSjhvADHMmdFxCIZCCAgE+gDE2Vuanfl437VhOcP3g5Uw8C16Q==} peerDependencies: '@metaplex-foundation/umi': ^0.9.2 '@solana/web3.js': ^1.72.0 + 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) + '@solana/web3.js': 1.98.0 + dev: false - '@metaplex-foundation/umi-serializer-data-view@0.9.2': + /@metaplex-foundation/umi-serializer-data-view@0.9.2(@metaplex-foundation/umi@0.9.2): resolution: {integrity: sha512-5vGptadJxUxvUcyrwFZxXlEc6Q7AYySBesizCtrBFUY8w8PnF2vzmS45CP1MLySEATNH6T9mD4Rs0tLb87iQyA==} peerDependencies: '@metaplex-foundation/umi': ^0.9.2 + dependencies: + '@metaplex-foundation/umi': 0.9.2 + dev: false - '@metaplex-foundation/umi-serializers-core@0.8.9': + /@metaplex-foundation/umi-serializers-core@0.8.9: resolution: {integrity: sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w==} + dev: false - '@metaplex-foundation/umi-serializers-encodings@0.8.9': + /@metaplex-foundation/umi-serializers-encodings@0.8.9: resolution: {integrity: sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q==} + dependencies: + '@metaplex-foundation/umi-serializers-core': 0.8.9 + dev: false - '@metaplex-foundation/umi-serializers-numbers@0.8.9': + /@metaplex-foundation/umi-serializers-numbers@0.8.9: resolution: {integrity: sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg==} + dependencies: + '@metaplex-foundation/umi-serializers-core': 0.8.9 + dev: false - '@metaplex-foundation/umi-serializers@0.9.0': + /@metaplex-foundation/umi-serializers@0.9.0: resolution: {integrity: sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg==} + dependencies: + '@metaplex-foundation/umi-options': 0.8.9 + '@metaplex-foundation/umi-public-keys': 0.8.9 + '@metaplex-foundation/umi-serializers-core': 0.8.9 + '@metaplex-foundation/umi-serializers-encodings': 0.8.9 + '@metaplex-foundation/umi-serializers-numbers': 0.8.9 + dev: false - '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2': + /@metaplex-foundation/umi-transaction-factory-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0): resolution: {integrity: sha512-fR1Kf21uylMFd1Smkltmj4jTNxhqSWf416owsJ+T+cvJi2VCOcOwq/3UFzOrpz78fA0RhsajKYKj0HYsRnQI1g==} peerDependencies: '@metaplex-foundation/umi': ^0.9.2 '@solana/web3.js': ^1.72.0 + 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) + '@solana/web3.js': 1.98.0 + dev: false - '@metaplex-foundation/umi-web3js-adapters@0.9.2': + /@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0): resolution: {integrity: sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA==} peerDependencies: '@metaplex-foundation/umi': ^0.9.2 '@solana/web3.js': ^1.72.0 + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@solana/web3.js': 1.98.0 + buffer: 6.0.3 + dev: false - '@metaplex-foundation/umi@0.9.2': + /@metaplex-foundation/umi@0.9.2: resolution: {integrity: sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw==} + dependencies: + '@metaplex-foundation/umi-options': 0.8.9 + '@metaplex-foundation/umi-public-keys': 0.8.9 + '@metaplex-foundation/umi-serializers': 0.9.0 + dev: false - '@msgpack/msgpack@2.8.0': + /@msgpack/msgpack@2.8.0: resolution: {integrity: sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==} engines: {node: '>= 10'} + dev: false - '@msgpack/msgpack@3.0.0-beta2': + /@msgpack/msgpack@3.0.0-beta2: resolution: {integrity: sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==} engines: {node: '>= 14'} + dev: false - '@noble/curves@1.4.2': + /@noble/curves@1.4.2: resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + dependencies: + '@noble/hashes': 1.4.0 + dev: false - '@noble/curves@1.7.0': + /@noble/curves@1.7.0: resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==} engines: {node: ^14.21.3 || >=16} + dependencies: + '@noble/hashes': 1.6.0 + dev: false - '@noble/hashes@1.4.0': + /@noble/hashes@1.4.0: resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} + dev: false - '@noble/hashes@1.5.0': + /@noble/hashes@1.5.0: resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} engines: {node: ^14.21.3 || >=16} + dev: false - '@noble/hashes@1.6.0': + /@noble/hashes@1.6.0: resolution: {integrity: sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==} engines: {node: ^14.21.3 || >=16} + dev: false - '@noble/hashes@1.6.1': + /@noble/hashes@1.6.1: resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==} engines: {node: ^14.21.3 || >=16} + dev: false - '@nodelib/fs.scandir@2.1.5': + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true - '@nodelib/fs.stat@2.0.5': + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} + dev: true - '@nodelib/fs.walk@1.2.8': + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.18.0 + dev: true - '@onsol/tldparser@0.6.7': + /@onsol/tldparser@0.6.7(@solana/web3.js@1.98.0)(bn.js@5.2.1)(borsh@0.7.0)(buffer@6.0.1): resolution: {integrity: sha512-QwkRDLyC514pxeplCCXZ2kTiRcJSeUrpp+9o2XqLbePy/qzZGGG8I0UbXUKuWVD/bUL1zAm21+D+Eu30OKwcQg==} engines: {node: '>=14'} peerDependencies: @@ -525,19 +1063,39 @@ packages: bn.js: ^5.2.1 borsh: ^0.7.0 buffer: 6.0.1 + dependencies: + '@ethersproject/sha2': 5.7.0 + '@metaplex-foundation/beet-solana': 0.4.1 + '@solana/web3.js': 1.98.0 + bn.js: 5.2.1 + borsh: 0.7.0 + buffer: 6.0.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false - '@opentelemetry/api@1.9.0': + /@opentelemetry/api@1.9.0: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} + dev: false - '@orca-so/common-sdk@0.6.4': + /@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9)(@solana/web3.js@1.98.0)(decimal.js@10.4.3): resolution: {integrity: sha512-iOiC6exTA9t2CEOaUPoWlNP3soN/1yZFjoz1mSf7NvOqo/PJZeIdWpB7BRXwU0mGGatjxU4SFgMGQ8NrSx+ONw==} peerDependencies: '@solana/spl-token': ^0.4.1 '@solana/web3.js': ^1.90.0 decimal.js: ^10.4.3 + dependencies: + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0 + decimal.js: 10.4.3 + tiny-invariant: 1.3.3 + dev: false - '@orca-so/whirlpools-sdk@0.13.12': + /@orca-so/whirlpools-sdk@0.13.12(@coral-xyz/anchor@0.29.0)(@orca-so/common-sdk@0.6.4)(@solana/spl-token@0.4.9)(@solana/web3.js@1.98.0)(decimal.js@10.4.3): resolution: {integrity: sha512-+LOqGTe0DYUsYwemltOU4WQIviqoICQlIcAmmEX/WnBh6wntpcLDcXkPV6dBHW7NA2/J8WEVAZ50biLJb4subg==} peerDependencies: '@coral-xyz/anchor': ~0.29.0 @@ -545,630 +1103,1510 @@ packages: '@solana/spl-token': ^0.4.8 '@solana/web3.js': ^1.90.0 decimal.js: ^10.4.3 + dependencies: + '@coral-xyz/anchor': 0.29.0 + '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9)(@solana/web3.js@1.98.0)(decimal.js@10.4.3) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0 + decimal.js: 10.4.3 + tiny-invariant: 1.3.3 + dev: false - '@pkgjs/parseargs@0.11.0': + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + requiresBuild: true + dev: false + optional: true - '@pkgr/core@0.1.1': + /@pkgr/core@0.1.1: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dev: true - '@pythnetwork/price-service-client@1.9.0': + /@pythnetwork/price-service-client@1.9.0: resolution: {integrity: sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==} deprecated: This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead. + dependencies: + '@pythnetwork/price-service-sdk': 1.8.0 + '@types/ws': 8.5.13 + axios: 1.7.9 + axios-retry: 3.9.1 + isomorphic-ws: 4.0.1(ws@8.18.0) + ts-log: 2.2.7 + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: false - '@pythnetwork/price-service-sdk@1.8.0': + /@pythnetwork/price-service-sdk@1.8.0: resolution: {integrity: sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA==} + dependencies: + bn.js: 5.2.1 + dev: false - '@raydium-io/raydium-sdk-v2@0.1.95-alpha': + /@raydium-io/raydium-sdk-v2@0.1.95-alpha(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-+u7yxo/R1JDysTCzOuAlh90ioBe2DlM2Hbcz/tFsxP/YzmnYQzShvNjcmc0361a4zJhmlrEJfpFXW0J3kkX5vA==} + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0 + axios: 1.7.9 + big.js: 6.2.2 + bn.js: 5.2.1 + dayjs: 1.11.13 + decimal.js-light: 2.5.1 + jsonfile: 6.1.0 + lodash: 4.17.21 + toformat: 2.0.0 + tsconfig-paths: 4.2.0 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + dev: false - '@saberhq/option-utils@1.15.0': + /@saberhq/option-utils@1.15.0: resolution: {integrity: sha512-XVbS9H4b8PIGXJGaErkOurxV2FKFyvMwYq0pD8Y1iEPoi6HB//+HnpEKAv8tCssIQ5Nn1zQWzmQ9CmGkrwzcsw==} + dependencies: + tslib: 2.8.1 + dev: false - '@saberhq/solana-contrib@1.15.0': + /@saberhq/solana-contrib@1.15.0(@solana/web3.js@1.98.0)(bn.js@5.2.1): resolution: {integrity: sha512-OExL5qGrNMmIKINU7qFUDmY7+xIwVM2s360g99k8CRNHSnjpnqIzwDjr2CnvEFpeQPp22OdGlS63woDp0w0JsQ==} peerDependencies: '@solana/web3.js': ^1.42 bn.js: ^4 || ^5 + dependencies: + '@saberhq/option-utils': 1.15.0 + '@solana/buffer-layout': 4.0.1 + '@solana/web3.js': 1.98.0 + '@types/promise-retry': 1.1.6 + '@types/retry': 0.12.5 + bn.js: 5.2.1 + promise-retry: 2.0.1 + retry: 0.13.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 + dev: false - '@scure/base@1.1.9': + /@scure/base@1.1.9: resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + dev: false - '@scure/base@1.2.1': + /@scure/base@1.2.1: resolution: {integrity: sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==} + dev: false - '@scure/bip32@1.4.0': + /@scure/bip32@1.4.0: resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + dev: false - '@scure/bip39@1.3.0': + /@scure/bip39@1.3.0: resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + dependencies: + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + dev: false - '@shikijs/core@1.24.4': + /@shikijs/core@1.24.4: resolution: {integrity: sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==} + dependencies: + '@shikijs/engine-javascript': 1.24.4 + '@shikijs/engine-oniguruma': 1.24.4 + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.4 + dev: false - '@shikijs/engine-javascript@1.24.4': + /@shikijs/engine-javascript@1.24.4: resolution: {integrity: sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==} + dependencies: + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + oniguruma-to-es: 0.8.1 + dev: false - '@shikijs/engine-oniguruma@1.24.4': + /@shikijs/engine-oniguruma@1.24.4: resolution: {integrity: sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==} + dependencies: + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + dev: false - '@shikijs/types@1.24.4': + /@shikijs/types@1.24.4: resolution: {integrity: sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==} + dependencies: + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + dev: false - '@shikijs/vscode-textmate@9.3.1': + /@shikijs/vscode-textmate@9.3.1: resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} + dev: false - '@solana/buffer-layout-utils@0.2.0': + /@solana/buffer-layout-utils@0.2.0: resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==} engines: {node: '>= 10'} + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/web3.js': 1.98.0 + bigint-buffer: 1.1.5 + bignumber.js: 9.1.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false - '@solana/buffer-layout@4.0.1': + /@solana/buffer-layout@4.0.1: resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} engines: {node: '>=5.10'} + dependencies: + buffer: 6.0.3 + dev: false - '@solana/codecs-core@2.0.0-preview.2': + /@solana/codecs-core@2.0.0-preview.2: resolution: {integrity: sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg==} + dependencies: + '@solana/errors': 2.0.0-preview.2 + dev: false - '@solana/codecs-core@2.0.0-preview.4': + /@solana/codecs-core@2.0.0-preview.4(typescript@5.7.2): resolution: {integrity: sha512-A0VVuDDA5kNKZUinOqHxJQK32aKTucaVbvn31YenGzHX1gPqq+SOnFwgaEY6pq4XEopSmaK16w938ZQS8IvCnw==} peerDependencies: typescript: '>=5' + dependencies: + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + typescript: 5.7.2 + dev: false - '@solana/codecs-core@2.0.0-rc.1': + /@solana/codecs-core@2.0.0-rc.1(typescript@4.9.5): resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==} peerDependencies: typescript: '>=5' + dependencies: + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + typescript: 4.9.5 + dev: false - '@solana/codecs-data-structures@2.0.0-preview.2': + /@solana/codecs-core@2.0.0-rc.1(typescript@5.7.2): + resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==} + peerDependencies: + typescript: '>=5' + dependencies: + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + typescript: 5.7.2 + dev: false + + /@solana/codecs-data-structures@2.0.0-preview.2: resolution: {integrity: sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg==} + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/codecs-numbers': 2.0.0-preview.2 + '@solana/errors': 2.0.0-preview.2 + dev: false - '@solana/codecs-data-structures@2.0.0-preview.4': + /@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.7.2): resolution: {integrity: sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA==} peerDependencies: typescript: '>=5' + 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 + dev: false - '@solana/codecs-data-structures@2.0.0-rc.1': + /@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5): resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==} peerDependencies: typescript: '>=5' + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + typescript: 4.9.5 + dev: false - '@solana/codecs-numbers@2.0.0-preview.2': + /@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.2): + resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==} + peerDependencies: + typescript: '>=5' + 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 + dev: false + + /@solana/codecs-numbers@2.0.0-preview.2: resolution: {integrity: sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw==} + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/errors': 2.0.0-preview.2 + dev: false - '@solana/codecs-numbers@2.0.0-preview.4': + /@solana/codecs-numbers@2.0.0-preview.4(typescript@5.7.2): resolution: {integrity: sha512-Q061rLtMadsO7uxpguT+Z7G4UHnjQ6moVIxAQxR58nLxDPCC7MB1Pk106/Z7NDhDLHTcd18uO6DZ7ajHZEn2XQ==} peerDependencies: typescript: '>=5' + 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 + dev: false - '@solana/codecs-numbers@2.0.0-rc.1': + /@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5): resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==} peerDependencies: typescript: '>=5' + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + typescript: 4.9.5 + dev: false - '@solana/codecs-strings@2.0.0-preview.2': + /@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.2): + resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==} + peerDependencies: + typescript: '>=5' + 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 + dev: false + + /@solana/codecs-strings@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22): resolution: {integrity: sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g==} peerDependencies: fastestsmallesttextencoderdecoder: ^1.0.22 + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/codecs-numbers': 2.0.0-preview.2 + '@solana/errors': 2.0.0-preview.2 + fastestsmallesttextencoderdecoder: 1.0.22 + dev: false - '@solana/codecs-strings@2.0.0-preview.4': + /@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-YDbsQePRWm+xnrfS64losSGRg8Wb76cjK1K6qfR8LPmdwIC3787x9uW5/E4icl/k+9nwgbIRXZ65lpF+ucZUnw==} peerDependencies: fastestsmallesttextencoderdecoder: ^1.0.22 typescript: '>=5' + 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) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 5.7.2 + dev: false - '@solana/codecs-strings@2.0.0-rc.1': + /@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5): resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==} peerDependencies: fastestsmallesttextencoderdecoder: ^1.0.22 typescript: '>=5' + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 4.9.5 + dev: false - '@solana/codecs@2.0.0-preview.2': + /@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): + resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5' + 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) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 5.7.2 + dev: false + + /@solana/codecs@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22): resolution: {integrity: sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA==} + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/codecs-data-structures': 2.0.0-preview.2 + '@solana/codecs-numbers': 2.0.0-preview.2 + '@solana/codecs-strings': 2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/options': 2.0.0-preview.2 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + dev: false - '@solana/codecs@2.0.0-preview.4': + /@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-gLMupqI4i+G4uPi2SGF/Tc1aXcviZF2ybC81x7Q/fARamNSgNOCUUoSCg9nWu1Gid6+UhA7LH80sWI8XjKaRog==} peerDependencies: typescript: '>=5' + 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 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + dev: false - '@solana/codecs@2.0.0-rc.1': + /@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5): resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==} peerDependencies: typescript: '>=5' + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + dev: false - '@solana/errors@2.0.0-preview.2': + /@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): + resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==} + peerDependencies: + typescript: '>=5' + 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 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + dev: false + + /@solana/errors@2.0.0-preview.2: resolution: {integrity: sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA==} hasBin: true + dependencies: + chalk: 5.4.1 + commander: 12.1.0 + dev: false - '@solana/errors@2.0.0-preview.4': + /@solana/errors@2.0.0-preview.4(typescript@5.7.2): resolution: {integrity: sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA==} hasBin: true peerDependencies: typescript: '>=5' + dependencies: + chalk: 5.4.1 + commander: 12.1.0 + typescript: 5.7.2 + dev: false - '@solana/errors@2.0.0-rc.1': + /@solana/errors@2.0.0-rc.1(typescript@4.9.5): resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==} hasBin: true peerDependencies: typescript: '>=5' + dependencies: + chalk: 5.4.1 + commander: 12.1.0 + typescript: 4.9.5 + dev: false - '@solana/options@2.0.0-preview.2': + /@solana/errors@2.0.0-rc.1(typescript@5.7.2): + resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==} + hasBin: true + peerDependencies: + typescript: '>=5' + dependencies: + chalk: 5.4.1 + commander: 12.1.0 + typescript: 5.7.2 + dev: false + + /@solana/options@2.0.0-preview.2: resolution: {integrity: sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w==} + dependencies: + '@solana/codecs-core': 2.0.0-preview.2 + '@solana/codecs-numbers': 2.0.0-preview.2 + dev: false - '@solana/options@2.0.0-preview.4': + /@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-tv2O/Frxql/wSe3jbzi5nVicIWIus/BftH+5ZR+r9r3FO0/htEllZS5Q9XdbmSboHu+St87584JXeDx3xm4jaA==} peerDependencies: typescript: '>=5' + 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 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + dev: false - '@solana/options@2.0.0-rc.1': + /@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5): resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==} peerDependencies: typescript: '>=5' + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + dev: false - '@solana/spl-account-compression@0.1.10': + /@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): + resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==} + peerDependencies: + typescript: '>=5' + 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 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + dev: false + + /@solana/spl-account-compression@0.1.10(@solana/web3.js@1.98.0): resolution: {integrity: sha512-IQAOJrVOUo6LCgeWW9lHuXo6JDbi4g3/RkQtvY0SyalvSWk9BIkHHe4IkAzaQw8q/BxEVBIjz8e9bNYWIAESNw==} engines: {node: '>=16'} peerDependencies: '@solana/web3.js': ^1.50.1 + dependencies: + '@metaplex-foundation/beet': 0.7.2 + '@metaplex-foundation/beet-solana': 0.4.1 + '@solana/web3.js': 1.98.0 + bn.js: 5.2.1 + borsh: 0.7.0 + js-sha3: 0.8.0 + typescript-collections: 1.3.3 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false - '@solana/spl-token-group@0.0.4': + /@solana/spl-token-group@0.0.4(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22): resolution: {integrity: sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw==} engines: {node: '>=16'} peerDependencies: '@solana/web3.js': ^1.91.6 + 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 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + dev: false - '@solana/spl-token-group@0.0.5': + /@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-CLJnWEcdoUBpQJfx9WEbX3h6nTdNiUzswfFdkABUik7HVwSNA98u5AYvBVK2H93d9PGMOHAak2lHW9xr+zAJGQ==} engines: {node: '>=16'} peerDependencies: '@solana/web3.js': ^1.94.0 + 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 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + dev: false - '@solana/spl-token-group@0.0.7': + /@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug==} engines: {node: '>=16'} peerDependencies: '@solana/web3.js': ^1.95.3 + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + dev: false - '@solana/spl-token-metadata@0.1.6': + /@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} engines: {node: '>=16'} peerDependencies: '@solana/web3.js': ^1.95.3 + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.95.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + dev: false - '@solana/spl-token@0.1.8': + /@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5): + resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/web3.js': 1.98.0 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + dev: false + + /@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): + resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + dev: false + + /@solana/spl-token@0.1.8: resolution: {integrity: sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ==} engines: {node: '>= 10'} + dependencies: + '@babel/runtime': 7.26.0 + '@solana/web3.js': 1.98.0 + bn.js: 5.2.1 + buffer: 6.0.3 + buffer-layout: 1.2.2 + dotenv: 10.0.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false - '@solana/spl-token@0.3.11': + /@solana/spl-token@0.3.11(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5): resolution: {integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==} engines: {node: '>=16'} peerDependencies: '@solana/web3.js': ^1.88.0 + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0 + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/web3.js': 1.98.0 + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + dev: false - '@solana/spl-token@0.4.6': + /@solana/spl-token@0.3.11(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): + resolution: {integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.88.0 + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0 + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0 + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + dev: false + + /@solana/spl-token@0.4.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==} engines: {node: '>=16'} peerDependencies: '@solana/web3.js': ^1.91.6 + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0 + '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0 + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + dev: false - '@solana/spl-token@0.4.8': + /@solana/spl-token@0.4.8(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-RO0JD9vPRi4LsAbMUdNbDJ5/cv2z11MGhtAvFeRzT4+hAGE/FUzRi0tkkWtuCfSIU3twC6CtmAihRp/+XXjWsA==} engines: {node: '>=16'} peerDependencies: '@solana/web3.js': ^1.94.0 + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0 + '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.95.3 + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + dev: false - '@solana/spl-token@0.4.9': + /@solana/spl-token@0.4.9(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-g3wbj4F4gq82YQlwqhPB0gHFXfgsC6UmyGMxtSLf/BozT/oKd59465DbnlUK8L8EcimKMavxsVAMoLcEdeCicg==} engines: {node: '>=16'} peerDependencies: '@solana/web3.js': ^1.95.3 + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0 + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0 + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + dev: false - '@solana/spl-type-length-value@0.1.0': + /@solana/spl-type-length-value@0.1.0: resolution: {integrity: sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA==} engines: {node: '>=16'} + dependencies: + buffer: 6.0.3 + dev: false - '@solana/web3.js@1.95.3': + /@solana/web3.js@1.95.3: resolution: {integrity: sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==} + dependencies: + '@babel/runtime': 7.26.0 + '@noble/curves': 1.7.0 + '@noble/hashes': 1.6.1 + '@solana/buffer-layout': 4.0.1 + agentkeepalive: 4.6.0 + bigint-buffer: 1.1.5 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.1.3 + node-fetch: 2.7.0 + rpc-websockets: 9.0.4 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false - '@solana/web3.js@1.98.0': + /@solana/web3.js@1.98.0: resolution: {integrity: sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA==} + dependencies: + '@babel/runtime': 7.26.0 + '@noble/curves': 1.7.0 + '@noble/hashes': 1.6.1 + '@solana/buffer-layout': 4.0.1 + agentkeepalive: 4.6.0 + bigint-buffer: 1.1.5 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.1.3 + node-fetch: 2.7.0 + rpc-websockets: 9.0.4 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false - '@swc/helpers@0.5.15': + /@swc/helpers@0.5.15: resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + dependencies: + tslib: 2.8.1 + dev: false - '@tensor-hq/tensor-common@8.3.1': + /@tensor-hq/tensor-common@8.3.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-cgc+Z0nR23pi+1DfJgF1+afWd+xf1e6VYPM9yhECshmERr6BgojQfcuoltHHcgpwSlLrZXnm47kQ48I2M6rxFQ==} + dependencies: + '@coral-xyz/anchor': 0.26.0 + '@metaplex-foundation/mpl-auction-house': 2.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@metaplex-foundation/mpl-bubblegum': 0.7.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0 + axios: 0.28.1 + big.js: 6.2.2 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 5.0.0 + exponential-backoff: 3.1.1 + js-sha3: 0.8.0 + semaphore: 1.1.0 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - typescript + - utf-8-validate + dev: false - '@tensor-oss/tensorswap-sdk@4.5.0': + /@tensor-oss/tensorswap-sdk@4.5.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): resolution: {integrity: sha512-eNM6k1DT5V/GadxSHm8//z2wlLl8/EcA0KFQXKaxRba/2MirNySsoVGxDXO2UdOI4eZMse8f+8Et3P63WWjsIw==} + dependencies: + '@coral-xyz/anchor': 0.26.0 + '@msgpack/msgpack': 2.8.0 + '@saberhq/solana-contrib': 1.15.0(@solana/web3.js@1.98.0)(bn.js@5.2.1) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0 + '@tensor-hq/tensor-common': 8.3.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@types/bn.js': 5.1.6 + big.js: 6.2.2 + bn.js: 5.2.1 + js-sha256: 0.9.0 + keccak256: 1.0.6 + math-expression-evaluator: 2.0.6 + merkletreejs: 0.3.11 + uuid: 8.3.2 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - typescript + - utf-8-validate + dev: false - '@tiplink/api@0.3.1': + /@tiplink/api@0.3.1(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1): resolution: {integrity: sha512-HjnXethjKOHTYT0IP1BewlMS7wZJ+hsoDgRa6jA1cNvxvwQjE1WHOyvOUPpAi+DJDw4P4/omFtyHr7dwLfnB/g==} + dependencies: + '@coral-xyz/anchor': 0.29.0 + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/web3.js': 1.98.0 + bs58: 5.0.0 + libsodium: 0.7.15 + libsodium-wrappers-sumo: 0.7.15 + nanoid: 3.3.8 + sodium-plus: 0.9.0(sodium-native@3.4.1) + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + typescript: 4.9.5 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - sodium-native + - utf-8-validate + dev: false - '@tsconfig/node10@1.0.11': + /@tsconfig/node10@1.0.11: resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + dev: true - '@tsconfig/node12@1.0.11': + /@tsconfig/node12@1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true - '@tsconfig/node14@1.0.3': + /@tsconfig/node14@1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true - '@tsconfig/node16@1.0.4': + /@tsconfig/node16@1.0.4: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true - '@types/bn.js@5.1.6': + /@types/bn.js@5.1.6: resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} + dependencies: + '@types/node': 22.10.2 - '@types/chai@5.0.1': + /@types/chai@5.0.1: resolution: {integrity: sha512-5T8ajsg3M/FOncpLYW7sdOcD6yf4+722sze/tc4KQV0P8Z2rAr3SAuHCIkYmYpt8VbcQlnz8SxlOlPQYefe4cA==} + dependencies: + '@types/deep-eql': 4.0.2 + dev: true - '@types/connect@3.4.38': + /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + dependencies: + '@types/node': 22.10.2 + dev: false - '@types/deep-eql@4.0.2': + /@types/deep-eql@4.0.2: resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + dev: true - '@types/estree@1.0.6': + /@types/estree@1.0.6: resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + dev: false - '@types/hast@3.0.4': + /@types/hast@3.0.4: resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + dependencies: + '@types/unist': 3.0.3 + dev: false - '@types/json-schema@7.0.15': + /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: false - '@types/mdast@4.0.4': + /@types/mdast@4.0.4: resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + dependencies: + '@types/unist': 3.0.3 + dev: false - '@types/node-fetch@2.6.12': + /@types/node-fetch@2.6.12: resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + dependencies: + '@types/node': 22.10.2 + form-data: 4.0.1 + dev: false - '@types/node@12.20.55': + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + dev: false - '@types/node@18.19.68': - resolution: {integrity: sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==} + /@types/node@18.19.69: + resolution: {integrity: sha512-ECPdY1nlaiO/Y6GUnwgtAAhLNaQ53AyIVz+eILxpEo5OvuqE6yWkqWBIb5dU0DqhKQtMeny+FBD3PK6lm7L5xQ==} + dependencies: + undici-types: 5.26.5 + dev: false - '@types/node@22.10.2': + /@types/node@22.10.2: resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} + dependencies: + undici-types: 6.20.0 - '@types/promise-retry@1.1.6': + /@types/promise-retry@1.1.6: resolution: {integrity: sha512-EC1+OMXV0PZb0pf+cmyxc43MEP2CDumZe4AfuxWboxxEixztIebknpJPZAX5XlodGF1OY+C1E/RAeNGzxf+bJA==} + dependencies: + '@types/retry': 0.12.5 + dev: false - '@types/retry@0.12.0': + /@types/retry@0.12.0: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + dev: false - '@types/retry@0.12.5': + /@types/retry@0.12.5: resolution: {integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==} + dev: false - '@types/unist@3.0.3': + /@types/unist@3.0.3: resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + dev: false - '@types/uuid@10.0.0': + /@types/uuid@10.0.0: resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + dev: false - '@types/uuid@8.3.4': + /@types/uuid@8.3.4: resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} + dev: false - '@types/ws@7.4.7': + /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + dependencies: + '@types/node': 22.10.2 + dev: false - '@types/ws@8.5.13': + /@types/ws@8.5.13: resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} + dependencies: + '@types/node': 22.10.2 + dev: false - '@typescript-eslint/eslint-plugin@8.18.2': + /@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2)(eslint@8.56.0)(typescript@5.7.2): resolution: {integrity: sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==} 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' + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.18.2(eslint@8.56.0)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.18.2 + '@typescript-eslint/type-utils': 8.18.2(eslint@8.56.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.2(eslint@8.56.0)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.2 + eslint: 8.56.0 + 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 + transitivePeerDependencies: + - supports-color + dev: true - '@typescript-eslint/parser@8.18.2': + /@typescript-eslint/parser@8.18.2(eslint@8.56.0)(typescript@5.7.2): resolution: {integrity: sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==} 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' + dependencies: + '@typescript-eslint/scope-manager': 8.18.2 + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.2 + debug: 4.4.0 + eslint: 8.56.0 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true - '@typescript-eslint/scope-manager@8.18.2': + /@typescript-eslint/scope-manager@8.18.2: resolution: {integrity: sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/visitor-keys': 8.18.2 + dev: true - '@typescript-eslint/type-utils@8.18.2': + /@typescript-eslint/type-utils@8.18.2(eslint@8.56.0)(typescript@5.7.2): resolution: {integrity: sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==} 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' + dependencies: + '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.2(eslint@8.56.0)(typescript@5.7.2) + debug: 4.4.0 + eslint: 8.56.0 + ts-api-utils: 1.4.3(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true - '@typescript-eslint/types@8.18.2': + /@typescript-eslint/types@8.18.2: resolution: {integrity: sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true - '@typescript-eslint/typescript-estree@8.18.2': + /@typescript-eslint/typescript-estree@8.18.2(typescript@5.7.2): resolution: {integrity: sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' + dependencies: + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/visitor-keys': 8.18.2 + debug: 4.4.0 + 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 + transitivePeerDependencies: + - supports-color + dev: true - '@typescript-eslint/utils@8.18.2': + /@typescript-eslint/utils@8.18.2(eslint@8.56.0)(typescript@5.7.2): resolution: {integrity: sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==} 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' + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.56.0) + '@typescript-eslint/scope-manager': 8.18.2 + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) + eslint: 8.56.0 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true - '@typescript-eslint/visitor-keys@8.18.2': + /@typescript-eslint/visitor-keys@8.18.2: resolution: {integrity: sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.18.2 + eslint-visitor-keys: 4.2.0 + dev: true - '@ungap/structured-clone@1.2.1': + /@ungap/structured-clone@1.2.1: resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} - JSONStream@1.3.5: + /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: false - abort-controller@3.0.0: + /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + dev: false - acorn-jsx@5.3.2: + /acorn-jsx@5.3.2(acorn@8.14.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.14.0 - acorn-walk@8.3.4: + /acorn-walk@8.3.4: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} + dependencies: + acorn: 8.14.0 + dev: true - acorn@8.14.0: + /acorn@8.14.0: resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + /agentkeepalive@4.6.0: + resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} + dependencies: + humanize-ms: 1.2.1 + dev: false - ajv@6.12.6: + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 - ansi-regex@5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: + /ansi-regex@6.1.0: resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} + dev: false - ansi-styles@4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 - ansi-styles@5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + dev: false - ansi-styles@6.2.1: + /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + dev: false - ansicolors@0.3.2: + /ansicolors@0.3.2: resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} + dev: false - arg@4.1.3: + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true - argparse@2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - assert@2.1.0: + /assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + dependencies: + call-bind: 1.0.8 + is-nan: 1.3.2 + object-is: 1.1.6 + object.assign: 4.1.7 + util: 0.12.5 + dev: false - assertion-error@2.0.1: + /assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + dev: false - asynckit@0.4.0: + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false - available-typed-arrays@1.0.7: + /available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: false - axios-retry@3.9.1: + /axios-retry@3.9.1: resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} + dependencies: + '@babel/runtime': 7.26.0 + is-retry-allowed: 2.2.0 + dev: false - axios@0.28.1: + /axios@0.28.1: resolution: {integrity: sha512-iUcGA5a7p0mVb4Gm/sy+FSECNkPFT4y7wt6OM/CDpO/OnNCvSs3PoMG8ibrC9jRoGYU0gUK5pXVC4NPXq6lHRQ==} + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false - axios@1.7.9: + /axios@1.7.9: resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==} + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false - balanced-match@1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - base-x@3.0.10: + /base-x@3.0.10: resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false - base-x@4.0.0: + /base-x@4.0.0: resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + dev: false - base-x@5.0.0: + /base-x@5.0.0: resolution: {integrity: sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==} + dev: false - base64-js@1.5.1: + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false - big-integer@1.6.52: + /big-integer@1.6.52: resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} engines: {node: '>=0.6'} + dev: false - big.js@6.2.2: + /big.js@6.2.2: resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} + dev: false - bigint-buffer@1.1.5: + /bigint-buffer@1.1.5: resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} engines: {node: '>= 10.0.0'} + requiresBuild: true + dependencies: + bindings: 1.5.0 + dev: false - bignumber.js@9.1.2: + /bignumber.js@9.1.2: resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + dev: false - bindings@1.5.0: + /bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + dependencies: + file-uri-to-path: 1.0.0 + dev: false - bintrees@1.0.2: + /bintrees@1.0.2: resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==} + dev: false - bn.js@4.11.6: + /bn.js@4.11.6: resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + dev: false - bn.js@5.2.1: + /bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: false - borsh@0.7.0: + /borsh@0.7.0: resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} + dependencies: + bn.js: 5.2.1 + bs58: 4.0.1 + text-encoding-utf-8: 1.0.2 + dev: false - borsh@1.0.0: + /borsh@1.0.0: resolution: {integrity: sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==} + dev: false - borsh@2.0.0: + /borsh@2.0.0: resolution: {integrity: sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==} + dev: false - brace-expansion@1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 - brace-expansion@2.0.1: + /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 - braces@3.0.3: + /braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + dependencies: + fill-range: 7.1.1 + dev: true - bs58@4.0.1: + /bs58@4.0.1: resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + dependencies: + base-x: 3.0.10 + dev: false - bs58@5.0.0: + /bs58@5.0.0: resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + dependencies: + base-x: 4.0.0 + dev: false - bs58@6.0.0: + /bs58@6.0.0: resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + dependencies: + base-x: 5.0.0 + dev: false - buffer-layout@1.2.2: + /buffer-layout@1.2.2: resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} engines: {node: '>=4.5'} + dev: false - buffer-reverse@1.0.1: + /buffer-reverse@1.0.1: resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} + dev: false - buffer@5.7.1: + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false - buffer@6.0.3: + /buffer@6.0.1: + resolution: {integrity: sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + /bufferutil@4.0.9: + resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.8.4 + dev: false - call-bind-apply-helpers@1.0.1: + /call-bind-apply-helpers@1.0.1: resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + dev: false - call-bind@1.0.8: + /call-bind@1.0.8: resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} + dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.1 + get-intrinsic: 1.2.6 + set-function-length: 1.2.2 + dev: false - call-bound@1.0.3: + /call-bound@1.0.3: resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} engines: {node: '>= 0.4'} + dependencies: + call-bind-apply-helpers: 1.0.1 + get-intrinsic: 1.2.6 + dev: false - callsites@3.1.0: + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camelcase@6.3.0: + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} + dev: false - ccount@2.0.1: + /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + dev: false - chai@5.1.2: + /chai@5.1.2: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.2 + pathval: 2.0.0 + dev: false - chalk@4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 - chalk@5.4.1: + /chalk@5.4.1: resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: false - character-entities-html4@2.1.0: + /character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + dev: false - character-entities-legacy@3.0.0: + /character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + dev: false - check-error@2.1.1: + /check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} + dev: false - color-convert@2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 - color-name@1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - combined-stream@1.0.8: + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false - comma-separated-tokens@2.0.3: + /comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + dev: false - commander@10.0.1: + /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} + dev: false - commander@12.1.0: + /commander@12.1.0: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} + dev: false - commander@2.20.3: + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: false - concat-map@0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - create-require@1.1.1: + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true - cross-fetch@3.2.0: + /cross-fetch@3.2.0: resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: false - cross-spawn@7.0.6: + /cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 - crypto-hash@1.3.0: + /crypto-hash@1.3.0: resolution: {integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==} engines: {node: '>=8'} + dev: false - crypto-js@4.2.0: + /crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dev: false - dayjs@1.11.13: + /dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dev: false - debug@4.4.0: + /debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} peerDependencies: @@ -1176,118 +2614,173 @@ packages: peerDependenciesMeta: supports-color: optional: true + dependencies: + ms: 2.1.3 - decamelize@1.2.0: + /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} + dev: false - decimal.js-light@2.5.1: + /decimal.js-light@2.5.1: resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + dev: false - decimal.js@10.4.3: + /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: false - deep-eql@5.0.2: + /deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} + dev: false - deep-is@0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - define-data-property@1.1.4: + /define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + dev: false - define-properties@1.2.1: + /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + dev: false - delay@5.0.0: + /delay@5.0.0: resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} engines: {node: '>=10'} + dev: false - delayed-stream@1.0.0: + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + dev: false - dequal@2.0.3: + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + dev: false - devlop@1.1.0: + /devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dependencies: + dequal: 2.0.3 + dev: false - diff@4.0.2: + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} + dev: true - doctrine@3.0.0: + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true - dot-case@3.0.4: + /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + dev: false - dotenv@10.0.0: + /dotenv@10.0.0: resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} engines: {node: '>=10'} + dev: false - dotenv@16.4.7: + /dotenv@16.4.7: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} + dev: false - dunder-proto@1.0.1: + /dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + dependencies: + call-bind-apply-helpers: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + dev: false - eastasianwidth@0.2.0: + /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false - emoji-regex-xs@1.0.0: + /emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + dev: false - emoji-regex@8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: false - emoji-regex@9.2.2: + /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false - entities@4.5.0: + /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + dev: false - err-code@2.0.3: + /err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + dev: false - es-define-property@1.0.1: + /es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} + dev: false - es-errors@1.3.0: + /es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + dev: false - es-object-atoms@1.0.0: + /es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + dev: false - es6-promise@4.2.8: + /es6-promise@4.2.8: resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + dev: false - es6-promisify@5.0.0: + /es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + dependencies: + es6-promise: 4.2.8 + dev: false - escape-string-regexp@4.0.0: + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-prettier@9.1.0: + /eslint-config-prettier@9.1.0(eslint@8.56.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' + dependencies: + eslint: 8.56.0 + dev: true - eslint-plugin-prettier@5.2.1: + /eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.4.2): resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1300,30 +2793,87 @@ packages: optional: true eslint-config-prettier: optional: true + dependencies: + eslint: 8.56.0 + eslint-config-prettier: 9.1.0(eslint@8.56.0) + prettier: 3.4.2 + prettier-linter-helpers: 1.0.0 + synckit: 0.9.2 + dev: true - eslint-scope@7.2.2: + /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true - eslint-scope@8.2.0: + /eslint-scope@8.2.0: resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: false - eslint-visitor-keys@3.4.3: + /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.0: + /eslint-visitor-keys@4.2.0: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.56.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.56.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.1 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true - eslint@9.17.0: + /eslint@9.17.0: resolution: {integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true @@ -1332,118 +2882,235 @@ packages: peerDependenciesMeta: jiti: optional: true + 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 + dev: false - espree@10.3.0: + /espree@10.3.0: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + dev: false - espree@9.6.1: + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 3.4.3 + dev: true - esquery@1.6.0: + /esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 - esrecurse@4.3.0: + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 - estraverse@5.3.0: + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - esutils@2.0.3: + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - ethereum-bloom-filters@1.2.0: + /ethereum-bloom-filters@1.2.0: resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==} + dependencies: + '@noble/hashes': 1.6.1 + dev: false - ethereum-cryptography@2.2.1: + /ethereum-cryptography@2.2.1: resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + dev: false - ethjs-unit@0.1.6: + /ethjs-unit@0.1.6: resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + dev: false - event-target-shim@5.0.1: + /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} + dev: false - eventemitter3@4.0.7: + /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: false - eventemitter3@5.0.1: + /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: false - exponential-backoff@3.1.1: + /exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + dev: false - eyes@0.1.8: + /eyes@0.1.8: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} + dev: false - fast-deep-equal@3.1.3: + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-diff@1.3.0: + /fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true - fast-glob@3.3.2: + /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + dev: true - fast-json-stable-stringify@2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-levenshtein@2.0.6: + /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-stable-stringify@1.0.0: + /fast-stable-stringify@1.0.0: resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} + dev: false - fastestsmallesttextencoderdecoder@1.0.22: + /fastestsmallesttextencoderdecoder@1.0.22: resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} + dev: false - fastq@1.18.0: + /fastq@1.18.0: resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} + dependencies: + reusify: 1.0.4 + dev: true - file-entry-cache@6.0.1: + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true - file-entry-cache@8.0.0: + /file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} + dependencies: + flat-cache: 4.0.1 + dev: false - file-uri-to-path@1.0.0: + /file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + dev: false - fill-range@7.1.1: + /fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true - find-process@1.4.8: + /find-process@1.4.8: resolution: {integrity: sha512-W2PIdgXfhYeIlTzGiDyGJhjslZcwQCRcSw6plgyLu3CFk1PhQrKkTbQ5jkJ2NhOabMwETTrhl7c+xBcQ7B2jRg==} hasBin: true + dependencies: + 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 + dev: false - find-up@5.0.0: + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 - flat-cache@3.2.0: + /flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true - flat-cache@4.0.1: + /flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + dev: false - flatted@3.3.2: + /flatted@3.3.2: resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} - follow-redirects@1.15.9: + /follow-redirects@1.15.9: resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} peerDependencies: @@ -1451,269 +3118,488 @@ packages: peerDependenciesMeta: debug: optional: true + dev: false - for-each@0.3.3: + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: false - foreground-child@3.3.0: + /foreground-child@3.3.0: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + dev: false - form-data-encoder@1.7.2: + /form-data-encoder@1.7.2: resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} + dev: false - form-data@4.0.1: + /form-data@4.0.1: resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false - formdata-node@4.4.1: + /formdata-node@4.4.1: resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} engines: {node: '>= 12.20'} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 4.0.0-beta.3 + dev: false - fs.realpath@1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true - function-bind@1.1.2: + /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: false - get-intrinsic@1.2.6: + /get-intrinsic@1.2.6: resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} engines: {node: '>= 0.4'} + dependencies: + call-bind-apply-helpers: 1.0.1 + dunder-proto: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + function-bind: 1.1.2 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + dev: false - glob-parent@5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true - glob-parent@6.0.2: + /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 - glob@10.4.5: + /glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + dev: false - glob@11.0.0: + /glob@11.0.0: resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} engines: {node: 20 || >=22} hasBin: true + 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 + dev: false - glob@7.2.3: + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true - globals@13.24.0: + /globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true - globals@14.0.0: + /globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} + dev: false - gopd@1.2.0: + /gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + dev: false - graceful-fs@4.2.11: + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + requiresBuild: true + dev: false + optional: true - graphemer@1.4.0: + /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true - graphemesplit@2.4.4: + /graphemesplit@2.4.4: resolution: {integrity: sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w==} + dependencies: + js-base64: 3.7.7 + unicode-trie: 2.0.0 + dev: false - groq-sdk@0.5.0: + /groq-sdk@0.5.0: resolution: {integrity: sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw==} + dependencies: + '@types/node': 18.19.69 + '@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 + web-streams-polyfill: 3.3.3 + transitivePeerDependencies: + - encoding + dev: false - has-flag@4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-property-descriptors@1.0.2: + /has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.1 + dev: false - has-symbols@1.1.0: + /has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} + dev: false - has-tostringtag@1.0.2: + /has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.1.0 + dev: false - hash.js@1.1.7: + /hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: false - hasown@2.0.2: + /hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: false - hast-util-to-html@9.0.4: + /hast-util-to-html@9.0.4: resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + dev: false - hast-util-whitespace@3.0.0: + /hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + dependencies: + '@types/hast': 3.0.4 + dev: false - html-void-elements@3.0.0: + /html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + dev: false - humanize-ms@1.2.1: + /humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + dependencies: + ms: 2.1.3 + dev: false - ieee754@1.2.1: + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false - ignore@5.3.2: + /ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - import-fresh@3.3.0: + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 - imurmurhash@0.1.4: + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - inflight@1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true - inherits@2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ipaddr.js@2.2.0: + /ipaddr.js@2.2.0: resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} + dev: false - is-arguments@1.2.0: + /is-arguments@1.2.0: resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} engines: {node: '>= 0.4'} + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + dev: false - is-callable@1.2.7: + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} + dev: false - is-extglob@2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-fullwidth-code-point@3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + dev: false - is-generator-function@1.0.10: + /is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: false - is-glob@4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 - is-hex-prefixed@1.0.0: + /is-hex-prefixed@1.0.0: resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} engines: {node: '>=6.5.0', npm: '>=3'} + dev: false - is-nan@1.3.2: + /is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + dev: false - is-number@7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + dev: true - is-path-inside@3.0.3: + /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} + dev: true - is-retry-allowed@2.2.0: + /is-retry-allowed@2.2.0: resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} engines: {node: '>=10'} + dev: false - is-typed-array@1.1.15: + /is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.18 + dev: false - is-typedarray@1.0.0: + /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: false - isexe@2.0.0: + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isomorphic-ws@4.0.1: + /isomorphic-ws@4.0.1(ws@7.5.10): resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: ws: '*' + dependencies: + ws: 7.5.10 + dev: false - jackspeak@3.4.3: + /isomorphic-ws@4.0.1(ws@8.18.0): + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + dev: false + + /jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: false - jackspeak@4.0.2: + /jackspeak@4.0.2: resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} engines: {node: 20 || >=22} + dependencies: + '@isaacs/cliui': 8.0.2 + dev: false - jayson@4.1.3: + /jayson@4.1.3: resolution: {integrity: sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==} engines: {node: '>=8'} hasBin: true + dependencies: + '@types/connect': 3.4.38 + '@types/node': 12.20.55 + '@types/ws': 7.4.7 + JSONStream: 1.3.5 + commander: 2.20.3 + delay: 5.0.0 + es6-promisify: 5.0.0 + eyes: 0.1.8 + isomorphic-ws: 4.0.1(ws@7.5.10) + json-stringify-safe: 5.0.1 + uuid: 8.3.2 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false - js-base64@3.7.7: + /js-base64@3.7.7: resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + dev: false - js-sha256@0.11.0: + /js-sha256@0.11.0: resolution: {integrity: sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q==} + dev: false - js-sha256@0.9.0: + /js-sha256@0.9.0: resolution: {integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==} + dev: false - js-sha3@0.8.0: + /js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + dev: false - js-tiktoken@1.0.16: + /js-tiktoken@1.0.16: resolution: {integrity: sha512-nUVdO5k/M9llWpiaZlBBDdtmr6qWXwSD6fgaDu2zM8UP+OXxx9V37lFkI6w0/1IuaDx7WffZ37oYd9KvcWKElg==} + dependencies: + base64-js: 1.5.1 + dev: false - js-yaml@4.1.0: + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + dependencies: + argparse: 2.0.1 - json-buffer@3.0.1: + /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-schema-traverse@0.4.1: + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - json-stable-stringify-without-jsonify@1.0.1: + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-stringify-safe@5.0.1: + /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: false - json5@2.2.3: + /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + dev: false - jsonfile@6.1.0: + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: false - jsonparse@1.3.1: + /jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} + dev: false - jsonpointer@5.0.1: + /jsonpointer@5.0.1: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} + dev: false - keccak256@1.0.6: + /keccak256@1.0.6: resolution: {integrity: sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==} + dependencies: + bn.js: 5.2.1 + buffer: 6.0.3 + keccak: 3.0.4 + dev: false - keccak@3.0.4: + /keccak@3.0.4: resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.8.4 + readable-stream: 3.6.2 + dev: false - keyv@4.5.4: + /keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 - langchain@0.3.8: + /langchain@0.3.8(@langchain/core@0.3.26)(@langchain/groq@0.1.2)(openai@4.77.0): resolution: {integrity: sha512-EiAHFgBdThuXFmIx9j81wjdPItpRsw0Ck4r5dyhB74gyhehRGna/UK2CTqeKVnIUM/f4g4JbxUgAU4voXljDMw==} engines: {node: '>=18'} peerDependencies: @@ -1758,169 +3644,292 @@ packages: optional: true typeorm: optional: true + dependencies: + '@langchain/core': 0.3.26(openai@4.77.0) + '@langchain/groq': 0.1.2(@langchain/core@0.3.26) + '@langchain/openai': 0.3.16(@langchain/core@0.3.26) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.26) + js-tiktoken: 1.0.16 + js-yaml: 4.1.0 + jsonpointer: 5.0.1 + langsmith: 0.2.14(openai@4.77.0) + openapi-types: 12.1.3 + p-retry: 4.6.2 + uuid: 10.0.0 + yaml: 2.7.0 + zod: 3.24.1 + zod-to-json-schema: 3.24.1(zod@3.24.1) + transitivePeerDependencies: + - encoding + - openai + dev: false - langsmith@0.2.14: + /langsmith@0.2.14(openai@4.77.0): resolution: {integrity: sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==} peerDependencies: openai: '*' peerDependenciesMeta: openai: optional: true + dependencies: + '@types/uuid': 10.0.0 + commander: 10.0.1 + openai: 4.77.0(zod@3.24.1) + p-queue: 6.6.2 + p-retry: 4.6.2 + semver: 7.6.3 + uuid: 10.0.0 + dev: false - levn@0.4.1: + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 - libsodium-sumo@0.7.15: + /libsodium-sumo@0.7.15: resolution: {integrity: sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==} + dev: false - libsodium-wrappers-sumo@0.7.15: + /libsodium-wrappers-sumo@0.7.15: resolution: {integrity: sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==} + dependencies: + libsodium-sumo: 0.7.15 + dev: false - libsodium-wrappers@0.7.15: + /libsodium-wrappers@0.7.15: resolution: {integrity: sha512-E4anqJQwcfiC6+Yrl01C1m8p99wEhLmJSs0VQqST66SbQXXBoaJY0pF4BNjRYa/sOQAxx6lXAaAFIlx+15tXJQ==} + dependencies: + libsodium: 0.7.15 + dev: false - libsodium@0.7.15: + /libsodium@0.7.15: resolution: {integrity: sha512-sZwRknt/tUpE2AwzHq3jEyUU5uvIZHtSssktXq7owd++3CSgn8RGrv6UZJJBpP7+iBghBqe7Z06/2M31rI2NKw==} + dev: false - linkify-it@5.0.0: + /linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + dependencies: + uc.micro: 2.1.0 + dev: false - locate-path@6.0.0: + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 - lodash.merge@4.6.2: + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash@4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false - loglevel@1.9.2: + /loglevel@1.9.2: resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} engines: {node: '>= 0.6.0'} + dev: false - loupe@3.1.2: + /loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + dev: false - lower-case@2.0.2: + /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.8.1 + dev: false - lru-cache@10.4.3: + /lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + dev: false - lru-cache@11.0.2: + /lru-cache@11.0.2: resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} engines: {node: 20 || >=22} + dev: false - lunr@2.3.9: + /lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + dev: false - make-error@1.3.6: + /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true - markdown-it@14.1.0: + /markdown-it@14.1.0: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + dev: false - math-expression-evaluator@2.0.6: + /math-expression-evaluator@2.0.6: resolution: {integrity: sha512-DRung1qNcKbgkhFeQ0fBPUFB6voRUMY7KyRyp1TRQ2v95Rp2egC823xLRooM1mDx1rmbkY7ym6ZWmpaE/VimOA==} + dev: false - math-intrinsics@1.1.0: + /math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + dev: false - mdast-util-to-hast@13.2.0: + /mdast-util-to-hast@13.2.0: resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.1 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + dev: false - mdurl@2.0.0: + /mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + dev: false - merge2@1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + dev: true - merkletreejs@0.3.11: + /merkletreejs@0.3.11: resolution: {integrity: sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==} engines: {node: '>= 7.6.0'} + dependencies: + bignumber.js: 9.1.2 + buffer-reverse: 1.0.1 + crypto-js: 4.2.0 + treeify: 1.1.0 + web3-utils: 1.10.4 + dev: false - micro-ftch@0.3.1: + /micro-ftch@0.3.1: resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + dev: false - micromark-util-character@2.1.1: + /micromark-util-character@2.1.1: resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + dev: false - micromark-util-encode@2.0.1: + /micromark-util-encode@2.0.1: resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + dev: false - micromark-util-sanitize-uri@2.0.1: + /micromark-util-sanitize-uri@2.0.1: resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + dev: false - micromark-util-symbol@2.0.1: + /micromark-util-symbol@2.0.1: resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + dev: false - micromark-util-types@2.0.1: + /micromark-util-types@2.0.1: resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} + dev: false - micromatch@4.0.8: + /micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + dev: true - mime-db@1.52.0: + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + dev: false - mime-types@2.1.35: + /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false - minimalistic-assert@1.0.1: + /minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: false - minimatch@10.0.1: + /minimatch@10.0.1: resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} engines: {node: 20 || >=22} + dependencies: + brace-expansion: 2.0.1 + dev: false - minimatch@3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 - minimatch@9.0.5: + /minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 - minimist@1.2.8: + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: false - minipass@7.1.2: + /minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + dev: false - ms@2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mustache@4.2.0: + /mustache@4.2.0: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true + dev: false - nanoid@3.3.8: + /nanoid@3.3.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + dev: false - natural-compare@1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - no-case@3.0.4: + /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + dev: false - node-addon-api@2.0.2: + /node-addon-api@2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + dev: false - node-domexception@1.0.0: + /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} + dev: false - node-fetch@2.7.0: + /node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -1928,34 +3937,63 @@ packages: peerDependenciesMeta: encoding: optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false - node-gyp-build@4.8.4: + /node-gyp-build@4.8.4: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true + dev: false - number-to-bn@1.7.0: + /number-to-bn@1.7.0: resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + dev: false - object-is@1.1.6: + /object-is@1.1.6: resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + dev: false - object-keys@1.1.1: + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + dev: false - object.assign@4.1.7: + /object.assign@4.1.7: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + has-symbols: 1.1.0 + object-keys: 1.1.1 + dev: false - once@1.4.0: + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true - oniguruma-to-es@0.8.1: + /oniguruma-to-es@0.8.1: resolution: {integrity: sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==} + dependencies: + emoji-regex-xs: 1.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 + dev: false - openai@4.77.0: + /openai@4.77.0(zod@3.24.1): resolution: {integrity: sha512-WWacavtns/7pCUkOWvQIjyOfcdr9X+9n9Vvb0zFeKVDAqwCMDHB+iSr24SVaBAhplvSG6JrRXFpcNM9gWhOGIw==} hasBin: true peerDependencies: @@ -1963,332 +4001,549 @@ packages: peerDependenciesMeta: zod: optional: true + dependencies: + '@types/node': 18.19.69 + '@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 + zod: 3.24.1 + transitivePeerDependencies: + - encoding + dev: false - openapi-types@12.1.3: + /openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + dev: false - optionator@0.9.4: + /optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 - p-finally@1.0.0: + /p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} + dev: false - p-limit@3.1.0: + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 - p-locate@5.0.0: + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 - p-queue@6.6.2: + /p-queue@6.6.2: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + dev: false - p-retry@4.6.2: + /p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + dev: false - p-timeout@3.2.0: + /p-timeout@3.2.0: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} + dependencies: + p-finally: 1.0.0 + dev: false - package-json-from-dist@1.0.1: + /package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + dev: false - pako@0.2.9: + /pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + dev: false - pako@2.1.0: + /pako@2.1.0: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + dev: false - parent-module@1.0.1: + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 - path-exists@4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-is-absolute@1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + dev: true - path-key@3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-scurry@1.11.1: + /path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + dev: false - path-scurry@2.0.0: + /path-scurry@2.0.0: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} + dependencies: + lru-cache: 11.0.2 + minipass: 7.1.2 + dev: false - pathval@2.0.0: + /pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} + dev: false - percentile@1.6.0: + /percentile@1.6.0: resolution: {integrity: sha512-8vSyjdzwxGDHHwH+cSGch3A9Uj2On3UpgOWxWXMKwUvoAbnujx6DaqmV1duWXNiH/oEWpyVd6nSQccix6DM3Ng==} + dev: false - picomatch@2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + dev: true - poly1305-js@0.4.4: + /poly1305-js@0.4.4: resolution: {integrity: sha512-5B6/S+vg5AOr66wJDkh5LOpU/F3EKANDy4VXKsNZLXea1uCy6CiOWOZ3VhcC0nYdhE7vJUMcLxqcVlrv2g/+Rg==} + dependencies: + big-integer: 1.6.52 + dev: false - possible-typed-array-names@1.0.0: + /possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} + dev: false - prelude-ls@1.2.1: + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-linter-helpers@1.0.0: + /prettier-linter-helpers@1.0.0: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true - prettier@2.8.8: + /prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true + dev: false - prettier@3.4.2: + /prettier@3.4.2: resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} engines: {node: '>=14'} hasBin: true + dev: true - prom-client@15.1.3: + /prom-client@15.1.3: resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==} engines: {node: ^16 || ^18 || >=20} + dependencies: + '@opentelemetry/api': 1.9.0 + tdigest: 0.1.2 + dev: false - promise-retry@2.0.1: + /promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + dev: false - property-information@6.5.0: + /property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + dev: false - proxy-from-env@1.1.0: + /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false - punycode.js@2.3.1: + /punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} + dev: false - punycode@2.3.1: + /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - queue-microtask@1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true - randombytes@2.1.0: + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false - readable-stream@3.6.2: + /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false - regenerator-runtime@0.14.1: + /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: false - regex-recursion@5.1.1: + /regex-recursion@5.1.1: resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} + dependencies: + regex: 5.1.1 + regex-utilities: 2.3.0 + dev: false - regex-utilities@2.3.0: + /regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + dev: false - regex@5.1.1: + /regex@5.1.1: resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + dependencies: + regex-utilities: 2.3.0 + dev: false - resolve-from@4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - retry@0.12.0: + /retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} + dev: false - retry@0.13.1: + /retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} + dev: false - reusify@1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true - rimraf@3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + dependencies: + glob: 7.2.3 + dev: true - rimraf@5.0.10: + /rimraf@5.0.10: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true + dependencies: + glob: 10.4.5 + dev: false - rimraf@6.0.1: + /rimraf@6.0.1: resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} engines: {node: 20 || >=22} hasBin: true + dependencies: + glob: 11.0.0 + package-json-from-dist: 1.0.1 + dev: false - rpc-websockets@9.0.4: + /rpc-websockets@9.0.4: resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} + dependencies: + '@swc/helpers': 0.5.15 + '@types/uuid': 8.3.4 + '@types/ws': 8.5.13 + buffer: 6.0.3 + eventemitter3: 5.0.1 + uuid: 8.3.2 + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + dev: false - run-parallel@1.2.0: + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true - safe-buffer@5.2.1: + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false - semaphore@1.1.0: + /semaphore@1.1.0: resolution: {integrity: sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==} engines: {node: '>=0.8.0'} + dev: false - semver@7.6.3: + /semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true - set-function-length@1.2.2: + /set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.6 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + dev: false - shebang-command@2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 - shebang-regex@3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.24.4: + /shiki@1.24.4: resolution: {integrity: sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==} + dependencies: + '@shikijs/core': 1.24.4 + '@shikijs/engine-javascript': 1.24.4 + '@shikijs/engine-oniguruma': 1.24.4 + '@shikijs/types': 1.24.4 + '@shikijs/vscode-textmate': 9.3.1 + '@types/hast': 3.0.4 + dev: false - signal-exit@4.1.0: + /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + dev: false - snake-case@3.0.4: + /snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + dev: false - sodium-native@3.4.1: + /sodium-native@3.4.1: resolution: {integrity: sha512-PaNN/roiFWzVVTL6OqjzYct38NSXewdl2wz8SRB51Br/MLIJPrbM3XexhVWkq7D3UWMysfrhKVf1v1phZq6MeQ==} + requiresBuild: true + dependencies: + node-gyp-build: 4.8.4 + dev: false - sodium-plus@0.9.0: + /sodium-plus@0.9.0(sodium-native@3.4.1): resolution: {integrity: sha512-WWKxrd81qDL7C1A10yxNmZ135yovEZuIRnZ/BIf/FcajYBupbKbPdgzwlusPHLVxkMDDamcarq9PxxRBUSqpCw==} peerDependencies: sodium-native: ^3.2.0 + dependencies: + buffer: 5.7.1 + libsodium-wrappers: 0.7.15 + poly1305-js: 0.4.4 + sodium-native: 3.4.1 + typedarray-to-buffer: 3.1.5 + xsalsa20: 1.2.0 + dev: false - space-separated-tokens@2.0.2: + /space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + dev: false - spok@1.5.5: + /spok@1.5.5: resolution: {integrity: sha512-IrJIXY54sCNFASyHPOY+jEirkiJ26JDqsGiI0Dvhwcnkl0PEWi1PSsrkYql0rzDw8LFVTcA7rdUCAJdE2HE+2Q==} + dependencies: + ansicolors: 0.3.2 + find-process: 1.4.8 + transitivePeerDependencies: + - jiti + - supports-color + dev: false - string-width@4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: false - string-width@5.1.2: + /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: false - string_decoder@1.3.0: + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: false - stringify-entities@4.0.4: + /stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + dev: false - strip-ansi@6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 - strip-ansi@7.1.0: + /strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} + dependencies: + ansi-regex: 6.1.0 + dev: false - strip-bom@3.0.0: + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + dev: false - strip-hex-prefix@1.0.0: + /strip-hex-prefix@1.0.0: resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + dev: false - strip-json-comments@3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - superstruct@0.15.5: + /superstruct@0.15.5: resolution: {integrity: sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==} + dev: false - superstruct@2.0.2: + /superstruct@2.0.2: resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} engines: {node: '>=14.0.0'} + dev: false - supports-color@7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 - synckit@0.9.2: + /synckit@0.9.2: resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.8.1 + dev: true - tdigest@0.1.2: + /tdigest@0.1.2: resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} + dependencies: + bintrees: 1.0.2 + dev: false - text-encoding-utf-8@1.0.2: + /text-encoding-utf-8@1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + dev: false - text-table@0.2.0: + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - through@2.3.8: + /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: false - tiny-inflate@1.0.3: + /tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + dev: false - tiny-invariant@1.3.3: + /tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + dev: false - to-regex-range@5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true - toformat@2.0.0: + /toformat@2.0.0: resolution: {integrity: sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==} + dev: false - toml@3.0.0: + /toml@3.0.0: resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + dev: false - tr46@0.0.3: + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false - treeify@1.1.0: + /treeify@1.1.0: resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} engines: {node: '>=0.6'} + dev: false - trim-lines@3.0.1: + /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + dev: false - ts-api-utils@1.4.3: + /ts-api-utils@1.4.3(typescript@5.7.2): resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' + dependencies: + typescript: 5.7.2 + dev: true - ts-log@2.2.7: + /ts-log@2.2.7: resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + dev: false - ts-node@10.9.2: + /ts-node@10.9.2(@types/node@22.10.2)(typescript@5.7.2): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -2301,3036 +4556,6 @@ packages: optional: true '@swc/wasm': optional: true - - tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} - engines: {node: '>=6'} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - tweetnacl-util@0.15.1: - resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} - - tweetnacl@1.0.3: - resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - - typedoc@0.26.11: - resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} - engines: {node: '>= 18'} - hasBin: true - peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x - - typedoc@0.27.6: - resolution: {integrity: sha512-oBFRoh2Px6jFx366db0lLlihcalq/JzyCVp7Vaq1yphL/tbgx2e+bkpkCgJPunaPvPwoTOXSwasfklWHm7GfAw==} - engines: {node: '>= 18'} - hasBin: true - 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 - - typescript-collections@1.3.3: - resolution: {integrity: sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==} - - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - - typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} - engines: {node: '>=14.17'} - hasBin: true - - uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - - unicode-trie@2.0.0: - resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} - - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - - utf8@3.0.0: - resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - - uuid@10.0.0: - resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} - hasBin: true - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - - web-streams-polyfill@4.0.0-beta.3: - resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} - engines: {node: '>= 14'} - - web3-utils@1.10.4: - resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} - engines: {node: '>=8.0.0'} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which-typed-array@1.1.18: - resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} - engines: {node: '>= 0.4'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xsalsa20@1.2.0: - resolution: {integrity: sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w==} - - yaml@2.6.1: - resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} - engines: {node: '>= 14'} - hasBin: true - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - zod-to-json-schema@3.24.1: - resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} - peerDependencies: - zod: ^3.24.1 - - zod@3.24.1: - resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} - - zstddec@0.0.2: - resolution: {integrity: sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA==} - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@babel/runtime@7.26.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@bonfida/sns-records@0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': - dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10)) - '@noble/curves': 1.7.0 - '@scure/base': 1.2.1 - '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - borsh: 2.0.0 - buffer: 6.0.3 - graphemesplit: 2.4.4 - ipaddr.js: 2.2.0 - punycode: 2.3.1 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@cfworker/json-schema@4.0.3': {} - - '@cks-systems/manifest-sdk@0.1.73(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 6.0.0 - js-sha256: 0.11.0 - keccak256: 1.0.6 - percentile: 1.6.0 - prom-client: 15.1.3 - rimraf: 5.0.10 - typedoc: 0.26.11(typescript@5.7.2) - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - zstddec: 0.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - jiti - - supports-color - - typescript - - utf-8-validate - - '@coral-xyz/anchor@0.26.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(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 - 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 - - '@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - '@noble/hashes': 1.6.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(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 - crypto-hash: 1.3.0 - eventemitter3: 4.0.7 - pako: 2.1.0 - snake-case: 3.0.4 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@coral-xyz/borsh@0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': - dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))': - dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - buffer-layout: 1.2.2 - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)': - dependencies: - 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 - 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 - 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': - dependencies: - '@ethereumjs/rlp': 4.0.1 - ethereum-cryptography: 2.2.1 - micro-ftch: 0.3.1 - - '@ethersproject/bytes@5.7.0': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/logger@5.7.0': {} - - '@ethersproject/sha2@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - hash.js: 1.1.7 - - '@gerrit0/mini-shiki@1.24.4': - dependencies: - '@shikijs/engine-oniguruma': 1.24.4 - '@shikijs/types': 1.24.4 - '@shikijs/vscode-textmate': 9.3.1 - - '@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 - debug: 4.4.0 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/object-schema@2.0.3': {} - - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.1': {} - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))': - dependencies: - '@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.0(zod@3.24.1)) - mustache: 4.2.0 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 10.0.0 - zod: 3.24.1 - zod-to-json-schema: 3.24.1(zod@3.24.1) - transitivePeerDependencies: - - openai - - '@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': - dependencies: - '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) - '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(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 - - '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': - dependencies: - '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) - uuid: 10.0.0 - - '@langchain/langgraph-sdk@0.0.32': - 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.36(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': - dependencies: - '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) - '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) - '@langchain/langgraph-sdk': 0.0.32 - uuid: 10.0.0 - zod: 3.24.1 - - '@langchain/openai@0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))': - dependencies: - '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) - js-tiktoken: 1.0.16 - openai: 4.77.0(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.26(openai@4.77.0(zod@3.24.1)))': - dependencies: - '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) - js-tiktoken: 1.0.16 - - '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) - buffer: 6.0.3 - tweetnacl: 1.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@noble/hashes': 1.5.0 - '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) - buffer: 6.0.3 - superstruct: 2.0.2 - tweetnacl: 1.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@metaplex-foundation/beet-solana@0.3.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 5.0.0 - debug: 4.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@metaplex-foundation/beet-solana@0.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 5.0.0 - debug: 4.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 5.0.0 - debug: 4.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@metaplex-foundation/beet@0.4.0': - dependencies: - ansicolors: 0.3.2 - bn.js: 5.2.1 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - - '@metaplex-foundation/beet@0.6.1': - dependencies: - ansicolors: 0.3.2 - bn.js: 5.2.1 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - - '@metaplex-foundation/beet@0.7.1': - dependencies: - ansicolors: 0.3.2 - bn.js: 5.2.1 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - - '@metaplex-foundation/beet@0.7.2': - dependencies: - ansicolors: 0.3.2 - assert: 2.1.0 - bn.js: 5.2.1 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - - '@metaplex-foundation/cusper@0.0.2': {} - - '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.8)(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.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@metaplex-foundation/mpl-bubblegum@0.7.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) - '@metaplex-foundation/cusper': 0.0.2 - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.1.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - js-sha3: 0.8.0 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@metaplex-foundation/mpl-core@1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@msgpack/msgpack': 3.0.0-beta2 - '@noble/hashes': 1.6.1 - - '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.8)(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.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - debug: 4.4.0 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@metaplex-foundation/mpl-token-metadata@3.3.0(@metaplex-foundation/umi@0.9.2)': - dependencies: - '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi': 0.9.2 - - '@metaplex-foundation/mpl-toolbox@0.9.4(@metaplex-foundation/umi@0.9.2)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - - '@metaplex-foundation/rustbin@0.3.5': - dependencies: - debug: 4.4.0 - semver: 7.6.3 - text-table: 0.2.0 - toml: 3.0.0 - transitivePeerDependencies: - - supports-color - - '@metaplex-foundation/solita@0.12.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.4.0 - '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@metaplex-foundation/rustbin': 0.3.5 - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - camelcase: 6.3.0 - debug: 4.4.0 - js-sha256: 0.9.0 - prettier: 2.8.8 - snake-case: 3.0.4 - spok: 1.5.5 - 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.8)(utf-8-validate@5.0.10))': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@metaplex-foundation/umi-downloader-http': 0.9.2(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi-eddsa-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - '@metaplex-foundation/umi-http-fetch': 0.9.2(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi-program-repository': 0.9.2(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi-rpc-chunk-get-accounts': 0.9.2(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi-rpc-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - '@metaplex-foundation/umi-serializer-data-view': 0.9.2(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi-transaction-factory-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - encoding - - '@metaplex-foundation/umi-downloader-http@0.9.2(@metaplex-foundation/umi@0.9.2)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - - '@metaplex-foundation/umi-eddsa-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - '@noble/curves': 1.7.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - '@metaplex-foundation/umi-http-fetch@0.9.2(@metaplex-foundation/umi@0.9.2)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - - '@metaplex-foundation/umi-options@0.8.9': {} - - '@metaplex-foundation/umi-program-repository@0.9.2(@metaplex-foundation/umi@0.9.2)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - - '@metaplex-foundation/umi-public-keys@0.8.9': - dependencies: - '@metaplex-foundation/umi-serializers-encodings': 0.8.9 - - '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2(@metaplex-foundation/umi@0.9.2)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - - '@metaplex-foundation/umi-rpc-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - '@metaplex-foundation/umi-serializer-data-view@0.9.2(@metaplex-foundation/umi@0.9.2)': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - - '@metaplex-foundation/umi-serializers-core@0.8.9': {} - - '@metaplex-foundation/umi-serializers-encodings@0.8.9': - dependencies: - '@metaplex-foundation/umi-serializers-core': 0.8.9 - - '@metaplex-foundation/umi-serializers-numbers@0.8.9': - dependencies: - '@metaplex-foundation/umi-serializers-core': 0.8.9 - - '@metaplex-foundation/umi-serializers@0.9.0': - dependencies: - '@metaplex-foundation/umi-options': 0.8.9 - '@metaplex-foundation/umi-public-keys': 0.8.9 - '@metaplex-foundation/umi-serializers-core': 0.8.9 - '@metaplex-foundation/umi-serializers-encodings': 0.8.9 - '@metaplex-foundation/umi-serializers-numbers': 0.8.9 - - '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - '@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': - dependencies: - '@metaplex-foundation/umi': 0.9.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - buffer: 6.0.3 - - '@metaplex-foundation/umi@0.9.2': - dependencies: - '@metaplex-foundation/umi-options': 0.8.9 - '@metaplex-foundation/umi-public-keys': 0.8.9 - '@metaplex-foundation/umi-serializers': 0.9.0 - - '@msgpack/msgpack@2.8.0': {} - - '@msgpack/msgpack@3.0.0-beta2': {} - - '@noble/curves@1.4.2': - dependencies: - '@noble/hashes': 1.4.0 - - '@noble/curves@1.7.0': - dependencies: - '@noble/hashes': 1.6.0 - - '@noble/hashes@1.4.0': {} - - '@noble/hashes@1.5.0': {} - - '@noble/hashes@1.6.0': {} - - '@noble/hashes@1.6.1': {} - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.18.0 - - '@onsol/tldparser@0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@ethersproject/sha2': 5.7.0 - '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - borsh: 2.0.0 - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@opentelemetry/api@1.9.0': {} - - '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - decimal.js: 10.4.3 - tiny-invariant: 1.3.3 - - '@orca-so/whirlpools-sdk@0.13.12(@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': - dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - decimal.js: 10.4.3 - tiny-invariant: 1.3.3 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@pkgr/core@0.1.1': {} - - '@pythnetwork/price-service-client@1.9.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@pythnetwork/price-service-sdk': 1.8.0 - '@types/ws': 8.5.13 - axios: 1.7.9 - axios-retry: 3.9.1 - isomorphic-ws: 4.0.1(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - ts-log: 2.2.7 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - '@pythnetwork/price-service-sdk@1.8.0': - dependencies: - bn.js: 5.2.1 - - '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - axios: 1.7.9 - big.js: 6.2.2 - bn.js: 5.2.1 - dayjs: 1.11.13 - decimal.js-light: 2.5.1 - jsonfile: 6.1.0 - lodash: 4.17.21 - toformat: 2.0.0 - tsconfig-paths: 4.2.0 - transitivePeerDependencies: - - bufferutil - - debug - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@saberhq/option-utils@1.15.0': - dependencies: - tslib: 2.8.1 - - '@saberhq/solana-contrib@1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) - '@types/promise-retry': 1.1.6 - '@types/retry': 0.12.5 - bn.js: 5.2.1 - promise-retry: 2.0.1 - retry: 0.13.1 - tiny-invariant: 1.3.3 - tslib: 2.8.1 - - '@scure/base@1.1.9': {} - - '@scure/base@1.2.1': {} - - '@scure/bip32@1.4.0': - dependencies: - '@noble/curves': 1.4.2 - '@noble/hashes': 1.4.0 - '@scure/base': 1.1.9 - - '@scure/bip39@1.3.0': - dependencies: - '@noble/hashes': 1.4.0 - '@scure/base': 1.1.9 - - '@shikijs/core@1.24.4': - dependencies: - '@shikijs/engine-javascript': 1.24.4 - '@shikijs/engine-oniguruma': 1.24.4 - '@shikijs/types': 1.24.4 - '@shikijs/vscode-textmate': 9.3.1 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.4 - - '@shikijs/engine-javascript@1.24.4': - dependencies: - '@shikijs/types': 1.24.4 - '@shikijs/vscode-textmate': 9.3.1 - oniguruma-to-es: 0.8.1 - - '@shikijs/engine-oniguruma@1.24.4': - dependencies: - '@shikijs/types': 1.24.4 - '@shikijs/vscode-textmate': 9.3.1 - - '@shikijs/types@1.24.4': - dependencies: - '@shikijs/vscode-textmate': 9.3.1 - '@types/hast': 3.0.4 - - '@shikijs/vscode-textmate@9.3.1': {} - - '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bigint-buffer: 1.1.5 - bignumber.js: 9.1.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@solana/buffer-layout@4.0.1': - dependencies: - buffer: 6.0.3 - - '@solana/codecs-core@2.0.0-preview.2': - dependencies: - '@solana/errors': 2.0.0-preview.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/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)': - dependencies: - '@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: - '@solana/codecs-core': 2.0.0-preview.2 - '@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)': - 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-data-structures@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@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)': - 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-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)': - 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-numbers@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@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)': - 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-strings@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': - dependencies: - '@solana/codecs-core': 2.0.0-preview.2 - '@solana/codecs-numbers': 2.0.0-preview.2 - '@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)': - 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) - fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.7.2 - - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 4.9.5 - - '@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.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.2 - - '@solana/codecs@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': - dependencies: - '@solana/codecs-core': 2.0.0-preview.2 - '@solana/codecs-data-structures': 2.0.0-preview.2 - '@solana/codecs-numbers': 2.0.0-preview.2 - '@solana/codecs-strings': 2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22) - '@solana/options': 2.0.0-preview.2 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@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) - '@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 - - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@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.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 - - '@solana/errors@2.0.0-preview.2': - dependencies: - chalk: 5.4.1 - commander: 12.1.0 - - '@solana/errors@2.0.0-preview.4(typescript@5.7.2)': - dependencies: - chalk: 5.4.1 - commander: 12.1.0 - typescript: 5.7.2 - - '@solana/errors@2.0.0-rc.1(typescript@4.9.5)': - dependencies: - chalk: 5.4.1 - commander: 12.1.0 - typescript: 4.9.5 - - '@solana/errors@2.0.0-rc.1(typescript@5.7.2)': - dependencies: - chalk: 5.4.1 - commander: 12.1.0 - 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.2)': - 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 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': - dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@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.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 - - '@solana/spl-account-compression@0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - borsh: 0.7.0 - js-sha3: 0.8.0 - typescript-collections: 1.3.3 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@solana/spl-token-group@0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.8)(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.2) - '@solana/spl-type-length-value': 0.1.0 - '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(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.8)(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.8)(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.8)(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.8)(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.8)(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.8)(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.8)(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.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token@0.1.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.26.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - buffer: 6.0.3 - buffer-layout: 1.2.2 - dotenv: 10.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(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.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/spl-type-length-value@0.1.0': - dependencies: - buffer: 6.0.3 - - '@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.26.0 - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@babel/runtime': 7.26.0 - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 - rpc-websockets: 9.0.4 - superstruct: 2.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - - '@swc/helpers@0.5.15': - dependencies: - tslib: 2.8.1 - - '@tensor-hq/tensor-common@8.3.1(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-bubblegum': 0.7.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - axios: 0.28.1 - big.js: 6.2.2 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 5.0.0 - exponential-backoff: 3.1.1 - js-sha3: 0.8.0 - semaphore: 1.1.0 - transitivePeerDependencies: - - bufferutil - - debug - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.8)(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.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@tensor-hq/tensor-common': 8.3.1(bufferutil@4.0.8)(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 - js-sha256: 0.9.0 - keccak256: 1.0.6 - math-expression-evaluator: 2.0.6 - merkletreejs: 0.3.11 - uuid: 8.3.2 - transitivePeerDependencies: - - bufferutil - - debug - - encoding - - fastestsmallesttextencoderdecoder - - supports-color - - typescript - - utf-8-validate - - '@tiplink/api@0.3.1(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bs58: 5.0.0 - libsodium: 0.7.15 - libsodium-wrappers-sumo: 0.7.15 - nanoid: 3.3.8 - sodium-plus: 0.9.0(sodium-native@3.4.1) - tweetnacl: 1.0.3 - tweetnacl-util: 0.15.1 - typescript: 4.9.5 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - sodium-native - - utf-8-validate - - '@tsconfig/node10@1.0.11': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - - '@types/bn.js@5.1.6': - dependencies: - '@types/node': 22.10.2 - - '@types/chai@5.0.1': - dependencies: - '@types/deep-eql': 4.0.2 - - '@types/connect@3.4.38': - dependencies: - '@types/node': 22.10.2 - - '@types/deep-eql@4.0.2': {} - - '@types/estree@1.0.6': {} - - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/json-schema@7.0.15': {} - - '@types/mdast@4.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/node-fetch@2.6.12': - dependencies: - '@types/node': 22.10.2 - form-data: 4.0.1 - - '@types/node@12.20.55': {} - - '@types/node@18.19.68': - dependencies: - undici-types: 5.26.5 - - '@types/node@22.10.2': - dependencies: - undici-types: 6.20.0 - - '@types/promise-retry@1.1.6': - dependencies: - '@types/retry': 0.12.5 - - '@types/retry@0.12.0': {} - - '@types/retry@0.12.5': {} - - '@types/unist@3.0.3': {} - - '@types/uuid@10.0.0': {} - - '@types/uuid@8.3.4': {} - - '@types/ws@7.4.7': - dependencies: - '@types/node': 22.10.2 - - '@types/ws@8.5.13': - dependencies: - '@types/node': 22.10.2 - - '@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2(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.18.2(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.18.2 - '@typescript-eslint/type-utils': 8.18.2(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.2(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.2 - 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 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.18.2(eslint@8.57.1)(typescript@5.7.2)': - dependencies: - '@typescript-eslint/scope-manager': 8.18.2 - '@typescript-eslint/types': 8.18.2 - '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.2 - debug: 4.4.0 - eslint: 8.57.1 - typescript: 5.7.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.18.2': - dependencies: - '@typescript-eslint/types': 8.18.2 - '@typescript-eslint/visitor-keys': 8.18.2 - - '@typescript-eslint/type-utils@8.18.2(eslint@8.57.1)(typescript@5.7.2)': - dependencies: - '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.2(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 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.18.2': {} - - '@typescript-eslint/typescript-estree@8.18.2(typescript@5.7.2)': - dependencies: - '@typescript-eslint/types': 8.18.2 - '@typescript-eslint/visitor-keys': 8.18.2 - debug: 4.4.0 - 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 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.18.2(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.18.2 - '@typescript-eslint/types': 8.18.2 - '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) - eslint: 8.57.1 - typescript: 5.7.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.18.2': - dependencies: - '@typescript-eslint/types': 8.18.2 - eslint-visitor-keys: 4.2.0 - - '@ungap/structured-clone@1.2.1': {} - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - - acorn-jsx@5.3.2(acorn@8.14.0): - dependencies: - acorn: 8.14.0 - - acorn-walk@8.3.4: - dependencies: - acorn: 8.14.0 - - acorn@8.14.0: {} - - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ansi-regex@5.0.1: {} - - ansi-regex@6.1.0: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@5.2.0: {} - - ansi-styles@6.2.1: {} - - ansicolors@0.3.2: {} - - arg@4.1.3: {} - - argparse@2.0.1: {} - - assert@2.1.0: - dependencies: - call-bind: 1.0.8 - is-nan: 1.3.2 - object-is: 1.1.6 - object.assign: 4.1.7 - util: 0.12.5 - - assertion-error@2.0.1: {} - - asynckit@0.4.0: {} - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - - axios-retry@3.9.1: - dependencies: - '@babel/runtime': 7.26.0 - is-retry-allowed: 2.2.0 - - axios@0.28.1: - dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.1 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - axios@1.7.9: - dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.1 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - balanced-match@1.0.2: {} - - base-x@3.0.10: - dependencies: - safe-buffer: 5.2.1 - - base-x@4.0.0: {} - - base-x@5.0.0: {} - - base64-js@1.5.1: {} - - big-integer@1.6.52: {} - - big.js@6.2.2: {} - - bigint-buffer@1.1.5: - dependencies: - bindings: 1.5.0 - - bignumber.js@9.1.2: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bintrees@1.0.2: {} - - bn.js@4.11.6: {} - - bn.js@5.2.1: {} - - borsh@0.7.0: - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - - borsh@1.0.0: {} - - borsh@2.0.0: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - bs58@4.0.1: - dependencies: - base-x: 3.0.10 - - bs58@5.0.0: - dependencies: - base-x: 4.0.0 - - bs58@6.0.0: - dependencies: - base-x: 5.0.0 - - buffer-layout@1.2.2: {} - - buffer-reverse@1.0.1: {} - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bufferutil@4.0.8: - dependencies: - node-gyp-build: 4.8.4 - optional: true - - call-bind-apply-helpers@1.0.1: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - call-bind@1.0.8: - dependencies: - call-bind-apply-helpers: 1.0.1 - es-define-property: 1.0.1 - get-intrinsic: 1.2.6 - set-function-length: 1.2.2 - - call-bound@1.0.3: - dependencies: - call-bind-apply-helpers: 1.0.1 - get-intrinsic: 1.2.6 - - callsites@3.1.0: {} - - camelcase@6.3.0: {} - - ccount@2.0.1: {} - - chai@5.1.2: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.2 - pathval: 2.0.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.4.1: {} - - character-entities-html4@2.1.0: {} - - character-entities-legacy@3.0.0: {} - - check-error@2.1.1: {} - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - comma-separated-tokens@2.0.3: {} - - commander@10.0.1: {} - - commander@12.1.0: {} - - commander@2.20.3: {} - - concat-map@0.0.1: {} - - create-require@1.1.1: {} - - cross-fetch@3.2.0: - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - crypto-hash@1.3.0: {} - - crypto-js@4.2.0: {} - - dayjs@1.11.13: {} - - debug@4.4.0: - dependencies: - ms: 2.1.3 - - decamelize@1.2.0: {} - - decimal.js-light@2.5.1: {} - - decimal.js@10.4.3: {} - - deep-eql@5.0.2: {} - - deep-is@0.1.4: {} - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - delay@5.0.0: {} - - delayed-stream@1.0.0: {} - - dequal@2.0.3: {} - - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - - diff@4.0.2: {} - - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - - dot-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - - dotenv@10.0.0: {} - - dotenv@16.4.7: {} - - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - eastasianwidth@0.2.0: {} - - emoji-regex-xs@1.0.0: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - entities@4.5.0: {} - - err-code@2.0.3: {} - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-object-atoms@1.0.0: - dependencies: - es-errors: 1.3.0 - - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - escape-string-regexp@4.0.0: {} - - eslint-config-prettier@9.1.0(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - - eslint-plugin-prettier@5.2.1(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 - prettier-linter-helpers: 1.0.0 - synckit: 0.9.2 - optionalDependencies: - eslint-config-prettier: 9.1.0(eslint@8.57.1) - - eslint-scope@7.2.2: - dependencies: - 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: {} - - eslint@8.57.1: - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@eslint-community/regexpp': 4.12.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.1 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - 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 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 3.4.3 - - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@5.3.0: {} - - esutils@2.0.3: {} - - ethereum-bloom-filters@1.2.0: - dependencies: - '@noble/hashes': 1.6.1 - - ethereum-cryptography@2.2.1: - dependencies: - '@noble/curves': 1.4.2 - '@noble/hashes': 1.4.0 - '@scure/bip32': 1.4.0 - '@scure/bip39': 1.3.0 - - ethjs-unit@0.1.6: - dependencies: - bn.js: 4.11.6 - number-to-bn: 1.7.0 - - event-target-shim@5.0.1: {} - - eventemitter3@4.0.7: {} - - eventemitter3@5.0.1: {} - - exponential-backoff@3.1.1: {} - - eyes@0.1.8: {} - - fast-deep-equal@3.1.3: {} - - fast-diff@1.3.0: {} - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fast-stable-stringify@1.0.0: {} - - fastestsmallesttextencoderdecoder@1.0.22: {} - - fastq@1.18.0: - dependencies: - reusify: 1.0.4 - - file-entry-cache@6.0.1: - 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: - dependencies: - to-regex-range: 5.0.1 - - find-process@1.4.8: - dependencies: - 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: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@3.2.0: - dependencies: - flatted: 3.3.2 - 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: {} - - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - - foreground-child@3.3.0: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - form-data-encoder@1.7.2: {} - - form-data@4.0.1: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - formdata-node@4.4.1: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 4.0.0-beta.3 - - fs.realpath@1.0.0: {} - - function-bind@1.1.2: {} - - get-intrinsic@1.2.6: - dependencies: - call-bind-apply-helpers: 1.0.1 - dunder-proto: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - function-bind: 1.1.2 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob@10.4.5: - dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - 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 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - - globals@14.0.0: {} - - gopd@1.2.0: {} - - graceful-fs@4.2.11: - optional: true - - graphemer@1.4.0: {} - - graphemesplit@2.4.4: - dependencies: - js-base64: 3.7.7 - unicode-trie: 2.0.0 - - groq-sdk@0.5.0: - dependencies: - '@types/node': 18.19.68 - '@types/node-fetch': 2.6.12 - abort-controller: 3.0.0 - agentkeepalive: 4.5.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0 - web-streams-polyfill: 3.3.3 - transitivePeerDependencies: - - encoding - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.1 - - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - - hash.js@1.1.7: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hast-util-to-html@9.0.4: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-whitespace: 3.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.4 - zwitch: 2.0.4 - - hast-util-whitespace@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - html-void-elements@3.0.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - ieee754@1.2.1: {} - - ignore@5.3.2: {} - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - imurmurhash@0.1.4: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - ipaddr.js@2.2.0: {} - - is-arguments@1.2.0: - dependencies: - call-bound: 1.0.3 - has-tostringtag: 1.0.2 - - is-callable@1.2.7: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-generator-function@1.0.10: - dependencies: - has-tostringtag: 1.0.2 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-hex-prefixed@1.0.0: {} - - is-nan@1.3.2: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - - is-number@7.0.0: {} - - is-path-inside@3.0.3: {} - - is-retry-allowed@2.2.0: {} - - is-typed-array@1.1.15: - dependencies: - which-typed-array: 1.1.18 - - is-typedarray@1.0.0: {} - - isexe@2.0.0: {} - - isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - isomorphic-ws@4.0.1(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)): - dependencies: - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jackspeak@4.0.2: - dependencies: - '@isaacs/cliui': 8.0.2 - - jayson@4.1.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): - dependencies: - '@types/connect': 3.4.38 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - js-base64@3.7.7: {} - - js-sha256@0.11.0: {} - - js-sha256@0.9.0: {} - - js-sha3@0.8.0: {} - - js-tiktoken@1.0.16: - dependencies: - base64-js: 1.5.1 - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-buffer@3.0.1: {} - - json-schema-traverse@0.4.1: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json-stringify-safe@5.0.1: {} - - json5@2.2.3: {} - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonparse@1.3.1: {} - - jsonpointer@5.0.1: {} - - keccak256@1.0.6: - dependencies: - bn.js: 5.2.1 - buffer: 6.0.3 - keccak: 3.0.4 - - keccak@3.0.4: - dependencies: - node-addon-api: 2.0.2 - node-gyp-build: 4.8.4 - readable-stream: 3.6.2 - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - langchain@0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.9)(openai@4.77.0(zod@3.24.1)): - dependencies: - '@langchain/core': 0.3.26(openai@4.77.0(zod@3.24.1)) - '@langchain/openai': 0.3.16(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.26(openai@4.77.0(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.0(zod@3.24.1)) - openapi-types: 12.1.3 - p-retry: 4.6.2 - uuid: 10.0.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.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))) - axios: 1.7.9 - transitivePeerDependencies: - - encoding - - openai - - langsmith@0.2.14(openai@4.77.0(zod@3.24.1)): - dependencies: - '@types/uuid': 10.0.0 - 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.77.0(zod@3.24.1) - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - libsodium-sumo@0.7.15: {} - - libsodium-wrappers-sumo@0.7.15: - dependencies: - libsodium-sumo: 0.7.15 - - libsodium-wrappers@0.7.15: - dependencies: - libsodium: 0.7.15 - - libsodium@0.7.15: {} - - linkify-it@5.0.0: - dependencies: - uc.micro: 2.1.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash.merge@4.6.2: {} - - lodash@4.17.21: {} - - loglevel@1.9.2: {} - - loupe@3.1.2: {} - - lower-case@2.0.2: - dependencies: - tslib: 2.8.1 - - lru-cache@10.4.3: {} - - lru-cache@11.0.2: {} - - lunr@2.3.9: {} - - make-error@1.3.6: {} - - markdown-it@14.1.0: - dependencies: - argparse: 2.0.1 - entities: 4.5.0 - linkify-it: 5.0.0 - mdurl: 2.0.0 - punycode.js: 2.3.1 - uc.micro: 2.1.0 - - math-expression-evaluator@2.0.6: {} - - math-intrinsics@1.1.0: {} - - mdast-util-to-hast@13.2.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.2.1 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.1 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - - mdurl@2.0.0: {} - - merge2@1.4.1: {} - - merkletreejs@0.3.11: - dependencies: - bignumber.js: 9.1.2 - buffer-reverse: 1.0.1 - crypto-js: 4.2.0 - treeify: 1.1.0 - web3-utils: 1.10.4 - - micro-ftch@0.3.1: {} - - micromark-util-character@2.1.1: - dependencies: - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 - - micromark-util-encode@2.0.1: {} - - micromark-util-sanitize-uri@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-encode: 2.0.1 - micromark-util-symbol: 2.0.1 - - micromark-util-symbol@2.0.1: {} - - micromark-util-types@2.0.1: {} - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - minimalistic-assert@1.0.1: {} - - minimatch@10.0.1: - dependencies: - brace-expansion: 2.0.1 - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - minipass@7.1.2: {} - - ms@2.1.3: {} - - mustache@4.2.0: {} - - nanoid@3.3.8: {} - - natural-compare@1.4.0: {} - - no-case@3.0.4: - dependencies: - lower-case: 2.0.2 - tslib: 2.8.1 - - node-addon-api@2.0.2: {} - - node-domexception@1.0.0: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-gyp-build@4.8.4: {} - - number-to-bn@1.7.0: - dependencies: - bn.js: 4.11.6 - strip-hex-prefix: 1.0.0 - - object-is@1.1.6: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - - object-keys@1.1.1: {} - - object.assign@4.1.7: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.3 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - has-symbols: 1.1.0 - object-keys: 1.1.1 - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - oniguruma-to-es@0.8.1: - dependencies: - emoji-regex-xs: 1.0.0 - regex: 5.1.1 - regex-recursion: 5.1.1 - - openai@4.77.0(zod@3.24.1): - dependencies: - '@types/node': 18.19.68 - '@types/node-fetch': 2.6.12 - abort-controller: 3.0.0 - agentkeepalive: 4.5.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0 - optionalDependencies: - zod: 3.24.1 - transitivePeerDependencies: - - encoding - - openapi-types@12.1.3: {} - - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - p-finally@1.0.0: {} - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-queue@6.6.2: - dependencies: - eventemitter3: 4.0.7 - p-timeout: 3.2.0 - - p-retry@4.6.2: - dependencies: - '@types/retry': 0.12.0 - retry: 0.13.1 - - p-timeout@3.2.0: - dependencies: - p-finally: 1.0.0 - - package-json-from-dist@1.0.1: {} - - pako@0.2.9: {} - - pako@2.1.0: {} - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - path-key@3.1.1: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-scurry@2.0.0: - dependencies: - lru-cache: 11.0.2 - minipass: 7.1.2 - - pathval@2.0.0: {} - - percentile@1.6.0: {} - - picomatch@2.3.1: {} - - poly1305-js@0.4.4: - dependencies: - big-integer: 1.6.52 - - possible-typed-array-names@1.0.0: {} - - prelude-ls@1.2.1: {} - - prettier-linter-helpers@1.0.0: - dependencies: - fast-diff: 1.3.0 - - prettier@2.8.8: {} - - prettier@3.4.2: {} - - prom-client@15.1.3: - dependencies: - '@opentelemetry/api': 1.9.0 - tdigest: 0.1.2 - - promise-retry@2.0.1: - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - - property-information@6.5.0: {} - - proxy-from-env@1.1.0: {} - - punycode.js@2.3.1: {} - - punycode@2.3.1: {} - - queue-microtask@1.2.3: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - regenerator-runtime@0.14.1: {} - - regex-recursion@5.1.1: - dependencies: - regex: 5.1.1 - regex-utilities: 2.3.0 - - regex-utilities@2.3.0: {} - - regex@5.1.1: - dependencies: - regex-utilities: 2.3.0 - - resolve-from@4.0.0: {} - - retry@0.12.0: {} - - retry@0.13.1: {} - - reusify@1.0.4: {} - - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - - rimraf@5.0.10: - dependencies: - glob: 10.4.5 - - rimraf@6.0.1: - dependencies: - glob: 11.0.0 - package-json-from-dist: 1.0.1 - - rpc-websockets@9.0.4: - dependencies: - '@swc/helpers': 0.5.15 - '@types/uuid': 8.3.4 - '@types/ws': 8.5.13 - buffer: 6.0.3 - eventemitter3: 5.0.1 - uuid: 8.3.2 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safe-buffer@5.2.1: {} - - semaphore@1.1.0: {} - - semver@7.6.3: {} - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.6 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - shiki@1.24.4: - dependencies: - '@shikijs/core': 1.24.4 - '@shikijs/engine-javascript': 1.24.4 - '@shikijs/engine-oniguruma': 1.24.4 - '@shikijs/types': 1.24.4 - '@shikijs/vscode-textmate': 9.3.1 - '@types/hast': 3.0.4 - - signal-exit@4.1.0: {} - - snake-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 - - sodium-native@3.4.1: - dependencies: - node-gyp-build: 4.8.4 - - sodium-plus@0.9.0(sodium-native@3.4.1): - dependencies: - buffer: 5.7.1 - libsodium-wrappers: 0.7.15 - poly1305-js: 0.4.4 - sodium-native: 3.4.1 - typedarray-to-buffer: 3.1.5 - xsalsa20: 1.2.0 - - space-separated-tokens@2.0.2: {} - - spok@1.5.5: - dependencies: - ansicolors: 0.3.2 - find-process: 1.4.8 - transitivePeerDependencies: - - jiti - - supports-color - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - - strip-bom@3.0.0: {} - - strip-hex-prefix@1.0.0: - dependencies: - is-hex-prefixed: 1.0.0 - - strip-json-comments@3.1.1: {} - - superstruct@0.15.5: {} - - superstruct@2.0.2: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - synckit@0.9.2: - dependencies: - '@pkgr/core': 0.1.1 - tslib: 2.8.1 - - tdigest@0.1.2: - dependencies: - bintrees: 1.0.2 - - text-encoding-utf-8@1.0.2: {} - - text-table@0.2.0: {} - - through@2.3.8: {} - - tiny-inflate@1.0.3: {} - - tiny-invariant@1.3.3: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - toformat@2.0.0: {} - - toml@3.0.0: {} - - tr46@0.0.3: {} - - treeify@1.1.0: {} - - trim-lines@3.0.1: {} - - ts-api-utils@1.4.3(typescript@5.7.2): - dependencies: - typescript: 5.7.2 - - ts-log@2.2.7: {} - - ts-node@10.9.2(@types/node@22.10.2)(typescript@5.7.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -5347,133 +4572,223 @@ snapshots: typescript: 5.7.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + dev: true - tsconfig-paths@4.2.0: + /tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} dependencies: json5: 2.2.3 minimist: 1.2.8 strip-bom: 3.0.0 + dev: false - tslib@2.8.1: {} + /tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tweetnacl-util@0.15.1: {} + /tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + dev: false - tweetnacl@1.0.3: {} + /tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + dev: false - type-check@0.4.0: + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 - type-fest@0.20.2: {} + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true - typedarray-to-buffer@3.1.5: + /typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 + dev: false - typedoc@0.26.11(typescript@5.7.2): + /typedoc@0.26.11(typescript@5.7.2): + resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} + engines: {node: '>= 18'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x dependencies: lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 shiki: 1.24.4 typescript: 5.7.2 - yaml: 2.6.1 + yaml: 2.7.0 + dev: false - typedoc@0.27.6(typescript@5.7.2): + /typedoc@0.27.6(typescript@5.7.2): + resolution: {integrity: sha512-oBFRoh2Px6jFx366db0lLlihcalq/JzyCVp7Vaq1yphL/tbgx2e+bkpkCgJPunaPvPwoTOXSwasfklWHm7GfAw==} + engines: {node: '>= 18'} + hasBin: true + 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 dependencies: '@gerrit0/mini-shiki': 1.24.4 lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 typescript: 5.7.2 - yaml: 2.6.1 + yaml: 2.7.0 + dev: false - typescript-collections@1.3.3: {} + /typescript-collections@1.3.3: + resolution: {integrity: sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==} + dev: false - typescript@4.9.5: {} + /typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: false - typescript@5.7.2: {} + /typescript@5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + engines: {node: '>=14.17'} + hasBin: true - uc.micro@2.1.0: {} + /uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + dev: false - undici-types@5.26.5: {} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: false - undici-types@6.20.0: {} + /undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - unicode-trie@2.0.0: + /unicode-trie@2.0.0: + resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} dependencies: pako: 0.2.9 tiny-inflate: 1.0.3 + dev: false - unist-util-is@6.0.0: + /unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: '@types/unist': 3.0.3 + dev: false - unist-util-position@5.0.0: + /unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} dependencies: '@types/unist': 3.0.3 + dev: false - unist-util-stringify-position@4.0.0: + /unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} dependencies: '@types/unist': 3.0.3 + dev: false - unist-util-visit-parents@6.0.1: + /unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.0 + dev: false - unist-util-visit@5.0.0: + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + dev: false - universalify@2.0.1: {} + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: false - uri-js@4.4.1: + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.1 - utf-8-validate@5.0.10: + /utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + requiresBuild: true dependencies: node-gyp-build: 4.8.4 - optional: true + dev: false - utf8@3.0.0: {} + /utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + dev: false - util-deprecate@1.0.2: {} + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: false - util@0.12.5: + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} dependencies: inherits: 2.0.4 is-arguments: 1.2.0 is-generator-function: 1.0.10 is-typed-array: 1.1.15 which-typed-array: 1.1.18 + dev: false - uuid@10.0.0: {} + /uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + dev: false - uuid@8.3.2: {} + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false - uuid@9.0.1: {} + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false - v8-compile-cache-lib@3.0.1: {} + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true - vfile-message@4.0.2: + /vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} dependencies: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 + dev: false - vfile@6.0.3: + /vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} dependencies: '@types/unist': 3.0.3 vfile-message: 4.0.2 + dev: false - web-streams-polyfill@3.3.3: {} + /web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + dev: false - web-streams-polyfill@4.0.0-beta.3: {} + /web-streams-polyfill@4.0.0-beta.3: + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} + dev: false - web3-utils@1.10.4: + /web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} dependencies: '@ethereumjs/util': 8.1.0 bn.js: 5.2.1 @@ -5483,15 +4798,22 @@ snapshots: number-to-bn: 1.7.0 randombytes: 2.1.0 utf8: 3.0.0 + dev: false - webidl-conversions@3.0.1: {} + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false - whatwg-url@5.0.0: + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 + dev: false - which-typed-array@1.1.18: + /which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 @@ -5499,51 +4821,105 @@ snapshots: for-each: 0.3.3 gopd: 1.2.0 has-tostringtag: 1.0.2 + dev: false - which@2.0.2: + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 - word-wrap@1.2.5: {} + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} - wrap-ansi@7.0.0: + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: false - wrap-ansi@8.1.0: + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 + dev: false - wrappy@1.0.2: {} + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true - ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 + /ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + bufferutil: 4.0.9 utf-8-validate: 5.0.10 + dev: false - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 + /xsalsa20@1.2.0: + resolution: {integrity: sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w==} + dev: false - xsalsa20@1.2.0: {} + /yaml@2.7.0: + resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} + engines: {node: '>= 14'} + hasBin: true + dev: false - yaml@2.6.1: {} + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true - yn@3.1.1: {} + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} - yocto-queue@0.1.0: {} - - zod-to-json-schema@3.24.1(zod@3.24.1): + /zod-to-json-schema@3.24.1(zod@3.24.1): + resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} + peerDependencies: + zod: ^3.24.1 dependencies: zod: 3.24.1 + dev: false - zod@3.24.1: {} + /zod@3.24.1: + resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} + dev: false - zstddec@0.0.2: {} + /zstddec@0.0.2: + resolution: {integrity: sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA==} + dev: false - zwitch@2.0.4: {} + /zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + dev: false diff --git a/src/actions/index.ts b/src/actions/index.ts index b66c89e..7e6f6c8 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -10,6 +10,7 @@ import getTokenDataAction from "./getTokenData"; import getTPSAction from "./getTPS"; import fetchPriceAction from "./fetchPrice"; import stakeWithJupAction from "./stakeWithJup"; +import stakeWithSolayerAction from "./stakeWithSolayer"; import registerDomainAction from "./registerDomain"; import lendAssetAction from "./lendAsset"; import createGibworkTaskAction from "./createGibworkTask"; @@ -40,6 +41,7 @@ export const ACTIONS = { "GET_TPS_ACTION" : getTPSAction, "FETCH_PRICE_ACTION" : fetchPriceAction, "STAKE_WITH_JUP_ACTION" : stakeWithJupAction, + "STAKE_WITH_SOLAYER_ACTION" : stakeWithSolayerAction, "REGISTER_DOMAIN_ACTION" : registerDomainAction, "LEND_ASSET_ACTION" : lendAssetAction, "CREATE_GIBWORK_TASK_ACTION" : createGibworkTaskAction, diff --git a/src/actions/stakeWithSolayer.ts b/src/actions/stakeWithSolayer.ts new file mode 100644 index 0000000..ec57944 --- /dev/null +++ b/src/actions/stakeWithSolayer.ts @@ -0,0 +1,60 @@ +import { Action } from "../types/action"; +import { SolanaAgentKit } from "../agent"; +import { z } from "zod"; +import { stakeWithSolayer } from "../tools"; + +const stakeWithSolayerAction: Action = { + name: "STAKE_WITH_SOLAYER", + similes: [ + "stake sol", + "solayer sol", + "ssol", + "stake with solayer", + "solayer restaking", + "solayer staking", + "stake with sol", + "liquid staking solayer", + "get solayer sol", + "solayer sol restaking", + "solayer sol staking", + ], + description: + "Stake native SOL with Solayer's restaking protocol to receive Solayer SOL (sSOL)", + examples: [ + [ + { + input: { + amount: 1.0, + }, + output: { + status: "success", + signature: "3FgHn9...", + message: "Successfully staked 1.0 SOL for Solayer SOL (sSOL)", + }, + explanation: "Stake 1.0 SOL to receive Solayer SOL (sSOL)", + }, + ], + ], + schema: z.object({ + amount: z.number().positive().describe("Amount of SOL to stake"), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const amount = input.amount as number; + + const res = await stakeWithSolayer(agent, amount); + return { + status: "success", + res, + message: `Successfully staked ${amount} SOL for Solayer SOL (sSOL)`, + }; + } catch (error: any) { + return { + status: "error", + message: `Solayer staking failed: ${error.message}`, + }; + } + }, +}; + +export default stakeWithSolayerAction; diff --git a/src/agent/index.ts b/src/agent/index.ts index 4acf694..9b6ada2 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -29,6 +29,7 @@ import { getTokenDataByAddress, getTokenDataByTicker, stakeWithJup, + stakeWithSolayer, sendCompressedAirdrop, orcaCreateSingleSidedLiquidityPool, orcaCreateCLMM, @@ -237,6 +238,10 @@ export class SolanaAgentKit { return stakeWithJup(this, amount); } + async restake(amount: number): Promise { + return stakeWithSolayer(this, amount); + } + async sendCompressedAirdrop( mintAddress: string, amount: number, diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 4605fd3..4b00077 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -768,6 +768,39 @@ export class SolanaStakeTool extends Tool { } } +export class SolanaRestakeTool extends Tool { + name = "solana_restake"; + description = `This tool can be used to restake your SOL on Solayer to receive Solayer SOL (sSOL) as a Liquid Staking Token (LST). + + Inputs ( input is a JSON string ): + amount: number, eg 1 or 0.01 (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input) || Number(input); + + const tx = await this.solanaKit.restake(parsedInput.amount); + + return JSON.stringify({ + status: "success", + message: "Staked successfully", + transaction: tx, + amount: parsedInput.amount, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + /** * Tool to fetch the price of a token in USDC */ @@ -1842,6 +1875,7 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaLendAssetTool(solanaKit), new SolanaTPSCalculatorTool(solanaKit), new SolanaStakeTool(solanaKit), + new SolanaRestakeTool(solanaKit), new SolanaFetchPriceTool(solanaKit), new SolanaGetDomainTool(solanaKit), new SolanaTokenDataTool(solanaKit), diff --git a/src/tools/index.ts b/src/tools/index.ts index b9f7542..c0ea1d3 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -17,6 +17,7 @@ export * from "./lend"; export * from "./get_tps"; export * from "./get_token_data"; export * from "./stake_with_jup"; +export * from "./stake_with_solayer"; export * from "./fetch_price"; export * from "./send_compressed_airdrop"; export * from "./orca_close_position"; diff --git a/src/tools/stake_with_solayer.ts b/src/tools/stake_with_solayer.ts new file mode 100644 index 0000000..ed57319 --- /dev/null +++ b/src/tools/stake_with_solayer.ts @@ -0,0 +1,64 @@ +import { VersionedTransaction } from "@solana/web3.js"; +import { SolanaAgentKit } from "../index"; + +/** + * Stake SOL with Solayer + * @param agent SolanaAgentKit instance + * @param amount Amount of SOL to stake + * @returns Transaction signature + */ +export async function stakeWithSolayer( + agent: SolanaAgentKit, + amount: number, +): Promise { + try { + const response = await fetch( + `https://app.solayer.org/api/action/restake/ssol?amount=${amount}`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + }), + }, + ); + + if (!response.ok) { + const errorData = await response.json(); + throw new Error(errorData.message || 'Staking request failed'); + } + + const data = await response.json(); + + // Deserialize and prepare transaction + const txn = VersionedTransaction.deserialize( + Buffer.from(data.transaction, "base64"), + ); + + // Update blockhash + const { blockhash } = await agent.connection.getLatestBlockhash(); + txn.message.recentBlockhash = blockhash; + + // Sign and send transaction + txn.sign([agent.wallet]); + const signature = await agent.connection.sendTransaction(txn, { + preflightCommitment: "confirmed", + maxRetries: 3, + }); + + // Wait for confirmation + const latestBlockhash = await agent.connection.getLatestBlockhash(); + await agent.connection.confirmTransaction({ + signature, + blockhash: latestBlockhash.blockhash, + lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, + }); + + return signature; + } catch (error: any) { + console.error(error); + throw new Error(`Solayer sSOL staking failed: ${error.message}`); + } +} \ No newline at end of file From f1c5213742c26fa358d1d0a72d4229802f63c366 Mon Sep 17 00:00:00 2001 From: teenager-ETH Date: Thu, 2 Jan 2025 19:46:36 +0100 Subject: [PATCH 65/94] typo fix Update README.md --- examples/persistent-agent/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/persistent-agent/README.md b/examples/persistent-agent/README.md index 1ba4d37..133c179 100644 --- a/examples/persistent-agent/README.md +++ b/examples/persistent-agent/README.md @@ -13,7 +13,7 @@ This example showcases a persistent agent that retains memory across sessions us To use this feature, ensure you have the following: -1. **PostgreSQL Database URL**: Create and host ur PostgreSQL databse and enter the URL. It will be of the format "postgresql://user:password@localhost:5432/db" +1. **PostgreSQL Database URL**: Create and host ur PostgreSQL database and enter the URL. It will be of the format "postgresql://user:password@localhost:5432/db" ## Without persistence ``` From 09ffec2763cda1e5c1a26b9ed5823c899df1ff5d Mon Sep 17 00:00:00 2001 From: Joshua Sum <58564538+JoshuaSum@users.noreply.github.com> Date: Fri, 3 Jan 2025 16:44:24 +0800 Subject: [PATCH 66/94] Remove (input is a JSON string) from Langchain tool --- src/langchain/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 4b00077..f98893e 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -772,7 +772,7 @@ export class SolanaRestakeTool extends Tool { name = "solana_restake"; description = `This tool can be used to restake your SOL on Solayer to receive Solayer SOL (sSOL) as a Liquid Staking Token (LST). - Inputs ( input is a JSON string ): + Inputs: amount: number, eg 1 or 0.01 (required)`; constructor(private solanaKit: SolanaAgentKit) { From a8952f33088c1204633d077d2f9453dbfc307b18 Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Fri, 3 Jan 2025 18:13:08 +0100 Subject: [PATCH 67/94] fix: revert changes to the langchain tool --- src/langchain/index.ts | 1887 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 1864 insertions(+), 23 deletions(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 567cf8e..49db2f8 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1,36 +1,1877 @@ +import { PublicKey } from "@solana/web3.js"; +import Decimal from "decimal.js"; import { Tool } from "langchain/tools"; -import { ACTIONS, executeAction, SolanaAgentKit } from "../index"; -import { Action } from "../actions"; +import { + GibworkCreateTaskReponse, + PythFetchPriceResponse, + SolanaAgentKit, +} from "../index"; +import { create_image } from "../tools/create_image"; +import { BN } from "@coral-xyz/anchor"; +import { FEE_TIERS } from "../tools"; -class ToolWrapper extends Tool { - constructor( - private solanaAgentKit: SolanaAgentKit, - private action: Action, - ) { +export class SolanaBalanceTool extends Tool { + name = "solana_balance"; + description = `Get the balance of a Solana wallet or token account. + + If you want to get the balance of your wallet, you don't need to provide the tokenAddress. + If no tokenAddress is provided, the balance will be in SOL. + + Inputs ( input is a JSON string ): + tokenAddress: string, eg "So11111111111111111111111111111111111111112" (optional)`; + + constructor(private solanaKit: SolanaAgentKit) { super(); - this.name = action.name; - this.description = action.description; } - name: string; - description: string; + protected async _call(input: string): Promise { + try { + const tokenAddress = input ? new PublicKey(input) : undefined; + const balance = await this.solanaKit.getBalance(tokenAddress); - protected async _call( - input: typeof this.action.schema, - ): ReturnType { - return await executeAction(this.action, this.solanaAgentKit, input); + return JSON.stringify({ + status: "success", + balance, + token: input || "SOL", + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } } } -export function createSolanaTools(solanaAgentKit: SolanaAgentKit): Tool[] { - const tools: Tool[] = []; - const actionKeys = Object.keys(ACTIONS); +export class SolanaBalanceOtherTool extends Tool { + name = "solana_balance_other"; + description = `Get the balance of a Solana wallet or token account which is different from the agent's wallet. - for (const actionKey of actionKeys) { - const action = ACTIONS[actionKey as keyof typeof ACTIONS]; - const tool = new ToolWrapper(solanaAgentKit, action); - tools.push(tool); + If no tokenAddress is provided, the SOL balance of the wallet will be returned. + + Inputs ( input is a JSON string ): + walletAddress: string, eg "GDEkQF7UMr7RLv1KQKMtm8E2w3iafxJLtyXu3HVQZnME" (required) + tokenAddress: string, eg "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (optional)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); } - return tools; + protected async _call(input: string): Promise { + try { + const { walletAddress, tokenAddress } = JSON.parse(input); + + const tokenPubKey = tokenAddress + ? new PublicKey(tokenAddress) + : undefined; + + const balance = await this.solanaKit.getBalanceOther( + new PublicKey(walletAddress), + tokenPubKey, + ); + + return JSON.stringify({ + status: "success", + balance, + wallet: walletAddress, + token: tokenAddress || "SOL", + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaTransferTool extends Tool { + name = "solana_transfer"; + description = `Transfer tokens or SOL to another address ( also called as wallet address ). + + Inputs ( input is a JSON string ): + to: string, eg "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk" (required) + amount: number, eg 1 (required) + mint?: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (optional)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const recipient = new PublicKey(parsedInput.to); + const mintAddress = parsedInput.mint + ? new PublicKey(parsedInput.mint) + : undefined; + + const tx = await this.solanaKit.transfer( + recipient, + parsedInput.amount, + mintAddress, + ); + + return JSON.stringify({ + status: "success", + message: "Transfer completed successfully", + amount: parsedInput.amount, + recipient: parsedInput.to, + token: parsedInput.mint || "SOL", + transaction: tx, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaDeployTokenTool extends Tool { + name = "solana_deploy_token"; + description = `Deploy a new token on Solana blockchain. + + Inputs (input is a JSON string): + name: string, eg "My Token" (required) + uri: string, eg "https://example.com/token.json" (required) + symbol: string, eg "MTK" (required) + decimals?: number, eg 9 (optional, defaults to 9) + initialSupply?: number, eg 1000000 (optional)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const result = await this.solanaKit.deployToken( + parsedInput.name, + parsedInput.uri, + parsedInput.symbol, + parsedInput.decimals, + parsedInput.initialSupply, + ); + + return JSON.stringify({ + status: "success", + message: "Token deployed successfully", + mintAddress: result.mint.toString(), + decimals: parsedInput.decimals || 9, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaDeployCollectionTool extends Tool { + name = "solana_deploy_collection"; + description = `Deploy a new NFT collection on Solana blockchain. + + Inputs (input is a JSON string): + name: string, eg "My Collection" (required) + uri: string, eg "https://example.com/collection.json" (required) + royaltyBasisPoints?: number, eg 500 for 5% (optional)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const result = await this.solanaKit.deployCollection(parsedInput); + + return JSON.stringify({ + status: "success", + message: "Collection deployed successfully", + collectionAddress: result.collectionAddress.toString(), + name: parsedInput.name, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaMintNFTTool extends Tool { + name = "solana_mint_nft"; + description = `Mint a new NFT in a collection on Solana blockchain. + + Inputs (input is a JSON string): + collectionMint: string, eg "J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w" (required) - The address of the collection to mint into + name: string, eg "My NFT" (required) + uri: string, eg "https://example.com/nft.json" (required) + recipient?: string, eg "9aUn5swQzUTRanaaTwmszxiv89cvFwUCjEBv1vZCoT1u" (optional) - The wallet to receive the NFT, defaults to agent's wallet which is ${this.solanaKit.wallet_address.toString()}`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const result = await this.solanaKit.mintNFT( + new PublicKey(parsedInput.collectionMint), + { + name: parsedInput.name, + uri: parsedInput.uri, + }, + parsedInput.recipient + ? new PublicKey(parsedInput.recipient) + : this.solanaKit.wallet_address, + ); + + return JSON.stringify({ + status: "success", + message: "NFT minted successfully", + mintAddress: result.mint.toString(), + metadata: { + name: parsedInput.name, + symbol: parsedInput.symbol, + uri: parsedInput.uri, + }, + recipient: parsedInput.recipient || result.mint.toString(), + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaTradeTool extends Tool { + name = "solana_trade"; + description = `This tool can be used to swap tokens to another token ( It uses Jupiter Exchange ). + + Inputs ( input is a JSON string ): + outputMint: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (required) + inputAmount: number, eg 1 or 0.01 (required) + inputMint?: string, eg "So11111111111111111111111111111111111111112" (optional) + slippageBps?: number, eg 100 (optional)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const tx = await this.solanaKit.trade( + new PublicKey(parsedInput.outputMint), + parsedInput.inputAmount, + parsedInput.inputMint + ? new PublicKey(parsedInput.inputMint) + : new PublicKey("So11111111111111111111111111111111111111112"), + parsedInput.slippageBps, + ); + + return JSON.stringify({ + status: "success", + message: "Trade executed successfully", + transaction: tx, + inputAmount: parsedInput.inputAmount, + inputToken: parsedInput.inputMint || "SOL", + outputToken: parsedInput.outputMint, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaLimitOrderTool extends Tool { + name = "solana_limit_order"; + description = `This tool can be used to place limit orders using Manifest. + + Inputs ( input is a JSON string ): + marketId: PublicKey, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required) + quantity: number, eg 1 or 0.01 (required) + side: string, eg "Buy" or "Sell" (required) + price: number, in tokens eg 200 for SOL/USDC (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const tx = await this.solanaKit.limitOrder( + new PublicKey(parsedInput.marketId), + parsedInput.quantity, + parsedInput.side, + parsedInput.price, + ); + + return JSON.stringify({ + status: "success", + message: "Trade executed successfully", + transaction: tx, + marketId: parsedInput.marketId, + quantity: parsedInput.quantity, + side: parsedInput.side, + price: parsedInput.price, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaCancelAllOrdersTool extends Tool { + name = "solana_cancel_all_orders"; + description = `This tool can be used to cancel all orders from a Manifest market. + + Input ( input is a JSON string ): + marketId: string, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const marketId = new PublicKey(input.trim()); + const tx = await this.solanaKit.cancelAllOrders(marketId); + + return JSON.stringify({ + status: "success", + message: "Cancel orders successfully", + transaction: tx, + marketId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaWithdrawAllTool extends Tool { + name = "solana_withdraw_all"; + description = `This tool can be used to withdraw all funds from a Manifest market. + + Input ( input is a JSON string ): + marketId: string, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const marketId = new PublicKey(input.trim()); + const tx = await this.solanaKit.withdrawAll(marketId); + + return JSON.stringify({ + status: "success", + message: "Withdrew successfully", + transaction: tx, + marketId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaRequestFundsTool extends Tool { + name = "solana_request_funds"; + description = "Request SOL from Solana faucet (devnet/testnet only)"; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(_input: string): Promise { + try { + await this.solanaKit.requestFaucetFunds(); + + return JSON.stringify({ + status: "success", + message: "Successfully requested faucet funds", + network: this.solanaKit.connection.rpcEndpoint.split("/")[2], + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaRegisterDomainTool extends Tool { + name = "solana_register_domain"; + description = `Register a .sol domain name for your wallet. + + Inputs: + name: string, eg "pumpfun.sol" (required) + spaceKB: number, eg 1 (optional, default is 1) + `; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + private validateInput(input: any): void { + if (!input.name || typeof input.name !== "string") { + throw new Error("name is required and must be a string"); + } + if ( + input.spaceKB !== undefined && + (typeof input.spaceKB !== "number" || input.spaceKB <= 0) + ) { + throw new Error("spaceKB must be a positive number when provided"); + } + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + this.validateInput(parsedInput); + + const tx = await this.solanaKit.registerDomain( + parsedInput.name, + parsedInput.spaceKB || 1, + ); + + return JSON.stringify({ + status: "success", + message: "Domain registered successfully", + transaction: tx, + domain: `${parsedInput.name}.sol`, + spaceKB: parsedInput.spaceKB || 1, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaResolveDomainTool extends Tool { + name = "solana_resolve_domain"; + description = `Resolve ONLY .sol domain names to a Solana PublicKey. + This tool is exclusively for .sol domains. + DO NOT use this for other domain types like .blink, .bonk, etc. + + Inputs: + domain: string, eg "pumpfun.sol" (required) + `; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const domain = input.trim(); + const publicKey = await this.solanaKit.resolveSolDomain(domain); + + return JSON.stringify({ + status: "success", + message: "Domain resolved successfully", + publicKey: publicKey.toBase58(), + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaGetDomainTool extends Tool { + name = "solana_get_domain"; + description = `Retrieve the .sol domain associated for a given account address. + + Inputs: + account: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required) + `; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const account = new PublicKey(input.trim()); + const domain = await this.solanaKit.getPrimaryDomain(account); + + return JSON.stringify({ + status: "success", + message: "Primary domain retrieved successfully", + domain, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaGetWalletAddressTool extends Tool { + name = "solana_get_wallet_address"; + description = `Get the wallet address of the agent`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(_input: string): Promise { + return this.solanaKit.wallet_address.toString(); + } +} + +export class SolanaPumpfunTokenLaunchTool extends Tool { + name = "solana_launch_pumpfun_token"; + + description = `This tool can be used to launch a token on Pump.fun, + do not use this tool for any other purpose, or for creating SPL tokens. + If the user asks you to chose the parameters, you should generate valid values. + For generating the image, you can use the solana_create_image tool. + + Inputs: + tokenName: string, eg "PumpFun Token", + tokenTicker: string, eg "PUMP", + description: string, eg "PumpFun Token is a token on the Solana blockchain", + imageUrl: string, eg "https://i.imgur.com/UFm07Np_d.png`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + private validateInput(input: any): void { + if (!input.tokenName || typeof input.tokenName !== "string") { + throw new Error("tokenName is required and must be a string"); + } + if (!input.tokenTicker || typeof input.tokenTicker !== "string") { + throw new Error("tokenTicker is required and must be a string"); + } + if (!input.description || typeof input.description !== "string") { + throw new Error("description is required and must be a string"); + } + if (!input.imageUrl || typeof input.imageUrl !== "string") { + throw new Error("imageUrl is required and must be a string"); + } + if ( + input.initialLiquiditySOL !== undefined && + typeof input.initialLiquiditySOL !== "number" + ) { + throw new Error("initialLiquiditySOL must be a number when provided"); + } + } + + protected async _call(input: string): Promise { + try { + // Parse and normalize input + input = input.trim(); + const parsedInput = JSON.parse(input); + + this.validateInput(parsedInput); + + // Launch token with validated input + await this.solanaKit.launchPumpFunToken( + parsedInput.tokenName, + parsedInput.tokenTicker, + parsedInput.description, + parsedInput.imageUrl, + { + twitter: parsedInput.twitter, + telegram: parsedInput.telegram, + website: parsedInput.website, + initialLiquiditySOL: parsedInput.initialLiquiditySOL, + }, + ); + + return JSON.stringify({ + status: "success", + message: "Token launched successfully on Pump.fun", + tokenName: parsedInput.tokenName, + tokenTicker: parsedInput.tokenTicker, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaCreateImageTool extends Tool { + name = "solana_create_image"; + description = + "Create an image using OpenAI's DALL-E. Input should be a string prompt for the image."; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + private validateInput(input: string): void { + if (typeof input !== "string" || input.trim().length === 0) { + throw new Error("Input must be a non-empty string prompt"); + } + } + + protected async _call(input: string): Promise { + try { + this.validateInput(input); + const result = await create_image(this.solanaKit, input.trim()); + + return JSON.stringify({ + status: "success", + message: "Image created successfully", + ...result, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaLendAssetTool extends Tool { + name = "solana_lend_asset"; + description = `Lend idle USDC for yield using Lulo. ( only USDC is supported ) + + Inputs (input is a json string): + amount: number, eg 1, 0.01 (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const amount = JSON.parse(input).amount || input; + + const tx = await this.solanaKit.lendAssets(amount); + + return JSON.stringify({ + status: "success", + message: "Asset lent successfully", + transaction: tx, + amount, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaTPSCalculatorTool extends Tool { + name = "solana_get_tps"; + description = "Get the current TPS of the Solana network"; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(_input: string): Promise { + try { + const tps = await this.solanaKit.getTPS(); + return `Solana (mainnet-beta) current transactions per second: ${tps}`; + } catch (error: any) { + return `Error fetching TPS: ${error.message}`; + } + } +} + +export class SolanaStakeTool extends Tool { + name = "solana_stake"; + description = `This tool can be used to stake your SOL (Solana), also called as SOL staking or liquid staking. + + Inputs ( input is a JSON string ): + amount: number, eg 1 or 0.01 (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input) || Number(input); + + const tx = await this.solanaKit.stake(parsedInput.amount); + + return JSON.stringify({ + status: "success", + message: "Staked successfully", + transaction: tx, + amount: parsedInput.amount, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +/** + * Tool to fetch the price of a token in USDC + */ +export class SolanaFetchPriceTool extends Tool { + name = "solana_fetch_price"; + description = `Fetch the price of a given token in USDC. + + Inputs: + - tokenId: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const price = await this.solanaKit.fetchTokenPrice(input.trim()); + return JSON.stringify({ + status: "success", + tokenId: input.trim(), + priceInUSDC: price, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaTokenDataTool extends Tool { + name = "solana_token_data"; + description = `Get the token data for a given token mint address + + Inputs: mintAddress is required. + mintAddress: string, eg "So11111111111111111111111111111111111111112" (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = input.trim(); + + const tokenData = await this.solanaKit.getTokenDataByAddress(parsedInput); + + return JSON.stringify({ + status: "success", + tokenData, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaTokenDataByTickerTool extends Tool { + name = "solana_token_data_by_ticker"; + description = `Get the token data for a given token ticker + + Inputs: ticker is required. + ticker: string, eg "USDC" (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const ticker = input.trim(); + const tokenData = await this.solanaKit.getTokenDataByTicker(ticker); + return JSON.stringify({ + status: "success", + tokenData, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaCompressedAirdropTool extends Tool { + name = "solana_compressed_airdrop"; + description = `Airdrop SPL tokens with ZK Compression (also called as airdropping tokens) + + Inputs (input is a JSON string): + mintAddress: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" (required) + amount: number, the amount of tokens to airdrop per recipient, e.g., 42 (required) + decimals: number, the decimals of the token, e.g., 6 (required) + recipients: string[], the recipient addresses, e.g., ["1nc1nerator11111111111111111111111111111111"] (required) + priorityFeeInLamports: number, the priority fee in lamports. Default is 30_000. (optional) + shouldLog: boolean, whether to log progress to stdout. Default is false. (optional)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const txs = await this.solanaKit.sendCompressedAirdrop( + parsedInput.mintAddress, + parsedInput.amount, + parsedInput.decimals, + parsedInput.recipients, + parsedInput.priorityFeeInLamports || 30_000, + parsedInput.shouldLog || false, + ); + + return JSON.stringify({ + status: "success", + message: `Airdropped ${parsedInput.amount} tokens to ${parsedInput.recipients.length} recipients.`, + transactionHashes: txs, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaClosePosition extends Tool { + name = "orca_close_position"; + description = `Closes an existing liquidity position in an Orca Whirlpool. This function fetches the position + details using the provided mint address and closes the position with a 1% slippage. + + Inputs (JSON string): + - positionMintAddress: string, the address of the position mint that represents the liquidity position.`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + const positionMintAddress = new PublicKey( + inputFormat.positionMintAddress, + ); + + const txId = await this.solanaKit.orcaClosePosition(positionMintAddress); + + return JSON.stringify({ + status: "success", + message: "Liquidity position closed successfully.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaOrcaCreateCLMM extends Tool { + name = "orca_create_clmm"; + description = `Create a Concentrated Liquidity Market Maker (CLMM) pool on Orca, the most efficient and capital-optimized CLMM on Solana. This function initializes a CLMM pool but does not add liquidity. You can add liquidity later using a centered position or a single-sided position. + + Inputs (JSON string): + - mintDeploy: string, the mint of the token you want to deploy (required). + - mintPair: string, The mint of the token you want to pair the deployed mint with (required). + - initialPrice: number, initial price of mintA in terms of mintB, e.g., 0.001 (required). + - feeTier: number, fee tier in bps. Options: 1, 2, 4, 5, 16, 30, 65, 100, 200 (required).`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + const mintA = new PublicKey(inputFormat.mintDeploy); + const mintB = new PublicKey(inputFormat.mintPair); + const initialPrice = new Decimal(inputFormat.initialPrice); + const feeTier = inputFormat.feeTier; + + if (!feeTier || !(feeTier in FEE_TIERS)) { + throw new Error( + `Invalid feeTier. Available options: ${Object.keys(FEE_TIERS).join( + ", ", + )}`, + ); + } + + const txId = await this.solanaKit.orcaCreateCLMM( + mintA, + mintB, + initialPrice, + feeTier, + ); + + return JSON.stringify({ + status: "success", + message: + "CLMM pool created successfully. Note: No liquidity was added.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaOrcaCreateSingleSideLiquidityPool extends Tool { + name = "orca_create_single_sided_liquidity_pool"; + description = `Create a single-sided liquidity pool on Orca, the most efficient and capital-optimized CLMM platform on Solana. + + This function initializes a single-sided liquidity pool, ideal for community driven project, fair launches, and fundraising. Minimize price impact by setting a narrow price range. + + Inputs (JSON string): + - depositTokenAmount: number, in units of the deposit token including decimals, e.g., 1000000000 (required). + - depositTokenMint: string, mint address of the deposit token, e.g., "DepositTokenMintAddress" (required). + - otherTokenMint: string, mint address of the other token, e.g., "OtherTokenMintAddress" (required). + - initialPrice: number, initial price of the deposit token in terms of the other token, e.g., 0.001 (required). + - maxPrice: number, maximum price at which liquidity is added, e.g., 5.0 (required). + - feeTier: number, fee tier for the pool in bps. Options: 1, 2, 4, 5, 16, 30, 65, 100, 200 (required).`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + const depositTokenAmount = inputFormat.depositTokenAmount; + const depositTokenMint = new PublicKey(inputFormat.depositTokenMint); + const otherTokenMint = new PublicKey(inputFormat.otherTokenMint); + const initialPrice = new Decimal(inputFormat.initialPrice); + const maxPrice = new Decimal(inputFormat.maxPrice); + const feeTier = inputFormat.feeTier; + + if (!feeTier || !(feeTier in FEE_TIERS)) { + throw new Error( + `Invalid feeTier. Available options: ${Object.keys(FEE_TIERS).join( + ", ", + )}`, + ); + } + + const txId = await this.solanaKit.orcaCreateSingleSidedLiquidityPool( + depositTokenAmount, + depositTokenMint, + otherTokenMint, + initialPrice, + maxPrice, + feeTier, + ); + + return JSON.stringify({ + status: "success", + message: "Single-sided Whirlpool created successfully", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaOrcaFetchPositions extends Tool { + name = "orca_fetch_positions"; + description = `Fetch all the liquidity positions in an Orca Whirlpool by owner. Returns an object with positiont mint addresses as keys and position status details as values.`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(): Promise { + try { + const txId = await this.solanaKit.orcaFetchPositions(); + + return JSON.stringify({ + status: "success", + message: "Liquidity positions fetched.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaOrcaOpenCenteredPosition extends Tool { + name = "orca_open_centered_position_with_liquidity"; + description = `Add liquidity to a CLMM by opening a centered position in an Orca Whirlpool, the most efficient liquidity pool on Solana. + + Inputs (JSON string): + - whirlpoolAddress: string, address of the Orca Whirlpool (required). + - priceOffsetBps: number, bps offset (one side) from the current pool price, e.g., 500 for 5% (required). + - inputTokenMint: string, mint address of the deposit token (required). + - inputAmount: number, amount of the deposit token, e.g., 100.0 (required).`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + const whirlpoolAddress = new PublicKey(inputFormat.whirlpoolAddress); + const priceOffsetBps = parseInt(inputFormat.priceOffsetBps, 10); + const inputTokenMint = new PublicKey(inputFormat.inputTokenMint); + const inputAmount = new Decimal(inputFormat.inputAmount); + + if (priceOffsetBps < 0) { + throw new Error( + "Invalid distanceFromCurrentPriceBps. It must be equal or greater than 0.", + ); + } + + const txId = await this.solanaKit.orcaOpenCenteredPositionWithLiquidity( + whirlpoolAddress, + priceOffsetBps, + inputTokenMint, + inputAmount, + ); + + return JSON.stringify({ + status: "success", + message: "Centered liquidity position opened successfully.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaOrcaOpenSingleSidedPosition extends Tool { + name = "orca_open_single_sided_position"; + description = `Add liquidity to a CLMM by opening a single-sided position in an Orca Whirlpool, the most efficient liquidity pool on Solana. + + Inputs (JSON string): + - whirlpoolAddress: string, address of the Orca Whirlpool (required). + - distanceFromCurrentPriceBps: number, distance in basis points from the current price for the position (required). + - widthBps: number, width of the position in basis points (required). + - inputTokenMint: string, mint address of the deposit token (required). + - inputAmount: number, amount of the deposit token, e.g., 100.0 (required).`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + const whirlpoolAddress = new PublicKey(inputFormat.whirlpoolAddress); + const distanceFromCurrentPriceBps = + inputFormat.distanceFromCurrentPriceBps; + const widthBps = inputFormat.widthBps; + const inputTokenMint = new PublicKey(inputFormat.inputTokenMint); + const inputAmount = new Decimal(inputFormat.inputAmount); + + if (distanceFromCurrentPriceBps < 0 || widthBps < 0) { + throw new Error( + "Invalid distanceFromCurrentPriceBps or width. It must be equal or greater than 0.", + ); + } + + const txId = await this.solanaKit.orcaOpenSingleSidedPosition( + whirlpoolAddress, + distanceFromCurrentPriceBps, + widthBps, + inputTokenMint, + inputAmount, + ); + + return JSON.stringify({ + status: "success", + message: "Single-sided liquidity position opened successfully.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaRaydiumCreateAmmV4 extends Tool { + name = "raydium_create_ammV4"; + description = `Raydium's Legacy AMM that requires an OpenBook marketID + + Inputs (input is a json string): + marketId: string (required) + baseAmount: number(int), eg: 111111 (required) + quoteAmount: number(int), eg: 111111 (required) + startTime: number(seconds), eg: now number or zero (required) + `; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + + const tx = await this.solanaKit.raydiumCreateAmmV4( + new PublicKey(inputFormat.marketId), + new BN(inputFormat.baseAmount), + new BN(inputFormat.quoteAmount), + new BN(inputFormat.startTime), + ); + + return JSON.stringify({ + status: "success", + message: "Raydium amm v4 pool created successfully", + transaction: tx, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaRaydiumCreateClmm extends Tool { + name = "raydium_create_clmm"; + description = `Concentrated liquidity market maker, custom liquidity ranges, increased capital efficiency + + Inputs (input is a json string): + mint1: string (required) + mint2: string (required) + configId: string (required) stores pool info, id, index, protocolFeeRate, tradeFeeRate, tickSpacing, fundFeeRate + initialPrice: number, eg: 123.12 (required) + startTime: number(seconds), eg: now number or zero (required) + `; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + + const tx = await this.solanaKit.raydiumCreateClmm( + new PublicKey(inputFormat.mint1), + new PublicKey(inputFormat.mint2), + + new PublicKey(inputFormat.configId), + + new Decimal(inputFormat.initialPrice), + new BN(inputFormat.startTime), + ); + + return JSON.stringify({ + status: "success", + message: "Raydium clmm pool created successfully", + transaction: tx, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaRaydiumCreateCpmm extends Tool { + name = "raydium_create_cpmm"; + description = `Raydium's newest CPMM, does not require marketID, supports Token 2022 standard + + Inputs (input is a json string): + mint1: string (required) + mint2: string (required) + configId: string (required), stores pool info, index, protocolFeeRate, tradeFeeRate, fundFeeRate, createPoolFee + mintAAmount: number(int), eg: 1111 (required) + mintBAmount: number(int), eg: 2222 (required) + startTime: number(seconds), eg: now number or zero (required) + `; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + + const tx = await this.solanaKit.raydiumCreateCpmm( + new PublicKey(inputFormat.mint1), + new PublicKey(inputFormat.mint2), + + new PublicKey(inputFormat.configId), + + new BN(inputFormat.mintAAmount), + new BN(inputFormat.mintBAmount), + + new BN(inputFormat.startTime), + ); + + return JSON.stringify({ + status: "success", + message: "Raydium cpmm pool created successfully", + transaction: tx, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaOpenbookCreateMarket extends Tool { + name = "solana_openbook_create_market"; + description = `Openbook marketId, required for ammv4 + + Inputs (input is a json string): + baseMint: string (required) + quoteMint: string (required) + lotSize: number (required) + tickSize: number (required) + `; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + + const tx = await this.solanaKit.openbookCreateMarket( + new PublicKey(inputFormat.baseMint), + new PublicKey(inputFormat.quoteMint), + + inputFormat.lotSize, + inputFormat.tickSize, + ); + + return JSON.stringify({ + status: "success", + message: "Openbook market created successfully", + transaction: tx, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaManifestCreateMarket extends Tool { + name = "solana_manifest_create_market"; + description = `Manifest market + + Inputs (input is a json string): + baseMint: string (required) + quoteMint: string (required) + `; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + + const tx = await this.solanaKit.manifestCreateMarket( + new PublicKey(inputFormat.baseMint), + new PublicKey(inputFormat.quoteMint), + ); + + return JSON.stringify({ + status: "success", + message: "Create manifest market successfully", + transaction: tx[0], + marketId: tx[1], + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaPythFetchPrice extends Tool { + name = "solana_pyth_fetch_price"; + description = `Fetch the price of a given price feed from Pyth's Hermes service + + Inputs: + priceFeedID: string, the price feed ID, e.g., "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43" for BTC/USD`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const price = await this.solanaKit.pythFetchPrice(input); + const response: PythFetchPriceResponse = { + status: "success", + priceFeedID: input, + price, + }; + return JSON.stringify(response); + } catch (error: any) { + const response: PythFetchPriceResponse = { + status: "error", + priceFeedID: input, + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }; + return JSON.stringify(response); + } + } +} + +export class SolanaResolveAllDomainsTool extends Tool { + name = "solana_resolve_all_domains"; + description = `Resolve domain names to a public key for ALL domain types EXCEPT .sol domains. + Use this for domains like .blink, .bonk, etc. + DO NOT use this for .sol domains (use solana_resolve_domain instead). + + Input: + domain: string, eg "mydomain.blink" or "mydomain.bonk" (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const owner = await this.solanaKit.resolveAllDomains(input); + + if (!owner) { + return JSON.stringify({ + status: "error", + message: "Domain not found", + code: "DOMAIN_NOT_FOUND", + }); + } + + return JSON.stringify({ + status: "success", + message: "Domain resolved successfully", + owner: owner?.toString(), + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "DOMAIN_RESOLUTION_ERROR", + }); + } + } +} + +export class SolanaGetOwnedDomains extends Tool { + name = "solana_get_owned_domains"; + description = `Get all domains owned by a specific wallet address. + + Inputs: + owner: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const ownerPubkey = new PublicKey(input.trim()); + const domains = await this.solanaKit.getOwnedAllDomains(ownerPubkey); + + return JSON.stringify({ + status: "success", + message: "Owned domains fetched successfully", + domains, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "FETCH_OWNED_DOMAINS_ERROR", + }); + } + } +} + +export class SolanaGetOwnedTldDomains extends Tool { + name = "solana_get_owned_tld_domains"; + description = `Get all domains owned by the agent's wallet for a specific TLD. + + Inputs: + tld: string, eg "bonk" (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const domains = await this.solanaKit.getOwnedDomainsForTLD(input); + + return JSON.stringify({ + status: "success", + message: "TLD domains fetched successfully", + domains, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "FETCH_TLD_DOMAINS_ERROR", + }); + } + } +} + +export class SolanaGetAllTlds extends Tool { + name = "solana_get_all_tlds"; + description = `Get all active top-level domains (TLDs) in the AllDomains Name Service`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(): Promise { + try { + const tlds = await this.solanaKit.getAllDomainsTLDs(); + + return JSON.stringify({ + status: "success", + message: "TLDs fetched successfully", + tlds, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "FETCH_TLDS_ERROR", + }); + } + } +} + +export class SolanaGetMainDomain extends Tool { + name = "solana_get_main_domain"; + description = `Get the main/favorite domain for a given wallet address. + + Inputs: + owner: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const ownerPubkey = new PublicKey(input.trim()); + const mainDomain = + await this.solanaKit.getMainAllDomainsDomain(ownerPubkey); + + return JSON.stringify({ + status: "success", + message: "Main domain fetched successfully", + domain: mainDomain, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "FETCH_MAIN_DOMAIN_ERROR", + }); + } + } +} + +export class SolanaCreateGibworkTask extends Tool { + name = "create_gibwork_task"; + description = `Create a task on Gibwork. + + Inputs (input is a JSON string): + title: string, title of the task (required) + content: string, description of the task (required) + requirements: string, requirements to complete the task (required) + tags: string[], list of tags associated with the task (required) + payer: string, payer address (optional, defaults to agent wallet) + tokenMintAddress: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" (required) + amount: number, payment amount (required) + `; + + constructor(private solanaSdk: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const taskData = await this.solanaSdk.createGibworkTask( + parsedInput.title, + parsedInput.content, + parsedInput.requirements, + parsedInput.tags, + parsedInput.tokenMintAddress, + parsedInput.amount, + parsedInput.payer, + ); + + const response: GibworkCreateTaskReponse = { + status: "success", + taskId: taskData.taskId, + signature: taskData.signature, + }; + + return JSON.stringify(response); + } catch (err: any) { + return JSON.stringify({ + status: "error", + message: err.message, + code: err.code || "CREATE_TASK_ERROR", + }); + } + } +} + +export class SolanaRockPaperScissorsTool extends Tool { + name = "rock_paper_scissors"; + description = `Play rock paper scissors to win SEND coins. + + Inputs (input is a JSON string): + choice: string, either "rock", "paper", or "scissors" (required) + amount: number, amount of SOL to play with - must be 0.1, 0.01, or 0.005 SOL (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + private validateInput(input: any): void { + if (input.choice !== undefined) { + throw new Error("choice is required."); + } + if ( + input.amount !== undefined && + (typeof input.spaceKB !== "number" || input.spaceKB <= 0) + ) { + throw new Error("amount must be a positive number when provided"); + } + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + this.validateInput(parsedInput); + const result = await this.solanaKit.rockPaperScissors( + Number(parsedInput['"amount"']), + parsedInput['"choice"'].replace(/^"|"$/g, "") as + | "rock" + | "paper" + | "scissors", + ); + + return JSON.stringify({ + status: "success", + message: result, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaTipLinkTool extends Tool { + name = "solana_tiplink"; + description = `Create a TipLink for transferring SOL or SPL tokens. + Input is a JSON string with: + - amount: number (required) - Amount to transfer + - splmintAddress: string (optional) - SPL token mint address`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + if (!parsedInput.amount) { + throw new Error("Amount is required"); + } + + const amount = parseFloat(parsedInput.amount); + const splmintAddress = parsedInput.splmintAddress + ? new PublicKey(parsedInput.splmintAddress) + : undefined; + + const { url, signature } = await this.solanaKit.createTiplink( + amount, + splmintAddress, + ); + + return JSON.stringify({ + status: "success", + url, + signature, + amount, + tokenType: splmintAddress ? "SPL" : "SOL", + message: `TipLink created successfully`, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaListNFTForSaleTool extends Tool { + name = "solana_list_nft_for_sale"; + description = `List an NFT for sale on Tensor Trade. + + Inputs (input is a JSON string): + nftMint: string, the mint address of the NFT (required) + price: number, price in SOL (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + // Validate NFT ownership first + const nftAccount = + await this.solanaKit.connection.getTokenAccountsByOwner( + this.solanaKit.wallet_address, + { mint: new PublicKey(parsedInput.nftMint) }, + ); + + if (nftAccount.value.length === 0) { + return JSON.stringify({ + status: "error", + message: + "NFT not found in wallet. Please make sure you own this NFT.", + code: "NFT_NOT_FOUND", + }); + } + + const tx = await this.solanaKit.tensorListNFT( + new PublicKey(parsedInput.nftMint), + parsedInput.price, + ); + + return JSON.stringify({ + status: "success", + message: "NFT listed for sale successfully", + transaction: tx, + price: parsedInput.price, + nftMint: parsedInput.nftMint, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaCancelNFTListingTool extends Tool { + name = "solana_cancel_nft_listing"; + description = `Cancel an NFT listing on Tensor Trade. + + Inputs (input is a JSON string): + nftMint: string, the mint address of the NFT (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const tx = await this.solanaKit.tensorCancelListing( + new PublicKey(parsedInput.nftMint), + ); + + return JSON.stringify({ + status: "success", + message: "NFT listing cancelled successfully", + transaction: tx, + nftMint: parsedInput.nftMint, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export function createSolanaTools(solanaKit: SolanaAgentKit) { + return [ + new SolanaBalanceTool(solanaKit), + new SolanaBalanceOtherTool(solanaKit), + new SolanaTransferTool(solanaKit), + new SolanaDeployTokenTool(solanaKit), + new SolanaDeployCollectionTool(solanaKit), + new SolanaMintNFTTool(solanaKit), + new SolanaTradeTool(solanaKit), + new SolanaRequestFundsTool(solanaKit), + new SolanaRegisterDomainTool(solanaKit), + new SolanaGetWalletAddressTool(solanaKit), + new SolanaPumpfunTokenLaunchTool(solanaKit), + new SolanaCreateImageTool(solanaKit), + new SolanaLendAssetTool(solanaKit), + new SolanaTPSCalculatorTool(solanaKit), + new SolanaStakeTool(solanaKit), + new SolanaFetchPriceTool(solanaKit), + new SolanaGetDomainTool(solanaKit), + new SolanaTokenDataTool(solanaKit), + new SolanaTokenDataByTickerTool(solanaKit), + new SolanaCompressedAirdropTool(solanaKit), + new SolanaRaydiumCreateAmmV4(solanaKit), + new SolanaRaydiumCreateClmm(solanaKit), + new SolanaRaydiumCreateCpmm(solanaKit), + new SolanaOpenbookCreateMarket(solanaKit), + new SolanaManifestCreateMarket(solanaKit), + new SolanaLimitOrderTool(solanaKit), + new SolanaCancelAllOrdersTool(solanaKit), + new SolanaWithdrawAllTool(solanaKit), + new SolanaClosePosition(solanaKit), + new SolanaOrcaCreateCLMM(solanaKit), + new SolanaOrcaCreateSingleSideLiquidityPool(solanaKit), + new SolanaOrcaFetchPositions(solanaKit), + new SolanaOrcaOpenCenteredPosition(solanaKit), + new SolanaOrcaOpenSingleSidedPosition(solanaKit), + new SolanaPythFetchPrice(solanaKit), + new SolanaResolveDomainTool(solanaKit), + new SolanaGetOwnedDomains(solanaKit), + new SolanaGetOwnedTldDomains(solanaKit), + new SolanaGetAllTlds(solanaKit), + new SolanaGetMainDomain(solanaKit), + new SolanaResolveAllDomainsTool(solanaKit), + new SolanaCreateGibworkTask(solanaKit), + new SolanaRockPaperScissorsTool(solanaKit), + new SolanaTipLinkTool(solanaKit), + new SolanaListNFTForSaleTool(solanaKit), + new SolanaCancelNFTListingTool(solanaKit), + ]; } From c2bf6191ffa8770a096864052ad5042ef54bc709 Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Fri, 3 Jan 2025 18:22:32 +0100 Subject: [PATCH 68/94] fix: lint --- .../app/api/chat/route.ts | 80 +- .../data/DefaultRetrievalText.ts | 2 +- .../utils/markdownToHTML.ts | 30 +- package.json | 4 +- src/actions/createOrcaSingleSidedWhirlpool.ts | 2 +- src/actions/getWalletAddress.ts | 40 +- src/actions/index.ts | 60 +- src/agent/index.ts | 16 +- src/langchain/index.ts | 2662 ++++++++--------- src/tools/get_wallet_address.ts | 2 +- src/vercel-ai/index.ts | 30 +- test/agent_sdks/vercel_ai.ts | 272 +- test/index.ts | 2 +- 13 files changed, 1604 insertions(+), 1598 deletions(-) diff --git a/examples/agent-kit-nextjs-langchain/app/api/chat/route.ts b/examples/agent-kit-nextjs-langchain/app/api/chat/route.ts index 06e6911..badd6b3 100644 --- a/examples/agent-kit-nextjs-langchain/app/api/chat/route.ts +++ b/examples/agent-kit-nextjs-langchain/app/api/chat/route.ts @@ -5,24 +5,24 @@ import { createReactAgent } from "@langchain/langgraph/prebuilt"; import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; const llm = new ChatOpenAI({ - temperature: 0.7, - model: "gpt-4o-mini", + temperature: 0.7, + model: "gpt-4o-mini", }); const solanaAgent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL, - process.env.OPENAI_API_KEY!, + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL, + process.env.OPENAI_API_KEY!, ); const tools = createSolanaTools(solanaAgent); const memory = new MemorySaver(); const agent = createReactAgent({ - llm, - tools, - checkpointSaver: memory, - messageModifier: ` + 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 @@ -34,38 +34,38 @@ const agent = createReactAgent({ }); export async function POST(req: NextRequest) { - try { - const body = await req.json(); - const messages = body.messages ?? []; + try { + const body = await req.json(); + const messages = body.messages ?? []; - const eventStream = agent.streamEvents( - { - messages, - }, - { - version: "v2", - configurable: { - thread_id: "Solana Agent Kit!", - }, - }, - ); + const eventStream = agent.streamEvents( + { + messages, + }, + { + version: "v2", + configurable: { + thread_id: "Solana Agent Kit!", + }, + }, + ); - const textEncoder = new TextEncoder(); - const transformStream = new ReadableStream({ - async start(controller) { - for await (const { event, data } of eventStream) { - if (event === "on_chat_model_stream") { - if (!!data.chunk.content) { - controller.enqueue(textEncoder.encode(data.chunk.content)); - } - } - } - controller.close(); - }, - }); + const textEncoder = new TextEncoder(); + const transformStream = new ReadableStream({ + async start(controller) { + for await (const { event, data } of eventStream) { + if (event === "on_chat_model_stream") { + if (data.chunk.content) { + controller.enqueue(textEncoder.encode(data.chunk.content)); + } + } + } + controller.close(); + }, + }); - return new Response(transformStream); - } catch (e: any) { - return NextResponse.json({ error: e.message }, { status: e.status ?? 500 }); - } + return new Response(transformStream); + } catch (e: any) { + return NextResponse.json({ error: e.message }, { status: e.status ?? 500 }); + } } diff --git a/examples/agent-kit-nextjs-langchain/data/DefaultRetrievalText.ts b/examples/agent-kit-nextjs-langchain/data/DefaultRetrievalText.ts index 898acba..6973d98 100644 --- a/examples/agent-kit-nextjs-langchain/data/DefaultRetrievalText.ts +++ b/examples/agent-kit-nextjs-langchain/data/DefaultRetrievalText.ts @@ -537,4 +537,4 @@ const executor = await initializeAgentExecutorWithOptions(tools, llm, { }, }); \`\`\` -`; \ No newline at end of file +`; diff --git a/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts b/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts index dc265b1..135fdd9 100644 --- a/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts +++ b/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts @@ -2,29 +2,29 @@ import { marked } from "marked"; import DOMPurify from "isomorphic-dompurify"; interface MarkedOptions { - gfm: boolean; - breaks: boolean; - headerIds: boolean; - mangle: false; - highlight?: (code: string, lang: string) => string; + gfm: boolean; + breaks: boolean; + headerIds: boolean; + mangle: false; + highlight?: (code: string, lang: string) => string; } // Configure marked options const markedOptions: MarkedOptions = { - gfm: true, // GitHub Flavored Markdown - breaks: true, // Convert \n to
      - headerIds: true, // Add ids to headers - mangle: false, // Don't escape HTML - highlight: function (code: string, lang: string): string { - // You can add syntax highlighting here if needed - return code; - }, + gfm: true, // GitHub Flavored Markdown + breaks: true, // Convert \n to
      + headerIds: true, // Add ids to headers + mangle: false, // Don't escape HTML + highlight: function (code: string, lang: string): string { + // You can add syntax highlighting here if needed + return code; + }, }; marked.setOptions(markedOptions); // Basic markdown to HTML conversion with sanitization export default function markdownToHtml(markdown: string) { - const rawHtml = marked.parse(markdown); - return DOMPurify.sanitize(rawHtml as string); + const rawHtml = marked.parse(markdown); + return DOMPurify.sanitize(rawHtml as string); } diff --git a/package.json b/package.json index a84f7b5..5b2c3e4 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,8 @@ "test": "ts-node test/index.ts", "test:vercel-ai": "ts-node test/agent_sdks/vercel_ai.ts", "generate": "ts-node src/utils/keypair.ts", - "lint": "eslint . --ext .ts,.json", - "lint:fix": "eslint . --ext .ts,.json --fix", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"" }, "engines": { diff --git a/src/actions/createOrcaSingleSidedWhirlpool.ts b/src/actions/createOrcaSingleSidedWhirlpool.ts index affc445..3a1fb52 100644 --- a/src/actions/createOrcaSingleSidedWhirlpool.ts +++ b/src/actions/createOrcaSingleSidedWhirlpool.ts @@ -87,7 +87,7 @@ const createOrcaSingleSidedWhirlpoolAction: Action = { const otherTokenMint = new PublicKey(input.otherTokenMint); const initialPrice = new Decimal(input.initialPrice); const maxPrice = new Decimal(input.maxPrice); - const feeTier = input.feeTier + const feeTier = input.feeTier; // Create the whirlpool const signature = await orcaCreateSingleSidedLiquidityPool( diff --git a/src/actions/getWalletAddress.ts b/src/actions/getWalletAddress.ts index 114d642..7cd87c6 100644 --- a/src/actions/getWalletAddress.ts +++ b/src/actions/getWalletAddress.ts @@ -4,26 +4,26 @@ import { get_wallet_address } from "../tools"; import { Action } from "../types/action"; const getWalletAddressAction: Action = { - name: "GET_WALLET_ADDRESS", - similes: ["wallet address", "address", "wallet"], - description: "Get wallet address of the agent", - examples: [ - [ - { - input: {}, - output: { - status: "success", - address: "0x1234567890abcdef", - }, - explanation: "The agent's wallet address is 0x1234567890abcdef", - }, - ], - ], - schema: z.object({}), - handler: async (agent: SolanaAgentKit) => ({ - status: "success", - address: get_wallet_address(agent), - }), + name: "GET_WALLET_ADDRESS", + similes: ["wallet address", "address", "wallet"], + description: "Get wallet address of the agent", + examples: [ + [ + { + input: {}, + output: { + status: "success", + address: "0x1234567890abcdef", + }, + explanation: "The agent's wallet address is 0x1234567890abcdef", + }, + ], + ], + schema: z.object({}), + handler: async (agent: SolanaAgentKit) => ({ + status: "success", + address: get_wallet_address(agent), + }), }; export default getWalletAddressAction; diff --git a/src/actions/index.ts b/src/actions/index.ts index b99698a..1a2b75d 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -29,36 +29,36 @@ import launchPumpfunTokenAction from "./launchPumpfunToken"; import getWalletAddressAction from "./getWalletAddress"; export const ACTIONS = { - WALLET_ADDRESS_ACTION: getWalletAddressAction, - DEPLOY_TOKEN_ACTION: deployTokenAction, - BALANCE_ACTION: balanceAction, - TRANSFER_ACTION: transferAction, - DEPLOY_COLLECTION_ACTION: deployCollectionAction, - MINT_NFT_ACTION: mintNFTAction, - TRADE_ACTION: tradeAction, - REQUEST_FUNDS_ACTION: requestFundsAction, - RESOLVE_DOMAIN_ACTION: resolveDomainAction, - GET_TOKEN_DATA_ACTION: getTokenDataAction, - GET_TPS_ACTION: getTPSAction, - FETCH_PRICE_ACTION: fetchPriceAction, - STAKE_WITH_JUP_ACTION: stakeWithJupAction, - REGISTER_DOMAIN_ACTION: registerDomainAction, - LEND_ASSET_ACTION: lendAssetAction, - CREATE_GIBWORK_TASK_ACTION: createGibworkTaskAction, - RESOLVE_SOL_DOMAIN_ACTION: resolveSolDomainAction, - PYTH_FETCH_PRICE_ACTION: pythFetchPriceAction, - GET_OWNED_DOMAINS_FOR_TLD_ACTION: getOwnedDomainsForTLDAction, - GET_PRIMARY_DOMAIN_ACTION: getPrimaryDomainAction, - GET_ALL_DOMAINS_TLDS_ACTION: getAllDomainsTLDsAction, - GET_OWNED_ALL_DOMAINS_ACTION: getOwnedAllDomainsAction, - CREATE_IMAGE_ACTION: createImageAction, - GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: getMainAllDomainsDomainAction, - GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: getAllRegisteredAllDomainsAction, - RAYDIUM_CREATE_CPMM_ACTION: raydiumCreateCpmmAction, - RAYDIUM_CREATE_AMM_V4_ACTION: raydiumCreateAmmV4Action, - CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: - createOrcaSingleSidedWhirlpoolAction, - LAUNCH_PUMPFUN_TOKEN_ACTION: launchPumpfunTokenAction, + WALLET_ADDRESS_ACTION: getWalletAddressAction, + DEPLOY_TOKEN_ACTION: deployTokenAction, + BALANCE_ACTION: balanceAction, + TRANSFER_ACTION: transferAction, + DEPLOY_COLLECTION_ACTION: deployCollectionAction, + MINT_NFT_ACTION: mintNFTAction, + TRADE_ACTION: tradeAction, + REQUEST_FUNDS_ACTION: requestFundsAction, + RESOLVE_DOMAIN_ACTION: resolveDomainAction, + GET_TOKEN_DATA_ACTION: getTokenDataAction, + GET_TPS_ACTION: getTPSAction, + FETCH_PRICE_ACTION: fetchPriceAction, + STAKE_WITH_JUP_ACTION: stakeWithJupAction, + REGISTER_DOMAIN_ACTION: registerDomainAction, + LEND_ASSET_ACTION: lendAssetAction, + CREATE_GIBWORK_TASK_ACTION: createGibworkTaskAction, + RESOLVE_SOL_DOMAIN_ACTION: resolveSolDomainAction, + PYTH_FETCH_PRICE_ACTION: pythFetchPriceAction, + GET_OWNED_DOMAINS_FOR_TLD_ACTION: getOwnedDomainsForTLDAction, + GET_PRIMARY_DOMAIN_ACTION: getPrimaryDomainAction, + GET_ALL_DOMAINS_TLDS_ACTION: getAllDomainsTLDsAction, + GET_OWNED_ALL_DOMAINS_ACTION: getOwnedAllDomainsAction, + CREATE_IMAGE_ACTION: createImageAction, + GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: getMainAllDomainsDomainAction, + GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: getAllRegisteredAllDomainsAction, + RAYDIUM_CREATE_CPMM_ACTION: raydiumCreateCpmmAction, + RAYDIUM_CREATE_AMM_V4_ACTION: raydiumCreateAmmV4Action, + CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: + createOrcaSingleSidedWhirlpoolAction, + LAUNCH_PUMPFUN_TOKEN_ACTION: launchPumpfunTokenAction, }; export type { Action, ActionExample, Handler } from "../types/action"; diff --git a/src/agent/index.ts b/src/agent/index.ts index d0b017a..e982aa1 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -85,24 +85,30 @@ export class SolanaAgentKit { * @deprecated Using openai_api_key directly in constructor is deprecated. * Please use the new constructor with Config object instead: * @example - * const agent = new SolanaAgentKit(privateKey, rpcUrl, { + * const agent = new SolanaAgentKit(privateKey, rpcUrl, { * OPENAI_API_KEY: 'your-key' * }); */ - constructor(private_key: string, rpc_url: string, openai_api_key: string | null); + constructor( + private_key: string, + rpc_url: string, + openai_api_key: string | null, + ); constructor(private_key: string, rpc_url: string, config: Config); constructor( private_key: string, rpc_url: string, configOrKey: Config | string | null, ) { - this.connection = new Connection(rpc_url || "https://api.mainnet-beta.solana.com"); + this.connection = new Connection( + rpc_url || "https://api.mainnet-beta.solana.com", + ); this.wallet = Keypair.fromSecretKey(bs58.decode(private_key)); this.wallet_address = this.wallet.publicKey; // Handle both old and new patterns - if (typeof configOrKey === 'string' || configOrKey === null) { - this.config = { OPENAI_API_KEY: configOrKey || '' }; + if (typeof configOrKey === "string" || configOrKey === null) { + this.config = { OPENAI_API_KEY: configOrKey || "" }; } else { this.config = configOrKey; } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 49db2f8..b7c836e 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -2,17 +2,17 @@ import { PublicKey } from "@solana/web3.js"; import Decimal from "decimal.js"; import { Tool } from "langchain/tools"; import { - GibworkCreateTaskReponse, - PythFetchPriceResponse, - SolanaAgentKit, + GibworkCreateTaskReponse, + PythFetchPriceResponse, + SolanaAgentKit, } from "../index"; import { create_image } from "../tools/create_image"; import { BN } from "@coral-xyz/anchor"; import { FEE_TIERS } from "../tools"; export class SolanaBalanceTool extends Tool { - name = "solana_balance"; - description = `Get the balance of a Solana wallet or token account. + name = "solana_balance"; + description = `Get the balance of a Solana wallet or token account. If you want to get the balance of your wallet, you don't need to provide the tokenAddress. If no tokenAddress is provided, the balance will be in SOL. @@ -20,33 +20,33 @@ export class SolanaBalanceTool extends Tool { Inputs ( input is a JSON string ): tokenAddress: string, eg "So11111111111111111111111111111111111111112" (optional)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const tokenAddress = input ? new PublicKey(input) : undefined; - const balance = await this.solanaKit.getBalance(tokenAddress); + protected async _call(input: string): Promise { + try { + const tokenAddress = input ? new PublicKey(input) : undefined; + const balance = await this.solanaKit.getBalance(tokenAddress); - return JSON.stringify({ - status: "success", - balance, - token: input || "SOL", - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + balance, + token: input || "SOL", + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaBalanceOtherTool extends Tool { - name = "solana_balance_other"; - description = `Get the balance of a Solana wallet or token account which is different from the agent's wallet. + name = "solana_balance_other"; + description = `Get the balance of a Solana wallet or token account which is different from the agent's wallet. If no tokenAddress is provided, the SOL balance of the wallet will be returned. @@ -54,88 +54,88 @@ export class SolanaBalanceOtherTool extends Tool { walletAddress: string, eg "GDEkQF7UMr7RLv1KQKMtm8E2w3iafxJLtyXu3HVQZnME" (required) tokenAddress: string, eg "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (optional)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const { walletAddress, tokenAddress } = JSON.parse(input); + protected async _call(input: string): Promise { + try { + const { walletAddress, tokenAddress } = JSON.parse(input); - const tokenPubKey = tokenAddress - ? new PublicKey(tokenAddress) - : undefined; + const tokenPubKey = tokenAddress + ? new PublicKey(tokenAddress) + : undefined; - const balance = await this.solanaKit.getBalanceOther( - new PublicKey(walletAddress), - tokenPubKey, - ); + const balance = await this.solanaKit.getBalanceOther( + new PublicKey(walletAddress), + tokenPubKey, + ); - return JSON.stringify({ - status: "success", - balance, - wallet: walletAddress, - token: tokenAddress || "SOL", - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + balance, + wallet: walletAddress, + token: tokenAddress || "SOL", + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaTransferTool extends Tool { - name = "solana_transfer"; - description = `Transfer tokens or SOL to another address ( also called as wallet address ). + name = "solana_transfer"; + description = `Transfer tokens or SOL to another address ( also called as wallet address ). Inputs ( input is a JSON string ): to: string, eg "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk" (required) amount: number, eg 1 (required) mint?: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (optional)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); - const recipient = new PublicKey(parsedInput.to); - const mintAddress = parsedInput.mint - ? new PublicKey(parsedInput.mint) - : undefined; + const recipient = new PublicKey(parsedInput.to); + const mintAddress = parsedInput.mint + ? new PublicKey(parsedInput.mint) + : undefined; - const tx = await this.solanaKit.transfer( - recipient, - parsedInput.amount, - mintAddress, - ); + const tx = await this.solanaKit.transfer( + recipient, + parsedInput.amount, + mintAddress, + ); - return JSON.stringify({ - status: "success", - message: "Transfer completed successfully", - amount: parsedInput.amount, - recipient: parsedInput.to, - token: parsedInput.mint || "SOL", - transaction: tx, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Transfer completed successfully", + amount: parsedInput.amount, + recipient: parsedInput.to, + token: parsedInput.mint || "SOL", + transaction: tx, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaDeployTokenTool extends Tool { - name = "solana_deploy_token"; - description = `Deploy a new token on Solana blockchain. + name = "solana_deploy_token"; + description = `Deploy a new token on Solana blockchain. Inputs (input is a JSON string): name: string, eg "My Token" (required) @@ -144,76 +144,76 @@ export class SolanaDeployTokenTool extends Tool { decimals?: number, eg 9 (optional, defaults to 9) initialSupply?: number, eg 1000000 (optional)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); - const result = await this.solanaKit.deployToken( - parsedInput.name, - parsedInput.uri, - parsedInput.symbol, - parsedInput.decimals, - parsedInput.initialSupply, - ); + const result = await this.solanaKit.deployToken( + parsedInput.name, + parsedInput.uri, + parsedInput.symbol, + parsedInput.decimals, + parsedInput.initialSupply, + ); - return JSON.stringify({ - status: "success", - message: "Token deployed successfully", - mintAddress: result.mint.toString(), - decimals: parsedInput.decimals || 9, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Token deployed successfully", + mintAddress: result.mint.toString(), + decimals: parsedInput.decimals || 9, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaDeployCollectionTool extends Tool { - name = "solana_deploy_collection"; - description = `Deploy a new NFT collection on Solana blockchain. + name = "solana_deploy_collection"; + description = `Deploy a new NFT collection on Solana blockchain. Inputs (input is a JSON string): name: string, eg "My Collection" (required) uri: string, eg "https://example.com/collection.json" (required) royaltyBasisPoints?: number, eg 500 for 5% (optional)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); - const result = await this.solanaKit.deployCollection(parsedInput); + const result = await this.solanaKit.deployCollection(parsedInput); - return JSON.stringify({ - status: "success", - message: "Collection deployed successfully", - collectionAddress: result.collectionAddress.toString(), - name: parsedInput.name, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Collection deployed successfully", + collectionAddress: result.collectionAddress.toString(), + name: parsedInput.name, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaMintNFTTool extends Tool { - name = "solana_mint_nft"; - description = `Mint a new NFT in a collection on Solana blockchain. + name = "solana_mint_nft"; + description = `Mint a new NFT in a collection on Solana blockchain. Inputs (input is a JSON string): collectionMint: string, eg "J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w" (required) - The address of the collection to mint into @@ -221,49 +221,49 @@ export class SolanaMintNFTTool extends Tool { uri: string, eg "https://example.com/nft.json" (required) recipient?: string, eg "9aUn5swQzUTRanaaTwmszxiv89cvFwUCjEBv1vZCoT1u" (optional) - The wallet to receive the NFT, defaults to agent's wallet which is ${this.solanaKit.wallet_address.toString()}`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); - const result = await this.solanaKit.mintNFT( - new PublicKey(parsedInput.collectionMint), - { - name: parsedInput.name, - uri: parsedInput.uri, - }, - parsedInput.recipient - ? new PublicKey(parsedInput.recipient) - : this.solanaKit.wallet_address, - ); + const result = await this.solanaKit.mintNFT( + new PublicKey(parsedInput.collectionMint), + { + name: parsedInput.name, + uri: parsedInput.uri, + }, + parsedInput.recipient + ? new PublicKey(parsedInput.recipient) + : this.solanaKit.wallet_address, + ); - return JSON.stringify({ - status: "success", - message: "NFT minted successfully", - mintAddress: result.mint.toString(), - metadata: { - name: parsedInput.name, - symbol: parsedInput.symbol, - uri: parsedInput.uri, - }, - recipient: parsedInput.recipient || result.mint.toString(), - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "NFT minted successfully", + mintAddress: result.mint.toString(), + metadata: { + name: parsedInput.name, + symbol: parsedInput.symbol, + uri: parsedInput.uri, + }, + recipient: parsedInput.recipient || result.mint.toString(), + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaTradeTool extends Tool { - name = "solana_trade"; - description = `This tool can be used to swap tokens to another token ( It uses Jupiter Exchange ). + name = "solana_trade"; + description = `This tool can be used to swap tokens to another token ( It uses Jupiter Exchange ). Inputs ( input is a JSON string ): outputMint: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (required) @@ -271,44 +271,44 @@ export class SolanaTradeTool extends Tool { inputMint?: string, eg "So11111111111111111111111111111111111111112" (optional) slippageBps?: number, eg 100 (optional)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); - const tx = await this.solanaKit.trade( - new PublicKey(parsedInput.outputMint), - parsedInput.inputAmount, - parsedInput.inputMint - ? new PublicKey(parsedInput.inputMint) - : new PublicKey("So11111111111111111111111111111111111111112"), - parsedInput.slippageBps, - ); + const tx = await this.solanaKit.trade( + new PublicKey(parsedInput.outputMint), + parsedInput.inputAmount, + parsedInput.inputMint + ? new PublicKey(parsedInput.inputMint) + : new PublicKey("So11111111111111111111111111111111111111112"), + parsedInput.slippageBps, + ); - return JSON.stringify({ - status: "success", - message: "Trade executed successfully", - transaction: tx, - inputAmount: parsedInput.inputAmount, - inputToken: parsedInput.inputMint || "SOL", - outputToken: parsedInput.outputMint, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Trade executed successfully", + transaction: tx, + inputAmount: parsedInput.inputAmount, + inputToken: parsedInput.inputMint || "SOL", + outputToken: parsedInput.outputMint, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaLimitOrderTool extends Tool { - name = "solana_limit_order"; - description = `This tool can be used to place limit orders using Manifest. + name = "solana_limit_order"; + description = `This tool can be used to place limit orders using Manifest. Inputs ( input is a JSON string ): marketId: PublicKey, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required) @@ -316,186 +316,186 @@ export class SolanaLimitOrderTool extends Tool { side: string, eg "Buy" or "Sell" (required) price: number, in tokens eg 200 for SOL/USDC (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); - const tx = await this.solanaKit.limitOrder( - new PublicKey(parsedInput.marketId), - parsedInput.quantity, - parsedInput.side, - parsedInput.price, - ); + const tx = await this.solanaKit.limitOrder( + new PublicKey(parsedInput.marketId), + parsedInput.quantity, + parsedInput.side, + parsedInput.price, + ); - return JSON.stringify({ - status: "success", - message: "Trade executed successfully", - transaction: tx, - marketId: parsedInput.marketId, - quantity: parsedInput.quantity, - side: parsedInput.side, - price: parsedInput.price, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Trade executed successfully", + transaction: tx, + marketId: parsedInput.marketId, + quantity: parsedInput.quantity, + side: parsedInput.side, + price: parsedInput.price, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaCancelAllOrdersTool extends Tool { - name = "solana_cancel_all_orders"; - description = `This tool can be used to cancel all orders from a Manifest market. + name = "solana_cancel_all_orders"; + description = `This tool can be used to cancel all orders from a Manifest market. Input ( input is a JSON string ): marketId: string, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const marketId = new PublicKey(input.trim()); - const tx = await this.solanaKit.cancelAllOrders(marketId); + protected async _call(input: string): Promise { + try { + const marketId = new PublicKey(input.trim()); + const tx = await this.solanaKit.cancelAllOrders(marketId); - return JSON.stringify({ - status: "success", - message: "Cancel orders successfully", - transaction: tx, - marketId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Cancel orders successfully", + transaction: tx, + marketId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaWithdrawAllTool extends Tool { - name = "solana_withdraw_all"; - description = `This tool can be used to withdraw all funds from a Manifest market. + name = "solana_withdraw_all"; + description = `This tool can be used to withdraw all funds from a Manifest market. Input ( input is a JSON string ): marketId: string, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const marketId = new PublicKey(input.trim()); - const tx = await this.solanaKit.withdrawAll(marketId); + protected async _call(input: string): Promise { + try { + const marketId = new PublicKey(input.trim()); + const tx = await this.solanaKit.withdrawAll(marketId); - return JSON.stringify({ - status: "success", - message: "Withdrew successfully", - transaction: tx, - marketId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Withdrew successfully", + transaction: tx, + marketId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaRequestFundsTool extends Tool { - name = "solana_request_funds"; - description = "Request SOL from Solana faucet (devnet/testnet only)"; + name = "solana_request_funds"; + description = "Request SOL from Solana faucet (devnet/testnet only)"; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(_input: string): Promise { - try { - await this.solanaKit.requestFaucetFunds(); + protected async _call(_input: string): Promise { + try { + await this.solanaKit.requestFaucetFunds(); - return JSON.stringify({ - status: "success", - message: "Successfully requested faucet funds", - network: this.solanaKit.connection.rpcEndpoint.split("/")[2], - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Successfully requested faucet funds", + network: this.solanaKit.connection.rpcEndpoint.split("/")[2], + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaRegisterDomainTool extends Tool { - name = "solana_register_domain"; - description = `Register a .sol domain name for your wallet. + name = "solana_register_domain"; + description = `Register a .sol domain name for your wallet. Inputs: name: string, eg "pumpfun.sol" (required) spaceKB: number, eg 1 (optional, default is 1) `; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - private validateInput(input: any): void { - if (!input.name || typeof input.name !== "string") { - throw new Error("name is required and must be a string"); - } - if ( - input.spaceKB !== undefined && - (typeof input.spaceKB !== "number" || input.spaceKB <= 0) - ) { - throw new Error("spaceKB must be a positive number when provided"); - } - } + private validateInput(input: any): void { + if (!input.name || typeof input.name !== "string") { + throw new Error("name is required and must be a string"); + } + if ( + input.spaceKB !== undefined && + (typeof input.spaceKB !== "number" || input.spaceKB <= 0) + ) { + throw new Error("spaceKB must be a positive number when provided"); + } + } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - this.validateInput(parsedInput); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + this.validateInput(parsedInput); - const tx = await this.solanaKit.registerDomain( - parsedInput.name, - parsedInput.spaceKB || 1, - ); + const tx = await this.solanaKit.registerDomain( + parsedInput.name, + parsedInput.spaceKB || 1, + ); - return JSON.stringify({ - status: "success", - message: "Domain registered successfully", - transaction: tx, - domain: `${parsedInput.name}.sol`, - spaceKB: parsedInput.spaceKB || 1, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Domain registered successfully", + transaction: tx, + domain: `${parsedInput.name}.sol`, + spaceKB: parsedInput.spaceKB || 1, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaResolveDomainTool extends Tool { - name = "solana_resolve_domain"; - description = `Resolve ONLY .sol domain names to a Solana PublicKey. + name = "solana_resolve_domain"; + description = `Resolve ONLY .sol domain names to a Solana PublicKey. This tool is exclusively for .sol domains. DO NOT use this for other domain types like .blink, .bonk, etc. @@ -503,79 +503,79 @@ export class SolanaResolveDomainTool extends Tool { domain: string, eg "pumpfun.sol" (required) `; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const domain = input.trim(); - const publicKey = await this.solanaKit.resolveSolDomain(domain); + protected async _call(input: string): Promise { + try { + const domain = input.trim(); + const publicKey = await this.solanaKit.resolveSolDomain(domain); - return JSON.stringify({ - status: "success", - message: "Domain resolved successfully", - publicKey: publicKey.toBase58(), - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Domain resolved successfully", + publicKey: publicKey.toBase58(), + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaGetDomainTool extends Tool { - name = "solana_get_domain"; - description = `Retrieve the .sol domain associated for a given account address. + name = "solana_get_domain"; + description = `Retrieve the .sol domain associated for a given account address. Inputs: account: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required) `; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const account = new PublicKey(input.trim()); - const domain = await this.solanaKit.getPrimaryDomain(account); + protected async _call(input: string): Promise { + try { + const account = new PublicKey(input.trim()); + const domain = await this.solanaKit.getPrimaryDomain(account); - return JSON.stringify({ - status: "success", - message: "Primary domain retrieved successfully", - domain, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Primary domain retrieved successfully", + domain, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaGetWalletAddressTool extends Tool { - name = "solana_get_wallet_address"; - description = `Get the wallet address of the agent`; + name = "solana_get_wallet_address"; + description = `Get the wallet address of the agent`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(_input: string): Promise { - return this.solanaKit.wallet_address.toString(); - } + async _call(_input: string): Promise { + return this.solanaKit.wallet_address.toString(); + } } export class SolanaPumpfunTokenLaunchTool extends Tool { - name = "solana_launch_pumpfun_token"; + name = "solana_launch_pumpfun_token"; - description = `This tool can be used to launch a token on Pump.fun, + description = `This tool can be used to launch a token on Pump.fun, do not use this tool for any other purpose, or for creating SPL tokens. If the user asks you to chose the parameters, you should generate valid values. For generating the image, you can use the solana_create_image tool. @@ -586,283 +586,283 @@ export class SolanaPumpfunTokenLaunchTool extends Tool { description: string, eg "PumpFun Token is a token on the Solana blockchain", imageUrl: string, eg "https://i.imgur.com/UFm07Np_d.png`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - private validateInput(input: any): void { - if (!input.tokenName || typeof input.tokenName !== "string") { - throw new Error("tokenName is required and must be a string"); - } - if (!input.tokenTicker || typeof input.tokenTicker !== "string") { - throw new Error("tokenTicker is required and must be a string"); - } - if (!input.description || typeof input.description !== "string") { - throw new Error("description is required and must be a string"); - } - if (!input.imageUrl || typeof input.imageUrl !== "string") { - throw new Error("imageUrl is required and must be a string"); - } - if ( - input.initialLiquiditySOL !== undefined && - typeof input.initialLiquiditySOL !== "number" - ) { - throw new Error("initialLiquiditySOL must be a number when provided"); - } - } + private validateInput(input: any): void { + if (!input.tokenName || typeof input.tokenName !== "string") { + throw new Error("tokenName is required and must be a string"); + } + if (!input.tokenTicker || typeof input.tokenTicker !== "string") { + throw new Error("tokenTicker is required and must be a string"); + } + if (!input.description || typeof input.description !== "string") { + throw new Error("description is required and must be a string"); + } + if (!input.imageUrl || typeof input.imageUrl !== "string") { + throw new Error("imageUrl is required and must be a string"); + } + if ( + input.initialLiquiditySOL !== undefined && + typeof input.initialLiquiditySOL !== "number" + ) { + throw new Error("initialLiquiditySOL must be a number when provided"); + } + } - protected async _call(input: string): Promise { - try { - // Parse and normalize input - input = input.trim(); - const parsedInput = JSON.parse(input); + protected async _call(input: string): Promise { + try { + // Parse and normalize input + input = input.trim(); + const parsedInput = JSON.parse(input); - this.validateInput(parsedInput); + this.validateInput(parsedInput); - // Launch token with validated input - await this.solanaKit.launchPumpFunToken( - parsedInput.tokenName, - parsedInput.tokenTicker, - parsedInput.description, - parsedInput.imageUrl, - { - twitter: parsedInput.twitter, - telegram: parsedInput.telegram, - website: parsedInput.website, - initialLiquiditySOL: parsedInput.initialLiquiditySOL, - }, - ); + // Launch token with validated input + await this.solanaKit.launchPumpFunToken( + parsedInput.tokenName, + parsedInput.tokenTicker, + parsedInput.description, + parsedInput.imageUrl, + { + twitter: parsedInput.twitter, + telegram: parsedInput.telegram, + website: parsedInput.website, + initialLiquiditySOL: parsedInput.initialLiquiditySOL, + }, + ); - return JSON.stringify({ - status: "success", - message: "Token launched successfully on Pump.fun", - tokenName: parsedInput.tokenName, - tokenTicker: parsedInput.tokenTicker, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Token launched successfully on Pump.fun", + tokenName: parsedInput.tokenName, + tokenTicker: parsedInput.tokenTicker, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaCreateImageTool extends Tool { - name = "solana_create_image"; - description = - "Create an image using OpenAI's DALL-E. Input should be a string prompt for the image."; + name = "solana_create_image"; + description = + "Create an image using OpenAI's DALL-E. Input should be a string prompt for the image."; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - private validateInput(input: string): void { - if (typeof input !== "string" || input.trim().length === 0) { - throw new Error("Input must be a non-empty string prompt"); - } - } + private validateInput(input: string): void { + if (typeof input !== "string" || input.trim().length === 0) { + throw new Error("Input must be a non-empty string prompt"); + } + } - protected async _call(input: string): Promise { - try { - this.validateInput(input); - const result = await create_image(this.solanaKit, input.trim()); + protected async _call(input: string): Promise { + try { + this.validateInput(input); + const result = await create_image(this.solanaKit, input.trim()); - return JSON.stringify({ - status: "success", - message: "Image created successfully", - ...result, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Image created successfully", + ...result, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaLendAssetTool extends Tool { - name = "solana_lend_asset"; - description = `Lend idle USDC for yield using Lulo. ( only USDC is supported ) + name = "solana_lend_asset"; + description = `Lend idle USDC for yield using Lulo. ( only USDC is supported ) Inputs (input is a json string): amount: number, eg 1, 0.01 (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const amount = JSON.parse(input).amount || input; + async _call(input: string): Promise { + try { + const amount = JSON.parse(input).amount || input; - const tx = await this.solanaKit.lendAssets(amount); + const tx = await this.solanaKit.lendAssets(amount); - return JSON.stringify({ - status: "success", - message: "Asset lent successfully", - transaction: tx, - amount, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Asset lent successfully", + transaction: tx, + amount, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaTPSCalculatorTool extends Tool { - name = "solana_get_tps"; - description = "Get the current TPS of the Solana network"; + name = "solana_get_tps"; + description = "Get the current TPS of the Solana network"; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(_input: string): Promise { - try { - const tps = await this.solanaKit.getTPS(); - return `Solana (mainnet-beta) current transactions per second: ${tps}`; - } catch (error: any) { - return `Error fetching TPS: ${error.message}`; - } - } + async _call(_input: string): Promise { + try { + const tps = await this.solanaKit.getTPS(); + return `Solana (mainnet-beta) current transactions per second: ${tps}`; + } catch (error: any) { + return `Error fetching TPS: ${error.message}`; + } + } } export class SolanaStakeTool extends Tool { - name = "solana_stake"; - description = `This tool can be used to stake your SOL (Solana), also called as SOL staking or liquid staking. + name = "solana_stake"; + description = `This tool can be used to stake your SOL (Solana), also called as SOL staking or liquid staking. Inputs ( input is a JSON string ): amount: number, eg 1 or 0.01 (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input) || Number(input); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input) || Number(input); - const tx = await this.solanaKit.stake(parsedInput.amount); + const tx = await this.solanaKit.stake(parsedInput.amount); - return JSON.stringify({ - status: "success", - message: "Staked successfully", - transaction: tx, - amount: parsedInput.amount, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Staked successfully", + transaction: tx, + amount: parsedInput.amount, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } /** * Tool to fetch the price of a token in USDC */ export class SolanaFetchPriceTool extends Tool { - name = "solana_fetch_price"; - description = `Fetch the price of a given token in USDC. + name = "solana_fetch_price"; + description = `Fetch the price of a given token in USDC. Inputs: - tokenId: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const price = await this.solanaKit.fetchTokenPrice(input.trim()); - return JSON.stringify({ - status: "success", - tokenId: input.trim(), - priceInUSDC: price, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + async _call(input: string): Promise { + try { + const price = await this.solanaKit.fetchTokenPrice(input.trim()); + return JSON.stringify({ + status: "success", + tokenId: input.trim(), + priceInUSDC: price, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaTokenDataTool extends Tool { - name = "solana_token_data"; - description = `Get the token data for a given token mint address + name = "solana_token_data"; + description = `Get the token data for a given token mint address Inputs: mintAddress is required. mintAddress: string, eg "So11111111111111111111111111111111111111112" (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const parsedInput = input.trim(); + protected async _call(input: string): Promise { + try { + const parsedInput = input.trim(); - const tokenData = await this.solanaKit.getTokenDataByAddress(parsedInput); + const tokenData = await this.solanaKit.getTokenDataByAddress(parsedInput); - return JSON.stringify({ - status: "success", - tokenData, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + tokenData, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaTokenDataByTickerTool extends Tool { - name = "solana_token_data_by_ticker"; - description = `Get the token data for a given token ticker + name = "solana_token_data_by_ticker"; + description = `Get the token data for a given token ticker Inputs: ticker is required. ticker: string, eg "USDC" (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const ticker = input.trim(); - const tokenData = await this.solanaKit.getTokenDataByTicker(ticker); - return JSON.stringify({ - status: "success", - tokenData, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + protected async _call(input: string): Promise { + try { + const ticker = input.trim(); + const tokenData = await this.solanaKit.getTokenDataByTicker(ticker); + return JSON.stringify({ + status: "success", + tokenData, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaCompressedAirdropTool extends Tool { - name = "solana_compressed_airdrop"; - description = `Airdrop SPL tokens with ZK Compression (also called as airdropping tokens) + name = "solana_compressed_airdrop"; + description = `Airdrop SPL tokens with ZK Compression (also called as airdropping tokens) Inputs (input is a JSON string): mintAddress: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" (required) @@ -872,77 +872,77 @@ export class SolanaCompressedAirdropTool extends Tool { priorityFeeInLamports: number, the priority fee in lamports. Default is 30_000. (optional) shouldLog: boolean, whether to log progress to stdout. Default is false. (optional)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); - const txs = await this.solanaKit.sendCompressedAirdrop( - parsedInput.mintAddress, - parsedInput.amount, - parsedInput.decimals, - parsedInput.recipients, - parsedInput.priorityFeeInLamports || 30_000, - parsedInput.shouldLog || false, - ); + const txs = await this.solanaKit.sendCompressedAirdrop( + parsedInput.mintAddress, + parsedInput.amount, + parsedInput.decimals, + parsedInput.recipients, + parsedInput.priorityFeeInLamports || 30_000, + parsedInput.shouldLog || false, + ); - return JSON.stringify({ - status: "success", - message: `Airdropped ${parsedInput.amount} tokens to ${parsedInput.recipients.length} recipients.`, - transactionHashes: txs, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: `Airdropped ${parsedInput.amount} tokens to ${parsedInput.recipients.length} recipients.`, + transactionHashes: txs, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaClosePosition extends Tool { - name = "orca_close_position"; - description = `Closes an existing liquidity position in an Orca Whirlpool. This function fetches the position + name = "orca_close_position"; + description = `Closes an existing liquidity position in an Orca Whirlpool. This function fetches the position details using the provided mint address and closes the position with a 1% slippage. Inputs (JSON string): - positionMintAddress: string, the address of the position mint that represents the liquidity position.`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - const positionMintAddress = new PublicKey( - inputFormat.positionMintAddress, - ); + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + const positionMintAddress = new PublicKey( + inputFormat.positionMintAddress, + ); - const txId = await this.solanaKit.orcaClosePosition(positionMintAddress); + const txId = await this.solanaKit.orcaClosePosition(positionMintAddress); - return JSON.stringify({ - status: "success", - message: "Liquidity position closed successfully.", - transaction: txId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Liquidity position closed successfully.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaOrcaCreateCLMM extends Tool { - name = "orca_create_clmm"; - description = `Create a Concentrated Liquidity Market Maker (CLMM) pool on Orca, the most efficient and capital-optimized CLMM on Solana. This function initializes a CLMM pool but does not add liquidity. You can add liquidity later using a centered position or a single-sided position. + name = "orca_create_clmm"; + description = `Create a Concentrated Liquidity Market Maker (CLMM) pool on Orca, the most efficient and capital-optimized CLMM on Solana. This function initializes a CLMM pool but does not add liquidity. You can add liquidity later using a centered position or a single-sided position. Inputs (JSON string): - mintDeploy: string, the mint of the token you want to deploy (required). @@ -950,52 +950,52 @@ export class SolanaOrcaCreateCLMM extends Tool { - initialPrice: number, initial price of mintA in terms of mintB, e.g., 0.001 (required). - feeTier: number, fee tier in bps. Options: 1, 2, 4, 5, 16, 30, 65, 100, 200 (required).`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - const mintA = new PublicKey(inputFormat.mintDeploy); - const mintB = new PublicKey(inputFormat.mintPair); - const initialPrice = new Decimal(inputFormat.initialPrice); - const feeTier = inputFormat.feeTier; + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + const mintA = new PublicKey(inputFormat.mintDeploy); + const mintB = new PublicKey(inputFormat.mintPair); + const initialPrice = new Decimal(inputFormat.initialPrice); + const feeTier = inputFormat.feeTier; - if (!feeTier || !(feeTier in FEE_TIERS)) { - throw new Error( - `Invalid feeTier. Available options: ${Object.keys(FEE_TIERS).join( - ", ", - )}`, - ); - } + if (!feeTier || !(feeTier in FEE_TIERS)) { + throw new Error( + `Invalid feeTier. Available options: ${Object.keys(FEE_TIERS).join( + ", ", + )}`, + ); + } - const txId = await this.solanaKit.orcaCreateCLMM( - mintA, - mintB, - initialPrice, - feeTier, - ); + const txId = await this.solanaKit.orcaCreateCLMM( + mintA, + mintB, + initialPrice, + feeTier, + ); - return JSON.stringify({ - status: "success", - message: - "CLMM pool created successfully. Note: No liquidity was added.", - transaction: txId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: + "CLMM pool created successfully. Note: No liquidity was added.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaOrcaCreateSingleSideLiquidityPool extends Tool { - name = "orca_create_single_sided_liquidity_pool"; - description = `Create a single-sided liquidity pool on Orca, the most efficient and capital-optimized CLMM platform on Solana. + name = "orca_create_single_sided_liquidity_pool"; + description = `Create a single-sided liquidity pool on Orca, the most efficient and capital-optimized CLMM platform on Solana. This function initializes a single-sided liquidity pool, ideal for community driven project, fair launches, and fundraising. Minimize price impact by setting a narrow price range. @@ -1007,82 +1007,82 @@ export class SolanaOrcaCreateSingleSideLiquidityPool extends Tool { - maxPrice: number, maximum price at which liquidity is added, e.g., 5.0 (required). - feeTier: number, fee tier for the pool in bps. Options: 1, 2, 4, 5, 16, 30, 65, 100, 200 (required).`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - const depositTokenAmount = inputFormat.depositTokenAmount; - const depositTokenMint = new PublicKey(inputFormat.depositTokenMint); - const otherTokenMint = new PublicKey(inputFormat.otherTokenMint); - const initialPrice = new Decimal(inputFormat.initialPrice); - const maxPrice = new Decimal(inputFormat.maxPrice); - const feeTier = inputFormat.feeTier; + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + const depositTokenAmount = inputFormat.depositTokenAmount; + const depositTokenMint = new PublicKey(inputFormat.depositTokenMint); + const otherTokenMint = new PublicKey(inputFormat.otherTokenMint); + const initialPrice = new Decimal(inputFormat.initialPrice); + const maxPrice = new Decimal(inputFormat.maxPrice); + const feeTier = inputFormat.feeTier; - if (!feeTier || !(feeTier in FEE_TIERS)) { - throw new Error( - `Invalid feeTier. Available options: ${Object.keys(FEE_TIERS).join( - ", ", - )}`, - ); - } + if (!feeTier || !(feeTier in FEE_TIERS)) { + throw new Error( + `Invalid feeTier. Available options: ${Object.keys(FEE_TIERS).join( + ", ", + )}`, + ); + } - const txId = await this.solanaKit.orcaCreateSingleSidedLiquidityPool( - depositTokenAmount, - depositTokenMint, - otherTokenMint, - initialPrice, - maxPrice, - feeTier, - ); + const txId = await this.solanaKit.orcaCreateSingleSidedLiquidityPool( + depositTokenAmount, + depositTokenMint, + otherTokenMint, + initialPrice, + maxPrice, + feeTier, + ); - return JSON.stringify({ - status: "success", - message: "Single-sided Whirlpool created successfully", - transaction: txId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Single-sided Whirlpool created successfully", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaOrcaFetchPositions extends Tool { - name = "orca_fetch_positions"; - description = `Fetch all the liquidity positions in an Orca Whirlpool by owner. Returns an object with positiont mint addresses as keys and position status details as values.`; + name = "orca_fetch_positions"; + description = `Fetch all the liquidity positions in an Orca Whirlpool by owner. Returns an object with positiont mint addresses as keys and position status details as values.`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(): Promise { - try { - const txId = await this.solanaKit.orcaFetchPositions(); + async _call(): Promise { + try { + const txId = await this.solanaKit.orcaFetchPositions(); - return JSON.stringify({ - status: "success", - message: "Liquidity positions fetched.", - transaction: txId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Liquidity positions fetched.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaOrcaOpenCenteredPosition extends Tool { - name = "orca_open_centered_position_with_liquidity"; - description = `Add liquidity to a CLMM by opening a centered position in an Orca Whirlpool, the most efficient liquidity pool on Solana. + name = "orca_open_centered_position_with_liquidity"; + description = `Add liquidity to a CLMM by opening a centered position in an Orca Whirlpool, the most efficient liquidity pool on Solana. Inputs (JSON string): - whirlpoolAddress: string, address of the Orca Whirlpool (required). @@ -1090,49 +1090,49 @@ export class SolanaOrcaOpenCenteredPosition extends Tool { - inputTokenMint: string, mint address of the deposit token (required). - inputAmount: number, amount of the deposit token, e.g., 100.0 (required).`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - const whirlpoolAddress = new PublicKey(inputFormat.whirlpoolAddress); - const priceOffsetBps = parseInt(inputFormat.priceOffsetBps, 10); - const inputTokenMint = new PublicKey(inputFormat.inputTokenMint); - const inputAmount = new Decimal(inputFormat.inputAmount); + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + const whirlpoolAddress = new PublicKey(inputFormat.whirlpoolAddress); + const priceOffsetBps = parseInt(inputFormat.priceOffsetBps, 10); + const inputTokenMint = new PublicKey(inputFormat.inputTokenMint); + const inputAmount = new Decimal(inputFormat.inputAmount); - if (priceOffsetBps < 0) { - throw new Error( - "Invalid distanceFromCurrentPriceBps. It must be equal or greater than 0.", - ); - } + if (priceOffsetBps < 0) { + throw new Error( + "Invalid distanceFromCurrentPriceBps. It must be equal or greater than 0.", + ); + } - const txId = await this.solanaKit.orcaOpenCenteredPositionWithLiquidity( - whirlpoolAddress, - priceOffsetBps, - inputTokenMint, - inputAmount, - ); + const txId = await this.solanaKit.orcaOpenCenteredPositionWithLiquidity( + whirlpoolAddress, + priceOffsetBps, + inputTokenMint, + inputAmount, + ); - return JSON.stringify({ - status: "success", - message: "Centered liquidity position opened successfully.", - transaction: txId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Centered liquidity position opened successfully.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaOrcaOpenSingleSidedPosition extends Tool { - name = "orca_open_single_sided_position"; - description = `Add liquidity to a CLMM by opening a single-sided position in an Orca Whirlpool, the most efficient liquidity pool on Solana. + name = "orca_open_single_sided_position"; + description = `Add liquidity to a CLMM by opening a single-sided position in an Orca Whirlpool, the most efficient liquidity pool on Solana. Inputs (JSON string): - whirlpoolAddress: string, address of the Orca Whirlpool (required). @@ -1141,52 +1141,52 @@ export class SolanaOrcaOpenSingleSidedPosition extends Tool { - inputTokenMint: string, mint address of the deposit token (required). - inputAmount: number, amount of the deposit token, e.g., 100.0 (required).`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); - const whirlpoolAddress = new PublicKey(inputFormat.whirlpoolAddress); - const distanceFromCurrentPriceBps = - inputFormat.distanceFromCurrentPriceBps; - const widthBps = inputFormat.widthBps; - const inputTokenMint = new PublicKey(inputFormat.inputTokenMint); - const inputAmount = new Decimal(inputFormat.inputAmount); + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); + const whirlpoolAddress = new PublicKey(inputFormat.whirlpoolAddress); + const distanceFromCurrentPriceBps = + inputFormat.distanceFromCurrentPriceBps; + const widthBps = inputFormat.widthBps; + const inputTokenMint = new PublicKey(inputFormat.inputTokenMint); + const inputAmount = new Decimal(inputFormat.inputAmount); - if (distanceFromCurrentPriceBps < 0 || widthBps < 0) { - throw new Error( - "Invalid distanceFromCurrentPriceBps or width. It must be equal or greater than 0.", - ); - } + if (distanceFromCurrentPriceBps < 0 || widthBps < 0) { + throw new Error( + "Invalid distanceFromCurrentPriceBps or width. It must be equal or greater than 0.", + ); + } - const txId = await this.solanaKit.orcaOpenSingleSidedPosition( - whirlpoolAddress, - distanceFromCurrentPriceBps, - widthBps, - inputTokenMint, - inputAmount, - ); + const txId = await this.solanaKit.orcaOpenSingleSidedPosition( + whirlpoolAddress, + distanceFromCurrentPriceBps, + widthBps, + inputTokenMint, + inputAmount, + ); - return JSON.stringify({ - status: "success", - message: "Single-sided liquidity position opened successfully.", - transaction: txId, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Single-sided liquidity position opened successfully.", + transaction: txId, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaRaydiumCreateAmmV4 extends Tool { - name = "raydium_create_ammV4"; - description = `Raydium's Legacy AMM that requires an OpenBook marketID + name = "raydium_create_ammV4"; + description = `Raydium's Legacy AMM that requires an OpenBook marketID Inputs (input is a json string): marketId: string (required) @@ -1195,39 +1195,39 @@ export class SolanaRaydiumCreateAmmV4 extends Tool { startTime: number(seconds), eg: now number or zero (required) `; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); - const tx = await this.solanaKit.raydiumCreateAmmV4( - new PublicKey(inputFormat.marketId), - new BN(inputFormat.baseAmount), - new BN(inputFormat.quoteAmount), - new BN(inputFormat.startTime), - ); + const tx = await this.solanaKit.raydiumCreateAmmV4( + new PublicKey(inputFormat.marketId), + new BN(inputFormat.baseAmount), + new BN(inputFormat.quoteAmount), + new BN(inputFormat.startTime), + ); - return JSON.stringify({ - status: "success", - message: "Raydium amm v4 pool created successfully", - transaction: tx, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Raydium amm v4 pool created successfully", + transaction: tx, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaRaydiumCreateClmm extends Tool { - name = "raydium_create_clmm"; - description = `Concentrated liquidity market maker, custom liquidity ranges, increased capital efficiency + name = "raydium_create_clmm"; + description = `Concentrated liquidity market maker, custom liquidity ranges, increased capital efficiency Inputs (input is a json string): mint1: string (required) @@ -1237,42 +1237,42 @@ export class SolanaRaydiumCreateClmm extends Tool { startTime: number(seconds), eg: now number or zero (required) `; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); - const tx = await this.solanaKit.raydiumCreateClmm( - new PublicKey(inputFormat.mint1), - new PublicKey(inputFormat.mint2), + const tx = await this.solanaKit.raydiumCreateClmm( + new PublicKey(inputFormat.mint1), + new PublicKey(inputFormat.mint2), - new PublicKey(inputFormat.configId), + new PublicKey(inputFormat.configId), - new Decimal(inputFormat.initialPrice), - new BN(inputFormat.startTime), - ); + new Decimal(inputFormat.initialPrice), + new BN(inputFormat.startTime), + ); - return JSON.stringify({ - status: "success", - message: "Raydium clmm pool created successfully", - transaction: tx, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Raydium clmm pool created successfully", + transaction: tx, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaRaydiumCreateCpmm extends Tool { - name = "raydium_create_cpmm"; - description = `Raydium's newest CPMM, does not require marketID, supports Token 2022 standard + name = "raydium_create_cpmm"; + description = `Raydium's newest CPMM, does not require marketID, supports Token 2022 standard Inputs (input is a json string): mint1: string (required) @@ -1283,44 +1283,44 @@ export class SolanaRaydiumCreateCpmm extends Tool { startTime: number(seconds), eg: now number or zero (required) `; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); - const tx = await this.solanaKit.raydiumCreateCpmm( - new PublicKey(inputFormat.mint1), - new PublicKey(inputFormat.mint2), + const tx = await this.solanaKit.raydiumCreateCpmm( + new PublicKey(inputFormat.mint1), + new PublicKey(inputFormat.mint2), - new PublicKey(inputFormat.configId), + new PublicKey(inputFormat.configId), - new BN(inputFormat.mintAAmount), - new BN(inputFormat.mintBAmount), + new BN(inputFormat.mintAAmount), + new BN(inputFormat.mintBAmount), - new BN(inputFormat.startTime), - ); + new BN(inputFormat.startTime), + ); - return JSON.stringify({ - status: "success", - message: "Raydium cpmm pool created successfully", - transaction: tx, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Raydium cpmm pool created successfully", + transaction: tx, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaOpenbookCreateMarket extends Tool { - name = "solana_openbook_create_market"; - description = `Openbook marketId, required for ammv4 + name = "solana_openbook_create_market"; + description = `Openbook marketId, required for ammv4 Inputs (input is a json string): baseMint: string (required) @@ -1329,270 +1329,270 @@ export class SolanaOpenbookCreateMarket extends Tool { tickSize: number (required) `; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); - const tx = await this.solanaKit.openbookCreateMarket( - new PublicKey(inputFormat.baseMint), - new PublicKey(inputFormat.quoteMint), + const tx = await this.solanaKit.openbookCreateMarket( + new PublicKey(inputFormat.baseMint), + new PublicKey(inputFormat.quoteMint), - inputFormat.lotSize, - inputFormat.tickSize, - ); + inputFormat.lotSize, + inputFormat.tickSize, + ); - return JSON.stringify({ - status: "success", - message: "Openbook market created successfully", - transaction: tx, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Openbook market created successfully", + transaction: tx, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaManifestCreateMarket extends Tool { - name = "solana_manifest_create_market"; - description = `Manifest market + name = "solana_manifest_create_market"; + description = `Manifest market Inputs (input is a json string): baseMint: string (required) quoteMint: string (required) `; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const inputFormat = JSON.parse(input); + async _call(input: string): Promise { + try { + const inputFormat = JSON.parse(input); - const tx = await this.solanaKit.manifestCreateMarket( - new PublicKey(inputFormat.baseMint), - new PublicKey(inputFormat.quoteMint), - ); + const tx = await this.solanaKit.manifestCreateMarket( + new PublicKey(inputFormat.baseMint), + new PublicKey(inputFormat.quoteMint), + ); - return JSON.stringify({ - status: "success", - message: "Create manifest market successfully", - transaction: tx[0], - marketId: tx[1], - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Create manifest market successfully", + transaction: tx[0], + marketId: tx[1], + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaPythFetchPrice extends Tool { - name = "solana_pyth_fetch_price"; - description = `Fetch the price of a given price feed from Pyth's Hermes service + name = "solana_pyth_fetch_price"; + description = `Fetch the price of a given price feed from Pyth's Hermes service Inputs: priceFeedID: string, the price feed ID, e.g., "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43" for BTC/USD`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const price = await this.solanaKit.pythFetchPrice(input); - const response: PythFetchPriceResponse = { - status: "success", - priceFeedID: input, - price, - }; - return JSON.stringify(response); - } catch (error: any) { - const response: PythFetchPriceResponse = { - status: "error", - priceFeedID: input, - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }; - return JSON.stringify(response); - } - } + async _call(input: string): Promise { + try { + const price = await this.solanaKit.pythFetchPrice(input); + const response: PythFetchPriceResponse = { + status: "success", + priceFeedID: input, + price, + }; + return JSON.stringify(response); + } catch (error: any) { + const response: PythFetchPriceResponse = { + status: "error", + priceFeedID: input, + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }; + return JSON.stringify(response); + } + } } export class SolanaResolveAllDomainsTool extends Tool { - name = "solana_resolve_all_domains"; - description = `Resolve domain names to a public key for ALL domain types EXCEPT .sol domains. + name = "solana_resolve_all_domains"; + description = `Resolve domain names to a public key for ALL domain types EXCEPT .sol domains. Use this for domains like .blink, .bonk, etc. DO NOT use this for .sol domains (use solana_resolve_domain instead). Input: domain: string, eg "mydomain.blink" or "mydomain.bonk" (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const owner = await this.solanaKit.resolveAllDomains(input); + async _call(input: string): Promise { + try { + const owner = await this.solanaKit.resolveAllDomains(input); - if (!owner) { - return JSON.stringify({ - status: "error", - message: "Domain not found", - code: "DOMAIN_NOT_FOUND", - }); - } + if (!owner) { + return JSON.stringify({ + status: "error", + message: "Domain not found", + code: "DOMAIN_NOT_FOUND", + }); + } - return JSON.stringify({ - status: "success", - message: "Domain resolved successfully", - owner: owner?.toString(), - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "DOMAIN_RESOLUTION_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Domain resolved successfully", + owner: owner?.toString(), + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "DOMAIN_RESOLUTION_ERROR", + }); + } + } } export class SolanaGetOwnedDomains extends Tool { - name = "solana_get_owned_domains"; - description = `Get all domains owned by a specific wallet address. + name = "solana_get_owned_domains"; + description = `Get all domains owned by a specific wallet address. Inputs: owner: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const ownerPubkey = new PublicKey(input.trim()); - const domains = await this.solanaKit.getOwnedAllDomains(ownerPubkey); + async _call(input: string): Promise { + try { + const ownerPubkey = new PublicKey(input.trim()); + const domains = await this.solanaKit.getOwnedAllDomains(ownerPubkey); - return JSON.stringify({ - status: "success", - message: "Owned domains fetched successfully", - domains, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "FETCH_OWNED_DOMAINS_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Owned domains fetched successfully", + domains, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "FETCH_OWNED_DOMAINS_ERROR", + }); + } + } } export class SolanaGetOwnedTldDomains extends Tool { - name = "solana_get_owned_tld_domains"; - description = `Get all domains owned by the agent's wallet for a specific TLD. + name = "solana_get_owned_tld_domains"; + description = `Get all domains owned by the agent's wallet for a specific TLD. Inputs: tld: string, eg "bonk" (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const domains = await this.solanaKit.getOwnedDomainsForTLD(input); + async _call(input: string): Promise { + try { + const domains = await this.solanaKit.getOwnedDomainsForTLD(input); - return JSON.stringify({ - status: "success", - message: "TLD domains fetched successfully", - domains, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "FETCH_TLD_DOMAINS_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "TLD domains fetched successfully", + domains, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "FETCH_TLD_DOMAINS_ERROR", + }); + } + } } export class SolanaGetAllTlds extends Tool { - name = "solana_get_all_tlds"; - description = `Get all active top-level domains (TLDs) in the AllDomains Name Service`; + name = "solana_get_all_tlds"; + description = `Get all active top-level domains (TLDs) in the AllDomains Name Service`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(): Promise { - try { - const tlds = await this.solanaKit.getAllDomainsTLDs(); + async _call(): Promise { + try { + const tlds = await this.solanaKit.getAllDomainsTLDs(); - return JSON.stringify({ - status: "success", - message: "TLDs fetched successfully", - tlds, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "FETCH_TLDS_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "TLDs fetched successfully", + tlds, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "FETCH_TLDS_ERROR", + }); + } + } } export class SolanaGetMainDomain extends Tool { - name = "solana_get_main_domain"; - description = `Get the main/favorite domain for a given wallet address. + name = "solana_get_main_domain"; + description = `Get the main/favorite domain for a given wallet address. Inputs: owner: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - async _call(input: string): Promise { - try { - const ownerPubkey = new PublicKey(input.trim()); - const mainDomain = - await this.solanaKit.getMainAllDomainsDomain(ownerPubkey); + async _call(input: string): Promise { + try { + const ownerPubkey = new PublicKey(input.trim()); + const mainDomain = + await this.solanaKit.getMainAllDomainsDomain(ownerPubkey); - return JSON.stringify({ - status: "success", - message: "Main domain fetched successfully", - domain: mainDomain, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "FETCH_MAIN_DOMAIN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "Main domain fetched successfully", + domain: mainDomain, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "FETCH_MAIN_DOMAIN_ERROR", + }); + } + } } export class SolanaCreateGibworkTask extends Tool { - name = "create_gibwork_task"; - description = `Create a task on Gibwork. + name = "create_gibwork_task"; + description = `Create a task on Gibwork. Inputs (input is a JSON string): title: string, title of the task (required) @@ -1604,274 +1604,274 @@ export class SolanaCreateGibworkTask extends Tool { amount: number, payment amount (required) `; - constructor(private solanaSdk: SolanaAgentKit) { - super(); - } + constructor(private solanaSdk: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); - const taskData = await this.solanaSdk.createGibworkTask( - parsedInput.title, - parsedInput.content, - parsedInput.requirements, - parsedInput.tags, - parsedInput.tokenMintAddress, - parsedInput.amount, - parsedInput.payer, - ); + const taskData = await this.solanaSdk.createGibworkTask( + parsedInput.title, + parsedInput.content, + parsedInput.requirements, + parsedInput.tags, + parsedInput.tokenMintAddress, + parsedInput.amount, + parsedInput.payer, + ); - const response: GibworkCreateTaskReponse = { - status: "success", - taskId: taskData.taskId, - signature: taskData.signature, - }; + const response: GibworkCreateTaskReponse = { + status: "success", + taskId: taskData.taskId, + signature: taskData.signature, + }; - return JSON.stringify(response); - } catch (err: any) { - return JSON.stringify({ - status: "error", - message: err.message, - code: err.code || "CREATE_TASK_ERROR", - }); - } - } + return JSON.stringify(response); + } catch (err: any) { + return JSON.stringify({ + status: "error", + message: err.message, + code: err.code || "CREATE_TASK_ERROR", + }); + } + } } export class SolanaRockPaperScissorsTool extends Tool { - name = "rock_paper_scissors"; - description = `Play rock paper scissors to win SEND coins. + name = "rock_paper_scissors"; + description = `Play rock paper scissors to win SEND coins. Inputs (input is a JSON string): choice: string, either "rock", "paper", or "scissors" (required) amount: number, amount of SOL to play with - must be 0.1, 0.01, or 0.005 SOL (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - private validateInput(input: any): void { - if (input.choice !== undefined) { - throw new Error("choice is required."); - } - if ( - input.amount !== undefined && - (typeof input.spaceKB !== "number" || input.spaceKB <= 0) - ) { - throw new Error("amount must be a positive number when provided"); - } - } + private validateInput(input: any): void { + if (input.choice !== undefined) { + throw new Error("choice is required."); + } + if ( + input.amount !== undefined && + (typeof input.spaceKB !== "number" || input.spaceKB <= 0) + ) { + throw new Error("amount must be a positive number when provided"); + } + } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - this.validateInput(parsedInput); - const result = await this.solanaKit.rockPaperScissors( - Number(parsedInput['"amount"']), - parsedInput['"choice"'].replace(/^"|"$/g, "") as - | "rock" - | "paper" - | "scissors", - ); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + this.validateInput(parsedInput); + const result = await this.solanaKit.rockPaperScissors( + Number(parsedInput['"amount"']), + parsedInput['"choice"'].replace(/^"|"$/g, "") as + | "rock" + | "paper" + | "scissors", + ); - return JSON.stringify({ - status: "success", - message: result, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: result, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaTipLinkTool extends Tool { - name = "solana_tiplink"; - description = `Create a TipLink for transferring SOL or SPL tokens. + name = "solana_tiplink"; + description = `Create a TipLink for transferring SOL or SPL tokens. Input is a JSON string with: - amount: number (required) - Amount to transfer - splmintAddress: string (optional) - SPL token mint address`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); - if (!parsedInput.amount) { - throw new Error("Amount is required"); - } + if (!parsedInput.amount) { + throw new Error("Amount is required"); + } - const amount = parseFloat(parsedInput.amount); - const splmintAddress = parsedInput.splmintAddress - ? new PublicKey(parsedInput.splmintAddress) - : undefined; + const amount = parseFloat(parsedInput.amount); + const splmintAddress = parsedInput.splmintAddress + ? new PublicKey(parsedInput.splmintAddress) + : undefined; - const { url, signature } = await this.solanaKit.createTiplink( - amount, - splmintAddress, - ); + const { url, signature } = await this.solanaKit.createTiplink( + amount, + splmintAddress, + ); - return JSON.stringify({ - status: "success", - url, - signature, - amount, - tokenType: splmintAddress ? "SPL" : "SOL", - message: `TipLink created successfully`, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + url, + signature, + amount, + tokenType: splmintAddress ? "SPL" : "SOL", + message: `TipLink created successfully`, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaListNFTForSaleTool extends Tool { - name = "solana_list_nft_for_sale"; - description = `List an NFT for sale on Tensor Trade. + name = "solana_list_nft_for_sale"; + description = `List an NFT for sale on Tensor Trade. Inputs (input is a JSON string): nftMint: string, the mint address of the NFT (required) price: number, price in SOL (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); - // Validate NFT ownership first - const nftAccount = - await this.solanaKit.connection.getTokenAccountsByOwner( - this.solanaKit.wallet_address, - { mint: new PublicKey(parsedInput.nftMint) }, - ); + // Validate NFT ownership first + const nftAccount = + await this.solanaKit.connection.getTokenAccountsByOwner( + this.solanaKit.wallet_address, + { mint: new PublicKey(parsedInput.nftMint) }, + ); - if (nftAccount.value.length === 0) { - return JSON.stringify({ - status: "error", - message: - "NFT not found in wallet. Please make sure you own this NFT.", - code: "NFT_NOT_FOUND", - }); - } + if (nftAccount.value.length === 0) { + return JSON.stringify({ + status: "error", + message: + "NFT not found in wallet. Please make sure you own this NFT.", + code: "NFT_NOT_FOUND", + }); + } - const tx = await this.solanaKit.tensorListNFT( - new PublicKey(parsedInput.nftMint), - parsedInput.price, - ); + const tx = await this.solanaKit.tensorListNFT( + new PublicKey(parsedInput.nftMint), + parsedInput.price, + ); - return JSON.stringify({ - status: "success", - message: "NFT listed for sale successfully", - transaction: tx, - price: parsedInput.price, - nftMint: parsedInput.nftMint, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "NFT listed for sale successfully", + transaction: tx, + price: parsedInput.price, + nftMint: parsedInput.nftMint, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export class SolanaCancelNFTListingTool extends Tool { - name = "solana_cancel_nft_listing"; - description = `Cancel an NFT listing on Tensor Trade. + name = "solana_cancel_nft_listing"; + description = `Cancel an NFT listing on Tensor Trade. Inputs (input is a JSON string): nftMint: string, the mint address of the NFT (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); - const tx = await this.solanaKit.tensorCancelListing( - new PublicKey(parsedInput.nftMint), - ); + const tx = await this.solanaKit.tensorCancelListing( + new PublicKey(parsedInput.nftMint), + ); - return JSON.stringify({ - status: "success", - message: "NFT listing cancelled successfully", - transaction: tx, - nftMint: parsedInput.nftMint, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } + return JSON.stringify({ + status: "success", + message: "NFT listing cancelled successfully", + transaction: tx, + nftMint: parsedInput.nftMint, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } } export function createSolanaTools(solanaKit: SolanaAgentKit) { - return [ - new SolanaBalanceTool(solanaKit), - new SolanaBalanceOtherTool(solanaKit), - new SolanaTransferTool(solanaKit), - new SolanaDeployTokenTool(solanaKit), - new SolanaDeployCollectionTool(solanaKit), - new SolanaMintNFTTool(solanaKit), - new SolanaTradeTool(solanaKit), - new SolanaRequestFundsTool(solanaKit), - new SolanaRegisterDomainTool(solanaKit), - new SolanaGetWalletAddressTool(solanaKit), - new SolanaPumpfunTokenLaunchTool(solanaKit), - new SolanaCreateImageTool(solanaKit), - new SolanaLendAssetTool(solanaKit), - new SolanaTPSCalculatorTool(solanaKit), - new SolanaStakeTool(solanaKit), - new SolanaFetchPriceTool(solanaKit), - new SolanaGetDomainTool(solanaKit), - new SolanaTokenDataTool(solanaKit), - new SolanaTokenDataByTickerTool(solanaKit), - new SolanaCompressedAirdropTool(solanaKit), - new SolanaRaydiumCreateAmmV4(solanaKit), - new SolanaRaydiumCreateClmm(solanaKit), - new SolanaRaydiumCreateCpmm(solanaKit), - new SolanaOpenbookCreateMarket(solanaKit), - new SolanaManifestCreateMarket(solanaKit), - new SolanaLimitOrderTool(solanaKit), - new SolanaCancelAllOrdersTool(solanaKit), - new SolanaWithdrawAllTool(solanaKit), - new SolanaClosePosition(solanaKit), - new SolanaOrcaCreateCLMM(solanaKit), - new SolanaOrcaCreateSingleSideLiquidityPool(solanaKit), - new SolanaOrcaFetchPositions(solanaKit), - new SolanaOrcaOpenCenteredPosition(solanaKit), - new SolanaOrcaOpenSingleSidedPosition(solanaKit), - new SolanaPythFetchPrice(solanaKit), - new SolanaResolveDomainTool(solanaKit), - new SolanaGetOwnedDomains(solanaKit), - new SolanaGetOwnedTldDomains(solanaKit), - new SolanaGetAllTlds(solanaKit), - new SolanaGetMainDomain(solanaKit), - new SolanaResolveAllDomainsTool(solanaKit), - new SolanaCreateGibworkTask(solanaKit), - new SolanaRockPaperScissorsTool(solanaKit), - new SolanaTipLinkTool(solanaKit), - new SolanaListNFTForSaleTool(solanaKit), - new SolanaCancelNFTListingTool(solanaKit), - ]; + return [ + new SolanaBalanceTool(solanaKit), + new SolanaBalanceOtherTool(solanaKit), + new SolanaTransferTool(solanaKit), + new SolanaDeployTokenTool(solanaKit), + new SolanaDeployCollectionTool(solanaKit), + new SolanaMintNFTTool(solanaKit), + new SolanaTradeTool(solanaKit), + new SolanaRequestFundsTool(solanaKit), + new SolanaRegisterDomainTool(solanaKit), + new SolanaGetWalletAddressTool(solanaKit), + new SolanaPumpfunTokenLaunchTool(solanaKit), + new SolanaCreateImageTool(solanaKit), + new SolanaLendAssetTool(solanaKit), + new SolanaTPSCalculatorTool(solanaKit), + new SolanaStakeTool(solanaKit), + new SolanaFetchPriceTool(solanaKit), + new SolanaGetDomainTool(solanaKit), + new SolanaTokenDataTool(solanaKit), + new SolanaTokenDataByTickerTool(solanaKit), + new SolanaCompressedAirdropTool(solanaKit), + new SolanaRaydiumCreateAmmV4(solanaKit), + new SolanaRaydiumCreateClmm(solanaKit), + new SolanaRaydiumCreateCpmm(solanaKit), + new SolanaOpenbookCreateMarket(solanaKit), + new SolanaManifestCreateMarket(solanaKit), + new SolanaLimitOrderTool(solanaKit), + new SolanaCancelAllOrdersTool(solanaKit), + new SolanaWithdrawAllTool(solanaKit), + new SolanaClosePosition(solanaKit), + new SolanaOrcaCreateCLMM(solanaKit), + new SolanaOrcaCreateSingleSideLiquidityPool(solanaKit), + new SolanaOrcaFetchPositions(solanaKit), + new SolanaOrcaOpenCenteredPosition(solanaKit), + new SolanaOrcaOpenSingleSidedPosition(solanaKit), + new SolanaPythFetchPrice(solanaKit), + new SolanaResolveDomainTool(solanaKit), + new SolanaGetOwnedDomains(solanaKit), + new SolanaGetOwnedTldDomains(solanaKit), + new SolanaGetAllTlds(solanaKit), + new SolanaGetMainDomain(solanaKit), + new SolanaResolveAllDomainsTool(solanaKit), + new SolanaCreateGibworkTask(solanaKit), + new SolanaRockPaperScissorsTool(solanaKit), + new SolanaTipLinkTool(solanaKit), + new SolanaListNFTForSaleTool(solanaKit), + new SolanaCancelNFTListingTool(solanaKit), + ]; } diff --git a/src/tools/get_wallet_address.ts b/src/tools/get_wallet_address.ts index d0b0ad4..55b19cd 100644 --- a/src/tools/get_wallet_address.ts +++ b/src/tools/get_wallet_address.ts @@ -6,5 +6,5 @@ import { SolanaAgentKit } from ".."; * @returns string */ export function get_wallet_address(agent: SolanaAgentKit) { - return agent.wallet_address.toBase58(); + return agent.wallet_address.toBase58(); } diff --git a/src/vercel-ai/index.ts b/src/vercel-ai/index.ts index a9a47d4..ba35643 100644 --- a/src/vercel-ai/index.ts +++ b/src/vercel-ai/index.ts @@ -4,22 +4,22 @@ import { executeAction } from "../utils/actionExecutor"; import { ACTIONS } from "../actions"; export function createSolanaTools( - solanaAgentKit: SolanaAgentKit, + solanaAgentKit: SolanaAgentKit, ): Record { - const tools: Record = {}; - const actionKeys = Object.keys(ACTIONS); + const tools: Record = {}; + const actionKeys = Object.keys(ACTIONS); - for (const key of actionKeys) { - const action = ACTIONS[key as keyof typeof ACTIONS]; - tools[key] = tool({ - // @ts-expect-error Value matches type however TS still shows error - id: action.name, - description: action.description, - parameters: action.schema, - execute: async (params) => - await executeAction(action, solanaAgentKit, params), - }); - } + for (const key of actionKeys) { + const action = ACTIONS[key as keyof typeof ACTIONS]; + tools[key] = tool({ + // @ts-expect-error Value matches type however TS still shows error + id: action.name, + description: action.description, + parameters: action.schema, + execute: async (params) => + await executeAction(action, solanaAgentKit, params), + }); + } - return tools; + return tools; } diff --git a/test/agent_sdks/vercel_ai.ts b/test/agent_sdks/vercel_ai.ts index 8fd19c1..77fda22 100644 --- a/test/agent_sdks/vercel_ai.ts +++ b/test/agent_sdks/vercel_ai.ts @@ -8,191 +8,191 @@ import { createOpenAI } from "@ai-sdk/openai"; dotenv.config(); function validateEnvironment(): void { - const missingVars: string[] = []; - const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY"]; + const missingVars: string[] = []; + const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY"]; - requiredVars.forEach((varName) => { - if (!process.env[varName]) { - missingVars.push(varName); - } - }); + 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); - } + 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(); async function runAutonomousMode(interval = 10) { - console.log("Starting autonomous mode..."); - const openai = createOpenAI({ - apiKey: process.env.OPENAI_API_KEY as string, - }); + console.log("Starting autonomous mode..."); + const openai = createOpenAI({ + apiKey: process.env.OPENAI_API_KEY as string, + }); - const solanaAgent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); - const tools = createVercelAITools(solanaAgent); + const tools = createVercelAITools(solanaAgent); - 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."; + 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 response = streamText({ - prompt: thought, - tools, - model: openai("gpt-4o-mini"), - temperature: 0.7, - system: `You are a helpful agent that can interact onchain using the Solana Agent Kit. You are + const response = streamText({ + prompt: thought, + tools, + model: openai("gpt-4o-mini"), + temperature: 0.7, + system: `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.`, - maxSteps: 10, - }); + maxSteps: 10, + }); - for await (const textPart of response.textStream) { - process.stdout.write(textPart); - } - console.log(); + for await (const textPart of response.textStream) { + process.stdout.write(textPart); + } + console.log(); - await new Promise((resolve) => setTimeout(resolve, interval * 1000)); - } catch (error) { - if (error instanceof Error) { - console.error("Error:", error.message); - } - process.exit(1); - } - } + 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() { - console.log("Starting chat mode... Type 'exit' to end."); - const openai = createOpenAI({ - apiKey: process.env.OPENAI_API_KEY as string, - }); + console.log("Starting chat mode... Type 'exit' to end."); + const openai = createOpenAI({ + apiKey: process.env.OPENAI_API_KEY as string, + }); - const solanaAgent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); - const tools = createVercelAITools(solanaAgent); - console.log(tools); + const tools = createVercelAITools(solanaAgent); + console.log(tools); - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - }); + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); - const question = (prompt: string): Promise => - new Promise((resolve) => rl.question(prompt, resolve)); + const question = (prompt: string): Promise => + new Promise((resolve) => rl.question(prompt, resolve)); - try { - while (true) { - const userInput = await question("\nPrompt: "); + try { + while (true) { + const userInput = await question("\nPrompt: "); - if (userInput.toLowerCase() === "exit") { - break; - } + if (userInput.toLowerCase() === "exit") { + break; + } - const response = streamText({ - prompt: userInput, - tools, - model: openai("gpt-4o-mini"), - temperature: 0.7, - system: `You are a helpful agent that can interact onchain using the Solana Agent Kit. You are + const response = streamText({ + prompt: userInput, + tools, + model: openai("gpt-4o-mini"), + temperature: 0.7, + system: `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.`, - maxSteps: 10, - }); + maxSteps: 10, + }); - for await (const textPart of response.textStream) { - process.stdout.write(textPart); - } - console.log(); - } - } catch (error) { - if (error instanceof Error) { - console.error("Error:", error.message); - } - process.exit(1); - } finally { - rl.close(); - } + for await (const textPart of response.textStream) { + process.stdout.write(textPart); + } + 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 rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); - const question = (prompt: string): Promise => - new Promise((resolve) => rl.question(prompt, resolve)); + 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"); + 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(); + const choice = (await question("\nChoose a mode (enter number or name): ")) + .toLowerCase() + .trim(); - rl.close(); + rl.close(); - if (choice === "1" || choice === "chat") { - return "chat"; - } else if (choice === "2" || choice === "auto") { - return "auto"; - } - console.log("Invalid choice. Please try again."); - } + 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 mode = await chooseMode(); + try { + console.log("Starting Agent..."); + const mode = await chooseMode(); - if (mode === "chat") { - await runChatMode(); - } else { - await runAutonomousMode(); - } - } catch (error) { - if (error instanceof Error) { - console.error("Error:", error.message); - } - process.exit(1); - } + if (mode === "chat") { + await runChatMode(); + } else { + await runAutonomousMode(); + } + } 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); - }); + main().catch((error) => { + console.error("Fatal error:", error); + process.exit(1); + }); } diff --git a/test/index.ts b/test/index.ts index 2a3312b..00f9976 100644 --- a/test/index.ts +++ b/test/index.ts @@ -1,4 +1,4 @@ -import { SolanaAgentKit , ACTIONS} from "../src"; +import { SolanaAgentKit, ACTIONS } from "../src"; import { createSolanaTools } from "../src/langchain"; import { HumanMessage } from "@langchain/core/messages"; import { MemorySaver } from "@langchain/langgraph"; From 014af521aa9ea24039defc818a2780a9b6bc079b Mon Sep 17 00:00:00 2001 From: michaelessiet Date: Fri, 3 Jan 2025 18:25:01 +0100 Subject: [PATCH 69/94] fix: catch up langchain tool to main --- src/langchain/index.ts | 97 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 96 insertions(+), 1 deletion(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index b7c836e..e2b3d7f 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -8,7 +8,7 @@ import { } from "../index"; import { create_image } from "../tools/create_image"; import { BN } from "@coral-xyz/anchor"; -import { FEE_TIERS } from "../tools"; +import { FEE_TIERS, generateOrdersfromPattern, OrderParams } from "../tools"; export class SolanaBalanceTool extends Tool { name = "solana_balance"; @@ -310,6 +310,8 @@ export class SolanaLimitOrderTool extends Tool { name = "solana_limit_order"; description = `This tool can be used to place limit orders using Manifest. + Do not allow users to place multiple orders with this instruction, use solana_batch_order instead. + Inputs ( input is a JSON string ): marketId: PublicKey, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required) quantity: number, eg 1 or 0.01 (required) @@ -350,6 +352,98 @@ export class SolanaLimitOrderTool extends Tool { } } +export class SolanaBatchOrderTool extends Tool { + name = "solana_batch_order"; + description = `Places multiple limit orders in one transaction using Manifest. Submit orders either as a list or pattern: + + 1. List format: + { + "marketId": "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ", + "orders": [ + { "quantity": 1, "side": "Buy", "price": 200 }, + { "quantity": 0.5, "side": "Sell", "price": 205 } + ] + } + + 2. Pattern format: + { + "marketId": "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ", + "pattern": { + "side": "Buy", + "totalQuantity": 100, + "priceRange": { "max": 1.0 }, + "spacing": { "type": "percentage", "value": 1 }, + "numberOfOrders": 5 + } + } + + Examples: + - "Place 5 buy orders totaling 100 tokens, 1% apart below $1" + - "Create 3 sell orders of 10 tokens each between $50-$55" + - "Place buy orders worth 50 tokens, $0.10 spacing from $0.80" + + Important: All orders must be in one transaction. Combine buy and sell orders into a single pattern or list. Never break the orders down to individual buy or sell orders.`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + let ordersToPlace: OrderParams[] = []; + + if (!parsedInput.marketId) { + throw new Error("Market ID is required"); + } + + if (parsedInput.pattern) { + ordersToPlace = generateOrdersfromPattern(parsedInput.pattern); + } else if (Array.isArray(parsedInput.orders)) { + ordersToPlace = parsedInput.orders; + } else { + throw new Error("Either pattern or orders array is required"); + } + + if (ordersToPlace.length === 0) { + throw new Error("No orders generated or provided"); + } + + ordersToPlace.forEach((order: OrderParams, index: number) => { + if (!order.quantity || !order.side || !order.price) { + throw new Error( + `Invalid order at index ${index}: quantity, side, and price are required`, + ); + } + if (order.side !== "Buy" && order.side !== "Sell") { + throw new Error( + `Invalid side at index ${index}: must be "Buy" or "Sell"`, + ); + } + }); + + const tx = await this.solanaKit.batchOrder( + new PublicKey(parsedInput.marketId), + parsedInput.orders, + ); + + return JSON.stringify({ + status: "success", + message: "Batch order executed successfully", + transaction: tx, + marketId: parsedInput.marketId, + orders: parsedInput.orders, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + export class SolanaCancelAllOrdersTool extends Tool { name = "solana_cancel_all_orders"; description = `This tool can be used to cancel all orders from a Manifest market. @@ -1853,6 +1947,7 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaOpenbookCreateMarket(solanaKit), new SolanaManifestCreateMarket(solanaKit), new SolanaLimitOrderTool(solanaKit), + new SolanaBatchOrderTool(solanaKit), new SolanaCancelAllOrdersTool(solanaKit), new SolanaWithdrawAllTool(solanaKit), new SolanaClosePosition(solanaKit), From 7c3f4180a0ed7b1d42bbcaf86267b9f815bba80d Mon Sep 17 00:00:00 2001 From: aryan Date: Sat, 4 Jan 2025 03:42:56 +0530 Subject: [PATCH 70/94] chore: docs + lint --- .eslintrc | 11 ++--------- docs/assets/hierarchy.js | 2 +- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 19 +++++++++++-------- docs/functions/createSolanaTools.html | 2 +- docs/functions/createVercelAITools.html | 2 +- docs/functions/executeAction.html | 2 +- docs/functions/findAction.html | 2 +- docs/functions/getActionExamples.html | 2 +- docs/interfaces/Action.html | 14 +++++++------- docs/interfaces/ActionExample.html | 4 ++-- docs/interfaces/CollectionDeployment.html | 4 ++-- docs/interfaces/CollectionOptions.html | 4 ++-- docs/interfaces/Config.html | 4 ++-- docs/interfaces/Creator.html | 4 ++-- docs/interfaces/FetchPriceResponse.html | 4 ++-- docs/interfaces/GibworkCreateTaskReponse.html | 4 ++-- docs/interfaces/JupiterTokenData.html | 4 ++-- .../LuloAccountDetailsResponse.html | 4 ++-- .../interfaces/MintCollectionNFTResponse.html | 4 ++-- docs/interfaces/PumpFunTokenOptions.html | 4 ++-- docs/interfaces/PumpfunLaunchResponse.html | 4 ++-- docs/interfaces/PythFetchPriceResponse.html | 4 ++-- docs/interfaces/TokenCheck.html | 5 +++++ docs/modules.html | 2 +- docs/types/Handler.html | 2 +- docs/variables/actions.html | 2 +- src/actions/createOrcaSingleSidedWhirlpool.ts | 1 - src/tools/get_main_all_domains_domain.ts | 1 + src/tools/get_primary_domain.ts | 3 ++- src/tools/index.ts | 4 ++-- src/tools/resolve_sol_domain.ts | 3 ++- src/tools/send_compressed_airdrop.ts | 1 + src/tools/tensor_trade.ts | 1 + 35 files changed, 71 insertions(+), 66 deletions(-) create mode 100644 docs/interfaces/TokenCheck.html diff --git a/.eslintrc b/.eslintrc index cfdc5bc..e619c84 100644 --- a/.eslintrc +++ b/.eslintrc @@ -7,6 +7,7 @@ "plugin:@typescript-eslint/recommended", "prettier" ], + "ignorePatterns": ["examples/**/*", "src/utils/keypair.ts", "test/**/*"], "rules": { "prettier/prettier": "error", "no-constant-condition": "off", @@ -28,13 +29,5 @@ "parserOptions": { "ecmaVersion": 2020, "sourceType": "module" - }, - "overrides": [ - { - "files": ["test/**/*", "src/utils/keypair.ts", "examples/**/*"], - "rules": { - "no-console": "off" - } - } - ] + } } \ No newline at end of file diff --git a/docs/assets/hierarchy.js b/docs/assets/hierarchy.js index 88636f0..fb85f0a 100644 --- a/docs/assets/hierarchy.js +++ b/docs/assets/hierarchy.js @@ -1 +1 @@ -window.hierarchyData = "eJyrVirKzy8pVrKKjtVRKkpNy0lNLsnMzwMKVNfWAgCbHgqm" \ No newline at end of file +window.hierarchyData = "eJyrVirKzy8pVrKKjtVRKkpNy0lNLsnMzytWsqqurQUAmx4Kpg==" \ No newline at end of file diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index d12a9f9..492edcd 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "eJyNlMFSwjAQQP+lZ0YEBZUbA6IoAgMdL46HELY0Q0g67UZhHP/dUBjb0nTh0kP27dt0u92PHw9hi17Hm2vJFOuuQOGrQK/mRQxDe84lSxJI6sX4VYgbaaG1UEuv02je/9b+TV2OQqvMIBRCHDBuJYdQMbnZapeSH7dsE0kgHEeCUvW0lJDCfYik3m3s1Z1GF3iZeBLtn8kZ65GilSoQqwrPPkQmx8BQx+7sQ4xKHwDycBoLDjNIIntRd9/LGCV9EotvHa/T8uCzZD2DanUVTBV4MZGwAl+vQfUZMqf4FKKEIyN1l3NtFPYBmZAJ2Y5qnCryZg3ZYIwHPlmjkqZKTM0mCowaMaN4SOqd5Dn1wKi0ndToOzhSu8PwwiF0o5T8mamlhNzPgbvIio7HJ5nXD3eNVjO/jnr+cDKeZ9lfLBZsIfd76BAqGm7yyTyd58Pi9LWWuWbZtqffNKmXoKKwfVsSvkPMQXaHZ5QFjJDCFrhBON3ama4AEKLAHlVbsiihWAEW1rvz9UpQSfj5ByOPYJ4=" \ No newline at end of file +window.navigationData = "eJyNlU1PwkAQhv/LnokIfnMjIH6hEmy8GA/rMqWbLrNNd1Yhxv9uKMRSuh289NB53mfayXT79i0IliR64sUaibI/B6QHTaIlMkmJ6AllpHPg2tX6UUILI1oi1TgTvU738qf1Z+or0hZLg0aCPJYKXHtTqoa7Z+e18PVSLjIDjGNLcKqBNQYKeAiZsasFIAWNIfB/4udsfXUHrFuKV2Ks5w2edYkN5yDJ5uH0psbFR0AqmeRawRRcZtGF517HOOmN/viyeVq0h0i6dArN6iaYa3DvM02QRzYFHEqSQfE+xAnH3ti+UtYjDYGkNo4dRzPONXnUSOViPI0itkcjzbWY+EUWexxLjyph9UHykHrksRgnt/oBjtWuKPnnEoZRTl48xCABlQaFZZmT3EqcGdj5wmiVgWtvb+8lj68uOmfd3TNtEN09P72U6U+Za/lh1ofZplQ1nOyGVfFRbE7fyFqzM/HYY7EYrl2DqsLz05rwFXIFpn93QFnBGCksQXmC/aO/1FUARhRrnDVbyiqjmANV/hHB16tBNeH7L4Zcd8U=" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index b1b505a..61dd52b 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index 6e60d93..62e7d4a 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,17 +1,20 @@ SolanaAgentKit | solana-agent-kit

      Class SolanaAgentKit

      Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, trading and more

      SolanaAgentKit

      -

      Constructors

      Constructors

      • Parameters

        • private_key: string
        • rpc_url: string
        • openai_api_key: null | string

        Returns SolanaAgentKit

        Using openai_api_key directly in constructor is deprecated. Please use the new constructor with Config object instead:

        -
        const agent = new SolanaAgentKit(privateKey, rpcUrl, { 
        OPENAI_API_KEY: 'your-key'
        }); +
        const agent = new SolanaAgentKit(privateKey, rpcUrl, {
        OPENAI_API_KEY: 'your-key'
        });
        -
      • Parameters

        • private_key: string
        • rpc_url: string
        • config: Config

        Returns SolanaAgentKit

      Properties

      config: Config

      Configuration object

      -
      connection: Connection

      Solana RPC connection

      -
      wallet: Keypair

      Wallet keypair for signing transactions

      -
      wallet_address: PublicKey

      Public key of the wallet

      -

      Methods

      • Parameters

        • marketId: PublicKey

        Returns Promise<string>

      • Parameters

        • title: string
        • content: string
        • requirements: string
        • tags: string[]
        • tokenMintAddress: string
        • tokenAmount: number
        • Optionalpayer: string

        Returns Promise<GibworkCreateTaskReponse>

      • Parameters

        • amount: number
        • OptionalsplmintAddress: PublicKey

        Returns Promise<{ signature: string; url: string }>

      • Parameters

        • name: string
        • uri: string
        • symbol: string
        • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
        • OptionalinitialSupply: number

        Returns Promise<{ mint: PublicKey }>

      • Parameters

        • mint: string

        Returns Promise<string>

      • Returns Promise<string[]>

      • Returns Promise<string[]>

      • Parameters

        • Optionaltoken_address: PublicKey

        Returns Promise<number>

      • Parameters

        • walletAddress: PublicKey
        • OptionaltokenAddress: PublicKey

        Returns Promise<number>

      • Parameters

        • owner: PublicKey

        Returns Promise<null | string>

      • Parameters

        • owner: PublicKey

        Returns Promise<string[]>

      • Parameters

        • tld: string

        Returns Promise<string[]>

      • Parameters

        • account: PublicKey

        Returns Promise<string>

      • Parameters

        • amount: number

        Returns Promise<string>

      • Parameters

        • marketId: PublicKey
        • quantity: number
        • side: string
        • price: number

        Returns Promise<string>

      • Parameters

        • baseMint: PublicKey
        • quoteMint: PublicKey

        Returns Promise<string[]>

      • Parameters

        • collectionMint: PublicKey
        • metadata: {
              creators?: { address: string; share: number }[];
              name: string;
              sellerFeeBasisPoints?: number;
              uri: string;
          }
        • Optionalrecipient: PublicKey

        Returns Promise<MintCollectionNFTResponse>

      • Parameters

        • baseMint: PublicKey
        • quoteMint: PublicKey
        • lotSize: number = 1
        • tickSize: number = 0.01

        Returns Promise<string[]>

      • Parameters

        • positionMintAddress: PublicKey

        Returns Promise<string>

      • Parameters

        • mintDeploy: PublicKey
        • mintPair: PublicKey
        • initialPrice: Decimal
        • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

        Returns Promise<string>

      • Parameters

        • depositTokenAmount: number
        • depositTokenMint: PublicKey
        • otherTokenMint: PublicKey
        • initialPrice: Decimal
        • maxPrice: Decimal
        • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

        Returns Promise<string>

      • Parameters

        • whirlpoolAddress: PublicKey
        • priceOffsetBps: number
        • inputTokenMint: PublicKey
        • inputAmount: Decimal

        Returns Promise<string>

      • Parameters

        • whirlpoolAddress: PublicKey
        • distanceFromCurrentPriceBps: number
        • widthBps: number
        • inputTokenMint: PublicKey
        • inputAmount: Decimal

        Returns Promise<string>

      • Parameters

        • priceFeedID: string

        Returns Promise<string>

      • Parameters

        • marketId: PublicKey
        • baseAmount: BN
        • quoteAmount: BN
        • startTime: BN

        Returns Promise<string>

      • Parameters

        • mint1: PublicKey
        • mint2: PublicKey
        • configId: PublicKey
        • initialPrice: Decimal
        • startTime: BN

        Returns Promise<string>

      • Parameters

        • mint1: PublicKey
        • mint2: PublicKey
        • configId: PublicKey
        • mintAAmount: BN
        • mintBAmount: BN
        • startTime: BN

        Returns Promise<string>

      • Parameters

        • name: string
        • OptionalspaceKB: number

        Returns Promise<string>

      • Parameters

        • domain: string

        Returns Promise<undefined | PublicKey>

      • Parameters

        • domain: string

        Returns Promise<PublicKey>

      • Parameters

        • amount: number
        • choice: "rock" | "paper" | "scissors"

        Returns Promise<string>

      • Parameters

        • mintAddress: string
        • amount: number
        • decimals: number
        • recipients: string[]
        • priorityFeeInLamports: number
        • shouldLog: boolean

        Returns Promise<string[]>

      • Parameters

        • amount: number

        Returns Promise<string>

      • Parameters

        • nftMint: PublicKey

        Returns Promise<string>

      • Parameters

        • nftMint: PublicKey
        • price: number

        Returns Promise<string>

      • Parameters

        • outputMint: PublicKey
        • inputAmount: number
        • OptionalinputMint: PublicKey
        • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

        Returns Promise<string>

      • Parameters

        • to: PublicKey
        • amount: number
        • Optionalmint: PublicKey

        Returns Promise<string>

      • Parameters

        • marketId: PublicKey

        Returns Promise<string>

      +
    • Parameters

      • private_key: string
      • rpc_url: string
      • config: Config

      Returns SolanaAgentKit

    Properties

    config: Config

    Configuration object

    +
    connection: Connection

    Solana RPC connection

    +
    wallet: Keypair

    Wallet keypair for signing transactions

    +
    wallet_address: PublicKey

    Public key of the wallet

    +

    Methods

    • Parameters

      • marketId: PublicKey
      • orders: OrderParams[]

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • quantity: number
      • side: string
      • price: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index 4dfd843..3470ab1 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

    Function createSolanaTools

    +createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaTradeTool
          | SolanaLimitOrderTool
          | SolanaBatchOrderTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
          | SolanaFetchTokenReportSummaryTool
          | SolanaFetchTokenDetailedReportTool
      )[]

    diff --git a/docs/functions/createVercelAITools.html b/docs/functions/createVercelAITools.html index 9dcb266..175a346 100644 --- a/docs/functions/createVercelAITools.html +++ b/docs/functions/createVercelAITools.html @@ -1 +1 @@ -createVercelAITools | solana-agent-kit

    Function createVercelAITools

    +createVercelAITools | solana-agent-kit

    Function createVercelAITools

    diff --git a/docs/functions/executeAction.html b/docs/functions/executeAction.html index 0e94c84..16e855a 100644 --- a/docs/functions/executeAction.html +++ b/docs/functions/executeAction.html @@ -1,2 +1,2 @@ executeAction | solana-agent-kit

    Function executeAction

    • Execute an action with the given input

      -

      Parameters

      Returns Promise<Record<string, any>>

    +

    Parameters

    Returns Promise<Record<string, any>>

  • diff --git a/docs/functions/findAction.html b/docs/functions/findAction.html index 08fcdf2..ca155f5 100644 --- a/docs/functions/findAction.html +++ b/docs/functions/findAction.html @@ -1,2 +1,2 @@ findAction | solana-agent-kit

    Function findAction

    • Find an action by its name or one of its similes

      -

      Parameters

      • query: string

      Returns Action | undefined

    +

    Parameters

    • query: string

    Returns Action | undefined

    diff --git a/docs/functions/getActionExamples.html b/docs/functions/getActionExamples.html index e93920e..882112d 100644 --- a/docs/functions/getActionExamples.html +++ b/docs/functions/getActionExamples.html @@ -1,2 +1,2 @@ getActionExamples | solana-agent-kit

    Function getActionExamples

    • Get examples for an action

      -

      Parameters

      • action: Action

      Returns string

    +

    Parameters

    • action: Action

    Returns string

    diff --git a/docs/interfaces/Action.html b/docs/interfaces/Action.html index 5b3d7d6..0e3e44a 100644 --- a/docs/interfaces/Action.html +++ b/docs/interfaces/Action.html @@ -1,16 +1,16 @@ Action | solana-agent-kit

    Interface Action

    Main Action interface inspired by ELIZA This interface makes it easier to implement actions across different frameworks

    -
    interface Action {
        description: string;
        examples: ActionExample[][];
        handler: Handler;
        name: string;
        schema: ZodType;
        similes: string[];
    }

    Properties

    interface Action {
        description: string;
        examples: ActionExample[][];
        handler: Handler;
        name: string;
        schema: ZodType;
        similes: string[];
    }

    Properties

    description: string

    Detailed description of what the action does

    -
    examples: ActionExample[][]

    Array of example inputs and outputs for the action +

    examples: ActionExample[][]

    Array of example inputs and outputs for the action Each inner array represents a group of related examples

    -
    handler: Handler

    Function that executes the action

    -
    name: string

    Unique name of the action

    -
    schema: ZodType

    Zod schema for input validation

    -
    similes: string[]

    Alternative names/phrases that can trigger this action

    -
    +
    handler: Handler

    Function that executes the action

    +
    name: string

    Unique name of the action

    +
    schema: ZodType

    Zod schema for input validation

    +
    similes: string[]

    Alternative names/phrases that can trigger this action

    +
    diff --git a/docs/interfaces/ActionExample.html b/docs/interfaces/ActionExample.html index 2bdac86..de2d0d1 100644 --- a/docs/interfaces/ActionExample.html +++ b/docs/interfaces/ActionExample.html @@ -1,5 +1,5 @@ ActionExample | solana-agent-kit

    Interface ActionExample

    Example of an action with input and output

    -
    interface ActionExample {
        explanation: string;
        input: Record<string, any>;
        output: Record<string, any>;
    }

    Properties

    interface ActionExample {
        explanation: string;
        input: Record<string, any>;
        output: Record<string, any>;
    }

    Properties

    explanation: string
    input: Record<string, any>
    output: Record<string, any>
    +

    Properties

    explanation: string
    input: Record<string, any>
    output: Record<string, any>
    diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index e45516a..b14fcc2 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress +CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    +

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index 454069c..027b228 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators? +CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    +

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    diff --git a/docs/interfaces/Config.html b/docs/interfaces/Config.html index 58e803e..8bf37ca 100644 --- a/docs/interfaces/Config.html +++ b/docs/interfaces/Config.html @@ -1,4 +1,4 @@ -Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS? +Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    +

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index f13dc02..89c9300 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    address +Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    Properties

    address: string
    percentage: number
    +

    Properties

    address: string
    percentage: number
    diff --git a/docs/interfaces/FetchPriceResponse.html b/docs/interfaces/FetchPriceResponse.html index e2e4841..9486ccb 100644 --- a/docs/interfaces/FetchPriceResponse.html +++ b/docs/interfaces/FetchPriceResponse.html @@ -1,6 +1,6 @@ -FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code? +FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    +

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    diff --git a/docs/interfaces/GibworkCreateTaskReponse.html b/docs/interfaces/GibworkCreateTaskReponse.html index 9951c91..33c180e 100644 --- a/docs/interfaces/GibworkCreateTaskReponse.html +++ b/docs/interfaces/GibworkCreateTaskReponse.html @@ -1,4 +1,4 @@ -GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature? +GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    +

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    diff --git a/docs/interfaces/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index 92b63c9..582eb31 100644 --- a/docs/interfaces/JupiterTokenData.html +++ b/docs/interfaces/JupiterTokenData.html @@ -1,4 +1,4 @@ -JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address +JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    +

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index 34cd985..6b07c01 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

    Interface LuloAccountDetailsResponse

    Lulo Account Details response format

    -
    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    +

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index 8c5b19f..6999b84 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    metadata +MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    Properties

    metadata: PublicKey
    mint: PublicKey
    +

    Properties

    metadata: PublicKey
    mint: PublicKey
    diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html index 6d9ca1c..e025426 100644 --- a/docs/interfaces/PumpFunTokenOptions.html +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -1,7 +1,7 @@ -PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL? +PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    +

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html index 8e1fe85..013703a 100644 --- a/docs/interfaces/PumpfunLaunchResponse.html +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -1,5 +1,5 @@ -PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error? +PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    +

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    diff --git a/docs/interfaces/PythFetchPriceResponse.html b/docs/interfaces/PythFetchPriceResponse.html index 35e693b..3e57525 100644 --- a/docs/interfaces/PythFetchPriceResponse.html +++ b/docs/interfaces/PythFetchPriceResponse.html @@ -1,6 +1,6 @@ -PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID: string;
        status: "success" | "error";
    }

    Properties

    code? +PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID: string;
        status: "success" | "error";
    }

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID: string
    status: "success" | "error"
    +

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID: string
    status: "success" | "error"
    diff --git a/docs/interfaces/TokenCheck.html b/docs/interfaces/TokenCheck.html new file mode 100644 index 0000000..61f0bb4 --- /dev/null +++ b/docs/interfaces/TokenCheck.html @@ -0,0 +1,5 @@ +TokenCheck | solana-agent-kit

    Interface TokenCheck

    interface TokenCheck {
        risks: {
            description: string;
            level: string;
            name: string;
            score: number;
        }[];
        score: number;
        tokenProgram: string;
        tokenType: string;
    }

    Properties

    risks: { description: string; level: string; name: string; score: number }[]
    score: number
    tokenProgram: string
    tokenType: string
    diff --git a/docs/modules.html b/docs/modules.html index c08dc3f..5533839 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1 +1 @@ -solana-agent-kit
    +solana-agent-kit
    diff --git a/docs/types/Handler.html b/docs/types/Handler.html index f3c78b2..ac3fdd6 100644 --- a/docs/types/Handler.html +++ b/docs/types/Handler.html @@ -1,2 +1,2 @@ Handler | solana-agent-kit

    Type Alias Handler

    Handler: (
        agent: SolanaAgentKit,
        input: Record<string, any>,
    ) => Promise<Record<string, any>>

    Handler function type for executing the action

    -

    Type declaration

      • (
            agent: SolanaAgentKit,
            input: Record<string, any>,
        ): Promise<Record<string, any>>
      • Parameters

        Returns Promise<Record<string, any>>

    +

    Type declaration

      • (
            agent: SolanaAgentKit,
            input: Record<string, any>,
        ): Promise<Record<string, any>>
      • Parameters

        Returns Promise<Record<string, any>>

    diff --git a/docs/variables/actions.html b/docs/variables/actions.html index 863c0af..5bbe130 100644 --- a/docs/variables/actions.html +++ b/docs/variables/actions.html @@ -1 +1 @@ -ACTIONS | solana-agent-kit

    Variable ACTIONSConst

    ACTIONS: {
        BALANCE_ACTION: Action;
        CREATE_GIBWORK_TASK_ACTION: Action;
        CREATE_IMAGE_ACTION: Action;
        CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
        DEPLOY_COLLECTION_ACTION: Action;
        DEPLOY_TOKEN_ACTION: Action;
        FETCH_PRICE_ACTION: Action;
        GET_ALL_DOMAINS_TLDS_ACTION: Action;
        GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
        GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
        GET_OWNED_ALL_DOMAINS_ACTION: Action;
        GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
        GET_PRIMARY_DOMAIN_ACTION: Action;
        GET_TOKEN_DATA_ACTION: Action;
        GET_TPS_ACTION: Action;
        LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
        LEND_ASSET_ACTION: Action;
        MINT_NFT_ACTION: Action;
        PYTH_FETCH_PRICE_ACTION: Action;
        RAYDIUM_CREATE_AMM_V4_ACTION: Action;
        RAYDIUM_CREATE_CPMM_ACTION: Action;
        REGISTER_DOMAIN_ACTION: Action;
        REQUEST_FUNDS_ACTION: Action;
        RESOLVE_DOMAIN_ACTION: Action;
        RESOLVE_SOL_DOMAIN_ACTION: Action;
        STAKE_WITH_JUP_ACTION: Action;
        TRADE_ACTION: Action;
        TRANSFER_ACTION: Action;
        WALLET_ADDRESS_ACTION: Action;
    } = ...

    Type declaration

    • BALANCE_ACTION: Action
    • CREATE_GIBWORK_TASK_ACTION: Action
    • CREATE_IMAGE_ACTION: Action
    • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
    • DEPLOY_COLLECTION_ACTION: Action
    • DEPLOY_TOKEN_ACTION: Action
    • FETCH_PRICE_ACTION: Action
    • GET_ALL_DOMAINS_TLDS_ACTION: Action
    • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
    • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
    • GET_OWNED_ALL_DOMAINS_ACTION: Action
    • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
    • GET_PRIMARY_DOMAIN_ACTION: Action
    • GET_TOKEN_DATA_ACTION: Action
    • GET_TPS_ACTION: Action
    • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
    • LEND_ASSET_ACTION: Action
    • MINT_NFT_ACTION: Action
    • PYTH_FETCH_PRICE_ACTION: Action
    • RAYDIUM_CREATE_AMM_V4_ACTION: Action
    • RAYDIUM_CREATE_CPMM_ACTION: Action
    • REGISTER_DOMAIN_ACTION: Action
    • REQUEST_FUNDS_ACTION: Action
    • RESOLVE_DOMAIN_ACTION: Action
    • RESOLVE_SOL_DOMAIN_ACTION: Action
    • STAKE_WITH_JUP_ACTION: Action
    • TRADE_ACTION: Action
    • TRANSFER_ACTION: Action
    • WALLET_ADDRESS_ACTION: Action
    +ACTIONS | solana-agent-kit

    Variable ACTIONSConst

    ACTIONS: {
        BALANCE_ACTION: Action;
        CREATE_GIBWORK_TASK_ACTION: Action;
        CREATE_IMAGE_ACTION: Action;
        CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
        DEPLOY_COLLECTION_ACTION: Action;
        DEPLOY_TOKEN_ACTION: Action;
        FETCH_PRICE_ACTION: Action;
        GET_ALL_DOMAINS_TLDS_ACTION: Action;
        GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
        GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
        GET_OWNED_ALL_DOMAINS_ACTION: Action;
        GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
        GET_PRIMARY_DOMAIN_ACTION: Action;
        GET_TOKEN_DATA_ACTION: Action;
        GET_TPS_ACTION: Action;
        LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
        LEND_ASSET_ACTION: Action;
        MINT_NFT_ACTION: Action;
        PYTH_FETCH_PRICE_ACTION: Action;
        RAYDIUM_CREATE_AMM_V4_ACTION: Action;
        RAYDIUM_CREATE_CPMM_ACTION: Action;
        REGISTER_DOMAIN_ACTION: Action;
        REQUEST_FUNDS_ACTION: Action;
        RESOLVE_DOMAIN_ACTION: Action;
        RESOLVE_SOL_DOMAIN_ACTION: Action;
        STAKE_WITH_JUP_ACTION: Action;
        TRADE_ACTION: Action;
        TRANSFER_ACTION: Action;
        WALLET_ADDRESS_ACTION: Action;
    } = ...

    Type declaration

    • BALANCE_ACTION: Action
    • CREATE_GIBWORK_TASK_ACTION: Action
    • CREATE_IMAGE_ACTION: Action
    • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
    • DEPLOY_COLLECTION_ACTION: Action
    • DEPLOY_TOKEN_ACTION: Action
    • FETCH_PRICE_ACTION: Action
    • GET_ALL_DOMAINS_TLDS_ACTION: Action
    • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
    • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
    • GET_OWNED_ALL_DOMAINS_ACTION: Action
    • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
    • GET_PRIMARY_DOMAIN_ACTION: Action
    • GET_TOKEN_DATA_ACTION: Action
    • GET_TPS_ACTION: Action
    • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
    • LEND_ASSET_ACTION: Action
    • MINT_NFT_ACTION: Action
    • PYTH_FETCH_PRICE_ACTION: Action
    • RAYDIUM_CREATE_AMM_V4_ACTION: Action
    • RAYDIUM_CREATE_CPMM_ACTION: Action
    • REGISTER_DOMAIN_ACTION: Action
    • REQUEST_FUNDS_ACTION: Action
    • RESOLVE_DOMAIN_ACTION: Action
    • RESOLVE_SOL_DOMAIN_ACTION: Action
    • STAKE_WITH_JUP_ACTION: Action
    • TRADE_ACTION: Action
    • TRANSFER_ACTION: Action
    • WALLET_ADDRESS_ACTION: Action
    diff --git a/src/actions/createOrcaSingleSidedWhirlpool.ts b/src/actions/createOrcaSingleSidedWhirlpool.ts index 3a1fb52..f53c881 100644 --- a/src/actions/createOrcaSingleSidedWhirlpool.ts +++ b/src/actions/createOrcaSingleSidedWhirlpool.ts @@ -2,7 +2,6 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; import { PublicKey } from "@solana/web3.js"; -import { BN } from "@coral-xyz/anchor"; import { Decimal } from "decimal.js"; import { orcaCreateSingleSidedLiquidityPool } from "../tools"; diff --git a/src/tools/get_main_all_domains_domain.ts b/src/tools/get_main_all_domains_domain.ts index d9ac724..b8114bd 100644 --- a/src/tools/get_main_all_domains_domain.ts +++ b/src/tools/get_main_all_domains_domain.ts @@ -16,6 +16,7 @@ export async function getMainAllDomainsDomain( mainDomain = await _getFavoriteDomain(agent.connection, owner); return mainDomain.stale ? null : mainDomain.reverse; } catch (error: any) { + console.error(error); return null; } } diff --git a/src/tools/get_primary_domain.ts b/src/tools/get_primary_domain.ts index 1a2bd8c..8e53f1d 100644 --- a/src/tools/get_primary_domain.ts +++ b/src/tools/get_primary_domain.ts @@ -29,7 +29,8 @@ export async function getPrimaryDomain( ); } return reverse; - } catch (error) { + } catch (error: any) { + console.error(error); throw new Error( `Failed to get primary domain for account: ${account.toBase58()}`, ); diff --git a/src/tools/index.ts b/src/tools/index.ts index f55ccf2..a8b470f 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -1,5 +1,5 @@ -import exp from "constants"; - +export * from "./get_wallet_address"; +export * from "./request_faucet_funds"; export * from "./get_wallet_address"; export * from "./request_faucet_funds"; export * from "./deploy_token"; diff --git a/src/tools/resolve_sol_domain.ts b/src/tools/resolve_sol_domain.ts index 6969a4c..32b090b 100644 --- a/src/tools/resolve_sol_domain.ts +++ b/src/tools/resolve_sol_domain.ts @@ -24,7 +24,8 @@ export async function resolveSolDomain( try { return await resolve(agent.connection, domain); - } catch (error) { + } catch (error: any) { + console.error(error); throw new Error(`Failed to resolve domain: ${domain}`); } } diff --git a/src/tools/send_compressed_airdrop.ts b/src/tools/send_compressed_airdrop.ts index 3df33ef..871c810 100644 --- a/src/tools/send_compressed_airdrop.ts +++ b/src/tools/send_compressed_airdrop.ts @@ -88,6 +88,7 @@ export async function sendCompressedAirdrop( agent.wallet.publicKey, ); } catch (error) { + console.error(error); throw new Error( "Source token account not found and failed to create it. Please add funds to your wallet and try again.", ); diff --git a/src/tools/tensor_trade.ts b/src/tools/tensor_trade.ts index be41c42..4025ac3 100644 --- a/src/tools/tensor_trade.ts +++ b/src/tools/tensor_trade.ts @@ -33,6 +33,7 @@ export async function listNFTForSale( throw new Error(`You don't own this NFT (${nftMint.toString()})`); } } catch (error: any) { + console.error(error); throw new Error( `No token account found for mint ${nftMint.toString()}. Make sure you own this NFT.`, ); From a68f26d009c56f30767df3ab432e77aaab9bdc8b Mon Sep 17 00:00:00 2001 From: Orex Date: Wed, 1 Jan 2025 14:57:55 +0400 Subject: [PATCH 71/94] Add Adrena Protocol Open/Close PERP trade support --- README.md | 27 + src/agent/index.ts | 40 + src/constants/index.ts | 2 + src/idls/adrena.ts | 20671 +++++++++++++++++++++++++++++ src/langchain/index.ts | 110 + src/tools/adrena_perp_trading.ts | 506 + src/tools/index.ts | 1 + src/utils/AdrenaClient.ts | 220 + 8 files changed, 21577 insertions(+) create mode 100644 src/idls/adrena.ts create mode 100644 src/tools/adrena_perp_trading.ts create mode 100644 src/utils/AdrenaClient.ts diff --git a/README.md b/README.md index 622a52f..45b0aa1 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,7 @@ Anyone - whether an SF-based AI researcher or a crypto-native builder - can brin - Jito Bundles - Pyth Price feeds for fetching Asset Prices - Register/resolve Alldomains + - Perpetuals Trading with Adrena Protocol - **Solana Blinks** - Lending by Lulo (Best APR for USDC) @@ -220,6 +221,32 @@ const price = await agent.pythFetchPrice( console.log("Price in BTC/USD:", price); ``` +### Open PERP Trade + +```typescript +import { PublicKey } from "@solana/web3.js"; + +const signature = await agent.openPerpTradeLong({ + price: 300, // $300 SOL Max price + collateralAmount: 10, // 10 jitoSOL in + collateralMint: new PublicKey("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"), // jitoSOL + leverage: 50000, // x5 + tradeMint: new PublicKey("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"), // jitoSOL + slippage: 0.3, // 0.3% +}); +``` + +### Close PERP Trade + +```typescript +import { PublicKey } from "@solana/web3.js"; + +const signature = await agent.closePerpTradeLong({ + price: 200, // $200 SOL price + tradeMint: new PublicKey("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"), // jitoSOL +}); +``` + ## Examples ### LangGraph Multi-Agent System diff --git a/src/agent/index.ts b/src/agent/index.ts index 19a8492..ae0c367 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -26,6 +26,10 @@ import { batchOrder, cancelAllOrders, withdrawAll, + closePerpTradeShort, + closePerpTradeLong, + openPerpTradeShort, + openPerpTradeLong, transfer, getTokenDataByAddress, getTokenDataByTicker, @@ -210,6 +214,42 @@ export class SolanaAgentKit { return withdrawAll(this, marketId); } + async openPerpTradeLong( + args: Omit[0], "agent">, + ): Promise { + return openPerpTradeLong({ + agent: this, + ...args, + }); + } + + async openPerpTradeShort( + args: Omit[0], "agent">, + ): Promise { + return openPerpTradeShort({ + agent: this, + ...args, + }); + } + + async closePerpTradeShort( + args: Omit[0], "agent">, + ): Promise { + return closePerpTradeShort({ + agent: this, + ...args, + }); + } + + async closePerpTradeLong( + args: Omit[0], "agent">, + ): Promise { + return closePerpTradeLong({ + agent: this, + ...args, + }); + } + async lendAssets(amount: number): Promise { return lendAsset(this, amount); } diff --git a/src/constants/index.ts b/src/constants/index.ts index 14eb65b..69965bf 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -18,11 +18,13 @@ export const TOKENS = { * Default configuration options * @property {number} SLIPPAGE_BPS - Default slippage tolerance in basis points (300 = 3%) * @property {number} TOKEN_DECIMALS - Default number of decimals for new tokens + * @property {number} LEVERAGE_BPS - Default leverage for trading PERP */ export const DEFAULT_OPTIONS = { SLIPPAGE_BPS: 300, TOKEN_DECIMALS: 9, RERERRAL_FEE: 200, + LEVERAGE_BPS: 50000, // 10000 = x1, 50000 = x5, 100000 = x10, 1000000 = x100 } as const; /** diff --git a/src/idls/adrena.ts b/src/idls/adrena.ts new file mode 100644 index 0000000..6a41394 --- /dev/null +++ b/src/idls/adrena.ts @@ -0,0 +1,20671 @@ +export type Adrena = { + version: "1.1.5"; + name: "adrena"; + instructions: [ + { + name: "initOneCore"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "protocolFeeRecipient"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "rent"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "InitOneParams"; + }; + }, + ]; + }, + { + name: "initTwoLmTokenMetadata"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "lmTokenMintMetadata"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "mplTokenMetadataProgram"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "rent"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + ]; + args: []; + }, + { + name: "initThreeGovernance"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "governanceTokenMint"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "governanceRealm"; + isMut: false; + isSigner: false; + docs: [ + "#6", + "A realm represent one project within the governance program", + ]; + }, + { + name: "governanceProgram"; + isMut: false; + isSigner: false; + docs: ["#7"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "rent"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + ]; + args: []; + }, + { + name: "initFourVesting"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "vestRegistry"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#7"]; + }, + { + name: "rent"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + ]; + args: []; + }, + { + name: "addVest"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "owner"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#3"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "vestRegistry"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "vest"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "governanceTokenMint"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "governanceRealm"; + isMut: false; + isSigner: false; + docs: [ + "#10", + "A realm represent one project within the governance program", + ]; + }, + { + name: "governanceRealmConfig"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "governanceGoverningTokenHolding"; + isMut: true; + isSigner: false; + docs: [ + "#12", + "Token account owned by governance program holding user's locked tokens", + ]; + }, + { + name: "governanceGoverningTokenOwnerRecord"; + isMut: true; + isSigner: false; + docs: ["#13", "Account owned by governance storing user information"]; + }, + { + name: "governanceProgram"; + isMut: false; + isSigner: false; + docs: ["#14"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#15"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#16"]; + }, + { + name: "rent"; + isMut: false; + isSigner: false; + docs: ["#17"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "AddVestParams"; + }; + }, + ]; + returns: "u8"; + }, + { + name: "claimVest"; + accounts: [ + { + name: "caller"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "owner"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "payer"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "receivingAccount"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "vestRegistry"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "vest"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "governanceTokenMint"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "governanceRealm"; + isMut: false; + isSigner: false; + docs: [ + "#11", + "A realm represent one project within the governance program", + ]; + }, + { + name: "governanceRealmConfig"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + { + name: "governanceGoverningTokenHolding"; + isMut: true; + isSigner: false; + docs: [ + "#13", + "Token account owned by governance program holding user's locked tokens", + ]; + }, + { + name: "governanceGoverningTokenOwnerRecord"; + isMut: true; + isSigner: false; + docs: ["#14", "Account owned by governance storing user information"]; + }, + { + name: "governanceProgram"; + isMut: false; + isSigner: false; + docs: ["#15"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#16"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#17"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#18"]; + }, + { + name: "rent"; + isMut: false; + isSigner: false; + docs: ["#19"]; + }, + ]; + args: []; + returns: "u64"; + }, + { + name: "addPoolPartOne"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "lpTokenMint"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "lpTokenMintMetadata"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "mplTokenMetadataProgram"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "rent"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "AddPoolPartOneParams"; + }; + }, + ]; + returns: "u8"; + }, + { + name: "addPoolPartTwo"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "lpTokenMint"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "genesisLock"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "rent"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "AddPoolPartTwoParams"; + }; + }, + ]; + returns: "u8"; + }, + { + name: "removePool"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + ]; + args: []; + returns: "u8"; + }, + { + name: "addCustody"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "custodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "custodyOracle"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "custodyTokenMint"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + { + name: "rent"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "AddCustodyParams"; + }; + }, + ]; + returns: "u8"; + }, + { + name: "removeCustody"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "custodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "RemoveCustodyParams"; + }; + }, + ]; + returns: "u8"; + }, + { + name: "setCustodyConfig"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SetCustodyConfigParams"; + }; + }, + ]; + returns: "u8"; + }, + { + name: "setCustodyAllowSwap"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SetCustodyAllowSwapParams"; + }; + }, + ]; + }, + { + name: "setCustodyAllowTrade"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SetCustodyAllowTradeParams"; + }; + }, + ]; + }, + { + name: "setPoolAllowSwap"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SetPoolAllowSwapParams"; + }; + }, + ]; + }, + { + name: "setPoolAllowTrade"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SetPoolAllowTradeParams"; + }; + }, + ]; + }, + { + name: "setPoolAumSoftCapUsd"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SetPoolAumSoftCapUsdParams"; + }; + }, + ]; + }, + { + name: "swap"; + accounts: [ + { + name: "caller"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "owner"; + isMut: false; + isSigner: true; + docs: ["#2"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "receivingAccount"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "lmStaking"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "lpStaking"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "stakingRewardTokenCustody"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "stakingRewardTokenCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "stakingRewardTokenCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "receivingCustody"; + isMut: true; + isSigner: false; + docs: ["#13"]; + }, + { + name: "receivingCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#14"]; + }, + { + name: "receivingCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#15"]; + }, + { + name: "dispensingCustody"; + isMut: true; + isSigner: false; + docs: ["#16"]; + }, + { + name: "dispensingCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#17"]; + }, + { + name: "dispensingCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#18"]; + }, + { + name: "lmStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#19"]; + }, + { + name: "lpStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#20"]; + }, + { + name: "lpTokenMint"; + isMut: true; + isSigner: false; + docs: ["#21"]; + }, + { + name: "protocolFeeRecipient"; + isMut: true; + isSigner: false; + docs: ["#22"]; + }, + { + name: "userProfile"; + isMut: true; + isSigner: false; + isOptional: true; + docs: ["#23"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#24"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#25"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SwapParams"; + }; + }, + ]; + }, + { + name: "addLiquidity"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "lpTokenAccount"; + isMut: true; + isSigner: false; + docs: [ + "#3 Front end will target the owner account, but not limited to", + ]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lmStaking"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "lpStaking"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "stakingRewardTokenCustody"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "stakingRewardTokenCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "stakingRewardTokenCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "custodyOracle"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + { + name: "custodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#14"]; + }, + { + name: "lmStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#15"]; + }, + { + name: "lpStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#16"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#17"]; + }, + { + name: "lpTokenMint"; + isMut: true; + isSigner: false; + docs: ["#18"]; + }, + { + name: "protocolFeeRecipient"; + isMut: true; + isSigner: false; + docs: ["#19"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#20"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#21"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "AddLiquidityParams"; + }; + }, + ]; + }, + { + name: "addGenesisLiquidity"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "lpUserStaking"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lpStaking"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "lpStakingStakedTokenVault"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "custodyOracle"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "custodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "lpTokenMint"; + isMut: true; + isSigner: false; + docs: ["#13"]; + }, + { + name: "governanceTokenMint"; + isMut: true; + isSigner: false; + docs: ["#14"]; + }, + { + name: "governanceRealm"; + isMut: false; + isSigner: false; + docs: [ + "#15", + "A realm represent one project within the governance program", + ]; + }, + { + name: "governanceRealmConfig"; + isMut: false; + isSigner: false; + docs: ["#16"]; + }, + { + name: "governanceGoverningTokenHolding"; + isMut: true; + isSigner: false; + docs: [ + "#17", + "Token account owned by governance program holding user's locked tokens", + ]; + }, + { + name: "governanceGoverningTokenOwnerRecord"; + isMut: true; + isSigner: false; + docs: ["#18", "Account owned by governance storing user information"]; + }, + { + name: "governanceProgram"; + isMut: false; + isSigner: false; + docs: ["#19"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#20"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#21"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#22"]; + }, + { + name: "genesisLock"; + isMut: true; + isSigner: false; + docs: ["#23"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "AddGenesisLiquidityParams"; + }; + }, + ]; + }, + { + name: "genesisOtcOut"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "daoReceivingAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "custodyUsdc"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "custodyUsdcTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "genesisLock"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + ]; + args: []; + }, + { + name: "genesisOtcIn"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "fundingAccountOne"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "fundingAccountTwo"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "fundingAccountThree"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#7"]; + }, + { + name: "custodyOne"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "custodyOneTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "custodyTwo"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "custodyTwoTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "custodyThree"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "custodyThreeTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#13"]; + }, + { + name: "genesisLock"; + isMut: true; + isSigner: false; + docs: ["#14"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#15"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#16"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "GenesisOtcInParams"; + }; + }, + ]; + }, + { + name: "removeLiquidity"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "receivingAccount"; + isMut: true; + isSigner: false; + docs: [ + "#2 Front end will target the owner account, but not limited to", + ]; + }, + { + name: "lpTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lmStaking"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "lpStaking"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "stakingRewardTokenCustody"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "stakingRewardTokenCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "stakingRewardTokenCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "custodyOracle"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + { + name: "custodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#14"]; + }, + { + name: "lmStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#15"]; + }, + { + name: "lpStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#16"]; + }, + { + name: "lpTokenMint"; + isMut: true; + isSigner: false; + docs: ["#17"]; + }, + { + name: "protocolFeeRecipient"; + isMut: true; + isSigner: false; + docs: ["#18"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#19"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#20"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "RemoveLiquidityParams"; + }; + }, + ]; + }, + { + name: "openPositionLong"; + accounts: [ + { + name: "owner"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "custodyOracle"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "custodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "userProfile"; + isMut: true; + isSigner: false; + isOptional: true; + docs: ["#12"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#14"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#15"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "OpenPositionLongParams"; + }; + }, + ]; + }, + { + name: "openPositionShort"; + accounts: [ + { + name: "owner"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "collateralCustody"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "collateralCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "collateralCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "userProfile"; + isMut: true; + isSigner: false; + isOptional: true; + docs: ["#13"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#14"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#15"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#16"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "OpenPositionShortParams"; + }; + }, + ]; + }, + { + name: "openOrIncreasePositionWithSwapLong"; + accounts: [ + { + name: "owner"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "collateralAccount"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "receivingCustody"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "receivingCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "receivingCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "principalCustody"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "principalCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "principalCustodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "principalCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#13"]; + }, + { + name: "lmStaking"; + isMut: true; + isSigner: false; + docs: ["#14"]; + }, + { + name: "lpStaking"; + isMut: true; + isSigner: false; + docs: ["#15"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#16"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#17"]; + }, + { + name: "stakingRewardTokenCustody"; + isMut: true; + isSigner: false; + docs: ["#18"]; + }, + { + name: "stakingRewardTokenCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#19"]; + }, + { + name: "stakingRewardTokenCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#20"]; + }, + { + name: "lmStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#21"]; + }, + { + name: "lpStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#22"]; + }, + { + name: "lpTokenMint"; + isMut: true; + isSigner: false; + docs: ["#23"]; + }, + { + name: "protocolFeeRecipient"; + isMut: true; + isSigner: false; + docs: ["#24"]; + }, + { + name: "userProfile"; + isMut: true; + isSigner: false; + isOptional: true; + docs: ["#25"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#26"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#27"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#28"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "OpenPositionWithSwapParams"; + }; + }, + ]; + }, + { + name: "openOrIncreasePositionWithSwapShort"; + accounts: [ + { + name: "owner"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "collateralAccount"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "receivingCustody"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "receivingCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "receivingCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "collateralCustody"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "collateralCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "collateralCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "principalCustody"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "principalCustodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + { + name: "principalCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#13"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#14"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#15"]; + }, + { + name: "lmStaking"; + isMut: true; + isSigner: false; + docs: ["#16"]; + }, + { + name: "lpStaking"; + isMut: true; + isSigner: false; + docs: ["#17"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#18"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#19"]; + }, + { + name: "stakingRewardTokenCustody"; + isMut: true; + isSigner: false; + docs: ["#20"]; + }, + { + name: "stakingRewardTokenCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#21"]; + }, + { + name: "stakingRewardTokenCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#22"]; + }, + { + name: "lmStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#23"]; + }, + { + name: "lpStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#24"]; + }, + { + name: "lpTokenMint"; + isMut: true; + isSigner: false; + docs: ["#25"]; + }, + { + name: "protocolFeeRecipient"; + isMut: true; + isSigner: false; + docs: ["#26"]; + }, + { + name: "userProfile"; + isMut: true; + isSigner: false; + isOptional: true; + docs: ["#27"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#28"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#29"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#30"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "OpenPositionWithSwapParams"; + }; + }, + ]; + }, + { + name: "addCollateralLong"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "custodyOracle"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "custodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "AddCollateralLongParams"; + }; + }, + ]; + }, + { + name: "addCollateralShort"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "collateralCustody"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "collateralCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "collateralCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "AddCollateralShortParams"; + }; + }, + ]; + }, + { + name: "removeCollateralLong"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "receivingAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "custodyOracle"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "custodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "RemoveCollateralLongParams"; + }; + }, + ]; + }, + { + name: "removeCollateralShort"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "receivingAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "collateralCustody"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "collateralCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "collateralCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "RemoveCollateralShortParams"; + }; + }, + ]; + }, + { + name: "closePositionLong"; + accounts: [ + { + name: "caller"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "owner"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "receivingAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lmStaking"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "lpStaking"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "stakingRewardTokenCustody"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "stakingRewardTokenCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "stakingRewardTokenCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#13"]; + }, + { + name: "custodyOracle"; + isMut: false; + isSigner: false; + docs: ["#14"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#15"]; + }, + { + name: "custodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#16"]; + }, + { + name: "lmStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#17"]; + }, + { + name: "lpStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#18"]; + }, + { + name: "lpTokenMint"; + isMut: true; + isSigner: false; + docs: ["#19"]; + }, + { + name: "protocolFeeRecipient"; + isMut: true; + isSigner: false; + docs: ["#20"]; + }, + { + name: "userProfile"; + isMut: true; + isSigner: false; + isOptional: true; + docs: ["#21"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#22"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#23"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "ClosePositionLongParams"; + }; + }, + ]; + }, + { + name: "closePositionShort"; + accounts: [ + { + name: "caller"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "owner"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "receivingAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lmStaking"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "lpStaking"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "stakingRewardTokenCustody"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "stakingRewardTokenCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "stakingRewardTokenCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#13"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#14"]; + }, + { + name: "collateralCustody"; + isMut: true; + isSigner: false; + docs: ["#15"]; + }, + { + name: "collateralCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#16"]; + }, + { + name: "collateralCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#17"]; + }, + { + name: "lmStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#18"]; + }, + { + name: "lpStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#19"]; + }, + { + name: "lpTokenMint"; + isMut: true; + isSigner: false; + docs: ["#20"]; + }, + { + name: "protocolFeeRecipient"; + isMut: true; + isSigner: false; + docs: ["#21"]; + }, + { + name: "userProfile"; + isMut: true; + isSigner: false; + isOptional: true; + docs: ["#22"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#23"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#24"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "ClosePositionShortParams"; + }; + }, + ]; + }, + { + name: "liquidateLong"; + accounts: [ + { + name: "signer"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "receivingAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "lmStaking"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lpStaking"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "stakingRewardTokenCustody"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "stakingRewardTokenCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "stakingRewardTokenCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "custodyOracle"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#14"]; + }, + { + name: "custodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#15"]; + }, + { + name: "lmStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#16"]; + }, + { + name: "lpStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#17"]; + }, + { + name: "lpTokenMint"; + isMut: true; + isSigner: false; + docs: ["#18"]; + }, + { + name: "protocolFeeRecipient"; + isMut: true; + isSigner: false; + docs: ["#19"]; + }, + { + name: "userProfile"; + isMut: true; + isSigner: false; + isOptional: true; + docs: ["#20"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#21"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#22"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "LiquidateLongParams"; + }; + }, + ]; + }, + { + name: "liquidateShort"; + accounts: [ + { + name: "signer"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "receivingAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "lmStaking"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lpStaking"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "stakingRewardTokenCustody"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "stakingRewardTokenCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "stakingRewardTokenCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + { + name: "collateralCustody"; + isMut: true; + isSigner: false; + docs: ["#14"]; + }, + { + name: "collateralCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#15"]; + }, + { + name: "collateralCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#16"]; + }, + { + name: "lmStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#17"]; + }, + { + name: "lpStakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#18"]; + }, + { + name: "lpTokenMint"; + isMut: true; + isSigner: false; + docs: ["#19"]; + }, + { + name: "protocolFeeRecipient"; + isMut: true; + isSigner: false; + docs: ["#20"]; + }, + { + name: "userProfile"; + isMut: true; + isSigner: false; + isOptional: true; + docs: ["#21"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#22"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#23"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "LiquidateShortParams"; + }; + }, + ]; + }, + { + name: "updatePoolAum"; + accounts: [ + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + ]; + args: []; + returns: "u128"; + }, + { + name: "getAddLiquidityAmountAndFee"; + accounts: [ + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "custody"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "custodyOracle"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lpTokenMint"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "GetAddLiquidityAmountAndFeeParams"; + }; + }, + ]; + returns: { + defined: "AmountAndFee"; + }; + }, + { + name: "getRemoveLiquidityAmountAndFee"; + accounts: [ + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "custody"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "custodyOracle"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lpTokenMint"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "GetRemoveLiquidityAmountAndFeeParams"; + }; + }, + ]; + returns: { + defined: "AmountAndFee"; + }; + }, + { + name: "getEntryPriceAndFee"; + accounts: [ + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "custody"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "collateralCustody"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + { + name: "collateralCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "GetEntryPriceAndFeeParams"; + }; + }, + ]; + returns: { + defined: "NewPositionPricesAndFee"; + }; + }, + { + name: "disableTokensFreezeCapabilities"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + { + name: "lpTokenMint"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#7"]; + }, + ]; + args: []; + }, + { + name: "genesisStakePatch"; + accounts: [ + { + name: "caller"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "owner"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "rewardTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lmTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "stakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "stakingLmRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "userStaking"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + { + name: "genesisLock"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#14"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#15"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#16"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#17"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#18"]; + }, + ]; + args: []; + }, + { + name: "getOpenPositionWithSwapAmountAndFees"; + accounts: [ + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "receivingCustody"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "receivingCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "collateralCustody"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + { + name: "collateralCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "principalCustody"; + isMut: false; + isSigner: false; + docs: ["#7"]; + }, + { + name: "principalCustodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "GetOpenPositionWithSwapAmountAndFeesParams"; + }; + }, + ]; + returns: { + defined: "OpenPositionWithSwapAmountAndFees"; + }; + }, + { + name: "getExitPriceAndFee"; + accounts: [ + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "position"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "custody"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + { + name: "collateralCustody"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "collateralCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#7"]; + }, + ]; + args: []; + returns: { + defined: "ExitPriceAndFee"; + }; + }, + { + name: "getPnl"; + accounts: [ + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "position"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "custody"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + { + name: "collateralCustody"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "collateralCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#7"]; + }, + ]; + args: []; + returns: { + defined: "ProfitAndLoss"; + }; + }, + { + name: "getLiquidationPrice"; + accounts: [ + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "position"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "custody"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "collateralCustody"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + { + name: "collateralCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "GetLiquidationPriceParams"; + }; + }, + ]; + returns: "u64"; + }, + { + name: "getLiquidationState"; + accounts: [ + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "position"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "custody"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + { + name: "collateralCustody"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "collateralCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#7"]; + }, + ]; + args: []; + returns: "u8"; + }, + { + name: "getOraclePrice"; + accounts: [ + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "custody"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "custodyOracle"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + ]; + args: []; + returns: "u64"; + }, + { + name: "getSwapAmountAndFees"; + accounts: [ + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "receivingCustody"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "receivingCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "dispensingCustody"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + { + name: "dispensingCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "GetSwapAmountAndFeesParams"; + }; + }, + ]; + returns: { + defined: "SwapAmountAndFees"; + }; + }, + { + name: "getAssetsUnderManagement"; + accounts: [ + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + ]; + args: []; + returns: "u128"; + }, + { + name: "initUserStaking"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "rewardTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "lmTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "stakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "stakingLmRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "userStaking"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#7"]; + }, + { + name: "staking"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "genesisLock"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "lmTokenMint"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#14"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#15"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#16"]; + }, + ]; + args: []; + }, + { + name: "initUserProfile"; + accounts: [ + { + name: "user"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "userProfile"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "InitUserProfileParams"; + }; + }, + ]; + }, + { + name: "editUserProfile"; + accounts: [ + { + name: "user"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "userProfile"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "EditUserProfileParams"; + }; + }, + ]; + }, + { + name: "deleteUserProfile"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "user"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#3"]; + }, + { + name: "userProfile"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + ]; + args: []; + }, + { + name: "initStakingOne"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "stakingStakedTokenVault"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "stakingStakedTokenMint"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + { + name: "rent"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "InitStakingOneParams"; + }; + }, + ]; + returns: "u8"; + }, + { + name: "initStakingTwo"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "stakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + ]; + args: []; + returns: "u8"; + }, + { + name: "initStakingThree"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "stakingLmRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + ]; + args: []; + returns: "u8"; + }, + { + name: "initStakingFour"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "stakingStakedTokenVault"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "stakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "stakingLmRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "stakingStakedTokenMint"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#14"]; + }, + ]; + args: []; + returns: "u8"; + }, + { + name: "addLiquidStake"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "rewardTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "lmTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "stakingStakedTokenVault"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "stakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "stakingLmRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "userStaking"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#13"]; + }, + { + name: "genesisLock"; + isMut: true; + isSigner: false; + docs: ["#14"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#15"]; + }, + { + name: "governanceTokenMint"; + isMut: true; + isSigner: false; + docs: ["#16"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#17"]; + }, + { + name: "governanceRealm"; + isMut: false; + isSigner: false; + docs: [ + "#18", + "A realm represent one project within the governance program", + ]; + }, + { + name: "governanceRealmConfig"; + isMut: false; + isSigner: false; + docs: ["#19"]; + }, + { + name: "governanceGoverningTokenHolding"; + isMut: true; + isSigner: false; + docs: [ + "#20", + "Token account owned by governance program holding user's locked tokens", + ]; + }, + { + name: "governanceGoverningTokenOwnerRecord"; + isMut: true; + isSigner: false; + docs: ["#21", "Account owned by governance storing user information"]; + }, + { + name: "governanceProgram"; + isMut: false; + isSigner: false; + docs: ["#22"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#23"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#24"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#25"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "AddLiquidStakeParams"; + }; + }, + ]; + }, + { + name: "addLockedStake"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "rewardTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "stakingStakedTokenVault"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "stakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "userStaking"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "governanceTokenMint"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + { + name: "governanceRealm"; + isMut: false; + isSigner: false; + docs: [ + "#13", + "A realm represent one project within the governance program", + ]; + }, + { + name: "governanceRealmConfig"; + isMut: false; + isSigner: false; + docs: ["#14"]; + }, + { + name: "governanceGoverningTokenHolding"; + isMut: true; + isSigner: false; + docs: [ + "#15", + "Token account owned by governance program holding user's locked tokens", + ]; + }, + { + name: "governanceGoverningTokenOwnerRecord"; + isMut: true; + isSigner: false; + docs: ["#16", "Account owned by governance storing user information"]; + }, + { + name: "governanceProgram"; + isMut: false; + isSigner: false; + docs: ["#17"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#18"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#19"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#20"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "AddLockedStakeParams"; + }; + }, + ]; + }, + { + name: "upgradeLockedStake"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "rewardTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "lmTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "stakingStakedTokenVault"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "stakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#7"]; + }, + { + name: "userStaking"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "governanceTokenMint"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "genesisLock"; + isMut: true; + isSigner: false; + docs: ["#13"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#14"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#15"]; + }, + { + name: "governanceRealm"; + isMut: false; + isSigner: false; + docs: [ + "#16", + "A realm represent one project within the governance program", + ]; + }, + { + name: "governanceRealmConfig"; + isMut: false; + isSigner: false; + docs: ["#17"]; + }, + { + name: "governanceGoverningTokenHolding"; + isMut: true; + isSigner: false; + docs: [ + "#18", + "Token account owned by governance program holding user's locked tokens", + ]; + }, + { + name: "governanceGoverningTokenOwnerRecord"; + isMut: true; + isSigner: false; + docs: ["#19", "Account owned by governance storing user information"]; + }, + { + name: "stakingLmRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#20"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#21"]; + }, + { + name: "governanceProgram"; + isMut: false; + isSigner: false; + docs: ["#22"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#23"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#24"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "UpgradeLockedStakeParams"; + }; + }, + ]; + }, + { + name: "removeLiquidStake"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "stakedTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "lmTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "rewardTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "stakingStakedTokenVault"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "stakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "stakingLmRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "userStaking"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "genesisLock"; + isMut: true; + isSigner: false; + docs: ["#13"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#14"]; + }, + { + name: "governanceTokenMint"; + isMut: true; + isSigner: false; + docs: ["#15"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#16"]; + }, + { + name: "governanceRealm"; + isMut: false; + isSigner: false; + docs: [ + "#17", + "A realm represent one project within the governance program", + ]; + }, + { + name: "governanceRealmConfig"; + isMut: false; + isSigner: false; + docs: ["#18"]; + }, + { + name: "governanceGoverningTokenHolding"; + isMut: true; + isSigner: false; + docs: [ + "#19", + "Token account owned by governance program holding user's locked tokens", + ]; + }, + { + name: "governanceGoverningTokenOwnerRecord"; + isMut: true; + isSigner: false; + docs: ["#20", "Account owned by governance storing user information"]; + }, + { + name: "governanceProgram"; + isMut: false; + isSigner: false; + docs: ["#21"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#22"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#23"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#24"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "RemoveLiquidStakeParams"; + }; + }, + ]; + }, + { + name: "removeLockedStake"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "lmTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "stakedTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "rewardTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "stakingStakedTokenVault"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "stakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "stakingLmRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "userStaking"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "genesisLock"; + isMut: true; + isSigner: false; + docs: ["#13"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#14"]; + }, + { + name: "stakedTokenMint"; + isMut: true; + isSigner: false; + docs: ["#15"]; + }, + { + name: "governanceTokenMint"; + isMut: true; + isSigner: false; + docs: ["#16"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#17"]; + }, + { + name: "governanceRealm"; + isMut: false; + isSigner: false; + docs: [ + "#18", + "A realm represent one project within the governance program", + ]; + }, + { + name: "governanceRealmConfig"; + isMut: false; + isSigner: false; + docs: ["#19"]; + }, + { + name: "governanceGoverningTokenHolding"; + isMut: true; + isSigner: false; + docs: [ + "#20", + "Token account owned by governance program holding user's locked tokens", + ]; + }, + { + name: "governanceGoverningTokenOwnerRecord"; + isMut: true; + isSigner: false; + docs: ["#21", "Account owned by governance storing user information"]; + }, + { + name: "governanceProgram"; + isMut: false; + isSigner: false; + docs: ["#22"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#23"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#24"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#25"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "RemoveLockedStakeParams"; + }; + }, + ]; + }, + { + name: "claimStakes"; + accounts: [ + { + name: "caller"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "owner"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "rewardTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lmTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "stakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "stakingLmRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#8"]; + }, + { + name: "userStaking"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#11"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "genesisLock"; + isMut: true; + isSigner: false; + docs: ["#13"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#14"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#15"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#16"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#17"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#18"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "ClaimStakesParams"; + }; + }, + ]; + }, + { + name: "finalizeGenesisLockCampaign"; + accounts: [ + { + name: "caller"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "genesisLock"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#7"]; + }, + ]; + args: []; + }, + { + name: "setPoolLiquidityState"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SetPoolLiquidityStateParams"; + }; + }, + ]; + }, + { + name: "finalizeLockedStake"; + accounts: [ + { + name: "caller"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "owner"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "userStaking"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "governanceTokenMint"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "governanceRealm"; + isMut: false; + isSigner: false; + docs: [ + "#9", + "A realm represent one project within the governance program", + ]; + }, + { + name: "governanceRealmConfig"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "governanceGoverningTokenHolding"; + isMut: true; + isSigner: false; + docs: [ + "#11", + "Token account owned by governance program holding user's locked tokens", + ]; + }, + { + name: "governanceGoverningTokenOwnerRecord"; + isMut: true; + isSigner: false; + docs: ["#12", "Account owned by governance storing user information"]; + }, + { + name: "governanceProgram"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#14"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#15"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#16"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "FinalizeLockedStakeParams"; + }; + }, + ]; + }, + { + name: "resolveStakingRound"; + accounts: [ + { + name: "caller"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "stakingStakedTokenVault"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "stakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "stakingLmRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + ]; + args: []; + }, + { + name: "getLpTokenPrice"; + accounts: [ + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "lpTokenMint"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + ]; + args: []; + returns: "u64"; + }, + { + name: "getPoolInfoSnapshot"; + accounts: [ + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "lpTokenMint"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + ]; + args: []; + returns: { + defined: "PoolInfoSnapshot"; + }; + }, + { + name: "mintLmTokensFromBucket"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "receivingAccount"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "MintLmTokensFromBucketParams"; + }; + }, + ]; + returns: "u8"; + }, + { + name: "increasePositionLong"; + accounts: [ + { + name: "owner"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "custodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "custodyOracle"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#14"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "IncreasePositionLongParams"; + }; + }, + ]; + }, + { + name: "patchCustodyLockedAmount"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "usdcCustody"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "bonkCustody"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "wbtcCustody"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "jitoCustody"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + ]; + args: []; + }, + { + name: "increasePositionShort"; + accounts: [ + { + name: "owner"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#6"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "custodyTradeOracle"; + isMut: false; + isSigner: false; + docs: ["#9"]; + }, + { + name: "collateralCustody"; + isMut: true; + isSigner: false; + docs: ["#10"]; + }, + { + name: "collateralCustodyOracle"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "collateralCustodyTokenAccount"; + isMut: true; + isSigner: false; + docs: ["#12"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#14"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#15"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "IncreasePositionShortParams"; + }; + }, + ]; + }, + { + name: "setStakingLmEmissionPotentiometers"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SetStakingLmEmissionPotentiometersParams"; + }; + }, + ]; + }, + { + name: "setAdmin"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SetAdminParams"; + }; + }, + ]; + }, + { + name: "setProtocolFeeRecipient"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "protocolFeeRecipient"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + ]; + args: []; + }, + { + name: "setCustodyMaxCumulativeShortPositionSizeUsd"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SetCustodyMaxCumulativeShortPositionSizeUsdParams"; + }; + }, + ]; + }, + { + name: "setTakeProfitLong"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SetTakeProfitLongParams"; + }; + }, + ]; + }, + { + name: "setStopLossLong"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "custody"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SetStopLossLongParams"; + }; + }, + ]; + }, + { + name: "setTakeProfitShort"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "custody"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SetTakeProfitShortParams"; + }; + }, + ]; + }, + { + name: "setStopLossShort"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "custody"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + ]; + args: [ + { + name: "params"; + type: { + defined: "SetStopLossShortParams"; + }; + }, + ]; + }, + { + name: "cancelTakeProfit"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "custody"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + ]; + args: []; + }, + { + name: "cancelStopLoss"; + accounts: [ + { + name: "owner"; + isMut: true; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: false; + isSigner: false; + docs: ["#3"]; + }, + { + name: "position"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "custody"; + isMut: false; + isSigner: false; + docs: ["#5"]; + }, + ]; + args: []; + }, + { + name: "patchStakingRound"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "payer"; + isMut: true; + isSigner: true; + docs: ["#2"]; + }, + { + name: "fundingAccount"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "stakingRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#4"]; + }, + { + name: "stakingLmRewardTokenVault"; + isMut: true; + isSigner: false; + docs: ["#5"]; + }, + { + name: "transferAuthority"; + isMut: false; + isSigner: false; + docs: ["#6"]; + }, + { + name: "staking"; + isMut: true; + isSigner: false; + docs: ["#7"]; + }, + { + name: "cortex"; + isMut: true; + isSigner: false; + docs: ["#8"]; + }, + { + name: "lmTokenMint"; + isMut: true; + isSigner: false; + docs: ["#9"]; + }, + { + name: "feeRedistributionMint"; + isMut: false; + isSigner: false; + docs: ["#10"]; + }, + { + name: "adrenaProgram"; + isMut: false; + isSigner: false; + docs: ["#11"]; + }, + { + name: "systemProgram"; + isMut: false; + isSigner: false; + docs: ["#12"]; + }, + { + name: "tokenProgram"; + isMut: false; + isSigner: false; + docs: ["#13"]; + }, + ]; + args: []; + }, + { + name: "setPoolWhitelistedSwapper"; + accounts: [ + { + name: "admin"; + isMut: false; + isSigner: true; + docs: ["#1"]; + }, + { + name: "cortex"; + isMut: false; + isSigner: false; + docs: ["#2"]; + }, + { + name: "pool"; + isMut: true; + isSigner: false; + docs: ["#3"]; + }, + { + name: "whitelistedSwapper"; + isMut: false; + isSigner: false; + docs: ["#4"]; + }, + ]; + args: []; + }, + ]; + accounts: [ + { + name: "cortex"; + type: { + kind: "struct"; + fields: [ + { + name: "bump"; + type: "u8"; + }, + { + name: "transferAuthorityBump"; + type: "u8"; + }, + { + name: "lmTokenBump"; + type: "u8"; + }, + { + name: "governanceTokenBump"; + type: "u8"; + }, + { + name: "initialized"; + type: "u8"; + }, + { + name: "feeConversionDecimals"; + type: "u8"; + }, + { + name: "padding"; + type: { + array: ["u8", 2]; + }; + }, + { + name: "lmTokenMint"; + type: "publicKey"; + }, + { + name: "inceptionTime"; + type: "i64"; + }, + { + name: "admin"; + type: "publicKey"; + }, + { + name: "feeRedistributionMint"; + type: "publicKey"; + }, + { + name: "protocolFeeRecipient"; + type: "publicKey"; + }, + { + name: "pools"; + type: { + array: ["publicKey", 4]; + }; + }, + { + name: "userProfilesCount"; + type: "u64"; + }, + { + name: "governanceProgram"; + type: "publicKey"; + }, + { + name: "governanceRealm"; + type: "publicKey"; + }, + { + name: "coreContributorBucketAllocation"; + type: "u64"; + }, + { + name: "foundationBucketAllocation"; + type: "u64"; + }, + { + name: "ecosystemBucketAllocation"; + type: "u64"; + }, + { + name: "coreContributorBucketVestedAmount"; + type: "u64"; + }, + { + name: "coreContributorBucketMintedAmount"; + type: "u64"; + }, + { + name: "foundationBucketVestedAmount"; + type: "u64"; + }, + { + name: "foundationBucketMintedAmount"; + type: "u64"; + }, + { + name: "ecosystemBucketVestedAmount"; + type: "u64"; + }, + { + name: "ecosystemBucketMintedAmount"; + type: "u64"; + }, + { + name: "genesisLiquidityAlpAmount"; + type: "u64"; + }, + { + name: "uniquePositionIdCounter"; + type: "u64"; + }, + ]; + }; + }, + { + name: "custody"; + type: { + kind: "struct"; + fields: [ + { + name: "bump"; + type: "u8"; + }, + { + name: "tokenAccountBump"; + type: "u8"; + }, + { + name: "allowTrade"; + type: "u8"; + }, + { + name: "allowSwap"; + type: "u8"; + }, + { + name: "decimals"; + type: "u8"; + }, + { + name: "isStable"; + type: "u8"; + }, + { + name: "padding"; + type: { + array: ["u8", 2]; + }; + }, + { + name: "pool"; + type: "publicKey"; + }, + { + name: "mint"; + type: "publicKey"; + }, + { + name: "tokenAccount"; + type: "publicKey"; + }, + { + name: "oracle"; + type: "publicKey"; + }, + { + name: "tradeOracle"; + type: "publicKey"; + }, + { + name: "pricing"; + type: { + defined: "PricingParams"; + }; + }, + { + name: "fees"; + type: { + defined: "Fees"; + }; + }, + { + name: "borrowRate"; + type: { + defined: "BorrowRateParams"; + }; + }, + { + name: "collectedFees"; + type: { + defined: "FeesStats"; + }; + }, + { + name: "volumeStats"; + type: { + defined: "VolumeStats"; + }; + }, + { + name: "tradeStats"; + type: { + defined: "TradeStats"; + }; + }, + { + name: "assets"; + type: { + defined: "Assets"; + }; + }, + { + name: "longPositions"; + type: { + defined: "PositionsAccounting"; + }; + }, + { + name: "shortPositions"; + type: { + defined: "PositionsAccounting"; + }; + }, + { + name: "borrowRateState"; + type: { + defined: "BorrowRateState"; + }; + }, + ]; + }; + }, + { + name: "genesisLock"; + type: { + kind: "struct"; + fields: [ + { + name: "bump"; + type: "u8"; + }, + { + name: "hasTransitionedToFullyPublic"; + type: "u8"; + }, + { + name: "hasCompletedOtcIn"; + type: "u8"; + }, + { + name: "hasCompletedOtcOut"; + type: "u8"; + }, + { + name: "padding"; + type: { + array: ["u8", 4]; + }; + }, + { + name: "campaignDuration"; + type: "i64"; + }, + { + name: "reservedGrantDuration"; + type: "i64"; + }, + { + name: "campaignStartDate"; + type: "i64"; + }, + { + name: "publicAmount"; + type: "u64"; + }, + { + name: "reservedAmount"; + type: "u64"; + }, + { + name: "publicAmountClaimed"; + type: "u64"; + }, + { + name: "reservedAmountClaimed"; + type: "u64"; + }, + { + name: "reservedGrantOwners"; + type: { + array: ["publicKey", 43]; + }; + }, + { + name: "reservedGrantAmounts"; + type: { + array: ["u64", 43]; + }; + }, + { + name: "paddingUnsafe"; + type: { + array: ["u8", 8]; + }; + }, + ]; + }; + }, + { + name: "pool"; + type: { + kind: "struct"; + fields: [ + { + name: "bump"; + type: "u8"; + }, + { + name: "lpTokenBump"; + type: "u8"; + }, + { + name: "nbStableCustody"; + type: "u8"; + }, + { + name: "initialized"; + type: "u8"; + }, + { + name: "allowTrade"; + type: "u8"; + }, + { + name: "allowSwap"; + type: "u8"; + }, + { + name: "liquidityState"; + type: "u8"; + }, + { + name: "registeredCustodyCount"; + type: "u8"; + }, + { + name: "name"; + type: { + defined: "LimitedString"; + }; + }, + { + name: "custodies"; + type: { + array: ["publicKey", 8]; + }; + }, + { + name: "padding1"; + type: { + array: ["u8", 32]; + }; + }, + { + name: "whitelistedSwapper"; + type: "publicKey"; + }, + { + name: "ratios"; + type: { + array: [ + { + defined: "TokenRatios"; + }, + 8, + ]; + }; + }, + { + name: "padding2"; + type: { + array: ["u8", 16]; + }; + }, + { + name: "aumUsd"; + type: { + defined: "U128Split"; + }; + }, + { + name: "inceptionTime"; + type: "i64"; + }, + { + name: "aumSoftCapUsd"; + type: "u64"; + }, + ]; + }; + }, + { + name: "position"; + type: { + kind: "struct"; + fields: [ + { + name: "bump"; + type: "u8"; + }, + { + name: "side"; + type: "u8"; + }, + { + name: "takeProfitIsSet"; + type: "u8"; + }, + { + name: "stopLossIsSet"; + type: "u8"; + }, + { + name: "paddingUnsafe"; + type: { + array: ["u8", 1]; + }; + }, + { + name: "padding"; + type: { + array: ["u8", 3]; + }; + }, + { + name: "owner"; + type: "publicKey"; + }, + { + name: "pool"; + type: "publicKey"; + }, + { + name: "custody"; + type: "publicKey"; + }, + { + name: "collateralCustody"; + type: "publicKey"; + }, + { + name: "openTime"; + type: "i64"; + }, + { + name: "updateTime"; + type: "i64"; + }, + { + name: "price"; + type: "u64"; + }, + { + name: "sizeUsd"; + type: "u64"; + }, + { + name: "borrowSizeUsd"; + type: "u64"; + }, + { + name: "collateralUsd"; + type: "u64"; + }, + { + name: "unrealizedInterestUsd"; + type: "u64"; + }, + { + name: "cumulativeInterestSnapshot"; + type: { + defined: "U128Split"; + }; + }, + { + name: "lockedAmount"; + type: "u64"; + }, + { + name: "collateralAmount"; + type: "u64"; + }, + { + name: "exitFeeUsd"; + type: "u64"; + }, + { + name: "liquidationFeeUsd"; + type: "u64"; + }, + { + name: "id"; + type: "u64"; + }, + { + name: "takeProfitLimitPrice"; + type: "u64"; + }, + { + name: "paddingUnsafe3"; + type: { + array: ["u8", 8]; + }; + }, + { + name: "stopLossLimitPrice"; + type: "u64"; + }, + { + name: "stopLossClosePositionPrice"; + type: "u64"; + }, + ]; + }; + }, + { + name: "staking"; + type: { + kind: "struct"; + fields: [ + { + name: "stakingType"; + type: "u8"; + }, + { + name: "bump"; + type: "u8"; + }, + { + name: "stakedTokenVaultBump"; + type: "u8"; + }, + { + name: "rewardTokenVaultBump"; + type: "u8"; + }, + { + name: "lmRewardTokenVaultBump"; + type: "u8"; + }, + { + name: "rewardTokenDecimals"; + type: "u8"; + }, + { + name: "stakedTokenDecimals"; + type: "u8"; + }, + { + name: "initialized"; + type: "u8"; + }, + { + name: "nbLockedTokens"; + type: "u64"; + }, + { + name: "nbLiquidTokens"; + type: "u64"; + }, + { + name: "stakedTokenMint"; + type: "publicKey"; + }, + { + name: "resolvedRewardTokenAmount"; + type: "u64"; + }, + { + name: "resolvedStakedTokenAmount"; + type: "u64"; + }, + { + name: "resolvedLmRewardTokenAmount"; + type: "u64"; + }, + { + name: "resolvedLmStakedTokenAmount"; + type: "u64"; + }, + { + name: "currentStakingRound"; + type: { + defined: "StakingRound"; + }; + }, + { + name: "nextStakingRound"; + type: { + defined: "StakingRound"; + }; + }, + { + name: "resolvedStakingRounds"; + type: { + array: [ + { + defined: "StakingRound"; + }, + 32, + ]; + }; + }, + { + name: "registeredResolvedStakingRoundCount"; + type: "u8"; + }, + { + name: "padding"; + type: { + array: ["u8", 3]; + }; + }, + { + name: "lmEmissionPotentiometerBps"; + type: "u16"; + }, + { + name: "monthsElapsedSinceInception"; + type: "u16"; + }, + { + name: "paddingUnsafe"; + type: { + array: ["u8", 8]; + }; + }, + { + name: "emissionAmountPerRoundLastUpdate"; + type: "i64"; + }, + { + name: "currentMonthEmissionAmountPerRound"; + type: "u64"; + }, + ]; + }; + }, + { + name: "userProfile"; + type: { + kind: "struct"; + fields: [ + { + name: "bump"; + type: "u8"; + }, + { + name: "padding"; + type: { + array: ["u8", 7]; + }; + }, + { + name: "nickname"; + type: { + defined: "LimitedString"; + }; + }, + { + name: "createdAt"; + type: "i64"; + }, + { + name: "owner"; + type: "publicKey"; + }, + { + name: "swapCount"; + type: "u64"; + }, + { + name: "swapVolumeUsd"; + type: "u64"; + }, + { + name: "swapFeePaidUsd"; + type: "u64"; + }, + { + name: "shortStats"; + type: { + defined: "TradingStats"; + }; + }, + { + name: "longStats"; + type: { + defined: "TradingStats"; + }; + }, + ]; + }; + }, + { + name: "userStaking"; + type: { + kind: "struct"; + fields: [ + { + name: "bump"; + type: "u8"; + }, + { + name: "unusedUnsafe"; + type: { + array: ["u8", 1]; + }; + }, + { + name: "stakingType"; + type: "u8"; + }, + { + name: "padding"; + type: { + array: ["u8", 5]; + }; + }, + { + name: "lockedStakeIdCounter"; + type: "u64"; + }, + { + name: "liquidStake"; + type: { + defined: "LiquidStake"; + }; + }, + { + name: "lockedStakes"; + type: { + array: [ + { + defined: "LockedStake"; + }, + 32, + ]; + }; + }, + ]; + }; + }, + { + name: "vestRegistry"; + type: { + kind: "struct"; + fields: [ + { + name: "bump"; + type: "u8"; + }, + { + name: "vests"; + type: { + vec: "publicKey"; + }; + }, + { + name: "vestingTokenAmount"; + type: "u64"; + }, + { + name: "vestedTokenAmount"; + type: "u64"; + }, + ]; + }; + }, + { + name: "vest"; + type: { + kind: "struct"; + fields: [ + { + name: "bump"; + type: "u8"; + }, + { + name: "originBucket"; + type: "u8"; + }, + { + name: "cancelled"; + type: "u8"; + }, + { + name: "padding"; + type: { + array: ["u8", 1]; + }; + }, + { + name: "voteMultiplier"; + type: "u32"; + }, + { + name: "amount"; + type: "u64"; + }, + { + name: "unlockStartTimestamp"; + type: "i64"; + }, + { + name: "unlockEndTimestamp"; + type: "i64"; + }, + { + name: "claimedAmount"; + type: "u64"; + }, + { + name: "lastClaimTimestamp"; + type: "i64"; + }, + { + name: "owner"; + type: "publicKey"; + }, + ]; + }; + }, + ]; + types: [ + { + name: "MintLmTokensFromBucketParams"; + type: { + kind: "struct"; + fields: [ + { + name: "bucketName"; + type: "u8"; + }, + { + name: "amount"; + type: "u64"; + }, + { + name: "reason"; + type: "string"; + }, + ]; + }; + }, + { + name: "SetAdminParams"; + type: { + kind: "struct"; + fields: [ + { + name: "newAdmin"; + type: "publicKey"; + }, + ]; + }; + }, + { + name: "AddCustodyParams"; + type: { + kind: "struct"; + fields: [ + { + name: "isStable"; + type: "bool"; + }, + { + name: "pricing"; + type: { + defined: "PricingParams"; + }; + }, + { + name: "allowSwap"; + type: "bool"; + }, + { + name: "allowTrade"; + type: "bool"; + }, + { + name: "fees"; + type: { + defined: "Fees"; + }; + }, + { + name: "borrowRate"; + type: { + defined: "BorrowRateParams"; + }; + }, + { + name: "ratios"; + type: { + array: [ + { + defined: "TokenRatios"; + }, + 8, + ]; + }; + }, + ]; + }; + }, + { + name: "RemoveCustodyParams"; + type: { + kind: "struct"; + fields: [ + { + name: "ratios"; + type: { + array: [ + { + defined: "TokenRatios"; + }, + 8, + ]; + }; + }, + ]; + }; + }, + { + name: "SetCustodyAllowSwapParams"; + type: { + kind: "struct"; + fields: [ + { + name: "allowSwap"; + type: "bool"; + }, + ]; + }; + }, + { + name: "SetCustodyAllowTradeParams"; + type: { + kind: "struct"; + fields: [ + { + name: "allowTrade"; + type: "bool"; + }, + ]; + }; + }, + { + name: "SetCustodyConfigParams"; + type: { + kind: "struct"; + fields: [ + { + name: "isStable"; + type: "bool"; + }, + { + name: "oracle"; + type: "publicKey"; + }, + { + name: "tradeOracle"; + type: "publicKey"; + }, + { + name: "pricing"; + type: { + defined: "PricingParams"; + }; + }, + { + name: "fees"; + type: { + defined: "Fees"; + }; + }, + { + name: "borrowRate"; + type: { + defined: "BorrowRateParams"; + }; + }, + { + name: "ratios"; + type: { + array: [ + { + defined: "TokenRatios"; + }, + 8, + ]; + }; + }, + ]; + }; + }, + { + name: "SetCustodyMaxCumulativeShortPositionSizeUsdParams"; + type: { + kind: "struct"; + fields: [ + { + name: "maxCumulativeShortPositionSizeUsd"; + type: "u64"; + }, + ]; + }; + }, + { + name: "InitOneParams"; + type: { + kind: "struct"; + fields: [ + { + name: "coreContributorBucketAllocation"; + type: "u64"; + }, + { + name: "foundationBucketAllocation"; + type: "u64"; + }, + { + name: "ecosystemBucketAllocation"; + type: "u64"; + }, + ]; + }; + }, + { + name: "AddPoolPartOneParams"; + type: { + kind: "struct"; + fields: [ + { + name: "name"; + type: "string"; + }, + { + name: "aumSoftCapUsd"; + type: "u64"; + }, + { + name: "lpTokenName"; + type: "string"; + }, + { + name: "lpTokenSymbol"; + type: "string"; + }, + { + name: "lpTokenUri"; + type: "string"; + }, + ]; + }; + }, + { + name: "AddPoolPartTwoParams"; + type: { + kind: "struct"; + fields: [ + { + name: "genesisLockCampaignDuration"; + type: "i64"; + }, + { + name: "genesisReservedGrantDuration"; + type: "i64"; + }, + { + name: "genesisLockCampaignStartDate"; + type: "i64"; + }, + { + name: "reservedSpots"; + type: { + defined: "ReservedSpots"; + }; + }, + ]; + }; + }, + { + name: "GenesisOtcInParams"; + type: { + kind: "struct"; + fields: [ + { + name: "custodyOneAmount"; + type: "u64"; + }, + { + name: "custodyTwoAmount"; + type: "u64"; + }, + { + name: "custodyThreeAmount"; + type: "u64"; + }, + ]; + }; + }, + { + name: "SetPoolAllowSwapParams"; + type: { + kind: "struct"; + fields: [ + { + name: "allowSwap"; + type: "bool"; + }, + ]; + }; + }, + { + name: "SetPoolAllowTradeParams"; + type: { + kind: "struct"; + fields: [ + { + name: "allowTrade"; + type: "bool"; + }, + ]; + }; + }, + { + name: "SetPoolAumSoftCapUsdParams"; + type: { + kind: "struct"; + fields: [ + { + name: "aumSoftCapUsd"; + type: "u64"; + }, + ]; + }; + }, + { + name: "SetPoolLiquidityStateParams"; + type: { + kind: "struct"; + fields: [ + { + name: "liquidityState"; + type: "u8"; + }, + ]; + }; + }, + { + name: "InitStakingOneParams"; + type: { + kind: "struct"; + fields: [ + { + name: "stakingType"; + type: "u8"; + }, + ]; + }; + }, + { + name: "SetStakingLmEmissionPotentiometersParams"; + type: { + kind: "struct"; + fields: [ + { + name: "lmEmissionPotentiometerBps"; + type: "u16"; + }, + ]; + }; + }, + { + name: "AddVestParams"; + type: { + kind: "struct"; + fields: [ + { + name: "amount"; + type: "u64"; + }, + { + name: "originBucket"; + type: "u8"; + }, + { + name: "unlockStartTimestamp"; + type: "i64"; + }, + { + name: "unlockEndTimestamp"; + type: "i64"; + }, + { + name: "voteMultiplier"; + type: "u32"; + }, + ]; + }; + }, + { + name: "AddGenesisLiquidityParams"; + type: { + kind: "struct"; + fields: [ + { + name: "amountIn"; + type: "u64"; + }, + { + name: "minLpAmountOut"; + type: "u64"; + }, + ]; + }; + }, + { + name: "AddLiquidityParams"; + type: { + kind: "struct"; + fields: [ + { + name: "amountIn"; + type: "u64"; + }, + { + name: "minLpAmountOut"; + type: "u64"; + }, + ]; + }; + }, + { + name: "RemoveLiquidityParams"; + type: { + kind: "struct"; + fields: [ + { + name: "lpAmountIn"; + type: "u64"; + }, + { + name: "minAmountOut"; + type: "u64"; + }, + ]; + }; + }, + { + name: "SwapParams"; + type: { + kind: "struct"; + fields: [ + { + name: "amountIn"; + type: "u64"; + }, + { + name: "minAmountOut"; + type: "u64"; + }, + ]; + }; + }, + { + name: "AddCollateralLongParams"; + type: { + kind: "struct"; + fields: [ + { + name: "collateral"; + type: "u64"; + }, + ]; + }; + }, + { + name: "AddCollateralShortParams"; + type: { + kind: "struct"; + fields: [ + { + name: "collateral"; + type: "u64"; + }, + ]; + }; + }, + { + name: "SetStopLossLongParams"; + type: { + kind: "struct"; + fields: [ + { + name: "stopLossLimitPrice"; + type: "u64"; + }, + { + name: "closePositionPrice"; + type: { + option: "u64"; + }; + }, + ]; + }; + }, + { + name: "SetStopLossShortParams"; + type: { + kind: "struct"; + fields: [ + { + name: "stopLossLimitPrice"; + type: "u64"; + }, + { + name: "closePositionPrice"; + type: { + option: "u64"; + }; + }, + ]; + }; + }, + { + name: "SetTakeProfitLongParams"; + type: { + kind: "struct"; + fields: [ + { + name: "takeProfitLimitPrice"; + type: "u64"; + }, + ]; + }; + }, + { + name: "SetTakeProfitShortParams"; + type: { + kind: "struct"; + fields: [ + { + name: "takeProfitLimitPrice"; + type: "u64"; + }, + ]; + }; + }, + { + name: "ClosePositionLongParams"; + type: { + kind: "struct"; + fields: [ + { + name: "price"; + type: { + option: "u64"; + }; + }, + ]; + }; + }, + { + name: "ClosePositionShortParams"; + type: { + kind: "struct"; + fields: [ + { + name: "price"; + type: { + option: "u64"; + }; + }, + ]; + }; + }, + { + name: "IncreasePositionLongParams"; + type: { + kind: "struct"; + fields: [ + { + name: "price"; + type: "u64"; + }, + { + name: "collateral"; + type: "u64"; + }, + { + name: "leverage"; + type: "u32"; + }, + ]; + }; + }, + { + name: "IncreasePositionShortParams"; + type: { + kind: "struct"; + fields: [ + { + name: "price"; + type: "u64"; + }, + { + name: "collateral"; + type: "u64"; + }, + { + name: "leverage"; + type: "u32"; + }, + ]; + }; + }, + { + name: "LiquidateLongParams"; + type: { + kind: "struct"; + fields: []; + }; + }, + { + name: "LiquidateShortParams"; + type: { + kind: "struct"; + fields: []; + }; + }, + { + name: "OpenPositionWithSwapParams"; + type: { + kind: "struct"; + fields: [ + { + name: "price"; + type: "u64"; + }, + { + name: "collateral"; + type: "u64"; + }, + { + name: "leverage"; + type: "u32"; + }, + { + name: "referrer"; + type: { + option: "publicKey"; + }; + }, + ]; + }; + }, + { + name: "OpenPositionLongParams"; + type: { + kind: "struct"; + fields: [ + { + name: "price"; + type: "u64"; + }, + { + name: "collateral"; + type: "u64"; + }, + { + name: "leverage"; + type: "u32"; + }, + { + name: "referrer"; + type: { + option: "publicKey"; + }; + }, + ]; + }; + }, + { + name: "OpenPositionShortParams"; + type: { + kind: "struct"; + fields: [ + { + name: "price"; + type: "u64"; + }, + { + name: "collateral"; + type: "u64"; + }, + { + name: "leverage"; + type: "u32"; + }, + { + name: "referrer"; + type: { + option: "publicKey"; + }; + }, + ]; + }; + }, + { + name: "RemoveCollateralLongParams"; + type: { + kind: "struct"; + fields: [ + { + name: "collateralUsd"; + type: "u64"; + }, + ]; + }; + }, + { + name: "RemoveCollateralShortParams"; + type: { + kind: "struct"; + fields: [ + { + name: "collateralUsd"; + type: "u64"; + }, + ]; + }; + }, + { + name: "AddLiquidStakeParams"; + type: { + kind: "struct"; + fields: [ + { + name: "amount"; + type: "u64"; + }, + ]; + }; + }, + { + name: "AddLockedStakeParams"; + type: { + kind: "struct"; + fields: [ + { + name: "amount"; + type: "u64"; + }, + { + name: "lockedDays"; + type: "u32"; + }, + ]; + }; + }, + { + name: "ClaimStakesParams"; + type: { + kind: "struct"; + fields: [ + { + name: "lockedStakeIndexes"; + type: { + option: "bytes"; + }; + }, + ]; + }; + }, + { + name: "FinalizeLockedStakeParams"; + type: { + kind: "struct"; + fields: [ + { + name: "lockedStakeId"; + type: "u64"; + }, + { + name: "earlyExit"; + type: "bool"; + }, + ]; + }; + }, + { + name: "RemoveLiquidStakeParams"; + type: { + kind: "struct"; + fields: [ + { + name: "amount"; + type: "u64"; + }, + ]; + }; + }, + { + name: "RemoveLockedStakeParams"; + type: { + kind: "struct"; + fields: [ + { + name: "lockedStakeIndex"; + type: "u64"; + }, + ]; + }; + }, + { + name: "UpgradeLockedStakeParams"; + type: { + kind: "struct"; + fields: [ + { + name: "lockedStakeId"; + type: "u64"; + }, + { + name: "amount"; + type: { + option: "u64"; + }; + }, + { + name: "lockedDays"; + type: { + option: "u32"; + }; + }, + ]; + }; + }, + { + name: "EditUserProfileParams"; + type: { + kind: "struct"; + fields: [ + { + name: "nickname"; + type: "string"; + }, + ]; + }; + }, + { + name: "InitUserProfileParams"; + type: { + kind: "struct"; + fields: [ + { + name: "nickname"; + type: "string"; + }, + ]; + }; + }, + { + name: "GetAddLiquidityAmountAndFeeParams"; + type: { + kind: "struct"; + fields: [ + { + name: "amountIn"; + type: "u64"; + }, + ]; + }; + }, + { + name: "GetEntryPriceAndFeeParams"; + type: { + kind: "struct"; + fields: [ + { + name: "collateral"; + type: "u64"; + }, + { + name: "leverage"; + type: "u32"; + }, + { + name: "side"; + type: "u8"; + }, + ]; + }; + }, + { + name: "GetLiquidationPriceParams"; + type: { + kind: "struct"; + fields: [ + { + name: "addCollateral"; + type: "u64"; + }, + { + name: "removeCollateral"; + type: "u64"; + }, + ]; + }; + }, + { + name: "GetOpenPositionWithSwapAmountAndFeesParams"; + type: { + kind: "struct"; + fields: [ + { + name: "collateralAmount"; + type: "u64"; + }, + { + name: "leverage"; + type: "u32"; + }, + { + name: "side"; + type: "u8"; + }, + ]; + }; + }, + { + name: "CustodyInfoSnapshot"; + type: { + kind: "struct"; + fields: [ + { + name: "assetsValueUsd"; + type: "u64"; + }, + { + name: "owned"; + type: "u64"; + }, + { + name: "locked"; + type: "u64"; + }, + { + name: "price"; + type: "u64"; + }, + { + name: "priceConfidence"; + type: "u64"; + }, + { + name: "tradePrice"; + type: "u64"; + }, + { + name: "tradePriceConfidence"; + type: "u64"; + }, + { + name: "shortPnl"; + type: "i64"; + }, + { + name: "longPnl"; + type: "i64"; + }, + { + name: "openInterestLongUsd"; + type: "u64"; + }, + { + name: "openInterestShortUsd"; + type: "u64"; + }, + { + name: "cumulativeProfitUsd"; + type: "u64"; + }, + { + name: "cumulativeLossUsd"; + type: "u64"; + }, + { + name: "cumulativeSwapFeeUsd"; + type: "u64"; + }, + { + name: "cumulativeLiquidityFeeUsd"; + type: "u64"; + }, + { + name: "cumulativeClosePositionFeeUsd"; + type: "u64"; + }, + { + name: "cumulativeLiquidationFeeUsd"; + type: "u64"; + }, + { + name: "cumulativeBorrowFeeUsd"; + type: "u64"; + }, + { + name: "cumulativeTradingVolumeUsd"; + type: "u64"; + }, + ]; + }; + }, + { + name: "PoolInfoSnapshot"; + type: { + kind: "struct"; + fields: [ + { + name: "currentTime"; + type: "u64"; + }, + { + name: "aumUsd"; + type: "u64"; + }, + { + name: "lpTokenPrice"; + type: "u64"; + }, + { + name: "custodiesInfoSnapshot"; + type: { + vec: { + defined: "CustodyInfoSnapshot"; + }; + }; + }, + { + name: "lpCirculatingSupply"; + type: "u64"; + }, + ]; + }; + }, + { + name: "GetRemoveLiquidityAmountAndFeeParams"; + type: { + kind: "struct"; + fields: [ + { + name: "lpAmountIn"; + type: "u64"; + }, + ]; + }; + }, + { + name: "GetSwapAmountAndFeesParams"; + type: { + kind: "struct"; + fields: [ + { + name: "amountIn"; + type: "u64"; + }, + ]; + }; + }, + { + name: "ExitPriceAndFee"; + type: { + kind: "struct"; + fields: [ + { + name: "price"; + type: "u64"; + }, + { + name: "fee"; + type: "u64"; + }, + { + name: "amountOut"; + type: "u64"; + }, + { + name: "profitUsd"; + type: "u64"; + }, + { + name: "lossUsd"; + type: "u64"; + }, + ]; + }; + }, + { + name: "AmountAndFee"; + type: { + kind: "struct"; + fields: [ + { + name: "amount"; + type: "u64"; + }, + { + name: "fee"; + type: "u64"; + }, + ]; + }; + }, + { + name: "NewPositionPricesAndFee"; + type: { + kind: "struct"; + fields: [ + { + name: "entryPrice"; + type: "u64"; + }, + { + name: "liquidationPrice"; + type: "u64"; + }, + { + name: "exitFee"; + type: "u64"; + }, + { + name: "liquidationFee"; + type: "u64"; + }, + { + name: "size"; + type: "u64"; + }, + ]; + }; + }, + { + name: "OpenPositionWithSwapAmountAndFees"; + type: { + kind: "struct"; + fields: [ + { + name: "entryPrice"; + type: "u64"; + }, + { + name: "liquidationPrice"; + type: "u64"; + }, + { + name: "swapFeeIn"; + type: "u64"; + }, + { + name: "swapFeeOut"; + type: "u64"; + }, + { + name: "exitFee"; + type: "u64"; + }, + { + name: "liquidationFee"; + type: "u64"; + }, + { + name: "size"; + type: "u64"; + }, + ]; + }; + }, + { + name: "SwapAmountAndFees"; + type: { + kind: "struct"; + fields: [ + { + name: "amountOut"; + type: "u64"; + }, + { + name: "feeIn"; + type: "u64"; + }, + { + name: "feeOut"; + type: "u64"; + }, + ]; + }; + }, + { + name: "ProfitAndLoss"; + docs: [ + "Specific to the codebase, this struct is used to store the profit and loss of a position.", + ]; + type: { + kind: "struct"; + fields: [ + { + name: "profitUsd"; + type: "u64"; + }, + { + name: "lossUsd"; + type: "u64"; + }, + { + name: "exitFee"; + type: "u64"; + }, + { + name: "exitFeeUsd"; + type: "u64"; + }, + { + name: "borrowFeeUsd"; + type: "u64"; + }, + ]; + }; + }, + { + name: "Fees"; + type: { + kind: "struct"; + fields: [ + { + name: "swapIn"; + type: "u16"; + }, + { + name: "swapOut"; + type: "u16"; + }, + { + name: "stableSwapIn"; + type: "u16"; + }, + { + name: "stableSwapOut"; + type: "u16"; + }, + { + name: "addLiquidity"; + type: "u16"; + }, + { + name: "removeLiquidity"; + type: "u16"; + }, + { + name: "closePosition"; + type: "u16"; + }, + { + name: "liquidation"; + type: "u16"; + }, + { + name: "feeMax"; + type: "u16"; + }, + { + name: "padding"; + type: { + array: ["u8", 6]; + }; + }, + { + name: "padding2"; + type: "u64"; + }, + ]; + }; + }, + { + name: "FeesStats"; + type: { + kind: "struct"; + fields: [ + { + name: "swapUsd"; + type: "u64"; + }, + { + name: "addLiquidityUsd"; + type: "u64"; + }, + { + name: "removeLiquidityUsd"; + type: "u64"; + }, + { + name: "closePositionUsd"; + type: "u64"; + }, + { + name: "liquidationUsd"; + type: "u64"; + }, + { + name: "borrowUsd"; + type: "u64"; + }, + ]; + }; + }, + { + name: "VolumeStats"; + type: { + kind: "struct"; + fields: [ + { + name: "swapUsd"; + type: "u64"; + }, + { + name: "addLiquidityUsd"; + type: "u64"; + }, + { + name: "removeLiquidityUsd"; + type: "u64"; + }, + { + name: "openPositionUsd"; + type: "u64"; + }, + { + name: "closePositionUsd"; + type: "u64"; + }, + { + name: "liquidationUsd"; + type: "u64"; + }, + ]; + }; + }, + { + name: "TradeStats"; + type: { + kind: "struct"; + fields: [ + { + name: "profitUsd"; + type: "u64"; + }, + { + name: "lossUsd"; + type: "u64"; + }, + { + name: "oiLongUsd"; + type: "u64"; + }, + { + name: "oiShortUsd"; + type: "u64"; + }, + ]; + }; + }, + { + name: "Assets"; + type: { + kind: "struct"; + fields: [ + { + name: "collateral"; + type: "u64"; + }, + { + name: "owned"; + type: "u64"; + }, + { + name: "locked"; + type: "u64"; + }, + ]; + }; + }, + { + name: "PricingParams"; + type: { + kind: "struct"; + fields: [ + { + name: "maxInitialLeverage"; + type: "u32"; + }, + { + name: "maxLeverage"; + type: "u32"; + }, + { + name: "maxPositionLockedUsd"; + type: "u64"; + }, + { + name: "maxCumulativeShortPositionSizeUsd"; + type: "u64"; + }, + ]; + }; + }, + { + name: "BorrowRateParams"; + type: { + kind: "struct"; + fields: [ + { + name: "maxHourlyBorrowInterestRate"; + type: "u64"; + }, + ]; + }; + }, + { + name: "BorrowRateState"; + type: { + kind: "struct"; + fields: [ + { + name: "currentRate"; + type: "u64"; + }, + { + name: "lastUpdate"; + type: "i64"; + }, + { + name: "cumulativeInterest"; + type: { + defined: "U128Split"; + }; + }, + ]; + }; + }, + { + name: "PositionsAccounting"; + type: { + kind: "struct"; + fields: [ + { + name: "openPositions"; + type: "u64"; + }, + { + name: "sizeUsd"; + type: "u64"; + }, + { + name: "borrowSizeUsd"; + type: "u64"; + }, + { + name: "lockedAmount"; + type: "u64"; + }, + { + name: "weightedPrice"; + type: { + defined: "U128Split"; + }; + }, + { + name: "totalQuantity"; + type: { + defined: "U128Split"; + }; + }, + { + name: "cumulativeInterestUsd"; + type: "u64"; + }, + { + name: "padding"; + type: { + array: ["u8", 8]; + }; + }, + { + name: "cumulativeInterestSnapshot"; + type: { + defined: "U128Split"; + }; + }, + { + name: "exitFeeUsd"; + type: "u64"; + }, + { + name: "stableLockedAmount"; + type: { + array: [ + { + defined: "StableLockedAmountStat"; + }, + 2, + ]; + }; + }, + ]; + }; + }, + { + name: "StableLockedAmountStat"; + type: { + kind: "struct"; + fields: [ + { + name: "custody"; + type: "publicKey"; + }, + { + name: "lockedAmount"; + type: "u64"; + }, + { + name: "padding"; + type: { + array: ["u8", 8]; + }; + }, + ]; + }; + }, + { + name: "OraclePrice"; + type: { + kind: "struct"; + fields: [ + { + name: "price"; + type: "u64"; + }, + { + name: "exponent"; + type: "i32"; + }, + { + name: "confidence"; + type: "u64"; + }, + ]; + }; + }, + { + name: "TokenRatios"; + type: { + kind: "struct"; + fields: [ + { + name: "target"; + type: "u16"; + }, + { + name: "min"; + type: "u16"; + }, + { + name: "max"; + type: "u16"; + }, + { + name: "padding"; + type: { + array: ["u8", 2]; + }; + }, + ]; + }; + }, + { + name: "StakingRound"; + type: { + kind: "struct"; + fields: [ + { + name: "startTime"; + type: "i64"; + }, + { + name: "endTime"; + type: "i64"; + }, + { + name: "rate"; + type: "u64"; + }, + { + name: "totalStake"; + type: "u64"; + }, + { + name: "totalClaim"; + type: "u64"; + }, + { + name: "lmRate"; + type: "u64"; + }, + { + name: "lmTotalStake"; + type: "u64"; + }, + { + name: "lmTotalClaim"; + type: "u64"; + }, + ]; + }; + }, + { + name: "TradingStats"; + type: { + kind: "struct"; + fields: [ + { + name: "openedPositionCount"; + type: "u64"; + }, + { + name: "liquidatedPositionCount"; + type: "u64"; + }, + { + name: "openingAverageLeverage"; + type: "u64"; + }, + { + name: "openingSizeUsd"; + type: "u64"; + }, + { + name: "profitsUsd"; + type: "u64"; + }, + { + name: "lossesUsd"; + type: "u64"; + }, + { + name: "feePaidUsd"; + type: "u64"; + }, + ]; + }; + }, + { + name: "LiquidStake"; + type: { + kind: "struct"; + fields: [ + { + name: "amount"; + type: "u64"; + }, + { + name: "stakeTime"; + type: "i64"; + }, + { + name: "claimTime"; + type: "i64"; + }, + { + name: "overlapTime"; + type: "i64"; + }, + { + name: "overlapAmount"; + type: "u64"; + }, + ]; + }; + }, + { + name: "LockedStake"; + type: { + kind: "struct"; + fields: [ + { + name: "amount"; + type: "u64"; + }, + { + name: "stakeTime"; + type: "i64"; + }, + { + name: "claimTime"; + type: "i64"; + }, + { + name: "endTime"; + type: "i64"; + }, + { + name: "lockDuration"; + type: "u64"; + }, + { + name: "rewardMultiplier"; + type: "u32"; + }, + { + name: "lmRewardMultiplier"; + type: "u32"; + }, + { + name: "voteMultiplier"; + type: "u32"; + }, + { + name: "qualifiedForRewardsInResolvedRoundCount"; + type: "u32"; + }, + { + name: "amountWithRewardMultiplier"; + type: "u64"; + }, + { + name: "amountWithLmRewardMultiplier"; + type: "u64"; + }, + { + name: "resolved"; + type: "u8"; + }, + { + name: "padding2"; + type: { + array: ["u8", 7]; + }; + }, + { + name: "id"; + type: "u64"; + }, + { + name: "earlyExit"; + type: "u8"; + }, + { + name: "padding3"; + type: { + array: ["u8", 7]; + }; + }, + { + name: "earlyExitFee"; + type: "u64"; + }, + { + name: "isGenesis"; + type: "u8"; + }, + { + name: "padding4"; + type: { + array: ["u8", 7]; + }; + }, + { + name: "genesisClaimTime"; + type: "i64"; + }, + ]; + }; + }, + { + name: "LimitedString"; + type: { + kind: "struct"; + fields: [ + { + name: "value"; + type: { + array: ["u8", 31]; + }; + }, + { + name: "length"; + type: "u8"; + }, + ]; + }; + }, + { + name: "U128Split"; + type: { + kind: "struct"; + fields: [ + { + name: "high"; + type: "u64"; + }, + { + name: "low"; + type: "u64"; + }, + ]; + }; + }, + { + name: "BucketName"; + type: { + kind: "enum"; + variants: [ + { + name: "CoreContributor"; + }, + { + name: "Foundation"; + }, + { + name: "Ecosystem"; + }, + ]; + }; + }, + { + name: "ReservedSpots"; + type: { + kind: "enum"; + variants: [ + { + name: "None"; + }, + { + name: "Test"; + fields: [ + { + name: "firstReservedSpot"; + type: "publicKey"; + }, + { + name: "secondReservedSpot"; + type: "publicKey"; + }, + ]; + }, + ]; + }; + }, + { + name: "CortexInitializationStep"; + type: { + kind: "enum"; + variants: [ + { + name: "NotCreated"; + }, + { + name: "Step1"; + }, + { + name: "Step2"; + }, + { + name: "Step3"; + }, + { + name: "Initialized"; + }, + ]; + }; + }, + { + name: "PoolLiquidityState"; + type: { + kind: "enum"; + variants: [ + { + name: "GenesisLiquidity"; + }, + { + name: "Idle"; + }, + { + name: "Active"; + }, + ]; + }; + }, + { + name: "LeverageCheckType"; + type: { + kind: "enum"; + variants: [ + { + name: "Initial"; + }, + { + name: "AddCollateral"; + }, + { + name: "RemoveCollateral"; + }, + { + name: "IncreasePosition"; + }, + { + name: "Liquidate"; + }, + ]; + }; + }, + { + name: "Side"; + type: { + kind: "enum"; + variants: [ + { + name: "None"; + }, + { + name: "Long"; + }, + { + name: "Short"; + }, + ]; + }; + }, + { + name: "StakingType"; + type: { + kind: "enum"; + variants: [ + { + name: "LM"; + }, + { + name: "LP"; + }, + ]; + }; + }, + { + name: "StakingInitializationStep"; + type: { + kind: "enum"; + variants: [ + { + name: "NotCreated"; + }, + { + name: "Step1"; + }, + { + name: "Step2"; + }, + { + name: "Step3"; + }, + { + name: "Initialized"; + }, + ]; + }; + }, + ]; + events: [ + { + name: "OpenPositionEvent"; + fields: [ + { + name: "owner"; + type: "publicKey"; + index: false; + }, + { + name: "position"; + type: "publicKey"; + index: false; + }, + { + name: "custodyMint"; + type: "publicKey"; + index: false; + }, + { + name: "side"; + type: "u8"; + index: false; + }, + { + name: "sizeUsd"; + type: "u64"; + index: false; + }, + { + name: "price"; + type: "u64"; + index: false; + }, + { + name: "collateralAmountUsd"; + type: "u64"; + index: false; + }, + { + name: "leverage"; + type: "u32"; + index: false; + }, + { + name: "positionId"; + type: "u64"; + index: false; + }, + ]; + }, + { + name: "IncreasePositionEvent"; + fields: [ + { + name: "owner"; + type: "publicKey"; + index: false; + }, + { + name: "position"; + type: "publicKey"; + index: false; + }, + { + name: "custodyMint"; + type: "publicKey"; + index: false; + }, + { + name: "side"; + type: "u8"; + index: false; + }, + { + name: "sizeUsd"; + type: "u64"; + index: false; + }, + { + name: "price"; + type: "u64"; + index: false; + }, + { + name: "collateralAmountUsd"; + type: "u64"; + index: false; + }, + { + name: "leverage"; + type: "u32"; + index: false; + }, + { + name: "positionId"; + type: "u64"; + index: false; + }, + ]; + }, + { + name: "ClosePositionEvent"; + fields: [ + { + name: "owner"; + type: "publicKey"; + index: false; + }, + { + name: "position"; + type: "publicKey"; + index: false; + }, + { + name: "custodyMint"; + type: "publicKey"; + index: false; + }, + { + name: "side"; + type: "u8"; + index: false; + }, + { + name: "sizeUsd"; + type: "u64"; + index: false; + }, + { + name: "price"; + type: "u64"; + index: false; + }, + { + name: "collateralAmountUsd"; + type: "u64"; + index: false; + }, + { + name: "profitUsd"; + type: "u64"; + index: false; + }, + { + name: "lossUsd"; + type: "u64"; + index: false; + }, + { + name: "borrowFeeUsd"; + type: "u64"; + index: false; + }, + { + name: "exitFeeUsd"; + type: "u64"; + index: false; + }, + { + name: "positionId"; + type: "u64"; + index: false; + }, + ]; + }, + { + name: "AddCollateralEvent"; + fields: [ + { + name: "owner"; + type: "publicKey"; + index: false; + }, + { + name: "position"; + type: "publicKey"; + index: false; + }, + { + name: "custodyMint"; + type: "publicKey"; + index: false; + }, + { + name: "side"; + type: "u8"; + index: false; + }, + { + name: "addAmountUsd"; + type: "u64"; + index: false; + }, + { + name: "newCollateralAmountUsd"; + type: "u64"; + index: false; + }, + { + name: "leverage"; + type: "u32"; + index: false; + }, + { + name: "positionId"; + type: "u64"; + index: false; + }, + ]; + }, + { + name: "RemoveCollateralEvent"; + fields: [ + { + name: "owner"; + type: "publicKey"; + index: false; + }, + { + name: "position"; + type: "publicKey"; + index: false; + }, + { + name: "custodyMint"; + type: "publicKey"; + index: false; + }, + { + name: "side"; + type: "u8"; + index: false; + }, + { + name: "removeAmountUsd"; + type: "u64"; + index: false; + }, + { + name: "newCollateralAmountUsd"; + type: "u64"; + index: false; + }, + { + name: "leverage"; + type: "u32"; + index: false; + }, + { + name: "positionId"; + type: "u64"; + index: false; + }, + ]; + }, + { + name: "LiquidateEvent"; + fields: [ + { + name: "owner"; + type: "publicKey"; + index: false; + }, + { + name: "position"; + type: "publicKey"; + index: false; + }, + { + name: "custodyMint"; + type: "publicKey"; + index: false; + }, + { + name: "side"; + type: "u8"; + index: false; + }, + { + name: "sizeUsd"; + type: "u64"; + index: false; + }, + { + name: "price"; + type: "u64"; + index: false; + }, + { + name: "collateralAmountUsd"; + type: "u64"; + index: false; + }, + { + name: "lossUsd"; + type: "u64"; + index: false; + }, + { + name: "borrowFeeUsd"; + type: "u64"; + index: false; + }, + { + name: "exitFeeUsd"; + type: "u64"; + index: false; + }, + { + name: "positionId"; + type: "u64"; + index: false; + }, + ]; + }, + { + name: "AddLockedStakeEvent"; + fields: [ + { + name: "owner"; + type: "publicKey"; + index: false; + }, + { + name: "staking"; + type: "publicKey"; + index: false; + }, + { + name: "lockedStakeId"; + type: "u64"; + index: false; + }, + { + name: "amount"; + type: "u64"; + index: false; + }, + { + name: "lockedDays"; + type: "u32"; + index: false; + }, + ]; + }, + { + name: "UpgradeLockedStakeEvent"; + fields: [ + { + name: "owner"; + type: "publicKey"; + index: false; + }, + { + name: "staking"; + type: "publicKey"; + index: false; + }, + { + name: "lockedStakeId"; + type: "u64"; + index: false; + }, + { + name: "amount"; + type: { + option: "u64"; + }; + index: false; + }, + { + name: "lockedDays"; + type: { + option: "u32"; + }; + index: false; + }, + ]; + }, + { + name: "FinalizeLockedStakeEvent"; + fields: [ + { + name: "owner"; + type: "publicKey"; + index: false; + }, + { + name: "staking"; + type: "publicKey"; + index: false; + }, + { + name: "lockedStakeId"; + type: "u64"; + index: false; + }, + { + name: "earlyExit"; + type: "bool"; + index: false; + }, + ]; + }, + { + name: "RemoveLockedStakeEvent"; + fields: [ + { + name: "owner"; + type: "publicKey"; + index: false; + }, + { + name: "staking"; + type: "publicKey"; + index: false; + }, + { + name: "lockedStakeId"; + type: "u64"; + index: false; + }, + ]; + }, + { + name: "SetStopLossEvent"; + fields: [ + { + name: "positionId"; + type: "u64"; + index: false; + }, + { + name: "stopLossLimitPrice"; + type: "u64"; + index: false; + }, + { + name: "closePositionPrice"; + type: { + option: "u64"; + }; + index: false; + }, + { + name: "positionSide"; + type: "u8"; + index: false; + }, + ]; + }, + { + name: "SetTakeProfitEvent"; + fields: [ + { + name: "positionId"; + type: "u64"; + index: false; + }, + { + name: "takeProfitLimitPrice"; + type: "u64"; + index: false; + }, + { + name: "positionSide"; + type: "u8"; + index: false; + }, + ]; + }, + { + name: "CancelStopLossEvent"; + fields: [ + { + name: "positionId"; + type: "u64"; + index: false; + }, + { + name: "positionSide"; + type: "u8"; + index: false; + }, + ]; + }, + { + name: "CancelTakeProfitEvent"; + fields: [ + { + name: "positionId"; + type: "u64"; + index: false; + }, + { + name: "positionSide"; + type: "u8"; + index: false; + }, + ]; + }, + ]; + errors: [ + { + code: 6000; + name: "MathOverflow"; + msg: "Overflow in arithmetic operation"; + }, + { + code: 6001; + name: "UnsupportedOracle"; + msg: "Unsupported price oracle"; + }, + { + code: 6002; + name: "InvalidOracleAccount"; + msg: "Invalid oracle account"; + }, + { + code: 6003; + name: "InvalidOracleState"; + msg: "Invalid oracle state"; + }, + { + code: 6004; + name: "StaleOraclePrice"; + msg: "Stale oracle price"; + }, + { + code: 6005; + name: "InvalidOraclePrice"; + msg: "Invalid oracle price"; + }, + { + code: 6006; + name: "InvalidEnvironment"; + msg: "Instruction is not allowed in production"; + }, + { + code: 6007; + name: "InvalidPoolLiquidityState"; + msg: "Invalid pool liquidity state"; + }, + { + code: 6008; + name: "InvalidCortexState"; + msg: "Invalid cortex state"; + }, + { + code: 6009; + name: "InvalidStakingState"; + msg: "Invalid staking state"; + }, + { + code: 6010; + name: "InvalidPoolState"; + msg: "Invalid pool state"; + }, + { + code: 6011; + name: "InvalidVestState"; + msg: "Invalid vest state"; + }, + { + code: 6012; + name: "InvalidStakeState"; + msg: "Invalid stake state"; + }, + { + code: 6013; + name: "InvalidCustody"; + msg: "Invalid custody"; + }, + { + code: 6014; + name: "InvalidCustodyAccount"; + msg: "Invalid custody account"; + }, + { + code: 6015; + name: "InvalidCustodyState"; + msg: "Invalid custody state"; + }, + { + code: 6016; + name: "InvalidCollateralCustody"; + msg: "Invalid collateral custody"; + }, + { + code: 6017; + name: "InvalidPositionState"; + msg: "Invalid position state"; + }, + { + code: 6018; + name: "PositionNotInLiquidationRange"; + msg: "The position is not in liquidation range"; + }, + { + code: 6019; + name: "InvalidStakingRoundState"; + msg: "Invalid staking round state"; + }, + { + code: 6020; + name: "InvalidAdrenaConfig"; + msg: "Invalid adrena config"; + }, + { + code: 6021; + name: "InvalidPoolConfig"; + msg: "Invalid pool config"; + }, + { + code: 6022; + name: "InvalidCustodyConfig"; + msg: "Invalid custody config"; + }, + { + code: 6023; + name: "InsufficientAmountReturned"; + msg: "Insufficient token amount returned"; + }, + { + code: 6024; + name: "MaxPriceSlippage"; + msg: "Price slippage limit exceeded"; + }, + { + code: 6025; + name: "MaxLeverage"; + msg: "Position leverage limit exceeded"; + }, + { + code: 6026; + name: "MinLeverage"; + msg: "Position leverage under minimum"; + }, + { + code: 6027; + name: "CustodyAmountLimit"; + msg: "Custody amount limit exceeded"; + }, + { + code: 6028; + name: "PositionAmountLimit"; + msg: "Position amount limit exceeded"; + }, + { + code: 6029; + name: "TokenRatioOutOfRange"; + msg: "Token ratio out of range"; + }, + { + code: 6030; + name: "UnsupportedToken"; + msg: "Token is not supported"; + }, + { + code: 6031; + name: "InstructionNotAllowed"; + msg: "Instruction is not allowed at this time"; + }, + { + code: 6032; + name: "MaxUtilization"; + msg: "Token utilization limit exceeded"; + }, + { + code: 6033; + name: "MaxRegisteredResolvedStakingRoundReached"; + msg: "Max registered resolved staking round reached"; + }, + { + code: 6034; + name: "InvalidGovernanceProgram"; + msg: "Governance program do not match Cortex's one"; + }, + { + code: 6035; + name: "InvalidGovernanceRealm"; + msg: "Governance realm do not match Cortex's one"; + }, + { + code: 6036; + name: "InvalidVestingUnlockTime"; + msg: "Vesting unlock time is too close or passed"; + }, + { + code: 6037; + name: "InvalidStakingLockingTime"; + msg: "Invalid staking locking time"; + }, + { + code: 6038; + name: "UserStakeNotFound"; + msg: "The user stake account specified could not be found"; + }, + { + code: 6039; + name: "InvalidAccountData"; + msg: "Invalid account data"; + }, + { + code: 6040; + name: "UnresolvedStake"; + msg: "Stake is not resolved"; + }, + { + code: 6041; + name: "BucketMintLimit"; + msg: "Reached bucket mint limit"; + }, + { + code: 6042; + name: "GenesisAlpLimitReached"; + msg: "Genesis ALP add liquidity limit reached"; + }, + { + code: 6043; + name: "PermissionlessOracleMissingSignature"; + msg: "Permissionless oracle update must be preceded by Ed25519 signature verification instruction"; + }, + { + code: 6044; + name: "PermissionlessOracleMalformedEd25519Data"; + msg: "Ed25519 signature verification data does not match expected format"; + }, + { + code: 6045; + name: "PermissionlessOracleSignerMismatch"; + msg: "Ed25519 signature was not signed by the oracle authority"; + }, + { + code: 6046; + name: "PermissionlessOracleMessageMismatch"; + msg: "Signed message does not match instruction params"; + }, + { + code: 6047; + name: "CustodyStableLockedAmountNotFound"; + msg: "Cannot find custody stable locked amount"; + }, + { + code: 6048; + name: "CustodyNotFound"; + msg: "Cannot find custody"; + }, + { + code: 6049; + name: "InsufficientBucketReserve"; + msg: "The bucket does not contain enough token for reserving this allocation"; + }, + { + code: 6050; + name: "UserNicknameTooLong"; + msg: "User nickname exceed 24 characters"; + }, + { + code: 6051; + name: "UserNicknameTooShort"; + msg: "User nickname is less than 3 characters"; + }, + { + code: 6052; + name: "InvalidGenesisLockState"; + msg: "Invalid genesis lock state"; + }, + { + code: 6053; + name: "GenesisLockCampaignFullySubscribed"; + msg: "The campaign is fully subscribed"; + }, + { + code: 6054; + name: "PoolAumSoftCapUsdReached"; + msg: "The pool is fully subscribed"; + }, + { + code: 6055; + name: "MaxRegisteredPool"; + msg: "The number of registered pool reached max amount"; + }, + { + code: 6056; + name: "MaxRegisteredCustodies"; + msg: "The number of registered custody reached max amount"; + }, + { + code: 6057; + name: "MaxCumulativeShortPositionSizeLimit"; + msg: "The short limit for this asset has been reached"; + }, + { + code: 6058; + name: "LockedStakeArrayFull"; + msg: "The max number of LockedStaking has been reached"; + }, + { + code: 6059; + name: "IndexOutOfBounds"; + msg: "Requested index is out of bounds"; + }, + { + code: 6060; + name: "InvalidCaller"; + msg: "The instruction must be call with a specific account as caller"; + }, + { + code: 6061; + name: "InvalidBucketName"; + msg: "Invalid bucket name"; + }, + { + code: 6062; + name: "InvalidThreadId"; + msg: "(deprecated)The provided Sablier thread does not have the expected ID"; + }, + { + code: 6063; + name: "PythPriceExponentTooLargeIncurringPrecisionLoss"; + msg: "The exponent used for pyth price lead to high precision loss"; + }, + { + code: 6064; + name: "MissingClosePositionPrice"; + msg: "The close position price is mandatory"; + }, + { + code: 6065; + name: "InvalidVoteMultiplier"; + msg: "Invalid vote multiplier"; + }, + { + code: 6066; + name: "PositionTooYoung"; + msg: "A position cannot be close right after open, a slight delay is enforced"; + }, + { + code: 6067; + name: "InsufficientCollateral"; + msg: "The minimum amount of collateral posted to open a position is not met"; + }, + { + code: 6068; + name: "InvalidLockDuration"; + msg: "The provided lock duration isn't valid"; + }, + { + code: 6069; + name: "StakeNotEstablished"; + msg: "The stake isn't established yet"; + }, + { + code: 6070; + name: "PositionAlreadyClosed"; + msg: "The position is already pending cleanup and close"; + }, + ]; +}; + +export const IDL: Adrena = { + version: "1.1.5", + name: "adrena", + instructions: [ + { + name: "initOneCore", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "protocolFeeRecipient", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "rent", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "InitOneParams", + }, + }, + ], + }, + { + name: "initTwoLmTokenMetadata", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "lmTokenMintMetadata", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "mplTokenMetadataProgram", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "rent", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + ], + args: [], + }, + { + name: "initThreeGovernance", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "governanceTokenMint", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "governanceRealm", + isMut: false, + isSigner: false, + docs: [ + "#6", + "A realm represent one project within the governance program", + ], + }, + { + name: "governanceProgram", + isMut: false, + isSigner: false, + docs: ["#7"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "rent", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + ], + args: [], + }, + { + name: "initFourVesting", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "vestRegistry", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#7"], + }, + { + name: "rent", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + ], + args: [], + }, + { + name: "addVest", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "owner", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#3"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "vestRegistry", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "vest", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "governanceTokenMint", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "governanceRealm", + isMut: false, + isSigner: false, + docs: [ + "#10", + "A realm represent one project within the governance program", + ], + }, + { + name: "governanceRealmConfig", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "governanceGoverningTokenHolding", + isMut: true, + isSigner: false, + docs: [ + "#12", + "Token account owned by governance program holding user's locked tokens", + ], + }, + { + name: "governanceGoverningTokenOwnerRecord", + isMut: true, + isSigner: false, + docs: ["#13", "Account owned by governance storing user information"], + }, + { + name: "governanceProgram", + isMut: false, + isSigner: false, + docs: ["#14"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#15"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#16"], + }, + { + name: "rent", + isMut: false, + isSigner: false, + docs: ["#17"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "AddVestParams", + }, + }, + ], + returns: "u8", + }, + { + name: "claimVest", + accounts: [ + { + name: "caller", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "owner", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "payer", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "receivingAccount", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "vestRegistry", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "vest", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "governanceTokenMint", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "governanceRealm", + isMut: false, + isSigner: false, + docs: [ + "#11", + "A realm represent one project within the governance program", + ], + }, + { + name: "governanceRealmConfig", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + { + name: "governanceGoverningTokenHolding", + isMut: true, + isSigner: false, + docs: [ + "#13", + "Token account owned by governance program holding user's locked tokens", + ], + }, + { + name: "governanceGoverningTokenOwnerRecord", + isMut: true, + isSigner: false, + docs: ["#14", "Account owned by governance storing user information"], + }, + { + name: "governanceProgram", + isMut: false, + isSigner: false, + docs: ["#15"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#16"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#17"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#18"], + }, + { + name: "rent", + isMut: false, + isSigner: false, + docs: ["#19"], + }, + ], + args: [], + returns: "u64", + }, + { + name: "addPoolPartOne", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "lpTokenMint", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "lpTokenMintMetadata", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "mplTokenMetadataProgram", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "rent", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "AddPoolPartOneParams", + }, + }, + ], + returns: "u8", + }, + { + name: "addPoolPartTwo", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "lpTokenMint", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "genesisLock", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "rent", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "AddPoolPartTwoParams", + }, + }, + ], + returns: "u8", + }, + { + name: "removePool", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + ], + args: [], + returns: "u8", + }, + { + name: "addCustody", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "custodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "custodyOracle", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "custodyTokenMint", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + { + name: "rent", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "AddCustodyParams", + }, + }, + ], + returns: "u8", + }, + { + name: "removeCustody", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "custodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "RemoveCustodyParams", + }, + }, + ], + returns: "u8", + }, + { + name: "setCustodyConfig", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SetCustodyConfigParams", + }, + }, + ], + returns: "u8", + }, + { + name: "setCustodyAllowSwap", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SetCustodyAllowSwapParams", + }, + }, + ], + }, + { + name: "setCustodyAllowTrade", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SetCustodyAllowTradeParams", + }, + }, + ], + }, + { + name: "setPoolAllowSwap", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SetPoolAllowSwapParams", + }, + }, + ], + }, + { + name: "setPoolAllowTrade", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SetPoolAllowTradeParams", + }, + }, + ], + }, + { + name: "setPoolAumSoftCapUsd", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SetPoolAumSoftCapUsdParams", + }, + }, + ], + }, + { + name: "swap", + accounts: [ + { + name: "caller", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "owner", + isMut: false, + isSigner: true, + docs: ["#2"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "receivingAccount", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "lmStaking", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "lpStaking", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "stakingRewardTokenCustody", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "stakingRewardTokenCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "stakingRewardTokenCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "receivingCustody", + isMut: true, + isSigner: false, + docs: ["#13"], + }, + { + name: "receivingCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#14"], + }, + { + name: "receivingCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#15"], + }, + { + name: "dispensingCustody", + isMut: true, + isSigner: false, + docs: ["#16"], + }, + { + name: "dispensingCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#17"], + }, + { + name: "dispensingCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#18"], + }, + { + name: "lmStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#19"], + }, + { + name: "lpStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#20"], + }, + { + name: "lpTokenMint", + isMut: true, + isSigner: false, + docs: ["#21"], + }, + { + name: "protocolFeeRecipient", + isMut: true, + isSigner: false, + docs: ["#22"], + }, + { + name: "userProfile", + isMut: true, + isSigner: false, + isOptional: true, + docs: ["#23"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#24"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#25"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SwapParams", + }, + }, + ], + }, + { + name: "addLiquidity", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "lpTokenAccount", + isMut: true, + isSigner: false, + docs: [ + "#3 Front end will target the owner account, but not limited to", + ], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "lmStaking", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "lpStaking", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "stakingRewardTokenCustody", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "stakingRewardTokenCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "stakingRewardTokenCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "custodyOracle", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + { + name: "custodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#14"], + }, + { + name: "lmStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#15"], + }, + { + name: "lpStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#16"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#17"], + }, + { + name: "lpTokenMint", + isMut: true, + isSigner: false, + docs: ["#18"], + }, + { + name: "protocolFeeRecipient", + isMut: true, + isSigner: false, + docs: ["#19"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#20"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#21"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "AddLiquidityParams", + }, + }, + ], + }, + { + name: "addGenesisLiquidity", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "lpUserStaking", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "lpStaking", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "lpStakingStakedTokenVault", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "custodyOracle", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "custodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "lpTokenMint", + isMut: true, + isSigner: false, + docs: ["#13"], + }, + { + name: "governanceTokenMint", + isMut: true, + isSigner: false, + docs: ["#14"], + }, + { + name: "governanceRealm", + isMut: false, + isSigner: false, + docs: [ + "#15", + "A realm represent one project within the governance program", + ], + }, + { + name: "governanceRealmConfig", + isMut: false, + isSigner: false, + docs: ["#16"], + }, + { + name: "governanceGoverningTokenHolding", + isMut: true, + isSigner: false, + docs: [ + "#17", + "Token account owned by governance program holding user's locked tokens", + ], + }, + { + name: "governanceGoverningTokenOwnerRecord", + isMut: true, + isSigner: false, + docs: ["#18", "Account owned by governance storing user information"], + }, + { + name: "governanceProgram", + isMut: false, + isSigner: false, + docs: ["#19"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#20"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#21"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#22"], + }, + { + name: "genesisLock", + isMut: true, + isSigner: false, + docs: ["#23"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "AddGenesisLiquidityParams", + }, + }, + ], + }, + { + name: "genesisOtcOut", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "daoReceivingAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "custodyUsdc", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "custodyUsdcTokenAccount", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "genesisLock", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + ], + args: [], + }, + { + name: "genesisOtcIn", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "fundingAccountOne", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "fundingAccountTwo", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "fundingAccountThree", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#7"], + }, + { + name: "custodyOne", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "custodyOneTokenAccount", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "custodyTwo", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "custodyTwoTokenAccount", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "custodyThree", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "custodyThreeTokenAccount", + isMut: true, + isSigner: false, + docs: ["#13"], + }, + { + name: "genesisLock", + isMut: true, + isSigner: false, + docs: ["#14"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#15"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#16"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "GenesisOtcInParams", + }, + }, + ], + }, + { + name: "removeLiquidity", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "receivingAccount", + isMut: true, + isSigner: false, + docs: [ + "#2 Front end will target the owner account, but not limited to", + ], + }, + { + name: "lpTokenAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "lmStaking", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "lpStaking", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "stakingRewardTokenCustody", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "stakingRewardTokenCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "stakingRewardTokenCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "custodyOracle", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + { + name: "custodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#14"], + }, + { + name: "lmStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#15"], + }, + { + name: "lpStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#16"], + }, + { + name: "lpTokenMint", + isMut: true, + isSigner: false, + docs: ["#17"], + }, + { + name: "protocolFeeRecipient", + isMut: true, + isSigner: false, + docs: ["#18"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#19"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#20"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "RemoveLiquidityParams", + }, + }, + ], + }, + { + name: "openPositionLong", + accounts: [ + { + name: "owner", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "custodyOracle", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "custodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "userProfile", + isMut: true, + isSigner: false, + isOptional: true, + docs: ["#12"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#14"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#15"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "OpenPositionLongParams", + }, + }, + ], + }, + { + name: "openPositionShort", + accounts: [ + { + name: "owner", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "collateralCustody", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "collateralCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "collateralCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "userProfile", + isMut: true, + isSigner: false, + isOptional: true, + docs: ["#13"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#14"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#15"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#16"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "OpenPositionShortParams", + }, + }, + ], + }, + { + name: "openOrIncreasePositionWithSwapLong", + accounts: [ + { + name: "owner", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "collateralAccount", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "receivingCustody", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "receivingCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "receivingCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "principalCustody", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "principalCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "principalCustodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "principalCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#13"], + }, + { + name: "lmStaking", + isMut: true, + isSigner: false, + docs: ["#14"], + }, + { + name: "lpStaking", + isMut: true, + isSigner: false, + docs: ["#15"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#16"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#17"], + }, + { + name: "stakingRewardTokenCustody", + isMut: true, + isSigner: false, + docs: ["#18"], + }, + { + name: "stakingRewardTokenCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#19"], + }, + { + name: "stakingRewardTokenCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#20"], + }, + { + name: "lmStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#21"], + }, + { + name: "lpStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#22"], + }, + { + name: "lpTokenMint", + isMut: true, + isSigner: false, + docs: ["#23"], + }, + { + name: "protocolFeeRecipient", + isMut: true, + isSigner: false, + docs: ["#24"], + }, + { + name: "userProfile", + isMut: true, + isSigner: false, + isOptional: true, + docs: ["#25"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#26"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#27"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#28"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "OpenPositionWithSwapParams", + }, + }, + ], + }, + { + name: "openOrIncreasePositionWithSwapShort", + accounts: [ + { + name: "owner", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "collateralAccount", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "receivingCustody", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "receivingCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "receivingCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "collateralCustody", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "collateralCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "collateralCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "principalCustody", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "principalCustodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + { + name: "principalCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#13"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#14"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#15"], + }, + { + name: "lmStaking", + isMut: true, + isSigner: false, + docs: ["#16"], + }, + { + name: "lpStaking", + isMut: true, + isSigner: false, + docs: ["#17"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#18"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#19"], + }, + { + name: "stakingRewardTokenCustody", + isMut: true, + isSigner: false, + docs: ["#20"], + }, + { + name: "stakingRewardTokenCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#21"], + }, + { + name: "stakingRewardTokenCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#22"], + }, + { + name: "lmStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#23"], + }, + { + name: "lpStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#24"], + }, + { + name: "lpTokenMint", + isMut: true, + isSigner: false, + docs: ["#25"], + }, + { + name: "protocolFeeRecipient", + isMut: true, + isSigner: false, + docs: ["#26"], + }, + { + name: "userProfile", + isMut: true, + isSigner: false, + isOptional: true, + docs: ["#27"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#28"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#29"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#30"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "OpenPositionWithSwapParams", + }, + }, + ], + }, + { + name: "addCollateralLong", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "custodyOracle", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "custodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "AddCollateralLongParams", + }, + }, + ], + }, + { + name: "addCollateralShort", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "collateralCustody", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "collateralCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "collateralCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "AddCollateralShortParams", + }, + }, + ], + }, + { + name: "removeCollateralLong", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "receivingAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "custodyOracle", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "custodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "RemoveCollateralLongParams", + }, + }, + ], + }, + { + name: "removeCollateralShort", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "receivingAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "collateralCustody", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "collateralCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "collateralCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "RemoveCollateralShortParams", + }, + }, + ], + }, + { + name: "closePositionLong", + accounts: [ + { + name: "caller", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "owner", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "receivingAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "lmStaking", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "lpStaking", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "stakingRewardTokenCustody", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "stakingRewardTokenCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "stakingRewardTokenCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#13"], + }, + { + name: "custodyOracle", + isMut: false, + isSigner: false, + docs: ["#14"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#15"], + }, + { + name: "custodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#16"], + }, + { + name: "lmStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#17"], + }, + { + name: "lpStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#18"], + }, + { + name: "lpTokenMint", + isMut: true, + isSigner: false, + docs: ["#19"], + }, + { + name: "protocolFeeRecipient", + isMut: true, + isSigner: false, + docs: ["#20"], + }, + { + name: "userProfile", + isMut: true, + isSigner: false, + isOptional: true, + docs: ["#21"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#22"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#23"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "ClosePositionLongParams", + }, + }, + ], + }, + { + name: "closePositionShort", + accounts: [ + { + name: "caller", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "owner", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "receivingAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "lmStaking", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "lpStaking", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "stakingRewardTokenCustody", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "stakingRewardTokenCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "stakingRewardTokenCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#13"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#14"], + }, + { + name: "collateralCustody", + isMut: true, + isSigner: false, + docs: ["#15"], + }, + { + name: "collateralCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#16"], + }, + { + name: "collateralCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#17"], + }, + { + name: "lmStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#18"], + }, + { + name: "lpStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#19"], + }, + { + name: "lpTokenMint", + isMut: true, + isSigner: false, + docs: ["#20"], + }, + { + name: "protocolFeeRecipient", + isMut: true, + isSigner: false, + docs: ["#21"], + }, + { + name: "userProfile", + isMut: true, + isSigner: false, + isOptional: true, + docs: ["#22"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#23"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#24"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "ClosePositionShortParams", + }, + }, + ], + }, + { + name: "liquidateLong", + accounts: [ + { + name: "signer", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "receivingAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "lmStaking", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "lpStaking", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "stakingRewardTokenCustody", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "stakingRewardTokenCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "stakingRewardTokenCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "custodyOracle", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#14"], + }, + { + name: "custodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#15"], + }, + { + name: "lmStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#16"], + }, + { + name: "lpStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#17"], + }, + { + name: "lpTokenMint", + isMut: true, + isSigner: false, + docs: ["#18"], + }, + { + name: "protocolFeeRecipient", + isMut: true, + isSigner: false, + docs: ["#19"], + }, + { + name: "userProfile", + isMut: true, + isSigner: false, + isOptional: true, + docs: ["#20"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#21"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#22"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "LiquidateLongParams", + }, + }, + ], + }, + { + name: "liquidateShort", + accounts: [ + { + name: "signer", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "receivingAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "lmStaking", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "lpStaking", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "stakingRewardTokenCustody", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "stakingRewardTokenCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "stakingRewardTokenCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + { + name: "collateralCustody", + isMut: true, + isSigner: false, + docs: ["#14"], + }, + { + name: "collateralCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#15"], + }, + { + name: "collateralCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#16"], + }, + { + name: "lmStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#17"], + }, + { + name: "lpStakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#18"], + }, + { + name: "lpTokenMint", + isMut: true, + isSigner: false, + docs: ["#19"], + }, + { + name: "protocolFeeRecipient", + isMut: true, + isSigner: false, + docs: ["#20"], + }, + { + name: "userProfile", + isMut: true, + isSigner: false, + isOptional: true, + docs: ["#21"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#22"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#23"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "LiquidateShortParams", + }, + }, + ], + }, + { + name: "updatePoolAum", + accounts: [ + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + ], + args: [], + returns: "u128", + }, + { + name: "getAddLiquidityAmountAndFee", + accounts: [ + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#1"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "custody", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "custodyOracle", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "lpTokenMint", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "GetAddLiquidityAmountAndFeeParams", + }, + }, + ], + returns: { + defined: "AmountAndFee", + }, + }, + { + name: "getRemoveLiquidityAmountAndFee", + accounts: [ + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#1"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "custody", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "custodyOracle", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "lpTokenMint", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "GetRemoveLiquidityAmountAndFeeParams", + }, + }, + ], + returns: { + defined: "AmountAndFee", + }, + }, + { + name: "getEntryPriceAndFee", + accounts: [ + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#1"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "custody", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "collateralCustody", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + { + name: "collateralCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "GetEntryPriceAndFeeParams", + }, + }, + ], + returns: { + defined: "NewPositionPricesAndFee", + }, + }, + { + name: "disableTokensFreezeCapabilities", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + { + name: "lpTokenMint", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#7"], + }, + ], + args: [], + }, + { + name: "genesisStakePatch", + accounts: [ + { + name: "caller", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "owner", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "rewardTokenAccount", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "lmTokenAccount", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "stakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "stakingLmRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "userStaking", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + { + name: "genesisLock", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#14"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#15"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#16"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#17"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#18"], + }, + ], + args: [], + }, + { + name: "getOpenPositionWithSwapAmountAndFees", + accounts: [ + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#1"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "receivingCustody", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "receivingCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "collateralCustody", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + { + name: "collateralCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "principalCustody", + isMut: false, + isSigner: false, + docs: ["#7"], + }, + { + name: "principalCustodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "GetOpenPositionWithSwapAmountAndFeesParams", + }, + }, + ], + returns: { + defined: "OpenPositionWithSwapAmountAndFees", + }, + }, + { + name: "getExitPriceAndFee", + accounts: [ + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#1"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "position", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "custody", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + { + name: "collateralCustody", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "collateralCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#7"], + }, + ], + args: [], + returns: { + defined: "ExitPriceAndFee", + }, + }, + { + name: "getPnl", + accounts: [ + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#1"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "position", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "custody", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + { + name: "collateralCustody", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "collateralCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#7"], + }, + ], + args: [], + returns: { + defined: "ProfitAndLoss", + }, + }, + { + name: "getLiquidationPrice", + accounts: [ + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#1"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "position", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "custody", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "collateralCustody", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + { + name: "collateralCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "GetLiquidationPriceParams", + }, + }, + ], + returns: "u64", + }, + { + name: "getLiquidationState", + accounts: [ + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#1"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "position", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "custody", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + { + name: "collateralCustody", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "collateralCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#7"], + }, + ], + args: [], + returns: "u8", + }, + { + name: "getOraclePrice", + accounts: [ + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#1"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "custody", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "custodyOracle", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + ], + args: [], + returns: "u64", + }, + { + name: "getSwapAmountAndFees", + accounts: [ + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#1"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "receivingCustody", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "receivingCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "dispensingCustody", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + { + name: "dispensingCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "GetSwapAmountAndFeesParams", + }, + }, + ], + returns: { + defined: "SwapAmountAndFees", + }, + }, + { + name: "getAssetsUnderManagement", + accounts: [ + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#1"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + ], + args: [], + returns: "u128", + }, + { + name: "initUserStaking", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "rewardTokenAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "lmTokenAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "stakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "stakingLmRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "userStaking", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#7"], + }, + { + name: "staking", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "genesisLock", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "lmTokenMint", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#14"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#15"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#16"], + }, + ], + args: [], + }, + { + name: "initUserProfile", + accounts: [ + { + name: "user", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "userProfile", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "InitUserProfileParams", + }, + }, + ], + }, + { + name: "editUserProfile", + accounts: [ + { + name: "user", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "userProfile", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "EditUserProfileParams", + }, + }, + ], + }, + { + name: "deleteUserProfile", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "user", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#3"], + }, + { + name: "userProfile", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + ], + args: [], + }, + { + name: "initStakingOne", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "stakingStakedTokenVault", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "stakingStakedTokenMint", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + { + name: "rent", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "InitStakingOneParams", + }, + }, + ], + returns: "u8", + }, + { + name: "initStakingTwo", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "stakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + ], + args: [], + returns: "u8", + }, + { + name: "initStakingThree", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "stakingLmRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + ], + args: [], + returns: "u8", + }, + { + name: "initStakingFour", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "stakingStakedTokenVault", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "stakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "stakingLmRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "stakingStakedTokenMint", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#14"], + }, + ], + args: [], + returns: "u8", + }, + { + name: "addLiquidStake", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "rewardTokenAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "lmTokenAccount", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "stakingStakedTokenVault", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "stakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "stakingLmRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "userStaking", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#13"], + }, + { + name: "genesisLock", + isMut: true, + isSigner: false, + docs: ["#14"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#15"], + }, + { + name: "governanceTokenMint", + isMut: true, + isSigner: false, + docs: ["#16"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#17"], + }, + { + name: "governanceRealm", + isMut: false, + isSigner: false, + docs: [ + "#18", + "A realm represent one project within the governance program", + ], + }, + { + name: "governanceRealmConfig", + isMut: false, + isSigner: false, + docs: ["#19"], + }, + { + name: "governanceGoverningTokenHolding", + isMut: true, + isSigner: false, + docs: [ + "#20", + "Token account owned by governance program holding user's locked tokens", + ], + }, + { + name: "governanceGoverningTokenOwnerRecord", + isMut: true, + isSigner: false, + docs: ["#21", "Account owned by governance storing user information"], + }, + { + name: "governanceProgram", + isMut: false, + isSigner: false, + docs: ["#22"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#23"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#24"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#25"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "AddLiquidStakeParams", + }, + }, + ], + }, + { + name: "addLockedStake", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "rewardTokenAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "stakingStakedTokenVault", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "stakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "userStaking", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "governanceTokenMint", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + { + name: "governanceRealm", + isMut: false, + isSigner: false, + docs: [ + "#13", + "A realm represent one project within the governance program", + ], + }, + { + name: "governanceRealmConfig", + isMut: false, + isSigner: false, + docs: ["#14"], + }, + { + name: "governanceGoverningTokenHolding", + isMut: true, + isSigner: false, + docs: [ + "#15", + "Token account owned by governance program holding user's locked tokens", + ], + }, + { + name: "governanceGoverningTokenOwnerRecord", + isMut: true, + isSigner: false, + docs: ["#16", "Account owned by governance storing user information"], + }, + { + name: "governanceProgram", + isMut: false, + isSigner: false, + docs: ["#17"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#18"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#19"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#20"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "AddLockedStakeParams", + }, + }, + ], + }, + { + name: "upgradeLockedStake", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "rewardTokenAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "lmTokenAccount", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "stakingStakedTokenVault", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "stakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#7"], + }, + { + name: "userStaking", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "governanceTokenMint", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "genesisLock", + isMut: true, + isSigner: false, + docs: ["#13"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#14"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#15"], + }, + { + name: "governanceRealm", + isMut: false, + isSigner: false, + docs: [ + "#16", + "A realm represent one project within the governance program", + ], + }, + { + name: "governanceRealmConfig", + isMut: false, + isSigner: false, + docs: ["#17"], + }, + { + name: "governanceGoverningTokenHolding", + isMut: true, + isSigner: false, + docs: [ + "#18", + "Token account owned by governance program holding user's locked tokens", + ], + }, + { + name: "governanceGoverningTokenOwnerRecord", + isMut: true, + isSigner: false, + docs: ["#19", "Account owned by governance storing user information"], + }, + { + name: "stakingLmRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#20"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#21"], + }, + { + name: "governanceProgram", + isMut: false, + isSigner: false, + docs: ["#22"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#23"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#24"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "UpgradeLockedStakeParams", + }, + }, + ], + }, + { + name: "removeLiquidStake", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "stakedTokenAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "lmTokenAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "rewardTokenAccount", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "stakingStakedTokenVault", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "stakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "stakingLmRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "userStaking", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "genesisLock", + isMut: true, + isSigner: false, + docs: ["#13"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#14"], + }, + { + name: "governanceTokenMint", + isMut: true, + isSigner: false, + docs: ["#15"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#16"], + }, + { + name: "governanceRealm", + isMut: false, + isSigner: false, + docs: [ + "#17", + "A realm represent one project within the governance program", + ], + }, + { + name: "governanceRealmConfig", + isMut: false, + isSigner: false, + docs: ["#18"], + }, + { + name: "governanceGoverningTokenHolding", + isMut: true, + isSigner: false, + docs: [ + "#19", + "Token account owned by governance program holding user's locked tokens", + ], + }, + { + name: "governanceGoverningTokenOwnerRecord", + isMut: true, + isSigner: false, + docs: ["#20", "Account owned by governance storing user information"], + }, + { + name: "governanceProgram", + isMut: false, + isSigner: false, + docs: ["#21"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#22"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#23"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#24"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "RemoveLiquidStakeParams", + }, + }, + ], + }, + { + name: "removeLockedStake", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "lmTokenAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "stakedTokenAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "rewardTokenAccount", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "stakingStakedTokenVault", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "stakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "stakingLmRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "userStaking", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "genesisLock", + isMut: true, + isSigner: false, + docs: ["#13"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#14"], + }, + { + name: "stakedTokenMint", + isMut: true, + isSigner: false, + docs: ["#15"], + }, + { + name: "governanceTokenMint", + isMut: true, + isSigner: false, + docs: ["#16"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#17"], + }, + { + name: "governanceRealm", + isMut: false, + isSigner: false, + docs: [ + "#18", + "A realm represent one project within the governance program", + ], + }, + { + name: "governanceRealmConfig", + isMut: false, + isSigner: false, + docs: ["#19"], + }, + { + name: "governanceGoverningTokenHolding", + isMut: true, + isSigner: false, + docs: [ + "#20", + "Token account owned by governance program holding user's locked tokens", + ], + }, + { + name: "governanceGoverningTokenOwnerRecord", + isMut: true, + isSigner: false, + docs: ["#21", "Account owned by governance storing user information"], + }, + { + name: "governanceProgram", + isMut: false, + isSigner: false, + docs: ["#22"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#23"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#24"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#25"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "RemoveLockedStakeParams", + }, + }, + ], + }, + { + name: "claimStakes", + accounts: [ + { + name: "caller", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "owner", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "rewardTokenAccount", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "lmTokenAccount", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "stakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "stakingLmRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#8"], + }, + { + name: "userStaking", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#11"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "genesisLock", + isMut: true, + isSigner: false, + docs: ["#13"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#14"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#15"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#16"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#17"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#18"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "ClaimStakesParams", + }, + }, + ], + }, + { + name: "finalizeGenesisLockCampaign", + accounts: [ + { + name: "caller", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "genesisLock", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#7"], + }, + ], + args: [], + }, + { + name: "setPoolLiquidityState", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SetPoolLiquidityStateParams", + }, + }, + ], + }, + { + name: "finalizeLockedStake", + accounts: [ + { + name: "caller", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "owner", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "userStaking", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "governanceTokenMint", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "governanceRealm", + isMut: false, + isSigner: false, + docs: [ + "#9", + "A realm represent one project within the governance program", + ], + }, + { + name: "governanceRealmConfig", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "governanceGoverningTokenHolding", + isMut: true, + isSigner: false, + docs: [ + "#11", + "Token account owned by governance program holding user's locked tokens", + ], + }, + { + name: "governanceGoverningTokenOwnerRecord", + isMut: true, + isSigner: false, + docs: ["#12", "Account owned by governance storing user information"], + }, + { + name: "governanceProgram", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#14"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#15"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#16"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "FinalizeLockedStakeParams", + }, + }, + ], + }, + { + name: "resolveStakingRound", + accounts: [ + { + name: "caller", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "stakingStakedTokenVault", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "stakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "stakingLmRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + ], + args: [], + }, + { + name: "getLpTokenPrice", + accounts: [ + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#1"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "lpTokenMint", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + ], + args: [], + returns: "u64", + }, + { + name: "getPoolInfoSnapshot", + accounts: [ + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#1"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "lpTokenMint", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + ], + args: [], + returns: { + defined: "PoolInfoSnapshot", + }, + }, + { + name: "mintLmTokensFromBucket", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "receivingAccount", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "MintLmTokensFromBucketParams", + }, + }, + ], + returns: "u8", + }, + { + name: "increasePositionLong", + accounts: [ + { + name: "owner", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "custodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "custodyOracle", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#14"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "IncreasePositionLongParams", + }, + }, + ], + }, + { + name: "patchCustodyLockedAmount", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "usdcCustody", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "bonkCustody", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "wbtcCustody", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "jitoCustody", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + ], + args: [], + }, + { + name: "increasePositionShort", + accounts: [ + { + name: "owner", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#6"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "custodyTradeOracle", + isMut: false, + isSigner: false, + docs: ["#9"], + }, + { + name: "collateralCustody", + isMut: true, + isSigner: false, + docs: ["#10"], + }, + { + name: "collateralCustodyOracle", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "collateralCustodyTokenAccount", + isMut: true, + isSigner: false, + docs: ["#12"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#14"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#15"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "IncreasePositionShortParams", + }, + }, + ], + }, + { + name: "setStakingLmEmissionPotentiometers", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SetStakingLmEmissionPotentiometersParams", + }, + }, + ], + }, + { + name: "setAdmin", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SetAdminParams", + }, + }, + ], + }, + { + name: "setProtocolFeeRecipient", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "protocolFeeRecipient", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + ], + args: [], + }, + { + name: "setCustodyMaxCumulativeShortPositionSizeUsd", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SetCustodyMaxCumulativeShortPositionSizeUsdParams", + }, + }, + ], + }, + { + name: "setTakeProfitLong", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SetTakeProfitLongParams", + }, + }, + ], + }, + { + name: "setStopLossLong", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "custody", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SetStopLossLongParams", + }, + }, + ], + }, + { + name: "setTakeProfitShort", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "custody", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SetTakeProfitShortParams", + }, + }, + ], + }, + { + name: "setStopLossShort", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "custody", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + ], + args: [ + { + name: "params", + type: { + defined: "SetStopLossShortParams", + }, + }, + ], + }, + { + name: "cancelTakeProfit", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "custody", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + ], + args: [], + }, + { + name: "cancelStopLoss", + accounts: [ + { + name: "owner", + isMut: true, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: false, + isSigner: false, + docs: ["#3"], + }, + { + name: "position", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "custody", + isMut: false, + isSigner: false, + docs: ["#5"], + }, + ], + args: [], + }, + { + name: "patchStakingRound", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "payer", + isMut: true, + isSigner: true, + docs: ["#2"], + }, + { + name: "fundingAccount", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "stakingRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#4"], + }, + { + name: "stakingLmRewardTokenVault", + isMut: true, + isSigner: false, + docs: ["#5"], + }, + { + name: "transferAuthority", + isMut: false, + isSigner: false, + docs: ["#6"], + }, + { + name: "staking", + isMut: true, + isSigner: false, + docs: ["#7"], + }, + { + name: "cortex", + isMut: true, + isSigner: false, + docs: ["#8"], + }, + { + name: "lmTokenMint", + isMut: true, + isSigner: false, + docs: ["#9"], + }, + { + name: "feeRedistributionMint", + isMut: false, + isSigner: false, + docs: ["#10"], + }, + { + name: "adrenaProgram", + isMut: false, + isSigner: false, + docs: ["#11"], + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + docs: ["#12"], + }, + { + name: "tokenProgram", + isMut: false, + isSigner: false, + docs: ["#13"], + }, + ], + args: [], + }, + { + name: "setPoolWhitelistedSwapper", + accounts: [ + { + name: "admin", + isMut: false, + isSigner: true, + docs: ["#1"], + }, + { + name: "cortex", + isMut: false, + isSigner: false, + docs: ["#2"], + }, + { + name: "pool", + isMut: true, + isSigner: false, + docs: ["#3"], + }, + { + name: "whitelistedSwapper", + isMut: false, + isSigner: false, + docs: ["#4"], + }, + ], + args: [], + }, + ], + accounts: [ + { + name: "cortex", + type: { + kind: "struct", + fields: [ + { + name: "bump", + type: "u8", + }, + { + name: "transferAuthorityBump", + type: "u8", + }, + { + name: "lmTokenBump", + type: "u8", + }, + { + name: "governanceTokenBump", + type: "u8", + }, + { + name: "initialized", + type: "u8", + }, + { + name: "feeConversionDecimals", + type: "u8", + }, + { + name: "padding", + type: { + array: ["u8", 2], + }, + }, + { + name: "lmTokenMint", + type: "publicKey", + }, + { + name: "inceptionTime", + type: "i64", + }, + { + name: "admin", + type: "publicKey", + }, + { + name: "feeRedistributionMint", + type: "publicKey", + }, + { + name: "protocolFeeRecipient", + type: "publicKey", + }, + { + name: "pools", + type: { + array: ["publicKey", 4], + }, + }, + { + name: "userProfilesCount", + type: "u64", + }, + { + name: "governanceProgram", + type: "publicKey", + }, + { + name: "governanceRealm", + type: "publicKey", + }, + { + name: "coreContributorBucketAllocation", + type: "u64", + }, + { + name: "foundationBucketAllocation", + type: "u64", + }, + { + name: "ecosystemBucketAllocation", + type: "u64", + }, + { + name: "coreContributorBucketVestedAmount", + type: "u64", + }, + { + name: "coreContributorBucketMintedAmount", + type: "u64", + }, + { + name: "foundationBucketVestedAmount", + type: "u64", + }, + { + name: "foundationBucketMintedAmount", + type: "u64", + }, + { + name: "ecosystemBucketVestedAmount", + type: "u64", + }, + { + name: "ecosystemBucketMintedAmount", + type: "u64", + }, + { + name: "genesisLiquidityAlpAmount", + type: "u64", + }, + { + name: "uniquePositionIdCounter", + type: "u64", + }, + ], + }, + }, + { + name: "custody", + type: { + kind: "struct", + fields: [ + { + name: "bump", + type: "u8", + }, + { + name: "tokenAccountBump", + type: "u8", + }, + { + name: "allowTrade", + type: "u8", + }, + { + name: "allowSwap", + type: "u8", + }, + { + name: "decimals", + type: "u8", + }, + { + name: "isStable", + type: "u8", + }, + { + name: "padding", + type: { + array: ["u8", 2], + }, + }, + { + name: "pool", + type: "publicKey", + }, + { + name: "mint", + type: "publicKey", + }, + { + name: "tokenAccount", + type: "publicKey", + }, + { + name: "oracle", + type: "publicKey", + }, + { + name: "tradeOracle", + type: "publicKey", + }, + { + name: "pricing", + type: { + defined: "PricingParams", + }, + }, + { + name: "fees", + type: { + defined: "Fees", + }, + }, + { + name: "borrowRate", + type: { + defined: "BorrowRateParams", + }, + }, + { + name: "collectedFees", + type: { + defined: "FeesStats", + }, + }, + { + name: "volumeStats", + type: { + defined: "VolumeStats", + }, + }, + { + name: "tradeStats", + type: { + defined: "TradeStats", + }, + }, + { + name: "assets", + type: { + defined: "Assets", + }, + }, + { + name: "longPositions", + type: { + defined: "PositionsAccounting", + }, + }, + { + name: "shortPositions", + type: { + defined: "PositionsAccounting", + }, + }, + { + name: "borrowRateState", + type: { + defined: "BorrowRateState", + }, + }, + ], + }, + }, + { + name: "genesisLock", + type: { + kind: "struct", + fields: [ + { + name: "bump", + type: "u8", + }, + { + name: "hasTransitionedToFullyPublic", + type: "u8", + }, + { + name: "hasCompletedOtcIn", + type: "u8", + }, + { + name: "hasCompletedOtcOut", + type: "u8", + }, + { + name: "padding", + type: { + array: ["u8", 4], + }, + }, + { + name: "campaignDuration", + type: "i64", + }, + { + name: "reservedGrantDuration", + type: "i64", + }, + { + name: "campaignStartDate", + type: "i64", + }, + { + name: "publicAmount", + type: "u64", + }, + { + name: "reservedAmount", + type: "u64", + }, + { + name: "publicAmountClaimed", + type: "u64", + }, + { + name: "reservedAmountClaimed", + type: "u64", + }, + { + name: "reservedGrantOwners", + type: { + array: ["publicKey", 43], + }, + }, + { + name: "reservedGrantAmounts", + type: { + array: ["u64", 43], + }, + }, + { + name: "paddingUnsafe", + type: { + array: ["u8", 8], + }, + }, + ], + }, + }, + { + name: "pool", + type: { + kind: "struct", + fields: [ + { + name: "bump", + type: "u8", + }, + { + name: "lpTokenBump", + type: "u8", + }, + { + name: "nbStableCustody", + type: "u8", + }, + { + name: "initialized", + type: "u8", + }, + { + name: "allowTrade", + type: "u8", + }, + { + name: "allowSwap", + type: "u8", + }, + { + name: "liquidityState", + type: "u8", + }, + { + name: "registeredCustodyCount", + type: "u8", + }, + { + name: "name", + type: { + defined: "LimitedString", + }, + }, + { + name: "custodies", + type: { + array: ["publicKey", 8], + }, + }, + { + name: "padding1", + type: { + array: ["u8", 32], + }, + }, + { + name: "whitelistedSwapper", + type: "publicKey", + }, + { + name: "ratios", + type: { + array: [ + { + defined: "TokenRatios", + }, + 8, + ], + }, + }, + { + name: "padding2", + type: { + array: ["u8", 16], + }, + }, + { + name: "aumUsd", + type: { + defined: "U128Split", + }, + }, + { + name: "inceptionTime", + type: "i64", + }, + { + name: "aumSoftCapUsd", + type: "u64", + }, + ], + }, + }, + { + name: "position", + type: { + kind: "struct", + fields: [ + { + name: "bump", + type: "u8", + }, + { + name: "side", + type: "u8", + }, + { + name: "takeProfitIsSet", + type: "u8", + }, + { + name: "stopLossIsSet", + type: "u8", + }, + { + name: "paddingUnsafe", + type: { + array: ["u8", 1], + }, + }, + { + name: "padding", + type: { + array: ["u8", 3], + }, + }, + { + name: "owner", + type: "publicKey", + }, + { + name: "pool", + type: "publicKey", + }, + { + name: "custody", + type: "publicKey", + }, + { + name: "collateralCustody", + type: "publicKey", + }, + { + name: "openTime", + type: "i64", + }, + { + name: "updateTime", + type: "i64", + }, + { + name: "price", + type: "u64", + }, + { + name: "sizeUsd", + type: "u64", + }, + { + name: "borrowSizeUsd", + type: "u64", + }, + { + name: "collateralUsd", + type: "u64", + }, + { + name: "unrealizedInterestUsd", + type: "u64", + }, + { + name: "cumulativeInterestSnapshot", + type: { + defined: "U128Split", + }, + }, + { + name: "lockedAmount", + type: "u64", + }, + { + name: "collateralAmount", + type: "u64", + }, + { + name: "exitFeeUsd", + type: "u64", + }, + { + name: "liquidationFeeUsd", + type: "u64", + }, + { + name: "id", + type: "u64", + }, + { + name: "takeProfitLimitPrice", + type: "u64", + }, + { + name: "paddingUnsafe3", + type: { + array: ["u8", 8], + }, + }, + { + name: "stopLossLimitPrice", + type: "u64", + }, + { + name: "stopLossClosePositionPrice", + type: "u64", + }, + ], + }, + }, + { + name: "staking", + type: { + kind: "struct", + fields: [ + { + name: "stakingType", + type: "u8", + }, + { + name: "bump", + type: "u8", + }, + { + name: "stakedTokenVaultBump", + type: "u8", + }, + { + name: "rewardTokenVaultBump", + type: "u8", + }, + { + name: "lmRewardTokenVaultBump", + type: "u8", + }, + { + name: "rewardTokenDecimals", + type: "u8", + }, + { + name: "stakedTokenDecimals", + type: "u8", + }, + { + name: "initialized", + type: "u8", + }, + { + name: "nbLockedTokens", + type: "u64", + }, + { + name: "nbLiquidTokens", + type: "u64", + }, + { + name: "stakedTokenMint", + type: "publicKey", + }, + { + name: "resolvedRewardTokenAmount", + type: "u64", + }, + { + name: "resolvedStakedTokenAmount", + type: "u64", + }, + { + name: "resolvedLmRewardTokenAmount", + type: "u64", + }, + { + name: "resolvedLmStakedTokenAmount", + type: "u64", + }, + { + name: "currentStakingRound", + type: { + defined: "StakingRound", + }, + }, + { + name: "nextStakingRound", + type: { + defined: "StakingRound", + }, + }, + { + name: "resolvedStakingRounds", + type: { + array: [ + { + defined: "StakingRound", + }, + 32, + ], + }, + }, + { + name: "registeredResolvedStakingRoundCount", + type: "u8", + }, + { + name: "padding", + type: { + array: ["u8", 3], + }, + }, + { + name: "lmEmissionPotentiometerBps", + type: "u16", + }, + { + name: "monthsElapsedSinceInception", + type: "u16", + }, + { + name: "paddingUnsafe", + type: { + array: ["u8", 8], + }, + }, + { + name: "emissionAmountPerRoundLastUpdate", + type: "i64", + }, + { + name: "currentMonthEmissionAmountPerRound", + type: "u64", + }, + ], + }, + }, + { + name: "userProfile", + type: { + kind: "struct", + fields: [ + { + name: "bump", + type: "u8", + }, + { + name: "padding", + type: { + array: ["u8", 7], + }, + }, + { + name: "nickname", + type: { + defined: "LimitedString", + }, + }, + { + name: "createdAt", + type: "i64", + }, + { + name: "owner", + type: "publicKey", + }, + { + name: "swapCount", + type: "u64", + }, + { + name: "swapVolumeUsd", + type: "u64", + }, + { + name: "swapFeePaidUsd", + type: "u64", + }, + { + name: "shortStats", + type: { + defined: "TradingStats", + }, + }, + { + name: "longStats", + type: { + defined: "TradingStats", + }, + }, + ], + }, + }, + { + name: "userStaking", + type: { + kind: "struct", + fields: [ + { + name: "bump", + type: "u8", + }, + { + name: "unusedUnsafe", + type: { + array: ["u8", 1], + }, + }, + { + name: "stakingType", + type: "u8", + }, + { + name: "padding", + type: { + array: ["u8", 5], + }, + }, + { + name: "lockedStakeIdCounter", + type: "u64", + }, + { + name: "liquidStake", + type: { + defined: "LiquidStake", + }, + }, + { + name: "lockedStakes", + type: { + array: [ + { + defined: "LockedStake", + }, + 32, + ], + }, + }, + ], + }, + }, + { + name: "vestRegistry", + type: { + kind: "struct", + fields: [ + { + name: "bump", + type: "u8", + }, + { + name: "vests", + type: { + vec: "publicKey", + }, + }, + { + name: "vestingTokenAmount", + type: "u64", + }, + { + name: "vestedTokenAmount", + type: "u64", + }, + ], + }, + }, + { + name: "vest", + type: { + kind: "struct", + fields: [ + { + name: "bump", + type: "u8", + }, + { + name: "originBucket", + type: "u8", + }, + { + name: "cancelled", + type: "u8", + }, + { + name: "padding", + type: { + array: ["u8", 1], + }, + }, + { + name: "voteMultiplier", + type: "u32", + }, + { + name: "amount", + type: "u64", + }, + { + name: "unlockStartTimestamp", + type: "i64", + }, + { + name: "unlockEndTimestamp", + type: "i64", + }, + { + name: "claimedAmount", + type: "u64", + }, + { + name: "lastClaimTimestamp", + type: "i64", + }, + { + name: "owner", + type: "publicKey", + }, + ], + }, + }, + ], + types: [ + { + name: "MintLmTokensFromBucketParams", + type: { + kind: "struct", + fields: [ + { + name: "bucketName", + type: "u8", + }, + { + name: "amount", + type: "u64", + }, + { + name: "reason", + type: "string", + }, + ], + }, + }, + { + name: "SetAdminParams", + type: { + kind: "struct", + fields: [ + { + name: "newAdmin", + type: "publicKey", + }, + ], + }, + }, + { + name: "AddCustodyParams", + type: { + kind: "struct", + fields: [ + { + name: "isStable", + type: "bool", + }, + { + name: "pricing", + type: { + defined: "PricingParams", + }, + }, + { + name: "allowSwap", + type: "bool", + }, + { + name: "allowTrade", + type: "bool", + }, + { + name: "fees", + type: { + defined: "Fees", + }, + }, + { + name: "borrowRate", + type: { + defined: "BorrowRateParams", + }, + }, + { + name: "ratios", + type: { + array: [ + { + defined: "TokenRatios", + }, + 8, + ], + }, + }, + ], + }, + }, + { + name: "RemoveCustodyParams", + type: { + kind: "struct", + fields: [ + { + name: "ratios", + type: { + array: [ + { + defined: "TokenRatios", + }, + 8, + ], + }, + }, + ], + }, + }, + { + name: "SetCustodyAllowSwapParams", + type: { + kind: "struct", + fields: [ + { + name: "allowSwap", + type: "bool", + }, + ], + }, + }, + { + name: "SetCustodyAllowTradeParams", + type: { + kind: "struct", + fields: [ + { + name: "allowTrade", + type: "bool", + }, + ], + }, + }, + { + name: "SetCustodyConfigParams", + type: { + kind: "struct", + fields: [ + { + name: "isStable", + type: "bool", + }, + { + name: "oracle", + type: "publicKey", + }, + { + name: "tradeOracle", + type: "publicKey", + }, + { + name: "pricing", + type: { + defined: "PricingParams", + }, + }, + { + name: "fees", + type: { + defined: "Fees", + }, + }, + { + name: "borrowRate", + type: { + defined: "BorrowRateParams", + }, + }, + { + name: "ratios", + type: { + array: [ + { + defined: "TokenRatios", + }, + 8, + ], + }, + }, + ], + }, + }, + { + name: "SetCustodyMaxCumulativeShortPositionSizeUsdParams", + type: { + kind: "struct", + fields: [ + { + name: "maxCumulativeShortPositionSizeUsd", + type: "u64", + }, + ], + }, + }, + { + name: "InitOneParams", + type: { + kind: "struct", + fields: [ + { + name: "coreContributorBucketAllocation", + type: "u64", + }, + { + name: "foundationBucketAllocation", + type: "u64", + }, + { + name: "ecosystemBucketAllocation", + type: "u64", + }, + ], + }, + }, + { + name: "AddPoolPartOneParams", + type: { + kind: "struct", + fields: [ + { + name: "name", + type: "string", + }, + { + name: "aumSoftCapUsd", + type: "u64", + }, + { + name: "lpTokenName", + type: "string", + }, + { + name: "lpTokenSymbol", + type: "string", + }, + { + name: "lpTokenUri", + type: "string", + }, + ], + }, + }, + { + name: "AddPoolPartTwoParams", + type: { + kind: "struct", + fields: [ + { + name: "genesisLockCampaignDuration", + type: "i64", + }, + { + name: "genesisReservedGrantDuration", + type: "i64", + }, + { + name: "genesisLockCampaignStartDate", + type: "i64", + }, + { + name: "reservedSpots", + type: { + defined: "ReservedSpots", + }, + }, + ], + }, + }, + { + name: "GenesisOtcInParams", + type: { + kind: "struct", + fields: [ + { + name: "custodyOneAmount", + type: "u64", + }, + { + name: "custodyTwoAmount", + type: "u64", + }, + { + name: "custodyThreeAmount", + type: "u64", + }, + ], + }, + }, + { + name: "SetPoolAllowSwapParams", + type: { + kind: "struct", + fields: [ + { + name: "allowSwap", + type: "bool", + }, + ], + }, + }, + { + name: "SetPoolAllowTradeParams", + type: { + kind: "struct", + fields: [ + { + name: "allowTrade", + type: "bool", + }, + ], + }, + }, + { + name: "SetPoolAumSoftCapUsdParams", + type: { + kind: "struct", + fields: [ + { + name: "aumSoftCapUsd", + type: "u64", + }, + ], + }, + }, + { + name: "SetPoolLiquidityStateParams", + type: { + kind: "struct", + fields: [ + { + name: "liquidityState", + type: "u8", + }, + ], + }, + }, + { + name: "InitStakingOneParams", + type: { + kind: "struct", + fields: [ + { + name: "stakingType", + type: "u8", + }, + ], + }, + }, + { + name: "SetStakingLmEmissionPotentiometersParams", + type: { + kind: "struct", + fields: [ + { + name: "lmEmissionPotentiometerBps", + type: "u16", + }, + ], + }, + }, + { + name: "AddVestParams", + type: { + kind: "struct", + fields: [ + { + name: "amount", + type: "u64", + }, + { + name: "originBucket", + type: "u8", + }, + { + name: "unlockStartTimestamp", + type: "i64", + }, + { + name: "unlockEndTimestamp", + type: "i64", + }, + { + name: "voteMultiplier", + type: "u32", + }, + ], + }, + }, + { + name: "AddGenesisLiquidityParams", + type: { + kind: "struct", + fields: [ + { + name: "amountIn", + type: "u64", + }, + { + name: "minLpAmountOut", + type: "u64", + }, + ], + }, + }, + { + name: "AddLiquidityParams", + type: { + kind: "struct", + fields: [ + { + name: "amountIn", + type: "u64", + }, + { + name: "minLpAmountOut", + type: "u64", + }, + ], + }, + }, + { + name: "RemoveLiquidityParams", + type: { + kind: "struct", + fields: [ + { + name: "lpAmountIn", + type: "u64", + }, + { + name: "minAmountOut", + type: "u64", + }, + ], + }, + }, + { + name: "SwapParams", + type: { + kind: "struct", + fields: [ + { + name: "amountIn", + type: "u64", + }, + { + name: "minAmountOut", + type: "u64", + }, + ], + }, + }, + { + name: "AddCollateralLongParams", + type: { + kind: "struct", + fields: [ + { + name: "collateral", + type: "u64", + }, + ], + }, + }, + { + name: "AddCollateralShortParams", + type: { + kind: "struct", + fields: [ + { + name: "collateral", + type: "u64", + }, + ], + }, + }, + { + name: "SetStopLossLongParams", + type: { + kind: "struct", + fields: [ + { + name: "stopLossLimitPrice", + type: "u64", + }, + { + name: "closePositionPrice", + type: { + option: "u64", + }, + }, + ], + }, + }, + { + name: "SetStopLossShortParams", + type: { + kind: "struct", + fields: [ + { + name: "stopLossLimitPrice", + type: "u64", + }, + { + name: "closePositionPrice", + type: { + option: "u64", + }, + }, + ], + }, + }, + { + name: "SetTakeProfitLongParams", + type: { + kind: "struct", + fields: [ + { + name: "takeProfitLimitPrice", + type: "u64", + }, + ], + }, + }, + { + name: "SetTakeProfitShortParams", + type: { + kind: "struct", + fields: [ + { + name: "takeProfitLimitPrice", + type: "u64", + }, + ], + }, + }, + { + name: "ClosePositionLongParams", + type: { + kind: "struct", + fields: [ + { + name: "price", + type: { + option: "u64", + }, + }, + ], + }, + }, + { + name: "ClosePositionShortParams", + type: { + kind: "struct", + fields: [ + { + name: "price", + type: { + option: "u64", + }, + }, + ], + }, + }, + { + name: "IncreasePositionLongParams", + type: { + kind: "struct", + fields: [ + { + name: "price", + type: "u64", + }, + { + name: "collateral", + type: "u64", + }, + { + name: "leverage", + type: "u32", + }, + ], + }, + }, + { + name: "IncreasePositionShortParams", + type: { + kind: "struct", + fields: [ + { + name: "price", + type: "u64", + }, + { + name: "collateral", + type: "u64", + }, + { + name: "leverage", + type: "u32", + }, + ], + }, + }, + { + name: "LiquidateLongParams", + type: { + kind: "struct", + fields: [], + }, + }, + { + name: "LiquidateShortParams", + type: { + kind: "struct", + fields: [], + }, + }, + { + name: "OpenPositionWithSwapParams", + type: { + kind: "struct", + fields: [ + { + name: "price", + type: "u64", + }, + { + name: "collateral", + type: "u64", + }, + { + name: "leverage", + type: "u32", + }, + { + name: "referrer", + type: { + option: "publicKey", + }, + }, + ], + }, + }, + { + name: "OpenPositionLongParams", + type: { + kind: "struct", + fields: [ + { + name: "price", + type: "u64", + }, + { + name: "collateral", + type: "u64", + }, + { + name: "leverage", + type: "u32", + }, + { + name: "referrer", + type: { + option: "publicKey", + }, + }, + ], + }, + }, + { + name: "OpenPositionShortParams", + type: { + kind: "struct", + fields: [ + { + name: "price", + type: "u64", + }, + { + name: "collateral", + type: "u64", + }, + { + name: "leverage", + type: "u32", + }, + { + name: "referrer", + type: { + option: "publicKey", + }, + }, + ], + }, + }, + { + name: "RemoveCollateralLongParams", + type: { + kind: "struct", + fields: [ + { + name: "collateralUsd", + type: "u64", + }, + ], + }, + }, + { + name: "RemoveCollateralShortParams", + type: { + kind: "struct", + fields: [ + { + name: "collateralUsd", + type: "u64", + }, + ], + }, + }, + { + name: "AddLiquidStakeParams", + type: { + kind: "struct", + fields: [ + { + name: "amount", + type: "u64", + }, + ], + }, + }, + { + name: "AddLockedStakeParams", + type: { + kind: "struct", + fields: [ + { + name: "amount", + type: "u64", + }, + { + name: "lockedDays", + type: "u32", + }, + ], + }, + }, + { + name: "ClaimStakesParams", + type: { + kind: "struct", + fields: [ + { + name: "lockedStakeIndexes", + type: { + option: "bytes", + }, + }, + ], + }, + }, + { + name: "FinalizeLockedStakeParams", + type: { + kind: "struct", + fields: [ + { + name: "lockedStakeId", + type: "u64", + }, + { + name: "earlyExit", + type: "bool", + }, + ], + }, + }, + { + name: "RemoveLiquidStakeParams", + type: { + kind: "struct", + fields: [ + { + name: "amount", + type: "u64", + }, + ], + }, + }, + { + name: "RemoveLockedStakeParams", + type: { + kind: "struct", + fields: [ + { + name: "lockedStakeIndex", + type: "u64", + }, + ], + }, + }, + { + name: "UpgradeLockedStakeParams", + type: { + kind: "struct", + fields: [ + { + name: "lockedStakeId", + type: "u64", + }, + { + name: "amount", + type: { + option: "u64", + }, + }, + { + name: "lockedDays", + type: { + option: "u32", + }, + }, + ], + }, + }, + { + name: "EditUserProfileParams", + type: { + kind: "struct", + fields: [ + { + name: "nickname", + type: "string", + }, + ], + }, + }, + { + name: "InitUserProfileParams", + type: { + kind: "struct", + fields: [ + { + name: "nickname", + type: "string", + }, + ], + }, + }, + { + name: "GetAddLiquidityAmountAndFeeParams", + type: { + kind: "struct", + fields: [ + { + name: "amountIn", + type: "u64", + }, + ], + }, + }, + { + name: "GetEntryPriceAndFeeParams", + type: { + kind: "struct", + fields: [ + { + name: "collateral", + type: "u64", + }, + { + name: "leverage", + type: "u32", + }, + { + name: "side", + type: "u8", + }, + ], + }, + }, + { + name: "GetLiquidationPriceParams", + type: { + kind: "struct", + fields: [ + { + name: "addCollateral", + type: "u64", + }, + { + name: "removeCollateral", + type: "u64", + }, + ], + }, + }, + { + name: "GetOpenPositionWithSwapAmountAndFeesParams", + type: { + kind: "struct", + fields: [ + { + name: "collateralAmount", + type: "u64", + }, + { + name: "leverage", + type: "u32", + }, + { + name: "side", + type: "u8", + }, + ], + }, + }, + { + name: "CustodyInfoSnapshot", + type: { + kind: "struct", + fields: [ + { + name: "assetsValueUsd", + type: "u64", + }, + { + name: "owned", + type: "u64", + }, + { + name: "locked", + type: "u64", + }, + { + name: "price", + type: "u64", + }, + { + name: "priceConfidence", + type: "u64", + }, + { + name: "tradePrice", + type: "u64", + }, + { + name: "tradePriceConfidence", + type: "u64", + }, + { + name: "shortPnl", + type: "i64", + }, + { + name: "longPnl", + type: "i64", + }, + { + name: "openInterestLongUsd", + type: "u64", + }, + { + name: "openInterestShortUsd", + type: "u64", + }, + { + name: "cumulativeProfitUsd", + type: "u64", + }, + { + name: "cumulativeLossUsd", + type: "u64", + }, + { + name: "cumulativeSwapFeeUsd", + type: "u64", + }, + { + name: "cumulativeLiquidityFeeUsd", + type: "u64", + }, + { + name: "cumulativeClosePositionFeeUsd", + type: "u64", + }, + { + name: "cumulativeLiquidationFeeUsd", + type: "u64", + }, + { + name: "cumulativeBorrowFeeUsd", + type: "u64", + }, + { + name: "cumulativeTradingVolumeUsd", + type: "u64", + }, + ], + }, + }, + { + name: "PoolInfoSnapshot", + type: { + kind: "struct", + fields: [ + { + name: "currentTime", + type: "u64", + }, + { + name: "aumUsd", + type: "u64", + }, + { + name: "lpTokenPrice", + type: "u64", + }, + { + name: "custodiesInfoSnapshot", + type: { + vec: { + defined: "CustodyInfoSnapshot", + }, + }, + }, + { + name: "lpCirculatingSupply", + type: "u64", + }, + ], + }, + }, + { + name: "GetRemoveLiquidityAmountAndFeeParams", + type: { + kind: "struct", + fields: [ + { + name: "lpAmountIn", + type: "u64", + }, + ], + }, + }, + { + name: "GetSwapAmountAndFeesParams", + type: { + kind: "struct", + fields: [ + { + name: "amountIn", + type: "u64", + }, + ], + }, + }, + { + name: "ExitPriceAndFee", + type: { + kind: "struct", + fields: [ + { + name: "price", + type: "u64", + }, + { + name: "fee", + type: "u64", + }, + { + name: "amountOut", + type: "u64", + }, + { + name: "profitUsd", + type: "u64", + }, + { + name: "lossUsd", + type: "u64", + }, + ], + }, + }, + { + name: "AmountAndFee", + type: { + kind: "struct", + fields: [ + { + name: "amount", + type: "u64", + }, + { + name: "fee", + type: "u64", + }, + ], + }, + }, + { + name: "NewPositionPricesAndFee", + type: { + kind: "struct", + fields: [ + { + name: "entryPrice", + type: "u64", + }, + { + name: "liquidationPrice", + type: "u64", + }, + { + name: "exitFee", + type: "u64", + }, + { + name: "liquidationFee", + type: "u64", + }, + { + name: "size", + type: "u64", + }, + ], + }, + }, + { + name: "OpenPositionWithSwapAmountAndFees", + type: { + kind: "struct", + fields: [ + { + name: "entryPrice", + type: "u64", + }, + { + name: "liquidationPrice", + type: "u64", + }, + { + name: "swapFeeIn", + type: "u64", + }, + { + name: "swapFeeOut", + type: "u64", + }, + { + name: "exitFee", + type: "u64", + }, + { + name: "liquidationFee", + type: "u64", + }, + { + name: "size", + type: "u64", + }, + ], + }, + }, + { + name: "SwapAmountAndFees", + type: { + kind: "struct", + fields: [ + { + name: "amountOut", + type: "u64", + }, + { + name: "feeIn", + type: "u64", + }, + { + name: "feeOut", + type: "u64", + }, + ], + }, + }, + { + name: "ProfitAndLoss", + docs: [ + "Specific to the codebase, this struct is used to store the profit and loss of a position.", + ], + type: { + kind: "struct", + fields: [ + { + name: "profitUsd", + type: "u64", + }, + { + name: "lossUsd", + type: "u64", + }, + { + name: "exitFee", + type: "u64", + }, + { + name: "exitFeeUsd", + type: "u64", + }, + { + name: "borrowFeeUsd", + type: "u64", + }, + ], + }, + }, + { + name: "Fees", + type: { + kind: "struct", + fields: [ + { + name: "swapIn", + type: "u16", + }, + { + name: "swapOut", + type: "u16", + }, + { + name: "stableSwapIn", + type: "u16", + }, + { + name: "stableSwapOut", + type: "u16", + }, + { + name: "addLiquidity", + type: "u16", + }, + { + name: "removeLiquidity", + type: "u16", + }, + { + name: "closePosition", + type: "u16", + }, + { + name: "liquidation", + type: "u16", + }, + { + name: "feeMax", + type: "u16", + }, + { + name: "padding", + type: { + array: ["u8", 6], + }, + }, + { + name: "padding2", + type: "u64", + }, + ], + }, + }, + { + name: "FeesStats", + type: { + kind: "struct", + fields: [ + { + name: "swapUsd", + type: "u64", + }, + { + name: "addLiquidityUsd", + type: "u64", + }, + { + name: "removeLiquidityUsd", + type: "u64", + }, + { + name: "closePositionUsd", + type: "u64", + }, + { + name: "liquidationUsd", + type: "u64", + }, + { + name: "borrowUsd", + type: "u64", + }, + ], + }, + }, + { + name: "VolumeStats", + type: { + kind: "struct", + fields: [ + { + name: "swapUsd", + type: "u64", + }, + { + name: "addLiquidityUsd", + type: "u64", + }, + { + name: "removeLiquidityUsd", + type: "u64", + }, + { + name: "openPositionUsd", + type: "u64", + }, + { + name: "closePositionUsd", + type: "u64", + }, + { + name: "liquidationUsd", + type: "u64", + }, + ], + }, + }, + { + name: "TradeStats", + type: { + kind: "struct", + fields: [ + { + name: "profitUsd", + type: "u64", + }, + { + name: "lossUsd", + type: "u64", + }, + { + name: "oiLongUsd", + type: "u64", + }, + { + name: "oiShortUsd", + type: "u64", + }, + ], + }, + }, + { + name: "Assets", + type: { + kind: "struct", + fields: [ + { + name: "collateral", + type: "u64", + }, + { + name: "owned", + type: "u64", + }, + { + name: "locked", + type: "u64", + }, + ], + }, + }, + { + name: "PricingParams", + type: { + kind: "struct", + fields: [ + { + name: "maxInitialLeverage", + type: "u32", + }, + { + name: "maxLeverage", + type: "u32", + }, + { + name: "maxPositionLockedUsd", + type: "u64", + }, + { + name: "maxCumulativeShortPositionSizeUsd", + type: "u64", + }, + ], + }, + }, + { + name: "BorrowRateParams", + type: { + kind: "struct", + fields: [ + { + name: "maxHourlyBorrowInterestRate", + type: "u64", + }, + ], + }, + }, + { + name: "BorrowRateState", + type: { + kind: "struct", + fields: [ + { + name: "currentRate", + type: "u64", + }, + { + name: "lastUpdate", + type: "i64", + }, + { + name: "cumulativeInterest", + type: { + defined: "U128Split", + }, + }, + ], + }, + }, + { + name: "PositionsAccounting", + type: { + kind: "struct", + fields: [ + { + name: "openPositions", + type: "u64", + }, + { + name: "sizeUsd", + type: "u64", + }, + { + name: "borrowSizeUsd", + type: "u64", + }, + { + name: "lockedAmount", + type: "u64", + }, + { + name: "weightedPrice", + type: { + defined: "U128Split", + }, + }, + { + name: "totalQuantity", + type: { + defined: "U128Split", + }, + }, + { + name: "cumulativeInterestUsd", + type: "u64", + }, + { + name: "padding", + type: { + array: ["u8", 8], + }, + }, + { + name: "cumulativeInterestSnapshot", + type: { + defined: "U128Split", + }, + }, + { + name: "exitFeeUsd", + type: "u64", + }, + { + name: "stableLockedAmount", + type: { + array: [ + { + defined: "StableLockedAmountStat", + }, + 2, + ], + }, + }, + ], + }, + }, + { + name: "StableLockedAmountStat", + type: { + kind: "struct", + fields: [ + { + name: "custody", + type: "publicKey", + }, + { + name: "lockedAmount", + type: "u64", + }, + { + name: "padding", + type: { + array: ["u8", 8], + }, + }, + ], + }, + }, + { + name: "OraclePrice", + type: { + kind: "struct", + fields: [ + { + name: "price", + type: "u64", + }, + { + name: "exponent", + type: "i32", + }, + { + name: "confidence", + type: "u64", + }, + ], + }, + }, + { + name: "TokenRatios", + type: { + kind: "struct", + fields: [ + { + name: "target", + type: "u16", + }, + { + name: "min", + type: "u16", + }, + { + name: "max", + type: "u16", + }, + { + name: "padding", + type: { + array: ["u8", 2], + }, + }, + ], + }, + }, + { + name: "StakingRound", + type: { + kind: "struct", + fields: [ + { + name: "startTime", + type: "i64", + }, + { + name: "endTime", + type: "i64", + }, + { + name: "rate", + type: "u64", + }, + { + name: "totalStake", + type: "u64", + }, + { + name: "totalClaim", + type: "u64", + }, + { + name: "lmRate", + type: "u64", + }, + { + name: "lmTotalStake", + type: "u64", + }, + { + name: "lmTotalClaim", + type: "u64", + }, + ], + }, + }, + { + name: "TradingStats", + type: { + kind: "struct", + fields: [ + { + name: "openedPositionCount", + type: "u64", + }, + { + name: "liquidatedPositionCount", + type: "u64", + }, + { + name: "openingAverageLeverage", + type: "u64", + }, + { + name: "openingSizeUsd", + type: "u64", + }, + { + name: "profitsUsd", + type: "u64", + }, + { + name: "lossesUsd", + type: "u64", + }, + { + name: "feePaidUsd", + type: "u64", + }, + ], + }, + }, + { + name: "LiquidStake", + type: { + kind: "struct", + fields: [ + { + name: "amount", + type: "u64", + }, + { + name: "stakeTime", + type: "i64", + }, + { + name: "claimTime", + type: "i64", + }, + { + name: "overlapTime", + type: "i64", + }, + { + name: "overlapAmount", + type: "u64", + }, + ], + }, + }, + { + name: "LockedStake", + type: { + kind: "struct", + fields: [ + { + name: "amount", + type: "u64", + }, + { + name: "stakeTime", + type: "i64", + }, + { + name: "claimTime", + type: "i64", + }, + { + name: "endTime", + type: "i64", + }, + { + name: "lockDuration", + type: "u64", + }, + { + name: "rewardMultiplier", + type: "u32", + }, + { + name: "lmRewardMultiplier", + type: "u32", + }, + { + name: "voteMultiplier", + type: "u32", + }, + { + name: "qualifiedForRewardsInResolvedRoundCount", + type: "u32", + }, + { + name: "amountWithRewardMultiplier", + type: "u64", + }, + { + name: "amountWithLmRewardMultiplier", + type: "u64", + }, + { + name: "resolved", + type: "u8", + }, + { + name: "padding2", + type: { + array: ["u8", 7], + }, + }, + { + name: "id", + type: "u64", + }, + { + name: "earlyExit", + type: "u8", + }, + { + name: "padding3", + type: { + array: ["u8", 7], + }, + }, + { + name: "earlyExitFee", + type: "u64", + }, + { + name: "isGenesis", + type: "u8", + }, + { + name: "padding4", + type: { + array: ["u8", 7], + }, + }, + { + name: "genesisClaimTime", + type: "i64", + }, + ], + }, + }, + { + name: "LimitedString", + type: { + kind: "struct", + fields: [ + { + name: "value", + type: { + array: ["u8", 31], + }, + }, + { + name: "length", + type: "u8", + }, + ], + }, + }, + { + name: "U128Split", + type: { + kind: "struct", + fields: [ + { + name: "high", + type: "u64", + }, + { + name: "low", + type: "u64", + }, + ], + }, + }, + { + name: "BucketName", + type: { + kind: "enum", + variants: [ + { + name: "CoreContributor", + }, + { + name: "Foundation", + }, + { + name: "Ecosystem", + }, + ], + }, + }, + { + name: "ReservedSpots", + type: { + kind: "enum", + variants: [ + { + name: "None", + }, + { + name: "Test", + fields: [ + { + name: "firstReservedSpot", + type: "publicKey", + }, + { + name: "secondReservedSpot", + type: "publicKey", + }, + ], + }, + ], + }, + }, + { + name: "CortexInitializationStep", + type: { + kind: "enum", + variants: [ + { + name: "NotCreated", + }, + { + name: "Step1", + }, + { + name: "Step2", + }, + { + name: "Step3", + }, + { + name: "Initialized", + }, + ], + }, + }, + { + name: "PoolLiquidityState", + type: { + kind: "enum", + variants: [ + { + name: "GenesisLiquidity", + }, + { + name: "Idle", + }, + { + name: "Active", + }, + ], + }, + }, + { + name: "LeverageCheckType", + type: { + kind: "enum", + variants: [ + { + name: "Initial", + }, + { + name: "AddCollateral", + }, + { + name: "RemoveCollateral", + }, + { + name: "IncreasePosition", + }, + { + name: "Liquidate", + }, + ], + }, + }, + { + name: "Side", + type: { + kind: "enum", + variants: [ + { + name: "None", + }, + { + name: "Long", + }, + { + name: "Short", + }, + ], + }, + }, + { + name: "StakingType", + type: { + kind: "enum", + variants: [ + { + name: "LM", + }, + { + name: "LP", + }, + ], + }, + }, + { + name: "StakingInitializationStep", + type: { + kind: "enum", + variants: [ + { + name: "NotCreated", + }, + { + name: "Step1", + }, + { + name: "Step2", + }, + { + name: "Step3", + }, + { + name: "Initialized", + }, + ], + }, + }, + ], + events: [ + { + name: "OpenPositionEvent", + fields: [ + { + name: "owner", + type: "publicKey", + index: false, + }, + { + name: "position", + type: "publicKey", + index: false, + }, + { + name: "custodyMint", + type: "publicKey", + index: false, + }, + { + name: "side", + type: "u8", + index: false, + }, + { + name: "sizeUsd", + type: "u64", + index: false, + }, + { + name: "price", + type: "u64", + index: false, + }, + { + name: "collateralAmountUsd", + type: "u64", + index: false, + }, + { + name: "leverage", + type: "u32", + index: false, + }, + { + name: "positionId", + type: "u64", + index: false, + }, + ], + }, + { + name: "IncreasePositionEvent", + fields: [ + { + name: "owner", + type: "publicKey", + index: false, + }, + { + name: "position", + type: "publicKey", + index: false, + }, + { + name: "custodyMint", + type: "publicKey", + index: false, + }, + { + name: "side", + type: "u8", + index: false, + }, + { + name: "sizeUsd", + type: "u64", + index: false, + }, + { + name: "price", + type: "u64", + index: false, + }, + { + name: "collateralAmountUsd", + type: "u64", + index: false, + }, + { + name: "leverage", + type: "u32", + index: false, + }, + { + name: "positionId", + type: "u64", + index: false, + }, + ], + }, + { + name: "ClosePositionEvent", + fields: [ + { + name: "owner", + type: "publicKey", + index: false, + }, + { + name: "position", + type: "publicKey", + index: false, + }, + { + name: "custodyMint", + type: "publicKey", + index: false, + }, + { + name: "side", + type: "u8", + index: false, + }, + { + name: "sizeUsd", + type: "u64", + index: false, + }, + { + name: "price", + type: "u64", + index: false, + }, + { + name: "collateralAmountUsd", + type: "u64", + index: false, + }, + { + name: "profitUsd", + type: "u64", + index: false, + }, + { + name: "lossUsd", + type: "u64", + index: false, + }, + { + name: "borrowFeeUsd", + type: "u64", + index: false, + }, + { + name: "exitFeeUsd", + type: "u64", + index: false, + }, + { + name: "positionId", + type: "u64", + index: false, + }, + ], + }, + { + name: "AddCollateralEvent", + fields: [ + { + name: "owner", + type: "publicKey", + index: false, + }, + { + name: "position", + type: "publicKey", + index: false, + }, + { + name: "custodyMint", + type: "publicKey", + index: false, + }, + { + name: "side", + type: "u8", + index: false, + }, + { + name: "addAmountUsd", + type: "u64", + index: false, + }, + { + name: "newCollateralAmountUsd", + type: "u64", + index: false, + }, + { + name: "leverage", + type: "u32", + index: false, + }, + { + name: "positionId", + type: "u64", + index: false, + }, + ], + }, + { + name: "RemoveCollateralEvent", + fields: [ + { + name: "owner", + type: "publicKey", + index: false, + }, + { + name: "position", + type: "publicKey", + index: false, + }, + { + name: "custodyMint", + type: "publicKey", + index: false, + }, + { + name: "side", + type: "u8", + index: false, + }, + { + name: "removeAmountUsd", + type: "u64", + index: false, + }, + { + name: "newCollateralAmountUsd", + type: "u64", + index: false, + }, + { + name: "leverage", + type: "u32", + index: false, + }, + { + name: "positionId", + type: "u64", + index: false, + }, + ], + }, + { + name: "LiquidateEvent", + fields: [ + { + name: "owner", + type: "publicKey", + index: false, + }, + { + name: "position", + type: "publicKey", + index: false, + }, + { + name: "custodyMint", + type: "publicKey", + index: false, + }, + { + name: "side", + type: "u8", + index: false, + }, + { + name: "sizeUsd", + type: "u64", + index: false, + }, + { + name: "price", + type: "u64", + index: false, + }, + { + name: "collateralAmountUsd", + type: "u64", + index: false, + }, + { + name: "lossUsd", + type: "u64", + index: false, + }, + { + name: "borrowFeeUsd", + type: "u64", + index: false, + }, + { + name: "exitFeeUsd", + type: "u64", + index: false, + }, + { + name: "positionId", + type: "u64", + index: false, + }, + ], + }, + { + name: "AddLockedStakeEvent", + fields: [ + { + name: "owner", + type: "publicKey", + index: false, + }, + { + name: "staking", + type: "publicKey", + index: false, + }, + { + name: "lockedStakeId", + type: "u64", + index: false, + }, + { + name: "amount", + type: "u64", + index: false, + }, + { + name: "lockedDays", + type: "u32", + index: false, + }, + ], + }, + { + name: "UpgradeLockedStakeEvent", + fields: [ + { + name: "owner", + type: "publicKey", + index: false, + }, + { + name: "staking", + type: "publicKey", + index: false, + }, + { + name: "lockedStakeId", + type: "u64", + index: false, + }, + { + name: "amount", + type: { + option: "u64", + }, + index: false, + }, + { + name: "lockedDays", + type: { + option: "u32", + }, + index: false, + }, + ], + }, + { + name: "FinalizeLockedStakeEvent", + fields: [ + { + name: "owner", + type: "publicKey", + index: false, + }, + { + name: "staking", + type: "publicKey", + index: false, + }, + { + name: "lockedStakeId", + type: "u64", + index: false, + }, + { + name: "earlyExit", + type: "bool", + index: false, + }, + ], + }, + { + name: "RemoveLockedStakeEvent", + fields: [ + { + name: "owner", + type: "publicKey", + index: false, + }, + { + name: "staking", + type: "publicKey", + index: false, + }, + { + name: "lockedStakeId", + type: "u64", + index: false, + }, + ], + }, + { + name: "SetStopLossEvent", + fields: [ + { + name: "positionId", + type: "u64", + index: false, + }, + { + name: "stopLossLimitPrice", + type: "u64", + index: false, + }, + { + name: "closePositionPrice", + type: { + option: "u64", + }, + index: false, + }, + { + name: "positionSide", + type: "u8", + index: false, + }, + ], + }, + { + name: "SetTakeProfitEvent", + fields: [ + { + name: "positionId", + type: "u64", + index: false, + }, + { + name: "takeProfitLimitPrice", + type: "u64", + index: false, + }, + { + name: "positionSide", + type: "u8", + index: false, + }, + ], + }, + { + name: "CancelStopLossEvent", + fields: [ + { + name: "positionId", + type: "u64", + index: false, + }, + { + name: "positionSide", + type: "u8", + index: false, + }, + ], + }, + { + name: "CancelTakeProfitEvent", + fields: [ + { + name: "positionId", + type: "u64", + index: false, + }, + { + name: "positionSide", + type: "u8", + index: false, + }, + ], + }, + ], + errors: [ + { + code: 6000, + name: "MathOverflow", + msg: "Overflow in arithmetic operation", + }, + { + code: 6001, + name: "UnsupportedOracle", + msg: "Unsupported price oracle", + }, + { + code: 6002, + name: "InvalidOracleAccount", + msg: "Invalid oracle account", + }, + { + code: 6003, + name: "InvalidOracleState", + msg: "Invalid oracle state", + }, + { + code: 6004, + name: "StaleOraclePrice", + msg: "Stale oracle price", + }, + { + code: 6005, + name: "InvalidOraclePrice", + msg: "Invalid oracle price", + }, + { + code: 6006, + name: "InvalidEnvironment", + msg: "Instruction is not allowed in production", + }, + { + code: 6007, + name: "InvalidPoolLiquidityState", + msg: "Invalid pool liquidity state", + }, + { + code: 6008, + name: "InvalidCortexState", + msg: "Invalid cortex state", + }, + { + code: 6009, + name: "InvalidStakingState", + msg: "Invalid staking state", + }, + { + code: 6010, + name: "InvalidPoolState", + msg: "Invalid pool state", + }, + { + code: 6011, + name: "InvalidVestState", + msg: "Invalid vest state", + }, + { + code: 6012, + name: "InvalidStakeState", + msg: "Invalid stake state", + }, + { + code: 6013, + name: "InvalidCustody", + msg: "Invalid custody", + }, + { + code: 6014, + name: "InvalidCustodyAccount", + msg: "Invalid custody account", + }, + { + code: 6015, + name: "InvalidCustodyState", + msg: "Invalid custody state", + }, + { + code: 6016, + name: "InvalidCollateralCustody", + msg: "Invalid collateral custody", + }, + { + code: 6017, + name: "InvalidPositionState", + msg: "Invalid position state", + }, + { + code: 6018, + name: "PositionNotInLiquidationRange", + msg: "The position is not in liquidation range", + }, + { + code: 6019, + name: "InvalidStakingRoundState", + msg: "Invalid staking round state", + }, + { + code: 6020, + name: "InvalidAdrenaConfig", + msg: "Invalid adrena config", + }, + { + code: 6021, + name: "InvalidPoolConfig", + msg: "Invalid pool config", + }, + { + code: 6022, + name: "InvalidCustodyConfig", + msg: "Invalid custody config", + }, + { + code: 6023, + name: "InsufficientAmountReturned", + msg: "Insufficient token amount returned", + }, + { + code: 6024, + name: "MaxPriceSlippage", + msg: "Price slippage limit exceeded", + }, + { + code: 6025, + name: "MaxLeverage", + msg: "Position leverage limit exceeded", + }, + { + code: 6026, + name: "MinLeverage", + msg: "Position leverage under minimum", + }, + { + code: 6027, + name: "CustodyAmountLimit", + msg: "Custody amount limit exceeded", + }, + { + code: 6028, + name: "PositionAmountLimit", + msg: "Position amount limit exceeded", + }, + { + code: 6029, + name: "TokenRatioOutOfRange", + msg: "Token ratio out of range", + }, + { + code: 6030, + name: "UnsupportedToken", + msg: "Token is not supported", + }, + { + code: 6031, + name: "InstructionNotAllowed", + msg: "Instruction is not allowed at this time", + }, + { + code: 6032, + name: "MaxUtilization", + msg: "Token utilization limit exceeded", + }, + { + code: 6033, + name: "MaxRegisteredResolvedStakingRoundReached", + msg: "Max registered resolved staking round reached", + }, + { + code: 6034, + name: "InvalidGovernanceProgram", + msg: "Governance program do not match Cortex's one", + }, + { + code: 6035, + name: "InvalidGovernanceRealm", + msg: "Governance realm do not match Cortex's one", + }, + { + code: 6036, + name: "InvalidVestingUnlockTime", + msg: "Vesting unlock time is too close or passed", + }, + { + code: 6037, + name: "InvalidStakingLockingTime", + msg: "Invalid staking locking time", + }, + { + code: 6038, + name: "UserStakeNotFound", + msg: "The user stake account specified could not be found", + }, + { + code: 6039, + name: "InvalidAccountData", + msg: "Invalid account data", + }, + { + code: 6040, + name: "UnresolvedStake", + msg: "Stake is not resolved", + }, + { + code: 6041, + name: "BucketMintLimit", + msg: "Reached bucket mint limit", + }, + { + code: 6042, + name: "GenesisAlpLimitReached", + msg: "Genesis ALP add liquidity limit reached", + }, + { + code: 6043, + name: "PermissionlessOracleMissingSignature", + msg: "Permissionless oracle update must be preceded by Ed25519 signature verification instruction", + }, + { + code: 6044, + name: "PermissionlessOracleMalformedEd25519Data", + msg: "Ed25519 signature verification data does not match expected format", + }, + { + code: 6045, + name: "PermissionlessOracleSignerMismatch", + msg: "Ed25519 signature was not signed by the oracle authority", + }, + { + code: 6046, + name: "PermissionlessOracleMessageMismatch", + msg: "Signed message does not match instruction params", + }, + { + code: 6047, + name: "CustodyStableLockedAmountNotFound", + msg: "Cannot find custody stable locked amount", + }, + { + code: 6048, + name: "CustodyNotFound", + msg: "Cannot find custody", + }, + { + code: 6049, + name: "InsufficientBucketReserve", + msg: "The bucket does not contain enough token for reserving this allocation", + }, + { + code: 6050, + name: "UserNicknameTooLong", + msg: "User nickname exceed 24 characters", + }, + { + code: 6051, + name: "UserNicknameTooShort", + msg: "User nickname is less than 3 characters", + }, + { + code: 6052, + name: "InvalidGenesisLockState", + msg: "Invalid genesis lock state", + }, + { + code: 6053, + name: "GenesisLockCampaignFullySubscribed", + msg: "The campaign is fully subscribed", + }, + { + code: 6054, + name: "PoolAumSoftCapUsdReached", + msg: "The pool is fully subscribed", + }, + { + code: 6055, + name: "MaxRegisteredPool", + msg: "The number of registered pool reached max amount", + }, + { + code: 6056, + name: "MaxRegisteredCustodies", + msg: "The number of registered custody reached max amount", + }, + { + code: 6057, + name: "MaxCumulativeShortPositionSizeLimit", + msg: "The short limit for this asset has been reached", + }, + { + code: 6058, + name: "LockedStakeArrayFull", + msg: "The max number of LockedStaking has been reached", + }, + { + code: 6059, + name: "IndexOutOfBounds", + msg: "Requested index is out of bounds", + }, + { + code: 6060, + name: "InvalidCaller", + msg: "The instruction must be call with a specific account as caller", + }, + { + code: 6061, + name: "InvalidBucketName", + msg: "Invalid bucket name", + }, + { + code: 6062, + name: "InvalidThreadId", + msg: "(deprecated)The provided Sablier thread does not have the expected ID", + }, + { + code: 6063, + name: "PythPriceExponentTooLargeIncurringPrecisionLoss", + msg: "The exponent used for pyth price lead to high precision loss", + }, + { + code: 6064, + name: "MissingClosePositionPrice", + msg: "The close position price is mandatory", + }, + { + code: 6065, + name: "InvalidVoteMultiplier", + msg: "Invalid vote multiplier", + }, + { + code: 6066, + name: "PositionTooYoung", + msg: "A position cannot be close right after open, a slight delay is enforced", + }, + { + code: 6067, + name: "InsufficientCollateral", + msg: "The minimum amount of collateral posted to open a position is not met", + }, + { + code: 6068, + name: "InvalidLockDuration", + msg: "The provided lock duration isn't valid", + }, + { + code: 6069, + name: "StakeNotEstablished", + msg: "The stake isn't established yet", + }, + { + code: 6070, + name: "PositionAlreadyClosed", + msg: "The position is already pending cleanup and close", + }, + ], +}; diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 72a1f5b..d5d17e5 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -261,6 +261,114 @@ export class SolanaMintNFTTool extends Tool { } } +export class SolanaPerpCloseTradeTool extends Tool { + name = "solana_close_perp_trade"; + description = `This tool can be used to close perpetuals trade ( It uses Adrena Protocol ). + + Inputs ( input is a JSON string ): + tradeMint: string, eg "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn", "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" etc. (optional) + price?: number, eg 100 (optional) + side: string, eg: "long" or "short"`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const tx = + parsedInput.side === "long" + ? await this.solanaKit.closePerpTradeLong({ + price: parsedInput.price, + tradeMint: new PublicKey(parsedInput.tradeMint), + }) + : await this.solanaKit.closePerpTradeShort({ + price: parsedInput.price, + tradeMint: new PublicKey(parsedInput.tradeMint), + }); + + return JSON.stringify({ + status: "success", + message: "Perpetual trade closed successfully", + transaction: tx, + price: parsedInput.price, + tradeMint: new PublicKey(parsedInput.tradeMint), + side: parsedInput.side, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaPerpOpenTradeTool extends Tool { + name = "solana_open_perp_trade"; + description = `This tool can be used to open perpetuals trade ( It uses Adrena Protocol ). + + Inputs ( input is a JSON string ): + collateralAmount: number, eg 1 or 0.01 (required) + collateralMint: string, eg "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn" or "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" etc. (optional) + tradeMint: string, eg "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn", "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" etc. (optional) + leverage: number, eg 50000 = x5, 100000 = x10, 1000000 = x100 (optional) + price?: number, eg 100 (optional) + slippage?: number, eg 0.3 (optional) + side: string, eg: "long" or "short"`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const tx = + parsedInput.side === "long" + ? await this.solanaKit.openPerpTradeLong({ + price: parsedInput.price, + collateralAmount: parsedInput.collateralAmount, + collateralMint: new PublicKey(parsedInput.collateralMint), + leverage: parsedInput.leverage, + tradeMint: new PublicKey(parsedInput.tradeMint), + slippage: parsedInput.slippage, + }) + : await this.solanaKit.openPerpTradeLong({ + price: parsedInput.price, + collateralAmount: parsedInput.collateralAmount, + collateralMint: new PublicKey(parsedInput.collateralMint), + leverage: parsedInput.leverage, + tradeMint: new PublicKey(parsedInput.tradeMint), + slippage: parsedInput.slippage, + }); + + return JSON.stringify({ + status: "success", + message: "Perpetual trade opened successfully", + transaction: tx, + price: parsedInput.price, + collateralAmount: parsedInput.collateralAmount, + collateralMint: new PublicKey(parsedInput.collateralMint), + leverage: parsedInput.leverage, + tradeMint: new PublicKey(parsedInput.tradeMint), + slippage: parsedInput.slippage, + side: parsedInput.side, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + export class SolanaTradeTool extends Tool { name = "solana_trade"; description = `This tool can be used to swap tokens to another token ( It uses Jupiter Exchange ). @@ -2065,5 +2173,7 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaCancelNFTListingTool(solanaKit), new SolanaFetchTokenReportSummaryTool(solanaKit), new SolanaFetchTokenDetailedReportTool(solanaKit), + new SolanaPerpOpenTradeTool(solanaKit), + new SolanaPerpCloseTradeTool(solanaKit), ]; } diff --git a/src/tools/adrena_perp_trading.ts b/src/tools/adrena_perp_trading.ts new file mode 100644 index 0000000..8c47216 --- /dev/null +++ b/src/tools/adrena_perp_trading.ts @@ -0,0 +1,506 @@ +import { + PublicKey, + SystemProgram, + TransactionInstruction, +} from "@solana/web3.js"; +import { SolanaAgentKit } from "../index"; +import { TOKENS, DEFAULT_OPTIONS } from "../constants"; +import { TOKEN_PROGRAM_ID } from "@solana/spl-token"; +import { BN } from "@coral-xyz/anchor"; + +import AdrenaClient from "../utils/AdrenaClient"; +import { sendTx } from "../utils/send_tx"; + +const PRICE_DECIMALS = 10; +const ADRENA_PROGRAM_ID = new PublicKey( + "13gDzEXCdocbj8iAiqrScGo47NiSuYENGsRqi3SEAwet", +); + +// i.e percentage = -2 (for -2%) +// i.e percentage = 5 (for 5%) +function applySlippage(nb: BN, percentage: number): BN { + const negative = percentage < 0 ? true : false; + + // Do x10_000 so percentage can be up to 4 decimals + const percentageBN = new BN( + (negative ? percentage * -1 : percentage) * 10_000, + ); + + const delta = nb.mul(percentageBN).divRound(new BN(10_000 * 100)); + + return negative ? nb.sub(delta) : nb.add(delta); +} + +/** + * Close short trade on Adrena + * @returns Transaction signature + */ +export async function closePerpTradeShort({ + agent, + price, + tradeMint, +}: { + agent: SolanaAgentKit; + price: number; + tradeMint: PublicKey; +}) { + const client = await AdrenaClient.load(agent); + + const owner = agent.wallet.publicKey; + + const custody = client.getCustodyByMint(tradeMint); + const collateralCustody = client.getCustodyByMint(TOKENS.USDC); + + const stakingRewardTokenCustodyAccount = client.getCustodyByMint( + AdrenaClient.stakingRewardTokenMint, + ); + + const stakingRewardTokenCustodyTokenAccount = + AdrenaClient.findCustodyTokenAccountAddress( + AdrenaClient.stakingRewardTokenMint, + ); + + const position = AdrenaClient.findPositionAddress( + owner, + custody.pubkey, + "long", + ); + + const userProfilePda = AdrenaClient.getUserProfilePda(owner); + + const userProfile = + await client.program.account.userProfile.fetchNullable(userProfilePda); + + const receivingAccount = AdrenaClient.findATAAddressSync( + owner, + collateralCustody.mint, + ); + + const preInstructions: TransactionInstruction[] = []; + + const collateralCustodyOracle = collateralCustody.oracle; + const collateralCustodyTokenAccount = + AdrenaClient.findCustodyTokenAccountAddress(collateralCustody.mint); + + if ( + !(await AdrenaClient.isAccountInitialized( + agent.connection, + receivingAccount, + )) + ) { + preInstructions.push( + AdrenaClient.createATAInstruction({ + ataAddress: receivingAccount, + mint: collateralCustody.mint, + owner, + }), + ); + } + + const instruction = await client.program.methods + .closePositionShort({ + price: new BN(price * 10 ** PRICE_DECIMALS), + }) + .accountsStrict({ + owner, + receivingAccount, + transferAuthority: AdrenaClient.transferAuthority, + pool: AdrenaClient.mainPool, + position: position, + custody: custody.pubkey, + custodyTradeOracle: custody.tradeOracle, + tokenProgram: TOKEN_PROGRAM_ID, + lmStaking: AdrenaClient.lmStaking, + lpStaking: AdrenaClient.lpStaking, + cortex: AdrenaClient.cortex, + stakingRewardTokenCustody: stakingRewardTokenCustodyAccount.pubkey, + stakingRewardTokenCustodyOracle: stakingRewardTokenCustodyAccount.oracle, + stakingRewardTokenCustodyTokenAccount, + lmStakingRewardTokenVault: AdrenaClient.lmStakingRewardTokenVault, + lpStakingRewardTokenVault: AdrenaClient.lpStakingRewardTokenVault, + lpTokenMint: AdrenaClient.lpTokenMint, + protocolFeeRecipient: client.cortex.protocolFeeRecipient, + adrenaProgram: AdrenaClient.programId, + userProfile: userProfile ? userProfilePda : null, + caller: owner, + collateralCustody: collateralCustody.pubkey, + collateralCustodyOracle, + collateralCustodyTokenAccount, + }) + .instruction(); + + return sendTx(agent, [...preInstructions, instruction]); +} + +/** + * Close long trade on Adrena + * @returns Transaction signature + */ +export async function closePerpTradeLong({ + agent, + price, + tradeMint, +}: { + agent: SolanaAgentKit; + price: number; + tradeMint: PublicKey; +}) { + const client = await AdrenaClient.load(agent); + + const owner = agent.wallet.publicKey; + + const custody = client.getCustodyByMint(tradeMint); + + const custodyTokenAccount = + AdrenaClient.findCustodyTokenAccountAddress(tradeMint); + + const stakingRewardTokenCustodyAccount = client.getCustodyByMint( + AdrenaClient.stakingRewardTokenMint, + ); + + const stakingRewardTokenCustodyTokenAccount = + AdrenaClient.findCustodyTokenAccountAddress( + AdrenaClient.stakingRewardTokenMint, + ); + + const position = AdrenaClient.findPositionAddress( + owner, + custody.pubkey, + "long", + ); + + const userProfilePda = AdrenaClient.getUserProfilePda(owner); + + const userProfile = + await client.program.account.userProfile.fetchNullable(userProfilePda); + + const receivingAccount = AdrenaClient.findATAAddressSync(owner, custody.mint); + + const preInstructions: TransactionInstruction[] = []; + + if ( + !(await AdrenaClient.isAccountInitialized( + agent.connection, + receivingAccount, + )) + ) { + preInstructions.push( + AdrenaClient.createATAInstruction({ + ataAddress: receivingAccount, + mint: custody.mint, + owner, + }), + ); + } + + const instruction = await client.program.methods + .closePositionLong({ + price: new BN(price * 10 ** PRICE_DECIMALS), + }) + .accountsStrict({ + owner, + receivingAccount, + transferAuthority: AdrenaClient.transferAuthority, + pool: AdrenaClient.mainPool, + position: position, + custody: custody.pubkey, + custodyTokenAccount, + custodyOracle: custody.oracle, + custodyTradeOracle: custody.tradeOracle, + tokenProgram: TOKEN_PROGRAM_ID, + lmStaking: AdrenaClient.lmStaking, + lpStaking: AdrenaClient.lpStaking, + cortex: AdrenaClient.cortex, + stakingRewardTokenCustody: stakingRewardTokenCustodyAccount.pubkey, + stakingRewardTokenCustodyOracle: stakingRewardTokenCustodyAccount.oracle, + stakingRewardTokenCustodyTokenAccount, + lmStakingRewardTokenVault: AdrenaClient.lmStakingRewardTokenVault, + lpStakingRewardTokenVault: AdrenaClient.lpStakingRewardTokenVault, + lpTokenMint: AdrenaClient.lpTokenMint, + protocolFeeRecipient: client.cortex.protocolFeeRecipient, + adrenaProgram: AdrenaClient.programId, + userProfile: userProfile ? userProfilePda : null, + caller: owner, + }) + .instruction(); + + return sendTx(agent, [...preInstructions, instruction]); +} + +/** + * Open long trade on Adrena + * + * Note: provide the same token as collateralMint and as tradeMint to avoid swap + * @returns Transaction signature + */ +export async function openPerpTradeLong({ + agent, + price, + collateralAmount, + collateralMint = TOKENS.jitoSOL, + leverage = DEFAULT_OPTIONS.LEVERAGE_BPS, + tradeMint = TOKENS.jitoSOL, + slippage = 0.3, +}: { + agent: SolanaAgentKit; + price: number; + collateralAmount: number; + collateralMint?: PublicKey; + leverage?: number; + tradeMint?: PublicKey; + slippage?: number; +}): Promise { + const client = await AdrenaClient.load(agent); + + const owner = agent.wallet.publicKey; + + const collateralAccount = AdrenaClient.findATAAddressSync(owner, tradeMint); + const fundingAccount = AdrenaClient.findATAAddressSync(owner, collateralMint); + + const receivingCustody = AdrenaClient.findCustodyAddress(collateralMint); + const receivingCustodyOracle = client.getCustodyByMint(collateralMint).oracle; + const receivingCustodyTokenAccount = + AdrenaClient.findCustodyTokenAccountAddress(collateralMint); + + // Principal custody is the custody of the targeted token + // i.e open a 1 ETH long position, principal custody is ETH + const principalCustody = AdrenaClient.findCustodyAddress(tradeMint); + const principalCustodyAccount = client.getCustodyByMint(tradeMint); + const principalCustodyOracle = principalCustodyAccount.oracle; + const principalCustodyTradeOracle = principalCustodyAccount.tradeOracle; + const principalCustodyTokenAccount = + AdrenaClient.findCustodyTokenAccountAddress(tradeMint); + + const stakingRewardTokenCustodyAccount = client.getCustodyByMint( + AdrenaClient.stakingRewardTokenMint, + ); + + const stakingRewardTokenCustodyTokenAccount = + AdrenaClient.findCustodyTokenAccountAddress( + AdrenaClient.stakingRewardTokenMint, + ); + + const position = AdrenaClient.findPositionAddress( + owner, + principalCustody, + "long", + ); + + const userProfilePda = AdrenaClient.getUserProfilePda(owner); + + const userProfile = + await client.program.account.userProfile.fetchNullable(userProfilePda); + + const priceWithSlippage = applySlippage( + new BN(price * 10 ** PRICE_DECIMALS), + slippage, + ); + + const scaledCollateralAmount = new BN( + collateralAmount * + Math.pow(10, client.getCustodyByMint(collateralMint).decimals), + ); + + const preInstructions: TransactionInstruction[] = []; + + if ( + !(await AdrenaClient.isAccountInitialized( + agent.connection, + collateralAccount, + )) + ) { + preInstructions.push( + AdrenaClient.createATAInstruction({ + ataAddress: collateralAccount, + mint: tradeMint, + owner, + }), + ); + } + + const instruction = await client.program.methods + .openOrIncreasePositionWithSwapLong({ + price: priceWithSlippage, + collateral: scaledCollateralAmount, + leverage, + referrer: null, + }) + .accountsStrict({ + owner, + payer: owner, + fundingAccount, + collateralAccount, + receivingCustody, + receivingCustodyOracle, + receivingCustodyTokenAccount, + principalCustody, + principalCustodyOracle, + principalCustodyTradeOracle, + principalCustodyTokenAccount, + transferAuthority: AdrenaClient.transferAuthority, + cortex: AdrenaClient.cortex, + lmStaking: AdrenaClient.lmStaking, + lpStaking: AdrenaClient.lpStaking, + pool: AdrenaClient.mainPool, + position, + stakingRewardTokenCustody: stakingRewardTokenCustodyAccount.pubkey, + stakingRewardTokenCustodyOracle: stakingRewardTokenCustodyAccount.oracle, + stakingRewardTokenCustodyTokenAccount, + lmStakingRewardTokenVault: AdrenaClient.lmStakingRewardTokenVault, + lpStakingRewardTokenVault: AdrenaClient.lpStakingRewardTokenVault, + lpTokenMint: AdrenaClient.lpTokenMint, + userProfile: userProfile ? userProfilePda : null, + protocolFeeRecipient: client.cortex.protocolFeeRecipient, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_PROGRAM_ID, + adrenaProgram: ADRENA_PROGRAM_ID, + }) + .instruction(); + + return sendTx(agent, [...preInstructions, instruction]); +} + +/** + * Open short trade on Adrena + * + * Note: provide USDC as collateralMint to avoid swap + * @returns Transaction signature + */ +export async function openPerpTradeShort({ + agent, + price, + collateralAmount, + collateralMint = TOKENS.USDC, + leverage = DEFAULT_OPTIONS.LEVERAGE_BPS, + tradeMint = TOKENS.jitoSOL, + slippage = 0.3, +}: { + agent: SolanaAgentKit; + price: number; + collateralAmount: number; + collateralMint?: PublicKey; + leverage?: number; + tradeMint?: PublicKey; + slippage?: number; +}): Promise { + const client = await AdrenaClient.load(agent); + + const owner = agent.wallet.publicKey; + + const collateralAccount = AdrenaClient.findATAAddressSync(owner, tradeMint); + const fundingAccount = AdrenaClient.findATAAddressSync(owner, collateralMint); + + const receivingCustody = AdrenaClient.findCustodyAddress(collateralMint); + const receivingCustodyOracle = client.getCustodyByMint(collateralMint).oracle; + const receivingCustodyTokenAccount = + AdrenaClient.findCustodyTokenAccountAddress(collateralMint); + + // Principal custody is the custody of the targeted token + // i.e open a 1 BTC short position, principal custody is BTC + const principalCustody = AdrenaClient.findCustodyAddress(tradeMint); + const principalCustodyAccount = client.getCustodyByMint(tradeMint); + const principalCustodyTradeOracle = principalCustodyAccount.tradeOracle; + const principalCustodyTokenAccount = + AdrenaClient.findCustodyTokenAccountAddress(tradeMint); + + const usdcAta = AdrenaClient.findATAAddressSync(owner, TOKENS.USDC); + + const preInstructions: TransactionInstruction[] = []; + + if (!(await AdrenaClient.isAccountInitialized(agent.connection, usdcAta))) { + preInstructions.push( + AdrenaClient.createATAInstruction({ + ataAddress: usdcAta, + mint: TOKENS.USDC, + owner, + }), + ); + } + + // Custody used to provide collateral when opening the position + // Should be a stable token, by default, use USDC + const instructionCollateralMint = TOKENS.USDC; + + const collateralCustody = AdrenaClient.findCustodyAddress( + instructionCollateralMint, + ); + const collateralCustodyOracle = client.getCustodyByMint( + instructionCollateralMint, + ).oracle; + + const collateralCustodyTokenAccount = + AdrenaClient.findCustodyTokenAccountAddress(instructionCollateralMint); + + const stakingRewardTokenCustodyAccount = client.getCustodyByMint( + AdrenaClient.stakingRewardTokenMint, + ); + + const stakingRewardTokenCustodyTokenAccount = + AdrenaClient.findCustodyTokenAccountAddress( + AdrenaClient.stakingRewardTokenMint, + ); + + const position = AdrenaClient.findPositionAddress( + owner, + principalCustody, + "long", + ); + + const userProfilePda = AdrenaClient.getUserProfilePda(owner); + + const userProfile = + await client.program.account.userProfile.fetchNullable(userProfilePda); + + const priceWithSlippage = applySlippage( + new BN(price * 10 ** PRICE_DECIMALS), + slippage, + ); + + const scaledCollateralAmount = new BN( + collateralAmount * + Math.pow(10, client.getCustodyByMint(collateralMint).decimals), + ); + + const instruction = await client.program.methods + .openOrIncreasePositionWithSwapShort({ + price: priceWithSlippage, + collateral: scaledCollateralAmount, + leverage, + referrer: null, + }) + .accountsStrict({ + owner, + payer: owner, + fundingAccount, + collateralAccount, + receivingCustody, + receivingCustodyOracle, + receivingCustodyTokenAccount, + principalCustody, + principalCustodyTradeOracle, + principalCustodyTokenAccount, + collateralCustody, + collateralCustodyOracle, + collateralCustodyTokenAccount, + transferAuthority: AdrenaClient.transferAuthority, + cortex: AdrenaClient.cortex, + lmStaking: AdrenaClient.lmStaking, + lpStaking: AdrenaClient.lpStaking, + pool: AdrenaClient.mainPool, + position, + stakingRewardTokenCustody: stakingRewardTokenCustodyAccount.pubkey, + stakingRewardTokenCustodyOracle: stakingRewardTokenCustodyAccount.oracle, + stakingRewardTokenCustodyTokenAccount, + lmStakingRewardTokenVault: AdrenaClient.lmStakingRewardTokenVault, + lpStakingRewardTokenVault: AdrenaClient.lpStakingRewardTokenVault, + lpTokenMint: AdrenaClient.lpTokenMint, + userProfile: userProfile ? userProfilePda : null, + protocolFeeRecipient: client.cortex.protocolFeeRecipient, + systemProgram: SystemProgram.programId, + tokenProgram: TOKEN_PROGRAM_ID, + adrenaProgram: ADRENA_PROGRAM_ID, + }) + .instruction(); + + return sendTx(agent, [...preInstructions, instruction]); +} diff --git a/src/tools/index.ts b/src/tools/index.ts index 825dff8..62a11de 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -13,6 +13,7 @@ export * from "./limit_order"; export * from "./batch_order"; export * from "./cancel_all_orders"; export * from "./withdraw_all"; +export * from "./adrena_perp_trading"; export * from "./register_domain"; export * from "./resolve_sol_domain"; export * from "./get_primary_domain"; diff --git a/src/utils/AdrenaClient.ts b/src/utils/AdrenaClient.ts new file mode 100644 index 0000000..410165d --- /dev/null +++ b/src/utils/AdrenaClient.ts @@ -0,0 +1,220 @@ +import { Connection, PublicKey } from "@solana/web3.js"; +import { SolanaAgentKit } from "../index"; +import { AnchorProvider, IdlAccounts, Program } from "@coral-xyz/anchor"; +import { Adrena, IDL as ADRENA_IDL } from "../idls/adrena"; + +import NodeWallet from "@coral-xyz/anchor/dist/cjs/nodewallet"; +import { + ASSOCIATED_TOKEN_PROGRAM_ID, + createAssociatedTokenAccountInstruction, + TOKEN_PROGRAM_ID, +} from "@solana/spl-token"; +import { TOKENS } from "../constants"; + +export type AdrenaProgram = Program; + +type Accounts = IdlAccounts; + +export type Cortex = Accounts["cortex"]; +export type Custody = Accounts["custody"] & { pubkey: PublicKey }; +export type Pool = Accounts["pool"]; + +export default class AdrenaClient { + public static programId = new PublicKey( + "13gDzEXCdocbj8iAiqrScGo47NiSuYENGsRqi3SEAwet", + ); + + constructor( + public program: AdrenaProgram, + public mainPool: Pool, + public cortex: Cortex, + public custodies: Custody[], + ) {} + + public static mainPool = new PublicKey( + "4bQRutgDJs6vuh6ZcWaPVXiQaBzbHketjbCDjL4oRN34", + ); + + public static async load(agent: SolanaAgentKit): Promise { + const program = new Program( + ADRENA_IDL, + AdrenaClient.programId, + new AnchorProvider(agent.connection, new NodeWallet(agent.wallet), { + commitment: "processed", + skipPreflight: true, + }), + ); + + const [cortex, mainPool] = await Promise.all([ + program.account.cortex.fetch(AdrenaClient.cortex), + program.account.pool.fetch(AdrenaClient.mainPool), + ]); + + const custodiesAddresses = mainPool.custodies.filter( + (custody) => !custody.equals(PublicKey.default), + ); + + const custodies = + await program.account.custody.fetchMultiple(custodiesAddresses); + + if (!custodies.length || custodies.some((c) => c === null)) { + throw new Error("Custodies not found"); + } + + return new AdrenaClient( + program, + mainPool, + cortex, + (custodies as Custody[]).map((c, i) => ({ + ...c, + pubkey: custodiesAddresses[i], + })), + ); + } + + public static findCustodyAddress(mint: PublicKey): PublicKey { + return PublicKey.findProgramAddressSync( + [ + Buffer.from("custody"), + AdrenaClient.mainPool.toBuffer(), + mint.toBuffer(), + ], + AdrenaClient.programId, + )[0]; + } + + public static findCustodyTokenAccountAddress(mint: PublicKey) { + return PublicKey.findProgramAddressSync( + [ + Buffer.from("custody_token_account"), + AdrenaClient.mainPool.toBuffer(), + mint.toBuffer(), + ], + AdrenaClient.programId, + )[0]; + } + + public static findPositionAddress( + owner: PublicKey, + custody: PublicKey, + side: "long" | "short", + ) { + return PublicKey.findProgramAddressSync( + [ + Buffer.from("position"), + owner.toBuffer(), + AdrenaClient.mainPool.toBuffer(), + custody.toBuffer(), + Buffer.from([ + { + long: 1, + short: 2, + }[side], + ]), + ], + AdrenaClient.programId, + )[0]; + } + + public static cortex = PublicKey.findProgramAddressSync( + [Buffer.from("cortex")], + AdrenaClient.programId, + )[0]; + + public static lpTokenMint = PublicKey.findProgramAddressSync( + [Buffer.from("lp_token_mint"), AdrenaClient.mainPool.toBuffer()], + AdrenaClient.programId, + )[0]; + + public static lmTokenMint = PublicKey.findProgramAddressSync( + [Buffer.from("lm_token_mint")], + AdrenaClient.programId, + )[0]; + + public static getStakingPda(stakedTokenMint: PublicKey) { + return PublicKey.findProgramAddressSync( + [Buffer.from("staking"), stakedTokenMint.toBuffer()], + AdrenaClient.programId, + )[0]; + } + + public static lmStaking = AdrenaClient.getStakingPda( + AdrenaClient.lmTokenMint, + ); + + public static lpStaking = AdrenaClient.getStakingPda( + AdrenaClient.lpTokenMint, + ); + + public static transferAuthority = PublicKey.findProgramAddressSync( + [Buffer.from("transfer_authority")], + AdrenaClient.programId, + )[0]; + + public static findATAAddressSync( + wallet: PublicKey, + mint: PublicKey, + ): PublicKey { + return PublicKey.findProgramAddressSync( + [wallet.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), mint.toBuffer()], + ASSOCIATED_TOKEN_PROGRAM_ID, + )[0]; + } + + public getCustodyByMint(mint: PublicKey): Custody { + const custody = this.custodies.find((custody) => custody.mint.equals(mint)); + + if (!custody) { + throw new Error(`Cannot find custody for mint ${mint.toBase58()}`); + } + + return custody; + } + + public static getUserProfilePda(wallet: PublicKey) { + return PublicKey.findProgramAddressSync( + [Buffer.from("user_profile"), wallet.toBuffer()], + AdrenaClient.programId, + )[0]; + } + + public static stakingRewardTokenMint = TOKENS.USDC; + + public static getStakingRewardTokenVaultPda(stakingPda: PublicKey) { + return PublicKey.findProgramAddressSync( + [Buffer.from("staking_reward_token_vault"), stakingPda.toBuffer()], + AdrenaClient.programId, + )[0]; + } + + public static lmStakingRewardTokenVault = + AdrenaClient.getStakingRewardTokenVaultPda(AdrenaClient.lmStaking); + public static lpStakingRewardTokenVault = + AdrenaClient.getStakingRewardTokenVaultPda(AdrenaClient.lpStaking); + + public static async isAccountInitialized( + connection: Connection, + address: PublicKey, + ): Promise { + return !!(await connection.getAccountInfo(address)); + } + + public static createATAInstruction({ + ataAddress, + mint, + owner, + payer = owner, + }: { + ataAddress: PublicKey; + mint: PublicKey; + owner: PublicKey; + payer?: PublicKey; + }) { + return createAssociatedTokenAccountInstruction( + payer, + ataAddress, + owner, + mint, + ); + } +} From b3a15fb01937648ae3b92b3772010e8d9ad9b1ff Mon Sep 17 00:00:00 2001 From: aryan <48391385+thearyanag@users.noreply.github.com> Date: Sat, 4 Jan 2025 15:19:44 +0530 Subject: [PATCH 72/94] update FUNDING info --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 45b0aa1..64a0c99 100644 --- a/README.md +++ b/README.md @@ -297,6 +297,12 @@ Refer to [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines on how to co Apache-2 License +## Funding + +If you wanna give back any tokens or donations to the OSS community -- The Public Solana Agent Kit Treasury Address: + +Solana Network : EKHTbXpsm6YDgJzMkFxNU1LNXeWcUW7Ezf8mjUNQQ4Pa + ## Security This toolkit handles private keys and transactions. Always ensure you're using it in a secure environment and never share your private keys. From 06ad5ba728abc866d35b695c5c48ef0a5b47fd88 Mon Sep 17 00:00:00 2001 From: aryan Date: Sat, 4 Jan 2025 15:29:47 +0530 Subject: [PATCH 73/94] chore: docs + lint --- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 17 +- docs/functions/createSolanaTools.html | 2 +- docs/functions/createVercelAITools.html | 2 +- docs/functions/executeAction.html | 2 +- docs/functions/findAction.html | 2 +- docs/functions/getActionExamples.html | 2 +- docs/index.html | 15 +- docs/interfaces/Action.html | 14 +- docs/interfaces/ActionExample.html | 4 +- docs/interfaces/CollectionDeployment.html | 4 +- docs/interfaces/CollectionOptions.html | 4 +- docs/interfaces/Config.html | 4 +- docs/interfaces/Creator.html | 4 +- docs/interfaces/FetchPriceResponse.html | 4 +- docs/interfaces/GibworkCreateTaskReponse.html | 4 +- docs/interfaces/JupiterTokenData.html | 4 +- .../LuloAccountDetailsResponse.html | 4 +- .../interfaces/MintCollectionNFTResponse.html | 4 +- docs/interfaces/PumpFunTokenOptions.html | 4 +- docs/interfaces/PumpfunLaunchResponse.html | 4 +- docs/interfaces/PythFetchPriceResponse.html | 4 +- docs/interfaces/TokenCheck.html | 4 +- docs/types/Handler.html | 2 +- docs/variables/actions.html | 2 +- package.json | 2 +- pnpm-lock.yaml | 3575 +++++------------ src/actions/index.ts | 2 +- src/tools/stake_with_solayer.ts | 4 +- 29 files changed, 1024 insertions(+), 2677 deletions(-) diff --git a/docs/assets/search.js b/docs/assets/search.js index 61dd52b..611142f 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index 62e7d4a..035f908 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,13 +1,15 @@ SolanaAgentKit | solana-agent-kit

    Class SolanaAgentKit

    Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, trading and more

    SolanaAgentKit

    -

    Constructors

    Constructors

    Properties

    Methods

    batchOrder cancelAllOrders +closePerpTradeLong +closePerpTradeShort createGibworkTask createTiplink deployCollection @@ -32,6 +34,8 @@ Provides a unified interface for token operations, NFT management, trading and m manifestCreateMarket mintNFT openbookCreateMarket +openPerpTradeLong +openPerpTradeShort orcaClosePosition orcaCreateCLMM orcaCreateSingleSidedLiquidityPool @@ -46,6 +50,7 @@ Provides a unified interface for token operations, NFT management, trading and m requestFaucetFunds resolveAllDomains resolveSolDomain +restake rockPaperScissors sendCompressedAirdrop stake @@ -59,8 +64,8 @@ Please use the new constructor with Config object instead:

    const agent = new SolanaAgentKit(privateKey, rpcUrl, {
    OPENAI_API_KEY: 'your-key'
    });
    -
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    -
    connection: Connection

    Solana RPC connection

    -
    wallet: Keypair

    Wallet keypair for signing transactions

    -
    wallet_address: PublicKey

    Public key of the wallet

    -

    Methods

    • Parameters

      • marketId: PublicKey
      • orders: OrderParams[]

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • quantity: number
      • side: string
      • price: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    +
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    +
    connection: Connection

    Solana RPC connection

    +
    wallet: Keypair

    Wallet keypair for signing transactions

    +
    wallet_address: PublicKey

    Public key of the wallet

    +

    Methods

    • Parameters

      • marketId: PublicKey
      • orders: OrderParams[]

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • quantity: number
      • side: string
      • price: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index 3470ab1..ccdcc08 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaTradeTool
          | SolanaLimitOrderTool
          | SolanaBatchOrderTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
          | SolanaFetchTokenReportSummaryTool
          | SolanaFetchTokenDetailedReportTool
      )[]

    +createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaPerpCloseTradeTool
          | SolanaPerpOpenTradeTool
          | SolanaTradeTool
          | SolanaLimitOrderTool
          | SolanaBatchOrderTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaRestakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
          | SolanaFetchTokenReportSummaryTool
          | SolanaFetchTokenDetailedReportTool
      )[]

    diff --git a/docs/functions/createVercelAITools.html b/docs/functions/createVercelAITools.html index 175a346..12775cb 100644 --- a/docs/functions/createVercelAITools.html +++ b/docs/functions/createVercelAITools.html @@ -1 +1 @@ -createVercelAITools | solana-agent-kit

    Function createVercelAITools

    +createVercelAITools | solana-agent-kit

    Function createVercelAITools

    diff --git a/docs/functions/executeAction.html b/docs/functions/executeAction.html index 16e855a..ce82002 100644 --- a/docs/functions/executeAction.html +++ b/docs/functions/executeAction.html @@ -1,2 +1,2 @@ executeAction | solana-agent-kit

    Function executeAction

    • Execute an action with the given input

      -

      Parameters

      Returns Promise<Record<string, any>>

    +

    Parameters

    Returns Promise<Record<string, any>>

    diff --git a/docs/functions/findAction.html b/docs/functions/findAction.html index ca155f5..3eba58f 100644 --- a/docs/functions/findAction.html +++ b/docs/functions/findAction.html @@ -1,2 +1,2 @@ findAction | solana-agent-kit

    Function findAction

    • Find an action by its name or one of its similes

      -

      Parameters

      • query: string

      Returns Action | undefined

    +

    Parameters

    • query: string

    Returns Action | undefined

    diff --git a/docs/functions/getActionExamples.html b/docs/functions/getActionExamples.html index 882112d..0b133b9 100644 --- a/docs/functions/getActionExamples.html +++ b/docs/functions/getActionExamples.html @@ -1,2 +1,2 @@ getActionExamples | solana-agent-kit

    Function getActionExamples

    • Get examples for an action

      -

      Parameters

      • action: Action

      Returns string

    +

    Parameters

    • action: Action

    Returns string

    diff --git a/docs/index.html b/docs/index.html index d7f32e7..5695cf2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -53,6 +53,7 @@
  • Jito Bundles
  • Pyth Price feeds for fetching Asset Prices
  • Register/resolve Alldomains
  • +
  • Perpetuals Trading with Adrena Protocol
  • @@ -61,6 +62,7 @@
  • Lending by Lulo (Best APR for USDC)
  • Send Arcade Games
  • JupSOL staking
  • +
  • Solayer SOL (sSOL)staking
  • @@ -128,12 +130,21 @@
    const signature = await agent.stake(
    1 // amount in SOL to stake
    );
    +
    const signature = await agent.restake(
    1 // amount in SOL to stake
    );
    +
    +
    import { PublicKey } from "@solana/web3.js";

    (async () => {
    console.log(
    "~Airdrop cost estimate:",
    getAirdropCostEstimate(
    1000, // recipients
    30_000 // priority fee in lamports
    )
    );

    const signature = await agent.sendCompressedAirdrop(
    new PublicKey("JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"), // mint
    42, // amount per recipient
    [
    new PublicKey("1nc1nerator11111111111111111111111111111111"),
    // ... add more recipients
    ],
    30_000 // priority fee in lamports
    );
    })();

    const price = await agent.pythFetchPrice(
    "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43"
    );

    console.log("Price in BTC/USD:", price);
    +
    import { PublicKey } from "@solana/web3.js";

    const signature = await agent.openPerpTradeLong({
    price: 300, // $300 SOL Max price
    collateralAmount: 10, // 10 jitoSOL in
    collateralMint: new PublicKey("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"), // jitoSOL
    leverage: 50000, // x5
    tradeMint: new PublicKey("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"), // jitoSOL
    slippage: 0.3, // 0.3%
    }); +
    + +
    import { PublicKey } from "@solana/web3.js";

    const signature = await agent.closePerpTradeLong({
    price: 200, // $200 SOL price
    tradeMint: new PublicKey("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"), // jitoSOL
    }); +
    +

    The repository includes an advanced example of building a multi-agent system using LangGraph and Solana Agent Kit. Located in examples/agent-kit-langgraph, this example demonstrates:

    • Multi-agent architecture using LangGraph's StateGraph
    • @@ -167,5 +178,7 @@ Refer to CONTRIBUTING.md for detailed guidel

      Star History Chart

      Apache-2 License

      +

      If you wanna give back any tokens or donations to the OSS community -- The Public Solana Agent Kit Treasury Address:

      +

      Solana Network : EKHTbXpsm6YDgJzMkFxNU1LNXeWcUW7Ezf8mjUNQQ4Pa

      This toolkit handles private keys and transactions. Always ensure you're using it in a secure environment and never share your private keys.

      -
      +
      diff --git a/docs/interfaces/Action.html b/docs/interfaces/Action.html index 0e3e44a..00c6ccf 100644 --- a/docs/interfaces/Action.html +++ b/docs/interfaces/Action.html @@ -1,16 +1,16 @@ Action | solana-agent-kit

      Interface Action

      Main Action interface inspired by ELIZA This interface makes it easier to implement actions across different frameworks

      -
      interface Action {
          description: string;
          examples: ActionExample[][];
          handler: Handler;
          name: string;
          schema: ZodType;
          similes: string[];
      }

      Properties

      interface Action {
          description: string;
          examples: ActionExample[][];
          handler: Handler;
          name: string;
          schema: ZodType;
          similes: string[];
      }

      Properties

      description: string

      Detailed description of what the action does

      -
      examples: ActionExample[][]

      Array of example inputs and outputs for the action +

      examples: ActionExample[][]

      Array of example inputs and outputs for the action Each inner array represents a group of related examples

      -
      handler: Handler

      Function that executes the action

      -
      name: string

      Unique name of the action

      -
      schema: ZodType

      Zod schema for input validation

      -
      similes: string[]

      Alternative names/phrases that can trigger this action

      -
      +
      handler: Handler

      Function that executes the action

      +
      name: string

      Unique name of the action

      +
      schema: ZodType

      Zod schema for input validation

      +
      similes: string[]

      Alternative names/phrases that can trigger this action

      +
      diff --git a/docs/interfaces/ActionExample.html b/docs/interfaces/ActionExample.html index de2d0d1..4af324b 100644 --- a/docs/interfaces/ActionExample.html +++ b/docs/interfaces/ActionExample.html @@ -1,5 +1,5 @@ ActionExample | solana-agent-kit

      Interface ActionExample

      Example of an action with input and output

      -
      interface ActionExample {
          explanation: string;
          input: Record<string, any>;
          output: Record<string, any>;
      }

      Properties

      interface ActionExample {
          explanation: string;
          input: Record<string, any>;
          output: Record<string, any>;
      }

      Properties

      explanation: string
      input: Record<string, any>
      output: Record<string, any>
      +

      Properties

      explanation: string
      input: Record<string, any>
      output: Record<string, any>
      diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index b14fcc2..60ae6f2 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

      Interface CollectionDeployment

      interface CollectionDeployment {
          collectionAddress: PublicKey;
          signature: Uint8Array;
      }

      Properties

      collectionAddress +CollectionDeployment | solana-agent-kit

      Interface CollectionDeployment

      interface CollectionDeployment {
          collectionAddress: PublicKey;
          signature: Uint8Array;
      }

      Properties

      collectionAddress: PublicKey
      signature: Uint8Array
      +

      Properties

      collectionAddress: PublicKey
      signature: Uint8Array
      diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index 027b228..6f5e64b 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

      Interface CollectionOptions

      interface CollectionOptions {
          creators?: Creator[];
          name: string;
          royaltyBasisPoints?: number;
          uri: string;
      }

      Properties

      creators? +CollectionOptions | solana-agent-kit

      Interface CollectionOptions

      interface CollectionOptions {
          creators?: Creator[];
          name: string;
          royaltyBasisPoints?: number;
          uri: string;
      }

      Properties

      creators?: Creator[]
      name: string
      royaltyBasisPoints?: number
      uri: string
      +

      Properties

      creators?: Creator[]
      name: string
      royaltyBasisPoints?: number
      uri: string
      diff --git a/docs/interfaces/Config.html b/docs/interfaces/Config.html index 8bf37ca..94e8716 100644 --- a/docs/interfaces/Config.html +++ b/docs/interfaces/Config.html @@ -1,4 +1,4 @@ -Config | solana-agent-kit

      Interface Config

      interface Config {
          JUPITER_FEE_BPS?: number;
          JUPITER_REFERRAL_ACCOUNT?: string;
          OPENAI_API_KEY?: string;
      }

      Properties

      JUPITER_FEE_BPS? +Config | solana-agent-kit

      Interface Config

      interface Config {
          JUPITER_FEE_BPS?: number;
          JUPITER_REFERRAL_ACCOUNT?: string;
          OPENAI_API_KEY?: string;
      }

      Properties

      JUPITER_FEE_BPS?: number
      JUPITER_REFERRAL_ACCOUNT?: string
      OPENAI_API_KEY?: string
      +

      Properties

      JUPITER_FEE_BPS?: number
      JUPITER_REFERRAL_ACCOUNT?: string
      OPENAI_API_KEY?: string
      diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index 89c9300..8ff6cce 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

      Interface Creator

      interface Creator {
          address: string;
          percentage: number;
      }

      Properties

      address +Creator | solana-agent-kit

      Interface Creator

      interface Creator {
          address: string;
          percentage: number;
      }

      Properties

      Properties

      address: string
      percentage: number
      +

      Properties

      address: string
      percentage: number
      diff --git a/docs/interfaces/FetchPriceResponse.html b/docs/interfaces/FetchPriceResponse.html index 9486ccb..1ba2522 100644 --- a/docs/interfaces/FetchPriceResponse.html +++ b/docs/interfaces/FetchPriceResponse.html @@ -1,6 +1,6 @@ -FetchPriceResponse | solana-agent-kit

      Interface FetchPriceResponse

      interface FetchPriceResponse {
          code?: string;
          message?: string;
          priceInUSDC?: string;
          status: "success" | "error";
          tokenId?: string;
      }

      Properties

      code? +FetchPriceResponse | solana-agent-kit

      Interface FetchPriceResponse

      interface FetchPriceResponse {
          code?: string;
          message?: string;
          priceInUSDC?: string;
          status: "success" | "error";
          tokenId?: string;
      }

      Properties

      code?: string
      message?: string
      priceInUSDC?: string
      status: "success" | "error"
      tokenId?: string
      +

      Properties

      code?: string
      message?: string
      priceInUSDC?: string
      status: "success" | "error"
      tokenId?: string
      diff --git a/docs/interfaces/GibworkCreateTaskReponse.html b/docs/interfaces/GibworkCreateTaskReponse.html index 33c180e..9443f14 100644 --- a/docs/interfaces/GibworkCreateTaskReponse.html +++ b/docs/interfaces/GibworkCreateTaskReponse.html @@ -1,4 +1,4 @@ -GibworkCreateTaskReponse | solana-agent-kit

      Interface GibworkCreateTaskReponse

      interface GibworkCreateTaskReponse {
          signature?: string;
          status: "success" | "error";
          taskId?: string;
      }

      Properties

      signature? +GibworkCreateTaskReponse | solana-agent-kit

      Interface GibworkCreateTaskReponse

      interface GibworkCreateTaskReponse {
          signature?: string;
          status: "success" | "error";
          taskId?: string;
      }

      Properties

      signature?: string
      status: "success" | "error"
      taskId?: string
      +

      Properties

      signature?: string
      status: "success" | "error"
      taskId?: string
      diff --git a/docs/interfaces/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index 582eb31..f2c23b6 100644 --- a/docs/interfaces/JupiterTokenData.html +++ b/docs/interfaces/JupiterTokenData.html @@ -1,4 +1,4 @@ -JupiterTokenData | solana-agent-kit

      Interface JupiterTokenData

      interface JupiterTokenData {
          address: string;
          daily_volume: number;
          decimals: number;
          extensions: { coingeckoId?: string };
          freeze_authority: null | string;
          logoURI: string;
          mint_authority: null | string;
          name: string;
          permanent_delegate: null | string;
          symbol: string;
          tags: string[];
      }

      Properties

      address +JupiterTokenData | solana-agent-kit

      Interface JupiterTokenData

      interface JupiterTokenData {
          address: string;
          daily_volume: number;
          decimals: number;
          extensions: { coingeckoId?: string };
          freeze_authority: null | string;
          logoURI: string;
          mint_authority: null | string;
          name: string;
          permanent_delegate: null | string;
          symbol: string;
          tags: string[];
      }

      Properties

      address: string
      daily_volume: number
      decimals: number
      extensions: { coingeckoId?: string }
      freeze_authority: null | string
      logoURI: string
      mint_authority: null | string
      name: string
      permanent_delegate: null | string
      symbol: string
      tags: string[]
      +

      Properties

      address: string
      daily_volume: number
      decimals: number
      extensions: { coingeckoId?: string }
      freeze_authority: null | string
      logoURI: string
      mint_authority: null | string
      name: string
      permanent_delegate: null | string
      symbol: string
      tags: string[]
      diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index 6b07c01..20d1ec5 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

      Interface LuloAccountDetailsResponse

      Lulo Account Details response format

      -
      interface LuloAccountDetailsResponse {
          interestEarned: number;
          realtimeApy: number;
          settings: {
              allowedProtocols: null | string;
              homebase: null | string;
              minimumRate: string;
              owner: string;
          };
          totalValue: number;
      }

      Properties

      interface LuloAccountDetailsResponse {
          interestEarned: number;
          realtimeApy: number;
          settings: {
              allowedProtocols: null | string;
              homebase: null | string;
              minimumRate: string;
              owner: string;
          };
          totalValue: number;
      }

      Properties

      interestEarned: number
      realtimeApy: number
      settings: {
          allowedProtocols: null | string;
          homebase: null | string;
          minimumRate: string;
          owner: string;
      }
      totalValue: number
      +

      Properties

      interestEarned: number
      realtimeApy: number
      settings: {
          allowedProtocols: null | string;
          homebase: null | string;
          minimumRate: string;
          owner: string;
      }
      totalValue: number
      diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index 6999b84..0706240 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

      Interface MintCollectionNFTResponse

      interface MintCollectionNFTResponse {
          metadata: PublicKey;
          mint: PublicKey;
      }

      Properties

      metadata +MintCollectionNFTResponse | solana-agent-kit

      Interface MintCollectionNFTResponse

      interface MintCollectionNFTResponse {
          metadata: PublicKey;
          mint: PublicKey;
      }

      Properties

      Properties

      metadata: PublicKey
      mint: PublicKey
      +

      Properties

      metadata: PublicKey
      mint: PublicKey
      diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html index e025426..2abe435 100644 --- a/docs/interfaces/PumpFunTokenOptions.html +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -1,7 +1,7 @@ -PumpFunTokenOptions | solana-agent-kit

      Interface PumpFunTokenOptions

      interface PumpFunTokenOptions {
          initialLiquiditySOL?: number;
          priorityFee?: number;
          slippageBps?: number;
          telegram?: string;
          twitter?: string;
          website?: string;
      }

      Properties

      initialLiquiditySOL? +PumpFunTokenOptions | solana-agent-kit

      Interface PumpFunTokenOptions

      interface PumpFunTokenOptions {
          initialLiquiditySOL?: number;
          priorityFee?: number;
          slippageBps?: number;
          telegram?: string;
          twitter?: string;
          website?: string;
      }

      Properties

      initialLiquiditySOL?: number
      priorityFee?: number
      slippageBps?: number
      telegram?: string
      twitter?: string
      website?: string
      +

      Properties

      initialLiquiditySOL?: number
      priorityFee?: number
      slippageBps?: number
      telegram?: string
      twitter?: string
      website?: string
      diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html index 013703a..67dc930 100644 --- a/docs/interfaces/PumpfunLaunchResponse.html +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -1,5 +1,5 @@ -PumpfunLaunchResponse | solana-agent-kit

      Interface PumpfunLaunchResponse

      interface PumpfunLaunchResponse {
          error?: string;
          metadataUri?: string;
          mint: string;
          signature: string;
      }

      Properties

      error? +PumpfunLaunchResponse | solana-agent-kit

      Interface PumpfunLaunchResponse

      interface PumpfunLaunchResponse {
          error?: string;
          metadataUri?: string;
          mint: string;
          signature: string;
      }

      Properties

      error?: string
      metadataUri?: string
      mint: string
      signature: string
      +

      Properties

      error?: string
      metadataUri?: string
      mint: string
      signature: string
      diff --git a/docs/interfaces/PythFetchPriceResponse.html b/docs/interfaces/PythFetchPriceResponse.html index 3e57525..ff637f4 100644 --- a/docs/interfaces/PythFetchPriceResponse.html +++ b/docs/interfaces/PythFetchPriceResponse.html @@ -1,6 +1,6 @@ -PythFetchPriceResponse | solana-agent-kit

      Interface PythFetchPriceResponse

      interface PythFetchPriceResponse {
          code?: string;
          message?: string;
          price?: string;
          priceFeedID: string;
          status: "success" | "error";
      }

      Properties

      code? +PythFetchPriceResponse | solana-agent-kit

      Interface PythFetchPriceResponse

      interface PythFetchPriceResponse {
          code?: string;
          message?: string;
          price?: string;
          priceFeedID: string;
          status: "success" | "error";
      }

      Properties

      code?: string
      message?: string
      price?: string
      priceFeedID: string
      status: "success" | "error"
      +

      Properties

      code?: string
      message?: string
      price?: string
      priceFeedID: string
      status: "success" | "error"
      diff --git a/docs/interfaces/TokenCheck.html b/docs/interfaces/TokenCheck.html index 61f0bb4..ede4846 100644 --- a/docs/interfaces/TokenCheck.html +++ b/docs/interfaces/TokenCheck.html @@ -1,5 +1,5 @@ -TokenCheck | solana-agent-kit

      Interface TokenCheck

      interface TokenCheck {
          risks: {
              description: string;
              level: string;
              name: string;
              score: number;
          }[];
          score: number;
          tokenProgram: string;
          tokenType: string;
      }

      Properties

      risks +TokenCheck | solana-agent-kit

      Interface TokenCheck

      interface TokenCheck {
          risks: {
              description: string;
              level: string;
              name: string;
              score: number;
          }[];
          score: number;
          tokenProgram: string;
          tokenType: string;
      }

      Properties

      risks: { description: string; level: string; name: string; score: number }[]
      score: number
      tokenProgram: string
      tokenType: string
      +

      Properties

      risks: { description: string; level: string; name: string; score: number }[]
      score: number
      tokenProgram: string
      tokenType: string
      diff --git a/docs/types/Handler.html b/docs/types/Handler.html index ac3fdd6..687ab38 100644 --- a/docs/types/Handler.html +++ b/docs/types/Handler.html @@ -1,2 +1,2 @@ Handler | solana-agent-kit

      Type Alias Handler

      Handler: (
          agent: SolanaAgentKit,
          input: Record<string, any>,
      ) => Promise<Record<string, any>>

      Handler function type for executing the action

      -

      Type declaration

        • (
              agent: SolanaAgentKit,
              input: Record<string, any>,
          ): Promise<Record<string, any>>
        • Parameters

          Returns Promise<Record<string, any>>

      +

      Type declaration

        • (
              agent: SolanaAgentKit,
              input: Record<string, any>,
          ): Promise<Record<string, any>>
        • Parameters

          Returns Promise<Record<string, any>>

      diff --git a/docs/variables/actions.html b/docs/variables/actions.html index 5bbe130..81c4e42 100644 --- a/docs/variables/actions.html +++ b/docs/variables/actions.html @@ -1 +1 @@ -ACTIONS | solana-agent-kit

      Variable ACTIONSConst

      ACTIONS: {
          BALANCE_ACTION: Action;
          CREATE_GIBWORK_TASK_ACTION: Action;
          CREATE_IMAGE_ACTION: Action;
          CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
          DEPLOY_COLLECTION_ACTION: Action;
          DEPLOY_TOKEN_ACTION: Action;
          FETCH_PRICE_ACTION: Action;
          GET_ALL_DOMAINS_TLDS_ACTION: Action;
          GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
          GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
          GET_OWNED_ALL_DOMAINS_ACTION: Action;
          GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
          GET_PRIMARY_DOMAIN_ACTION: Action;
          GET_TOKEN_DATA_ACTION: Action;
          GET_TPS_ACTION: Action;
          LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
          LEND_ASSET_ACTION: Action;
          MINT_NFT_ACTION: Action;
          PYTH_FETCH_PRICE_ACTION: Action;
          RAYDIUM_CREATE_AMM_V4_ACTION: Action;
          RAYDIUM_CREATE_CPMM_ACTION: Action;
          REGISTER_DOMAIN_ACTION: Action;
          REQUEST_FUNDS_ACTION: Action;
          RESOLVE_DOMAIN_ACTION: Action;
          RESOLVE_SOL_DOMAIN_ACTION: Action;
          STAKE_WITH_JUP_ACTION: Action;
          TRADE_ACTION: Action;
          TRANSFER_ACTION: Action;
          WALLET_ADDRESS_ACTION: Action;
      } = ...

      Type declaration

      • BALANCE_ACTION: Action
      • CREATE_GIBWORK_TASK_ACTION: Action
      • CREATE_IMAGE_ACTION: Action
      • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
      • DEPLOY_COLLECTION_ACTION: Action
      • DEPLOY_TOKEN_ACTION: Action
      • FETCH_PRICE_ACTION: Action
      • GET_ALL_DOMAINS_TLDS_ACTION: Action
      • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
      • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
      • GET_OWNED_ALL_DOMAINS_ACTION: Action
      • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
      • GET_PRIMARY_DOMAIN_ACTION: Action
      • GET_TOKEN_DATA_ACTION: Action
      • GET_TPS_ACTION: Action
      • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
      • LEND_ASSET_ACTION: Action
      • MINT_NFT_ACTION: Action
      • PYTH_FETCH_PRICE_ACTION: Action
      • RAYDIUM_CREATE_AMM_V4_ACTION: Action
      • RAYDIUM_CREATE_CPMM_ACTION: Action
      • REGISTER_DOMAIN_ACTION: Action
      • REQUEST_FUNDS_ACTION: Action
      • RESOLVE_DOMAIN_ACTION: Action
      • RESOLVE_SOL_DOMAIN_ACTION: Action
      • STAKE_WITH_JUP_ACTION: Action
      • TRADE_ACTION: Action
      • TRANSFER_ACTION: Action
      • WALLET_ADDRESS_ACTION: Action
      +ACTIONS | solana-agent-kit

      Variable ACTIONSConst

      ACTIONS: {
          BALANCE_ACTION: Action;
          CREATE_GIBWORK_TASK_ACTION: Action;
          CREATE_IMAGE_ACTION: Action;
          CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
          DEPLOY_COLLECTION_ACTION: Action;
          DEPLOY_TOKEN_ACTION: Action;
          FETCH_PRICE_ACTION: Action;
          GET_ALL_DOMAINS_TLDS_ACTION: Action;
          GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
          GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
          GET_OWNED_ALL_DOMAINS_ACTION: Action;
          GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
          GET_PRIMARY_DOMAIN_ACTION: Action;
          GET_TOKEN_DATA_ACTION: Action;
          GET_TPS_ACTION: Action;
          LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
          LEND_ASSET_ACTION: Action;
          MINT_NFT_ACTION: Action;
          PYTH_FETCH_PRICE_ACTION: Action;
          RAYDIUM_CREATE_AMM_V4_ACTION: Action;
          RAYDIUM_CREATE_CPMM_ACTION: Action;
          REGISTER_DOMAIN_ACTION: Action;
          REQUEST_FUNDS_ACTION: Action;
          RESOLVE_DOMAIN_ACTION: Action;
          RESOLVE_SOL_DOMAIN_ACTION: Action;
          STAKE_WITH_JUP_ACTION: Action;
          STAKE_WITH_SOLAYER_ACTION: Action;
          TRADE_ACTION: Action;
          TRANSFER_ACTION: Action;
          WALLET_ADDRESS_ACTION: Action;
      } = ...

      Type declaration

      • BALANCE_ACTION: Action
      • CREATE_GIBWORK_TASK_ACTION: Action
      • CREATE_IMAGE_ACTION: Action
      • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
      • DEPLOY_COLLECTION_ACTION: Action
      • DEPLOY_TOKEN_ACTION: Action
      • FETCH_PRICE_ACTION: Action
      • GET_ALL_DOMAINS_TLDS_ACTION: Action
      • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
      • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
      • GET_OWNED_ALL_DOMAINS_ACTION: Action
      • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
      • GET_PRIMARY_DOMAIN_ACTION: Action
      • GET_TOKEN_DATA_ACTION: Action
      • GET_TPS_ACTION: Action
      • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
      • LEND_ASSET_ACTION: Action
      • MINT_NFT_ACTION: Action
      • PYTH_FETCH_PRICE_ACTION: Action
      • RAYDIUM_CREATE_AMM_V4_ACTION: Action
      • RAYDIUM_CREATE_CPMM_ACTION: Action
      • REGISTER_DOMAIN_ACTION: Action
      • REQUEST_FUNDS_ACTION: Action
      • RESOLVE_DOMAIN_ACTION: Action
      • RESOLVE_SOL_DOMAIN_ACTION: Action
      • STAKE_WITH_JUP_ACTION: Action
      • STAKE_WITH_SOLAYER_ACTION: Action
      • TRADE_ACTION: Action
      • TRANSFER_ACTION: Action
      • WALLET_ADDRESS_ACTION: Action
      diff --git a/package.json b/package.json index 5b2c3e4..648ce0f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "solana-agent-kit", - "version": "1.3.4", + "version": "1.3.5", "description": "connect any ai agents to solana protocols", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 947282b..05add17 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true @@ -13,34 +13,34 @@ importers: version: 1.0.11(zod@3.24.1) '@bonfida/spl-name-service': specifier: ^3.0.7 - version: 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(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)(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.73 - version: 0.1.73(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + version: 0.1.73(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.8)(utf-8-validate@5.0.10) + version: 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@langchain/core': specifier: ^0.3.26 - version: 0.3.26(openai@4.77.0(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.26(openai@4.77.0(zod@3.24.1))) + 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.36(@langchain/core@0.3.26(openai@4.77.0(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.26(openai@4.77.0(zod@3.24.1))) + 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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10) + version: 0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/mpl-core': specifier: ^1.1.1 - version: 1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.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) @@ -52,37 +52,37 @@ 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.8)(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)(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.8)(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)(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.8)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.8)(utf-8-validate@5.0.10) + 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) '@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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.12(@coral-xyz/anchor@0.29.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.8)(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) '@pythnetwork/price-service-client': specifier: ^1.9.0 - version: 1.9.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + version: 1.9.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@raydium-io/raydium-sdk-v2': specifier: 0.1.95-alpha - version: 0.1.95-alpha(bufferutil@4.0.8)(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.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(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.2)(utf-8-validate@5.0.10) '@solana/web3.js': specifier: ^1.98.0 - version: 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + version: 1.98.0(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.8)(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.8)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10) + version: 0.3.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10) ai: specifier: ^4.0.22 version: 4.0.22(react@19.0.0)(zod@3.24.1) @@ -106,10 +106,10 @@ importers: version: 4.0.1 langchain: specifier: ^0.3.8 - version: 0.3.8(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.26(openai@4.77.0(zod@3.24.1))))(axios@1.7.9)(openai@4.77.0(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.0(zod@3.24.1) + version: 4.77.3(zod@3.24.1) typedoc: specifier: ^0.27.6 version: 0.27.6(typescript@5.7.2) @@ -125,13 +125,13 @@ importers: version: 5.0.1 '@types/node': specifier: ^22.10.2 - version: 22.10.2 + version: 22.10.5 '@typescript-eslint/eslint-plugin': specifier: ^8.18.2 - version: 8.18.2(@typescript-eslint/parser@8.18.2(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.18.2(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 @@ -146,7 +146,7 @@ importers: version: 3.4.2 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@22.10.2)(typescript@5.7.2) + version: 10.9.2(@types/node@22.10.5)(typescript@5.7.2) typescript: specifier: ^5.7.2 version: 5.7.2 @@ -196,11 +196,8 @@ packages: '@babel/runtime@7.26.0': resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - dev: false - /@bonfida/sns-records@0.0.1(@solana/web3.js@1.98.0): + '@bonfida/sns-records@0.0.1': resolution: {integrity: sha512-i28w9+BMFufhhpmLQCNx1CKKXTsEn+5RT18VFpPqdGO3sqaYlnUWC1m3wDpOvlzGk498dljgRpRo5wmcsnuEMg==} peerDependencies: '@solana/web3.js': ^1.87.3 @@ -300,8 +297,8 @@ packages: '@ethersproject/sha2@5.7.0': resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} - '@gerrit0/mini-shiki@1.24.4': - resolution: {integrity: sha512-YEHW1QeAg6UmxEmswiQbOVEg1CW22b1XUD/lNTliOsu0LD0wqoyleFMnmbTp697QE0pcadQiR5cVtbbAPncvpw==} + '@gerrit0/mini-shiki@1.26.1': + resolution: {integrity: sha512-gHFUvv9f1fU2Piou/5Y7Sx5moYxcERbC7CXc6rkDLQTUBg5Dgg9L4u29/nHqfoQ3Y9R0h0BcOhd14uOEZIBP7Q==} '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -346,8 +343,8 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@langchain/core@0.3.26': - resolution: {integrity: sha512-6RUQHEp8wv+JwtYIIEBYBzbLlcAQZFc7EDOgAM0ukExjh9HiXoJzoWpgMRRCrr/koIbtwXPJUqBprZK1I1CXHQ==} + '@langchain/core@0.3.27': + resolution: {integrity: sha512-jtJKbJWB1NPU1YvtrExOB2rumvUFgkJwlWGxyjSIV9A6zcLVmUbcZGV8fCSuXgl5bbzOIQLJ1xcLYQmbW9TkTg==} engines: {node: '>=18'} '@langchain/groq@0.1.2': @@ -362,11 +359,11 @@ packages: peerDependencies: '@langchain/core': '>=0.2.31 <0.4.0' - '@langchain/langgraph-sdk@0.0.32': - resolution: {integrity: sha512-KQyM9kLO7T6AxwNrceajH7JOybP3pYpvUPnhiI2rrVndI1WyZUJ1eVC1e722BVRAPi6o+WcoTT4uMSZVinPOtA==} + '@langchain/langgraph-sdk@0.0.33': + resolution: {integrity: sha512-l/hRbI6roLzplBXy2VyDUwqY1TkK7RcjPmrMUuVdvCCH4LTwLfIXh/G1kHatNiN7VUTskw0FkfBbgq6gtj0ang==} - '@langchain/langgraph@0.2.36': - resolution: {integrity: sha512-zxk7ZCVxP0/Ut9785EiXCS7BE7sXd8cu943mcZUF2aNFUaQRTBbbiKpNdR3nb1+xO/B+HVktrJT2VFdkAywnng==} + '@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' @@ -534,8 +531,8 @@ packages: '@noble/curves@1.4.2': resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} - '@noble/curves@1.7.0': - resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==} + '@noble/curves@1.8.0': + resolution: {integrity: sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==} engines: {node: ^14.21.3 || >=16} '@noble/hashes@1.4.0': @@ -546,12 +543,8 @@ packages: resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} engines: {node: ^14.21.3 || >=16} - '@noble/hashes@1.6.0': - resolution: {integrity: sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.6.1': - resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==} + '@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': @@ -586,8 +579,8 @@ packages: '@solana/web3.js': ^1.90.0 decimal.js: ^10.4.3 - '@orca-so/whirlpools-sdk@0.13.12': - resolution: {integrity: sha512-+LOqGTe0DYUsYwemltOU4WQIviqoICQlIcAmmEX/WnBh6wntpcLDcXkPV6dBHW7NA2/J8WEVAZ50biLJb4subg==} + '@orca-so/whirlpools-sdk@0.13.13': + resolution: {integrity: sha512-S3ovmnihBdZ5cmn3ylvJv+kAIUcGX5Y5RSWzv/WvF6etv/tLuO8FKc5mYxVenTa/NG78turTMbhujDdfGaahDw==} peerDependencies: '@coral-xyz/anchor': ~0.29.0 '@orca-so/common-sdk': 0.6.4 @@ -634,20 +627,26 @@ packages: '@scure/bip39@1.3.0': resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} - '@shikijs/core@1.24.4': - resolution: {integrity: sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==} + '@shikijs/core@1.26.1': + resolution: {integrity: sha512-yeo7sG+WZQblKPclUOKRPwkv1PyoHYkJ4gP9DzhFJbTdueKR7wYTI1vfF/bFi1NTgc545yG/DzvVhZgueVOXMA==} - '@shikijs/engine-javascript@1.24.4': - resolution: {integrity: sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==} + '@shikijs/engine-javascript@1.26.1': + resolution: {integrity: sha512-CRhA0b8CaSLxS0E9A4Bzcb3LKBNpykfo9F85ozlNyArxjo2NkijtiwrJZ6eHa+NT5I9Kox2IXVdjUsP4dilsmw==} - '@shikijs/engine-oniguruma@1.24.4': - resolution: {integrity: sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==} + '@shikijs/engine-oniguruma@1.26.1': + resolution: {integrity: sha512-F5XuxN1HljLuvfXv7d+mlTkV7XukC1cawdtOo+7pKgPD83CAB1Sf8uHqP3PK0u7njFH0ZhoXE1r+0JzEgAQ+kg==} - '@shikijs/types@1.24.4': - resolution: {integrity: sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==} + '@shikijs/langs@1.26.1': + resolution: {integrity: sha512-oz/TQiIqZejEIZbGtn68hbJijAOTtYH4TMMSWkWYozwqdpKR3EXgILneQy26WItmJjp3xVspHdiUxUCws4gtuw==} - '@shikijs/vscode-textmate@9.3.1': - resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} + '@shikijs/themes@1.26.1': + resolution: {integrity: sha512-JDxVn+z+wgLCiUhBGx2OQrLCkKZQGzNH3nAxFir4PjUcYiyD8Jdms9izyxIogYmSwmoPTatFTdzyrRKbKlSfPA==} + + '@shikijs/types@1.26.1': + resolution: {integrity: sha512-d4B00TKKAMaHuFYgRf3L0gwtvqpW4hVdVwKcZYbBfAAQXspgkbWqnFfuFl3MDH6gLbsubOcr+prcnsqah3ny7Q==} + + '@shikijs/vscode-textmate@10.0.1': + resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} '@solana/buffer-layout-utils@0.2.0': resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==} @@ -880,11 +879,11 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@18.19.68': - resolution: {integrity: sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==} + '@types/node@18.19.69': + resolution: {integrity: sha512-ECPdY1nlaiO/Y6GUnwgtAAhLNaQ53AyIVz+eILxpEo5OvuqE6yWkqWBIb5dU0DqhKQtMeny+FBD3PK6lm7L5xQ==} - '@types/node@22.10.2': - resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} + '@types/node@22.10.5': + resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==} '@types/promise-retry@1.1.6': resolution: {integrity: sha512-EC1+OMXV0PZb0pf+cmyxc43MEP2CDumZe4AfuxWboxxEixztIebknpJPZAX5XlodGF1OY+C1E/RAeNGzxf+bJA==} @@ -910,51 +909,51 @@ packages: '@types/ws@8.5.13': resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} - '@typescript-eslint/eslint-plugin@8.18.2': - resolution: {integrity: sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==} + '@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.18.2': - resolution: {integrity: sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==} + '@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.18.2': - resolution: {integrity: sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==} + '@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.18.2': - resolution: {integrity: sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==} + '@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.18.2': - resolution: {integrity: sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==} + '@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.18.2': - resolution: {integrity: sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==} + '@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.18.2': - resolution: {integrity: sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==} + '@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.18.2': - resolution: {integrity: sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==} + '@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': @@ -982,8 +981,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + agentkeepalive@4.6.0: + resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} ai@4.0.22: @@ -1135,8 +1134,8 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + bufferutil@4.0.9: + resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} engines: {node: '>=6.14.2'} call-bind-apply-helpers@1.0.1: @@ -1547,8 +1546,12 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - get-intrinsic@1.2.6: - resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} + get-intrinsic@1.2.7: + resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} glob-parent@5.1.2: @@ -1672,8 +1675,8 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} is-glob@4.0.3: @@ -1696,6 +1699,10 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + is-retry-allowed@2.2.0: resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} engines: {node: '>=10'} @@ -1792,12 +1799,13 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - langchain@0.3.8: - resolution: {integrity: sha512-EiAHFgBdThuXFmIx9j81wjdPItpRsw0Ck4r5dyhB74gyhehRGna/UK2CTqeKVnIUM/f4g4JbxUgAU4voXljDMw==} + langchain@0.3.9: + resolution: {integrity: sha512-uteRutI03Bt9f53nZmx8mWfJXkf6VlFVRuOprRJ0mWdCpkTP359sxrH4v6w4TokLiziPC/aMay662kmOz0dHlA==} engines: {node: '>=18'} peerDependencies: '@langchain/anthropic': '*' '@langchain/aws': '*' + '@langchain/cerebras': '*' '@langchain/cohere': '*' '@langchain/core': '>=0.2.21 <0.4.0' '@langchain/google-genai': '*' @@ -1815,6 +1823,8 @@ packages: optional: true '@langchain/aws': optional: true + '@langchain/cerebras': + optional: true '@langchain/cohere': optional: true '@langchain/google-genai': @@ -2031,11 +2041,11 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - oniguruma-to-es@0.8.1: - resolution: {integrity: sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==} + oniguruma-to-es@0.10.0: + resolution: {integrity: sha512-zapyOUOCJxt+xhiNRPPMtfJkHGsZ98HHB9qJEkdT8BGytO/+kpe4m1Ngf0MzbzTmhacn11w9yGeDP6tzDhnCdg==} - openai@4.77.0: - resolution: {integrity: sha512-WWacavtns/7pCUkOWvQIjyOfcdr9X+9n9Vvb0zFeKVDAqwCMDHB+iSr24SVaBAhplvSG6JrRXFpcNM9gWhOGIw==} + openai@4.77.3: + resolution: {integrity: sha512-wLDy4+KWHz31HRFMW2+9KQuVuT2QWhs0z94w1Gm1h2Ut9vIHr9/rHZggbykZEfyiaJRVgw8ZS9K6AylDWzvPYw==} hasBin: true peerDependencies: zod: ^3.23.8 @@ -2230,6 +2240,10 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} @@ -2254,8 +2268,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.24.4: - resolution: {integrity: sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==} + shiki@1.26.1: + resolution: {integrity: sha512-Gqg6DSTk3wYqaZ5OaYtzjcdxcBvX5kCy24yvRJEgjT5U+WHlmqCThLuBUx0juyxQBi+6ug53IGeuQS07DWwpcw==} signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} @@ -2590,8 +2604,8 @@ packages: xsalsa20@1.2.0: resolution: {integrity: sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w==} - yaml@2.6.1: - resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} + yaml@2.7.0: + resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} engines: {node: '>= 14'} hasBin: true @@ -2658,22 +2672,22 @@ snapshots: '@babel/runtime@7.26.0': dependencies: - '@solana/web3.js': 1.98.0 + 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))': + dependencies: + '@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 - dev: false - /@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-okOLXhy+fQoyQ/sZgMleO5RrIZfTkWEoHMxWgUqg6RP/MTBlrKxlhKC6ymKn4UUe0C5s3Nb8A+3Ams7vX0nMDg==} - peerDependencies: - '@solana/web3.js': ^1.87.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) - '@noble/curves': 1.7.0 + '@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.0 '@scure/base': 1.2.1 - '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0 + '@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 graphemesplit: 2.4.4 @@ -2685,20 +2699,16 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript - utf-8-validate - dev: false - /@cfworker/json-schema@4.0.3: - resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} - dev: false + '@cfworker/json-schema@4.0.3': {} - /@cks-systems/manifest-sdk@0.1.73(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-IcRM7k3YZ/jK5nJwE3xGp2Xg7Um4/XCeqrLs5yB3+IjS7W089Qs/prJXdRGKbFwCLkMt9ds6pElHufQr8an0Iw==} + '@cks-systems/manifest-sdk@0.1.73(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 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0 + '@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) bn.js: 5.2.1 borsh: 0.7.0 bs58: 6.0.0 @@ -2718,14 +2728,11 @@ snapshots: - supports-color - typescript - utf-8-validate - dev: false - /@coral-xyz/anchor@0.26.0: - resolution: {integrity: sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==} - engines: {node: '>=11'} + '@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) - '@solana/web3.js': 1.98.0 + '@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 @@ -2743,15 +2750,12 @@ snapshots: - bufferutil - encoding - utf-8-validate - dev: false - /@coral-xyz/anchor@0.29.0: - resolution: {integrity: sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==} - engines: {node: '>=11'} + '@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) - '@noble/hashes': 1.6.1 - '@solana/web3.js': 1.98.0 + '@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.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 buffer-layout: 1.2.2 @@ -2767,82 +2771,48 @@ snapshots: - bufferutil - encoding - utf-8-validate - dev: false - /@coral-xyz/borsh@0.26.0(@solana/web3.js@1.98.0): - resolution: {integrity: sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==} - engines: {node: '>=10'} - peerDependencies: - '@solana/web3.js': ^1.68.0 + '@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 + '@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 - dev: false - /@coral-xyz/borsh@0.29.0(@solana/web3.js@1.98.0): - resolution: {integrity: sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==} - engines: {node: '>=10'} - peerDependencies: - '@solana/web3.js': ^1.68.0 + '@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 + '@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 - dev: false - /@cspotcode/source-map-support@0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 - dev: true - /@eslint-community/eslint-utils@4.4.1(eslint@8.56.0): - resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)': dependencies: - eslint: 8.56.0 + eslint: 8.57.1 eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/eslint-utils@4.4.1(eslint@9.17.0): - resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.4.1(eslint@9.17.0)': dependencies: eslint: 9.17.0 eslint-visitor-keys: 3.4.3 - dev: false - /@eslint-community/regexpp@4.12.1: - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-community/regexpp@4.12.1': {} - /@eslint/config-array@0.19.1: - resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.19.1': dependencies: '@eslint/object-schema': 2.1.5 debug: 4.4.0 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: false - /@eslint/core@0.9.1: - resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.9.1': dependencies: '@types/json-schema': 7.0.15 - dev: false - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 debug: 4.4.0 @@ -2855,11 +2825,8 @@ snapshots: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true - /@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/eslintrc@3.2.0': dependencies: ajv: 6.12.6 debug: 4.4.0 @@ -2872,153 +2839,92 @@ snapshots: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: false - /@eslint/js@8.56.0: - resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + '@eslint/js@8.57.1': {} - /@eslint/js@9.17.0: - resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: false + '@eslint/js@9.17.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} - dev: false + '@eslint/object-schema@2.1.5': {} - /@eslint/plugin-kit@0.2.4: - resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.2.4': dependencies: levn: 0.4.1 - dev: false - /@ethereumjs/rlp@4.0.1: - resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} - engines: {node: '>=14'} - hasBin: true - dev: false + '@ethereumjs/rlp@4.0.1': {} - /@ethereumjs/util@8.1.0: - resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} - engines: {node: '>=14'} + '@ethereumjs/util@8.1.0': dependencies: '@ethereumjs/rlp': 4.0.1 ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 - dev: false - /@ethersproject/bytes@5.7.0: - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + '@ethersproject/bytes@5.7.0': dependencies: '@ethersproject/logger': 5.7.0 - dev: false - /@ethersproject/logger@5.7.0: - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - dev: false + '@ethersproject/logger@5.7.0': {} - /@ethersproject/sha2@5.7.0: - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + '@ethersproject/sha2@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 - dev: false - /@gerrit0/mini-shiki@1.24.4: - resolution: {integrity: sha512-YEHW1QeAg6UmxEmswiQbOVEg1CW22b1XUD/lNTliOsu0LD0wqoyleFMnmbTp697QE0pcadQiR5cVtbbAPncvpw==} + '@gerrit0/mini-shiki@1.26.1': dependencies: - '@shikijs/engine-oniguruma': 1.24.4 - '@shikijs/types': 1.24.4 - '@shikijs/vscode-textmate': 9.3.1 - dev: false + '@shikijs/engine-oniguruma': 1.26.1 + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 - /@humanfs/core@0.19.1: - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - dev: false + '@humanfs/core@0.19.1': {} - /@humanfs/node@0.16.6: - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} - engines: {node: '>=18.18.0'} + '@humanfs/node@0.16.6': dependencies: '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.3.1 - dev: false - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 debug: 4.4.0 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} + '@humanwhocodes/module-importer@1.0.1': {} - /@humanwhocodes/object-schema@2.0.3: - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead - dev: true + '@humanwhocodes/object-schema@2.0.3': {} - /@humanwhocodes/retry@0.3.1: - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - dev: false + '@humanwhocodes/retry@0.3.1': {} - /@humanwhocodes/retry@0.4.1: - resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} - engines: {node: '>=18.18'} - dev: false + '@humanwhocodes/retry@0.4.1': {} - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 + string-width-cjs: string-width@4.2.3 strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 + strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: false + wrap-ansi-cjs: wrap-ansi@7.0.0 - /@jridgewell/resolve-uri@3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - dev: true + '@jridgewell/resolve-uri@3.1.2': {} - /@jridgewell/sourcemap-codec@1.5.0: - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - dev: true + '@jridgewell/sourcemap-codec@1.5.0': {} - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - dev: true - /@langchain/core@0.3.26(openai@4.77.0): - resolution: {integrity: sha512-6RUQHEp8wv+JwtYIIEBYBzbLlcAQZFc7EDOgAM0ukExjh9HiXoJzoWpgMRRCrr/koIbtwXPJUqBprZK1I1CXHQ==} - engines: {node: '>=18'} + '@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))': dependencies: '@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.0) + 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 @@ -3027,89 +2933,58 @@ snapshots: zod-to-json-schema: 3.24.1(zod@3.24.1) transitivePeerDependencies: - openai - dev: false - /@langchain/groq@0.1.2(@langchain/core@0.3.26): - resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/core': '>=0.2.21 <0.4.0' + '@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.26(openai@4.77.0) - '@langchain/openai': 0.3.16(@langchain/core@0.3.26) + '@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 - dev: false - /@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.26): - resolution: {integrity: sha512-amdmBcNT8a9xP2VwcEWxqArng4gtRDcnVyVI4DsQIo1Aaz8e8+hH17zSwrUF3pt1pIYztngIfYnBOim31mtKMg==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/core': '>=0.2.31 <0.4.0' + '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.26(openai@4.77.0) + '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) uuid: 10.0.0 - dev: false - /@langchain/langgraph-sdk@0.0.33: - resolution: {integrity: sha512-l/hRbI6roLzplBXy2VyDUwqY1TkK7RcjPmrMUuVdvCCH4LTwLfIXh/G1kHatNiN7VUTskw0FkfBbgq6gtj0ang==} + '@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 - dev: false - /@langchain/langgraph@0.2.36(@langchain/core@0.3.26): - resolution: {integrity: sha512-zxk7ZCVxP0/Ut9785EiXCS7BE7sXd8cu943mcZUF2aNFUaQRTBbbiKpNdR3nb1+xO/B+HVktrJT2VFdkAywnng==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/core': '>=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0' + '@langchain/langgraph@0.2.38(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.26(openai@4.77.0) - '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.26) + '@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 - dev: false - /@langchain/openai@0.3.16(@langchain/core@0.3.26): - resolution: {integrity: sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/core': '>=0.2.26 <0.4.0' + '@langchain/openai@0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.26(openai@4.77.0) + '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) js-tiktoken: 1.0.16 - openai: 4.77.0(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 - dev: false - /@langchain/textsplitters@0.1.0(@langchain/core@0.3.26): - resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/core': '>=0.2.21 <0.4.0' + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.26(openai@4.77.0) + '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) js-tiktoken: 1.0.16 - dev: false - /@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-493KCmZGw1BcHVRJaeRm8EEs+L7gX8dwY7JG13w2pfgOMtZXZ7Wxt261jFJxQJzRLTrUSlrbRJOmfW1+S1Y8SQ==} - peerDependencies: - '@lightprotocol/stateless.js': 0.17.1 + '@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 - '@lightprotocol/stateless.js': 0.17.1 - '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.95.3 + '@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) buffer: 6.0.3 tweetnacl: 1.0.3 transitivePeerDependencies: @@ -3118,14 +2993,12 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript - utf-8-validate - dev: false - /@lightprotocol/stateless.js@0.17.1: - resolution: {integrity: sha512-EjId1n33A6dBwpce33Wsa/fs/CDKtMtRrkxbApH0alXrnEXmbW6QhIViXOrKYXjZ4uJQM1xsBtsKe0vqJ4nbtQ==} + '@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0 + '@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 + '@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 @@ -3133,13 +3006,11 @@ snapshots: - bufferutil - encoding - utf-8-validate - dev: false - /@metaplex-foundation/beet-solana@0.3.1: - resolution: {integrity: sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g==} + '@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 + '@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: @@ -3147,13 +3018,11 @@ snapshots: - encoding - supports-color - utf-8-validate - dev: false - /@metaplex-foundation/beet-solana@0.4.0: - resolution: {integrity: sha512-B1L94N3ZGMo53b0uOSoznbuM5GBNJ8LwSeznxBxJ+OThvfHQ4B5oMUqb+0zdLRfkKGS7Q6tpHK9P+QK0j3w2cQ==} + '@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 + '@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: @@ -3161,13 +3030,11 @@ snapshots: - encoding - supports-color - utf-8-validate - dev: false - /@metaplex-foundation/beet-solana@0.4.1: - resolution: {integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==} + '@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 + '@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: @@ -3175,40 +3042,32 @@ snapshots: - encoding - supports-color - utf-8-validate - dev: false - /@metaplex-foundation/beet@0.4.0: - resolution: {integrity: sha512-2OAKJnLatCc3mBXNL0QmWVQKAWK2C7XDfepgL0p/9+8oSx4bmRAFHFqptl1A/C0U5O3dxGwKfmKluW161OVGcA==} + '@metaplex-foundation/beet@0.4.0': dependencies: ansicolors: 0.3.2 bn.js: 5.2.1 debug: 4.4.0 transitivePeerDependencies: - supports-color - dev: false - /@metaplex-foundation/beet@0.6.1: - resolution: {integrity: sha512-OYgnijLFzw0cdUlRKH5POp0unQECPOW9muJ2X3QIVyak5G6I6l/rKo72sICgPLIFKdmsi2jmnkuLY7wp14iXdw==} + '@metaplex-foundation/beet@0.6.1': dependencies: ansicolors: 0.3.2 bn.js: 5.2.1 debug: 4.4.0 transitivePeerDependencies: - supports-color - dev: false - /@metaplex-foundation/beet@0.7.1: - resolution: {integrity: sha512-hNCEnS2WyCiYyko82rwuISsBY3KYpe828ubsd2ckeqZr7tl0WVLivGkoyA/qdiaaHEBGdGl71OpfWa2rqL3DiA==} + '@metaplex-foundation/beet@0.7.1': dependencies: ansicolors: 0.3.2 bn.js: 5.2.1 debug: 4.4.0 transitivePeerDependencies: - supports-color - dev: false - /@metaplex-foundation/beet@0.7.2: - resolution: {integrity: sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg==} + '@metaplex-foundation/beet@0.7.2': dependencies: ansicolors: 0.3.2 assert: 2.1.0 @@ -3216,20 +3075,16 @@ snapshots: debug: 4.4.0 transitivePeerDependencies: - supports-color - dev: false - /@metaplex-foundation/cusper@0.0.2: - resolution: {integrity: sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==} - dev: false + '@metaplex-foundation/cusper@0.0.2': {} - /@metaplex-foundation/mpl-auction-house@2.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-O+IAdYVaoOvgACB8pm+1lF5BNEjl0COkqny2Ho8KQZwka6aC/vHbZ239yRwAMtJhf5992BPFdT4oifjyE0O+Mw==} + '@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 + '@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)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0 + '@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: - bufferutil @@ -3238,18 +3093,16 @@ snapshots: - supports-color - typescript - utf-8-validate - dev: false - /@metaplex-foundation/mpl-bubblegum@0.7.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-HCo6q+nh8M3KRv9/aUaZcJo5/vPJEeZwPGRDWkqN7lUXoMIvhd83fZi7MB1rIg1gwpVHfHqim0A02LCYKisWFg==} + '@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 + '@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(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0) - '@solana/spl-token': 0.1.8 - '@solana/web3.js': 1.98.0 + '@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) js-sha3: 0.8.0 transitivePeerDependencies: - bufferutil @@ -3258,27 +3111,20 @@ snapshots: - supports-color - typescript - utf-8-validate - dev: false - /@metaplex-foundation/mpl-core@1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.6.1): - resolution: {integrity: sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA==} - peerDependencies: - '@metaplex-foundation/umi': '>=0.8.2 < 1' - '@noble/hashes': ^1.3.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.6.1 - dev: false + '@noble/hashes': 1.7.0 - /@metaplex-foundation/mpl-token-metadata@2.13.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==} + '@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.1 - '@metaplex-foundation/beet-solana': 0.4.0 + '@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)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0 + '@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 transitivePeerDependencies: @@ -3288,27 +3134,17 @@ snapshots: - supports-color - typescript - utf-8-validate - dev: false - /@metaplex-foundation/mpl-token-metadata@3.3.0(@metaplex-foundation/umi@0.9.2): - resolution: {integrity: sha512-t5vO8Wr3ZZZPGrVrGNcosX5FMkwQSgBiVMQMRNDG2De7voYFJmIibD5jdG05EoQ4Y5kZVEiwhYaO+wJB3aO5AA==} - peerDependencies: - '@metaplex-foundation/umi': '>= 0.8.2 < 1' + '@metaplex-foundation/mpl-token-metadata@3.3.0(@metaplex-foundation/umi@0.9.2)': dependencies: '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) '@metaplex-foundation/umi': 0.9.2 - dev: false - /@metaplex-foundation/mpl-toolbox@0.9.4(@metaplex-foundation/umi@0.9.2): - resolution: {integrity: sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ==} - peerDependencies: - '@metaplex-foundation/umi': '>= 0.8.2 < 1' + '@metaplex-foundation/mpl-toolbox@0.9.4(@metaplex-foundation/umi@0.9.2)': dependencies: '@metaplex-foundation/umi': 0.9.2 - dev: false - /@metaplex-foundation/rustbin@0.3.5: - resolution: {integrity: sha512-m0wkRBEQB/8krwMwKBvFugufZtYwMXiGHud2cTDAv+aGXK4M90y0Hx67/wpu+AqqoQfdV8VM9YezUOHKD+Z5kA==} + '@metaplex-foundation/rustbin@0.3.5': dependencies: debug: 4.4.0 semver: 7.6.3 @@ -3316,16 +3152,13 @@ snapshots: toml: 3.0.0 transitivePeerDependencies: - supports-color - dev: false - /@metaplex-foundation/solita@0.12.2: - resolution: {integrity: sha512-oczMfE43NNHWweSqhXPTkQBUbap/aAiwjDQw8zLKNnd/J8sXr/0+rKcN5yJIEgcHeKRkp90eTqkmt2WepQc8yw==} - hasBin: true + '@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 + '@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 + '@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 @@ -3338,322 +3171,190 @@ snapshots: - jiti - supports-color - utf-8-validate - dev: false - /@metaplex-foundation/umi-bundle-defaults@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0): - resolution: {integrity: sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - '@solana/web3.js': ^1.72.0 + '@metaplex-foundation/umi-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) + '@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) + '@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) - '@solana/web3.js': 1.98.0 + '@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 - dev: false - /@metaplex-foundation/umi-downloader-http@0.9.2(@metaplex-foundation/umi@0.9.2): - resolution: {integrity: sha512-tzPT9hBwenzTzAQg07rmsrqZfgguAXELbcJrsYMoASp5VqWFXYIP00g94KET6XLjWUXH4P1J2zoa6hGennPXHA==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 + '@metaplex-foundation/umi-downloader-http@0.9.2(@metaplex-foundation/umi@0.9.2)': dependencies: '@metaplex-foundation/umi': 0.9.2 - dev: false - /@metaplex-foundation/umi-eddsa-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0): - resolution: {integrity: sha512-hhPCxXbYIp4BC4z9gK78sXpWLkNSrfv4ndhF5ruAkdIp7GcRVYKj0QnOUO6lGYGiIkNlw20yoTwOe1CT//OfTQ==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - '@solana/web3.js': ^1.72.0 + '@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) - '@noble/curves': 1.7.0 - '@solana/web3.js': 1.98.0 - dev: false + '@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.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): - resolution: {integrity: sha512-YCZuBu24T9ZzEDe4+w12LEZm/fO9pkyViZufGgASC5NX93814Lvf6Ssjn/hZzjfA7CvZbvLFbmujc6CV3Q/m9Q==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 + '@metaplex-foundation/umi-http-fetch@0.9.2(@metaplex-foundation/umi@0.9.2)': dependencies: '@metaplex-foundation/umi': 0.9.2 node-fetch: 2.7.0 transitivePeerDependencies: - encoding - dev: false - /@metaplex-foundation/umi-options@0.8.9: - resolution: {integrity: sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A==} - dev: false + '@metaplex-foundation/umi-options@0.8.9': {} - /@metaplex-foundation/umi-program-repository@0.9.2(@metaplex-foundation/umi@0.9.2): - resolution: {integrity: sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 + '@metaplex-foundation/umi-program-repository@0.9.2(@metaplex-foundation/umi@0.9.2)': dependencies: '@metaplex-foundation/umi': 0.9.2 - dev: false - /@metaplex-foundation/umi-public-keys@0.8.9: - resolution: {integrity: sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q==} + '@metaplex-foundation/umi-public-keys@0.8.9': dependencies: '@metaplex-foundation/umi-serializers-encodings': 0.8.9 - dev: false - /@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2(@metaplex-foundation/umi@0.9.2): - resolution: {integrity: sha512-YRwVf6xH0jPBAUgMhEPi+UbjioAeqTXmjsN2TnmQCPAmHbrHrMRj0rlWYwFLWAgkmoxazYrXP9lqOFRrfOGAEA==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 + '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2(@metaplex-foundation/umi@0.9.2)': dependencies: '@metaplex-foundation/umi': 0.9.2 - dev: false - /@metaplex-foundation/umi-rpc-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0): - resolution: {integrity: sha512-MqcsBz8B4wGl6jxsf2Jo/rAEpYReU9VCSR15QSjhvADHMmdFxCIZCCAgE+gDE2Vuanfl437VhOcP3g5Uw8C16Q==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - '@solana/web3.js': ^1.72.0 + '@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) - '@solana/web3.js': 1.98.0 - dev: false + '@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): - resolution: {integrity: sha512-5vGptadJxUxvUcyrwFZxXlEc6Q7AYySBesizCtrBFUY8w8PnF2vzmS45CP1MLySEATNH6T9mD4Rs0tLb87iQyA==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 + '@metaplex-foundation/umi-serializer-data-view@0.9.2(@metaplex-foundation/umi@0.9.2)': dependencies: '@metaplex-foundation/umi': 0.9.2 - dev: false - /@metaplex-foundation/umi-serializers-core@0.8.9: - resolution: {integrity: sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w==} - dev: false + '@metaplex-foundation/umi-serializers-core@0.8.9': {} - /@metaplex-foundation/umi-serializers-encodings@0.8.9: - resolution: {integrity: sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q==} + '@metaplex-foundation/umi-serializers-encodings@0.8.9': dependencies: '@metaplex-foundation/umi-serializers-core': 0.8.9 - dev: false - /@metaplex-foundation/umi-serializers-numbers@0.8.9: - resolution: {integrity: sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg==} + '@metaplex-foundation/umi-serializers-numbers@0.8.9': dependencies: '@metaplex-foundation/umi-serializers-core': 0.8.9 - dev: false - /@metaplex-foundation/umi-serializers@0.9.0: - resolution: {integrity: sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg==} + '@metaplex-foundation/umi-serializers@0.9.0': dependencies: '@metaplex-foundation/umi-options': 0.8.9 '@metaplex-foundation/umi-public-keys': 0.8.9 '@metaplex-foundation/umi-serializers-core': 0.8.9 '@metaplex-foundation/umi-serializers-encodings': 0.8.9 '@metaplex-foundation/umi-serializers-numbers': 0.8.9 - dev: false - /@metaplex-foundation/umi-transaction-factory-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0): - resolution: {integrity: sha512-fR1Kf21uylMFd1Smkltmj4jTNxhqSWf416owsJ+T+cvJi2VCOcOwq/3UFzOrpz78fA0RhsajKYKj0HYsRnQI1g==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - '@solana/web3.js': ^1.72.0 + '@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) - '@solana/web3.js': 1.98.0 - dev: false + '@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): - resolution: {integrity: sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA==} - peerDependencies: - '@metaplex-foundation/umi': ^0.9.2 - '@solana/web3.js': ^1.72.0 + '@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 + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 - dev: false - /@metaplex-foundation/umi@0.9.2: - resolution: {integrity: sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw==} + '@metaplex-foundation/umi@0.9.2': dependencies: '@metaplex-foundation/umi-options': 0.8.9 '@metaplex-foundation/umi-public-keys': 0.8.9 '@metaplex-foundation/umi-serializers': 0.9.0 - dev: false - /@msgpack/msgpack@2.8.0: - resolution: {integrity: sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==} - engines: {node: '>= 10'} - dev: false + '@msgpack/msgpack@2.8.0': {} - /@msgpack/msgpack@3.0.0-beta2: - resolution: {integrity: sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==} - engines: {node: '>= 14'} - dev: false + '@msgpack/msgpack@3.0.0-beta2': {} - /@noble/curves@1.4.2: - resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + '@noble/curves@1.4.2': dependencies: '@noble/hashes': 1.4.0 - dev: false - /@noble/curves@1.7.0: - resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==} - engines: {node: ^14.21.3 || >=16} + '@noble/curves@1.8.0': dependencies: - '@noble/hashes': 1.6.0 - dev: false + '@noble/hashes': 1.7.0 - /@noble/hashes@1.4.0: - resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} - engines: {node: '>= 16'} - dev: false + '@noble/hashes@1.4.0': {} - /@noble/hashes@1.5.0: - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - dev: false + '@noble/hashes@1.5.0': {} - /@noble/hashes@1.6.0: - resolution: {integrity: sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==} - engines: {node: ^14.21.3 || >=16} - dev: false + '@noble/hashes@1.7.0': {} - /@noble/hashes@1.6.1: - resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==} - engines: {node: ^14.21.3 || >=16} - dev: false - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true + '@nodelib/fs.stat@2.0.5': {} - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.18.0 - dev: true - /@onsol/tldparser@0.6.7(@solana/web3.js@1.98.0)(bn.js@5.2.1)(borsh@0.7.0)(buffer@6.0.1): - resolution: {integrity: sha512-QwkRDLyC514pxeplCCXZ2kTiRcJSeUrpp+9o2XqLbePy/qzZGGG8I0UbXUKuWVD/bUL1zAm21+D+Eu30OKwcQg==} - engines: {node: '>=14'} - peerDependencies: - '@solana/web3.js': ^1.95.3 - bn.js: ^5.2.1 - borsh: ^0.7.0 - buffer: 6.0.1 + '@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 - '@solana/web3.js': 1.98.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) bn.js: 5.2.1 - borsh: 0.7.0 - buffer: 6.0.1 + borsh: 2.0.0 + buffer: 6.0.3 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - dev: false - /@opentelemetry/api@1.9.0: - resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} - engines: {node: '>=8.0.0'} - dev: false + '@opentelemetry/api@1.9.0': {} - /@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9)(@solana/web3.js@1.98.0)(decimal.js@10.4.3): - resolution: {integrity: sha512-iOiC6exTA9t2CEOaUPoWlNP3soN/1yZFjoz1mSf7NvOqo/PJZeIdWpB7BRXwU0mGGatjxU4SFgMGQ8NrSx+ONw==} - peerDependencies: - '@solana/spl-token': ^0.4.1 - '@solana/web3.js': ^1.90.0 - 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)(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: - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0 + '@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 - dev: false - /@orca-so/whirlpools-sdk@0.13.12(@coral-xyz/anchor@0.29.0)(@orca-so/common-sdk@0.6.4)(@solana/spl-token@0.4.9)(@solana/web3.js@1.98.0)(decimal.js@10.4.3): - resolution: {integrity: sha512-+LOqGTe0DYUsYwemltOU4WQIviqoICQlIcAmmEX/WnBh6wntpcLDcXkPV6dBHW7NA2/J8WEVAZ50biLJb4subg==} - peerDependencies: - '@coral-xyz/anchor': ~0.29.0 - '@orca-so/common-sdk': 0.6.4 - '@solana/spl-token': ^0.4.8 - '@solana/web3.js': ^1.90.0 - 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 - '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9)(@solana/web3.js@1.98.0)(decimal.js@10.4.3) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0 + '@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 tiny-invariant: 1.3.3 - dev: false - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true - dev: false + '@pkgjs/parseargs@0.11.0': optional: true - /@pkgr/core@0.1.1: - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dev: true + '@pkgr/core@0.1.1': {} - /@pythnetwork/price-service-client@1.9.0: - resolution: {integrity: sha512-SLm3IFcfmy9iMqHeT4Ih6qMNZhJEefY14T9yTlpsH2D/FE5+BaGGnfcexUifVlfH6M7mwRC4hEFdNvZ6ebZjJg==} - deprecated: This package is deprecated and is no longer maintained. Please use @pythnetwork/hermes-client instead. + '@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 '@types/ws': 8.5.13 axios: 1.7.9 axios-retry: 3.9.1 - isomorphic-ws: 4.0.1(ws@8.18.0) + isomorphic-ws: 4.0.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) ts-log: 2.2.7 ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - debug - utf-8-validate - dev: false - /@pythnetwork/price-service-sdk@1.8.0: - resolution: {integrity: sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA==} + '@pythnetwork/price-service-sdk@1.8.0': dependencies: bn.js: 5.2.1 - dev: false - /@raydium-io/raydium-sdk-v2@0.1.95-alpha(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-+u7yxo/R1JDysTCzOuAlh90ioBe2DlM2Hbcz/tFsxP/YzmnYQzShvNjcmc0361a4zJhmlrEJfpFXW0J3kkX5vA==} + '@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)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0 + '@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 bn.js: 5.2.1 @@ -3670,23 +3371,16 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript - utf-8-validate - dev: false - /@saberhq/option-utils@1.15.0: - resolution: {integrity: sha512-XVbS9H4b8PIGXJGaErkOurxV2FKFyvMwYq0pD8Y1iEPoi6HB//+HnpEKAv8tCssIQ5Nn1zQWzmQ9CmGkrwzcsw==} + '@saberhq/option-utils@1.15.0': dependencies: tslib: 2.8.1 - dev: false - /@saberhq/solana-contrib@1.15.0(@solana/web3.js@1.98.0)(bn.js@5.2.1): - resolution: {integrity: sha512-OExL5qGrNMmIKINU7qFUDmY7+xIwVM2s360g99k8CRNHSnjpnqIzwDjr2CnvEFpeQPp22OdGlS63woDp0w0JsQ==} - peerDependencies: - '@solana/web3.js': ^1.42 - bn.js: ^4 || ^5 + '@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 + '@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 @@ -3694,252 +3388,173 @@ snapshots: retry: 0.13.1 tiny-invariant: 1.3.3 tslib: 2.8.1 - dev: false - /@scure/base@1.1.9: - resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} - dev: false + '@scure/base@1.1.9': {} - /@scure/base@1.2.1: - resolution: {integrity: sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==} - dev: false + '@scure/base@1.2.1': {} - /@scure/bip32@1.4.0: - resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + '@scure/bip32@1.4.0': dependencies: '@noble/curves': 1.4.2 '@noble/hashes': 1.4.0 '@scure/base': 1.1.9 - dev: false - /@scure/bip39@1.3.0: - resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + '@scure/bip39@1.3.0': dependencies: '@noble/hashes': 1.4.0 '@scure/base': 1.1.9 - dev: false - /@shikijs/core@1.24.4: - resolution: {integrity: sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==} + '@shikijs/core@1.26.1': dependencies: - '@shikijs/engine-javascript': 1.24.4 - '@shikijs/engine-oniguruma': 1.24.4 - '@shikijs/types': 1.24.4 - '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/engine-javascript': 1.26.1 + '@shikijs/engine-oniguruma': 1.26.1 + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 hast-util-to-html: 9.0.4 - dev: false - /@shikijs/engine-javascript@1.24.4: - resolution: {integrity: sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==} + '@shikijs/engine-javascript@1.26.1': dependencies: - '@shikijs/types': 1.24.4 - '@shikijs/vscode-textmate': 9.3.1 - oniguruma-to-es: 0.8.1 - dev: false + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 + oniguruma-to-es: 0.10.0 - /@shikijs/engine-oniguruma@1.24.4: - resolution: {integrity: sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==} + '@shikijs/engine-oniguruma@1.26.1': dependencies: - '@shikijs/types': 1.24.4 - '@shikijs/vscode-textmate': 9.3.1 - dev: false + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 - /@shikijs/types@1.24.4: - resolution: {integrity: sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==} + '@shikijs/langs@1.26.1': dependencies: - '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/types': 1.26.1 + + '@shikijs/themes@1.26.1': + dependencies: + '@shikijs/types': 1.26.1 + + '@shikijs/types@1.26.1': + dependencies: + '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 - dev: false - /@shikijs/vscode-textmate@9.3.1: - resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} - dev: false + '@shikijs/vscode-textmate@10.0.1': {} - /@solana/buffer-layout-utils@0.2.0: - resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==} - engines: {node: '>= 10'} + '@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 + '@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: - bufferutil - encoding - utf-8-validate - dev: false - /@solana/buffer-layout@4.0.1: - resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} - engines: {node: '>=5.10'} + '@solana/buffer-layout@4.0.1': dependencies: buffer: 6.0.3 - dev: false - /@solana/codecs-core@2.0.0-preview.2: - resolution: {integrity: sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg==} + '@solana/codecs-core@2.0.0-preview.2': dependencies: '@solana/errors': 2.0.0-preview.2 - dev: false - /@solana/codecs-core@2.0.0-preview.4(typescript@5.7.2): - resolution: {integrity: sha512-A0VVuDDA5kNKZUinOqHxJQK32aKTucaVbvn31YenGzHX1gPqq+SOnFwgaEY6pq4XEopSmaK16w938ZQS8IvCnw==} - peerDependencies: - typescript: '>=5' + '@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 - dev: false - /@solana/codecs-core@2.0.0-rc.1(typescript@4.9.5): - resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==} - peerDependencies: - typescript: '>=5' + '@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 - dev: false - /@solana/codecs-core@2.0.0-rc.1(typescript@5.7.2): - resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==} - peerDependencies: - typescript: '>=5' + '@solana/codecs-core@2.0.0-rc.1(typescript@5.7.2)': dependencies: '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) typescript: 5.7.2 - dev: false - /@solana/codecs-data-structures@2.0.0-preview.2: - resolution: {integrity: sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg==} + '@solana/codecs-data-structures@2.0.0-preview.2': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/codecs-numbers': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - dev: false - /@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.7.2): - resolution: {integrity: sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA==} - peerDependencies: - typescript: '>=5' + '@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 - dev: false - /@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5): - resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==} - peerDependencies: - typescript: '>=5' + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) typescript: 4.9.5 - dev: false - /@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.2): - resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==} - peerDependencies: - typescript: '>=5' + '@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.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 - dev: false - /@solana/codecs-numbers@2.0.0-preview.2: - resolution: {integrity: sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw==} + '@solana/codecs-numbers@2.0.0-preview.2': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - dev: false - /@solana/codecs-numbers@2.0.0-preview.4(typescript@5.7.2): - resolution: {integrity: sha512-Q061rLtMadsO7uxpguT+Z7G4UHnjQ6moVIxAQxR58nLxDPCC7MB1Pk106/Z7NDhDLHTcd18uO6DZ7ajHZEn2XQ==} - peerDependencies: - typescript: '>=5' + '@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 - dev: false - /@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5): - resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==} - peerDependencies: - typescript: '>=5' + '@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) typescript: 4.9.5 - dev: false - /@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.2): - resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==} - peerDependencies: - typescript: '>=5' + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.2)': 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 - dev: false - /@solana/codecs-strings@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22): - resolution: {integrity: sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g==} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 + '@solana/codecs-strings@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/codecs-numbers': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 fastestsmallesttextencoderdecoder: 1.0.22 - dev: false - /@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-YDbsQePRWm+xnrfS64losSGRg8Wb76cjK1K6qfR8LPmdwIC3787x9uW5/E4icl/k+9nwgbIRXZ65lpF+ucZUnw==} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5' + '@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) fastestsmallesttextencoderdecoder: 1.0.22 typescript: 5.7.2 - dev: false - /@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5): - resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5' + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) fastestsmallesttextencoderdecoder: 1.0.22 typescript: 4.9.5 - dev: false - /@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==} - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: '>=5' + '@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.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.2 - dev: false - /@solana/codecs@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22): - resolution: {integrity: sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA==} + '@solana/codecs@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/codecs-data-structures': 2.0.0-preview.2 @@ -3948,12 +3563,8 @@ snapshots: '@solana/options': 2.0.0-preview.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - dev: false - /@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-gLMupqI4i+G4uPi2SGF/Tc1aXcviZF2ybC81x7Q/fARamNSgNOCUUoSCg9nWu1Gid6+UhA7LH80sWI8XjKaRog==} - peerDependencies: - typescript: '>=5' + '@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) '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.2) @@ -3963,12 +3574,8 @@ snapshots: typescript: 5.7.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - dev: false - /@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5): - resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==} - peerDependencies: - typescript: '>=5' + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) @@ -3978,12 +3585,8 @@ snapshots: typescript: 4.9.5 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - dev: false - /@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==} - peerDependencies: - typescript: '>=5' + '@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.2) '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.2) @@ -3993,60 +3596,36 @@ snapshots: typescript: 5.7.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - dev: false - /@solana/errors@2.0.0-preview.2: - resolution: {integrity: sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA==} - hasBin: true + '@solana/errors@2.0.0-preview.2': dependencies: chalk: 5.4.1 commander: 12.1.0 - dev: false - /@solana/errors@2.0.0-preview.4(typescript@5.7.2): - resolution: {integrity: sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA==} - hasBin: true - peerDependencies: - typescript: '>=5' + '@solana/errors@2.0.0-preview.4(typescript@5.7.2)': dependencies: chalk: 5.4.1 commander: 12.1.0 typescript: 5.7.2 - dev: false - /@solana/errors@2.0.0-rc.1(typescript@4.9.5): - resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==} - hasBin: true - peerDependencies: - typescript: '>=5' + '@solana/errors@2.0.0-rc.1(typescript@4.9.5)': dependencies: chalk: 5.4.1 commander: 12.1.0 typescript: 4.9.5 - dev: false - /@solana/errors@2.0.0-rc.1(typescript@5.7.2): - resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==} - hasBin: true - peerDependencies: - typescript: '>=5' + '@solana/errors@2.0.0-rc.1(typescript@5.7.2)': dependencies: chalk: 5.4.1 commander: 12.1.0 typescript: 5.7.2 - dev: false - /@solana/options@2.0.0-preview.2: - resolution: {integrity: sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w==} + '@solana/options@2.0.0-preview.2': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/codecs-numbers': 2.0.0-preview.2 - dev: false - /@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-tv2O/Frxql/wSe3jbzi5nVicIWIus/BftH+5ZR+r9r3FO0/htEllZS5Q9XdbmSboHu+St87584JXeDx3xm4jaA==} - peerDependencies: - typescript: '>=5' + '@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) '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.2) @@ -4056,12 +3635,8 @@ snapshots: typescript: 5.7.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - dev: false - /@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5): - resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==} - peerDependencies: - typescript: '>=5' + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) @@ -4071,12 +3646,8 @@ snapshots: typescript: 4.9.5 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - dev: false - /@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==} - peerDependencies: - typescript: '>=5' + '@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.2) '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.2) @@ -4086,17 +3657,12 @@ snapshots: typescript: 5.7.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - dev: false - /@solana/spl-account-compression@0.1.10(@solana/web3.js@1.98.0): - resolution: {integrity: sha512-IQAOJrVOUo6LCgeWW9lHuXo6JDbi4g3/RkQtvY0SyalvSWk9BIkHHe4IkAzaQw8q/BxEVBIjz8e9bNYWIAESNw==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.50.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)': dependencies: '@metaplex-foundation/beet': 0.7.2 - '@metaplex-foundation/beet-solana': 0.4.1 - '@solana/web3.js': 1.98.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) bn.js: 5.2.1 borsh: 0.7.0 js-sha3: 0.8.0 @@ -4106,93 +3672,60 @@ snapshots: - encoding - supports-color - utf-8-validate - dev: false - /@solana/spl-token-group@0.0.4(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22): - resolution: {integrity: sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.91.6 + '@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 + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - dev: false - /@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-CLJnWEcdoUBpQJfx9WEbX3h6nTdNiUzswfFdkABUik7HVwSNA98u5AYvBVK2H93d9PGMOHAak2lHW9xr+zAJGQ==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.94.0 + '@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.2) '@solana/spl-type-length-value': 0.1.0 - '@solana/web3.js': 1.95.3 + '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - dev: false - /@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.95.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.2) - '@solana/web3.js': 1.98.0 + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - dev: false - /@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.95.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.2)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.95.3 + '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - dev: false - /@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5): - resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.95.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)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.98.0 + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - dev: false - /@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.95.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.2) - '@solana/web3.js': 1.98.0 + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - dev: false - /@solana/spl-token@0.1.8: - resolution: {integrity: sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ==} - engines: {node: '>= 10'} + '@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 + '@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 @@ -4201,18 +3734,13 @@ snapshots: - bufferutil - encoding - utf-8-validate - dev: false - /@solana/spl-token@0.3.11(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5): - resolution: {integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.88.0 + '@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 - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.98.0 + '@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 @@ -4220,18 +3748,13 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript - utf-8-validate - dev: false - /@solana/spl-token@0.3.11(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.88.0 + '@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 - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0 + '@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 @@ -4239,19 +3762,14 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript - utf-8-validate - dev: false - /@solana/spl-token@0.4.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.91.6 + '@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 - '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0 + '@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) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -4259,19 +3777,14 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript - utf-8-validate - dev: false - /@solana/spl-token@0.4.8(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-RO0JD9vPRi4LsAbMUdNbDJ5/cv2z11MGhtAvFeRzT4+hAGE/FUzRi0tkkWtuCfSIU3twC6CtmAihRp/+XXjWsA==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.94.0 + '@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 - '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.95.3 + '@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) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -4279,19 +3792,14 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript - utf-8-validate - dev: false - /@solana/spl-token@0.4.9(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-g3wbj4F4gq82YQlwqhPB0gHFXfgsC6UmyGMxtSLf/BozT/oKd59465DbnlUK8L8EcimKMavxsVAMoLcEdeCicg==} - engines: {node: '>=16'} - peerDependencies: - '@solana/web3.js': ^1.95.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)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0 - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0 + '@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) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -4299,21 +3807,16 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript - utf-8-validate - dev: false - /@solana/spl-type-length-value@0.1.0: - resolution: {integrity: sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA==} - engines: {node: '>=16'} + '@solana/spl-type-length-value@0.1.0': dependencies: buffer: 6.0.3 - dev: false - /@solana/web3.js@1.95.3: - resolution: {integrity: sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==} + '@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.7.0 - '@noble/hashes': 1.6.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 @@ -4322,7 +3825,7 @@ snapshots: bs58: 4.0.1 buffer: 6.0.3 fast-stable-stringify: 1.0.0 - jayson: 4.1.3 + jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) node-fetch: 2.7.0 rpc-websockets: 9.0.4 superstruct: 2.0.2 @@ -4330,14 +3833,12 @@ snapshots: - bufferutil - encoding - utf-8-validate - dev: false - /@solana/web3.js@1.98.0: - resolution: {integrity: sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA==} + '@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.7.0 - '@noble/hashes': 1.6.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 @@ -4346,7 +3847,7 @@ snapshots: bs58: 4.0.1 buffer: 6.0.3 fast-stable-stringify: 1.0.0 - jayson: 4.1.3 + jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) node-fetch: 2.7.0 rpc-websockets: 9.0.4 superstruct: 2.0.2 @@ -4354,23 +3855,19 @@ snapshots: - bufferutil - encoding - utf-8-validate - dev: false - /@swc/helpers@0.5.15: - resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 - dev: false - /@tensor-hq/tensor-common@8.3.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-cgc+Z0nR23pi+1DfJgF1+afWd+xf1e6VYPM9yhECshmERr6BgojQfcuoltHHcgpwSlLrZXnm47kQ48I2M6rxFQ==} + '@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 - '@metaplex-foundation/mpl-auction-house': 2.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@metaplex-foundation/mpl-bubblegum': 0.7.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0 + '@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) axios: 0.28.1 big.js: 6.2.2 bn.js: 5.2.1 @@ -4387,17 +3884,15 @@ snapshots: - supports-color - typescript - utf-8-validate - dev: false - /@tensor-oss/tensorswap-sdk@4.5.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2): - resolution: {integrity: sha512-eNM6k1DT5V/GadxSHm8//z2wlLl8/EcA0KFQXKaxRba/2MirNySsoVGxDXO2UdOI4eZMse8f+8Et3P63WWjsIw==} + '@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 + '@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)(bn.js@5.2.1) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0 - '@tensor-hq/tensor-common': 8.3.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@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) '@types/bn.js': 5.1.6 big.js: 6.2.2 bn.js: 5.2.1 @@ -4414,14 +3909,12 @@ snapshots: - supports-color - typescript - utf-8-validate - dev: false - /@tiplink/api@0.3.1(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1): - resolution: {integrity: sha512-HjnXethjKOHTYT0IP1BewlMS7wZJ+hsoDgRa6jA1cNvxvwQjE1WHOyvOUPpAi+DJDw4P4/omFtyHr7dwLfnB/g==} + '@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 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.98.0 + '@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 @@ -4436,140 +3929,89 @@ snapshots: - fastestsmallesttextencoderdecoder - sodium-native - utf-8-validate - dev: false - /@tsconfig/node10@1.0.11: - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - dev: true + '@tsconfig/node10@1.0.11': {} - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true + '@tsconfig/node12@1.0.11': {} - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true + '@tsconfig/node14@1.0.3': {} - /@tsconfig/node16@1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - dev: true + '@tsconfig/node16@1.0.4': {} - /@types/bn.js@5.1.6: - resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} + '@types/bn.js@5.1.6': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 - /@types/chai@5.0.1: - resolution: {integrity: sha512-5T8ajsg3M/FOncpLYW7sdOcD6yf4+722sze/tc4KQV0P8Z2rAr3SAuHCIkYmYpt8VbcQlnz8SxlOlPQYefe4cA==} + '@types/chai@5.0.1': dependencies: '@types/deep-eql': 4.0.2 - dev: true - /@types/connect@3.4.38: - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/connect@3.4.38': dependencies: - '@types/node': 22.10.2 - dev: false + '@types/node': 22.10.5 '@types/deep-eql@4.0.2': {} '@types/diff-match-patch@1.0.36': {} - /@types/estree@1.0.6: - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - dev: false + '@types/estree@1.0.6': {} - /@types/hast@3.0.4: - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 - dev: false - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: false + '@types/json-schema@7.0.15': {} - /@types/mdast@4.0.4: - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 - dev: false - /@types/node-fetch@2.6.12: - resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + '@types/node-fetch@2.6.12': dependencies: - '@types/node': 22.10.2 + '@types/node': 22.10.5 form-data: 4.0.1 - dev: false - /@types/node@12.20.55: - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - dev: false + '@types/node@12.20.55': {} - /@types/node@18.19.69: - resolution: {integrity: sha512-ECPdY1nlaiO/Y6GUnwgtAAhLNaQ53AyIVz+eILxpEo5OvuqE6yWkqWBIb5dU0DqhKQtMeny+FBD3PK6lm7L5xQ==} + '@types/node@18.19.69': dependencies: undici-types: 5.26.5 - dev: false - /@types/node@22.10.2: - resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} + '@types/node@22.10.5': dependencies: undici-types: 6.20.0 - /@types/promise-retry@1.1.6: - resolution: {integrity: sha512-EC1+OMXV0PZb0pf+cmyxc43MEP2CDumZe4AfuxWboxxEixztIebknpJPZAX5XlodGF1OY+C1E/RAeNGzxf+bJA==} + '@types/promise-retry@1.1.6': dependencies: '@types/retry': 0.12.5 - dev: false - /@types/retry@0.12.0: - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - dev: false + '@types/retry@0.12.0': {} - /@types/retry@0.12.5: - resolution: {integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==} - dev: false + '@types/retry@0.12.5': {} - /@types/unist@3.0.3: - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - dev: false + '@types/unist@3.0.3': {} - /@types/uuid@10.0.0: - resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} - dev: false + '@types/uuid@10.0.0': {} - /@types/uuid@8.3.4: - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - dev: false + '@types/uuid@8.3.4': {} - /@types/ws@7.4.7: - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + '@types/ws@7.4.7': dependencies: - '@types/node': 22.10.2 - dev: false + '@types/node': 22.10.5 - /@types/ws@8.5.13: - resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} + '@types/ws@8.5.13': dependencies: - '@types/node': 22.10.2 - dev: false + '@types/node': 22.10.5 - /@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2)(eslint@8.56.0)(typescript@5.7.2): - resolution: {integrity: sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==} - 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/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.18.2(eslint@8.56.0)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.18.2 - '@typescript-eslint/type-utils': 8.18.2(eslint@8.56.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.2(eslint@8.56.0)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.2 - eslint: 8.56.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 @@ -4577,64 +4019,41 @@ snapshots: typescript: 5.7.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/parser@8.18.2(eslint@8.56.0)(typescript@5.7.2): - resolution: {integrity: sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==} - 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/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: - '@typescript-eslint/scope-manager': 8.18.2 - '@typescript-eslint/types': 8.18.2 - '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.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) + '@typescript-eslint/visitor-keys': 8.19.0 debug: 4.4.0 - eslint: 8.56.0 + eslint: 8.57.1 typescript: 5.7.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/scope-manager@8.18.2: - resolution: {integrity: sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.19.0': dependencies: - '@typescript-eslint/types': 8.18.2 - '@typescript-eslint/visitor-keys': 8.18.2 - dev: true + '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/visitor-keys': 8.19.0 - /@typescript-eslint/type-utils@8.18.2(eslint@8.56.0)(typescript@5.7.2): - resolution: {integrity: sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==} - 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/type-utils@8.19.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.2(eslint@8.56.0)(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.56.0 + eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/types@8.18.2: - resolution: {integrity: sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true + '@typescript-eslint/types@8.19.0': {} - /@typescript-eslint/typescript-estree@8.18.2(typescript@5.7.2): - resolution: {integrity: sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.18.2 - '@typescript-eslint/visitor-keys': 8.18.2 + '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/visitor-keys': 8.19.0 debug: 4.4.0 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -4644,76 +4063,47 @@ snapshots: typescript: 5.7.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/utils@8.18.2(eslint@8.56.0)(typescript@5.7.2): - resolution: {integrity: sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==} - 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/utils@8.19.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.56.0) - '@typescript-eslint/scope-manager': 8.18.2 - '@typescript-eslint/types': 8.18.2 - '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) - eslint: 8.56.0 + '@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) + eslint: 8.57.1 typescript: 5.7.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/visitor-keys@8.18.2: - resolution: {integrity: sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.19.0': dependencies: - '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/types': 8.19.0 eslint-visitor-keys: 4.2.0 - dev: true - /@ungap/structured-clone@1.2.1: - resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} + '@ungap/structured-clone@1.2.1': {} - /JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true + JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 through: 2.3.8 - dev: false - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 - dev: false - /acorn-jsx@5.3.2(acorn@8.14.0): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@8.14.0): dependencies: acorn: 8.14.0 - /acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} + acorn-walk@8.3.4: dependencies: acorn: 8.14.0 - dev: true - /acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true + acorn@8.14.0: {} - /agentkeepalive@4.6.0: - resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} - engines: {node: '>= 8.0.0'} + agentkeepalive@4.6.0: dependencies: humanize-ms: 1.2.1 - dev: false ai@4.0.22(react@19.0.0)(zod@3.24.1): dependencies: @@ -4735,619 +4125,352 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + ansi-regex@5.0.1: {} - /ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - dev: false + ansi-regex@6.1.0: {} - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: false + ansi-styles@5.2.0: {} - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: false + ansi-styles@6.2.1: {} - /ansicolors@0.3.2: - resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} - dev: false + ansicolors@0.3.2: {} - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true + arg@4.1.3: {} - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + argparse@2.0.1: {} - /assert@2.1.0: - resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + assert@2.1.0: dependencies: call-bind: 1.0.8 is-nan: 1.3.2 object-is: 1.1.6 object.assign: 4.1.7 util: 0.12.5 - dev: false - /assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - dev: false + assertion-error@2.0.1: {} - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false + asynckit@0.4.0: {} - /available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - dev: false - /axios-retry@3.9.1: - resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} + axios-retry@3.9.1: dependencies: '@babel/runtime': 7.26.0 is-retry-allowed: 2.2.0 - dev: false - /axios@0.28.1: - resolution: {integrity: sha512-iUcGA5a7p0mVb4Gm/sy+FSECNkPFT4y7wt6OM/CDpO/OnNCvSs3PoMG8ibrC9jRoGYU0gUK5pXVC4NPXq6lHRQ==} + axios@0.28.1: dependencies: follow-redirects: 1.15.9 form-data: 4.0.1 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false - /axios@1.7.9: - resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==} + axios@1.7.9: dependencies: follow-redirects: 1.15.9 form-data: 4.0.1 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@1.0.2: {} - /base-x@3.0.10: - resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} + base-x@3.0.10: dependencies: safe-buffer: 5.2.1 - dev: false - /base-x@4.0.0: - resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} - dev: false + base-x@4.0.0: {} - /base-x@5.0.0: - resolution: {integrity: sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==} - dev: false + base-x@5.0.0: {} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false + base64-js@1.5.1: {} - /big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - dev: false + big-integer@1.6.52: {} - /big.js@6.2.2: - resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} - dev: false + big.js@6.2.2: {} - /bigint-buffer@1.1.5: - resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} - engines: {node: '>= 10.0.0'} - requiresBuild: true + bigint-buffer@1.1.5: dependencies: bindings: 1.5.0 - dev: false - /bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - dev: false + bignumber.js@9.1.2: {} - /bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + bindings@1.5.0: dependencies: file-uri-to-path: 1.0.0 - dev: false - /bintrees@1.0.2: - resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==} - dev: false + bintrees@1.0.2: {} - /bn.js@4.11.6: - resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} - dev: false + bn.js@4.11.6: {} - /bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - dev: false + bn.js@5.2.1: {} - /borsh@0.7.0: - resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} + borsh@0.7.0: dependencies: bn.js: 5.2.1 bs58: 4.0.1 text-encoding-utf-8: 1.0.2 - dev: false - /borsh@1.0.0: - resolution: {integrity: sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==} - dev: false + borsh@1.0.0: {} - /borsh@2.0.0: - resolution: {integrity: sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==} - dev: false + borsh@2.0.0: {} - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 - /braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} + braces@3.0.3: dependencies: fill-range: 7.1.1 - dev: true - /bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + bs58@4.0.1: dependencies: base-x: 3.0.10 - dev: false - /bs58@5.0.0: - resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + bs58@5.0.0: dependencies: base-x: 4.0.0 - dev: false - /bs58@6.0.0: - resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + bs58@6.0.0: dependencies: base-x: 5.0.0 - dev: false - /buffer-layout@1.2.2: - resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} - engines: {node: '>=4.5'} - dev: false + buffer-layout@1.2.2: {} - /buffer-reverse@1.0.1: - resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} - dev: false + buffer-reverse@1.0.1: {} - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /buffer@6.0.1: - resolution: {integrity: sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==} + buffer@6.0.3: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: false - - /bufferutil@4.0.9: - resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} - engines: {node: '>=6.14.2'} - requiresBuild: true + bufferutil@4.0.9: dependencies: node-gyp-build: 4.8.4 - dev: false + optional: true - /call-bind-apply-helpers@1.0.1: - resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} - engines: {node: '>= 0.4'} + call-bind-apply-helpers@1.0.1: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - dev: false - /call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} + call-bind@1.0.8: dependencies: call-bind-apply-helpers: 1.0.1 es-define-property: 1.0.1 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 set-function-length: 1.2.2 - dev: false - /call-bound@1.0.3: - resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} - engines: {node: '>= 0.4'} + call-bound@1.0.3: dependencies: call-bind-apply-helpers: 1.0.1 - get-intrinsic: 1.2.6 - dev: false + get-intrinsic: 1.2.7 - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} + callsites@3.1.0: {} - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: false + camelcase@6.3.0: {} - /ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - dev: false + ccount@2.0.1: {} - /chai@5.1.2: - resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} - engines: {node: '>=12'} + chai@5.1.2: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 loupe: 3.1.2 pathval: 2.0.0 - dev: false - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: false + chalk@5.4.1: {} - /character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - dev: false + character-entities-html4@2.1.0: {} - /character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - dev: false + character-entities-legacy@3.0.0: {} - /check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - dev: false + check-error@2.1.1: {} - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + color-convert@2.0.1: dependencies: color-name: 1.1.4 - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@1.1.4: {} - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - dev: false - /comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - dev: false + comma-separated-tokens@2.0.3: {} - /commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - dev: false + commander@10.0.1: {} - /commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - dev: false + commander@12.1.0: {} - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: false + commander@2.20.3: {} - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concat-map@0.0.1: {} - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true + create-require@1.1.1: {} - /cross-fetch@3.2.0: - resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + cross-fetch@3.2.0: dependencies: node-fetch: 2.7.0 transitivePeerDependencies: - encoding - dev: false - /cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - /crypto-hash@1.3.0: - resolution: {integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==} - engines: {node: '>=8'} - dev: false + crypto-hash@1.3.0: {} - /crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - dev: false + crypto-js@4.2.0: {} - /dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - dev: false + dayjs@1.11.13: {} - /debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.4.0: dependencies: ms: 2.1.3 - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: false + decamelize@1.2.0: {} - /decimal.js-light@2.5.1: - resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} - dev: false + decimal.js-light@2.5.1: {} - /decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - dev: false + decimal.js@10.4.3: {} - /deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - dev: false + deep-eql@5.0.2: {} - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + deep-is@0.1.4: {} - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 - dev: false - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 - dev: false - /delay@5.0.0: - resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} - engines: {node: '>=10'} - dev: false + delay@5.0.0: {} - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: false + delayed-stream@1.0.0: {} - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - dev: false + dequal@2.0.3: {} - /devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + devlop@1.1.0: dependencies: dequal: 2.0.3 - dev: false diff-match-patch@1.0.5: {} diff@4.0.2: {} - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + doctrine@3.0.0: dependencies: esutils: 2.0.3 - dev: true - /dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dot-case@3.0.4: dependencies: no-case: 3.0.4 tslib: 2.8.1 - dev: false - /dotenv@10.0.0: - resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} - engines: {node: '>=10'} - dev: false + dotenv@10.0.0: {} - /dotenv@16.4.7: - resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} - engines: {node: '>=12'} - dev: false + dotenv@16.4.7: {} - /dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 - dev: false - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: false + eastasianwidth@0.2.0: {} - /emoji-regex-xs@1.0.0: - resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} - dev: false + emoji-regex-xs@1.0.0: {} - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: false + emoji-regex@8.0.0: {} - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: false + emoji-regex@9.2.2: {} - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: false + entities@4.5.0: {} - /err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - dev: false + err-code@2.0.3: {} - /es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - dev: false + es-define-property@1.0.1: {} - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - dev: false + es-errors@1.3.0: {} - /es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} + es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 - dev: false - /es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - dev: false + es6-promise@4.2.8: {} - /es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + es6-promisify@5.0.0: dependencies: es6-promise: 4.2.8 - dev: false - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + escape-string-regexp@4.0.0: {} - /eslint-config-prettier@9.1.0(eslint@8.56.0): - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' + eslint-config-prettier@9.1.0(eslint@8.57.1): dependencies: - eslint: 8.56.0 - dev: true + eslint: 8.57.1 - /eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.4.2): - resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true + eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2): dependencies: - eslint: 8.56.0 - eslint-config-prettier: 9.1.0(eslint@8.56.0) + eslint: 8.57.1 prettier: 3.4.2 prettier-linter-helpers: 1.0.0 synckit: 0.9.2 - dev: true + optionalDependencies: + eslint-config-prettier: 9.1.0(eslint@8.57.1) - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true - /eslint-scope@8.2.0: - resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-scope@8.2.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: false - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-visitor-keys@3.4.3: {} - /eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@4.2.0: {} - /eslint@8.56.0: - resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true + eslint@8.57.1: dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) '@eslint-community/regexpp': 4.12.1 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.56.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 '@ungap/structured-clone': 1.2.1 @@ -5383,17 +4506,8 @@ snapshots: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: 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 + eslint@9.17.0: dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0) '@eslint-community/regexpp': 4.12.1 @@ -5431,157 +4545,98 @@ snapshots: optionator: 0.9.4 transitivePeerDependencies: - supports-color - dev: false - /espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@10.3.0: dependencies: acorn: 8.14.0 acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 4.2.0 - dev: false - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@9.6.1: dependencies: acorn: 8.14.0 acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 3.4.3 - dev: true - /esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} + esquery@1.6.0: dependencies: estraverse: 5.3.0 - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} + estraverse@5.3.0: {} - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + esutils@2.0.3: {} - /ethereum-bloom-filters@1.2.0: - resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==} + ethereum-bloom-filters@1.2.0: dependencies: - '@noble/hashes': 1.6.1 - dev: false + '@noble/hashes': 1.7.0 - /ethereum-cryptography@2.2.1: - resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + ethereum-cryptography@2.2.1: dependencies: '@noble/curves': 1.4.2 '@noble/hashes': 1.4.0 '@scure/bip32': 1.4.0 '@scure/bip39': 1.3.0 - dev: false - /ethjs-unit@0.1.6: - resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} - engines: {node: '>=6.5.0', npm: '>=3'} + ethjs-unit@0.1.6: dependencies: bn.js: 4.11.6 number-to-bn: 1.7.0 - dev: false - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: false + event-target-shim@5.0.1: {} - /eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - dev: false + eventemitter3@4.0.7: {} eventemitter3@5.0.1: {} eventsource-parser@3.0.0: {} - /exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - dev: false + exponential-backoff@3.1.1: {} - /eyes@0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - dev: false + eyes@0.1.8: {} - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-deep-equal@3.1.3: {} - /fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true + fast-diff@1.3.0: {} - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.8 - dev: true - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-json-stable-stringify@2.1.0: {} - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-levenshtein@2.0.6: {} - /fast-stable-stringify@1.0.0: - resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} - dev: false + fast-stable-stringify@1.0.0: {} - /fastestsmallesttextencoderdecoder@1.0.22: - resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} - dev: false + fastestsmallesttextencoderdecoder@1.0.22: {} - /fastq@1.18.0: - resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} + fastq@1.18.0: dependencies: reusify: 1.0.4 - dev: true - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 - dev: true - /file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 - dev: false - /file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - dev: false + file-uri-to-path@1.0.0: {} - /fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - dev: true - /find-process@1.4.8: - resolution: {integrity: sha512-W2PIdgXfhYeIlTzGiDyGJhjslZcwQCRcSw6plgyLu3CFk1PhQrKkTbQ5jkJ2NhOabMwETTrhl7c+xBcQ7B2jRg==} - hasBin: true + find-process@1.4.8: dependencies: chalk: 5.4.1 commander: 12.1.0 @@ -5593,120 +4648,80 @@ snapshots: transitivePeerDependencies: - jiti - supports-color - dev: false - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@3.2.0: dependencies: flatted: 3.3.2 keyv: 4.5.4 rimraf: 3.0.2 - dev: true - /flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} + flat-cache@4.0.1: dependencies: flatted: 3.3.2 keyv: 4.5.4 - dev: false - /flatted@3.3.2: - resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + flatted@3.3.2: {} - /follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false + follow-redirects@1.15.9: {} - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.3: dependencies: is-callable: 1.2.7 - dev: false - /foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} + foreground-child@3.3.0: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 - dev: false - /form-data-encoder@1.7.2: - resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} - dev: false + form-data-encoder@1.7.2: {} - /form-data@4.0.1: - resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} - engines: {node: '>= 6'} + form-data@4.0.1: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: false - /formdata-node@4.4.1: - resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} - engines: {node: '>= 12.20'} + formdata-node@4.4.1: dependencies: node-domexception: 1.0.0 web-streams-polyfill: 4.0.0-beta.3 - dev: false - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true + fs.realpath@1.0.0: {} - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: false + function-bind@1.1.2: {} - /get-intrinsic@1.2.6: - resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} - engines: {node: '>= 0.4'} + get-intrinsic@1.2.7: dependencies: call-bind-apply-helpers: 1.0.1 - dunder-proto: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.0.0 function-bind: 1.1.2 + get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 hasown: 2.0.2 math-intrinsics: 1.1.0 - dev: false - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + get-proto@1.0.1: dependencies: - is-glob: 4.0.3 - dev: true + dunder-proto: 1.0.1 + es-object-atoms: 1.0.0 - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - /glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: dependencies: foreground-child: 3.3.0 jackspeak: 3.4.3 @@ -5714,12 +4729,8 @@ snapshots: minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - dev: false - /glob@11.0.0: - resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} - engines: {node: 20 || >=22} - hasBin: true + glob@11.0.0: dependencies: foreground-child: 3.3.0 jackspeak: 4.0.2 @@ -5727,11 +4738,8 @@ snapshots: minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 2.0.0 - dev: false - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -5739,44 +4747,26 @@ snapshots: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + globals@13.24.0: dependencies: type-fest: 0.20.2 - dev: true - /globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - dev: false + globals@14.0.0: {} - /gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - dev: false + gopd@1.2.0: {} - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - requiresBuild: true - dev: false + graceful-fs@4.2.11: optional: true - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true + graphemer@1.4.0: {} - /graphemesplit@2.4.4: - resolution: {integrity: sha512-lKrpp1mk1NH26USxC/Asw4OHbhSQf5XfrWZ+CDv/dFVvd1j17kFgMotdJvOesmHkbFX9P9sBfpH8VogxOWLg8w==} + graphemesplit@2.4.4: dependencies: js-base64: 3.7.7 unicode-trie: 2.0.0 - dev: false - /groq-sdk@0.5.0: - resolution: {integrity: sha512-RVmhW7qZ+XZoy5fIuSdx/LGQJONpL8MHgZEW7dFwTdgkzStub2XQx6OKv28CHogijdwH41J+Npj/z2jBPu3vmw==} + groq-sdk@0.5.0: dependencies: '@types/node': 18.19.69 '@types/node-fetch': 2.6.12 @@ -5788,46 +4778,29 @@ snapshots: web-streams-polyfill: 3.3.3 transitivePeerDependencies: - encoding - dev: false - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + has-flag@4.0.0: {} - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 - dev: false - /has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - dev: false + has-symbols@1.1.0: {} - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: dependencies: has-symbols: 1.1.0 - dev: false - /hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + hash.js@1.1.7: dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - dev: false - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + hasown@2.0.2: dependencies: function-bind: 1.1.2 - dev: false - /hast-util-to-html@9.0.4: - resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} + hast-util-to-html@9.0.4: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 @@ -5840,171 +4813,106 @@ snapshots: space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 - dev: false - /hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.4 - dev: false - /html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - dev: false + html-void-elements@3.0.0: {} - /humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + humanize-ms@1.2.1: dependencies: ms: 2.1.3 - dev: false - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false + ieee754@1.2.1: {} - /ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} + ignore@5.3.2: {} - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + imurmurhash@0.1.4: {} - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inherits@2.0.4: {} - /ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} - engines: {node: '>= 10'} - dev: false + ipaddr.js@2.2.0: {} - /is-arguments@1.2.0: - resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} - engines: {node: '>= 0.4'} + is-arguments@1.2.0: dependencies: call-bound: 1.0.3 has-tostringtag: 1.0.2 - dev: false - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: false + is-callable@1.2.7: {} - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + is-extglob@2.1.1: {} - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: false + is-fullwidth-code-point@3.0.0: {} - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} + is-generator-function@1.1.0: dependencies: + call-bound: 1.0.3 + get-proto: 1.0.1 has-tostringtag: 1.0.2 - dev: false + safe-regex-test: 1.1.0 - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - /is-hex-prefixed@1.0.0: - resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} - engines: {node: '>=6.5.0', npm: '>=3'} - dev: false + is-hex-prefixed@1.0.0: {} - /is-nan@1.3.2: - resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} - engines: {node: '>= 0.4'} + is-nan@1.3.2: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - dev: false - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true + is-number@7.0.0: {} - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true + is-path-inside@3.0.3: {} - /is-retry-allowed@2.2.0: - resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} - engines: {node: '>=10'} - dev: false + is-regex@1.2.1: + dependencies: + call-bound: 1.0.3 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 - /is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} + is-retry-allowed@2.2.0: {} + + is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.18 - dev: false - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: false + is-typedarray@1.0.0: {} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@2.0.0: {} - /isomorphic-ws@4.0.1(ws@7.5.10): - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' + isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: - ws: 7.5.10 - dev: false + ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - /isomorphic-ws@4.0.1(ws@8.18.0): - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' + isomorphic-ws@4.0.1(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - dev: false - /jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - dev: false - /jackspeak@4.0.2: - resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} - engines: {node: 20 || >=22} + jackspeak@4.0.2: dependencies: '@isaacs/cliui': 8.0.2 - dev: false - /jayson@4.1.3: - resolution: {integrity: sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==} - engines: {node: '>=8'} - hasBin: true + jayson@4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@types/connect': 3.4.38 '@types/node': 12.20.55 @@ -6014,52 +4922,37 @@ snapshots: delay: 5.0.0 es6-promisify: 5.0.0 eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.10) + isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) json-stringify-safe: 5.0.1 uuid: 8.3.2 - ws: 7.5.10 + ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - /js-base64@3.7.7: - resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} - dev: false + js-base64@3.7.7: {} - /js-sha256@0.11.0: - resolution: {integrity: sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q==} - dev: false + js-sha256@0.11.0: {} - /js-sha256@0.9.0: - resolution: {integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==} - dev: false + js-sha256@0.9.0: {} - /js-sha3@0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - dev: false + js-sha3@0.8.0: {} - /js-tiktoken@1.0.16: - resolution: {integrity: sha512-nUVdO5k/M9llWpiaZlBBDdtmr6qWXwSD6fgaDu2zM8UP+OXxx9V37lFkI6w0/1IuaDx7WffZ37oYd9KvcWKElg==} + js-tiktoken@1.0.16: dependencies: base64-js: 1.5.1 - dev: false - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-buffer@3.0.1: {} json-schema-traverse@0.4.1: {} json-schema@0.4.0: {} - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stable-stringify-without-jsonify@1.0.1: {} json-stringify-safe@5.0.1: {} @@ -6076,204 +4969,106 @@ snapshots: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 - dev: false - /jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - dev: false + jsonparse@1.3.1: {} - /jsonpointer@5.0.1: - resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} - engines: {node: '>=0.10.0'} - dev: false + jsonpointer@5.0.1: {} - /keccak256@1.0.6: - resolution: {integrity: sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==} + keccak256@1.0.6: dependencies: bn.js: 5.2.1 buffer: 6.0.3 keccak: 3.0.4 - dev: false - /keccak@3.0.4: - resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} - engines: {node: '>=10.0.0'} - requiresBuild: true + keccak@3.0.4: dependencies: node-addon-api: 2.0.2 node-gyp-build: 4.8.4 readable-stream: 3.6.2 - dev: false - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@4.5.4: dependencies: json-buffer: 3.0.1 - /langchain@0.3.8(@langchain/core@0.3.26)(@langchain/groq@0.1.2)(openai@4.77.0): - resolution: {integrity: sha512-EiAHFgBdThuXFmIx9j81wjdPItpRsw0Ck4r5dyhB74gyhehRGna/UK2CTqeKVnIUM/f4g4JbxUgAU4voXljDMw==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/anthropic': '*' - '@langchain/aws': '*' - '@langchain/cohere': '*' - '@langchain/core': '>=0.2.21 <0.4.0' - '@langchain/google-genai': '*' - '@langchain/google-vertexai': '*' - '@langchain/groq': '*' - '@langchain/mistralai': '*' - '@langchain/ollama': '*' - axios: '*' - cheerio: '*' - handlebars: ^4.7.8 - peggy: ^3.0.2 - typeorm: '*' - peerDependenciesMeta: - '@langchain/anthropic': - optional: true - '@langchain/aws': - optional: true - '@langchain/cohere': - optional: true - '@langchain/google-genai': - optional: true - '@langchain/google-vertexai': - optional: true - '@langchain/groq': - optional: true - '@langchain/mistralai': - optional: true - '@langchain/ollama': - optional: true - axios: - optional: true - cheerio: - optional: true - handlebars: - optional: true - peggy: - optional: true - typeorm: - optional: true + 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.26(openai@4.77.0) - '@langchain/groq': 0.1.2(@langchain/core@0.3.26) - '@langchain/openai': 0.3.16(@langchain/core@0.3.26) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.26) + '@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.0) + 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 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(zod@3.24.1))) + axios: 1.7.9 transitivePeerDependencies: - encoding - openai - dev: false - /langsmith@0.2.14(openai@4.77.0): - resolution: {integrity: sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==} - peerDependencies: - openai: '*' - peerDependenciesMeta: - openai: - optional: true + langsmith@0.2.14(openai@4.77.3(zod@3.24.1)): dependencies: '@types/uuid': 10.0.0 commander: 10.0.1 - openai: 4.77.0(zod@3.24.1) p-queue: 6.6.2 p-retry: 4.6.2 semver: 7.6.3 uuid: 10.0.0 - dev: false + optionalDependencies: + openai: 4.77.3(zod@3.24.1) - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - /libsodium-sumo@0.7.15: - resolution: {integrity: sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==} - dev: false + libsodium-sumo@0.7.15: {} - /libsodium-wrappers-sumo@0.7.15: - resolution: {integrity: sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==} + libsodium-wrappers-sumo@0.7.15: dependencies: libsodium-sumo: 0.7.15 - dev: false - /libsodium-wrappers@0.7.15: - resolution: {integrity: sha512-E4anqJQwcfiC6+Yrl01C1m8p99wEhLmJSs0VQqST66SbQXXBoaJY0pF4BNjRYa/sOQAxx6lXAaAFIlx+15tXJQ==} + libsodium-wrappers@0.7.15: dependencies: libsodium: 0.7.15 - dev: false - /libsodium@0.7.15: - resolution: {integrity: sha512-sZwRknt/tUpE2AwzHq3jEyUU5uvIZHtSssktXq7owd++3CSgn8RGrv6UZJJBpP7+iBghBqe7Z06/2M31rI2NKw==} - dev: false + libsodium@0.7.15: {} - /linkify-it@5.0.0: - resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 - dev: false - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.merge@4.6.2: {} - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: false + lodash@4.17.21: {} - /loglevel@1.9.2: - resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} - engines: {node: '>= 0.6.0'} - dev: false + loglevel@1.9.2: {} - /loupe@3.1.2: - resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} - dev: false + loupe@3.1.2: {} - /lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lower-case@2.0.2: dependencies: tslib: 2.8.1 - dev: false - /lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - dev: false + lru-cache@10.4.3: {} - /lru-cache@11.0.2: - resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} - engines: {node: 20 || >=22} - dev: false + lru-cache@11.0.2: {} - /lunr@2.3.9: - resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - dev: false + lunr@2.3.9: {} - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true + make-error@1.3.6: {} - /markdown-it@14.1.0: - resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} - hasBin: true + markdown-it@14.1.0: dependencies: argparse: 2.0.1 entities: 4.5.0 @@ -6281,19 +5076,12 @@ snapshots: mdurl: 2.0.0 punycode.js: 2.3.1 uc.micro: 2.1.0 - dev: false - /math-expression-evaluator@2.0.6: - resolution: {integrity: sha512-DRung1qNcKbgkhFeQ0fBPUFB6voRUMY7KyRyp1TRQ2v95Rp2egC823xLRooM1mDx1rmbkY7ym6ZWmpaE/VimOA==} - dev: false + math-expression-evaluator@2.0.6: {} - /math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - dev: false + math-intrinsics@1.1.0: {} - /mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-hast@13.2.0: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -6304,184 +5092,103 @@ snapshots: unist-util-position: 5.0.0 unist-util-visit: 5.0.0 vfile: 6.0.3 - dev: false - /mdurl@2.0.0: - resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} - dev: false + mdurl@2.0.0: {} - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true + merge2@1.4.1: {} - /merkletreejs@0.3.11: - resolution: {integrity: sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==} - engines: {node: '>= 7.6.0'} + merkletreejs@0.3.11: dependencies: bignumber.js: 9.1.2 buffer-reverse: 1.0.1 crypto-js: 4.2.0 treeify: 1.1.0 web3-utils: 1.10.4 - dev: false - /micro-ftch@0.3.1: - resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - dev: false + micro-ftch@0.3.1: {} - /micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + micromark-util-character@2.1.1: dependencies: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.1 - dev: false - /micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - dev: false + micromark-util-encode@2.0.1: {} - /micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + micromark-util-sanitize-uri@2.0.1: dependencies: micromark-util-character: 2.1.1 micromark-util-encode: 2.0.1 micromark-util-symbol: 2.0.1 - dev: false - /micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - dev: false + micromark-util-symbol@2.0.1: {} - /micromark-util-types@2.0.1: - resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} - dev: false + micromark-util-types@2.0.1: {} - /micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} + micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 - dev: true - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: false + mime-db@1.52.0: {} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - dev: false - /minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - dev: false + minimalistic-assert@1.0.1: {} - /minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} + minimatch@10.0.1: dependencies: brace-expansion: 2.0.1 - dev: false - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - /minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: false + minimist@1.2.8: {} - /minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - dev: false + minipass@7.1.2: {} - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + ms@2.1.3: {} - /mustache@4.2.0: - resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} - hasBin: true - dev: false + mustache@4.2.0: {} - /nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: false + nanoid@3.3.8: {} - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + natural-compare@1.4.0: {} - /no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + no-case@3.0.4: dependencies: lower-case: 2.0.2 tslib: 2.8.1 - dev: false - /node-addon-api@2.0.2: - resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - dev: false + node-addon-api@2.0.2: {} - /node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - dev: false + node-domexception@1.0.0: {} - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - dev: false - /node-gyp-build@4.8.4: - resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} - hasBin: true - dev: false + node-gyp-build@4.8.4: {} - /number-to-bn@1.7.0: - resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} - engines: {node: '>=6.5.0', npm: '>=3'} + number-to-bn@1.7.0: dependencies: bn.js: 4.11.6 strip-hex-prefix: 1.0.0 - dev: false - /object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} + object-is@1.1.6: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - dev: false - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: false + object-keys@1.1.1: {} - /object.assign@4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} + object.assign@4.1.7: dependencies: call-bind: 1.0.8 call-bound: 1.0.3 @@ -6489,30 +5196,18 @@ snapshots: es-object-atoms: 1.0.0 has-symbols: 1.1.0 object-keys: 1.1.1 - dev: false - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + once@1.4.0: dependencies: wrappy: 1.0.2 - dev: true - /oniguruma-to-es@0.8.1: - resolution: {integrity: sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==} + oniguruma-to-es@0.10.0: dependencies: emoji-regex-xs: 1.0.0 regex: 5.1.1 regex-recursion: 5.1.1 - dev: false - /openai@4.77.0(zod@3.24.1): - resolution: {integrity: sha512-WWacavtns/7pCUkOWvQIjyOfcdr9X+9n9Vvb0zFeKVDAqwCMDHB+iSr24SVaBAhplvSG6JrRXFpcNM9gWhOGIw==} - hasBin: true - peerDependencies: - zod: ^3.23.8 - peerDependenciesMeta: - zod: - optional: true + openai@4.77.3(zod@3.24.1): dependencies: '@types/node': 18.19.69 '@types/node-fetch': 2.6.12 @@ -6521,18 +5216,14 @@ snapshots: form-data-encoder: 1.7.2 formdata-node: 4.4.1 node-fetch: 2.7.0 + optionalDependencies: zod: 3.24.1 transitivePeerDependencies: - encoding - dev: false - /openapi-types@12.1.3: - resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} - dev: false + openapi-types@12.1.3: {} - /optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} + optionator@0.9.4: dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -6541,183 +5232,101 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - /p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - dev: false + p-finally@1.0.0: {} - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + p-locate@5.0.0: dependencies: p-limit: 3.1.0 - /p-queue@6.6.2: - resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} - engines: {node: '>=8'} + p-queue@6.6.2: dependencies: eventemitter3: 4.0.7 p-timeout: 3.2.0 - dev: false - /p-retry@4.6.2: - resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} - engines: {node: '>=8'} + p-retry@4.6.2: dependencies: '@types/retry': 0.12.0 retry: 0.13.1 - dev: false - /p-timeout@3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} + p-timeout@3.2.0: dependencies: p-finally: 1.0.0 - dev: false - /package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - dev: false + package-json-from-dist@1.0.1: {} - /pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - dev: false + pako@0.2.9: {} - /pako@2.1.0: - resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} - dev: false + pako@2.1.0: {} - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + parent-module@1.0.1: dependencies: callsites: 3.1.0 - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} + path-exists@4.0.0: {} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true + path-is-absolute@1.0.1: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + path-key@3.1.1: {} - /path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} + path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 minipass: 7.1.2 - dev: false - /path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} - engines: {node: 20 || >=22} + path-scurry@2.0.0: dependencies: lru-cache: 11.0.2 minipass: 7.1.2 - dev: false - /pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} - engines: {node: '>= 14.16'} - dev: false + pathval@2.0.0: {} - /percentile@1.6.0: - resolution: {integrity: sha512-8vSyjdzwxGDHHwH+cSGch3A9Uj2On3UpgOWxWXMKwUvoAbnujx6DaqmV1duWXNiH/oEWpyVd6nSQccix6DM3Ng==} - dev: false + percentile@1.6.0: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true + picomatch@2.3.1: {} - /poly1305-js@0.4.4: - resolution: {integrity: sha512-5B6/S+vg5AOr66wJDkh5LOpU/F3EKANDy4VXKsNZLXea1uCy6CiOWOZ3VhcC0nYdhE7vJUMcLxqcVlrv2g/+Rg==} + poly1305-js@0.4.4: dependencies: big-integer: 1.6.52 - dev: false - /possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - dev: false + possible-typed-array-names@1.0.0: {} - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} + prelude-ls@1.2.1: {} - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} + prettier-linter-helpers@1.0.0: dependencies: fast-diff: 1.3.0 - dev: true - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: false + prettier@2.8.8: {} - /prettier@3.4.2: - resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} - engines: {node: '>=14'} - hasBin: true - dev: true + prettier@3.4.2: {} - /prom-client@15.1.3: - resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==} - engines: {node: ^16 || ^18 || >=20} + prom-client@15.1.3: dependencies: '@opentelemetry/api': 1.9.0 tdigest: 0.1.2 - dev: false - /promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} + promise-retry@2.0.1: dependencies: err-code: 2.0.3 retry: 0.12.0 - dev: false - /property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - dev: false + property-information@6.5.0: {} - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false + proxy-from-env@1.1.0: {} - /punycode.js@2.3.1: - resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} - engines: {node: '>=6'} - dev: false + punycode.js@2.3.1: {} - /punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} + punycode@2.3.1: {} - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true + queue-microtask@1.2.3: {} - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 - dev: false react@19.0.0: {} @@ -6726,74 +5335,42 @@ snapshots: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: false - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - dev: false + regenerator-runtime@0.14.1: {} - /regex-recursion@5.1.1: - resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} + regex-recursion@5.1.1: dependencies: regex: 5.1.1 regex-utilities: 2.3.0 - dev: false - /regex-utilities@2.3.0: - resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - dev: false + regex-utilities@2.3.0: {} - /regex@5.1.1: - resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + regex@5.1.1: dependencies: regex-utilities: 2.3.0 - dev: false - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} + resolve-from@4.0.0: {} - /retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - dev: false + retry@0.12.0: {} - /retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - dev: false + retry@0.13.1: {} - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true + reusify@1.0.4: {} - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true + rimraf@3.0.2: dependencies: glob: 7.2.3 - dev: true - /rimraf@5.0.10: - resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} - hasBin: true + rimraf@5.0.10: dependencies: glob: 10.4.5 - dev: false - /rimraf@6.0.1: - resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} - engines: {node: 20 || >=22} - hasBin: true + rimraf@6.0.1: dependencies: glob: 11.0.0 package-json-from-dist: 1.0.1 - dev: false - /rpc-websockets@9.0.4: - resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} + rpc-websockets@9.0.4: dependencies: '@swc/helpers': 0.5.15 '@types/uuid': 8.3.4 @@ -6805,84 +5382,63 @@ snapshots: optionalDependencies: bufferutil: 4.0.9 utf-8-validate: 5.0.10 - dev: false - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - dev: true safe-buffer@5.2.1: {} + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-regex: 1.2.1 + secure-json-parse@2.7.0: {} - /semaphore@1.1.0: - resolution: {integrity: sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==} - engines: {node: '>=0.8.0'} - dev: false + semaphore@1.1.0: {} - /semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true + semver@7.6.3: {} - /set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 gopd: 1.2.0 has-property-descriptors: 1.0.2 - dev: false - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + shebang-regex@3.0.0: {} - /shiki@1.24.4: - resolution: {integrity: sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==} + shiki@1.26.1: dependencies: - '@shikijs/core': 1.24.4 - '@shikijs/engine-javascript': 1.24.4 - '@shikijs/engine-oniguruma': 1.24.4 - '@shikijs/types': 1.24.4 - '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/core': 1.26.1 + '@shikijs/engine-javascript': 1.26.1 + '@shikijs/engine-oniguruma': 1.26.1 + '@shikijs/langs': 1.26.1 + '@shikijs/themes': 1.26.1 + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 - dev: false - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - dev: false + signal-exit@4.1.0: {} - /snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + snake-case@3.0.4: dependencies: dot-case: 3.0.4 tslib: 2.8.1 - dev: false - /sodium-native@3.4.1: - resolution: {integrity: sha512-PaNN/roiFWzVVTL6OqjzYct38NSXewdl2wz8SRB51Br/MLIJPrbM3XexhVWkq7D3UWMysfrhKVf1v1phZq6MeQ==} - requiresBuild: true + sodium-native@3.4.1: dependencies: node-gyp-build: 4.8.4 - dev: false - /sodium-plus@0.9.0(sodium-native@3.4.1): - resolution: {integrity: sha512-WWKxrd81qDL7C1A10yxNmZ135yovEZuIRnZ/BIf/FcajYBupbKbPdgzwlusPHLVxkMDDamcarq9PxxRBUSqpCw==} - peerDependencies: - sodium-native: ^3.2.0 + sodium-plus@0.9.0(sodium-native@3.4.1): dependencies: buffer: 5.7.1 libsodium-wrappers: 0.7.15 @@ -6890,94 +5446,59 @@ snapshots: sodium-native: 3.4.1 typedarray-to-buffer: 3.1.5 xsalsa20: 1.2.0 - dev: false - /space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - dev: false + space-separated-tokens@2.0.2: {} - /spok@1.5.5: - resolution: {integrity: sha512-IrJIXY54sCNFASyHPOY+jEirkiJ26JDqsGiI0Dvhwcnkl0PEWi1PSsrkYql0rzDw8LFVTcA7rdUCAJdE2HE+2Q==} + spok@1.5.5: dependencies: ansicolors: 0.3.2 find-process: 1.4.8 transitivePeerDependencies: - jiti - supports-color - dev: false - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: false - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + string-width@5.1.2: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - dev: false - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - dev: false - /stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - dev: false - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + strip-ansi@7.1.0: dependencies: ansi-regex: 6.1.0 - dev: false - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: false + strip-bom@3.0.0: {} - /strip-hex-prefix@1.0.0: - resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} - engines: {node: '>=6.5.0', npm: '>=3'} + strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed: 1.0.0 - dev: false - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} + strip-json-comments@3.1.1: {} - /superstruct@0.15.5: - resolution: {integrity: sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==} - dev: false + superstruct@0.15.5: {} - /superstruct@2.0.2: - resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} - engines: {node: '>=14.0.0'} - dev: false + superstruct@2.0.2: {} - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -6991,95 +5512,51 @@ snapshots: dependencies: '@pkgr/core': 0.1.1 tslib: 2.8.1 - dev: true - /tdigest@0.1.2: - resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} + tdigest@0.1.2: dependencies: bintrees: 1.0.2 - dev: false - /text-encoding-utf-8@1.0.2: - resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - dev: false + text-encoding-utf-8@1.0.2: {} text-table@0.2.0: {} throttleit@2.1.0: {} - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: false + through@2.3.8: {} - /tiny-inflate@1.0.3: - resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} - dev: false + tiny-inflate@1.0.3: {} - /tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - dev: false + tiny-invariant@1.3.3: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - dev: true - /toformat@2.0.0: - resolution: {integrity: sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==} - dev: false + toformat@2.0.0: {} - /toml@3.0.0: - resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} - dev: false + toml@3.0.0: {} - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false + tr46@0.0.3: {} - /treeify@1.1.0: - resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} - engines: {node: '>=0.6'} - dev: false + treeify@1.1.0: {} - /trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - dev: false + trim-lines@3.0.1: {} - /ts-api-utils@1.4.3(typescript@5.7.2): - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' + ts-api-utils@1.4.3(typescript@5.7.2): dependencies: typescript: 5.7.2 - dev: true - /ts-log@2.2.7: - resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} - dev: false + ts-log@2.2.7: {} - /ts-node@10.9.2(@types/node@22.10.2)(typescript@5.7.2): - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true + ts-node@10.9.2(@types/node@22.10.5)(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': 22.10.2 + '@types/node': 22.10.5 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -7089,148 +5566,90 @@ snapshots: typescript: 5.7.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true - /tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} - engines: {node: '>=6'} + tsconfig-paths@4.2.0: dependencies: json5: 2.2.3 minimist: 1.2.8 strip-bom: 3.0.0 - dev: false - /tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tslib@2.8.1: {} - /tweetnacl-util@0.15.1: - resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} - dev: false + tweetnacl-util@0.15.1: {} - /tweetnacl@1.0.3: - resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} - dev: false + tweetnacl@1.0.3: {} - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true + type-fest@0.20.2: {} - /typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typedarray-to-buffer@3.1.5: dependencies: is-typedarray: 1.0.0 - dev: false - /typedoc@0.26.11(typescript@5.7.2): - resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} - engines: {node: '>= 18'} - hasBin: true - peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x + typedoc@0.26.11(typescript@5.7.2): dependencies: lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - shiki: 1.24.4 + shiki: 1.26.1 typescript: 5.7.2 yaml: 2.7.0 - dev: false - /typedoc@0.27.6(typescript@5.7.2): - resolution: {integrity: sha512-oBFRoh2Px6jFx366db0lLlihcalq/JzyCVp7Vaq1yphL/tbgx2e+bkpkCgJPunaPvPwoTOXSwasfklWHm7GfAw==} - engines: {node: '>= 18'} - hasBin: true - 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 + typedoc@0.27.6(typescript@5.7.2): dependencies: - '@gerrit0/mini-shiki': 1.24.4 + '@gerrit0/mini-shiki': 1.26.1 lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 typescript: 5.7.2 yaml: 2.7.0 - dev: false - /typescript-collections@1.3.3: - resolution: {integrity: sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==} - dev: false + typescript-collections@1.3.3: {} - /typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: false + typescript@4.9.5: {} - /typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} - engines: {node: '>=14.17'} - hasBin: true + typescript@5.7.2: {} - /uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - dev: false + uc.micro@2.1.0: {} - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: false + undici-types@5.26.5: {} - /undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici-types@6.20.0: {} - /unicode-trie@2.0.0: - resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + unicode-trie@2.0.0: dependencies: pako: 0.2.9 tiny-inflate: 1.0.3 - dev: false - /unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.3 - dev: false - /unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + unist-util-position@5.0.0: dependencies: '@types/unist': 3.0.3 - dev: false - /unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.3 - dev: false - /unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit-parents@6.0.1: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.0 - dev: false - /unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unist-util-visit@5.0.0: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - dev: false + universalify@2.0.1: {} - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -7241,72 +5660,43 @@ snapshots: utf-8-validate@5.0.10: dependencies: node-gyp-build: 4.8.4 - dev: false + optional: true - /utf8@3.0.0: - resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} - dev: false + utf8@3.0.0: {} - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false + util-deprecate@1.0.2: {} - /util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + util@0.12.5: dependencies: inherits: 2.0.4 is-arguments: 1.2.0 - is-generator-function: 1.0.10 + is-generator-function: 1.1.0 is-typed-array: 1.1.15 which-typed-array: 1.1.18 - dev: false - /uuid@10.0.0: - resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} - hasBin: true - dev: false + uuid@10.0.0: {} - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: false + uuid@8.3.2: {} - /uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - dev: false + uuid@9.0.1: {} - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true + v8-compile-cache-lib@3.0.1: {} - /vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 - dev: false - /vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + vfile@6.0.3: dependencies: '@types/unist': 3.0.3 vfile-message: 4.0.2 - dev: false - /web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - dev: false + web-streams-polyfill@3.3.3: {} - /web-streams-polyfill@4.0.0-beta.3: - resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} - engines: {node: '>= 14'} - dev: false + web-streams-polyfill@4.0.0-beta.3: {} - /web3-utils@1.10.4: - resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} - engines: {node: '>=8.0.0'} + web3-utils@1.10.4: dependencies: '@ethereumjs/util': 8.1.0 bn.js: 5.2.1 @@ -7316,22 +5706,15 @@ snapshots: number-to-bn: 1.7.0 randombytes: 2.1.0 utf8: 3.0.0 - dev: false - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false + webidl-conversions@3.0.1: {} - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: false - /which-typed-array@1.1.18: - resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.18: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 @@ -7339,105 +5722,51 @@ snapshots: for-each: 0.3.3 gopd: 1.2.0 has-tostringtag: 1.0.2 - dev: false - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - /word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} + word-wrap@1.2.5: {} - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: false - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + wrap-ansi@8.1.0: dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - dev: false - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true + wrappy@1.0.2: {} - /ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false - - /ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dependencies: + ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10): + optionalDependencies: bufferutil: 4.0.9 utf-8-validate: 5.0.10 - dev: false - /xsalsa20@1.2.0: - resolution: {integrity: sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w==} - dev: false + ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 - /yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} - engines: {node: '>= 14'} - hasBin: true - dev: false + xsalsa20@1.2.0: {} - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: true + yaml@2.7.0: {} - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + yn@3.1.1: {} - /zod-to-json-schema@3.24.1(zod@3.24.1): - resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} - peerDependencies: - zod: ^3.24.1 + yocto-queue@0.1.0: {} + + zod-to-json-schema@3.24.1(zod@3.24.1): dependencies: zod: 3.24.1 - dev: false - /zod@3.24.1: - resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} - dev: false + zod@3.24.1: {} - /zstddec@0.0.2: - resolution: {integrity: sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA==} - dev: false + zstddec@0.0.2: {} - /zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - dev: false + zwitch@2.0.4: {} diff --git a/src/actions/index.ts b/src/actions/index.ts index e61ba6c..60e7df4 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -43,7 +43,7 @@ export const ACTIONS = { GET_TPS_ACTION: getTPSAction, FETCH_PRICE_ACTION: fetchPriceAction, STAKE_WITH_JUP_ACTION: stakeWithJupAction, - STAKE_WITH_SOLAYER_ACTION : stakeWithSolayerAction, + STAKE_WITH_SOLAYER_ACTION: stakeWithSolayerAction, REGISTER_DOMAIN_ACTION: registerDomainAction, LEND_ASSET_ACTION: lendAssetAction, CREATE_GIBWORK_TASK_ACTION: createGibworkTaskAction, diff --git a/src/tools/stake_with_solayer.ts b/src/tools/stake_with_solayer.ts index ed57319..e2ef643 100644 --- a/src/tools/stake_with_solayer.ts +++ b/src/tools/stake_with_solayer.ts @@ -27,7 +27,7 @@ export async function stakeWithSolayer( if (!response.ok) { const errorData = await response.json(); - throw new Error(errorData.message || 'Staking request failed'); + throw new Error(errorData.message || "Staking request failed"); } const data = await response.json(); @@ -61,4 +61,4 @@ export async function stakeWithSolayer( console.error(error); throw new Error(`Solayer sSOL staking failed: ${error.message}`); } -} \ No newline at end of file +} From 8bd0b462d2163696c52ba660aa5d7a0c094147f7 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sat, 4 Jan 2025 23:37:51 +0530 Subject: [PATCH 74/94] feat: update to hermes v2 --- README.md | 9 +-- .../app/api/chat/route.ts | 80 +++++++++---------- .../data/DefaultRetrievalText.ts | 2 +- .../utils/markdownToHTML.ts | 30 +++---- package.json | 1 - src/actions/pythFetchPrice.ts | 10 ++- src/agent/index.ts | 16 ++-- src/langchain/index.ts | 18 +++-- src/tools/batch_order.ts | 24 +----- src/tools/index.ts | 72 +++++++---------- src/tools/pyth_fetch_price.ts | 79 +++++++++++++----- src/types/index.ts | 61 +++++++++++++- 12 files changed, 240 insertions(+), 162 deletions(-) diff --git a/README.md b/README.md index f4d5562..adeab95 100644 --- a/README.md +++ b/README.md @@ -198,11 +198,11 @@ import { PublicKey } from "@solana/web3.js"; ```typescript -const price = await agent.pythFetchPrice( - "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43" -); +const priceFeedID = await agent.getPythPriceFeedID("SOL"); -console.log("Price in BTC/USD:", price); +const price = await agent.getPythPrice(priceFeedID); + +console.log("Price of SOL/USD:", price); ``` ## Examples @@ -233,7 +233,6 @@ The toolkit relies on several key Solana and Metaplex libraries: - @metaplex-foundation/umi - @lightprotocol/compressed-token - @lightprotocol/stateless.js -- @pythnetwork/price-service-client ## Contributing diff --git a/examples/agent-kit-nextjs-langchain/app/api/chat/route.ts b/examples/agent-kit-nextjs-langchain/app/api/chat/route.ts index 06e6911..badd6b3 100644 --- a/examples/agent-kit-nextjs-langchain/app/api/chat/route.ts +++ b/examples/agent-kit-nextjs-langchain/app/api/chat/route.ts @@ -5,24 +5,24 @@ import { createReactAgent } from "@langchain/langgraph/prebuilt"; import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; const llm = new ChatOpenAI({ - temperature: 0.7, - model: "gpt-4o-mini", + temperature: 0.7, + model: "gpt-4o-mini", }); const solanaAgent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL, - process.env.OPENAI_API_KEY!, + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL, + process.env.OPENAI_API_KEY!, ); const tools = createSolanaTools(solanaAgent); const memory = new MemorySaver(); const agent = createReactAgent({ - llm, - tools, - checkpointSaver: memory, - messageModifier: ` + 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 @@ -34,38 +34,38 @@ const agent = createReactAgent({ }); export async function POST(req: NextRequest) { - try { - const body = await req.json(); - const messages = body.messages ?? []; + try { + const body = await req.json(); + const messages = body.messages ?? []; - const eventStream = agent.streamEvents( - { - messages, - }, - { - version: "v2", - configurable: { - thread_id: "Solana Agent Kit!", - }, - }, - ); + const eventStream = agent.streamEvents( + { + messages, + }, + { + version: "v2", + configurable: { + thread_id: "Solana Agent Kit!", + }, + }, + ); - const textEncoder = new TextEncoder(); - const transformStream = new ReadableStream({ - async start(controller) { - for await (const { event, data } of eventStream) { - if (event === "on_chat_model_stream") { - if (!!data.chunk.content) { - controller.enqueue(textEncoder.encode(data.chunk.content)); - } - } - } - controller.close(); - }, - }); + const textEncoder = new TextEncoder(); + const transformStream = new ReadableStream({ + async start(controller) { + for await (const { event, data } of eventStream) { + if (event === "on_chat_model_stream") { + if (data.chunk.content) { + controller.enqueue(textEncoder.encode(data.chunk.content)); + } + } + } + controller.close(); + }, + }); - return new Response(transformStream); - } catch (e: any) { - return NextResponse.json({ error: e.message }, { status: e.status ?? 500 }); - } + return new Response(transformStream); + } catch (e: any) { + return NextResponse.json({ error: e.message }, { status: e.status ?? 500 }); + } } diff --git a/examples/agent-kit-nextjs-langchain/data/DefaultRetrievalText.ts b/examples/agent-kit-nextjs-langchain/data/DefaultRetrievalText.ts index 898acba..6973d98 100644 --- a/examples/agent-kit-nextjs-langchain/data/DefaultRetrievalText.ts +++ b/examples/agent-kit-nextjs-langchain/data/DefaultRetrievalText.ts @@ -537,4 +537,4 @@ const executor = await initializeAgentExecutorWithOptions(tools, llm, { }, }); \`\`\` -`; \ No newline at end of file +`; diff --git a/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts b/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts index dc265b1..135fdd9 100644 --- a/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts +++ b/examples/agent-kit-nextjs-langchain/utils/markdownToHTML.ts @@ -2,29 +2,29 @@ import { marked } from "marked"; import DOMPurify from "isomorphic-dompurify"; interface MarkedOptions { - gfm: boolean; - breaks: boolean; - headerIds: boolean; - mangle: false; - highlight?: (code: string, lang: string) => string; + gfm: boolean; + breaks: boolean; + headerIds: boolean; + mangle: false; + highlight?: (code: string, lang: string) => string; } // Configure marked options const markedOptions: MarkedOptions = { - gfm: true, // GitHub Flavored Markdown - breaks: true, // Convert \n to
      - headerIds: true, // Add ids to headers - mangle: false, // Don't escape HTML - highlight: function (code: string, lang: string): string { - // You can add syntax highlighting here if needed - return code; - }, + gfm: true, // GitHub Flavored Markdown + breaks: true, // Convert \n to
      + headerIds: true, // Add ids to headers + mangle: false, // Don't escape HTML + highlight: function (code: string, lang: string): string { + // You can add syntax highlighting here if needed + return code; + }, }; marked.setOptions(markedOptions); // Basic markdown to HTML conversion with sanitization export default function markdownToHtml(markdown: string) { - const rawHtml = marked.parse(markdown); - return DOMPurify.sanitize(rawHtml as string); + const rawHtml = marked.parse(markdown); + return DOMPurify.sanitize(rawHtml as string); } diff --git a/package.json b/package.json index 1ee3da7..cb6366f 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,6 @@ "@onsol/tldparser": "^0.6.7", "@orca-so/common-sdk": "0.6.4", "@orca-so/whirlpools-sdk": "^0.13.12", - "@pythnetwork/price-service-client": "^1.9.0", "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", "@solana/spl-token": "^0.4.9", "@tensor-oss/tensorswap-sdk": "^4.5.0", diff --git a/src/actions/pythFetchPrice.ts b/src/actions/pythFetchPrice.ts index 8dc11f6..3f9b9de 100644 --- a/src/actions/pythFetchPrice.ts +++ b/src/actions/pythFetchPrice.ts @@ -1,7 +1,7 @@ import { Action } from "../types/action"; import { SolanaAgentKit } from "../agent"; import { z } from "zod"; -import { pythFetchPrice } from "../tools"; +import { fetchPythPrice, fetchPythPriceFeedID } from "../tools"; const pythFetchPriceAction: Action = { name: "PYTH_FETCH_PRICE", @@ -18,7 +18,7 @@ const pythFetchPriceAction: Action = { [ { input: { - priceFeedId: "Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD", // SOL/USD price feed + tokenSymbol: "SOL", // SOL/USD price feed }, output: { status: "success", @@ -37,8 +37,10 @@ const pythFetchPriceAction: Action = { }), handler: async (_agent: SolanaAgentKit, input: Record) => { try { - const priceFeedId = input.tokenId as string; - const priceStr = await pythFetchPrice(priceFeedId); + const priceFeedId = await fetchPythPriceFeedID(input.tokenSymbol); + + const priceStr = await fetchPythPrice(priceFeedId); + return { status: "success", price: priceStr, diff --git a/src/agent/index.ts b/src/agent/index.ts index 94f94d4..a4aa87b 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -1,4 +1,5 @@ import { Connection, Keypair, PublicKey } from "@solana/web3.js"; +import { BN } from "@coral-xyz/anchor"; import bs58 from "bs58"; import Decimal from "decimal.js"; import { DEFAULT_OPTIONS } from "../constants"; @@ -37,7 +38,6 @@ import { orcaOpenSingleSidedPosition, FEE_TIERS, fetchPrice, - pythFetchPrice, getAllDomainsTLDs, getAllRegisteredAllDomains, getOwnedDomainsForTLD, @@ -53,9 +53,9 @@ import { cancelListing, fetchTokenReportSummary, fetchTokenDetailedReport, - OrderParams, + fetchPythPrice, + fetchPythPriceFeedID, } from "../tools"; - import { CollectionDeployment, CollectionOptions, @@ -64,8 +64,8 @@ import { MintCollectionNFTResponse, PumpfunLaunchResponse, PumpFunTokenOptions, + OrderParams, } from "../types"; -import { BN } from "@coral-xyz/anchor"; /** * Main class for interacting with Solana blockchain @@ -442,8 +442,12 @@ export class SolanaAgentKit { return manifestCreateMarket(this, baseMint, quoteMint); } - async pythFetchPrice(priceFeedID: string): Promise { - return pythFetchPrice(priceFeedID); + async getPythPriceFeedID(tokenSymbol: string): Promise { + return fetchPythPriceFeedID(tokenSymbol); + } + + async getPythPrice(priceFeedID: string): Promise { + return fetchPythPrice(priceFeedID); } async createGibworkTask( diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 38fd7ec..9f5f56b 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1,14 +1,14 @@ import { PublicKey } from "@solana/web3.js"; +import { BN } from "@coral-xyz/anchor"; import Decimal from "decimal.js"; import { Tool } from "langchain/tools"; import { GibworkCreateTaskReponse, + OrderParams, PythFetchPriceResponse, SolanaAgentKit, } from "../index"; -import { create_image } from "../tools/create_image"; -import { BN } from "@coral-xyz/anchor"; -import { FEE_TIERS, generateOrdersfromPattern, OrderParams } from "../tools"; +import { create_image, FEE_TIERS, generateOrdersfromPattern } from "../tools"; export class SolanaBalanceTool extends Tool { name = "solana_balance"; @@ -1497,7 +1497,7 @@ export class SolanaPythFetchPrice extends Tool { description = `Fetch the price of a given price feed from Pyth's Hermes service Inputs: - priceFeedID: string, the price feed ID, e.g., "0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43" for BTC/USD`; + tokenSymbol: string, e.g., BTC for bitcoin`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -1505,17 +1505,21 @@ export class SolanaPythFetchPrice extends Tool { async _call(input: string): Promise { try { - const price = await this.solanaKit.pythFetchPrice(input); + const priceFeedID = await this.solanaKit.getPythPriceFeedID(input); + const price = await this.solanaKit.getPythPrice(priceFeedID); + const response: PythFetchPriceResponse = { status: "success", - priceFeedID: input, + tokenSymbol: input, + priceFeedID, price, }; + return JSON.stringify(response); } catch (error: any) { const response: PythFetchPriceResponse = { status: "error", - priceFeedID: input, + tokenSymbol: input, message: error.message, code: error.code || "UNKNOWN_ERROR", }; diff --git a/src/tools/batch_order.ts b/src/tools/batch_order.ts index f788ba4..c27fa98 100644 --- a/src/tools/batch_order.ts +++ b/src/tools/batch_order.ts @@ -4,33 +4,13 @@ import { sendAndConfirmTransaction, TransactionInstruction, } from "@solana/web3.js"; -import { SolanaAgentKit } from "../index"; import { ManifestClient, WrapperPlaceOrderParamsExternal, } from "@cks-systems/manifest-sdk"; import { OrderType } from "@cks-systems/manifest-sdk/client/ts/src/wrapper/types/OrderType"; - -export interface OrderParams { - quantity: number; - side: string; - price: number; -} - -interface BatchOrderPattern { - side: string; - totalQuantity?: number; - priceRange?: { - min?: number; - max?: number; - }; - spacing?: { - type: "percentage" | "fixed"; - value: number; - }; - numberOfOrders?: number; - individualQuantity?: number; -} +import { SolanaAgentKit } from "../index"; +import { BatchOrderPattern, OrderParams } from "../types"; /** * Generates an array of orders based on the specified pattern diff --git a/src/tools/index.ts b/src/tools/index.ts index 9e4a355..f38e328 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -1,58 +1,46 @@ -import exp from "constants"; - -export * from "./request_faucet_funds"; -export * from "./deploy_token"; -export * from "./deploy_collection"; -export * from "./get_balance"; -export * from "./get_balance_other"; -export * from "./mint_nft"; -export * from "./transfer"; -export * from "./trade"; -export * from "./limit_order"; export * from "./batch_order"; export * from "./cancel_all_orders"; -export * from "./withdraw_all"; -export * from "./register_domain"; -export * from "./resolve_sol_domain"; +export * from "./create_gibwork_task"; +export * from "./create_image"; +export * from "./create_tiplinks"; +export * from "./deploy_collection"; +export * from "./deploy_token"; +export * from "./fetch_price"; +export * from "./get_all_domains_tlds"; +export * from "./get_all_registered_all_domains"; +export * from "./get_balance"; +export * from "./get_balance_other"; +export * from "./get_main_all_domains_domain"; +export * from "./get_owned_all_domains"; +export * from "./get_owned_domains_for_tld"; export * from "./get_primary_domain"; +export * from "./get_token_data"; +export * from "./get_tps"; export * from "./launch_pumpfun_token"; export * from "./lend"; -export * from "./get_tps"; -export * from "./get_token_data"; -export * from "./stake_with_jup"; -export * from "./fetch_price"; -export * from "./send_compressed_airdrop"; +export * from "./limit_order"; +export * from "./manifest_create_market"; +export * from "./mint_nft"; +export * from "./openbook_create_market"; export * from "./orca_close_position"; export * from "./orca_create_clmm"; export * from "./orca_create_single_sided_liquidity_pool"; export * from "./orca_fetch_positions"; export * from "./orca_open_centered_position_with_liquidity"; export * from "./orca_open_single_sided_position"; -export * from "./get_all_domains_tlds"; -export * from "./get_all_registered_all_domains"; -export * from "./get_owned_domains_for_tld"; -export * from "./get_main_all_domains_domain"; -export * from "./get_owned_all_domains"; -export * from "./resolve_domain"; - -export * from "./get_all_domains_tlds"; -export * from "./get_all_registered_all_domains"; -export * from "./get_owned_domains_for_tld"; -export * from "./get_main_all_domains_domain"; -export * from "./get_owned_all_domains"; -export * from "./resolve_domain"; - +export * from "./pyth_fetch_price"; export * from "./raydium_create_ammV4"; export * from "./raydium_create_clmm"; export * from "./raydium_create_cpmm"; -export * from "./openbook_create_market"; -export * from "./manifest_create_market"; -export * from "./pyth_fetch_price"; - -export * from "./create_gibwork_task"; - +export * from "./register_domain"; +export * from "./request_faucet_funds"; +export * from "./resolve_domain"; +export * from "./resolve_sol_domain"; export * from "./rock_paper_scissor"; -export * from "./create_tiplinks"; - -export * from "./tensor_trade"; export * from "./rugcheck"; +export * from "./send_compressed_airdrop"; +export * from "./stake_with_jup"; +export * from "./tensor_trade"; +export * from "./trade"; +export * from "./transfer"; +export * from "./withdraw_all"; diff --git a/src/tools/pyth_fetch_price.ts b/src/tools/pyth_fetch_price.ts index 789cec8..35d619c 100644 --- a/src/tools/pyth_fetch_price.ts +++ b/src/tools/pyth_fetch_price.ts @@ -1,5 +1,51 @@ -import { PriceServiceConnection } from "@pythnetwork/price-service-client"; import BN from "bn.js"; +import { PythPriceFeedIDItem } from "../types"; + +/** + * Fetch the price feed ID for a given token symbol from Pyth + * @param tokenSymbol Token symbol + * @returns Price feed ID + */ +export async function fetchPythPriceFeedID( + tokenSymbol: string, +): Promise { + try { + const stableHermesServiceUrl: string = "https://hermes.pyth.network"; + + const response = await fetch( + `${stableHermesServiceUrl}/v2/price_feeds/?query=${tokenSymbol}&asset_type=crypto`, + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json(); + + if (data.length === 0) { + throw new Error(`No price feed found for ${tokenSymbol}`); + } + + if (data.length > 1) { + const filteredData = data.filter( + (item: PythPriceFeedIDItem) => + item.attributes.base.toLowerCase() === tokenSymbol.toLowerCase(), + ); + + if (filteredData.length === 0) { + throw new Error(`No price feed found for ${tokenSymbol}`); + } + + return filteredData[0].id; + } + + return data[0].id; + } catch (error: any) { + throw new Error( + `Fetching price feed ID from Pyth failed: ${error.message}`, + ); + } +} /** * Fetch the price of a given price feed from Pyth @@ -9,28 +55,25 @@ import BN from "bn.js"; * * You can find priceFeedIDs here: https://www.pyth.network/developers/price-feed-ids#stable */ -export async function pythFetchPrice(priceFeedID: string): Promise { - // get Hermes service URL from https://docs.pyth.network/price-feeds/api-instances-and-providers/hermes - const stableHermesServiceUrl: string = "https://hermes.pyth.network"; - const connection = new PriceServiceConnection(stableHermesServiceUrl); - const feeds = [priceFeedID]; - +export async function fetchPythPrice(feedID: string): Promise { try { - const currentPrice = await connection.getLatestPriceFeeds(feeds); + const stableHermesServiceUrl: string = "https://hermes.pyth.network"; - if (currentPrice === undefined) { - throw new Error("Price data not available for the given token."); + const response = await fetch( + `${stableHermesServiceUrl}/v2/updates/price/latest/?ids[]=${feedID}`, + ); + + const data = await response.json(); + + const parsedData = data.parsed; + + if (parsedData.length === 0) { + throw new Error(`No price data found for ${feedID}`); } - if (currentPrice.length === 0) { - throw new Error("Price data not available for the given token."); - } + const price = new BN(parsedData[0].price.price); + const exponent = new BN(parsedData[0].price.expo); - // get price and exponent from price feed - const price = new BN(currentPrice[0].getPriceUnchecked().price); - const exponent = new BN(currentPrice[0].getPriceUnchecked().expo); - - // convert to scaled price const scaledPrice = price.div(new BN(10).pow(exponent)); return scaledPrice.toString(); diff --git a/src/types/index.ts b/src/types/index.ts index 1dac764..ad88ec8 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -88,7 +88,8 @@ export interface FetchPriceResponse { export interface PythFetchPriceResponse { status: "success" | "error"; - priceFeedID: string; + tokenSymbol: string; + priceFeedID?: string; price?: string; message?: string; code?: string; @@ -165,3 +166,61 @@ export interface TokenCheck { }>; score: number; } + +export interface PythPriceFeedIDItem { + id: string; + attributes: { + asset_type: string; + base: string; + }; +} + +export interface PythPriceItem { + binary: { + data: string[]; + encoding: string; + }; + parsed: [ + Array<{ + id: string; + price: { + price: string; + conf: string; + expo: number; + publish_time: number; + }; + ema_price: { + price: string; + conf: string; + expo: number; + publish_time: number; + }; + metadata: { + slot: number; + proof_available_time: number; + prev_publish_time: number; + }; + }>, + ]; +} + +export interface OrderParams { + quantity: number; + side: string; + price: number; +} + +export interface BatchOrderPattern { + side: string; + totalQuantity?: number; + priceRange?: { + min?: number; + max?: number; + }; + spacing?: { + type: "percentage" | "fixed"; + value: number; + }; + numberOfOrders?: number; + individualQuantity?: number; +} From 9da44f0be393cc3fbaa2d82200c8ebef98d36262 Mon Sep 17 00:00:00 2001 From: aryan Date: Sun, 5 Jan 2025 00:22:04 +0530 Subject: [PATCH 75/94] fix: manifest sdk --- package.json | 2 +- src/agent/index.ts | 34 +++--- src/langchain/index.ts | 242 +++++++++++++++++++-------------------- src/tools/batch_order.ts | 2 +- src/tools/index.ts | 4 +- 5 files changed, 142 insertions(+), 142 deletions(-) diff --git a/package.json b/package.json index 648ce0f..95bb3ce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "solana-agent-kit", - "version": "1.3.5", + "version": "1.3.6", "description": "connect any ai agents to solana protocols", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/src/agent/index.ts b/src/agent/index.ts index ae0c367..aa73546 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -22,8 +22,8 @@ import { registerDomain, request_faucet_funds, trade, - limitOrder, - batchOrder, + // limitOrder, + // batchOrder, cancelAllOrders, withdrawAll, closePerpTradeShort, @@ -58,7 +58,7 @@ import { cancelListing, fetchTokenReportSummary, fetchTokenDetailedReport, - OrderParams, + // OrderParams, } from "../tools"; import { @@ -190,21 +190,21 @@ export class SolanaAgentKit { return trade(this, outputMint, inputAmount, inputMint, slippageBps); } - async limitOrder( - marketId: PublicKey, - quantity: number, - side: string, - price: number, - ): Promise { - return limitOrder(this, marketId, quantity, side, price); - } + // async limitOrder( + // marketId: PublicKey, + // quantity: number, + // side: string, + // price: number, + // ): Promise { + // return limitOrder(this, marketId, quantity, side, price); + // } - async batchOrder( - marketId: PublicKey, - orders: OrderParams[], - ): Promise { - return batchOrder(this, marketId, orders); - } + // async batchOrder( + // marketId: PublicKey, + // orders: OrderParams[], + // ): Promise { + // return batchOrder(this, marketId, orders); + // } async cancelAllOrders(marketId: PublicKey): Promise { return cancelAllOrders(this, marketId); diff --git a/src/langchain/index.ts b/src/langchain/index.ts index d5d17e5..ea82010 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -8,7 +8,7 @@ import { } from "../index"; import { create_image } from "../tools/create_image"; import { BN } from "@coral-xyz/anchor"; -import { FEE_TIERS, generateOrdersfromPattern, OrderParams } from "../tools"; +import { FEE_TIERS } from "../tools"; export class SolanaBalanceTool extends Tool { name = "solana_balance"; @@ -414,143 +414,143 @@ export class SolanaTradeTool extends Tool { } } -export class SolanaLimitOrderTool extends Tool { - name = "solana_limit_order"; - description = `This tool can be used to place limit orders using Manifest. +// export class SolanaLimitOrderTool extends Tool { +// name = "solana_limit_order"; +// description = `This tool can be used to place limit orders using Manifest. - Do not allow users to place multiple orders with this instruction, use solana_batch_order instead. +// Do not allow users to place multiple orders with this instruction, use solana_batch_order instead. - Inputs ( input is a JSON string ): - marketId: PublicKey, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required) - quantity: number, eg 1 or 0.01 (required) - side: string, eg "Buy" or "Sell" (required) - price: number, in tokens eg 200 for SOL/USDC (required)`; +// Inputs ( input is a JSON string ): +// marketId: PublicKey, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required) +// quantity: number, eg 1 or 0.01 (required) +// side: string, eg "Buy" or "Sell" (required) +// price: number, in tokens eg 200 for SOL/USDC (required)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } +// constructor(private solanaKit: SolanaAgentKit) { +// super(); +// } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); +// protected async _call(input: string): Promise { +// try { +// const parsedInput = JSON.parse(input); - const tx = await this.solanaKit.limitOrder( - new PublicKey(parsedInput.marketId), - parsedInput.quantity, - parsedInput.side, - parsedInput.price, - ); +// const tx = await this.solanaKit.limitOrder( +// new PublicKey(parsedInput.marketId), +// parsedInput.quantity, +// parsedInput.side, +// parsedInput.price, +// ); - return JSON.stringify({ - status: "success", - message: "Trade executed successfully", - transaction: tx, - marketId: parsedInput.marketId, - quantity: parsedInput.quantity, - side: parsedInput.side, - price: parsedInput.price, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} +// return JSON.stringify({ +// status: "success", +// message: "Trade executed successfully", +// transaction: tx, +// marketId: parsedInput.marketId, +// quantity: parsedInput.quantity, +// side: parsedInput.side, +// price: parsedInput.price, +// }); +// } catch (error: any) { +// return JSON.stringify({ +// status: "error", +// message: error.message, +// code: error.code || "UNKNOWN_ERROR", +// }); +// } +// } +// } -export class SolanaBatchOrderTool extends Tool { - name = "solana_batch_order"; - description = `Places multiple limit orders in one transaction using Manifest. Submit orders either as a list or pattern: +// export class SolanaBatchOrderTool extends Tool { +// name = "solana_batch_order"; +// description = `Places multiple limit orders in one transaction using Manifest. Submit orders either as a list or pattern: - 1. List format: - { - "marketId": "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ", - "orders": [ - { "quantity": 1, "side": "Buy", "price": 200 }, - { "quantity": 0.5, "side": "Sell", "price": 205 } - ] - } +// 1. List format: +// { +// "marketId": "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ", +// "orders": [ +// { "quantity": 1, "side": "Buy", "price": 200 }, +// { "quantity": 0.5, "side": "Sell", "price": 205 } +// ] +// } - 2. Pattern format: - { - "marketId": "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ", - "pattern": { - "side": "Buy", - "totalQuantity": 100, - "priceRange": { "max": 1.0 }, - "spacing": { "type": "percentage", "value": 1 }, - "numberOfOrders": 5 - } - } +// 2. Pattern format: +// { +// "marketId": "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ", +// "pattern": { +// "side": "Buy", +// "totalQuantity": 100, +// "priceRange": { "max": 1.0 }, +// "spacing": { "type": "percentage", "value": 1 }, +// "numberOfOrders": 5 +// } +// } - Examples: - - "Place 5 buy orders totaling 100 tokens, 1% apart below $1" - - "Create 3 sell orders of 10 tokens each between $50-$55" - - "Place buy orders worth 50 tokens, $0.10 spacing from $0.80" +// Examples: +// - "Place 5 buy orders totaling 100 tokens, 1% apart below $1" +// - "Create 3 sell orders of 10 tokens each between $50-$55" +// - "Place buy orders worth 50 tokens, $0.10 spacing from $0.80" - Important: All orders must be in one transaction. Combine buy and sell orders into a single pattern or list. Never break the orders down to individual buy or sell orders.`; +// Important: All orders must be in one transaction. Combine buy and sell orders into a single pattern or list. Never break the orders down to individual buy or sell orders.`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } +// constructor(private solanaKit: SolanaAgentKit) { +// super(); +// } - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - let ordersToPlace: OrderParams[] = []; +// protected async _call(input: string): Promise { +// try { +// const parsedInput = JSON.parse(input); +// let ordersToPlace: OrderParams[] = []; - if (!parsedInput.marketId) { - throw new Error("Market ID is required"); - } +// if (!parsedInput.marketId) { +// throw new Error("Market ID is required"); +// } - if (parsedInput.pattern) { - ordersToPlace = generateOrdersfromPattern(parsedInput.pattern); - } else if (Array.isArray(parsedInput.orders)) { - ordersToPlace = parsedInput.orders; - } else { - throw new Error("Either pattern or orders array is required"); - } +// if (parsedInput.pattern) { +// ordersToPlace = generateOrdersfromPattern(parsedInput.pattern); +// } else if (Array.isArray(parsedInput.orders)) { +// ordersToPlace = parsedInput.orders; +// } else { +// throw new Error("Either pattern or orders array is required"); +// } - if (ordersToPlace.length === 0) { - throw new Error("No orders generated or provided"); - } +// if (ordersToPlace.length === 0) { +// throw new Error("No orders generated or provided"); +// } - ordersToPlace.forEach((order: OrderParams, index: number) => { - if (!order.quantity || !order.side || !order.price) { - throw new Error( - `Invalid order at index ${index}: quantity, side, and price are required`, - ); - } - if (order.side !== "Buy" && order.side !== "Sell") { - throw new Error( - `Invalid side at index ${index}: must be "Buy" or "Sell"`, - ); - } - }); +// ordersToPlace.forEach((order: OrderParams, index: number) => { +// if (!order.quantity || !order.side || !order.price) { +// throw new Error( +// `Invalid order at index ${index}: quantity, side, and price are required`, +// ); +// } +// if (order.side !== "Buy" && order.side !== "Sell") { +// throw new Error( +// `Invalid side at index ${index}: must be "Buy" or "Sell"`, +// ); +// } +// }); - const tx = await this.solanaKit.batchOrder( - new PublicKey(parsedInput.marketId), - parsedInput.orders, - ); +// const tx = await this.solanaKit.batchOrder( +// new PublicKey(parsedInput.marketId), +// parsedInput.orders, +// ); - return JSON.stringify({ - status: "success", - message: "Batch order executed successfully", - transaction: tx, - marketId: parsedInput.marketId, - orders: parsedInput.orders, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} +// return JSON.stringify({ +// status: "success", +// message: "Batch order executed successfully", +// transaction: tx, +// marketId: parsedInput.marketId, +// orders: parsedInput.orders, +// }); +// } catch (error: any) { +// return JSON.stringify({ +// status: "error", +// message: error.message, +// code: error.code || "UNKNOWN_ERROR", +// }); +// } +// } +// } export class SolanaCancelAllOrdersTool extends Tool { name = "solana_cancel_all_orders"; @@ -2149,8 +2149,8 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaRaydiumCreateCpmm(solanaKit), new SolanaOpenbookCreateMarket(solanaKit), new SolanaManifestCreateMarket(solanaKit), - new SolanaLimitOrderTool(solanaKit), - new SolanaBatchOrderTool(solanaKit), + // new SolanaLimitOrderTool(solanaKit), + // new SolanaBatchOrderTool(solanaKit), new SolanaCancelAllOrdersTool(solanaKit), new SolanaWithdrawAllTool(solanaKit), new SolanaClosePosition(solanaKit), diff --git a/src/tools/batch_order.ts b/src/tools/batch_order.ts index f788ba4..d66b813 100644 --- a/src/tools/batch_order.ts +++ b/src/tools/batch_order.ts @@ -7,7 +7,7 @@ import { import { SolanaAgentKit } from "../index"; import { ManifestClient, - WrapperPlaceOrderParamsExternal, + WrapperPlaceOrderParamsExternal } from "@cks-systems/manifest-sdk"; import { OrderType } from "@cks-systems/manifest-sdk/client/ts/src/wrapper/types/OrderType"; diff --git a/src/tools/index.ts b/src/tools/index.ts index 62a11de..718c01a 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -9,8 +9,8 @@ export * from "./get_balance_other"; export * from "./mint_nft"; export * from "./transfer"; export * from "./trade"; -export * from "./limit_order"; -export * from "./batch_order"; +// export * from "./limit_order"; +// export * from "./batch_order"; export * from "./cancel_all_orders"; export * from "./withdraw_all"; export * from "./adrena_perp_trading"; From 42ffa3da29afff96fe88d53653e246d42d546e83 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 5 Jan 2025 00:48:31 +0530 Subject: [PATCH 76/94] fix: pyth price feed --- src/tools/pyth_fetch_price.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/tools/pyth_fetch_price.ts b/src/tools/pyth_fetch_price.ts index 3ed87f5..96ed636 100644 --- a/src/tools/pyth_fetch_price.ts +++ b/src/tools/pyth_fetch_price.ts @@ -49,7 +49,6 @@ export async function fetchPythPriceFeedID( /** * Fetch the price of a given price feed from Pyth - * @param agent SolanaAgentKit instance * @param priceFeedID Price feed ID * @returns Latest price value from feed * @@ -72,10 +71,19 @@ export async function fetchPythPrice(feedID: string): Promise { } const price = new BN(parsedData[0].price.price); - const exponent = new BN(parsedData[0].price.expo); + const exponent = parsedData[0].price.expo; - const scaledPrice = price.div(new BN(10).pow(exponent)); + if (exponent < 0) { + const adjustedPrice = price.mul(new BN(100)); + const divisor = new BN(10).pow(new BN(-exponent)); + const scaledPrice = adjustedPrice.div(divisor); + + const priceStr = scaledPrice.toString(); + const formattedPrice = `${priceStr.slice(0, -2)}.${priceStr.slice(-2)}`; + return formattedPrice.startsWith('.') ? `0${formattedPrice}` : formattedPrice; + } + const scaledPrice = price.div(new BN(10).pow(new BN(exponent))); return scaledPrice.toString(); } catch (error: any) { throw new Error(`Fetching price from Pyth failed: ${error.message}`); From 7fc51c530216b6ba71f1a6af3d2c37ec40135c99 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 5 Jan 2025 00:50:19 +0530 Subject: [PATCH 77/94] chore: lint + docs --- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 16 +++++++--------- docs/functions/createSolanaTools.html | 2 +- docs/functions/createVercelAITools.html | 2 +- docs/functions/executeAction.html | 2 +- docs/functions/findAction.html | 2 +- docs/functions/getActionExamples.html | 2 +- docs/interfaces/Action.html | 14 +++++++------- docs/interfaces/ActionExample.html | 4 ++-- docs/interfaces/BatchOrderPattern.html | 4 ++-- docs/interfaces/CollectionDeployment.html | 4 ++-- docs/interfaces/CollectionOptions.html | 4 ++-- docs/interfaces/Config.html | 4 ++-- docs/interfaces/Creator.html | 4 ++-- docs/interfaces/FetchPriceResponse.html | 4 ++-- docs/interfaces/GibworkCreateTaskReponse.html | 4 ++-- docs/interfaces/JupiterTokenData.html | 4 ++-- docs/interfaces/LuloAccountDetailsResponse.html | 4 ++-- docs/interfaces/MintCollectionNFTResponse.html | 4 ++-- docs/interfaces/OrderParams.html | 4 ++-- docs/interfaces/PumpFunTokenOptions.html | 4 ++-- docs/interfaces/PumpfunLaunchResponse.html | 4 ++-- docs/interfaces/PythFetchPriceResponse.html | 4 ++-- docs/interfaces/PythPriceFeedIDItem.html | 4 ++-- docs/interfaces/PythPriceItem.html | 4 ++-- docs/interfaces/TokenCheck.html | 4 ++-- docs/types/Handler.html | 2 +- docs/variables/actions.html | 2 +- src/tools/pyth_fetch_price.ts | 8 +++++--- 29 files changed, 63 insertions(+), 63 deletions(-) diff --git a/docs/assets/search.js b/docs/assets/search.js index 86069d6..4e1411f 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index a009592..f8872a0 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,13 +1,12 @@ SolanaAgentKit | solana-agent-kit

      Class SolanaAgentKit

      Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, trading and more

      SolanaAgentKit

      -

      Constructors

      Constructors

      Properties

      Methods

      Methods

      cancelAllOrders closePerpTradeLong closePerpTradeShort createGibworkTask @@ -32,7 +31,6 @@ Provides a unified interface for token operations, NFT management, trading and m getTPS launchPumpFunToken lendAssets -limitOrder manifestCreateMarket mintNFT openbookCreateMarket @@ -65,8 +63,8 @@ Please use the new constructor with Config object instead:

      const agent = new SolanaAgentKit(privateKey, rpcUrl, {
      OPENAI_API_KEY: 'your-key'
      });
      -
    • Parameters

      • private_key: string
      • rpc_url: string
      • config: Config

      Returns SolanaAgentKit

    Properties

    config: Config

    Configuration object

    -
    connection: Connection

    Solana RPC connection

    -
    wallet: Keypair

    Wallet keypair for signing transactions

    -
    wallet_address: PublicKey

    Public key of the wallet

    -

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • tokenSymbol: string

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • quantity: number
      • side: string
      • price: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    +
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    +
    connection: Connection

    Solana RPC connection

    +
    wallet: Keypair

    Wallet keypair for signing transactions

    +
    wallet_address: PublicKey

    Public key of the wallet

    +

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • tokenSymbol: string

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index f949e7f..40c059b 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaPerpCloseTradeTool
          | SolanaPerpOpenTradeTool
          | SolanaTradeTool
          | SolanaLimitOrderTool
          | SolanaBatchOrderTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaRestakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
          | SolanaFetchTokenReportSummaryTool
          | SolanaFetchTokenDetailedReportTool
      )[]

    +createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaPerpCloseTradeTool
          | SolanaPerpOpenTradeTool
          | SolanaTradeTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaRestakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
          | SolanaFetchTokenReportSummaryTool
          | SolanaFetchTokenDetailedReportTool
      )[]

    diff --git a/docs/functions/createVercelAITools.html b/docs/functions/createVercelAITools.html index 255cefb..4900cf6 100644 --- a/docs/functions/createVercelAITools.html +++ b/docs/functions/createVercelAITools.html @@ -1 +1 @@ -createVercelAITools | solana-agent-kit

    Function createVercelAITools

    +createVercelAITools | solana-agent-kit

    Function createVercelAITools

    diff --git a/docs/functions/executeAction.html b/docs/functions/executeAction.html index 94c6c4a..f138d97 100644 --- a/docs/functions/executeAction.html +++ b/docs/functions/executeAction.html @@ -1,2 +1,2 @@ executeAction | solana-agent-kit

    Function executeAction

    • Execute an action with the given input

      -

      Parameters

      Returns Promise<Record<string, any>>

    +

    Parameters

    Returns Promise<Record<string, any>>

    diff --git a/docs/functions/findAction.html b/docs/functions/findAction.html index 92f4899..7532dff 100644 --- a/docs/functions/findAction.html +++ b/docs/functions/findAction.html @@ -1,2 +1,2 @@ findAction | solana-agent-kit

    Function findAction

    • Find an action by its name or one of its similes

      -

      Parameters

      • query: string

      Returns Action | undefined

    +

    Parameters

    • query: string

    Returns Action | undefined

    diff --git a/docs/functions/getActionExamples.html b/docs/functions/getActionExamples.html index 46823a7..1d3478f 100644 --- a/docs/functions/getActionExamples.html +++ b/docs/functions/getActionExamples.html @@ -1,2 +1,2 @@ getActionExamples | solana-agent-kit

    Function getActionExamples

    • Get examples for an action

      -

      Parameters

      • action: Action

      Returns string

    +

    Parameters

    • action: Action

    Returns string

    diff --git a/docs/interfaces/Action.html b/docs/interfaces/Action.html index 35ef6c2..2102f86 100644 --- a/docs/interfaces/Action.html +++ b/docs/interfaces/Action.html @@ -1,16 +1,16 @@ Action | solana-agent-kit

    Interface Action

    Main Action interface inspired by ELIZA This interface makes it easier to implement actions across different frameworks

    -
    interface Action {
        description: string;
        examples: ActionExample[][];
        handler: Handler;
        name: string;
        schema: ZodType;
        similes: string[];
    }

    Properties

    interface Action {
        description: string;
        examples: ActionExample[][];
        handler: Handler;
        name: string;
        schema: ZodType;
        similes: string[];
    }

    Properties

    description: string

    Detailed description of what the action does

    -
    examples: ActionExample[][]

    Array of example inputs and outputs for the action +

    examples: ActionExample[][]

    Array of example inputs and outputs for the action Each inner array represents a group of related examples

    -
    handler: Handler

    Function that executes the action

    -
    name: string

    Unique name of the action

    -
    schema: ZodType

    Zod schema for input validation

    -
    similes: string[]

    Alternative names/phrases that can trigger this action

    -
    +
    handler: Handler

    Function that executes the action

    +
    name: string

    Unique name of the action

    +
    schema: ZodType

    Zod schema for input validation

    +
    similes: string[]

    Alternative names/phrases that can trigger this action

    +
    diff --git a/docs/interfaces/ActionExample.html b/docs/interfaces/ActionExample.html index e1ea07a..5c96b15 100644 --- a/docs/interfaces/ActionExample.html +++ b/docs/interfaces/ActionExample.html @@ -1,5 +1,5 @@ ActionExample | solana-agent-kit

    Interface ActionExample

    Example of an action with input and output

    -
    interface ActionExample {
        explanation: string;
        input: Record<string, any>;
        output: Record<string, any>;
    }

    Properties

    interface ActionExample {
        explanation: string;
        input: Record<string, any>;
        output: Record<string, any>;
    }

    Properties

    explanation: string
    input: Record<string, any>
    output: Record<string, any>
    +

    Properties

    explanation: string
    input: Record<string, any>
    output: Record<string, any>
    diff --git a/docs/interfaces/BatchOrderPattern.html b/docs/interfaces/BatchOrderPattern.html index 2719bbb..31508ed 100644 --- a/docs/interfaces/BatchOrderPattern.html +++ b/docs/interfaces/BatchOrderPattern.html @@ -1,7 +1,7 @@ -BatchOrderPattern | solana-agent-kit

    Interface BatchOrderPattern

    interface BatchOrderPattern {
        individualQuantity?: number;
        numberOfOrders?: number;
        priceRange?: { max?: number; min?: number };
        side: string;
        spacing?: { type: "percentage" | "fixed"; value: number };
        totalQuantity?: number;
    }

    Properties

    individualQuantity? +BatchOrderPattern | solana-agent-kit

    Interface BatchOrderPattern

    interface BatchOrderPattern {
        individualQuantity?: number;
        numberOfOrders?: number;
        priceRange?: { max?: number; min?: number };
        side: string;
        spacing?: { type: "percentage" | "fixed"; value: number };
        totalQuantity?: number;
    }

    Properties

    individualQuantity?: number
    numberOfOrders?: number
    priceRange?: { max?: number; min?: number }
    side: string
    spacing?: { type: "percentage" | "fixed"; value: number }
    totalQuantity?: number
    +

    Properties

    individualQuantity?: number
    numberOfOrders?: number
    priceRange?: { max?: number; min?: number }
    side: string
    spacing?: { type: "percentage" | "fixed"; value: number }
    totalQuantity?: number
    diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index 7881a39..c8bfe83 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress +CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    +

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index dbef805..6c3fd74 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators? +CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    +

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    diff --git a/docs/interfaces/Config.html b/docs/interfaces/Config.html index c19e999..5a3ca46 100644 --- a/docs/interfaces/Config.html +++ b/docs/interfaces/Config.html @@ -1,4 +1,4 @@ -Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS? +Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    +

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index e016a58..2f4ea54 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    address +Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    Properties

    address: string
    percentage: number
    +

    Properties

    address: string
    percentage: number
    diff --git a/docs/interfaces/FetchPriceResponse.html b/docs/interfaces/FetchPriceResponse.html index 88aa827..923975d 100644 --- a/docs/interfaces/FetchPriceResponse.html +++ b/docs/interfaces/FetchPriceResponse.html @@ -1,6 +1,6 @@ -FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code? +FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    +

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    diff --git a/docs/interfaces/GibworkCreateTaskReponse.html b/docs/interfaces/GibworkCreateTaskReponse.html index e68d6d1..87ecb48 100644 --- a/docs/interfaces/GibworkCreateTaskReponse.html +++ b/docs/interfaces/GibworkCreateTaskReponse.html @@ -1,4 +1,4 @@ -GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature? +GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    +

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    diff --git a/docs/interfaces/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index 7d6d5cc..36352ec 100644 --- a/docs/interfaces/JupiterTokenData.html +++ b/docs/interfaces/JupiterTokenData.html @@ -1,4 +1,4 @@ -JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address +JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    +

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index 99bce11..098cdff 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

    Interface LuloAccountDetailsResponse

    Lulo Account Details response format

    -
    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    +

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index 253fb78..d6ac59d 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    metadata +MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    Properties

    metadata: PublicKey
    mint: PublicKey
    +

    Properties

    metadata: PublicKey
    mint: PublicKey
    diff --git a/docs/interfaces/OrderParams.html b/docs/interfaces/OrderParams.html index 97d2aee..c86dede 100644 --- a/docs/interfaces/OrderParams.html +++ b/docs/interfaces/OrderParams.html @@ -1,4 +1,4 @@ -OrderParams | solana-agent-kit

    Interface OrderParams

    interface OrderParams {
        price: number;
        quantity: number;
        side: string;
    }

    Properties

    price +OrderParams | solana-agent-kit

    Interface OrderParams

    interface OrderParams {
        price: number;
        quantity: number;
        side: string;
    }

    Properties

    Properties

    price: number
    quantity: number
    side: string
    +

    Properties

    price: number
    quantity: number
    side: string
    diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html index 00067df..a2d5e9e 100644 --- a/docs/interfaces/PumpFunTokenOptions.html +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -1,7 +1,7 @@ -PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL? +PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    +

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html index 2caabdc..94ff87e 100644 --- a/docs/interfaces/PumpfunLaunchResponse.html +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -1,5 +1,5 @@ -PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error? +PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    +

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    diff --git a/docs/interfaces/PythFetchPriceResponse.html b/docs/interfaces/PythFetchPriceResponse.html index 3dc346f..36750a0 100644 --- a/docs/interfaces/PythFetchPriceResponse.html +++ b/docs/interfaces/PythFetchPriceResponse.html @@ -1,7 +1,7 @@ -PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID?: string;
        status: "success" | "error";
        tokenSymbol: string;
    }

    Properties

    code? +PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID?: string;
        status: "success" | "error";
        tokenSymbol: string;
    }

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID?: string
    status: "success" | "error"
    tokenSymbol: string
    +

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID?: string
    status: "success" | "error"
    tokenSymbol: string
    diff --git a/docs/interfaces/PythPriceFeedIDItem.html b/docs/interfaces/PythPriceFeedIDItem.html index 360af6b..6930839 100644 --- a/docs/interfaces/PythPriceFeedIDItem.html +++ b/docs/interfaces/PythPriceFeedIDItem.html @@ -1,3 +1,3 @@ -PythPriceFeedIDItem | solana-agent-kit

    Interface PythPriceFeedIDItem

    interface PythPriceFeedIDItem {
        attributes: { asset_type: string; base: string };
        id: string;
    }

    Properties

    attributes +PythPriceFeedIDItem | solana-agent-kit

    Interface PythPriceFeedIDItem

    interface PythPriceFeedIDItem {
        attributes: { asset_type: string; base: string };
        id: string;
    }

    Properties

    Properties

    attributes: { asset_type: string; base: string }
    id: string
    +

    Properties

    attributes: { asset_type: string; base: string }
    id: string
    diff --git a/docs/interfaces/PythPriceItem.html b/docs/interfaces/PythPriceItem.html index 859ba51..477b285 100644 --- a/docs/interfaces/PythPriceItem.html +++ b/docs/interfaces/PythPriceItem.html @@ -1,3 +1,3 @@ -PythPriceItem | solana-agent-kit

    Interface PythPriceItem

    interface PythPriceItem {
        binary: { data: string[]; encoding: string };
        parsed: [
            {
                ema_price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
                id: string;
                metadata: {
                    prev_publish_time: number;
                    proof_available_time: number;
                    slot: number;
                };
                price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
            }[],
        ];
    }

    Properties

    binary +PythPriceItem | solana-agent-kit

    Interface PythPriceItem

    interface PythPriceItem {
        binary: { data: string[]; encoding: string };
        parsed: [
            {
                ema_price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
                id: string;
                metadata: {
                    prev_publish_time: number;
                    proof_available_time: number;
                    slot: number;
                };
                price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
            }[],
        ];
    }

    Properties

    Properties

    binary: { data: string[]; encoding: string }
    parsed: [
        {
            ema_price: {
                conf: string;
                expo: number;
                price: string;
                publish_time: number;
            };
            id: string;
            metadata: {
                prev_publish_time: number;
                proof_available_time: number;
                slot: number;
            };
            price: { conf: string; expo: number; price: string; publish_time: number };
        }[],
    ]
    +

    Properties

    binary: { data: string[]; encoding: string }
    parsed: [
        {
            ema_price: {
                conf: string;
                expo: number;
                price: string;
                publish_time: number;
            };
            id: string;
            metadata: {
                prev_publish_time: number;
                proof_available_time: number;
                slot: number;
            };
            price: { conf: string; expo: number; price: string; publish_time: number };
        }[],
    ]
    diff --git a/docs/interfaces/TokenCheck.html b/docs/interfaces/TokenCheck.html index 5ce7351..2cc6151 100644 --- a/docs/interfaces/TokenCheck.html +++ b/docs/interfaces/TokenCheck.html @@ -1,5 +1,5 @@ -TokenCheck | solana-agent-kit

    Interface TokenCheck

    interface TokenCheck {
        risks: {
            description: string;
            level: string;
            name: string;
            score: number;
        }[];
        score: number;
        tokenProgram: string;
        tokenType: string;
    }

    Properties

    risks +TokenCheck | solana-agent-kit

    Interface TokenCheck

    interface TokenCheck {
        risks: {
            description: string;
            level: string;
            name: string;
            score: number;
        }[];
        score: number;
        tokenProgram: string;
        tokenType: string;
    }

    Properties

    risks: { description: string; level: string; name: string; score: number }[]
    score: number
    tokenProgram: string
    tokenType: string
    +

    Properties

    risks: { description: string; level: string; name: string; score: number }[]
    score: number
    tokenProgram: string
    tokenType: string
    diff --git a/docs/types/Handler.html b/docs/types/Handler.html index caa75d1..79d7158 100644 --- a/docs/types/Handler.html +++ b/docs/types/Handler.html @@ -1,2 +1,2 @@ Handler | solana-agent-kit

    Type Alias Handler

    Handler: (
        agent: SolanaAgentKit,
        input: Record<string, any>,
    ) => Promise<Record<string, any>>

    Handler function type for executing the action

    -

    Type declaration

      • (
            agent: SolanaAgentKit,
            input: Record<string, any>,
        ): Promise<Record<string, any>>
      • Parameters

        Returns Promise<Record<string, any>>

    +

    Type declaration

      • (
            agent: SolanaAgentKit,
            input: Record<string, any>,
        ): Promise<Record<string, any>>
      • Parameters

        Returns Promise<Record<string, any>>

    diff --git a/docs/variables/actions.html b/docs/variables/actions.html index 7b3f78d..7721160 100644 --- a/docs/variables/actions.html +++ b/docs/variables/actions.html @@ -1 +1 @@ -ACTIONS | solana-agent-kit

    Variable ACTIONSConst

    ACTIONS: {
        BALANCE_ACTION: Action;
        CREATE_GIBWORK_TASK_ACTION: Action;
        CREATE_IMAGE_ACTION: Action;
        CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
        DEPLOY_COLLECTION_ACTION: Action;
        DEPLOY_TOKEN_ACTION: Action;
        FETCH_PRICE_ACTION: Action;
        GET_ALL_DOMAINS_TLDS_ACTION: Action;
        GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
        GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
        GET_OWNED_ALL_DOMAINS_ACTION: Action;
        GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
        GET_PRIMARY_DOMAIN_ACTION: Action;
        GET_TOKEN_DATA_ACTION: Action;
        GET_TPS_ACTION: Action;
        LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
        LEND_ASSET_ACTION: Action;
        MINT_NFT_ACTION: Action;
        PYTH_FETCH_PRICE_ACTION: Action;
        RAYDIUM_CREATE_AMM_V4_ACTION: Action;
        RAYDIUM_CREATE_CPMM_ACTION: Action;
        REGISTER_DOMAIN_ACTION: Action;
        REQUEST_FUNDS_ACTION: Action;
        RESOLVE_DOMAIN_ACTION: Action;
        RESOLVE_SOL_DOMAIN_ACTION: Action;
        STAKE_WITH_JUP_ACTION: Action;
        STAKE_WITH_SOLAYER_ACTION: Action;
        TRADE_ACTION: Action;
        TRANSFER_ACTION: Action;
        WALLET_ADDRESS_ACTION: Action;
    } = ...

    Type declaration

    • BALANCE_ACTION: Action
    • CREATE_GIBWORK_TASK_ACTION: Action
    • CREATE_IMAGE_ACTION: Action
    • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
    • DEPLOY_COLLECTION_ACTION: Action
    • DEPLOY_TOKEN_ACTION: Action
    • FETCH_PRICE_ACTION: Action
    • GET_ALL_DOMAINS_TLDS_ACTION: Action
    • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
    • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
    • GET_OWNED_ALL_DOMAINS_ACTION: Action
    • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
    • GET_PRIMARY_DOMAIN_ACTION: Action
    • GET_TOKEN_DATA_ACTION: Action
    • GET_TPS_ACTION: Action
    • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
    • LEND_ASSET_ACTION: Action
    • MINT_NFT_ACTION: Action
    • PYTH_FETCH_PRICE_ACTION: Action
    • RAYDIUM_CREATE_AMM_V4_ACTION: Action
    • RAYDIUM_CREATE_CPMM_ACTION: Action
    • REGISTER_DOMAIN_ACTION: Action
    • REQUEST_FUNDS_ACTION: Action
    • RESOLVE_DOMAIN_ACTION: Action
    • RESOLVE_SOL_DOMAIN_ACTION: Action
    • STAKE_WITH_JUP_ACTION: Action
    • STAKE_WITH_SOLAYER_ACTION: Action
    • TRADE_ACTION: Action
    • TRANSFER_ACTION: Action
    • WALLET_ADDRESS_ACTION: Action
    +ACTIONS | solana-agent-kit

    Variable ACTIONSConst

    ACTIONS: {
        BALANCE_ACTION: Action;
        CREATE_GIBWORK_TASK_ACTION: Action;
        CREATE_IMAGE_ACTION: Action;
        CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
        DEPLOY_COLLECTION_ACTION: Action;
        DEPLOY_TOKEN_ACTION: Action;
        FETCH_PRICE_ACTION: Action;
        GET_ALL_DOMAINS_TLDS_ACTION: Action;
        GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
        GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
        GET_OWNED_ALL_DOMAINS_ACTION: Action;
        GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
        GET_PRIMARY_DOMAIN_ACTION: Action;
        GET_TOKEN_DATA_ACTION: Action;
        GET_TPS_ACTION: Action;
        LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
        LEND_ASSET_ACTION: Action;
        MINT_NFT_ACTION: Action;
        PYTH_FETCH_PRICE_ACTION: Action;
        RAYDIUM_CREATE_AMM_V4_ACTION: Action;
        RAYDIUM_CREATE_CPMM_ACTION: Action;
        REGISTER_DOMAIN_ACTION: Action;
        REQUEST_FUNDS_ACTION: Action;
        RESOLVE_DOMAIN_ACTION: Action;
        RESOLVE_SOL_DOMAIN_ACTION: Action;
        STAKE_WITH_JUP_ACTION: Action;
        STAKE_WITH_SOLAYER_ACTION: Action;
        TRADE_ACTION: Action;
        TRANSFER_ACTION: Action;
        WALLET_ADDRESS_ACTION: Action;
    } = ...

    Type declaration

    • BALANCE_ACTION: Action
    • CREATE_GIBWORK_TASK_ACTION: Action
    • CREATE_IMAGE_ACTION: Action
    • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
    • DEPLOY_COLLECTION_ACTION: Action
    • DEPLOY_TOKEN_ACTION: Action
    • FETCH_PRICE_ACTION: Action
    • GET_ALL_DOMAINS_TLDS_ACTION: Action
    • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
    • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
    • GET_OWNED_ALL_DOMAINS_ACTION: Action
    • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
    • GET_PRIMARY_DOMAIN_ACTION: Action
    • GET_TOKEN_DATA_ACTION: Action
    • GET_TPS_ACTION: Action
    • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
    • LEND_ASSET_ACTION: Action
    • MINT_NFT_ACTION: Action
    • PYTH_FETCH_PRICE_ACTION: Action
    • RAYDIUM_CREATE_AMM_V4_ACTION: Action
    • RAYDIUM_CREATE_CPMM_ACTION: Action
    • REGISTER_DOMAIN_ACTION: Action
    • REQUEST_FUNDS_ACTION: Action
    • RESOLVE_DOMAIN_ACTION: Action
    • RESOLVE_SOL_DOMAIN_ACTION: Action
    • STAKE_WITH_JUP_ACTION: Action
    • STAKE_WITH_SOLAYER_ACTION: Action
    • TRADE_ACTION: Action
    • TRANSFER_ACTION: Action
    • WALLET_ADDRESS_ACTION: Action
    diff --git a/src/tools/pyth_fetch_price.ts b/src/tools/pyth_fetch_price.ts index 96ed636..0946af4 100644 --- a/src/tools/pyth_fetch_price.ts +++ b/src/tools/pyth_fetch_price.ts @@ -11,7 +11,7 @@ export async function fetchPythPriceFeedID( ): Promise { try { const stableHermesServiceUrl: string = "https://hermes.pyth.network"; - + const response = await fetch( `${stableHermesServiceUrl}/v2/price_feeds?query=${tokenSymbol}&asset_type=crypto`, ); @@ -77,10 +77,12 @@ export async function fetchPythPrice(feedID: string): Promise { const adjustedPrice = price.mul(new BN(100)); const divisor = new BN(10).pow(new BN(-exponent)); const scaledPrice = adjustedPrice.div(divisor); - + const priceStr = scaledPrice.toString(); const formattedPrice = `${priceStr.slice(0, -2)}.${priceStr.slice(-2)}`; - return formattedPrice.startsWith('.') ? `0${formattedPrice}` : formattedPrice; + return formattedPrice.startsWith(".") + ? `0${formattedPrice}` + : formattedPrice; } const scaledPrice = price.div(new BN(10).pow(new BN(exponent))); From 3752d3f656d23f5106424711c4516dba134eff53 Mon Sep 17 00:00:00 2001 From: DonDuala Date: Sat, 4 Jan 2025 16:39:52 -0400 Subject: [PATCH 78/94] Fix manifest integration --- package.json | 4 +- pnpm-lock.yaml | 533 ++++++++++++++++++++++++++++++++++++++- src/agent/index.ts | 34 +-- src/langchain/index.ts | 243 +++++++++--------- src/tools/batch_order.ts | 2 +- src/tools/index.ts | 4 +- src/tools/limit_order.ts | 2 +- 7 files changed, 673 insertions(+), 149 deletions(-) diff --git a/package.json b/package.json index 95bb3ce..7b2a016 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "solana-agent-kit", - "version": "1.3.6", + "version": "1.3.7", "description": "connect any ai agents to solana protocols", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -24,7 +24,7 @@ "dependencies": { "@ai-sdk/openai": "^1.0.11", "@bonfida/spl-name-service": "^3.0.7", - "@cks-systems/manifest-sdk": "^0.1.73", + "@cks-systems/manifest-sdk": "0.1.59", "@coral-xyz/anchor": "0.29", "@langchain/core": "^0.3.26", "@langchain/groq": "^0.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 05add17..f01ffd7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ 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) '@cks-systems/manifest-sdk': - specifier: ^0.1.73 - version: 0.1.73(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + 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) '@coral-xyz/anchor': specifier: '0.29' version: 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -210,8 +210,8 @@ packages: '@cfworker/json-schema@4.0.3': resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} - '@cks-systems/manifest-sdk@0.1.73': - resolution: {integrity: sha512-IcRM7k3YZ/jK5nJwE3xGp2Xg7Um4/XCeqrLs5yB3+IjS7W089Qs/prJXdRGKbFwCLkMt9ds6pElHufQr8an0Iw==} + '@cks-systems/manifest-sdk@0.1.59': + resolution: {integrity: sha512-ZYTwwDxrC2u74kF30iWZPZPYXB9MtOydLd4/SQdlMXrb6bj1OooMtZxukSCu/Tlkp+KR26bEr6gYuErFHdUFjg==} '@coral-xyz/anchor@0.26.0': resolution: {integrity: sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==} @@ -849,6 +849,9 @@ packages: '@types/bn.js@5.1.6': resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + '@types/chai@5.0.1': resolution: {integrity: sha512-5T8ajsg3M/FOncpLYW7sdOcD6yf4+722sze/tc4KQV0P8Z2rAr3SAuHCIkYmYpt8VbcQlnz8SxlOlPQYefe4cA==} @@ -864,15 +867,27 @@ packages: '@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==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + '@types/node-fetch@2.6.12': resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} @@ -888,12 +903,24 @@ packages: '@types/promise-retry@1.1.6': resolution: {integrity: sha512-EC1+OMXV0PZb0pf+cmyxc43MEP2CDumZe4AfuxWboxxEixztIebknpJPZAX5XlodGF1OY+C1E/RAeNGzxf+bJA==} + '@types/qs@6.9.17': + resolution: {integrity: sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} '@types/retry@0.12.5': resolution: {integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==} + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-static@1.15.7': + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -967,6 +994,10 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1029,6 +1060,9 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} @@ -1093,6 +1127,10 @@ packages: bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + borsh@0.7.0: resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} @@ -1138,6 +1176,10 @@ packages: resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} engines: {node: '>=6.14.2'} + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + call-bind-apply-helpers@1.0.1: resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} @@ -1211,6 +1253,21 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -1231,6 +1288,14 @@ packages: dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -1273,10 +1338,18 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -1309,6 +1382,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -1318,6 +1394,14 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -1343,6 +1427,9 @@ packages: es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -1423,6 +1510,10 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + ethereum-bloom-filters@1.2.0: resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==} @@ -1450,6 +1541,16 @@ packages: exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + express-prom-bundle@7.0.2: + resolution: {integrity: sha512-ffFV4HGHvCKnkNJFqm42sYztRJE5mLgOj8MpGey1HOatuFhtcwXoBD2m5gca7ZbcyjkIf7lOH5ZdrhlrBf0sGw==} + engines: {node: '>=18'} + peerDependencies: + prom-client: '>=15.0.0' + + express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} + eyes@0.1.8: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} @@ -1494,6 +1595,10 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + find-process@1.4.8: resolution: {integrity: sha512-W2PIdgXfhYeIlTzGiDyGJhjslZcwQCRcSw6plgyLu3CFk1PhQrKkTbQ5jkJ2NhOabMwETTrhl7c+xBcQ7B2jRg==} hasBin: true @@ -1540,6 +1645,14 @@ packages: resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} engines: {node: '>= 12.20'} + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -1630,9 +1743,17 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + 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'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -1655,6 +1776,10 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + ipaddr.js@2.2.0: resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} @@ -1925,6 +2050,13 @@ packages: mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -1933,6 +2065,10 @@ packages: resolution: {integrity: sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==} engines: {node: '>= 7.6.0'} + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + micro-ftch@0.3.1: resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} @@ -1963,6 +2099,11 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} @@ -1984,6 +2125,9 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1999,6 +2143,10 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -2026,6 +2174,10 @@ packages: resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} engines: {node: '>=6.5.0', npm: '>=3'} + object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + engines: {node: '>= 0.4'} + object-is@1.1.6: resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} engines: {node: '>= 0.4'} @@ -2038,6 +2190,10 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -2097,6 +2253,10 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -2117,6 +2277,9 @@ packages: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -2164,6 +2327,10 @@ packages: property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -2175,12 +2342,24 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + react@19.0.0: resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} engines: {node: '>=0.10.0'} @@ -2244,6 +2423,9 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} @@ -2256,10 +2438,21 @@ packages: engines: {node: '>=10'} hasBin: true + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -2271,6 +2464,22 @@ packages: shiki@1.26.1: resolution: {integrity: sha512-Gqg6DSTk3wYqaZ5OaYtzjcdxcBvX5kCy24yvRJEgjT5U+WHlmqCThLuBUx0juyxQBi+6ug53IGeuQS07DWwpcw==} + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -2292,6 +2501,10 @@ packages: spok@1.5.5: resolution: {integrity: sha512-IrJIXY54sCNFASyHPOY+jEirkiJ26JDqsGiI0Dvhwcnkl0PEWi1PSsrkYql0rzDw8LFVTcA7rdUCAJdE2HE+2Q==} + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2375,6 +2588,10 @@ packages: toformat@2.0.0: resolution: {integrity: sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==} + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + toml@3.0.0: resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} @@ -2432,6 +2649,10 @@ packages: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} @@ -2493,9 +2714,17 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + url-value-parser@2.2.0: + resolution: {integrity: sha512-yIQdxJpgkPamPPAPuGdS7Q548rLhny42tg8d4vyTNzFqvOnwqrgHXvgehT09U7fwrzxi3RxCiXjoNUNnNOlQ8A==} + engines: {node: '>=6.0.0'} + use-sync-external-store@1.4.0: resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} peerDependencies: @@ -2514,6 +2743,10 @@ packages: util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + uuid@10.0.0: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true @@ -2529,6 +2762,10 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} @@ -2702,7 +2939,7 @@ snapshots: '@cfworker/json-schema@4.0.3': {} - '@cks-systems/manifest-sdk@0.1.73(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)(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 @@ -2712,6 +2949,8 @@ snapshots: bn.js: 5.2.1 borsh: 0.7.0 bs58: 6.0.0 + express: 4.21.2 + express-prom-bundle: 7.0.2(prom-client@15.1.3) js-sha256: 0.11.0 keccak256: 1.0.6 percentile: 1.6.0 @@ -3942,6 +4181,11 @@ snapshots: dependencies: '@types/node': 22.10.5 + '@types/body-parser@1.19.5': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 22.10.5 + '@types/chai@5.0.1': dependencies: '@types/deep-eql': 4.0.2 @@ -3956,16 +4200,34 @@ snapshots: '@types/estree@1.0.6': {} + '@types/express-serve-static-core@4.19.6': + dependencies: + '@types/node': 22.10.5 + '@types/qs': 6.9.17 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express@4.17.21': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.6 + '@types/qs': 6.9.17 + '@types/serve-static': 1.15.7 + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 + '@types/http-errors@2.0.4': {} + '@types/json-schema@7.0.15': {} '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 + '@types/mime@1.3.5': {} + '@types/node-fetch@2.6.12': dependencies: '@types/node': 22.10.5 @@ -3985,10 +4247,25 @@ snapshots: dependencies: '@types/retry': 0.12.5 + '@types/qs@6.9.17': {} + + '@types/range-parser@1.2.7': {} + '@types/retry@0.12.0': {} '@types/retry@0.12.5': {} + '@types/send@0.17.4': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 22.10.5 + + '@types/serve-static@1.15.7': + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 22.10.5 + '@types/send': 0.17.4 + '@types/unist@3.0.3': {} '@types/uuid@10.0.0': {} @@ -4091,6 +4368,11 @@ snapshots: dependencies: event-target-shim: 5.0.1 + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + acorn-jsx@5.3.2(acorn@8.14.0): dependencies: acorn: 8.14.0 @@ -4143,6 +4425,8 @@ snapshots: argparse@2.0.1: {} + array-flatten@1.1.1: {} + assert@2.1.0: dependencies: call-bind: 1.0.8 @@ -4212,6 +4496,23 @@ snapshots: bn.js@5.2.1: {} + body-parser@1.20.3: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + borsh@0.7.0: dependencies: bn.js: 5.2.1 @@ -4266,6 +4567,8 @@ snapshots: node-gyp-build: 4.8.4 optional: true + bytes@3.1.2: {} + call-bind-apply-helpers@1.0.1: dependencies: es-errors: 1.3.0 @@ -4330,6 +4633,16 @@ snapshots: concat-map@0.0.1: {} + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + cookie-signature@1.0.6: {} + + cookie@0.7.1: {} + create-require@1.1.1: {} cross-fetch@3.2.0: @@ -4350,6 +4663,10 @@ snapshots: dayjs@1.11.13: {} + debug@2.6.9: + dependencies: + ms: 2.0.0 + debug@4.4.0: dependencies: ms: 2.1.3 @@ -4380,8 +4697,12 @@ snapshots: delayed-stream@1.0.0: {} + depd@2.0.0: {} + dequal@2.0.3: {} + destroy@1.2.0: {} + devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -4411,12 +4732,18 @@ snapshots: eastasianwidth@0.2.0: {} + ee-first@1.1.1: {} + emoji-regex-xs@1.0.0: {} emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + entities@4.5.0: {} err-code@2.0.3: {} @@ -4435,6 +4762,8 @@ snapshots: dependencies: es6-promise: 4.2.8 + escape-html@1.0.3: {} + escape-string-regexp@4.0.0: {} eslint-config-prettier@9.1.0(eslint@8.57.1): @@ -4570,6 +4899,8 @@ snapshots: esutils@2.0.3: {} + etag@1.8.1: {} + ethereum-bloom-filters@1.2.0: dependencies: '@noble/hashes': 1.7.0 @@ -4596,6 +4927,52 @@ snapshots: exponential-backoff@3.1.1: {} + express-prom-bundle@7.0.2(prom-client@15.1.3): + dependencies: + '@types/express': 4.17.21 + express: 4.21.2 + on-finished: 2.4.1 + prom-client: 15.1.3 + url-value-parser: 2.2.0 + transitivePeerDependencies: + - supports-color + + express@4.21.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + eyes@0.1.8: {} fast-deep-equal@3.1.3: {} @@ -4636,6 +5013,18 @@ snapshots: dependencies: to-regex-range: 5.0.1 + finalhandler@1.3.1: + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + find-process@1.4.8: dependencies: chalk: 5.4.1 @@ -4691,6 +5080,10 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 4.0.0-beta.3 + forwarded@0.2.0: {} + + fresh@0.5.2: {} + fs.realpath@1.0.0: {} function-bind@1.1.2: {} @@ -4820,10 +5213,22 @@ snapshots: html-void-elements@3.0.0: {} + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + humanize-ms@1.2.1: dependencies: ms: 2.1.3 + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + ieee754@1.2.1: {} ignore@5.3.2: {} @@ -4842,6 +5247,8 @@ snapshots: inherits@2.0.4: {} + ipaddr.js@1.9.1: {} + ipaddr.js@2.2.0: {} is-arguments@1.2.0: @@ -5095,6 +5502,10 @@ snapshots: mdurl@2.0.0: {} + media-typer@0.3.0: {} + + merge-descriptors@1.0.3: {} + merge2@1.4.1: {} merkletreejs@0.3.11: @@ -5105,6 +5516,8 @@ snapshots: treeify: 1.1.0 web3-utils: 1.10.4 + methods@1.1.2: {} + micro-ftch@0.3.1: {} micromark-util-character@2.1.1: @@ -5135,6 +5548,8 @@ snapshots: dependencies: mime-db: 1.52.0 + mime@1.6.0: {} + minimalistic-assert@1.0.1: {} minimatch@10.0.1: @@ -5153,6 +5568,8 @@ snapshots: minipass@7.1.2: {} + ms@2.0.0: {} + ms@2.1.3: {} mustache@4.2.0: {} @@ -5161,6 +5578,8 @@ snapshots: natural-compare@1.4.0: {} + negotiator@0.6.3: {} + no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -5181,6 +5600,8 @@ snapshots: bn.js: 4.11.6 strip-hex-prefix: 1.0.0 + object-inspect@1.13.3: {} + object-is@1.1.6: dependencies: call-bind: 1.0.8 @@ -5197,6 +5618,10 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -5266,6 +5691,8 @@ snapshots: dependencies: callsites: 3.1.0 + parseurl@1.3.3: {} + path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -5282,6 +5709,8 @@ snapshots: lru-cache: 11.0.2 minipass: 7.1.2 + path-to-regexp@0.1.12: {} + pathval@2.0.0: {} percentile@1.6.0: {} @@ -5316,18 +5745,36 @@ snapshots: property-information@6.5.0: {} + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + proxy-from-env@1.1.0: {} punycode.js@2.3.1: {} punycode@2.3.1: {} + qs@6.13.0: + dependencies: + side-channel: 1.1.0 + queue-microtask@1.2.3: {} randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + react@19.0.0: {} readable-stream@3.6.2: @@ -5395,12 +5842,41 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safer-buffer@2.1.2: {} + secure-json-parse@2.7.0: {} semaphore@1.1.0: {} semver@7.6.3: {} + send@0.19.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -5410,6 +5886,8 @@ snapshots: gopd: 1.2.0 has-property-descriptors: 1.0.2 + setprototypeof@1.2.0: {} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -5427,6 +5905,34 @@ snapshots: '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + object-inspect: 1.13.3 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + object-inspect: 1.13.3 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + signal-exit@4.1.0: {} snake-case@3.0.4: @@ -5457,6 +5963,8 @@ snapshots: - jiti - supports-color + statuses@2.0.1: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -5535,6 +6043,8 @@ snapshots: toformat@2.0.0: {} + toidentifier@1.0.1: {} + toml@3.0.0: {} tr46@0.0.3: {} @@ -5585,6 +6095,11 @@ snapshots: type-fest@0.20.2: {} + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + typedarray-to-buffer@3.1.5: dependencies: is-typedarray: 1.0.0 @@ -5649,10 +6164,14 @@ snapshots: universalify@2.0.1: {} + unpipe@1.0.0: {} + uri-js@4.4.1: dependencies: punycode: 2.3.1 + url-value-parser@2.2.0: {} + use-sync-external-store@1.4.0(react@19.0.0): dependencies: react: 19.0.0 @@ -5674,6 +6193,8 @@ snapshots: is-typed-array: 1.1.15 which-typed-array: 1.1.18 + utils-merge@1.0.1: {} + uuid@10.0.0: {} uuid@8.3.2: {} @@ -5682,6 +6203,8 @@ snapshots: v8-compile-cache-lib@3.0.1: {} + vary@1.1.2: {} + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.3 diff --git a/src/agent/index.ts b/src/agent/index.ts index e82a464..a28c899 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -23,8 +23,8 @@ import { registerDomain, request_faucet_funds, trade, - // limitOrder, - // batchOrder, + limitOrder, + batchOrder, cancelAllOrders, withdrawAll, closePerpTradeShort, @@ -69,7 +69,7 @@ import { MintCollectionNFTResponse, PumpfunLaunchResponse, PumpFunTokenOptions, - // OrderParams, + OrderParams, } from "../types"; /** @@ -190,21 +190,21 @@ export class SolanaAgentKit { return trade(this, outputMint, inputAmount, inputMint, slippageBps); } - // async limitOrder( - // marketId: PublicKey, - // quantity: number, - // side: string, - // price: number, - // ): Promise { - // return limitOrder(this, marketId, quantity, side, price); - // } + async limitOrder( + marketId: PublicKey, + quantity: number, + side: string, + price: number, + ): Promise { + return limitOrder(this, marketId, quantity, side, price); + } - // async batchOrder( - // marketId: PublicKey, - // orders: OrderParams[], - // ): Promise { - // return batchOrder(this, marketId, orders); - // } + async batchOrder( + marketId: PublicKey, + orders: OrderParams[], + ): Promise { + return batchOrder(this, marketId, orders); + } async cancelAllOrders(marketId: PublicKey): Promise { return cancelAllOrders(this, marketId); diff --git a/src/langchain/index.ts b/src/langchain/index.ts index ac6319f..97810e8 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -4,10 +4,11 @@ import Decimal from "decimal.js"; import { Tool } from "langchain/tools"; import { GibworkCreateTaskReponse, + OrderParams, PythFetchPriceResponse, SolanaAgentKit, } from "../index"; -import { create_image, FEE_TIERS } from "../tools"; +import { create_image, FEE_TIERS, generateOrdersfromPattern } from "../tools"; export class SolanaBalanceTool extends Tool { name = "solana_balance"; @@ -413,143 +414,143 @@ export class SolanaTradeTool extends Tool { } } -// export class SolanaLimitOrderTool extends Tool { -// name = "solana_limit_order"; -// description = `This tool can be used to place limit orders using Manifest. +export class SolanaLimitOrderTool extends Tool { + name = "solana_limit_order"; + description = `This tool can be used to place limit orders using Manifest. -// Do not allow users to place multiple orders with this instruction, use solana_batch_order instead. + Do not allow users to place multiple orders with this instruction, use solana_batch_order instead. -// Inputs ( input is a JSON string ): -// marketId: PublicKey, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required) -// quantity: number, eg 1 or 0.01 (required) -// side: string, eg "Buy" or "Sell" (required) -// price: number, in tokens eg 200 for SOL/USDC (required)`; + Inputs ( input is a JSON string ): + marketId: PublicKey, eg "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ" for SOL/USDC (required) + quantity: number, eg 1 or 0.01 (required) + side: string, eg "Buy" or "Sell" (required) + price: number, in tokens eg 200 for SOL/USDC (required)`; -// constructor(private solanaKit: SolanaAgentKit) { -// super(); -// } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } -// protected async _call(input: string): Promise { -// try { -// const parsedInput = JSON.parse(input); + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); -// const tx = await this.solanaKit.limitOrder( -// new PublicKey(parsedInput.marketId), -// parsedInput.quantity, -// parsedInput.side, -// parsedInput.price, -// ); + const tx = await this.solanaKit.limitOrder( + new PublicKey(parsedInput.marketId), + parsedInput.quantity, + parsedInput.side, + parsedInput.price, + ); -// return JSON.stringify({ -// status: "success", -// message: "Trade executed successfully", -// transaction: tx, -// marketId: parsedInput.marketId, -// quantity: parsedInput.quantity, -// side: parsedInput.side, -// price: parsedInput.price, -// }); -// } catch (error: any) { -// return JSON.stringify({ -// status: "error", -// message: error.message, -// code: error.code || "UNKNOWN_ERROR", -// }); -// } -// } -// } + return JSON.stringify({ + status: "success", + message: "Trade executed successfully", + transaction: tx, + marketId: parsedInput.marketId, + quantity: parsedInput.quantity, + side: parsedInput.side, + price: parsedInput.price, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} -// export class SolanaBatchOrderTool extends Tool { -// name = "solana_batch_order"; -// description = `Places multiple limit orders in one transaction using Manifest. Submit orders either as a list or pattern: +export class SolanaBatchOrderTool extends Tool { + name = "solana_batch_order"; + description = `Places multiple limit orders in one transaction using Manifest. Submit orders either as a list or pattern: -// 1. List format: -// { -// "marketId": "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ", -// "orders": [ -// { "quantity": 1, "side": "Buy", "price": 200 }, -// { "quantity": 0.5, "side": "Sell", "price": 205 } -// ] -// } + 1. List format: + { + "marketId": "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ", + "orders": [ + { "quantity": 1, "side": "Buy", "price": 200 }, + { "quantity": 0.5, "side": "Sell", "price": 205 } + ] + } -// 2. Pattern format: -// { -// "marketId": "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ", -// "pattern": { -// "side": "Buy", -// "totalQuantity": 100, -// "priceRange": { "max": 1.0 }, -// "spacing": { "type": "percentage", "value": 1 }, -// "numberOfOrders": 5 -// } -// } + 2. Pattern format: + { + "marketId": "ENhU8LsaR7vDD2G1CsWcsuSGNrih9Cv5WZEk7q9kPapQ", + "pattern": { + "side": "Buy", + "totalQuantity": 100, + "priceRange": { "max": 1.0 }, + "spacing": { "type": "percentage", "value": 1 }, + "numberOfOrders": 5 + } + } -// Examples: -// - "Place 5 buy orders totaling 100 tokens, 1% apart below $1" -// - "Create 3 sell orders of 10 tokens each between $50-$55" -// - "Place buy orders worth 50 tokens, $0.10 spacing from $0.80" + Examples: + - "Place 5 buy orders totaling 100 tokens, 1% apart below $1" + - "Create 3 sell orders of 10 tokens each between $50-$55" + - "Place buy orders worth 50 tokens, $0.10 spacing from $0.80" -// Important: All orders must be in one transaction. Combine buy and sell orders into a single pattern or list. Never break the orders down to individual buy or sell orders.`; + Important: All orders must be in one transaction. Combine buy and sell orders into a single pattern or list. Never break the orders down to individual buy or sell orders.`; -// constructor(private solanaKit: SolanaAgentKit) { -// super(); -// } + constructor(private solanaKit: SolanaAgentKit) { + super(); + } -// protected async _call(input: string): Promise { -// try { -// const parsedInput = JSON.parse(input); -// let ordersToPlace: OrderParams[] = []; + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + let ordersToPlace: OrderParams[] = []; -// if (!parsedInput.marketId) { -// throw new Error("Market ID is required"); -// } + if (!parsedInput.marketId) { + throw new Error("Market ID is required"); + } -// if (parsedInput.pattern) { -// ordersToPlace = generateOrdersfromPattern(parsedInput.pattern); -// } else if (Array.isArray(parsedInput.orders)) { -// ordersToPlace = parsedInput.orders; -// } else { -// throw new Error("Either pattern or orders array is required"); -// } + if (parsedInput.pattern) { + ordersToPlace = generateOrdersfromPattern(parsedInput.pattern); + } else if (Array.isArray(parsedInput.orders)) { + ordersToPlace = parsedInput.orders; + } else { + throw new Error("Either pattern or orders array is required"); + } -// if (ordersToPlace.length === 0) { -// throw new Error("No orders generated or provided"); -// } + if (ordersToPlace.length === 0) { + throw new Error("No orders generated or provided"); + } -// ordersToPlace.forEach((order: OrderParams, index: number) => { -// if (!order.quantity || !order.side || !order.price) { -// throw new Error( -// `Invalid order at index ${index}: quantity, side, and price are required`, -// ); -// } -// if (order.side !== "Buy" && order.side !== "Sell") { -// throw new Error( -// `Invalid side at index ${index}: must be "Buy" or "Sell"`, -// ); -// } -// }); + ordersToPlace.forEach((order: OrderParams, index: number) => { + if (!order.quantity || !order.side || !order.price) { + throw new Error( + `Invalid order at index ${index}: quantity, side, and price are required`, + ); + } + if (order.side !== "Buy" && order.side !== "Sell") { + throw new Error( + `Invalid side at index ${index}: must be "Buy" or "Sell"`, + ); + } + }); -// const tx = await this.solanaKit.batchOrder( -// new PublicKey(parsedInput.marketId), -// parsedInput.orders, -// ); + const tx = await this.solanaKit.batchOrder( + new PublicKey(parsedInput.marketId), + parsedInput.orders, + ); -// return JSON.stringify({ -// status: "success", -// message: "Batch order executed successfully", -// transaction: tx, -// marketId: parsedInput.marketId, -// orders: parsedInput.orders, -// }); -// } catch (error: any) { -// return JSON.stringify({ -// status: "error", -// message: error.message, -// code: error.code || "UNKNOWN_ERROR", -// }); -// } -// } -// } + return JSON.stringify({ + status: "success", + message: "Batch order executed successfully", + transaction: tx, + marketId: parsedInput.marketId, + orders: parsedInput.orders, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} export class SolanaCancelAllOrdersTool extends Tool { name = "solana_cancel_all_orders"; @@ -2152,8 +2153,8 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaRaydiumCreateCpmm(solanaKit), new SolanaOpenbookCreateMarket(solanaKit), new SolanaManifestCreateMarket(solanaKit), - // new SolanaLimitOrderTool(solanaKit), - // new SolanaBatchOrderTool(solanaKit), + new SolanaLimitOrderTool(solanaKit), + new SolanaBatchOrderTool(solanaKit), new SolanaCancelAllOrdersTool(solanaKit), new SolanaWithdrawAllTool(solanaKit), new SolanaClosePosition(solanaKit), diff --git a/src/tools/batch_order.ts b/src/tools/batch_order.ts index c27fa98..83080fe 100644 --- a/src/tools/batch_order.ts +++ b/src/tools/batch_order.ts @@ -7,8 +7,8 @@ import { import { ManifestClient, WrapperPlaceOrderParamsExternal, + OrderType, } from "@cks-systems/manifest-sdk"; -import { OrderType } from "@cks-systems/manifest-sdk/client/ts/src/wrapper/types/OrderType"; import { SolanaAgentKit } from "../index"; import { BatchOrderPattern, OrderParams } from "../types"; diff --git a/src/tools/index.ts b/src/tools/index.ts index 1f6e9f5..2544fed 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -1,5 +1,5 @@ export * from "./adrena_perp_trading"; -// export * from "./batch_order"; +export * from "./batch_order"; export * from "./cancel_all_orders"; export * from "./create_gibwork_task"; export * from "./create_image"; @@ -20,7 +20,7 @@ export * from "./get_tps"; export * from "./get_wallet_address"; export * from "./launch_pumpfun_token"; export * from "./lend"; -// export * from "./limit_order"; +export * from "./limit_order"; export * from "./manifest_create_market"; export * from "./mint_nft"; export * from "./openbook_create_market"; diff --git a/src/tools/limit_order.ts b/src/tools/limit_order.ts index ad05bf6..bdbb63d 100644 --- a/src/tools/limit_order.ts +++ b/src/tools/limit_order.ts @@ -8,8 +8,8 @@ import { SolanaAgentKit } from "../index"; import { ManifestClient, WrapperPlaceOrderParamsExternal, + OrderType, } from "@cks-systems/manifest-sdk"; -import { OrderType } from "@cks-systems/manifest-sdk/client/ts/src/wrapper/types/OrderType"; /** * Place limit orders using Manifest From 52adc3f9badc5a74aca9ea0af9d5ef955e72f4a7 Mon Sep 17 00:00:00 2001 From: Vini murafa <06.poems_races@icloud.com> Date: Sat, 4 Jan 2025 22:15:28 +0100 Subject: [PATCH 79/94] Typo fix Update orca_open_centered_position_with_liquidity.ts --- src/tools/orca_open_centered_position_with_liquidity.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/orca_open_centered_position_with_liquidity.ts b/src/tools/orca_open_centered_position_with_liquidity.ts index dfe8ee3..63a8972 100644 --- a/src/tools/orca_open_centered_position_with_liquidity.ts +++ b/src/tools/orca_open_centered_position_with_liquidity.ts @@ -26,7 +26,7 @@ import { TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; * # Opens a Centered Liquidity Position in an Orca Whirlpool * * This function opens a centered liquidity position in a specified Orca Whirlpool. The user defines - * a basis point (bps) offset from the cuurent price of the pool to set the lower and upper bounds of the position. + * a basis point (bps) offset from the current price of the pool to set the lower and upper bounds of the position. * The user also specifies the token mint and the amount to deposit. The required amount of the other token * is calculated automatically. * From 94ffce288e1a632bc829d143e72d4d854ea2c7a3 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 5 Jan 2025 11:00:08 +0530 Subject: [PATCH 80/94] feat: add basic ci workflow --- .github/workflows/build.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..fb3c724 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,29 @@ +name: Typescript Client CI + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [22.x] + + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'pnpm' + cache-dependency-path: pnpm-lock.json + - run: pnpm install + - run: pnpm run lint + - run: pnpm run build + - run: pnpm run test \ No newline at end of file From c5588a0b00923cd3153dd0fc13005fcac9080f12 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 5 Jan 2025 11:09:07 +0530 Subject: [PATCH 81/94] fix --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fb3c724..8917bd9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,4 +26,4 @@ jobs: - run: pnpm install - run: pnpm run lint - run: pnpm run build - - run: pnpm run test \ No newline at end of file + # - run: pnpm run test # TODO: add mock env for testing \ No newline at end of file From b773f43c3c2532c481f466f55c7f7f1ff87487c0 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 5 Jan 2025 11:14:26 +0530 Subject: [PATCH 82/94] feat: add husky and lint-staged --- .huskyrc | 5 + .lintstagedrc | 6 ++ package.json | 10 +- pnpm-lock.yaml | 284 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 301 insertions(+), 4 deletions(-) create mode 100644 .huskyrc create mode 100644 .lintstagedrc diff --git a/.huskyrc b/.huskyrc new file mode 100644 index 0000000..40b707d --- /dev/null +++ b/.huskyrc @@ -0,0 +1,5 @@ +{ + "hooks": { + "pre-commit": "tsc && lint-staged" + } +} \ No newline at end of file diff --git a/.lintstagedrc b/.lintstagedrc new file mode 100644 index 0000000..16472f9 --- /dev/null +++ b/.lintstagedrc @@ -0,0 +1,6 @@ +{ + "**/*.+(js|jsx|css|less|scss|ts|tsx|md)": [ + "prettier --write", + "git add" + ] +} \ No newline at end of file diff --git a/package.json b/package.json index 95bb3ce..3414942 100644 --- a/package.json +++ b/package.json @@ -44,20 +44,20 @@ "@pythnetwork/price-service-client": "^1.9.0", "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", "@solana/spl-token": "^0.4.9", - "ai": "^4.0.22", - "@tensor-oss/tensorswap-sdk": "^4.5.0", "@solana/web3.js": "^1.98.0", + "@tensor-oss/tensorswap-sdk": "^4.5.0", "@tiplink/api": "^0.3.1", + "ai": "^4.0.22", "bn.js": "^5.2.1", "bs58": "^6.0.0", "chai": "^5.1.2", "decimal.js": "^10.4.3", "dotenv": "^16.4.7", "form-data": "^4.0.1", - "zod": "^3.24.1", "langchain": "^0.3.8", "openai": "^4.77.0", - "typedoc": "^0.27.6" + "typedoc": "^0.27.6", + "zod": "^3.24.1" }, "devDependencies": { "@types/bn.js": "^5.1.6", @@ -68,6 +68,8 @@ "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.2.1", + "husky": "^9.1.7", + "lint-staged": "^15.3.0", "prettier": "^3.4.2", "ts-node": "^10.9.2", "typescript": "^5.7.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 05add17..c9fe3e9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -141,6 +141,12 @@ importers: eslint-plugin-prettier: specifier: ^5.2.1 version: 5.2.1(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 + lint-staged: + specifier: ^15.3.0 + version: 15.3.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -1000,6 +1006,10 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1183,6 +1193,14 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1190,6 +1208,9 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -1312,6 +1333,9 @@ packages: emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1322,6 +1346,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} @@ -1447,6 +1475,10 @@ packages: resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==} engines: {node: '>=18.0.0'} + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} @@ -1546,6 +1578,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + get-intrinsic@1.2.7: resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} engines: {node: '>= 0.4'} @@ -1554,6 +1590,10 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1630,9 +1670,18 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -1675,6 +1724,14 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + is-generator-function@1.1.0: resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} @@ -1707,6 +1764,10 @@ packages: resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} engines: {node: '>=10'} + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} @@ -1872,9 +1933,22 @@ packages: libsodium@0.7.15: resolution: {integrity: sha512-sZwRknt/tUpE2AwzHq3jEyUU5uvIZHtSssktXq7owd++3CSgn8RGrv6UZJJBpP7+iBghBqe7Z06/2M31rI2NKw==} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + lint-staged@15.3.0: + resolution: {integrity: sha512-vHFahytLoF2enJklgtOtCtIjZrKD/LoxlaUusd5nh7dWv/dkKQJY74ndFSzxCdv7g0ueGg1ORgTSt4Y9LPZn9A==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@8.2.5: + resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} + engines: {node: '>=18.0.0'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -1885,6 +1959,10 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + loglevel@1.9.2: resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} engines: {node: '>= 0.6.0'} @@ -1925,6 +2003,9 @@ packages: mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -1963,6 +2044,14 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} @@ -2022,6 +2111,10 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + number-to-bn@1.7.0: resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} engines: {node: '>=6.5.0', npm: '>=3'} @@ -2041,6 +2134,14 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + oniguruma-to-es@0.10.0: resolution: {integrity: sha512-zapyOUOCJxt+xhiNRPPMtfJkHGsZ98HHB9qJEkdT8BGytO/+kpe4m1Ngf0MzbzTmhacn11w9yGeDP6tzDhnCdg==} @@ -2109,6 +2210,10 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} @@ -2128,6 +2233,11 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + poly1305-js@0.4.4: resolution: {integrity: sha512-5B6/S+vg5AOr66wJDkh5LOpU/F3EKANDy4VXKsNZLXea1uCy6CiOWOZ3VhcC0nYdhE7vJUMcLxqcVlrv2g/+Rg==} @@ -2205,6 +2315,10 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} @@ -2217,6 +2331,9 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -2275,6 +2392,14 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} @@ -2292,6 +2417,10 @@ packages: spok@1.5.5: resolution: {integrity: sha512-IrJIXY54sCNFASyHPOY+jEirkiJ26JDqsGiI0Dvhwcnkl0PEWi1PSsrkYql0rzDw8LFVTcA7rdUCAJdE2HE+2Q==} + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2300,6 +2429,10 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -2318,6 +2451,10 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + strip-hex-prefix@1.0.0: resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} engines: {node: '>=6.5.0', npm: '>=3'} @@ -2574,6 +2711,10 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -2604,6 +2745,11 @@ packages: xsalsa20@1.2.0: resolution: {integrity: sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w==} + yaml@2.6.1: + resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} + engines: {node: '>= 14'} + hasBin: true + yaml@2.7.0: resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} engines: {node: '>= 14'} @@ -4125,6 +4271,10 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} @@ -4310,12 +4460,23 @@ snapshots: check-error@2.1.1: {} + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + color-convert@2.0.1: dependencies: color-name: 1.1.4 color-name@1.1.4: {} + colorette@2.0.20: {} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -4413,12 +4574,16 @@ snapshots: emoji-regex-xs@1.0.0: {} + emoji-regex@10.4.0: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} entities@4.5.0: {} + environment@1.1.0: {} + err-code@2.0.3: {} es-define-property@1.0.1: {} @@ -4594,6 +4759,18 @@ snapshots: eventsource-parser@3.0.0: {} + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + exponential-backoff@3.1.1: {} eyes@0.1.8: {} @@ -4695,6 +4872,8 @@ snapshots: function-bind@1.1.2: {} + get-east-asian-width@1.3.0: {} + get-intrinsic@1.2.7: dependencies: call-bind-apply-helpers: 1.0.1 @@ -4713,6 +4892,8 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.0.0 + get-stream@8.0.1: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -4820,10 +5001,14 @@ snapshots: html-void-elements@3.0.0: {} + human-signals@5.0.0: {} + humanize-ms@1.2.1: dependencies: ms: 2.1.3 + husky@9.1.7: {} + ieee754@1.2.1: {} ignore@5.3.2: {} @@ -4855,6 +5040,12 @@ snapshots: is-fullwidth-code-point@3.0.0: {} + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.3.0 + is-generator-function@1.1.0: dependencies: call-bound: 1.0.3 @@ -4886,6 +5077,8 @@ snapshots: is-retry-allowed@2.2.0: {} + is-stream@3.0.0: {} + is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.18 @@ -5040,10 +5233,36 @@ snapshots: libsodium@0.7.15: {} + lilconfig@3.1.3: {} + linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 + lint-staged@15.3.0: + dependencies: + chalk: 5.4.1 + commander: 12.1.0 + debug: 4.4.0 + execa: 8.0.1 + lilconfig: 3.1.3 + listr2: 8.2.5 + micromatch: 4.0.8 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.6.1 + transitivePeerDependencies: + - supports-color + + listr2@8.2.5: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -5052,6 +5271,14 @@ snapshots: lodash@4.17.21: {} + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + loglevel@1.9.2: {} loupe@3.1.2: {} @@ -5095,6 +5322,8 @@ snapshots: mdurl@2.0.0: {} + merge-stream@2.0.0: {} + merge2@1.4.1: {} merkletreejs@0.3.11: @@ -5135,6 +5364,10 @@ snapshots: dependencies: mime-db: 1.52.0 + mimic-fn@4.0.0: {} + + mimic-function@5.0.1: {} + minimalistic-assert@1.0.1: {} minimatch@10.0.1: @@ -5176,6 +5409,10 @@ snapshots: node-gyp-build@4.8.4: {} + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + number-to-bn@1.7.0: dependencies: bn.js: 4.11.6 @@ -5201,6 +5438,14 @@ snapshots: dependencies: wrappy: 1.0.2 + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + oniguruma-to-es@0.10.0: dependencies: emoji-regex-xs: 1.0.0 @@ -5272,6 +5517,8 @@ snapshots: path-key@3.1.1: {} + path-key@4.0.0: {} + path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 @@ -5288,6 +5535,8 @@ snapshots: picomatch@2.3.1: {} + pidtree@0.6.0: {} + poly1305-js@0.4.4: dependencies: big-integer: 1.6.52 @@ -5351,12 +5600,19 @@ snapshots: resolve-from@4.0.0: {} + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + retry@0.12.0: {} retry@0.13.1: {} reusify@1.0.4: {} + rfdc@1.4.1: {} + rimraf@3.0.2: dependencies: glob: 7.2.3 @@ -5429,6 +5685,16 @@ snapshots: signal-exit@4.1.0: {} + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + snake-case@3.0.4: dependencies: dot-case: 3.0.4 @@ -5457,6 +5723,8 @@ snapshots: - jiti - supports-color + string-argv@0.3.2: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -5469,6 +5737,12 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -5488,6 +5762,8 @@ snapshots: strip-bom@3.0.0: {} + strip-final-newline@3.0.0: {} + strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed: 1.0.0 @@ -5741,6 +6017,12 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + wrappy@1.0.2: {} ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10): @@ -5755,6 +6037,8 @@ snapshots: xsalsa20@1.2.0: {} + yaml@2.6.1: {} + yaml@2.7.0: {} yn@3.1.1: {} From d58417a4440425b91186c03712cacdd7014ffe72 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 5 Jan 2025 11:15:14 +0530 Subject: [PATCH 83/94] test --- src/langchain/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index ac6319f..5ecba3a 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1471,7 +1471,7 @@ export class SolanaRaydiumCreateClmm extends Tool { startTime: number(seconds), eg: now number or zero (required) `; - constructor(private solanaKit: SolanaAgentKit) { + constructor (private solanaKit: SolanaAgentKit) { super(); } From f9d8261a16647229f958334ff43fc6a41e44a7f4 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 5 Jan 2025 11:17:41 +0530 Subject: [PATCH 84/94] fix --- .husky/pre-commit | 1 + .huskyrc | 5 ----- package.json | 3 ++- 3 files changed, 3 insertions(+), 6 deletions(-) create mode 100644 .husky/pre-commit delete mode 100644 .huskyrc diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..d42474c --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +tsc && lint-staged \ No newline at end of file diff --git a/.huskyrc b/.huskyrc deleted file mode 100644 index 40b707d..0000000 --- a/.huskyrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "hooks": { - "pre-commit": "tsc && lint-staged" - } -} \ No newline at end of file diff --git a/package.json b/package.json index 3414942..9ac0e53 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "generate": "ts-node src/utils/keypair.ts", "lint": "eslint . --ext .ts", "lint:fix": "eslint . --ext .ts --fix", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"" + "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", + "prepare": "husky" }, "engines": { "node": ">=22.0.0", From 2d3336c5327e112794b803a610da28e35fc0ec3b Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 5 Jan 2025 11:19:11 +0530 Subject: [PATCH 85/94] fix --- .lintstagedrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.lintstagedrc b/.lintstagedrc index 16472f9..d2aefcf 100644 --- a/.lintstagedrc +++ b/.lintstagedrc @@ -1,6 +1,6 @@ { "**/*.+(js|jsx|css|less|scss|ts|tsx|md)": [ "prettier --write", - "git add" + "eslint --fix" ] } \ No newline at end of file From 0f8edf180a7822ac5a89f487b2a5bb25852f11c6 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 5 Jan 2025 11:19:38 +0530 Subject: [PATCH 86/94] fix --- src/langchain/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 5ecba3a..ac6319f 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1471,7 +1471,7 @@ export class SolanaRaydiumCreateClmm extends Tool { startTime: number(seconds), eg: now number or zero (required) `; - constructor (private solanaKit: SolanaAgentKit) { + constructor(private solanaKit: SolanaAgentKit) { super(); } From ca38d872b9359a00476474c25c4c8b94d5acb76e Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 5 Jan 2025 11:21:40 +0530 Subject: [PATCH 87/94] chore: docs --- docs/classes/SolanaAgentKit.html | 12 ++++++------ docs/functions/createSolanaTools.html | 2 +- docs/functions/createVercelAITools.html | 2 +- docs/functions/executeAction.html | 2 +- docs/functions/findAction.html | 2 +- docs/functions/getActionExamples.html | 2 +- docs/interfaces/Action.html | 14 +++++++------- docs/interfaces/ActionExample.html | 4 ++-- docs/interfaces/BatchOrderPattern.html | 4 ++-- docs/interfaces/CollectionDeployment.html | 4 ++-- docs/interfaces/CollectionOptions.html | 4 ++-- docs/interfaces/Config.html | 4 ++-- docs/interfaces/Creator.html | 4 ++-- docs/interfaces/FetchPriceResponse.html | 4 ++-- docs/interfaces/GibworkCreateTaskReponse.html | 4 ++-- docs/interfaces/JupiterTokenData.html | 4 ++-- docs/interfaces/LuloAccountDetailsResponse.html | 4 ++-- docs/interfaces/MintCollectionNFTResponse.html | 4 ++-- docs/interfaces/OrderParams.html | 4 ++-- docs/interfaces/PumpFunTokenOptions.html | 4 ++-- docs/interfaces/PumpfunLaunchResponse.html | 4 ++-- docs/interfaces/PythFetchPriceResponse.html | 4 ++-- docs/interfaces/PythPriceFeedIDItem.html | 4 ++-- docs/interfaces/PythPriceItem.html | 4 ++-- docs/interfaces/TokenCheck.html | 4 ++-- docs/types/Handler.html | 2 +- docs/variables/actions.html | 2 +- 27 files changed, 56 insertions(+), 56 deletions(-) diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index f8872a0..04d317e 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,7 +1,7 @@ SolanaAgentKit | solana-agent-kit

    Class SolanaAgentKit

    Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, trading and more

    SolanaAgentKit

    -

    Constructors

    Constructors

    Properties

    config connection wallet @@ -63,8 +63,8 @@ Please use the new constructor with Config object instead:

    const agent = new SolanaAgentKit(privateKey, rpcUrl, {
    OPENAI_API_KEY: 'your-key'
    });
    -
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    -
    connection: Connection

    Solana RPC connection

    -
    wallet: Keypair

    Wallet keypair for signing transactions

    -
    wallet_address: PublicKey

    Public key of the wallet

    -

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • tokenSymbol: string

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    +
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    +
    connection: Connection

    Solana RPC connection

    +
    wallet: Keypair

    Wallet keypair for signing transactions

    +
    wallet_address: PublicKey

    Public key of the wallet

    +

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • tokenSymbol: string

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index 40c059b..05aeb31 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaPerpCloseTradeTool
          | SolanaPerpOpenTradeTool
          | SolanaTradeTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaRestakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
          | SolanaFetchTokenReportSummaryTool
          | SolanaFetchTokenDetailedReportTool
      )[]

    +createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaPerpCloseTradeTool
          | SolanaPerpOpenTradeTool
          | SolanaTradeTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaRestakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
          | SolanaFetchTokenReportSummaryTool
          | SolanaFetchTokenDetailedReportTool
      )[]

    diff --git a/docs/functions/createVercelAITools.html b/docs/functions/createVercelAITools.html index 4900cf6..1106683 100644 --- a/docs/functions/createVercelAITools.html +++ b/docs/functions/createVercelAITools.html @@ -1 +1 @@ -createVercelAITools | solana-agent-kit

    Function createVercelAITools

    +createVercelAITools | solana-agent-kit

    Function createVercelAITools

    diff --git a/docs/functions/executeAction.html b/docs/functions/executeAction.html index f138d97..95b51c1 100644 --- a/docs/functions/executeAction.html +++ b/docs/functions/executeAction.html @@ -1,2 +1,2 @@ executeAction | solana-agent-kit

    Function executeAction

    • Execute an action with the given input

      -

      Parameters

      Returns Promise<Record<string, any>>

    +

    Parameters

    Returns Promise<Record<string, any>>

    diff --git a/docs/functions/findAction.html b/docs/functions/findAction.html index 7532dff..75abad6 100644 --- a/docs/functions/findAction.html +++ b/docs/functions/findAction.html @@ -1,2 +1,2 @@ findAction | solana-agent-kit

    Function findAction

    • Find an action by its name or one of its similes

      -

      Parameters

      • query: string

      Returns Action | undefined

    +

    Parameters

    • query: string

    Returns Action | undefined

    diff --git a/docs/functions/getActionExamples.html b/docs/functions/getActionExamples.html index 1d3478f..efb8a7e 100644 --- a/docs/functions/getActionExamples.html +++ b/docs/functions/getActionExamples.html @@ -1,2 +1,2 @@ getActionExamples | solana-agent-kit

    Function getActionExamples

    • Get examples for an action

      -

      Parameters

      • action: Action

      Returns string

    +

    Parameters

    • action: Action

    Returns string

    diff --git a/docs/interfaces/Action.html b/docs/interfaces/Action.html index 2102f86..cb369cc 100644 --- a/docs/interfaces/Action.html +++ b/docs/interfaces/Action.html @@ -1,16 +1,16 @@ Action | solana-agent-kit

    Interface Action

    Main Action interface inspired by ELIZA This interface makes it easier to implement actions across different frameworks

    -
    interface Action {
        description: string;
        examples: ActionExample[][];
        handler: Handler;
        name: string;
        schema: ZodType;
        similes: string[];
    }

    Properties

    interface Action {
        description: string;
        examples: ActionExample[][];
        handler: Handler;
        name: string;
        schema: ZodType;
        similes: string[];
    }

    Properties

    description: string

    Detailed description of what the action does

    -
    examples: ActionExample[][]

    Array of example inputs and outputs for the action +

    examples: ActionExample[][]

    Array of example inputs and outputs for the action Each inner array represents a group of related examples

    -
    handler: Handler

    Function that executes the action

    -
    name: string

    Unique name of the action

    -
    schema: ZodType

    Zod schema for input validation

    -
    similes: string[]

    Alternative names/phrases that can trigger this action

    -
    +
    handler: Handler

    Function that executes the action

    +
    name: string

    Unique name of the action

    +
    schema: ZodType

    Zod schema for input validation

    +
    similes: string[]

    Alternative names/phrases that can trigger this action

    +
    diff --git a/docs/interfaces/ActionExample.html b/docs/interfaces/ActionExample.html index 5c96b15..f609818 100644 --- a/docs/interfaces/ActionExample.html +++ b/docs/interfaces/ActionExample.html @@ -1,5 +1,5 @@ ActionExample | solana-agent-kit

    Interface ActionExample

    Example of an action with input and output

    -
    interface ActionExample {
        explanation: string;
        input: Record<string, any>;
        output: Record<string, any>;
    }

    Properties

    interface ActionExample {
        explanation: string;
        input: Record<string, any>;
        output: Record<string, any>;
    }

    Properties

    explanation: string
    input: Record<string, any>
    output: Record<string, any>
    +

    Properties

    explanation: string
    input: Record<string, any>
    output: Record<string, any>
    diff --git a/docs/interfaces/BatchOrderPattern.html b/docs/interfaces/BatchOrderPattern.html index 31508ed..de6b5b1 100644 --- a/docs/interfaces/BatchOrderPattern.html +++ b/docs/interfaces/BatchOrderPattern.html @@ -1,7 +1,7 @@ -BatchOrderPattern | solana-agent-kit

    Interface BatchOrderPattern

    interface BatchOrderPattern {
        individualQuantity?: number;
        numberOfOrders?: number;
        priceRange?: { max?: number; min?: number };
        side: string;
        spacing?: { type: "percentage" | "fixed"; value: number };
        totalQuantity?: number;
    }

    Properties

    individualQuantity? +BatchOrderPattern | solana-agent-kit

    Interface BatchOrderPattern

    interface BatchOrderPattern {
        individualQuantity?: number;
        numberOfOrders?: number;
        priceRange?: { max?: number; min?: number };
        side: string;
        spacing?: { type: "percentage" | "fixed"; value: number };
        totalQuantity?: number;
    }

    Properties

    individualQuantity?: number
    numberOfOrders?: number
    priceRange?: { max?: number; min?: number }
    side: string
    spacing?: { type: "percentage" | "fixed"; value: number }
    totalQuantity?: number
    +

    Properties

    individualQuantity?: number
    numberOfOrders?: number
    priceRange?: { max?: number; min?: number }
    side: string
    spacing?: { type: "percentage" | "fixed"; value: number }
    totalQuantity?: number
    diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index c8bfe83..7a6bb70 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress +CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    +

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index 6c3fd74..56dae1c 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators? +CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    +

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    diff --git a/docs/interfaces/Config.html b/docs/interfaces/Config.html index 5a3ca46..791c3ba 100644 --- a/docs/interfaces/Config.html +++ b/docs/interfaces/Config.html @@ -1,4 +1,4 @@ -Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS? +Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    +

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index 2f4ea54..0634c31 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    address +Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    Properties

    address: string
    percentage: number
    +

    Properties

    address: string
    percentage: number
    diff --git a/docs/interfaces/FetchPriceResponse.html b/docs/interfaces/FetchPriceResponse.html index 923975d..512e044 100644 --- a/docs/interfaces/FetchPriceResponse.html +++ b/docs/interfaces/FetchPriceResponse.html @@ -1,6 +1,6 @@ -FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code? +FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    +

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    diff --git a/docs/interfaces/GibworkCreateTaskReponse.html b/docs/interfaces/GibworkCreateTaskReponse.html index 87ecb48..f8cd397 100644 --- a/docs/interfaces/GibworkCreateTaskReponse.html +++ b/docs/interfaces/GibworkCreateTaskReponse.html @@ -1,4 +1,4 @@ -GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature? +GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    +

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    diff --git a/docs/interfaces/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index 36352ec..8e18d9c 100644 --- a/docs/interfaces/JupiterTokenData.html +++ b/docs/interfaces/JupiterTokenData.html @@ -1,4 +1,4 @@ -JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address +JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    +

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index 098cdff..c8ea348 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

    Interface LuloAccountDetailsResponse

    Lulo Account Details response format

    -
    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    +

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index d6ac59d..e3a8c1f 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    metadata +MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    Properties

    metadata: PublicKey
    mint: PublicKey
    +

    Properties

    metadata: PublicKey
    mint: PublicKey
    diff --git a/docs/interfaces/OrderParams.html b/docs/interfaces/OrderParams.html index c86dede..3471b75 100644 --- a/docs/interfaces/OrderParams.html +++ b/docs/interfaces/OrderParams.html @@ -1,4 +1,4 @@ -OrderParams | solana-agent-kit

    Interface OrderParams

    interface OrderParams {
        price: number;
        quantity: number;
        side: string;
    }

    Properties

    price +OrderParams | solana-agent-kit

    Interface OrderParams

    interface OrderParams {
        price: number;
        quantity: number;
        side: string;
    }

    Properties

    Properties

    price: number
    quantity: number
    side: string
    +

    Properties

    price: number
    quantity: number
    side: string
    diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html index a2d5e9e..a52256e 100644 --- a/docs/interfaces/PumpFunTokenOptions.html +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -1,7 +1,7 @@ -PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL? +PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    +

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html index 94ff87e..6e31967 100644 --- a/docs/interfaces/PumpfunLaunchResponse.html +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -1,5 +1,5 @@ -PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error? +PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    +

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    diff --git a/docs/interfaces/PythFetchPriceResponse.html b/docs/interfaces/PythFetchPriceResponse.html index 36750a0..25016ed 100644 --- a/docs/interfaces/PythFetchPriceResponse.html +++ b/docs/interfaces/PythFetchPriceResponse.html @@ -1,7 +1,7 @@ -PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID?: string;
        status: "success" | "error";
        tokenSymbol: string;
    }

    Properties

    code? +PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID?: string;
        status: "success" | "error";
        tokenSymbol: string;
    }

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID?: string
    status: "success" | "error"
    tokenSymbol: string
    +

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID?: string
    status: "success" | "error"
    tokenSymbol: string
    diff --git a/docs/interfaces/PythPriceFeedIDItem.html b/docs/interfaces/PythPriceFeedIDItem.html index 6930839..c77bc8e 100644 --- a/docs/interfaces/PythPriceFeedIDItem.html +++ b/docs/interfaces/PythPriceFeedIDItem.html @@ -1,3 +1,3 @@ -PythPriceFeedIDItem | solana-agent-kit

    Interface PythPriceFeedIDItem

    interface PythPriceFeedIDItem {
        attributes: { asset_type: string; base: string };
        id: string;
    }

    Properties

    attributes +PythPriceFeedIDItem | solana-agent-kit

    Interface PythPriceFeedIDItem

    interface PythPriceFeedIDItem {
        attributes: { asset_type: string; base: string };
        id: string;
    }

    Properties

    Properties

    attributes: { asset_type: string; base: string }
    id: string
    +

    Properties

    attributes: { asset_type: string; base: string }
    id: string
    diff --git a/docs/interfaces/PythPriceItem.html b/docs/interfaces/PythPriceItem.html index 477b285..057c0e6 100644 --- a/docs/interfaces/PythPriceItem.html +++ b/docs/interfaces/PythPriceItem.html @@ -1,3 +1,3 @@ -PythPriceItem | solana-agent-kit

    Interface PythPriceItem

    interface PythPriceItem {
        binary: { data: string[]; encoding: string };
        parsed: [
            {
                ema_price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
                id: string;
                metadata: {
                    prev_publish_time: number;
                    proof_available_time: number;
                    slot: number;
                };
                price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
            }[],
        ];
    }

    Properties

    binary +PythPriceItem | solana-agent-kit

    Interface PythPriceItem

    interface PythPriceItem {
        binary: { data: string[]; encoding: string };
        parsed: [
            {
                ema_price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
                id: string;
                metadata: {
                    prev_publish_time: number;
                    proof_available_time: number;
                    slot: number;
                };
                price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
            }[],
        ];
    }

    Properties

    Properties

    binary: { data: string[]; encoding: string }
    parsed: [
        {
            ema_price: {
                conf: string;
                expo: number;
                price: string;
                publish_time: number;
            };
            id: string;
            metadata: {
                prev_publish_time: number;
                proof_available_time: number;
                slot: number;
            };
            price: { conf: string; expo: number; price: string; publish_time: number };
        }[],
    ]
    +

    Properties

    binary: { data: string[]; encoding: string }
    parsed: [
        {
            ema_price: {
                conf: string;
                expo: number;
                price: string;
                publish_time: number;
            };
            id: string;
            metadata: {
                prev_publish_time: number;
                proof_available_time: number;
                slot: number;
            };
            price: { conf: string; expo: number; price: string; publish_time: number };
        }[],
    ]
    diff --git a/docs/interfaces/TokenCheck.html b/docs/interfaces/TokenCheck.html index 2cc6151..22b417b 100644 --- a/docs/interfaces/TokenCheck.html +++ b/docs/interfaces/TokenCheck.html @@ -1,5 +1,5 @@ -TokenCheck | solana-agent-kit

    Interface TokenCheck

    interface TokenCheck {
        risks: {
            description: string;
            level: string;
            name: string;
            score: number;
        }[];
        score: number;
        tokenProgram: string;
        tokenType: string;
    }

    Properties

    risks +TokenCheck | solana-agent-kit

    Interface TokenCheck

    interface TokenCheck {
        risks: {
            description: string;
            level: string;
            name: string;
            score: number;
        }[];
        score: number;
        tokenProgram: string;
        tokenType: string;
    }

    Properties

    risks: { description: string; level: string; name: string; score: number }[]
    score: number
    tokenProgram: string
    tokenType: string
    +

    Properties

    risks: { description: string; level: string; name: string; score: number }[]
    score: number
    tokenProgram: string
    tokenType: string
    diff --git a/docs/types/Handler.html b/docs/types/Handler.html index 79d7158..68daef5 100644 --- a/docs/types/Handler.html +++ b/docs/types/Handler.html @@ -1,2 +1,2 @@ Handler | solana-agent-kit

    Type Alias Handler

    Handler: (
        agent: SolanaAgentKit,
        input: Record<string, any>,
    ) => Promise<Record<string, any>>

    Handler function type for executing the action

    -

    Type declaration

      • (
            agent: SolanaAgentKit,
            input: Record<string, any>,
        ): Promise<Record<string, any>>
      • Parameters

        Returns Promise<Record<string, any>>

    +

    Type declaration

      • (
            agent: SolanaAgentKit,
            input: Record<string, any>,
        ): Promise<Record<string, any>>
      • Parameters

        Returns Promise<Record<string, any>>

    diff --git a/docs/variables/actions.html b/docs/variables/actions.html index 7721160..2046df3 100644 --- a/docs/variables/actions.html +++ b/docs/variables/actions.html @@ -1 +1 @@ -ACTIONS | solana-agent-kit

    Variable ACTIONSConst

    ACTIONS: {
        BALANCE_ACTION: Action;
        CREATE_GIBWORK_TASK_ACTION: Action;
        CREATE_IMAGE_ACTION: Action;
        CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
        DEPLOY_COLLECTION_ACTION: Action;
        DEPLOY_TOKEN_ACTION: Action;
        FETCH_PRICE_ACTION: Action;
        GET_ALL_DOMAINS_TLDS_ACTION: Action;
        GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
        GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
        GET_OWNED_ALL_DOMAINS_ACTION: Action;
        GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
        GET_PRIMARY_DOMAIN_ACTION: Action;
        GET_TOKEN_DATA_ACTION: Action;
        GET_TPS_ACTION: Action;
        LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
        LEND_ASSET_ACTION: Action;
        MINT_NFT_ACTION: Action;
        PYTH_FETCH_PRICE_ACTION: Action;
        RAYDIUM_CREATE_AMM_V4_ACTION: Action;
        RAYDIUM_CREATE_CPMM_ACTION: Action;
        REGISTER_DOMAIN_ACTION: Action;
        REQUEST_FUNDS_ACTION: Action;
        RESOLVE_DOMAIN_ACTION: Action;
        RESOLVE_SOL_DOMAIN_ACTION: Action;
        STAKE_WITH_JUP_ACTION: Action;
        STAKE_WITH_SOLAYER_ACTION: Action;
        TRADE_ACTION: Action;
        TRANSFER_ACTION: Action;
        WALLET_ADDRESS_ACTION: Action;
    } = ...

    Type declaration

    • BALANCE_ACTION: Action
    • CREATE_GIBWORK_TASK_ACTION: Action
    • CREATE_IMAGE_ACTION: Action
    • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
    • DEPLOY_COLLECTION_ACTION: Action
    • DEPLOY_TOKEN_ACTION: Action
    • FETCH_PRICE_ACTION: Action
    • GET_ALL_DOMAINS_TLDS_ACTION: Action
    • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
    • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
    • GET_OWNED_ALL_DOMAINS_ACTION: Action
    • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
    • GET_PRIMARY_DOMAIN_ACTION: Action
    • GET_TOKEN_DATA_ACTION: Action
    • GET_TPS_ACTION: Action
    • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
    • LEND_ASSET_ACTION: Action
    • MINT_NFT_ACTION: Action
    • PYTH_FETCH_PRICE_ACTION: Action
    • RAYDIUM_CREATE_AMM_V4_ACTION: Action
    • RAYDIUM_CREATE_CPMM_ACTION: Action
    • REGISTER_DOMAIN_ACTION: Action
    • REQUEST_FUNDS_ACTION: Action
    • RESOLVE_DOMAIN_ACTION: Action
    • RESOLVE_SOL_DOMAIN_ACTION: Action
    • STAKE_WITH_JUP_ACTION: Action
    • STAKE_WITH_SOLAYER_ACTION: Action
    • TRADE_ACTION: Action
    • TRANSFER_ACTION: Action
    • WALLET_ADDRESS_ACTION: Action
    +ACTIONS | solana-agent-kit

    Variable ACTIONSConst

    ACTIONS: {
        BALANCE_ACTION: Action;
        CREATE_GIBWORK_TASK_ACTION: Action;
        CREATE_IMAGE_ACTION: Action;
        CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
        DEPLOY_COLLECTION_ACTION: Action;
        DEPLOY_TOKEN_ACTION: Action;
        FETCH_PRICE_ACTION: Action;
        GET_ALL_DOMAINS_TLDS_ACTION: Action;
        GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
        GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
        GET_OWNED_ALL_DOMAINS_ACTION: Action;
        GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
        GET_PRIMARY_DOMAIN_ACTION: Action;
        GET_TOKEN_DATA_ACTION: Action;
        GET_TPS_ACTION: Action;
        LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
        LEND_ASSET_ACTION: Action;
        MINT_NFT_ACTION: Action;
        PYTH_FETCH_PRICE_ACTION: Action;
        RAYDIUM_CREATE_AMM_V4_ACTION: Action;
        RAYDIUM_CREATE_CPMM_ACTION: Action;
        REGISTER_DOMAIN_ACTION: Action;
        REQUEST_FUNDS_ACTION: Action;
        RESOLVE_DOMAIN_ACTION: Action;
        RESOLVE_SOL_DOMAIN_ACTION: Action;
        STAKE_WITH_JUP_ACTION: Action;
        STAKE_WITH_SOLAYER_ACTION: Action;
        TRADE_ACTION: Action;
        TRANSFER_ACTION: Action;
        WALLET_ADDRESS_ACTION: Action;
    } = ...

    Type declaration

    • BALANCE_ACTION: Action
    • CREATE_GIBWORK_TASK_ACTION: Action
    • CREATE_IMAGE_ACTION: Action
    • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
    • DEPLOY_COLLECTION_ACTION: Action
    • DEPLOY_TOKEN_ACTION: Action
    • FETCH_PRICE_ACTION: Action
    • GET_ALL_DOMAINS_TLDS_ACTION: Action
    • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
    • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
    • GET_OWNED_ALL_DOMAINS_ACTION: Action
    • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
    • GET_PRIMARY_DOMAIN_ACTION: Action
    • GET_TOKEN_DATA_ACTION: Action
    • GET_TPS_ACTION: Action
    • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
    • LEND_ASSET_ACTION: Action
    • MINT_NFT_ACTION: Action
    • PYTH_FETCH_PRICE_ACTION: Action
    • RAYDIUM_CREATE_AMM_V4_ACTION: Action
    • RAYDIUM_CREATE_CPMM_ACTION: Action
    • REGISTER_DOMAIN_ACTION: Action
    • REQUEST_FUNDS_ACTION: Action
    • RESOLVE_DOMAIN_ACTION: Action
    • RESOLVE_SOL_DOMAIN_ACTION: Action
    • STAKE_WITH_JUP_ACTION: Action
    • STAKE_WITH_SOLAYER_ACTION: Action
    • TRADE_ACTION: Action
    • TRANSFER_ACTION: Action
    • WALLET_ADDRESS_ACTION: Action
    From a8ea9b48213a0a0e58bb87923dbc1d4e0dd079f1 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 5 Jan 2025 12:45:31 +0530 Subject: [PATCH 88/94] chore: docs --- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 16 +++++++++------- docs/functions/createSolanaTools.html | 2 +- docs/functions/createVercelAITools.html | 2 +- docs/functions/executeAction.html | 2 +- docs/functions/findAction.html | 2 +- docs/functions/getActionExamples.html | 2 +- docs/interfaces/Action.html | 14 +++++++------- docs/interfaces/ActionExample.html | 4 ++-- docs/interfaces/BatchOrderPattern.html | 4 ++-- docs/interfaces/CollectionDeployment.html | 4 ++-- docs/interfaces/CollectionOptions.html | 4 ++-- docs/interfaces/Config.html | 4 ++-- docs/interfaces/Creator.html | 4 ++-- docs/interfaces/FetchPriceResponse.html | 4 ++-- docs/interfaces/GibworkCreateTaskReponse.html | 4 ++-- docs/interfaces/JupiterTokenData.html | 4 ++-- docs/interfaces/LuloAccountDetailsResponse.html | 4 ++-- docs/interfaces/MintCollectionNFTResponse.html | 4 ++-- docs/interfaces/OrderParams.html | 4 ++-- docs/interfaces/PumpFunTokenOptions.html | 4 ++-- docs/interfaces/PumpfunLaunchResponse.html | 4 ++-- docs/interfaces/PythFetchPriceResponse.html | 4 ++-- docs/interfaces/PythPriceFeedIDItem.html | 4 ++-- docs/interfaces/PythPriceItem.html | 4 ++-- docs/interfaces/TokenCheck.html | 4 ++-- docs/types/Handler.html | 2 +- docs/variables/actions.html | 2 +- 28 files changed, 60 insertions(+), 58 deletions(-) diff --git a/docs/assets/search.js b/docs/assets/search.js index 4e1411f..86069d6 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index 04d317e..00ab271 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,12 +1,13 @@ SolanaAgentKit | solana-agent-kit

    Class SolanaAgentKit

    Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, trading and more

    SolanaAgentKit

    -

    Constructors

    Constructors

    Properties

    Methods

    Methods

    batchOrder +cancelAllOrders closePerpTradeLong closePerpTradeShort createGibworkTask @@ -31,6 +32,7 @@ Provides a unified interface for token operations, NFT management, trading and m getTPS launchPumpFunToken lendAssets +limitOrder manifestCreateMarket mintNFT openbookCreateMarket @@ -63,8 +65,8 @@ Please use the new constructor with Config object instead:

    const agent = new SolanaAgentKit(privateKey, rpcUrl, {
    OPENAI_API_KEY: 'your-key'
    });
    -
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    -
    connection: Connection

    Solana RPC connection

    -
    wallet: Keypair

    Wallet keypair for signing transactions

    -
    wallet_address: PublicKey

    Public key of the wallet

    -

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • tokenSymbol: string

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    +
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    +
    connection: Connection

    Solana RPC connection

    +
    wallet: Keypair

    Wallet keypair for signing transactions

    +
    wallet_address: PublicKey

    Public key of the wallet

    +

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • tokenSymbol: string

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • quantity: number
      • side: string
      • price: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index 05aeb31..6e91e21 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaPerpCloseTradeTool
          | SolanaPerpOpenTradeTool
          | SolanaTradeTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaRestakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
          | SolanaFetchTokenReportSummaryTool
          | SolanaFetchTokenDetailedReportTool
      )[]

    +createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaPerpCloseTradeTool
          | SolanaPerpOpenTradeTool
          | SolanaTradeTool
          | SolanaLimitOrderTool
          | SolanaBatchOrderTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaRestakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
          | SolanaFetchTokenReportSummaryTool
          | SolanaFetchTokenDetailedReportTool
      )[]

    diff --git a/docs/functions/createVercelAITools.html b/docs/functions/createVercelAITools.html index 1106683..c893d8c 100644 --- a/docs/functions/createVercelAITools.html +++ b/docs/functions/createVercelAITools.html @@ -1 +1 @@ -createVercelAITools | solana-agent-kit

    Function createVercelAITools

    +createVercelAITools | solana-agent-kit

    Function createVercelAITools

    diff --git a/docs/functions/executeAction.html b/docs/functions/executeAction.html index 95b51c1..e9b5415 100644 --- a/docs/functions/executeAction.html +++ b/docs/functions/executeAction.html @@ -1,2 +1,2 @@ executeAction | solana-agent-kit

    Function executeAction

    • Execute an action with the given input

      -

      Parameters

      Returns Promise<Record<string, any>>

    +

    Parameters

    Returns Promise<Record<string, any>>

    diff --git a/docs/functions/findAction.html b/docs/functions/findAction.html index 75abad6..fa2a6db 100644 --- a/docs/functions/findAction.html +++ b/docs/functions/findAction.html @@ -1,2 +1,2 @@ findAction | solana-agent-kit

    Function findAction

    • Find an action by its name or one of its similes

      -

      Parameters

      • query: string

      Returns Action | undefined

    +

    Parameters

    • query: string

    Returns Action | undefined

    diff --git a/docs/functions/getActionExamples.html b/docs/functions/getActionExamples.html index efb8a7e..bf34664 100644 --- a/docs/functions/getActionExamples.html +++ b/docs/functions/getActionExamples.html @@ -1,2 +1,2 @@ getActionExamples | solana-agent-kit

    Function getActionExamples

    • Get examples for an action

      -

      Parameters

      • action: Action

      Returns string

    +

    Parameters

    • action: Action

    Returns string

    diff --git a/docs/interfaces/Action.html b/docs/interfaces/Action.html index cb369cc..e119050 100644 --- a/docs/interfaces/Action.html +++ b/docs/interfaces/Action.html @@ -1,16 +1,16 @@ Action | solana-agent-kit

    Interface Action

    Main Action interface inspired by ELIZA This interface makes it easier to implement actions across different frameworks

    -
    interface Action {
        description: string;
        examples: ActionExample[][];
        handler: Handler;
        name: string;
        schema: ZodType;
        similes: string[];
    }

    Properties

    interface Action {
        description: string;
        examples: ActionExample[][];
        handler: Handler;
        name: string;
        schema: ZodType;
        similes: string[];
    }

    Properties

    description: string

    Detailed description of what the action does

    -
    examples: ActionExample[][]

    Array of example inputs and outputs for the action +

    examples: ActionExample[][]

    Array of example inputs and outputs for the action Each inner array represents a group of related examples

    -
    handler: Handler

    Function that executes the action

    -
    name: string

    Unique name of the action

    -
    schema: ZodType

    Zod schema for input validation

    -
    similes: string[]

    Alternative names/phrases that can trigger this action

    -
    +
    handler: Handler

    Function that executes the action

    +
    name: string

    Unique name of the action

    +
    schema: ZodType

    Zod schema for input validation

    +
    similes: string[]

    Alternative names/phrases that can trigger this action

    +
    diff --git a/docs/interfaces/ActionExample.html b/docs/interfaces/ActionExample.html index f609818..c87f193 100644 --- a/docs/interfaces/ActionExample.html +++ b/docs/interfaces/ActionExample.html @@ -1,5 +1,5 @@ ActionExample | solana-agent-kit

    Interface ActionExample

    Example of an action with input and output

    -
    interface ActionExample {
        explanation: string;
        input: Record<string, any>;
        output: Record<string, any>;
    }

    Properties

    interface ActionExample {
        explanation: string;
        input: Record<string, any>;
        output: Record<string, any>;
    }

    Properties

    explanation: string
    input: Record<string, any>
    output: Record<string, any>
    +

    Properties

    explanation: string
    input: Record<string, any>
    output: Record<string, any>
    diff --git a/docs/interfaces/BatchOrderPattern.html b/docs/interfaces/BatchOrderPattern.html index de6b5b1..e0a23b3 100644 --- a/docs/interfaces/BatchOrderPattern.html +++ b/docs/interfaces/BatchOrderPattern.html @@ -1,7 +1,7 @@ -BatchOrderPattern | solana-agent-kit

    Interface BatchOrderPattern

    interface BatchOrderPattern {
        individualQuantity?: number;
        numberOfOrders?: number;
        priceRange?: { max?: number; min?: number };
        side: string;
        spacing?: { type: "percentage" | "fixed"; value: number };
        totalQuantity?: number;
    }

    Properties

    individualQuantity? +BatchOrderPattern | solana-agent-kit

    Interface BatchOrderPattern

    interface BatchOrderPattern {
        individualQuantity?: number;
        numberOfOrders?: number;
        priceRange?: { max?: number; min?: number };
        side: string;
        spacing?: { type: "percentage" | "fixed"; value: number };
        totalQuantity?: number;
    }

    Properties

    individualQuantity?: number
    numberOfOrders?: number
    priceRange?: { max?: number; min?: number }
    side: string
    spacing?: { type: "percentage" | "fixed"; value: number }
    totalQuantity?: number
    +

    Properties

    individualQuantity?: number
    numberOfOrders?: number
    priceRange?: { max?: number; min?: number }
    side: string
    spacing?: { type: "percentage" | "fixed"; value: number }
    totalQuantity?: number
    diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index 7a6bb70..c21f473 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress +CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    +

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index 56dae1c..88a25ce 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators? +CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    +

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    diff --git a/docs/interfaces/Config.html b/docs/interfaces/Config.html index 791c3ba..4b58b7a 100644 --- a/docs/interfaces/Config.html +++ b/docs/interfaces/Config.html @@ -1,4 +1,4 @@ -Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS? +Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    +

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index 0634c31..7bfab7b 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    address +Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    Properties

    address: string
    percentage: number
    +

    Properties

    address: string
    percentage: number
    diff --git a/docs/interfaces/FetchPriceResponse.html b/docs/interfaces/FetchPriceResponse.html index 512e044..e4bdfcb 100644 --- a/docs/interfaces/FetchPriceResponse.html +++ b/docs/interfaces/FetchPriceResponse.html @@ -1,6 +1,6 @@ -FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code? +FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    +

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    diff --git a/docs/interfaces/GibworkCreateTaskReponse.html b/docs/interfaces/GibworkCreateTaskReponse.html index f8cd397..4220fd0 100644 --- a/docs/interfaces/GibworkCreateTaskReponse.html +++ b/docs/interfaces/GibworkCreateTaskReponse.html @@ -1,4 +1,4 @@ -GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature? +GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    +

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    diff --git a/docs/interfaces/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index 8e18d9c..b7c5c24 100644 --- a/docs/interfaces/JupiterTokenData.html +++ b/docs/interfaces/JupiterTokenData.html @@ -1,4 +1,4 @@ -JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address +JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    +

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index c8ea348..3b00202 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

    Interface LuloAccountDetailsResponse

    Lulo Account Details response format

    -
    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    +

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index e3a8c1f..b7256c2 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    metadata +MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    Properties

    metadata: PublicKey
    mint: PublicKey
    +

    Properties

    metadata: PublicKey
    mint: PublicKey
    diff --git a/docs/interfaces/OrderParams.html b/docs/interfaces/OrderParams.html index 3471b75..5b3d147 100644 --- a/docs/interfaces/OrderParams.html +++ b/docs/interfaces/OrderParams.html @@ -1,4 +1,4 @@ -OrderParams | solana-agent-kit

    Interface OrderParams

    interface OrderParams {
        price: number;
        quantity: number;
        side: string;
    }

    Properties

    price +OrderParams | solana-agent-kit

    Interface OrderParams

    interface OrderParams {
        price: number;
        quantity: number;
        side: string;
    }

    Properties

    Properties

    price: number
    quantity: number
    side: string
    +

    Properties

    price: number
    quantity: number
    side: string
    diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html index a52256e..9069138 100644 --- a/docs/interfaces/PumpFunTokenOptions.html +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -1,7 +1,7 @@ -PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL? +PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    +

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html index 6e31967..c3f7945 100644 --- a/docs/interfaces/PumpfunLaunchResponse.html +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -1,5 +1,5 @@ -PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error? +PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    +

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    diff --git a/docs/interfaces/PythFetchPriceResponse.html b/docs/interfaces/PythFetchPriceResponse.html index 25016ed..eb543b9 100644 --- a/docs/interfaces/PythFetchPriceResponse.html +++ b/docs/interfaces/PythFetchPriceResponse.html @@ -1,7 +1,7 @@ -PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID?: string;
        status: "success" | "error";
        tokenSymbol: string;
    }

    Properties

    code? +PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID?: string;
        status: "success" | "error";
        tokenSymbol: string;
    }

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID?: string
    status: "success" | "error"
    tokenSymbol: string
    +

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID?: string
    status: "success" | "error"
    tokenSymbol: string
    diff --git a/docs/interfaces/PythPriceFeedIDItem.html b/docs/interfaces/PythPriceFeedIDItem.html index c77bc8e..54757dc 100644 --- a/docs/interfaces/PythPriceFeedIDItem.html +++ b/docs/interfaces/PythPriceFeedIDItem.html @@ -1,3 +1,3 @@ -PythPriceFeedIDItem | solana-agent-kit

    Interface PythPriceFeedIDItem

    interface PythPriceFeedIDItem {
        attributes: { asset_type: string; base: string };
        id: string;
    }

    Properties

    attributes +PythPriceFeedIDItem | solana-agent-kit

    Interface PythPriceFeedIDItem

    interface PythPriceFeedIDItem {
        attributes: { asset_type: string; base: string };
        id: string;
    }

    Properties

    Properties

    attributes: { asset_type: string; base: string }
    id: string
    +

    Properties

    attributes: { asset_type: string; base: string }
    id: string
    diff --git a/docs/interfaces/PythPriceItem.html b/docs/interfaces/PythPriceItem.html index 057c0e6..654d669 100644 --- a/docs/interfaces/PythPriceItem.html +++ b/docs/interfaces/PythPriceItem.html @@ -1,3 +1,3 @@ -PythPriceItem | solana-agent-kit

    Interface PythPriceItem

    interface PythPriceItem {
        binary: { data: string[]; encoding: string };
        parsed: [
            {
                ema_price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
                id: string;
                metadata: {
                    prev_publish_time: number;
                    proof_available_time: number;
                    slot: number;
                };
                price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
            }[],
        ];
    }

    Properties

    binary +PythPriceItem | solana-agent-kit

    Interface PythPriceItem

    interface PythPriceItem {
        binary: { data: string[]; encoding: string };
        parsed: [
            {
                ema_price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
                id: string;
                metadata: {
                    prev_publish_time: number;
                    proof_available_time: number;
                    slot: number;
                };
                price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
            }[],
        ];
    }

    Properties

    Properties

    binary: { data: string[]; encoding: string }
    parsed: [
        {
            ema_price: {
                conf: string;
                expo: number;
                price: string;
                publish_time: number;
            };
            id: string;
            metadata: {
                prev_publish_time: number;
                proof_available_time: number;
                slot: number;
            };
            price: { conf: string; expo: number; price: string; publish_time: number };
        }[],
    ]
    +

    Properties

    binary: { data: string[]; encoding: string }
    parsed: [
        {
            ema_price: {
                conf: string;
                expo: number;
                price: string;
                publish_time: number;
            };
            id: string;
            metadata: {
                prev_publish_time: number;
                proof_available_time: number;
                slot: number;
            };
            price: { conf: string; expo: number; price: string; publish_time: number };
        }[],
    ]
    diff --git a/docs/interfaces/TokenCheck.html b/docs/interfaces/TokenCheck.html index 22b417b..5f81eff 100644 --- a/docs/interfaces/TokenCheck.html +++ b/docs/interfaces/TokenCheck.html @@ -1,5 +1,5 @@ -TokenCheck | solana-agent-kit

    Interface TokenCheck

    interface TokenCheck {
        risks: {
            description: string;
            level: string;
            name: string;
            score: number;
        }[];
        score: number;
        tokenProgram: string;
        tokenType: string;
    }

    Properties

    risks +TokenCheck | solana-agent-kit

    Interface TokenCheck

    interface TokenCheck {
        risks: {
            description: string;
            level: string;
            name: string;
            score: number;
        }[];
        score: number;
        tokenProgram: string;
        tokenType: string;
    }

    Properties

    risks: { description: string; level: string; name: string; score: number }[]
    score: number
    tokenProgram: string
    tokenType: string
    +

    Properties

    risks: { description: string; level: string; name: string; score: number }[]
    score: number
    tokenProgram: string
    tokenType: string
    diff --git a/docs/types/Handler.html b/docs/types/Handler.html index 68daef5..b938cf0 100644 --- a/docs/types/Handler.html +++ b/docs/types/Handler.html @@ -1,2 +1,2 @@ Handler | solana-agent-kit

    Type Alias Handler

    Handler: (
        agent: SolanaAgentKit,
        input: Record<string, any>,
    ) => Promise<Record<string, any>>

    Handler function type for executing the action

    -

    Type declaration

      • (
            agent: SolanaAgentKit,
            input: Record<string, any>,
        ): Promise<Record<string, any>>
      • Parameters

        Returns Promise<Record<string, any>>

    +

    Type declaration

      • (
            agent: SolanaAgentKit,
            input: Record<string, any>,
        ): Promise<Record<string, any>>
      • Parameters

        Returns Promise<Record<string, any>>

    diff --git a/docs/variables/actions.html b/docs/variables/actions.html index 2046df3..a232923 100644 --- a/docs/variables/actions.html +++ b/docs/variables/actions.html @@ -1 +1 @@ -ACTIONS | solana-agent-kit

    Variable ACTIONSConst

    ACTIONS: {
        BALANCE_ACTION: Action;
        CREATE_GIBWORK_TASK_ACTION: Action;
        CREATE_IMAGE_ACTION: Action;
        CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
        DEPLOY_COLLECTION_ACTION: Action;
        DEPLOY_TOKEN_ACTION: Action;
        FETCH_PRICE_ACTION: Action;
        GET_ALL_DOMAINS_TLDS_ACTION: Action;
        GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
        GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
        GET_OWNED_ALL_DOMAINS_ACTION: Action;
        GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
        GET_PRIMARY_DOMAIN_ACTION: Action;
        GET_TOKEN_DATA_ACTION: Action;
        GET_TPS_ACTION: Action;
        LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
        LEND_ASSET_ACTION: Action;
        MINT_NFT_ACTION: Action;
        PYTH_FETCH_PRICE_ACTION: Action;
        RAYDIUM_CREATE_AMM_V4_ACTION: Action;
        RAYDIUM_CREATE_CPMM_ACTION: Action;
        REGISTER_DOMAIN_ACTION: Action;
        REQUEST_FUNDS_ACTION: Action;
        RESOLVE_DOMAIN_ACTION: Action;
        RESOLVE_SOL_DOMAIN_ACTION: Action;
        STAKE_WITH_JUP_ACTION: Action;
        STAKE_WITH_SOLAYER_ACTION: Action;
        TRADE_ACTION: Action;
        TRANSFER_ACTION: Action;
        WALLET_ADDRESS_ACTION: Action;
    } = ...

    Type declaration

    • BALANCE_ACTION: Action
    • CREATE_GIBWORK_TASK_ACTION: Action
    • CREATE_IMAGE_ACTION: Action
    • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
    • DEPLOY_COLLECTION_ACTION: Action
    • DEPLOY_TOKEN_ACTION: Action
    • FETCH_PRICE_ACTION: Action
    • GET_ALL_DOMAINS_TLDS_ACTION: Action
    • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
    • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
    • GET_OWNED_ALL_DOMAINS_ACTION: Action
    • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
    • GET_PRIMARY_DOMAIN_ACTION: Action
    • GET_TOKEN_DATA_ACTION: Action
    • GET_TPS_ACTION: Action
    • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
    • LEND_ASSET_ACTION: Action
    • MINT_NFT_ACTION: Action
    • PYTH_FETCH_PRICE_ACTION: Action
    • RAYDIUM_CREATE_AMM_V4_ACTION: Action
    • RAYDIUM_CREATE_CPMM_ACTION: Action
    • REGISTER_DOMAIN_ACTION: Action
    • REQUEST_FUNDS_ACTION: Action
    • RESOLVE_DOMAIN_ACTION: Action
    • RESOLVE_SOL_DOMAIN_ACTION: Action
    • STAKE_WITH_JUP_ACTION: Action
    • STAKE_WITH_SOLAYER_ACTION: Action
    • TRADE_ACTION: Action
    • TRANSFER_ACTION: Action
    • WALLET_ADDRESS_ACTION: Action
    +ACTIONS | solana-agent-kit

    Variable ACTIONSConst

    ACTIONS: {
        BALANCE_ACTION: Action;
        CREATE_GIBWORK_TASK_ACTION: Action;
        CREATE_IMAGE_ACTION: Action;
        CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
        DEPLOY_COLLECTION_ACTION: Action;
        DEPLOY_TOKEN_ACTION: Action;
        FETCH_PRICE_ACTION: Action;
        GET_ALL_DOMAINS_TLDS_ACTION: Action;
        GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
        GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
        GET_OWNED_ALL_DOMAINS_ACTION: Action;
        GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
        GET_PRIMARY_DOMAIN_ACTION: Action;
        GET_TOKEN_DATA_ACTION: Action;
        GET_TPS_ACTION: Action;
        LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
        LEND_ASSET_ACTION: Action;
        MINT_NFT_ACTION: Action;
        PYTH_FETCH_PRICE_ACTION: Action;
        RAYDIUM_CREATE_AMM_V4_ACTION: Action;
        RAYDIUM_CREATE_CPMM_ACTION: Action;
        REGISTER_DOMAIN_ACTION: Action;
        REQUEST_FUNDS_ACTION: Action;
        RESOLVE_DOMAIN_ACTION: Action;
        RESOLVE_SOL_DOMAIN_ACTION: Action;
        STAKE_WITH_JUP_ACTION: Action;
        STAKE_WITH_SOLAYER_ACTION: Action;
        TRADE_ACTION: Action;
        TRANSFER_ACTION: Action;
        WALLET_ADDRESS_ACTION: Action;
    } = ...

    Type declaration

    • BALANCE_ACTION: Action
    • CREATE_GIBWORK_TASK_ACTION: Action
    • CREATE_IMAGE_ACTION: Action
    • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
    • DEPLOY_COLLECTION_ACTION: Action
    • DEPLOY_TOKEN_ACTION: Action
    • FETCH_PRICE_ACTION: Action
    • GET_ALL_DOMAINS_TLDS_ACTION: Action
    • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
    • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
    • GET_OWNED_ALL_DOMAINS_ACTION: Action
    • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
    • GET_PRIMARY_DOMAIN_ACTION: Action
    • GET_TOKEN_DATA_ACTION: Action
    • GET_TPS_ACTION: Action
    • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
    • LEND_ASSET_ACTION: Action
    • MINT_NFT_ACTION: Action
    • PYTH_FETCH_PRICE_ACTION: Action
    • RAYDIUM_CREATE_AMM_V4_ACTION: Action
    • RAYDIUM_CREATE_CPMM_ACTION: Action
    • REGISTER_DOMAIN_ACTION: Action
    • REQUEST_FUNDS_ACTION: Action
    • RESOLVE_DOMAIN_ACTION: Action
    • RESOLVE_SOL_DOMAIN_ACTION: Action
    • STAKE_WITH_JUP_ACTION: Action
    • STAKE_WITH_SOLAYER_ACTION: Action
    • TRADE_ACTION: Action
    • TRANSFER_ACTION: Action
    • WALLET_ADDRESS_ACTION: Action
    From 9cb3477831fcaf466453044ec8b3bf1809f8873f Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 5 Jan 2025 15:45:44 +0530 Subject: [PATCH 89/94] chore: husky docs --- .husky/pre-commit | 2 +- docs/classes/SolanaAgentKit.html | 12 ++++++------ docs/functions/createSolanaTools.html | 2 +- docs/functions/createVercelAITools.html | 2 +- docs/functions/executeAction.html | 2 +- docs/functions/findAction.html | 2 +- docs/functions/getActionExamples.html | 2 +- docs/interfaces/Action.html | 14 +++++++------- docs/interfaces/ActionExample.html | 4 ++-- docs/interfaces/BatchOrderPattern.html | 4 ++-- docs/interfaces/CollectionDeployment.html | 4 ++-- docs/interfaces/CollectionOptions.html | 4 ++-- docs/interfaces/Config.html | 4 ++-- docs/interfaces/Creator.html | 4 ++-- docs/interfaces/FetchPriceResponse.html | 4 ++-- docs/interfaces/GibworkCreateTaskReponse.html | 4 ++-- docs/interfaces/JupiterTokenData.html | 4 ++-- docs/interfaces/LuloAccountDetailsResponse.html | 4 ++-- docs/interfaces/MintCollectionNFTResponse.html | 4 ++-- docs/interfaces/OrderParams.html | 4 ++-- docs/interfaces/PumpFunTokenOptions.html | 4 ++-- docs/interfaces/PumpfunLaunchResponse.html | 4 ++-- docs/interfaces/PythFetchPriceResponse.html | 4 ++-- docs/interfaces/PythPriceFeedIDItem.html | 4 ++-- docs/interfaces/PythPriceItem.html | 4 ++-- docs/interfaces/TokenCheck.html | 4 ++-- docs/types/Handler.html | 2 +- docs/variables/actions.html | 2 +- src/actions/pythFetchPrice.ts | 4 +++- 29 files changed, 60 insertions(+), 58 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index d42474c..58ad181 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1 +1 @@ -tsc && lint-staged \ No newline at end of file +pnpm run docs && git add docs/ && tsc && lint-staged \ No newline at end of file diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index 00ab271..149719f 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,7 +1,7 @@ SolanaAgentKit | solana-agent-kit

    Class SolanaAgentKit

    Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, trading and more

    SolanaAgentKit

    -

    Constructors

    Constructors

    Properties

    config connection wallet @@ -65,8 +65,8 @@ Please use the new constructor with Config object instead:

    const agent = new SolanaAgentKit(privateKey, rpcUrl, {
    OPENAI_API_KEY: 'your-key'
    });
    -
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    -
    connection: Connection

    Solana RPC connection

    -
    wallet: Keypair

    Wallet keypair for signing transactions

    -
    wallet_address: PublicKey

    Public key of the wallet

    -

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • tokenSymbol: string

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • quantity: number
      • side: string
      • price: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    +
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    +
    connection: Connection

    Solana RPC connection

    +
    wallet: Keypair

    Wallet keypair for signing transactions

    +
    wallet_address: PublicKey

    Public key of the wallet

    +

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • tokenSymbol: string

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • quantity: number
      • side: string
      • price: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index 6e91e21..62e32dc 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaPerpCloseTradeTool
          | SolanaPerpOpenTradeTool
          | SolanaTradeTool
          | SolanaLimitOrderTool
          | SolanaBatchOrderTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaRestakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
          | SolanaFetchTokenReportSummaryTool
          | SolanaFetchTokenDetailedReportTool
      )[]

    +createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaPerpCloseTradeTool
          | SolanaPerpOpenTradeTool
          | SolanaTradeTool
          | SolanaLimitOrderTool
          | SolanaBatchOrderTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaRestakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
          | SolanaFetchTokenReportSummaryTool
          | SolanaFetchTokenDetailedReportTool
      )[]

    diff --git a/docs/functions/createVercelAITools.html b/docs/functions/createVercelAITools.html index c893d8c..0a4cfc3 100644 --- a/docs/functions/createVercelAITools.html +++ b/docs/functions/createVercelAITools.html @@ -1 +1 @@ -createVercelAITools | solana-agent-kit

    Function createVercelAITools

    +createVercelAITools | solana-agent-kit

    Function createVercelAITools

    diff --git a/docs/functions/executeAction.html b/docs/functions/executeAction.html index e9b5415..97a7bdc 100644 --- a/docs/functions/executeAction.html +++ b/docs/functions/executeAction.html @@ -1,2 +1,2 @@ executeAction | solana-agent-kit

    Function executeAction

    • Execute an action with the given input

      -

      Parameters

      Returns Promise<Record<string, any>>

    +

    Parameters

    Returns Promise<Record<string, any>>

    diff --git a/docs/functions/findAction.html b/docs/functions/findAction.html index fa2a6db..77ebfb5 100644 --- a/docs/functions/findAction.html +++ b/docs/functions/findAction.html @@ -1,2 +1,2 @@ findAction | solana-agent-kit

    Function findAction

    • Find an action by its name or one of its similes

      -

      Parameters

      • query: string

      Returns Action | undefined

    +

    Parameters

    • query: string

    Returns Action | undefined

    diff --git a/docs/functions/getActionExamples.html b/docs/functions/getActionExamples.html index bf34664..2e9477e 100644 --- a/docs/functions/getActionExamples.html +++ b/docs/functions/getActionExamples.html @@ -1,2 +1,2 @@ getActionExamples | solana-agent-kit

    Function getActionExamples

    • Get examples for an action

      -

      Parameters

      • action: Action

      Returns string

    +

    Parameters

    • action: Action

    Returns string

    diff --git a/docs/interfaces/Action.html b/docs/interfaces/Action.html index e119050..5aabff3 100644 --- a/docs/interfaces/Action.html +++ b/docs/interfaces/Action.html @@ -1,16 +1,16 @@ Action | solana-agent-kit

    Interface Action

    Main Action interface inspired by ELIZA This interface makes it easier to implement actions across different frameworks

    -
    interface Action {
        description: string;
        examples: ActionExample[][];
        handler: Handler;
        name: string;
        schema: ZodType;
        similes: string[];
    }

    Properties

    interface Action {
        description: string;
        examples: ActionExample[][];
        handler: Handler;
        name: string;
        schema: ZodType;
        similes: string[];
    }

    Properties

    description: string

    Detailed description of what the action does

    -
    examples: ActionExample[][]

    Array of example inputs and outputs for the action +

    examples: ActionExample[][]

    Array of example inputs and outputs for the action Each inner array represents a group of related examples

    -
    handler: Handler

    Function that executes the action

    -
    name: string

    Unique name of the action

    -
    schema: ZodType

    Zod schema for input validation

    -
    similes: string[]

    Alternative names/phrases that can trigger this action

    -
    +
    handler: Handler

    Function that executes the action

    +
    name: string

    Unique name of the action

    +
    schema: ZodType

    Zod schema for input validation

    +
    similes: string[]

    Alternative names/phrases that can trigger this action

    +
    diff --git a/docs/interfaces/ActionExample.html b/docs/interfaces/ActionExample.html index c87f193..f34c92f 100644 --- a/docs/interfaces/ActionExample.html +++ b/docs/interfaces/ActionExample.html @@ -1,5 +1,5 @@ ActionExample | solana-agent-kit

    Interface ActionExample

    Example of an action with input and output

    -
    interface ActionExample {
        explanation: string;
        input: Record<string, any>;
        output: Record<string, any>;
    }

    Properties

    interface ActionExample {
        explanation: string;
        input: Record<string, any>;
        output: Record<string, any>;
    }

    Properties

    explanation: string
    input: Record<string, any>
    output: Record<string, any>
    +

    Properties

    explanation: string
    input: Record<string, any>
    output: Record<string, any>
    diff --git a/docs/interfaces/BatchOrderPattern.html b/docs/interfaces/BatchOrderPattern.html index e0a23b3..5d5da73 100644 --- a/docs/interfaces/BatchOrderPattern.html +++ b/docs/interfaces/BatchOrderPattern.html @@ -1,7 +1,7 @@ -BatchOrderPattern | solana-agent-kit

    Interface BatchOrderPattern

    interface BatchOrderPattern {
        individualQuantity?: number;
        numberOfOrders?: number;
        priceRange?: { max?: number; min?: number };
        side: string;
        spacing?: { type: "percentage" | "fixed"; value: number };
        totalQuantity?: number;
    }

    Properties

    individualQuantity? +BatchOrderPattern | solana-agent-kit

    Interface BatchOrderPattern

    interface BatchOrderPattern {
        individualQuantity?: number;
        numberOfOrders?: number;
        priceRange?: { max?: number; min?: number };
        side: string;
        spacing?: { type: "percentage" | "fixed"; value: number };
        totalQuantity?: number;
    }

    Properties

    individualQuantity?: number
    numberOfOrders?: number
    priceRange?: { max?: number; min?: number }
    side: string
    spacing?: { type: "percentage" | "fixed"; value: number }
    totalQuantity?: number
    +

    Properties

    individualQuantity?: number
    numberOfOrders?: number
    priceRange?: { max?: number; min?: number }
    side: string
    spacing?: { type: "percentage" | "fixed"; value: number }
    totalQuantity?: number
    diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index c21f473..6d63f5a 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress +CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    +

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index 88a25ce..1dd31ef 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators? +CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    +

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    diff --git a/docs/interfaces/Config.html b/docs/interfaces/Config.html index 4b58b7a..e8ffb49 100644 --- a/docs/interfaces/Config.html +++ b/docs/interfaces/Config.html @@ -1,4 +1,4 @@ -Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS? +Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    +

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index 7bfab7b..4ce2cdc 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    address +Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    Properties

    address: string
    percentage: number
    +

    Properties

    address: string
    percentage: number
    diff --git a/docs/interfaces/FetchPriceResponse.html b/docs/interfaces/FetchPriceResponse.html index e4bdfcb..56c062e 100644 --- a/docs/interfaces/FetchPriceResponse.html +++ b/docs/interfaces/FetchPriceResponse.html @@ -1,6 +1,6 @@ -FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code? +FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    +

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    diff --git a/docs/interfaces/GibworkCreateTaskReponse.html b/docs/interfaces/GibworkCreateTaskReponse.html index 4220fd0..f6970cd 100644 --- a/docs/interfaces/GibworkCreateTaskReponse.html +++ b/docs/interfaces/GibworkCreateTaskReponse.html @@ -1,4 +1,4 @@ -GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature? +GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    +

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    diff --git a/docs/interfaces/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index b7c5c24..5e81a93 100644 --- a/docs/interfaces/JupiterTokenData.html +++ b/docs/interfaces/JupiterTokenData.html @@ -1,4 +1,4 @@ -JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address +JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    +

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index 3b00202..4b755d0 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

    Interface LuloAccountDetailsResponse

    Lulo Account Details response format

    -
    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    +

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index b7256c2..1434d20 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    metadata +MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    Properties

    metadata: PublicKey
    mint: PublicKey
    +

    Properties

    metadata: PublicKey
    mint: PublicKey
    diff --git a/docs/interfaces/OrderParams.html b/docs/interfaces/OrderParams.html index 5b3d147..37eb2da 100644 --- a/docs/interfaces/OrderParams.html +++ b/docs/interfaces/OrderParams.html @@ -1,4 +1,4 @@ -OrderParams | solana-agent-kit

    Interface OrderParams

    interface OrderParams {
        price: number;
        quantity: number;
        side: string;
    }

    Properties

    price +OrderParams | solana-agent-kit

    Interface OrderParams

    interface OrderParams {
        price: number;
        quantity: number;
        side: string;
    }

    Properties

    Properties

    price: number
    quantity: number
    side: string
    +

    Properties

    price: number
    quantity: number
    side: string
    diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html index 9069138..1ab198a 100644 --- a/docs/interfaces/PumpFunTokenOptions.html +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -1,7 +1,7 @@ -PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL? +PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    +

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html index c3f7945..a8b1ca2 100644 --- a/docs/interfaces/PumpfunLaunchResponse.html +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -1,5 +1,5 @@ -PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error? +PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    +

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    diff --git a/docs/interfaces/PythFetchPriceResponse.html b/docs/interfaces/PythFetchPriceResponse.html index eb543b9..dd040f2 100644 --- a/docs/interfaces/PythFetchPriceResponse.html +++ b/docs/interfaces/PythFetchPriceResponse.html @@ -1,7 +1,7 @@ -PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID?: string;
        status: "success" | "error";
        tokenSymbol: string;
    }

    Properties

    code? +PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID?: string;
        status: "success" | "error";
        tokenSymbol: string;
    }

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID?: string
    status: "success" | "error"
    tokenSymbol: string
    +

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID?: string
    status: "success" | "error"
    tokenSymbol: string
    diff --git a/docs/interfaces/PythPriceFeedIDItem.html b/docs/interfaces/PythPriceFeedIDItem.html index 54757dc..a37f6df 100644 --- a/docs/interfaces/PythPriceFeedIDItem.html +++ b/docs/interfaces/PythPriceFeedIDItem.html @@ -1,3 +1,3 @@ -PythPriceFeedIDItem | solana-agent-kit

    Interface PythPriceFeedIDItem

    interface PythPriceFeedIDItem {
        attributes: { asset_type: string; base: string };
        id: string;
    }

    Properties

    attributes +PythPriceFeedIDItem | solana-agent-kit

    Interface PythPriceFeedIDItem

    interface PythPriceFeedIDItem {
        attributes: { asset_type: string; base: string };
        id: string;
    }

    Properties

    Properties

    attributes: { asset_type: string; base: string }
    id: string
    +

    Properties

    attributes: { asset_type: string; base: string }
    id: string
    diff --git a/docs/interfaces/PythPriceItem.html b/docs/interfaces/PythPriceItem.html index 654d669..ea18d2c 100644 --- a/docs/interfaces/PythPriceItem.html +++ b/docs/interfaces/PythPriceItem.html @@ -1,3 +1,3 @@ -PythPriceItem | solana-agent-kit

    Interface PythPriceItem

    interface PythPriceItem {
        binary: { data: string[]; encoding: string };
        parsed: [
            {
                ema_price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
                id: string;
                metadata: {
                    prev_publish_time: number;
                    proof_available_time: number;
                    slot: number;
                };
                price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
            }[],
        ];
    }

    Properties

    binary +PythPriceItem | solana-agent-kit

    Interface PythPriceItem

    interface PythPriceItem {
        binary: { data: string[]; encoding: string };
        parsed: [
            {
                ema_price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
                id: string;
                metadata: {
                    prev_publish_time: number;
                    proof_available_time: number;
                    slot: number;
                };
                price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
            }[],
        ];
    }

    Properties

    Properties

    binary: { data: string[]; encoding: string }
    parsed: [
        {
            ema_price: {
                conf: string;
                expo: number;
                price: string;
                publish_time: number;
            };
            id: string;
            metadata: {
                prev_publish_time: number;
                proof_available_time: number;
                slot: number;
            };
            price: { conf: string; expo: number; price: string; publish_time: number };
        }[],
    ]
    +

    Properties

    binary: { data: string[]; encoding: string }
    parsed: [
        {
            ema_price: {
                conf: string;
                expo: number;
                price: string;
                publish_time: number;
            };
            id: string;
            metadata: {
                prev_publish_time: number;
                proof_available_time: number;
                slot: number;
            };
            price: { conf: string; expo: number; price: string; publish_time: number };
        }[],
    ]
    diff --git a/docs/interfaces/TokenCheck.html b/docs/interfaces/TokenCheck.html index 5f81eff..93f9306 100644 --- a/docs/interfaces/TokenCheck.html +++ b/docs/interfaces/TokenCheck.html @@ -1,5 +1,5 @@ -TokenCheck | solana-agent-kit

    Interface TokenCheck

    interface TokenCheck {
        risks: {
            description: string;
            level: string;
            name: string;
            score: number;
        }[];
        score: number;
        tokenProgram: string;
        tokenType: string;
    }

    Properties

    risks +TokenCheck | solana-agent-kit

    Interface TokenCheck

    interface TokenCheck {
        risks: {
            description: string;
            level: string;
            name: string;
            score: number;
        }[];
        score: number;
        tokenProgram: string;
        tokenType: string;
    }

    Properties

    risks: { description: string; level: string; name: string; score: number }[]
    score: number
    tokenProgram: string
    tokenType: string
    +

    Properties

    risks: { description: string; level: string; name: string; score: number }[]
    score: number
    tokenProgram: string
    tokenType: string
    diff --git a/docs/types/Handler.html b/docs/types/Handler.html index b938cf0..6076f3e 100644 --- a/docs/types/Handler.html +++ b/docs/types/Handler.html @@ -1,2 +1,2 @@ Handler | solana-agent-kit

    Type Alias Handler

    Handler: (
        agent: SolanaAgentKit,
        input: Record<string, any>,
    ) => Promise<Record<string, any>>

    Handler function type for executing the action

    -

    Type declaration

      • (
            agent: SolanaAgentKit,
            input: Record<string, any>,
        ): Promise<Record<string, any>>
      • Parameters

        Returns Promise<Record<string, any>>

    +

    Type declaration

      • (
            agent: SolanaAgentKit,
            input: Record<string, any>,
        ): Promise<Record<string, any>>
      • Parameters

        Returns Promise<Record<string, any>>

    diff --git a/docs/variables/actions.html b/docs/variables/actions.html index a232923..10cd80e 100644 --- a/docs/variables/actions.html +++ b/docs/variables/actions.html @@ -1 +1 @@ -ACTIONS | solana-agent-kit

    Variable ACTIONSConst

    ACTIONS: {
        BALANCE_ACTION: Action;
        CREATE_GIBWORK_TASK_ACTION: Action;
        CREATE_IMAGE_ACTION: Action;
        CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
        DEPLOY_COLLECTION_ACTION: Action;
        DEPLOY_TOKEN_ACTION: Action;
        FETCH_PRICE_ACTION: Action;
        GET_ALL_DOMAINS_TLDS_ACTION: Action;
        GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
        GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
        GET_OWNED_ALL_DOMAINS_ACTION: Action;
        GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
        GET_PRIMARY_DOMAIN_ACTION: Action;
        GET_TOKEN_DATA_ACTION: Action;
        GET_TPS_ACTION: Action;
        LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
        LEND_ASSET_ACTION: Action;
        MINT_NFT_ACTION: Action;
        PYTH_FETCH_PRICE_ACTION: Action;
        RAYDIUM_CREATE_AMM_V4_ACTION: Action;
        RAYDIUM_CREATE_CPMM_ACTION: Action;
        REGISTER_DOMAIN_ACTION: Action;
        REQUEST_FUNDS_ACTION: Action;
        RESOLVE_DOMAIN_ACTION: Action;
        RESOLVE_SOL_DOMAIN_ACTION: Action;
        STAKE_WITH_JUP_ACTION: Action;
        STAKE_WITH_SOLAYER_ACTION: Action;
        TRADE_ACTION: Action;
        TRANSFER_ACTION: Action;
        WALLET_ADDRESS_ACTION: Action;
    } = ...

    Type declaration

    • BALANCE_ACTION: Action
    • CREATE_GIBWORK_TASK_ACTION: Action
    • CREATE_IMAGE_ACTION: Action
    • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
    • DEPLOY_COLLECTION_ACTION: Action
    • DEPLOY_TOKEN_ACTION: Action
    • FETCH_PRICE_ACTION: Action
    • GET_ALL_DOMAINS_TLDS_ACTION: Action
    • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
    • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
    • GET_OWNED_ALL_DOMAINS_ACTION: Action
    • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
    • GET_PRIMARY_DOMAIN_ACTION: Action
    • GET_TOKEN_DATA_ACTION: Action
    • GET_TPS_ACTION: Action
    • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
    • LEND_ASSET_ACTION: Action
    • MINT_NFT_ACTION: Action
    • PYTH_FETCH_PRICE_ACTION: Action
    • RAYDIUM_CREATE_AMM_V4_ACTION: Action
    • RAYDIUM_CREATE_CPMM_ACTION: Action
    • REGISTER_DOMAIN_ACTION: Action
    • REQUEST_FUNDS_ACTION: Action
    • RESOLVE_DOMAIN_ACTION: Action
    • RESOLVE_SOL_DOMAIN_ACTION: Action
    • STAKE_WITH_JUP_ACTION: Action
    • STAKE_WITH_SOLAYER_ACTION: Action
    • TRADE_ACTION: Action
    • TRANSFER_ACTION: Action
    • WALLET_ADDRESS_ACTION: Action
    +ACTIONS | solana-agent-kit

    Variable ACTIONSConst

    ACTIONS: {
        BALANCE_ACTION: Action;
        CREATE_GIBWORK_TASK_ACTION: Action;
        CREATE_IMAGE_ACTION: Action;
        CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
        DEPLOY_COLLECTION_ACTION: Action;
        DEPLOY_TOKEN_ACTION: Action;
        FETCH_PRICE_ACTION: Action;
        GET_ALL_DOMAINS_TLDS_ACTION: Action;
        GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
        GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
        GET_OWNED_ALL_DOMAINS_ACTION: Action;
        GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
        GET_PRIMARY_DOMAIN_ACTION: Action;
        GET_TOKEN_DATA_ACTION: Action;
        GET_TPS_ACTION: Action;
        LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
        LEND_ASSET_ACTION: Action;
        MINT_NFT_ACTION: Action;
        PYTH_FETCH_PRICE_ACTION: Action;
        RAYDIUM_CREATE_AMM_V4_ACTION: Action;
        RAYDIUM_CREATE_CPMM_ACTION: Action;
        REGISTER_DOMAIN_ACTION: Action;
        REQUEST_FUNDS_ACTION: Action;
        RESOLVE_DOMAIN_ACTION: Action;
        RESOLVE_SOL_DOMAIN_ACTION: Action;
        STAKE_WITH_JUP_ACTION: Action;
        STAKE_WITH_SOLAYER_ACTION: Action;
        TRADE_ACTION: Action;
        TRANSFER_ACTION: Action;
        WALLET_ADDRESS_ACTION: Action;
    } = ...

    Type declaration

    • BALANCE_ACTION: Action
    • CREATE_GIBWORK_TASK_ACTION: Action
    • CREATE_IMAGE_ACTION: Action
    • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
    • DEPLOY_COLLECTION_ACTION: Action
    • DEPLOY_TOKEN_ACTION: Action
    • FETCH_PRICE_ACTION: Action
    • GET_ALL_DOMAINS_TLDS_ACTION: Action
    • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
    • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
    • GET_OWNED_ALL_DOMAINS_ACTION: Action
    • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
    • GET_PRIMARY_DOMAIN_ACTION: Action
    • GET_TOKEN_DATA_ACTION: Action
    • GET_TPS_ACTION: Action
    • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
    • LEND_ASSET_ACTION: Action
    • MINT_NFT_ACTION: Action
    • PYTH_FETCH_PRICE_ACTION: Action
    • RAYDIUM_CREATE_AMM_V4_ACTION: Action
    • RAYDIUM_CREATE_CPMM_ACTION: Action
    • REGISTER_DOMAIN_ACTION: Action
    • REQUEST_FUNDS_ACTION: Action
    • RESOLVE_DOMAIN_ACTION: Action
    • RESOLVE_SOL_DOMAIN_ACTION: Action
    • STAKE_WITH_JUP_ACTION: Action
    • STAKE_WITH_SOLAYER_ACTION: Action
    • TRADE_ACTION: Action
    • TRANSFER_ACTION: Action
    • WALLET_ADDRESS_ACTION: Action
    diff --git a/src/actions/pythFetchPrice.ts b/src/actions/pythFetchPrice.ts index b25dbba..d9f7ae4 100644 --- a/src/actions/pythFetchPrice.ts +++ b/src/actions/pythFetchPrice.ts @@ -37,7 +37,9 @@ const pythFetchPriceAction: Action = { }), handler: async (_agent: SolanaAgentKit, input: Record) => { try { - const priceFeedId = await fetchPythPriceFeedID(input.tokenSymbol); + const priceFeedId = await fetchPythPriceFeedID( + input.tokenSymbol as string, + ); const priceStr = await fetchPythPrice(priceFeedId); From 8af1b22e9158b4640100e34dcd9b12f958d8e538 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 5 Jan 2025 16:09:00 +0530 Subject: [PATCH 90/94] fix: install pnpm --- .github/workflows/build.yml | 15 +++++++++++---- docs/classes/SolanaAgentKit.html | 12 ++++++------ docs/functions/createSolanaTools.html | 2 +- docs/functions/createVercelAITools.html | 2 +- docs/functions/executeAction.html | 2 +- docs/functions/findAction.html | 2 +- docs/functions/getActionExamples.html | 2 +- docs/interfaces/Action.html | 14 +++++++------- docs/interfaces/ActionExample.html | 4 ++-- docs/interfaces/BatchOrderPattern.html | 4 ++-- docs/interfaces/CollectionDeployment.html | 4 ++-- docs/interfaces/CollectionOptions.html | 4 ++-- docs/interfaces/Config.html | 4 ++-- docs/interfaces/Creator.html | 4 ++-- docs/interfaces/FetchPriceResponse.html | 4 ++-- docs/interfaces/GibworkCreateTaskReponse.html | 4 ++-- docs/interfaces/JupiterTokenData.html | 4 ++-- docs/interfaces/LuloAccountDetailsResponse.html | 4 ++-- docs/interfaces/MintCollectionNFTResponse.html | 4 ++-- docs/interfaces/OrderParams.html | 4 ++-- docs/interfaces/PumpFunTokenOptions.html | 4 ++-- docs/interfaces/PumpfunLaunchResponse.html | 4 ++-- docs/interfaces/PythFetchPriceResponse.html | 4 ++-- docs/interfaces/PythPriceFeedIDItem.html | 4 ++-- docs/interfaces/PythPriceItem.html | 4 ++-- docs/interfaces/TokenCheck.html | 4 ++-- docs/types/Handler.html | 2 +- docs/variables/actions.html | 2 +- 28 files changed, 67 insertions(+), 60 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8917bd9..4b967a1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,14 @@ jobs: node-version: ${{ matrix.node-version }} cache: 'pnpm' cache-dependency-path: pnpm-lock.json - - run: pnpm install - - run: pnpm run lint - - run: pnpm run build - # - run: pnpm run test # TODO: add mock env for testing \ No newline at end of file + - name: Install pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + - name: Install dependencies + run: pnpm install + - name: Run lint + run: pnpm run lint + - name: Run build + run: pnpm run build + # - run: pnpm run test # TODO: add mock env for testing diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index 149719f..f0aebb1 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,7 +1,7 @@ SolanaAgentKit | solana-agent-kit

    Class SolanaAgentKit

    Main class for interacting with Solana blockchain Provides a unified interface for token operations, NFT management, trading and more

    SolanaAgentKit

    -

    Constructors

    Constructors

    Properties

    config connection wallet @@ -65,8 +65,8 @@ Please use the new constructor with Config object instead:

    const agent = new SolanaAgentKit(privateKey, rpcUrl, {
    OPENAI_API_KEY: 'your-key'
    });
    -
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    -
    connection: Connection

    Solana RPC connection

    -
    wallet: Keypair

    Wallet keypair for signing transactions

    -
    wallet_address: PublicKey

    Public key of the wallet

    -

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • tokenSymbol: string

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • quantity: number
      • side: string
      • price: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    +
  • Parameters

    • private_key: string
    • rpc_url: string
    • config: Config

    Returns SolanaAgentKit

  • Properties

    config: Config

    Configuration object

    +
    connection: Connection

    Solana RPC connection

    +
    wallet: Keypair

    Wallet keypair for signing transactions

    +
    wallet_address: PublicKey

    Public key of the wallet

    +

    Methods

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • args: Omit<{ agent: SolanaAgentKit; price: number; tradeMint: PublicKey }, "agent">

      Returns Promise<string>

    • Parameters

      • title: string
      • content: string
      • requirements: string
      • tags: string[]
      • tokenMintAddress: string
      • tokenAmount: number
      • Optionalpayer: string

      Returns Promise<GibworkCreateTaskReponse>

    • Parameters

      • amount: number
      • OptionalsplmintAddress: PublicKey

      Returns Promise<{ signature: string; url: string }>

    • Parameters

      • name: string
      • uri: string
      • symbol: string
      • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS
      • OptionalinitialSupply: number

      Returns Promise<{ mint: PublicKey }>

    • Parameters

      • mint: string

      Returns Promise<string>

    • Returns Promise<string[]>

    • Returns Promise<string[]>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • Parameters

      • walletAddress: PublicKey
      • OptionaltokenAddress: PublicKey

      Returns Promise<number>

    • Parameters

      • owner: PublicKey

      Returns Promise<null | string>

    • Parameters

      • owner: PublicKey

      Returns Promise<string[]>

    • Parameters

      • tld: string

      Returns Promise<string[]>

    • Parameters

      • account: PublicKey

      Returns Promise<string>

    • Parameters

      • priceFeedID: string

      Returns Promise<string>

    • Parameters

      • tokenSymbol: string

      Returns Promise<string>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • quantity: number
      • side: string
      • price: number

      Returns Promise<string>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey

      Returns Promise<string[]>

    • Parameters

      • collectionMint: PublicKey
      • metadata: {
            creators?: { address: string; share: number }[];
            name: string;
            sellerFeeBasisPoints?: number;
            uri: string;
        }
      • Optionalrecipient: PublicKey

      Returns Promise<MintCollectionNFTResponse>

    • Parameters

      • baseMint: PublicKey
      • quoteMint: PublicKey
      • lotSize: number = 1
      • tickSize: number = 0.01

      Returns Promise<string[]>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • args: Omit<
            {
                agent: SolanaAgentKit;
                collateralAmount: number;
                collateralMint?: PublicKey;
                leverage?: number;
                price: number;
                slippage?: number;
                tradeMint?: PublicKey;
            },
            "agent",
        >

      Returns Promise<string>

    • Parameters

      • positionMintAddress: PublicKey

      Returns Promise<string>

    • Parameters

      • mintDeploy: PublicKey
      • mintPair: PublicKey
      • initialPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • depositTokenAmount: number
      • depositTokenMint: PublicKey
      • otherTokenMint: PublicKey
      • initialPrice: Decimal
      • maxPrice: Decimal
      • feeTier: 1 | 2 | 4 | 5 | 16 | 30 | 65 | 100 | 200

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • priceOffsetBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • whirlpoolAddress: PublicKey
      • distanceFromCurrentPriceBps: number
      • widthBps: number
      • inputTokenMint: PublicKey
      • inputAmount: Decimal

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey
      • baseAmount: BN
      • quoteAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • initialPrice: Decimal
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • mint1: PublicKey
      • mint2: PublicKey
      • configId: PublicKey
      • mintAAmount: BN
      • mintBAmount: BN
      • startTime: BN

      Returns Promise<string>

    • Parameters

      • name: string
      • OptionalspaceKB: number

      Returns Promise<string>

    • Parameters

      • domain: string

      Returns Promise<undefined | PublicKey>

    • Parameters

      • domain: string

      Returns Promise<PublicKey>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • amount: number
      • choice: "rock" | "paper" | "scissors"

      Returns Promise<string>

    • Parameters

      • mintAddress: string
      • amount: number
      • decimals: number
      • recipients: string[]
      • priorityFeeInLamports: number
      • shouldLog: boolean

      Returns Promise<string[]>

    • Parameters

      • amount: number

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey

      Returns Promise<string>

    • Parameters

      • nftMint: PublicKey
      • price: number

      Returns Promise<string>

    • Parameters

      • outputMint: PublicKey
      • inputAmount: number
      • OptionalinputMint: PublicKey
      • slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS

      Returns Promise<string>

    • Parameters

      • to: PublicKey
      • amount: number
      • Optionalmint: PublicKey

      Returns Promise<string>

    • Parameters

      • marketId: PublicKey

      Returns Promise<string>

    diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index 62e32dc..69f6cbd 100644 --- a/docs/functions/createSolanaTools.html +++ b/docs/functions/createSolanaTools.html @@ -1 +1 @@ -createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaPerpCloseTradeTool
          | SolanaPerpOpenTradeTool
          | SolanaTradeTool
          | SolanaLimitOrderTool
          | SolanaBatchOrderTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaRestakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
          | SolanaFetchTokenReportSummaryTool
          | SolanaFetchTokenDetailedReportTool
      )[]

    +createSolanaTools | solana-agent-kit

    Function createSolanaTools

    • Parameters

      Returns (
          | SolanaBalanceTool
          | SolanaBalanceOtherTool
          | SolanaTransferTool
          | SolanaDeployTokenTool
          | SolanaDeployCollectionTool
          | SolanaMintNFTTool
          | SolanaPerpCloseTradeTool
          | SolanaPerpOpenTradeTool
          | SolanaTradeTool
          | SolanaLimitOrderTool
          | SolanaBatchOrderTool
          | SolanaCancelAllOrdersTool
          | SolanaWithdrawAllTool
          | SolanaRequestFundsTool
          | SolanaRegisterDomainTool
          | SolanaResolveDomainTool
          | SolanaGetDomainTool
          | SolanaGetWalletAddressTool
          | SolanaPumpfunTokenLaunchTool
          | SolanaCreateImageTool
          | SolanaLendAssetTool
          | SolanaTPSCalculatorTool
          | SolanaStakeTool
          | SolanaRestakeTool
          | SolanaFetchPriceTool
          | SolanaTokenDataTool
          | SolanaTokenDataByTickerTool
          | SolanaCompressedAirdropTool
          | SolanaClosePosition
          | SolanaOrcaCreateCLMM
          | SolanaOrcaCreateSingleSideLiquidityPool
          | SolanaOrcaFetchPositions
          | SolanaOrcaOpenCenteredPosition
          | SolanaOrcaOpenSingleSidedPosition
          | SolanaRaydiumCreateAmmV4
          | SolanaRaydiumCreateClmm
          | SolanaRaydiumCreateCpmm
          | SolanaOpenbookCreateMarket
          | SolanaManifestCreateMarket
          | SolanaPythFetchPrice
          | SolanaResolveAllDomainsTool
          | SolanaGetOwnedDomains
          | SolanaGetOwnedTldDomains
          | SolanaGetAllTlds
          | SolanaGetMainDomain
          | SolanaCreateGibworkTask
          | SolanaRockPaperScissorsTool
          | SolanaTipLinkTool
          | SolanaListNFTForSaleTool
          | SolanaCancelNFTListingTool
          | SolanaFetchTokenReportSummaryTool
          | SolanaFetchTokenDetailedReportTool
      )[]

    diff --git a/docs/functions/createVercelAITools.html b/docs/functions/createVercelAITools.html index 0a4cfc3..17d1f55 100644 --- a/docs/functions/createVercelAITools.html +++ b/docs/functions/createVercelAITools.html @@ -1 +1 @@ -createVercelAITools | solana-agent-kit

    Function createVercelAITools

    +createVercelAITools | solana-agent-kit

    Function createVercelAITools

    diff --git a/docs/functions/executeAction.html b/docs/functions/executeAction.html index 97a7bdc..06d59ce 100644 --- a/docs/functions/executeAction.html +++ b/docs/functions/executeAction.html @@ -1,2 +1,2 @@ executeAction | solana-agent-kit

    Function executeAction

    • Execute an action with the given input

      -

      Parameters

      Returns Promise<Record<string, any>>

    +

    Parameters

    Returns Promise<Record<string, any>>

    diff --git a/docs/functions/findAction.html b/docs/functions/findAction.html index 77ebfb5..d525326 100644 --- a/docs/functions/findAction.html +++ b/docs/functions/findAction.html @@ -1,2 +1,2 @@ findAction | solana-agent-kit

    Function findAction

    • Find an action by its name or one of its similes

      -

      Parameters

      • query: string

      Returns Action | undefined

    +

    Parameters

    • query: string

    Returns Action | undefined

    diff --git a/docs/functions/getActionExamples.html b/docs/functions/getActionExamples.html index 2e9477e..57fa5b3 100644 --- a/docs/functions/getActionExamples.html +++ b/docs/functions/getActionExamples.html @@ -1,2 +1,2 @@ getActionExamples | solana-agent-kit

    Function getActionExamples

    • Get examples for an action

      -

      Parameters

      • action: Action

      Returns string

    +

    Parameters

    • action: Action

    Returns string

    diff --git a/docs/interfaces/Action.html b/docs/interfaces/Action.html index 5aabff3..23e24a4 100644 --- a/docs/interfaces/Action.html +++ b/docs/interfaces/Action.html @@ -1,16 +1,16 @@ Action | solana-agent-kit

    Interface Action

    Main Action interface inspired by ELIZA This interface makes it easier to implement actions across different frameworks

    -
    interface Action {
        description: string;
        examples: ActionExample[][];
        handler: Handler;
        name: string;
        schema: ZodType;
        similes: string[];
    }

    Properties

    interface Action {
        description: string;
        examples: ActionExample[][];
        handler: Handler;
        name: string;
        schema: ZodType;
        similes: string[];
    }

    Properties

    description: string

    Detailed description of what the action does

    -
    examples: ActionExample[][]

    Array of example inputs and outputs for the action +

    examples: ActionExample[][]

    Array of example inputs and outputs for the action Each inner array represents a group of related examples

    -
    handler: Handler

    Function that executes the action

    -
    name: string

    Unique name of the action

    -
    schema: ZodType

    Zod schema for input validation

    -
    similes: string[]

    Alternative names/phrases that can trigger this action

    -
    +
    handler: Handler

    Function that executes the action

    +
    name: string

    Unique name of the action

    +
    schema: ZodType

    Zod schema for input validation

    +
    similes: string[]

    Alternative names/phrases that can trigger this action

    +
    diff --git a/docs/interfaces/ActionExample.html b/docs/interfaces/ActionExample.html index f34c92f..2377d21 100644 --- a/docs/interfaces/ActionExample.html +++ b/docs/interfaces/ActionExample.html @@ -1,5 +1,5 @@ ActionExample | solana-agent-kit

    Interface ActionExample

    Example of an action with input and output

    -
    interface ActionExample {
        explanation: string;
        input: Record<string, any>;
        output: Record<string, any>;
    }

    Properties

    interface ActionExample {
        explanation: string;
        input: Record<string, any>;
        output: Record<string, any>;
    }

    Properties

    explanation: string
    input: Record<string, any>
    output: Record<string, any>
    +

    Properties

    explanation: string
    input: Record<string, any>
    output: Record<string, any>
    diff --git a/docs/interfaces/BatchOrderPattern.html b/docs/interfaces/BatchOrderPattern.html index 5d5da73..eee6848 100644 --- a/docs/interfaces/BatchOrderPattern.html +++ b/docs/interfaces/BatchOrderPattern.html @@ -1,7 +1,7 @@ -BatchOrderPattern | solana-agent-kit

    Interface BatchOrderPattern

    interface BatchOrderPattern {
        individualQuantity?: number;
        numberOfOrders?: number;
        priceRange?: { max?: number; min?: number };
        side: string;
        spacing?: { type: "percentage" | "fixed"; value: number };
        totalQuantity?: number;
    }

    Properties

    individualQuantity? +BatchOrderPattern | solana-agent-kit

    Interface BatchOrderPattern

    interface BatchOrderPattern {
        individualQuantity?: number;
        numberOfOrders?: number;
        priceRange?: { max?: number; min?: number };
        side: string;
        spacing?: { type: "percentage" | "fixed"; value: number };
        totalQuantity?: number;
    }

    Properties

    individualQuantity?: number
    numberOfOrders?: number
    priceRange?: { max?: number; min?: number }
    side: string
    spacing?: { type: "percentage" | "fixed"; value: number }
    totalQuantity?: number
    +

    Properties

    individualQuantity?: number
    numberOfOrders?: number
    priceRange?: { max?: number; min?: number }
    side: string
    spacing?: { type: "percentage" | "fixed"; value: number }
    totalQuantity?: number
    diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index 6d63f5a..c35a066 100644 --- a/docs/interfaces/CollectionDeployment.html +++ b/docs/interfaces/CollectionDeployment.html @@ -1,3 +1,3 @@ -CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress +CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

    interface CollectionDeployment {
        collectionAddress: PublicKey;
        signature: Uint8Array;
    }

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    +

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array
    diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index 1dd31ef..1861667 100644 --- a/docs/interfaces/CollectionOptions.html +++ b/docs/interfaces/CollectionOptions.html @@ -1,5 +1,5 @@ -CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators? +CollectionOptions | solana-agent-kit

    Interface CollectionOptions

    interface CollectionOptions {
        creators?: Creator[];
        name: string;
        royaltyBasisPoints?: number;
        uri: string;
    }

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    +

    Properties

    creators?: Creator[]
    name: string
    royaltyBasisPoints?: number
    uri: string
    diff --git a/docs/interfaces/Config.html b/docs/interfaces/Config.html index e8ffb49..de80422 100644 --- a/docs/interfaces/Config.html +++ b/docs/interfaces/Config.html @@ -1,4 +1,4 @@ -Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS? +Config | solana-agent-kit

    Interface Config

    interface Config {
        JUPITER_FEE_BPS?: number;
        JUPITER_REFERRAL_ACCOUNT?: string;
        OPENAI_API_KEY?: string;
    }

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    +

    Properties

    JUPITER_FEE_BPS?: number
    JUPITER_REFERRAL_ACCOUNT?: string
    OPENAI_API_KEY?: string
    diff --git a/docs/interfaces/Creator.html b/docs/interfaces/Creator.html index 4ce2cdc..d4e44be 100644 --- a/docs/interfaces/Creator.html +++ b/docs/interfaces/Creator.html @@ -1,3 +1,3 @@ -Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    address +Creator | solana-agent-kit

    Interface Creator

    interface Creator {
        address: string;
        percentage: number;
    }

    Properties

    Properties

    address: string
    percentage: number
    +

    Properties

    address: string
    percentage: number
    diff --git a/docs/interfaces/FetchPriceResponse.html b/docs/interfaces/FetchPriceResponse.html index 56c062e..33ede0e 100644 --- a/docs/interfaces/FetchPriceResponse.html +++ b/docs/interfaces/FetchPriceResponse.html @@ -1,6 +1,6 @@ -FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code? +FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

    interface FetchPriceResponse {
        code?: string;
        message?: string;
        priceInUSDC?: string;
        status: "success" | "error";
        tokenId?: string;
    }

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    +

    Properties

    code?: string
    message?: string
    priceInUSDC?: string
    status: "success" | "error"
    tokenId?: string
    diff --git a/docs/interfaces/GibworkCreateTaskReponse.html b/docs/interfaces/GibworkCreateTaskReponse.html index f6970cd..3d19c9a 100644 --- a/docs/interfaces/GibworkCreateTaskReponse.html +++ b/docs/interfaces/GibworkCreateTaskReponse.html @@ -1,4 +1,4 @@ -GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature? +GibworkCreateTaskReponse | solana-agent-kit

    Interface GibworkCreateTaskReponse

    interface GibworkCreateTaskReponse {
        signature?: string;
        status: "success" | "error";
        taskId?: string;
    }

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    +

    Properties

    signature?: string
    status: "success" | "error"
    taskId?: string
    diff --git a/docs/interfaces/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index 5e81a93..2d333d5 100644 --- a/docs/interfaces/JupiterTokenData.html +++ b/docs/interfaces/JupiterTokenData.html @@ -1,4 +1,4 @@ -JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address +JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

    interface JupiterTokenData {
        address: string;
        daily_volume: number;
        decimals: number;
        extensions: { coingeckoId?: string };
        freeze_authority: null | string;
        logoURI: string;
        mint_authority: null | string;
        name: string;
        permanent_delegate: null | string;
        symbol: string;
        tags: string[];
    }

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    +

    Properties

    address: string
    daily_volume: number
    decimals: number
    extensions: { coingeckoId?: string }
    freeze_authority: null | string
    logoURI: string
    mint_authority: null | string
    name: string
    permanent_delegate: null | string
    symbol: string
    tags: string[]
    diff --git a/docs/interfaces/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index 4b755d0..f8b32c0 100644 --- a/docs/interfaces/LuloAccountDetailsResponse.html +++ b/docs/interfaces/LuloAccountDetailsResponse.html @@ -1,6 +1,6 @@ LuloAccountDetailsResponse | solana-agent-kit

    Interface LuloAccountDetailsResponse

    Lulo Account Details response format

    -
    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interface LuloAccountDetailsResponse {
        interestEarned: number;
        realtimeApy: number;
        settings: {
            allowedProtocols: null | string;
            homebase: null | string;
            minimumRate: string;
            owner: string;
        };
        totalValue: number;
    }

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    +

    Properties

    interestEarned: number
    realtimeApy: number
    settings: {
        allowedProtocols: null | string;
        homebase: null | string;
        minimumRate: string;
        owner: string;
    }
    totalValue: number
    diff --git a/docs/interfaces/MintCollectionNFTResponse.html b/docs/interfaces/MintCollectionNFTResponse.html index 1434d20..205dbd5 100644 --- a/docs/interfaces/MintCollectionNFTResponse.html +++ b/docs/interfaces/MintCollectionNFTResponse.html @@ -1,3 +1,3 @@ -MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    metadata +MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

    interface MintCollectionNFTResponse {
        metadata: PublicKey;
        mint: PublicKey;
    }

    Properties

    Properties

    metadata: PublicKey
    mint: PublicKey
    +

    Properties

    metadata: PublicKey
    mint: PublicKey
    diff --git a/docs/interfaces/OrderParams.html b/docs/interfaces/OrderParams.html index 37eb2da..6a6d2bb 100644 --- a/docs/interfaces/OrderParams.html +++ b/docs/interfaces/OrderParams.html @@ -1,4 +1,4 @@ -OrderParams | solana-agent-kit

    Interface OrderParams

    interface OrderParams {
        price: number;
        quantity: number;
        side: string;
    }

    Properties

    price +OrderParams | solana-agent-kit

    Interface OrderParams

    interface OrderParams {
        price: number;
        quantity: number;
        side: string;
    }

    Properties

    Properties

    price: number
    quantity: number
    side: string
    +

    Properties

    price: number
    quantity: number
    side: string
    diff --git a/docs/interfaces/PumpFunTokenOptions.html b/docs/interfaces/PumpFunTokenOptions.html index 1ab198a..3cd7f3b 100644 --- a/docs/interfaces/PumpFunTokenOptions.html +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -1,7 +1,7 @@ -PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL? +PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

    interface PumpFunTokenOptions {
        initialLiquiditySOL?: number;
        priorityFee?: number;
        slippageBps?: number;
        telegram?: string;
        twitter?: string;
        website?: string;
    }

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    +

    Properties

    initialLiquiditySOL?: number
    priorityFee?: number
    slippageBps?: number
    telegram?: string
    twitter?: string
    website?: string
    diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html index a8b1ca2..c9caddc 100644 --- a/docs/interfaces/PumpfunLaunchResponse.html +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -1,5 +1,5 @@ -PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error? +PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

    interface PumpfunLaunchResponse {
        error?: string;
        metadataUri?: string;
        mint: string;
        signature: string;
    }

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    +

    Properties

    error?: string
    metadataUri?: string
    mint: string
    signature: string
    diff --git a/docs/interfaces/PythFetchPriceResponse.html b/docs/interfaces/PythFetchPriceResponse.html index dd040f2..b22faef 100644 --- a/docs/interfaces/PythFetchPriceResponse.html +++ b/docs/interfaces/PythFetchPriceResponse.html @@ -1,7 +1,7 @@ -PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID?: string;
        status: "success" | "error";
        tokenSymbol: string;
    }

    Properties

    code? +PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

    interface PythFetchPriceResponse {
        code?: string;
        message?: string;
        price?: string;
        priceFeedID?: string;
        status: "success" | "error";
        tokenSymbol: string;
    }

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID?: string
    status: "success" | "error"
    tokenSymbol: string
    +

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID?: string
    status: "success" | "error"
    tokenSymbol: string
    diff --git a/docs/interfaces/PythPriceFeedIDItem.html b/docs/interfaces/PythPriceFeedIDItem.html index a37f6df..26c3c7c 100644 --- a/docs/interfaces/PythPriceFeedIDItem.html +++ b/docs/interfaces/PythPriceFeedIDItem.html @@ -1,3 +1,3 @@ -PythPriceFeedIDItem | solana-agent-kit

    Interface PythPriceFeedIDItem

    interface PythPriceFeedIDItem {
        attributes: { asset_type: string; base: string };
        id: string;
    }

    Properties

    attributes +PythPriceFeedIDItem | solana-agent-kit

    Interface PythPriceFeedIDItem

    interface PythPriceFeedIDItem {
        attributes: { asset_type: string; base: string };
        id: string;
    }

    Properties

    Properties

    attributes: { asset_type: string; base: string }
    id: string
    +

    Properties

    attributes: { asset_type: string; base: string }
    id: string
    diff --git a/docs/interfaces/PythPriceItem.html b/docs/interfaces/PythPriceItem.html index ea18d2c..4a8f6bc 100644 --- a/docs/interfaces/PythPriceItem.html +++ b/docs/interfaces/PythPriceItem.html @@ -1,3 +1,3 @@ -PythPriceItem | solana-agent-kit

    Interface PythPriceItem

    interface PythPriceItem {
        binary: { data: string[]; encoding: string };
        parsed: [
            {
                ema_price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
                id: string;
                metadata: {
                    prev_publish_time: number;
                    proof_available_time: number;
                    slot: number;
                };
                price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
            }[],
        ];
    }

    Properties

    binary +PythPriceItem | solana-agent-kit

    Interface PythPriceItem

    interface PythPriceItem {
        binary: { data: string[]; encoding: string };
        parsed: [
            {
                ema_price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
                id: string;
                metadata: {
                    prev_publish_time: number;
                    proof_available_time: number;
                    slot: number;
                };
                price: {
                    conf: string;
                    expo: number;
                    price: string;
                    publish_time: number;
                };
            }[],
        ];
    }

    Properties

    Properties

    binary: { data: string[]; encoding: string }
    parsed: [
        {
            ema_price: {
                conf: string;
                expo: number;
                price: string;
                publish_time: number;
            };
            id: string;
            metadata: {
                prev_publish_time: number;
                proof_available_time: number;
                slot: number;
            };
            price: { conf: string; expo: number; price: string; publish_time: number };
        }[],
    ]
    +

    Properties

    binary: { data: string[]; encoding: string }
    parsed: [
        {
            ema_price: {
                conf: string;
                expo: number;
                price: string;
                publish_time: number;
            };
            id: string;
            metadata: {
                prev_publish_time: number;
                proof_available_time: number;
                slot: number;
            };
            price: { conf: string; expo: number; price: string; publish_time: number };
        }[],
    ]
    diff --git a/docs/interfaces/TokenCheck.html b/docs/interfaces/TokenCheck.html index 93f9306..fae93c8 100644 --- a/docs/interfaces/TokenCheck.html +++ b/docs/interfaces/TokenCheck.html @@ -1,5 +1,5 @@ -TokenCheck | solana-agent-kit

    Interface TokenCheck

    interface TokenCheck {
        risks: {
            description: string;
            level: string;
            name: string;
            score: number;
        }[];
        score: number;
        tokenProgram: string;
        tokenType: string;
    }

    Properties

    risks +TokenCheck | solana-agent-kit

    Interface TokenCheck

    interface TokenCheck {
        risks: {
            description: string;
            level: string;
            name: string;
            score: number;
        }[];
        score: number;
        tokenProgram: string;
        tokenType: string;
    }

    Properties

    risks: { description: string; level: string; name: string; score: number }[]
    score: number
    tokenProgram: string
    tokenType: string
    +

    Properties

    risks: { description: string; level: string; name: string; score: number }[]
    score: number
    tokenProgram: string
    tokenType: string
    diff --git a/docs/types/Handler.html b/docs/types/Handler.html index 6076f3e..fca3028 100644 --- a/docs/types/Handler.html +++ b/docs/types/Handler.html @@ -1,2 +1,2 @@ Handler | solana-agent-kit

    Type Alias Handler

    Handler: (
        agent: SolanaAgentKit,
        input: Record<string, any>,
    ) => Promise<Record<string, any>>

    Handler function type for executing the action

    -

    Type declaration

      • (
            agent: SolanaAgentKit,
            input: Record<string, any>,
        ): Promise<Record<string, any>>
      • Parameters

        Returns Promise<Record<string, any>>

    +

    Type declaration

      • (
            agent: SolanaAgentKit,
            input: Record<string, any>,
        ): Promise<Record<string, any>>
      • Parameters

        Returns Promise<Record<string, any>>

    diff --git a/docs/variables/actions.html b/docs/variables/actions.html index 10cd80e..67af484 100644 --- a/docs/variables/actions.html +++ b/docs/variables/actions.html @@ -1 +1 @@ -ACTIONS | solana-agent-kit

    Variable ACTIONSConst

    ACTIONS: {
        BALANCE_ACTION: Action;
        CREATE_GIBWORK_TASK_ACTION: Action;
        CREATE_IMAGE_ACTION: Action;
        CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
        DEPLOY_COLLECTION_ACTION: Action;
        DEPLOY_TOKEN_ACTION: Action;
        FETCH_PRICE_ACTION: Action;
        GET_ALL_DOMAINS_TLDS_ACTION: Action;
        GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
        GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
        GET_OWNED_ALL_DOMAINS_ACTION: Action;
        GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
        GET_PRIMARY_DOMAIN_ACTION: Action;
        GET_TOKEN_DATA_ACTION: Action;
        GET_TPS_ACTION: Action;
        LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
        LEND_ASSET_ACTION: Action;
        MINT_NFT_ACTION: Action;
        PYTH_FETCH_PRICE_ACTION: Action;
        RAYDIUM_CREATE_AMM_V4_ACTION: Action;
        RAYDIUM_CREATE_CPMM_ACTION: Action;
        REGISTER_DOMAIN_ACTION: Action;
        REQUEST_FUNDS_ACTION: Action;
        RESOLVE_DOMAIN_ACTION: Action;
        RESOLVE_SOL_DOMAIN_ACTION: Action;
        STAKE_WITH_JUP_ACTION: Action;
        STAKE_WITH_SOLAYER_ACTION: Action;
        TRADE_ACTION: Action;
        TRANSFER_ACTION: Action;
        WALLET_ADDRESS_ACTION: Action;
    } = ...

    Type declaration

    • BALANCE_ACTION: Action
    • CREATE_GIBWORK_TASK_ACTION: Action
    • CREATE_IMAGE_ACTION: Action
    • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
    • DEPLOY_COLLECTION_ACTION: Action
    • DEPLOY_TOKEN_ACTION: Action
    • FETCH_PRICE_ACTION: Action
    • GET_ALL_DOMAINS_TLDS_ACTION: Action
    • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
    • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
    • GET_OWNED_ALL_DOMAINS_ACTION: Action
    • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
    • GET_PRIMARY_DOMAIN_ACTION: Action
    • GET_TOKEN_DATA_ACTION: Action
    • GET_TPS_ACTION: Action
    • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
    • LEND_ASSET_ACTION: Action
    • MINT_NFT_ACTION: Action
    • PYTH_FETCH_PRICE_ACTION: Action
    • RAYDIUM_CREATE_AMM_V4_ACTION: Action
    • RAYDIUM_CREATE_CPMM_ACTION: Action
    • REGISTER_DOMAIN_ACTION: Action
    • REQUEST_FUNDS_ACTION: Action
    • RESOLVE_DOMAIN_ACTION: Action
    • RESOLVE_SOL_DOMAIN_ACTION: Action
    • STAKE_WITH_JUP_ACTION: Action
    • STAKE_WITH_SOLAYER_ACTION: Action
    • TRADE_ACTION: Action
    • TRANSFER_ACTION: Action
    • WALLET_ADDRESS_ACTION: Action
    +ACTIONS | solana-agent-kit

    Variable ACTIONSConst

    ACTIONS: {
        BALANCE_ACTION: Action;
        CREATE_GIBWORK_TASK_ACTION: Action;
        CREATE_IMAGE_ACTION: Action;
        CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action;
        DEPLOY_COLLECTION_ACTION: Action;
        DEPLOY_TOKEN_ACTION: Action;
        FETCH_PRICE_ACTION: Action;
        GET_ALL_DOMAINS_TLDS_ACTION: Action;
        GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action;
        GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action;
        GET_OWNED_ALL_DOMAINS_ACTION: Action;
        GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action;
        GET_PRIMARY_DOMAIN_ACTION: Action;
        GET_TOKEN_DATA_ACTION: Action;
        GET_TPS_ACTION: Action;
        LAUNCH_PUMPFUN_TOKEN_ACTION: Action;
        LEND_ASSET_ACTION: Action;
        MINT_NFT_ACTION: Action;
        PYTH_FETCH_PRICE_ACTION: Action;
        RAYDIUM_CREATE_AMM_V4_ACTION: Action;
        RAYDIUM_CREATE_CPMM_ACTION: Action;
        REGISTER_DOMAIN_ACTION: Action;
        REQUEST_FUNDS_ACTION: Action;
        RESOLVE_DOMAIN_ACTION: Action;
        RESOLVE_SOL_DOMAIN_ACTION: Action;
        STAKE_WITH_JUP_ACTION: Action;
        STAKE_WITH_SOLAYER_ACTION: Action;
        TRADE_ACTION: Action;
        TRANSFER_ACTION: Action;
        WALLET_ADDRESS_ACTION: Action;
    } = ...

    Type declaration

    • BALANCE_ACTION: Action
    • CREATE_GIBWORK_TASK_ACTION: Action
    • CREATE_IMAGE_ACTION: Action
    • CREATE_ORCA_SINGLE_SIDED_WHIRLPOOL_ACTION: Action
    • DEPLOY_COLLECTION_ACTION: Action
    • DEPLOY_TOKEN_ACTION: Action
    • FETCH_PRICE_ACTION: Action
    • GET_ALL_DOMAINS_TLDS_ACTION: Action
    • GET_ALL_REGISTERED_ALL_DOMAINS_ACTION: Action
    • GET_MAIN_ALL_DOMAINS_DOMAIN_ACTION: Action
    • GET_OWNED_ALL_DOMAINS_ACTION: Action
    • GET_OWNED_DOMAINS_FOR_TLD_ACTION: Action
    • GET_PRIMARY_DOMAIN_ACTION: Action
    • GET_TOKEN_DATA_ACTION: Action
    • GET_TPS_ACTION: Action
    • LAUNCH_PUMPFUN_TOKEN_ACTION: Action
    • LEND_ASSET_ACTION: Action
    • MINT_NFT_ACTION: Action
    • PYTH_FETCH_PRICE_ACTION: Action
    • RAYDIUM_CREATE_AMM_V4_ACTION: Action
    • RAYDIUM_CREATE_CPMM_ACTION: Action
    • REGISTER_DOMAIN_ACTION: Action
    • REQUEST_FUNDS_ACTION: Action
    • RESOLVE_DOMAIN_ACTION: Action
    • RESOLVE_SOL_DOMAIN_ACTION: Action
    • STAKE_WITH_JUP_ACTION: Action
    • STAKE_WITH_SOLAYER_ACTION: Action
    • TRADE_ACTION: Action
    • TRANSFER_ACTION: Action
    • WALLET_ADDRESS_ACTION: Action
    From 56d638cd9616eaec3eea9d52b8a69e7dd019bc89 Mon Sep 17 00:00:00 2001 From: aryan Date: Sun, 5 Jan 2025 18:20:06 +0530 Subject: [PATCH 91/94] cache pnpm config --- .github/pull_request_template.md | 64 ++++++++++++++++---------------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index ed52648..6952050 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,33 +1,31 @@ -# Pull Request Description - -## Related Issue -Fixes # (issue number) - -## Changes Made -This PR adds the following changes: - -- -- - -## Implementation Details - -- -- - -## Transaction executed by agent - -Example transaction: - -## Prompt Used - -``` -``` - -## Additional Notes - - -## Checklist -- [ ] I have tested these changes locally -- [ ] I have updated the documentation -- [ ] I have added a transaction link -- [ ] I have added the prompt used to test it +name: Typescript Client CI +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [22.x] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'pnpm' + cache-dependency-path: pnpm-lock.json + - name: Install dependencies + run: pnpm install + - name: Run lint + run: pnpm run lint + - name: Run build + run: pnpm run build \ No newline at end of file From 0aacffb78d3ee9ed9ea6f44719e8fde37e415c7b Mon Sep 17 00:00:00 2001 From: aryan Date: Sun, 5 Jan 2025 18:21:47 +0530 Subject: [PATCH 92/94] rever pull req template + add build --- .github/pull_request_template.md | 64 ++++++++++++++++---------------- .github/workflows/build.yml | 15 +++----- 2 files changed, 38 insertions(+), 41 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 6952050..ed52648 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,31 +1,33 @@ -name: Typescript Client CI -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] -jobs: - build: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: [22.x] - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Install pnpm - uses: pnpm/action-setup@v2 - with: - version: 8 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - cache: 'pnpm' - cache-dependency-path: pnpm-lock.json - - name: Install dependencies - run: pnpm install - - name: Run lint - run: pnpm run lint - - name: Run build - run: pnpm run build \ No newline at end of file +# Pull Request Description + +## Related Issue +Fixes # (issue number) + +## Changes Made +This PR adds the following changes: + +- +- + +## Implementation Details + +- +- + +## Transaction executed by agent + +Example transaction: + +## Prompt Used + +``` +``` + +## Additional Notes + + +## Checklist +- [ ] I have tested these changes locally +- [ ] I have updated the documentation +- [ ] I have added a transaction link +- [ ] I have added the prompt used to test it diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4b967a1..6952050 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,36 +1,31 @@ name: Typescript Client CI - on: push: branches: [ main ] pull_request: branches: [ main ] - jobs: build: runs-on: ubuntu-latest - strategy: matrix: node-version: [22.x] - steps: - name: Checkout uses: actions/checkout@v4 + - name: Install pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'pnpm' cache-dependency-path: pnpm-lock.json - - name: Install pnpm - uses: pnpm/action-setup@v2 - with: - version: 8 - name: Install dependencies run: pnpm install - name: Run lint run: pnpm run lint - name: Run build - run: pnpm run build - # - run: pnpm run test # TODO: add mock env for testing + run: pnpm run build \ No newline at end of file From da050d0147cba5ac02318b05553fa37a8771773b Mon Sep 17 00:00:00 2001 From: aryan Date: Sun, 5 Jan 2025 18:27:05 +0530 Subject: [PATCH 93/94] rm explcitiy cache --- .github/workflows/build.yml | 48 ++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6952050..2c836bf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,31 +1,29 @@ -name: Typescript Client CI +name: ci on: push: - branches: [ main ] + branches: [main] pull_request: - branches: [ main ] + branches: [main] jobs: - build: + check: runs-on: ubuntu-latest - strategy: - matrix: - node-version: [22.x] steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Install pnpm - uses: pnpm/action-setup@v2 - with: - version: 8 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - cache: 'pnpm' - cache-dependency-path: pnpm-lock.json - - name: Install dependencies - run: pnpm install - - name: Run lint - run: pnpm run lint - - name: Run build - run: pnpm run build \ No newline at end of file + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v3 + with: + version: 9.4.0 + + - uses: actions/setup-node@v4 + with: + node-version: "23" + cache: "pnpm" + + - name: Install dependencies + run: pnpm install -r --no-frozen-lockfile + + - name: Run lint + run: pnpm run lint + + - name: Build packages + run: pnpm run build \ No newline at end of file From 07d058e6e7fcb3d197311d53f73ab2d879cbed76 Mon Sep 17 00:00:00 2001 From: aryan Date: Sun, 5 Jan 2025 18:29:59 +0530 Subject: [PATCH 94/94] lint fix --- .github/workflows/build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2c836bf..c862186 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,9 +21,9 @@ jobs: - name: Install dependencies run: pnpm install -r --no-frozen-lockfile - - - name: Run lint - run: pnpm run lint + + - name: Run lint and fix + run: pnpm run lint:fix - name: Build packages - run: pnpm run build \ No newline at end of file + run: pnpm run build