From ed689f5efdee2b9f172d1f78d8e595e478d79e8a Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 22 Dec 2024 01:20:29 +0530 Subject: [PATCH 01/10] fixes and renames --- README.md | 4 +- guides/add_your_own_tool.md | 20 +- package.json | 8 +- src/agent/index.ts | 11 +- src/index.ts | 8 +- src/langchain/index.ts | 197 +++++++++--------- src/tools/create_image.ts | 6 +- .../create_orca_single_sided_whirlpool.ts | 140 ++++++++----- src/tools/deploy_collection.ts | 33 ++- src/tools/deploy_token.ts | 26 ++- src/tools/fetch_price.ts | 21 +- src/tools/get_balance.ts | 6 +- src/tools/get_primary_domain.ts | 14 +- src/tools/get_tps.ts | 2 +- src/tools/index.ts | 6 +- src/tools/launch_pumpfun_token.ts | 6 +- src/tools/lend.ts | 13 +- src/tools/mint_nft.ts | 30 +-- src/tools/openbook_create_market.ts | 29 +-- src/tools/raydium_create_ammV4.ts | 59 ++++-- src/tools/raydium_create_clmm.ts | 61 +++--- src/tools/raydium_create_cpmm.ts | 58 +++--- src/tools/register_domain.ts | 6 +- src/tools/request_faucet_funds.ts | 6 +- src/tools/resolve_sol_domain.ts | 8 +- src/tools/send_compressed_airdrop.ts | 48 ++--- src/tools/stake_with_jup.ts | 6 +- src/tools/trade.ts | 12 +- src/tools/transfer.ts | 47 ++--- src/utils/send_tx.ts | 15 +- test/index.ts | 44 ++-- 31 files changed, 510 insertions(+), 440 deletions(-) diff --git a/README.md b/README.md index a4a0093..6e2df64 100644 --- a/README.md +++ b/README.md @@ -78,10 +78,10 @@ npm install solana-agent-kit ## Quick Start ```typescript -import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; +import { SolanaAgent, createSolanaTools } from "solana-agent-kit"; // Initialize with private key and optional RPC URL -const agent = new SolanaAgentKit( +const agent = new SolanaAgent( "your-wallet-private-key-as-base58", "https://api.mainnet-beta.solana.com", "your-openai-api-key" diff --git a/guides/add_your_own_tool.md b/guides/add_your_own_tool.md index 63d1172..71bfb7c 100644 --- a/guides/add_your_own_tool.md +++ b/guides/add_your_own_tool.md @@ -21,19 +21,19 @@ Create a new TypeScript file in the `src/tools/` directory for your tool (e.g., ```typescript:src/tools/custom_tool.ts import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../agent"; +import { SolanaAgent } from "../agent"; export class CustomTool extends Tool { name = "custom_tool"; description = "Description of what the custom tool does."; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } protected async _call(input: string): Promise { try { - const result = await this.solanaKit.customFunction(input); + const result = await this.solanaAgent.customFunction(input); return JSON.stringify({ status: "success", message: "Custom tool executed successfully", @@ -53,7 +53,7 @@ export class CustomTool extends Tool { ### 3. Add Supporting Functions to SolanaAgentKit ```typescript:src/agent/index.ts -export class SolanaAgentKit { +export class SolanaAgent { // ... existing code ... async customFunction(input: string): Promise { @@ -87,9 +87,9 @@ export function createSolanaTools(agent: SolanaAgentKit) { ### 6. Usage Example ```typescript -import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; +import { SolanaAgent, createSolanaTools } from "solana-agent-kit"; -const agent = new SolanaAgentKit( +const agent = new SolanaAgent( "your-wallet-private-key-as-base58", "https://api.mainnet-beta.solana.com", "your-openai-api-key" @@ -118,19 +118,19 @@ Here's a complete example of implementing a tool to fetch token prices: ```typescript:src/tools/fetch_token_price.ts import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../agent"; +import { SolanaAgent } from "../agent"; export class FetchTokenPriceTool extends Tool { name = "fetch_token_price"; description = "Fetches the current price of a specified token."; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } protected async _call(tokenSymbol: string): Promise { try { - const price = await this.solanaKit.getTokenPrice(tokenSymbol); + const price = await this.solanaAgent.getTokenPrice(tokenSymbol); return JSON.stringify({ status: "success", message: `Price fetched successfully for ${tokenSymbol}.`, @@ -176,4 +176,4 @@ If you encounter any issues while implementing your custom tool: - Contact the maintainer - Check existing tools for implementation examples ---- \ No newline at end of file +--- diff --git a/package.json b/package.json index 53165fb..ebf8984 100644 --- a/package.json +++ b/package.json @@ -15,10 +15,9 @@ "pnpm": ">=8.0.0" }, "keywords": [], - "author": "", + "author": "sendaifun", "license": "ISC", "dependencies": { - "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", "@bonfida/spl-name-service": "^3.0.7", "@coral-xyz/anchor": "0.29", "@langchain/core": "^0.3.18", @@ -34,11 +33,12 @@ "@metaplex-foundation/umi-web3js-adapters": "^0.9.2", "@orca-so/common-sdk": "0.6.4", "@orca-so/whirlpools-sdk": "^0.13.12", + "@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", "decimal.js": "^10.4.3", - "bn.js": "^5.2.1", "dotenv": "^16.4.5", "form-data": "^4.0.1", "langchain": "^0.3.6", @@ -51,4 +51,4 @@ "ts-node": "^10.9.2", "typescript": "^5.7.2" } -} \ No newline at end of file +} diff --git a/src/agent/index.ts b/src/agent/index.ts index 90e47ef..f40e18d 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -26,6 +26,7 @@ import { sendCompressedAirdrop, createOrcaSingleSidedWhirlpool, FEE_TIERS, + fetchPrice, } from "../tools"; import { CollectionDeployment, @@ -39,14 +40,14 @@ import { BN } from "@coral-xyz/anchor"; /** * Main class for interacting with Solana blockchain - * Provides a unified interface for token operations, NFT management, and trading + * Provides a unified interface for token operations, NFT management, trading and more * - * @class SolanaAgentKit + * @class SolanaAgent * @property {Connection} connection - Solana RPC connection * @property {Keypair} wallet - Wallet keypair for signing transactions * @property {PublicKey} wallet_address - Public key of the wallet */ -export class SolanaAgentKit { +export class SolanaAgent { public connection: Connection; public wallet: Keypair; public wallet_address: PublicKey; @@ -145,6 +146,10 @@ export class SolanaAgentKit { return getTokenDataByTicker(ticker); } + async fetchTokenPrice(mint: string) { + return fetchPrice(new PublicKey(mint)); + } + async launchPumpFunToken( tokenName: string, tokenTicker: string, diff --git a/src/index.ts b/src/index.ts index a1fd258..8c267a1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,7 @@ -import { SolanaAgentKit } from './agent'; // Move the SolanaAgentKit class to src/agent.ts -import { createSolanaTools } from './langchain'; +import { SolanaAgent } from "./agent"; +import { createSolanaTools } from "./langchain"; -export { SolanaAgentKit, createSolanaTools }; +export { SolanaAgent, createSolanaTools }; // Optional: Export types that users might need -export * from './types'; \ No newline at end of file +export * from "./types"; diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 930b0bf..11a0ff1 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1,9 +1,8 @@ import { PublicKey } from "@solana/web3.js"; import Decimal from "decimal.js"; import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../index"; +import { SolanaAgent } from "../index"; import { create_image } from "../tools/create_image"; -import { fetchPrice } from "../tools/fetch_price"; import { BN } from "@coral-xyz/anchor"; import { FEE_TIERS } from "../tools"; import { toJSON } from "../utils/toJSON"; @@ -18,14 +17,14 @@ export class SolanaBalanceTool extends Tool { Inputs: tokenAddress: string, eg "So11111111111111111111111111111111111111112" (optional)`; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } protected async _call(input: string): Promise { try { const tokenAddress = input ? new PublicKey(input) : undefined; - const balance = await this.solanaKit.getBalance(tokenAddress); + const balance = await this.solanaAgent.getBalance(tokenAddress); return JSON.stringify({ status: "success", @@ -51,7 +50,7 @@ export class SolanaTransferTool extends Tool { amount: number, eg 1 (required) mint?: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (optional)`; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } @@ -64,10 +63,10 @@ export class SolanaTransferTool extends Tool { ? new PublicKey(parsedInput.mint) : undefined; - const tx = await this.solanaKit.transfer( + const tx = await this.solanaAgent.transfer( recipient, parsedInput.amount, - mintAddress + mintAddress, ); return JSON.stringify({ @@ -94,12 +93,12 @@ export class SolanaDeployTokenTool extends Tool { Inputs (input is a JSON string): name: string, eg "My Token" (required) - uri: string, eg "https://example.com/token.json" (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) { + constructor(private solanaAgent: SolanaAgent) { super(); } @@ -107,12 +106,12 @@ export class SolanaDeployTokenTool extends Tool { try { const parsedInput = JSON.parse(input); - const result = await this.solanaKit.deployToken( + const result = await this.solanaAgent.deployToken( parsedInput.name, parsedInput.uri, parsedInput.symbol, parsedInput.decimals, - parsedInput.initialSupply + parsedInput.initialSupply, ); return JSON.stringify({ @@ -140,7 +139,7 @@ export class SolanaDeployCollectionTool extends Tool { uri: string, eg "https://example.com/collection.json" (required) royaltyBasisPoints?: number, eg 500 for 5% (optional)`; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } @@ -148,7 +147,7 @@ export class SolanaDeployCollectionTool extends Tool { try { const parsedInput = JSON.parse(input); - const result = await this.solanaKit.deployCollection(parsedInput); + const result = await this.solanaAgent.deployCollection(parsedInput); return JSON.stringify({ status: "success", @@ -174,9 +173,9 @@ export class SolanaMintNFTTool extends Tool { 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()}`; + recipient?: string, eg "9aUn5swQzUTRanaaTwmszxiv89cvFwUCjEBv1vZCoT1u" (optional) - The wallet to receive the NFT, defaults to agent's wallet which is ${this.solanaAgent.wallet_address.toString()}`; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } @@ -184,7 +183,7 @@ export class SolanaMintNFTTool extends Tool { try { const parsedInput = JSON.parse(input); - const result = await this.solanaKit.mintNFT( + const result = await this.solanaAgent.mintNFT( new PublicKey(parsedInput.collectionMint), { name: parsedInput.name, @@ -192,7 +191,7 @@ export class SolanaMintNFTTool extends Tool { }, parsedInput.recipient ? new PublicKey(parsedInput.recipient) - : this.solanaKit.wallet_address + : this.solanaAgent.wallet_address, ); return JSON.stringify({ @@ -226,7 +225,7 @@ export class SolanaTradeTool extends Tool { inputMint?: string, eg "So11111111111111111111111111111111111111112" (optional) slippageBps?: number, eg 100 (optional)`; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } @@ -234,13 +233,13 @@ export class SolanaTradeTool extends Tool { try { const parsedInput = JSON.parse(input); - const tx = await this.solanaKit.trade( + const tx = await this.solanaAgent.trade( new PublicKey(parsedInput.outputMint), parsedInput.inputAmount, parsedInput.inputMint ? new PublicKey(parsedInput.inputMint) : new PublicKey("So11111111111111111111111111111111111111112"), - parsedInput.slippageBps + parsedInput.slippageBps, ); return JSON.stringify({ @@ -265,18 +264,18 @@ export class SolanaRequestFundsTool extends Tool { name = "solana_request_funds"; description = "Request SOL from Solana faucet (devnet/testnet only)"; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } protected async _call(_input: string): Promise { try { - await this.solanaKit.requestFaucetFunds(); + await this.solanaAgent.requestFaucetFunds(); return JSON.stringify({ status: "success", message: "Successfully requested faucet funds", - network: this.solanaKit.connection.rpcEndpoint.split("/")[2], + network: this.solanaAgent.connection.rpcEndpoint.split("/")[2], }); } catch (error: any) { return JSON.stringify({ @@ -297,7 +296,7 @@ export class SolanaRegisterDomainTool extends Tool { spaceKB: number, eg 1 (optional, default is 1) `; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } @@ -318,9 +317,9 @@ export class SolanaRegisterDomainTool extends Tool { const parsedInput = toJSON(input); this.validateInput(parsedInput); - const tx = await this.solanaKit.registerDomain( + const tx = await this.solanaAgent.registerDomain( parsedInput.name, - parsedInput.spaceKB || 1 + parsedInput.spaceKB || 1, ); return JSON.stringify({ @@ -348,14 +347,14 @@ export class SolanaResolveDomainTool extends Tool { domain: string, eg "pumpfun.sol" or "pumpfun"(required) `; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } protected async _call(input: string): Promise { try { const domain = input.trim(); - const publicKey = await this.solanaKit.resolveSolDomain(domain); + const publicKey = await this.solanaAgent.resolveSolDomain(domain); return JSON.stringify({ status: "success", @@ -380,14 +379,14 @@ export class SolanaGetDomainTool extends Tool { account: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required) `; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } protected async _call(input: string): Promise { try { const account = new PublicKey(input.trim()); - const domain = await this.solanaKit.getPrimaryDomain(account); + const domain = await this.solanaAgent.getPrimaryDomain(account); return JSON.stringify({ status: "success", @@ -408,12 +407,12 @@ export class SolanaGetWalletAddressTool extends Tool { name = "solana_get_wallet_address"; description = `Get the wallet address of the agent`; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } async _call(_input: string): Promise { - return this.solanaKit.wallet_address.toString(); + return this.solanaAgent.wallet_address.toString(); } } @@ -431,7 +430,7 @@ 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) { + constructor(private solanaAgent: SolanaAgent) { super(); } @@ -465,7 +464,7 @@ export class SolanaPumpfunTokenLaunchTool extends Tool { this.validateInput(parsedInput); // Launch token with validated input - await this.solanaKit.launchPumpFunToken( + await this.solanaAgent.launchPumpFunToken( parsedInput.tokenName, parsedInput.tokenTicker, parsedInput.description, @@ -475,7 +474,7 @@ export class SolanaPumpfunTokenLaunchTool extends Tool { telegram: parsedInput.telegram, website: parsedInput.website, initialLiquiditySOL: parsedInput.initialLiquiditySOL, - } + }, ); return JSON.stringify({ @@ -499,7 +498,7 @@ export class SolanaCreateImageTool extends Tool { description = "Create an image using OpenAI's DALL-E. Input should be a string prompt for the image."; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } @@ -512,7 +511,7 @@ 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 result = await create_image(this.solanaAgent, input.trim()); return JSON.stringify({ status: "success", @@ -536,7 +535,7 @@ export class SolanaLendAssetTool extends Tool { Inputs (input is a json string): amount: number, eg 1, 0.01 (required)`; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } @@ -544,7 +543,7 @@ export class SolanaLendAssetTool extends Tool { try { let amount = JSON.parse(input).amount || input; - const tx = await this.solanaKit.lendAssets(amount); + const tx = await this.solanaAgent.lendAssets(amount); return JSON.stringify({ status: "success", @@ -566,13 +565,13 @@ export class SolanaTPSCalculatorTool extends Tool { name = "solana_get_tps"; description = "Get the current TPS of the Solana network"; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } async _call(_input: string): Promise { try { - const tps = await this.solanaKit.getTPS(); + const tps = await this.solanaAgent.getTPS(); return `Solana (mainnet-beta) current transactions per second: ${tps}`; } catch (error: any) { return `Error fetching TPS: ${error.message}`; @@ -587,7 +586,7 @@ export class SolanaStakeTool extends Tool { Inputs ( input is a JSON string ): amount: number, eg 1 or 0.01 (required)`; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } @@ -595,7 +594,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.solanaAgent.stake(parsedInput.amount); return JSON.stringify({ status: "success", @@ -619,17 +618,17 @@ export class SolanaStakeTool extends Tool { 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) { + constructor(private solanaAgent: SolanaAgent) { super(); } async _call(input: string): Promise { try { - const price = await fetchPrice(this.solanaKit, input.trim()); + const price = await this.solanaAgent.fetchTokenPrice(input.trim()); return JSON.stringify({ status: "success", tokenId: input.trim(), @@ -652,7 +651,7 @@ export class SolanaTokenDataTool extends Tool { Inputs: mintAddress is required. mintAddress: string, eg "So11111111111111111111111111111111111111112" (required)`; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } @@ -660,7 +659,8 @@ export class SolanaTokenDataTool extends Tool { try { const parsedInput = input.trim(); - const tokenData = await this.solanaKit.getTokenDataByAddress(parsedInput); + const tokenData = + await this.solanaAgent.getTokenDataByAddress(parsedInput); return JSON.stringify({ status: "success", @@ -683,14 +683,14 @@ export class SolanaTokenDataByTickerTool extends Tool { Inputs: ticker is required. ticker: string, eg "USDC" (required)`; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } protected async _call(input: string): Promise { try { const ticker = input.trim(); - const tokenData = await this.solanaKit.getTokenDataByTicker(ticker); + const tokenData = await this.solanaAgent.getTokenDataByTicker(ticker); return JSON.stringify({ status: "success", tokenData: tokenData, @@ -708,7 +708,7 @@ 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) - + 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) @@ -717,7 +717,7 @@ 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) { + constructor(private solanaAgent: SolanaAgent) { super(); } @@ -725,13 +725,13 @@ export class SolanaCompressedAirdropTool extends Tool { try { const parsedInput = JSON.parse(input); - const txs = await this.solanaKit.sendCompressedAirdrop( + const txs = await this.solanaAgent.sendCompressedAirdrop( parsedInput.mintAddress, parsedInput.amount, parsedInput.decimals, parsedInput.recipients, parsedInput.priorityFeeInLamports || 30_000, - parsedInput.shouldLog || false + parsedInput.shouldLog || false, ); return JSON.stringify({ @@ -761,7 +761,7 @@ export class SolanaCreateSingleSidedWhirlpoolTool extends Tool { - maxPrice: number, eg: 5.0 (required, maximum price at which liquidity is added) - feeTier: number, eg: 0.30 (required, fee tier for the pool)`; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } @@ -776,10 +776,12 @@ export class SolanaCreateSingleSidedWhirlpoolTool extends Tool { const feeTier = inputFormat.feeTier; if (!feeTier || !(feeTier in FEE_TIERS)) { - throw new Error(`Invalid feeTier. Available options: ${Object.keys(FEE_TIERS).join(", ")}`); + throw new Error( + `Invalid feeTier. Available options: ${Object.keys(FEE_TIERS).join(", ")}`, + ); } - const txId = await this.solanaKit.createOrcaSingleSidedWhirlpool( + const txId = await this.solanaAgent.createOrcaSingleSidedWhirlpool( depositTokenAmount, depositTokenMint, otherTokenMint, @@ -803,7 +805,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 @@ -815,15 +816,15 @@ export class SolanaRaydiumCreateAmmV4 extends Tool { startTime: number(seconds), eg: now number or zero (required) `; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } async _call(input: string): Promise { try { - let inputFormat = JSON.parse(input) + let inputFormat = JSON.parse(input); - const tx = await this.solanaKit.raydiumCreateAmmV4( + const tx = await this.solanaAgent.raydiumCreateAmmV4( new PublicKey(inputFormat.marketId), new BN(inputFormat.baseAmount), new BN(inputFormat.quoteAmount), @@ -857,15 +858,15 @@ export class SolanaRaydiumCreateClmm extends Tool { startTime: number(seconds), eg: now number or zero (required) `; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } async _call(input: string): Promise { try { - let inputFormat = JSON.parse(input) + let inputFormat = JSON.parse(input); - const tx = await this.solanaKit.raydiumCreateClmm( + const tx = await this.solanaAgent.raydiumCreateClmm( new PublicKey(inputFormat.mint1), new PublicKey(inputFormat.mint2), @@ -892,7 +893,7 @@ 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 + description = `Raydium's newest CPMM, does not require marketID, supports Token 2022 standard Inputs (input is a json string): mint1: string (required) @@ -903,15 +904,15 @@ export class SolanaRaydiumCreateCpmm extends Tool { startTime: number(seconds), eg: now number or zero (required) `; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } async _call(input: string): Promise { try { - let inputFormat = JSON.parse(input) + let inputFormat = JSON.parse(input); - const tx = await this.solanaKit.raydiumCreateCpmm( + const tx = await this.solanaAgent.raydiumCreateCpmm( new PublicKey(inputFormat.mint1), new PublicKey(inputFormat.mint2), @@ -940,7 +941,7 @@ export class SolanaRaydiumCreateCpmm extends Tool { export class SolanaOpenbookCreateMarket extends Tool { name = "solana_openbook_create_market"; - description = `Openbook marketId, required for ammv4 + description = `Openbook marketId, required for ammv4 Inputs (input is a json string): baseMint: string (required) @@ -949,15 +950,15 @@ export class SolanaOpenbookCreateMarket extends Tool { tickSize: number (required) `; - constructor(private solanaKit: SolanaAgentKit) { + constructor(private solanaAgent: SolanaAgent) { super(); } async _call(input: string): Promise { try { - let inputFormat = JSON.parse(input) + let inputFormat = JSON.parse(input); - const tx = await this.solanaKit.openbookCreateMarket( + const tx = await this.solanaAgent.openbookCreateMarket( new PublicKey(inputFormat.baseMint), new PublicKey(inputFormat.quoteMint), @@ -980,32 +981,32 @@ export class SolanaOpenbookCreateMarket extends Tool { } } -export function createSolanaTools(solanaKit: SolanaAgentKit) { +export function createSolanaTools(solanaAgent: SolanaAgent) { return [ - new SolanaBalanceTool(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 SolanaResolveDomainTool(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 SolanaCreateSingleSidedWhirlpoolTool(solanaKit), + new SolanaBalanceTool(solanaAgent), + new SolanaTransferTool(solanaAgent), + new SolanaDeployTokenTool(solanaAgent), + new SolanaDeployCollectionTool(solanaAgent), + new SolanaMintNFTTool(solanaAgent), + new SolanaTradeTool(solanaAgent), + new SolanaRequestFundsTool(solanaAgent), + new SolanaRegisterDomainTool(solanaAgent), + new SolanaGetWalletAddressTool(solanaAgent), + new SolanaPumpfunTokenLaunchTool(solanaAgent), + new SolanaCreateImageTool(solanaAgent), + new SolanaLendAssetTool(solanaAgent), + new SolanaTPSCalculatorTool(solanaAgent), + new SolanaStakeTool(solanaAgent), + new SolanaFetchPriceTool(solanaAgent), + new SolanaResolveDomainTool(solanaAgent), + new SolanaGetDomainTool(solanaAgent), + new SolanaTokenDataTool(solanaAgent), + new SolanaTokenDataByTickerTool(solanaAgent), + new SolanaCompressedAirdropTool(solanaAgent), + new SolanaRaydiumCreateAmmV4(solanaAgent), + new SolanaRaydiumCreateClmm(solanaAgent), + new SolanaRaydiumCreateCpmm(solanaAgent), + new SolanaOpenbookCreateMarket(solanaAgent), + new SolanaCreateSingleSidedWhirlpoolTool(solanaAgent), ]; } diff --git a/src/tools/create_image.ts b/src/tools/create_image.ts index 7fbb2cf..c5660ae 100644 --- a/src/tools/create_image.ts +++ b/src/tools/create_image.ts @@ -1,16 +1,16 @@ -import { SolanaAgentKit } from "../index"; +import { SolanaAgent } from "../index"; import OpenAI from "openai"; /** * Generate an image using OpenAI's DALL-E - * @param agent SolanaAgentKit instance + * @param agent SolanaAgent instance * @param prompt Text description of the image to generate * @param size Image size ('256x256', '512x512', or '1024x1024') (default: '1024x1024') * @param n Number of images to generate (default: 1) * @returns Object containing the generated image URLs */ export async function create_image( - agent: SolanaAgentKit, + agent: SolanaAgent, prompt: string, size: "256x256" | "512x512" | "1024x1024" = "1024x1024", n: number = 1, diff --git a/src/tools/create_orca_single_sided_whirlpool.ts b/src/tools/create_orca_single_sided_whirlpool.ts index aefc93c..095d8fc 100644 --- a/src/tools/create_orca_single_sided_whirlpool.ts +++ b/src/tools/create_orca_single_sided_whirlpool.ts @@ -1,5 +1,5 @@ import { Keypair, PublicKey, Transaction } from "@solana/web3.js"; -import { SolanaAgentKit } from "../agent"; +import { SolanaAgent } from "../index"; import { BN, Wallet } from "@coral-xyz/anchor"; import { Decimal } from "decimal.js"; import { @@ -40,7 +40,7 @@ import { sendTx } from "../utils/send_tx"; * @remarks * Fee tiers determine the percentage of fees collected on swaps, while tick spacing affects * the granularity of price ranges for liquidity positions. - * + * * For more details, refer to: * - [Whirlpool Fees](https://orca-so.github.io/whirlpools/Architecture%20Overview/Whirlpool%20Fees) * - [Whirlpool Parameters](https://orca-so.github.io/whirlpools/Architecture%20Overview/Whirlpool%20Parameters) @@ -54,17 +54,17 @@ export const FEE_TIERS = { 0.04: 4, 0.05: 8, 0.16: 16, - 0.30: 64, + 0.3: 64, 0.65: 96, - 1.00: 128, - 2.00: 256, + 1.0: 128, + 2.0: 256, } as const; /** * # Creates a single-sided Whirlpool. * * This function initializes a new Whirlpool (liquidity pool) on Orca and seeds it with liquidity from a single token. - * + * * ## Example Usage: * You created a new token called SHARK, and you want to set the initial price to 0.001 USDC. * You set `depositTokenMint` to SHARK's mint address and `otherTokenMint` to USDC's mint address. @@ -72,7 +72,7 @@ export const FEE_TIERS = { * 1. Increase the amount of tokens you deposit * 2. Set the initial price very low * 3. Set the maximum price closer to the initial price - * + * * ### Note for experts: * The Wrhirlpool program initializes the Whirlpool with the in a specific order. This might not be * the order you expect, so the function checks the order and adjusts the inverts the prices. This means that @@ -86,13 +86,13 @@ export const FEE_TIERS = { * @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. - * + * * @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. * - Prices are out of bounds. - * + * * @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. @@ -103,7 +103,7 @@ export const FEE_TIERS = { * 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"); @@ -111,7 +111,7 @@ export const FEE_TIERS = { * const initialPrice = new Decimal(0.001); * const maxPrice = new Decimal(5.0); * const feeTier = 0.30; - * + * * const txId = await createOrcaSingleSidedWhirlpool( * agent, * depositAmount, @@ -125,7 +125,7 @@ export const FEE_TIERS = { * ``` */ export async function createOrcaSingleSidedWhirlpool( - agent: SolanaAgentKit, + agent: SolanaAgent, depositTokenAmount: BN, depositTokenMint: PublicKey, otherTokenMint: PublicKey, @@ -134,13 +134,19 @@ export async function createOrcaSingleSidedWhirlpool( feeTier: keyof typeof FEE_TIERS, ): Promise { const wallet = new Wallet(agent.wallet); - const ctx = WhirlpoolContext.from(agent.connection, wallet, ORCA_WHIRLPOOL_PROGRAM_ID); + 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(); + 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]; @@ -151,10 +157,18 @@ export async function createOrcaSingleSidedWhirlpool( } const mintAAccount = await fetcher.getMintInfo(mintA); const mintBAccount = await fetcher.getMintInfo(mintB); - if (mintAAccount === null || mintBAccount === null) throw Error('Mint account not found'); + if (mintAAccount === null || mintBAccount === null) + throw Error("Mint account not found"); const tickSpacing = FEE_TIERS[feeTier]; - const tickIndex = PriceMath.priceToTickIndex(initialPrice, mintAAccount.decimals, mintBAccount.decimals); - const initialTick = TickUtil.getInitializableTickIndex(tickIndex, tickSpacing); + const tickIndex = PriceMath.priceToTickIndex( + initialPrice, + mintAAccount.decimals, + mintBAccount.decimals, + ); + const initialTick = TickUtil.getInitializableTickIndex( + tickIndex, + tickSpacing, + ); const tokenExtensionCtx: TokenExtensionContextForPool = { ...NO_TOKEN_EXTENSION_CONTEXT, @@ -196,17 +210,17 @@ export async function createOrcaSingleSidedWhirlpool( tokenVaultBKeypair, feeTierKey, tickSpacing: tickSpacing, - funder: wallet.publicKey + 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, - }); + ...baseParamsPool, + tokenProgramA: tokenExtensionCtx.tokenMintWithProgramA.tokenProgram, + tokenProgramB: tokenExtensionCtx.tokenMintWithProgramB.tokenProgram, + tokenBadgeA, + tokenBadgeB, + }); const initialTickArrayStartTick = TickUtil.getStartTickIndex( initialTick, tickSpacing, @@ -235,14 +249,32 @@ export async function createOrcaSingleSidedWhirlpool( let tickLowerIndex, tickUpperIndex; if (isCorrectMintOrder) { tickLowerIndex = initialTick; - tickUpperIndex = PriceMath.priceToTickIndex(maxPrice, mintAAccount.decimals, mintBAccount.decimals); + tickUpperIndex = PriceMath.priceToTickIndex( + maxPrice, + mintAAccount.decimals, + mintBAccount.decimals, + ); } else { - tickLowerIndex = PriceMath.priceToTickIndex(maxPrice, mintAAccount.decimals, mintBAccount.decimals); + 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 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, @@ -253,11 +285,11 @@ export async function createOrcaSingleSidedWhirlpool( tickLowerIndex: tickLowerInitializableIndex, tickUpperIndex: tickUpperInitializableIndex, tokenExtensionCtx: tokenExtensionCtx, - slippageTolerance: Percentage.fromFraction(0, 100) - } + slippageTolerance: Percentage.fromFraction(0, 100), + }; const liquidityInput = increaseLiquidityQuoteByInputTokenWithParams( - increasLiquidityQuoteParam - ) + increasLiquidityQuoteParam, + ); const { liquidityAmount: liquidity, tokenMaxA, tokenMaxB } = liquidityInput; const positionMintKeypair = Keypair.generate(); @@ -285,7 +317,7 @@ export async function createOrcaSingleSidedWhirlpool( ...params, positionMint: positionMintPubkey, withTokenMetadataExtension: true, - }) + }); txBuilder.addInstruction(positionIx); txBuilder.addSigner(positionMintKeypair); @@ -365,35 +397,33 @@ export async function createOrcaSingleSidedWhirlpool( tickArrayUpper: tickArrayUpperPda.publicKey, }; - const liquidityIx = !TokenExtensionUtil.isV2IxRequiredPool( - tokenExtensionCtx, - ) + 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, - }); + ...baseParamsLiquidity, + tokenMintA: mintA, + tokenMintB: mintB, + tokenProgramA: tokenExtensionCtx.tokenMintWithProgramA.tokenProgram, + tokenProgramB: tokenExtensionCtx.tokenMintWithProgramB.tokenProgram, + }); txBuilder.addInstruction(liquidityIx); const txPayload = await txBuilder.build({ - maxSupportedTransactionVersion: "legacy" + maxSupportedTransactionVersion: "legacy", }); if (txPayload.transaction instanceof Transaction) { try { - const txId = await sendTx( - agent, - txPayload.transaction, - [positionMintKeypair, tokenVaultAKeypair, tokenVaultBKeypair], - ); + const txId = await sendTx(agent, txPayload.transaction, [ + positionMintKeypair, + tokenVaultAKeypair, + tokenVaultBKeypair, + ]); return txId; } catch (error) { - throw new Error(`Failed to create pool: ${JSON.stringify(error)}`); + throw new Error(`Failed to create pool: ${JSON.stringify(error)}`); } } else { - throw new Error('Failed to create pool: Transaction not created'); + throw new Error("Failed to create pool: Transaction not created"); } } diff --git a/src/tools/deploy_collection.ts b/src/tools/deploy_collection.ts index 4528b92..086d736 100644 --- a/src/tools/deploy_collection.ts +++ b/src/tools/deploy_collection.ts @@ -1,18 +1,29 @@ -import { SolanaAgentKit } from "../index"; -import { generateSigner, keypairIdentity, publicKey } from "@metaplex-foundation/umi"; -import { createCollection, mplCore, ruleSet } from "@metaplex-foundation/mpl-core"; +import { SolanaAgent } from "../index"; +import { + generateSigner, + keypairIdentity, + publicKey, +} from "@metaplex-foundation/umi"; +import { + createCollection, + mplCore, + ruleSet, +} from "@metaplex-foundation/mpl-core"; import { CollectionOptions, CollectionDeployment } from "../types"; -import { fromWeb3JsKeypair, toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters"; +import { + fromWeb3JsKeypair, + toWeb3JsPublicKey, +} from "@metaplex-foundation/umi-web3js-adapters"; import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; /** * Deploy a new NFT collection - * @param agent SolanaAgentKit instance + * @param agent SolanaAgent instance * @param options Collection options including name, URI, royalties, and creators * @returns Object containing collection address and metadata */ export async function deploy_collection( - agent: SolanaAgentKit, + agent: SolanaAgent, options: CollectionOptions, ): Promise { try { @@ -28,11 +39,11 @@ export async function deploy_collection( address: publicKey(creator.address), percentage: creator.percentage, })) || [ - { - address: publicKey(agent.wallet_address.toString()), - percentage: 100, - }, - ]; + { + address: publicKey(agent.wallet_address.toString()), + percentage: 100, + }, + ]; // Create collection const tx = await createCollection(umi, { diff --git a/src/tools/deploy_token.ts b/src/tools/deploy_token.ts index a36d5de..5940141 100644 --- a/src/tools/deploy_token.ts +++ b/src/tools/deploy_token.ts @@ -1,13 +1,21 @@ -import { SolanaAgentKit } from "../index"; +import { SolanaAgent } from "../index"; import { PublicKey } from "@solana/web3.js"; import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; import { generateSigner, keypairIdentity } from "@metaplex-foundation/umi"; -import { createFungible, mintV1, TokenStandard } from "@metaplex-foundation/mpl-token-metadata"; -import { fromWeb3JsKeypair, fromWeb3JsPublicKey, toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters"; +import { + createFungible, + mintV1, + TokenStandard, +} from "@metaplex-foundation/mpl-token-metadata"; +import { + fromWeb3JsKeypair, + fromWeb3JsPublicKey, + toWeb3JsPublicKey, +} from "@metaplex-foundation/umi-web3js-adapters"; /** * Deploy a new SPL token - * @param agent SolanaAgentKit instance + * @param agent SolanaAgent instance * @param name Name of the token * @param uri URI for the token metadata * @param symbol Symbol of the token @@ -16,16 +24,16 @@ import { fromWeb3JsKeypair, fromWeb3JsPublicKey, toWeb3JsPublicKey } from "@meta * @returns Object containing token mint address and initial account (if supply was minted) */ export async function deploy_token( - agent: SolanaAgentKit, + agent: SolanaAgent, name: string, uri: string, symbol: string, decimals: number = 9, - initialSupply?: number + initialSupply?: number, ): Promise<{ mint: PublicKey }> { try { // Create UMI instance from agent - const umi = createUmi(agent.connection.rpcEndpoint) + const umi = createUmi(agent.connection.rpcEndpoint); umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); // Create new token mint @@ -51,11 +59,11 @@ export async function deploy_token( tokenStandard: TokenStandard.Fungible, tokenOwner: fromWeb3JsPublicKey(agent.wallet_address), amount: initialSupply, - }) + }), ); } - builder.sendAndConfirm(umi, { confirm: { commitment: 'finalized' } }); + builder.sendAndConfirm(umi, { confirm: { commitment: "finalized" } }); return { mint: toWeb3JsPublicKey(mint.publicKey), diff --git a/src/tools/fetch_price.ts b/src/tools/fetch_price.ts index 764e8e6..cca1925 100644 --- a/src/tools/fetch_price.ts +++ b/src/tools/fetch_price.ts @@ -1,20 +1,13 @@ -import { SolanaAgentKit } from "../index"; -import { Tool } from "langchain/tools"; +import { PublicKey } from "@solana/web3.js"; /** - * Fetch the price of a given token in USDC using Jupiter API - * @param agent SolanaAgentKit instance + * Fetch the price of a given token quoted in USDC using Jupiter API * @param tokenId The token mint address - * @returns The price of the token in USDC + * @returns The price of the token quoted in USDC */ -export async function fetchPrice( - agent: SolanaAgentKit, - tokenId: string -): Promise { +export async function fetchPrice(tokenId: PublicKey): Promise { try { - const response = await fetch( - `https://api.jup.ag/price/v2?ids=${tokenId}` - ); + const response = await fetch(`https://api.jup.ag/price/v2?ids=${tokenId}`); if (!response.ok) { throw new Error(`Failed to fetch price: ${response.statusText}`); @@ -22,7 +15,7 @@ export async function fetchPrice( const data = await response.json(); - const price = data.data[tokenId]?.price; + const price = data.data[tokenId.toBase58()]?.price; if (!price) { throw new Error("Price data not available for the given token."); @@ -32,4 +25,4 @@ export async function fetchPrice( } catch (error: any) { throw new Error(`Price fetch failed: ${error.message}`); } -} \ No newline at end of file +} diff --git a/src/tools/get_balance.ts b/src/tools/get_balance.ts index 36cdfef..fb70699 100644 --- a/src/tools/get_balance.ts +++ b/src/tools/get_balance.ts @@ -1,14 +1,14 @@ import { LAMPORTS_PER_SOL, PublicKey } from "@solana/web3.js"; -import { SolanaAgentKit } from "../index"; +import { SolanaAgent } from "../index"; /** * Get the balance of SOL or an SPL token for the agent's wallet - * @param agent - SolanaAgentKit instance + * @param agent - SolanaAgent instance * @param token_address - Optional SPL token mint address. If not provided, returns SOL balance * @returns Promise resolving to the balance as a number (in UI units) or null if account doesn't exist */ export async function get_balance( - agent: SolanaAgentKit, + agent: SolanaAgent, token_address?: PublicKey, ): Promise { if (!token_address) diff --git a/src/tools/get_primary_domain.ts b/src/tools/get_primary_domain.ts index 775af4b..01f19b6 100644 --- a/src/tools/get_primary_domain.ts +++ b/src/tools/get_primary_domain.ts @@ -1,6 +1,6 @@ import { getPrimaryDomain as _getPrimaryDomain } from "@bonfida/spl-name-service"; import { PublicKey } from "@solana/web3.js"; -import { SolanaAgentKit } from "../index"; +import { SolanaAgent } from "../index"; /** * Retrieves the primary .sol domain associated with a given Solana public key. @@ -9,29 +9,29 @@ import { SolanaAgentKit } from "../index"; * a specified Solana public key. If the primary domain is stale or an error occurs during * the resolution, it throws an error. * - * @param agent SolanaAgentKit instance + * @param agent SolanaAgent instance * @param account The Solana public key for which to retrieve the primary domain * @returns A promise that resolves to the primary .sol domain as a string * @throws Error if the domain is stale or if the domain resolution fails */ export async function getPrimaryDomain( - agent: SolanaAgentKit, - account: PublicKey + agent: SolanaAgent, + account: PublicKey, ): Promise { try { const { reverse, stale } = await _getPrimaryDomain( agent.connection, - account + account, ); if (stale) { throw new Error( - `Primary domain is stale for account: ${account.toBase58()}` + `Primary domain is stale for account: ${account.toBase58()}`, ); } return reverse; } catch (error) { throw new Error( - `Failed to get primary domain for account: ${account.toBase58()}` + `Failed to get primary domain for account: ${account.toBase58()}`, ); } } diff --git a/src/tools/get_tps.ts b/src/tools/get_tps.ts index 7314ce3..38eb356 100644 --- a/src/tools/get_tps.ts +++ b/src/tools/get_tps.ts @@ -1,4 +1,4 @@ -import { SolanaAgentKit } from "../index"; +import { SolanaAgent } from "../index"; export async function getTPS(agent: SolanaAgentKit): Promise { const perfSamples = await agent.connection.getRecentPerformanceSamples(); diff --git a/src/tools/index.ts b/src/tools/index.ts index 303cde2..32a3c53 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -15,8 +15,8 @@ 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 "./raydium_create_ammV4"; +export * from "./create_orca_single_sided_whirlpool"; +export * from "./raydium_create_ammV4"; export * from "./raydium_create_clmm"; export * from "./raydium_create_cpmm"; -export * from "./openbook_create_market"; \ No newline at end of file +export * from "./openbook_create_market"; diff --git a/src/tools/launch_pumpfun_token.ts b/src/tools/launch_pumpfun_token.ts index 0c3e6f5..ce997b4 100644 --- a/src/tools/launch_pumpfun_token.ts +++ b/src/tools/launch_pumpfun_token.ts @@ -55,7 +55,7 @@ async function uploadMetadata( } async function createTokenTransaction( - agent: SolanaAgentKit, + agent: SolanaAgent, mintKeypair: Keypair, metadataResponse: any, options?: PumpFunTokenOptions, @@ -140,7 +140,7 @@ async function signAndSendTransaction( /** * Launch a token on Pump.fun - * @param agent - SolanaAgentKit instance + * @param agent - SolanaAgent instance * @param tokenName - Name of the token * @param tokenTicker - Ticker of the token * @param description - Description of the token @@ -149,7 +149,7 @@ async function signAndSendTransaction( * @returns - Signature of the transaction, mint address and metadata URI, if successful, else error */ export async function launchPumpFunToken( - agent: SolanaAgentKit, + agent: SolanaAgent, tokenName: string, tokenTicker: string, description: string, diff --git a/src/tools/lend.ts b/src/tools/lend.ts index 7889343..f036aa7 100644 --- a/src/tools/lend.ts +++ b/src/tools/lend.ts @@ -1,16 +1,15 @@ import { VersionedTransaction } from "@solana/web3.js"; -import { LuloAccountDetailsResponse } from "../types"; -import { SolanaAgentKit } from "../agent"; +import { SolanaAgent } from "../index"; /** * Lend tokens for yields using Lulo - * @param agent SolanaAgentKit instance + * @param agent SolanaAgent instance * @param amount Amount of USDC to lend * @returns Transaction signature */ export async function lendAsset( - agent: SolanaAgentKit, - amount: number + agent: SolanaAgent, + amount: number, ): Promise { try { const response = await fetch( @@ -23,14 +22,14 @@ export async function lendAsset( body: JSON.stringify({ account: agent.wallet.publicKey.toBase58(), }), - } + }, ); const data = await response.json(); // Deserialize the transaction const luloTxn = VersionedTransaction.deserialize( - Buffer.from(data.transaction, "base64") + Buffer.from(data.transaction, "base64"), ); // Get a recent blockhash and set it diff --git a/src/tools/mint_nft.ts b/src/tools/mint_nft.ts index 09bfe32..97e5fd2 100644 --- a/src/tools/mint_nft.ts +++ b/src/tools/mint_nft.ts @@ -1,22 +1,26 @@ -import { SolanaAgentKit } from "../index"; -import { generateSigner, keypairIdentity } from '@metaplex-foundation/umi'; -import { create, mplCore } from '@metaplex-foundation/mpl-core'; -import { fetchCollection } from '@metaplex-foundation/mpl-core'; +import { SolanaAgent } from "../index"; +import { generateSigner, keypairIdentity } from "@metaplex-foundation/umi"; +import { create, mplCore } from "@metaplex-foundation/mpl-core"; +import { fetchCollection } from "@metaplex-foundation/mpl-core"; import { PublicKey } from "@solana/web3.js"; -import { fromWeb3JsKeypair, fromWeb3JsPublicKey, toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters"; -import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'; -import { MintCollectionNFTResponse } from '../types'; +import { + fromWeb3JsKeypair, + fromWeb3JsPublicKey, + toWeb3JsPublicKey, +} from "@metaplex-foundation/umi-web3js-adapters"; +import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; +import { MintCollectionNFTResponse } from "../types"; /** * Mint a new NFT as part of an existing collection - * @param agent SolanaAgentKit instance + * @param agent SolanaAgent instance * @param collectionMint Address of the collection's master NFT * @param metadata NFT metadata object * @param recipient Optional recipient address (defaults to wallet address) * @returns Object containing NFT mint address and token account */ export async function mintCollectionNFT( - agent: SolanaAgentKit, + agent: SolanaAgent, collectionMint: PublicKey, metadata: { name: string; @@ -27,7 +31,7 @@ export async function mintCollectionNFT( share: number; }>; }, - recipient?: PublicKey + recipient?: PublicKey, ): Promise { try { // Create UMI instance from agent @@ -49,15 +53,15 @@ export async function mintCollectionNFT( collection: collection, name: metadata.name, uri: metadata.uri, - owner: fromWeb3JsPublicKey(recipient ?? agent.wallet.publicKey) + owner: fromWeb3JsPublicKey(recipient ?? agent.wallet.publicKey), }).sendAndConfirm(umi); return { mint: toWeb3JsPublicKey(assetSigner.publicKey), // Note: Token account is now handled automatically by the create instruction - metadata: toWeb3JsPublicKey(assetSigner.publicKey) + metadata: toWeb3JsPublicKey(assetSigner.publicKey), }; } catch (error: any) { throw new Error(`Collection NFT minting failed: ${error.message}`); } -} \ No newline at end of file +} diff --git a/src/tools/openbook_create_market.ts b/src/tools/openbook_create_market.ts index 4e9c592..29dd829 100644 --- a/src/tools/openbook_create_market.ts +++ b/src/tools/openbook_create_market.ts @@ -1,33 +1,34 @@ -import { OPEN_BOOK_PROGRAM, Raydium, TxVersion } from "@raydium-io/raydium-sdk-v2"; +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 { SolanaAgentKit } from "../agent"; +import { SolanaAgent } from "../index"; export async function openbookCreateMarket( - agent: SolanaAgentKit, - + agent: SolanaAgent, baseMint: PublicKey, quoteMint: PublicKey, - lotSize: number = 1, tickSize: number = 0.01, ): Promise { - const raydium = await Raydium.load({ owner: agent.wallet, connection: agent.connection, - }) + }); - const baseMintInfo = await agent.connection.getAccountInfo(baseMint) - const quoteMintInfo = await agent.connection.getAccountInfo(quoteMint) + 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( - 'openbook market only support TOKEN_PROGRAM_ID mints, if you want to create pool with token-2022, please create raydium cpmm pool instead' - ) + "openbook market only support TOKEN_PROGRAM_ID mints, if you want to create pool with token-2022, please create raydium cpmm pool instead", + ); } const { execute } = await raydium.marketV2.create({ @@ -44,9 +45,9 @@ export async function openbookCreateMarket( dexProgramId: OPEN_BOOK_PROGRAM, txVersion: TxVersion.V0, - }) + }); - const { txIds } = await execute({ sequentially: true, }) + const { txIds } = await execute({ sequentially: true }); - return txIds + return txIds; } diff --git a/src/tools/raydium_create_ammV4.ts b/src/tools/raydium_create_ammV4.ts index 53d78b3..cc06431 100644 --- a/src/tools/raydium_create_ammV4.ts +++ b/src/tools/raydium_create_ammV4.ts @@ -1,42 +1,59 @@ -import { AMM_V4, FEE_DESTINATION_ID, MARKET_STATE_LAYOUT_V3, OPEN_BOOK_PROGRAM, Raydium, TxVersion } from "@raydium-io/raydium-sdk-v2"; +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 { SolanaAgentKit } from "../agent"; +import BN from "bn.js"; +import { SolanaAgent } from "../index"; export async function raydiumCreateAmmV4( - agent: SolanaAgentKit, - + agent: SolanaAgent, marketId: PublicKey, - baseAmount: BN, quoteAmount: BN, - startTime: BN, ): Promise { - 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 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) + 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' - ) + "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') + 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({ @@ -63,9 +80,9 @@ export async function raydiumCreateAmmV4( associatedOnly: false, txVersion: TxVersion.V0, feeDestinationId: FEE_DESTINATION_ID, - }) + }); - const { txId } = await execute({ sendAndConfirm: true }) + const { txId } = await execute({ sendAndConfirm: true }); - return txId -} \ No newline at end of file + return txId; +} diff --git a/src/tools/raydium_create_clmm.ts b/src/tools/raydium_create_clmm.ts index 8dbd5e6..2ce62f1 100644 --- a/src/tools/raydium_create_clmm.ts +++ b/src/tools/raydium_create_clmm.ts @@ -1,55 +1,58 @@ -import { CLMM_PROGRAM_ID, 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 Decimal from 'decimal.js' -import { SolanaAgentKit } from '../agent' +import { + CLMM_PROGRAM_ID, + 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 Decimal from "decimal.js"; +import { SolanaAgent } from "../index"; export async function raydiumCreateClmm( - agent: SolanaAgentKit, - + agent: SolanaAgent, mint1: PublicKey, mint2: PublicKey, - configId: PublicKey, - initialPrice: Decimal, startTime: BN, ): Promise { - const raydium = await Raydium.load({ owner: agent.wallet, connection: agent.connection, - }) + }); - const [mintInfo1, mintInfo2] = await agent.connection.getMultipleAccountsInfo([mint1, mint2]) - if (mintInfo1 === null || mintInfo2 === null) throw Error('fetch mint info error') + const [mintInfo1, mintInfo2] = await agent.connection.getMultipleAccountsInfo( + [mint1, mint2], + ); + if (mintInfo1 === null || mintInfo2 === null) + throw Error("fetch mint info error"); - const mintDecodeInfo1 = MintLayout.decode(mintInfo1.data) - const mintDecodeInfo2 = MintLayout.decode(mintInfo2.data) + const mintDecodeInfo1 = MintLayout.decode(mintInfo1.data); + const mintDecodeInfo2 = MintLayout.decode(mintInfo2.data); const mintFormatInfo1 = { chainId: 101, address: mint1.toString(), programId: mintInfo1.owner.toString(), - logoURI: '', - symbol: '', - name: '', + logoURI: "", + symbol: "", + name: "", decimals: mintDecodeInfo1.decimals, tags: [], - extensions: {} - } + extensions: {}, + }; const mintFormatInfo2 = { chainId: 101, address: mint2.toString(), programId: mintInfo2.owner.toString(), - logoURI: '', - symbol: '', - name: '', + logoURI: "", + symbol: "", + name: "", decimals: mintDecodeInfo2.decimals, tags: [], - extensions: {} - } + extensions: {}, + }; const { execute } = await raydium.clmm.createPool({ programId: CLMM_PROGRAM_ID, @@ -65,9 +68,9 @@ export async function raydiumCreateClmm( // units: 600000, // microLamports: 46591500, // }, - }) + }); - const { txId } = await execute({ sendAndConfirm: true }) + const { txId } = await execute({ sendAndConfirm: true }); - return txId + return txId; } diff --git a/src/tools/raydium_create_cpmm.ts b/src/tools/raydium_create_cpmm.ts index 4a520e2..6e129c6 100644 --- a/src/tools/raydium_create_cpmm.ts +++ b/src/tools/raydium_create_cpmm.ts @@ -2,60 +2,58 @@ 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 { SolanaAgentKit } from '../agent' + 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 { SolanaAgent } from "../index"; export async function raydiumCreateCpmm( - agent: SolanaAgentKit, - + agent: SolanaAgent, mintA: PublicKey, mintB: PublicKey, - configId: PublicKey, - mintAAmount: BN, mintBAmount: BN, - startTime: BN, ): Promise { - 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 [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 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: '', + logoURI: "", + symbol: "", + name: "", decimals: mintDecodeInfoA.decimals, tags: [], - extensions: {} - } + extensions: {}, + }; const mintFormatInfoB = { chainId: 101, address: mintB.toString(), programId: mintInfoB.owner.toString(), - logoURI: '', - symbol: '', - name: '', + logoURI: "", + symbol: "", + name: "", decimals: mintDecodeInfoB.decimals, tags: [], - extensions: {} - } + extensions: {}, + }; const { execute, extInfo } = await raydium.cpmm.createPool({ programId: CREATE_CPMM_POOL_PROGRAM, @@ -76,9 +74,9 @@ export async function raydiumCreateCpmm( // units: 600000, // microLamports: 46591500, // }, - }) + }); - const { txId } = await execute({ sendAndConfirm: true }) + const { txId } = await execute({ sendAndConfirm: true }); - return txId + return txId; } diff --git a/src/tools/register_domain.ts b/src/tools/register_domain.ts index 1348001..20bcf79 100644 --- a/src/tools/register_domain.ts +++ b/src/tools/register_domain.ts @@ -1,18 +1,18 @@ import { registerDomainNameV2 } from "@bonfida/spl-name-service"; import { Transaction } from "@solana/web3.js"; -import { SolanaAgentKit } from "../index"; +import { SolanaAgent } from "../index"; import { getAssociatedTokenAddressSync } from "@solana/spl-token"; import { TOKENS } from "../constants"; /** * Register a .sol domain name using Bonfida Name Service - * @param agent SolanaAgentKit instance + * @param agent SolanaAgent instance * @param name Domain name to register (without .sol) * @param spaceKB Space allocation in KB (max 10KB) * @returns Transaction signature */ export async function registerDomain( - agent: SolanaAgentKit, + agent: SolanaAgent, name: string, spaceKB: number = 1, ): Promise { diff --git a/src/tools/request_faucet_funds.ts b/src/tools/request_faucet_funds.ts index bde8eed..dd44cb3 100644 --- a/src/tools/request_faucet_funds.ts +++ b/src/tools/request_faucet_funds.ts @@ -1,14 +1,14 @@ -import { SolanaAgentKit } from "../index"; +import { SolanaAgent } from "../index"; import { LAMPORTS_PER_SOL } from "@solana/web3.js"; /** * Request SOL from the Solana faucet (devnet/testnet only) - * @param agent - SolanaAgentKit instance + * @param agent - SolanaAgent instance * @returns Transaction signature * @throws Error if the request fails or times out */ export async function request_faucet_funds( - agent: SolanaAgentKit, + agent: SolanaAgent, ): Promise { const tx = await agent.connection.requestAirdrop( agent.wallet_address, diff --git a/src/tools/resolve_sol_domain.ts b/src/tools/resolve_sol_domain.ts index d8764cc..e5c87a5 100644 --- a/src/tools/resolve_sol_domain.ts +++ b/src/tools/resolve_sol_domain.ts @@ -1,6 +1,6 @@ import { resolve } from "@bonfida/spl-name-service"; import { PublicKey } from "@solana/web3.js"; -import { SolanaAgentKit } from "../index"; +import { SolanaAgent } from "../index"; /** * Resolves a .sol domain to a Solana PublicKey. @@ -9,14 +9,14 @@ import { SolanaAgentKit } from "../index"; * to the corresponding Solana PublicKey. The domain can be provided with or without * the .sol suffix. * - * @param agent SolanaAgentKit instance + * @param agent SolanaAgent instance * @param domain The .sol domain to resolve. This can be provided with or without the .sol TLD suffix * @returns A promise that resolves to the corresponding Solana PublicKey * @throws Error if the domain resolution fails */ export async function resolveSolDomain( - agent: SolanaAgentKit, - domain: string + agent: SolanaAgent, + domain: string, ): Promise { if (!domain || typeof domain !== "string") { throw new Error("Invalid domain. Expected a non-empty string."); diff --git a/src/tools/send_compressed_airdrop.ts b/src/tools/send_compressed_airdrop.ts index 313bbdb..3a80f42 100644 --- a/src/tools/send_compressed_airdrop.ts +++ b/src/tools/send_compressed_airdrop.ts @@ -1,12 +1,11 @@ import { AddressLookupTableAccount, ComputeBudgetProgram, - Connection, Keypair, PublicKey, TransactionInstruction, } from "@solana/web3.js"; -import { SolanaAgentKit } from "../agent/index.js"; +import { SolanaAgent } from "../index"; import { buildAndSignTx, calculateComputeUnitPrice, @@ -33,7 +32,7 @@ const MAX_CONCURRENT_TXS = 30; */ export const getAirdropCostEstimate = ( numberOfRecipients: number, - priorityFeeInLamports: number + priorityFeeInLamports: number, ) => { const baseFee = 5000; const perRecipientCompressedStateFee = 300; @@ -57,28 +56,27 @@ export const getAirdropCostEstimate = ( * @param shouldLog Whether to log progress to stdout. Defaults to false. */ export async function sendCompressedAirdrop( - agent: SolanaAgentKit, + agent: SolanaAgent, mintAddress: PublicKey, amount: number, decimals: number, recipients: PublicKey[], priorityFeeInLamports: number, - shouldLog: boolean = false + shouldLog: boolean = false, ): Promise { if (recipients.length > MAX_AIRDROP_RECIPIENTS) { throw new Error( - `Max airdrop can be ${MAX_AIRDROP_RECIPIENTS} recipients at a time. For more scale, use open source ZK Compression airdrop tools such as https://github.com/helius-labs/airship.` + `Max airdrop can be ${MAX_AIRDROP_RECIPIENTS} recipients at a time. For more scale, use open source ZK Compression airdrop tools such as https://github.com/helius-labs/airship.`, ); } - const url = agent.connection.rpcEndpoint; if (url.includes("devnet")) { throw new Error("Devnet is not supported for airdrop. Please use mainnet."); } if (!url.includes("helius")) { console.warn( - "Warning: Must use RPC with ZK Compression support. Double check with your RPC provider if in doubt." + "Warning: Must use RPC with ZK Compression support. Double check with your RPC provider if in doubt.", ); } @@ -88,11 +86,11 @@ export async function sendCompressedAirdrop( agent.connection, agent.wallet, mintAddress, - agent.wallet.publicKey + agent.wallet.publicKey, ); } catch (error) { throw new Error( - "Source token account not found and failed to create it. Please add funds to your wallet and try again." + "Source token account not found and failed to create it. Please add funds to your wallet and try again.", ); } @@ -100,7 +98,7 @@ export async function sendCompressedAirdrop( await createTokenPool( agent.connection as unknown as Rpc, agent.wallet, - mintAddress + mintAddress, ); } catch (error: any) { if (error.message.includes("already in use")) { @@ -116,17 +114,17 @@ export async function sendCompressedAirdrop( mintAddress, recipients, priorityFeeInLamports, - shouldLog + shouldLog, ); } async function processAll( - agent: SolanaAgentKit, + agent: SolanaAgent, amount: number, mint: PublicKey, recipients: PublicKey[], priorityFeeInLamports: number, - shouldLog: boolean + shouldLog: boolean, ): Promise { const mintAddress = mint; const payer = agent.wallet; @@ -135,13 +133,13 @@ async function processAll( agent.connection, agent.wallet, mintAddress, - agent.wallet.publicKey + agent.wallet.publicKey, ); const maxRecipientsPerInstruction = 5; const maxIxs = 3; // empirically determined (as of 12/15/2024) const lookupTableAddress = new PublicKey( - "9NYFyEqPkyXUhkerbGHXUXkvb4qpzeEdHuGpgbgpH1NJ" + "9NYFyEqPkyXUhkerbGHXUXkvb4qpzeEdHuGpgbgpH1NJ", ); const lookupTableAccount = ( @@ -164,7 +162,7 @@ async function processAll( ComputeBudgetProgram.setComputeUnitPrice({ microLamports: calculateComputeUnitPrice( priorityFeeInLamports, - 500_000 + 500_000, ), }), ]; @@ -184,13 +182,13 @@ async function processAll( toAddress: batch, amount: batch.map(() => amount), mint: mintAddress, - }) + }), ); } const compressIxs = await Promise.all(compressIxPromises); return [...instructions, ...compressIxs]; - }) + }), ); const url = agent.connection.rpcEndpoint; @@ -225,12 +223,12 @@ async function processAll( instructions, payer, lookupTableAccount, - i + idx + i + idx, ).then((signature) => { confirmedCount++; log("\r" + renderProgressBar(confirmedCount, totalBatches)); return signature; - }) + }), ); const batchResults = await Promise.allSettled(batchPromises); @@ -250,7 +248,7 @@ async function processAll( throw new Error( `Failed to process ${failures.length} batches: ${failures .map((f) => f.error) - .join(", ")}` + .join(", ")}`, ); } @@ -262,7 +260,7 @@ async function sendTransactionWithRetry( instructions: TransactionInstruction[], payer: Keypair, lookupTableAccount: AddressLookupTableAccount, - batchIndex: number + batchIndex: number, ): Promise { const MAX_RETRIES = 3; const INITIAL_BACKOFF = 500; // ms @@ -275,7 +273,7 @@ async function sendTransactionWithRetry( payer, blockhash, [], - [lookupTableAccount] + [lookupTableAccount], ); const signature = await sendAndConfirmTx(connection, tx); @@ -292,7 +290,7 @@ async function sendTransactionWithRetry( throw new Error( `Batch ${batchIndex} failed after ${attempt + 1} attempts: ${ error.message - }` + }`, ); } diff --git a/src/tools/stake_with_jup.ts b/src/tools/stake_with_jup.ts index e152532..981dd64 100644 --- a/src/tools/stake_with_jup.ts +++ b/src/tools/stake_with_jup.ts @@ -1,14 +1,14 @@ import { VersionedTransaction } from "@solana/web3.js"; -import { SolanaAgentKit } from "../agent"; +import { SolanaAgent } from "../index"; /** * Stake SOL with Jup validator - * @param agent SolanaAgentKit instance + * @param agent SolanaAgent instance * @param amount Amount of SOL to stake * @returns Transaction signature */ export async function stakeWithJup( - agent: SolanaAgentKit, + agent: SolanaAgent, amount: number, ): Promise { try { diff --git a/src/tools/trade.ts b/src/tools/trade.ts index b17bc41..4c9b713 100644 --- a/src/tools/trade.ts +++ b/src/tools/trade.ts @@ -1,10 +1,14 @@ -import { VersionedTransaction, PublicKey, LAMPORTS_PER_SOL } from "@solana/web3.js"; -import { SolanaAgentKit } from "../index"; +import { + VersionedTransaction, + PublicKey, + LAMPORTS_PER_SOL, +} from "@solana/web3.js"; +import { SolanaAgent } from "../index"; import { TOKENS, DEFAULT_OPTIONS, JUP_API } from "../constants"; /** * Swap tokens using Jupiter Exchange - * @param agent SolanaAgentKit instance + * @param agent SolanaAgent instance * @param outputMint Target token mint address * @param inputAmount Amount to swap (in token decimals) * @param inputMint Source token mint address (defaults to USDC) @@ -12,7 +16,7 @@ import { TOKENS, DEFAULT_OPTIONS, JUP_API } from "../constants"; * @returns Transaction signature */ export async function trade( - agent: SolanaAgentKit, + agent: SolanaAgent, outputMint: PublicKey, inputAmount: number, inputMint: PublicKey = TOKENS.USDC, diff --git a/src/tools/transfer.ts b/src/tools/transfer.ts index acfec82..93607de 100644 --- a/src/tools/transfer.ts +++ b/src/tools/transfer.ts @@ -1,29 +1,25 @@ -import { SolanaAgentKit } from "../index"; -import { - PublicKey, - SystemProgram, - Transaction -} from "@solana/web3.js"; +import { SolanaAgent } from "../index"; +import { PublicKey, SystemProgram, Transaction } from "@solana/web3.js"; import { LAMPORTS_PER_SOL } from "@solana/web3.js"; -import { - getAssociatedTokenAddress, +import { + getAssociatedTokenAddress, createTransferInstruction, - getMint + getMint, } from "@solana/spl-token"; /** * Transfer SOL or SPL tokens to a recipient - * @param agent SolanaAgentKit instance + * @param agent SolanaAgent instance * @param to Recipient's public key * @param amount Amount to transfer * @param mint Optional mint address for SPL tokens * @returns Transaction signature */ export async function transfer( - agent: SolanaAgentKit, + agent: SolanaAgent, to: PublicKey, amount: number, - mint?: PublicKey + mint?: PublicKey, ): Promise { try { let tx: string; @@ -34,19 +30,19 @@ export async function transfer( SystemProgram.transfer({ fromPubkey: agent.wallet_address, toPubkey: to, - lamports: amount * LAMPORTS_PER_SOL - }) + lamports: amount * LAMPORTS_PER_SOL, + }), ); - tx = await agent.connection.sendTransaction( - transaction, - [agent.wallet] - ); + tx = await agent.connection.sendTransaction(transaction, [agent.wallet]); } else { // Transfer SPL token - const fromAta = await getAssociatedTokenAddress(mint, agent.wallet_address); + const fromAta = await getAssociatedTokenAddress( + mint, + agent.wallet_address, + ); const toAta = await getAssociatedTokenAddress(mint, to); - + // Get mint info to determine decimals const mintInfo = await getMint(agent.connection, mint); const adjustedAmount = amount * Math.pow(10, mintInfo.decimals); @@ -56,18 +52,15 @@ export async function transfer( fromAta, toAta, agent.wallet_address, - adjustedAmount - ) + adjustedAmount, + ), ); - tx = await agent.connection.sendTransaction( - transaction, - [agent.wallet] - ); + tx = await agent.connection.sendTransaction(transaction, [agent.wallet]); } return tx; } catch (error: any) { throw new Error(`Transfer failed: ${error.message}`); } -} \ No newline at end of file +} diff --git a/src/utils/send_tx.ts b/src/utils/send_tx.ts index 903ddd5..65fafe4 100644 --- a/src/utils/send_tx.ts +++ b/src/utils/send_tx.ts @@ -1,4 +1,4 @@ -import { SolanaAgentKit } from "../agent"; +import { SolanaAgent } from "../agent"; import { Transaction, Keypair, TransactionInstruction } from "@solana/web3.js"; import { Connection, ComputeBudgetProgram } from "@solana/web3.js"; @@ -41,7 +41,7 @@ export async function getPriorityFees(connection: Connection): Promise<{ const median = sortedFees.length % 2 === 0 ? ((sortedFees[mid - 1] ?? 0) + (sortedFees[mid] ?? 0)) / 2 - : sortedFees[mid] ?? 0; + : (sortedFees[mid] ?? 0); // Helper to create priority fee IX based on chosen strategy const createPriorityFeeIx = (fee: number) => { @@ -69,14 +69,14 @@ export async function getPriorityFees(connection: Connection): Promise<{ /** * Send a transaction with priority fees - * @param agent - SolanaAgentKit instance + * @param agent - SolanaAgent instance * @param tx - Transaction to send * @returns Transaction ID */ export async function sendTx( - agent: SolanaAgentKit, + agent: SolanaAgent, tx: Transaction, - otherKeypairs?: Keypair[] + otherKeypairs?: Keypair[], ) { tx.recentBlockhash = (await agent.connection.getLatestBlockhash()).blockhash; tx.feePayer = agent.wallet_address; @@ -90,9 +90,8 @@ export async function sendTx( await agent.connection.confirmTransaction({ signature: txid, blockhash: (await agent.connection.getLatestBlockhash()).blockhash, - lastValidBlockHeight: ( - await agent.connection.getLatestBlockhash() - ).lastValidBlockHeight, + lastValidBlockHeight: (await agent.connection.getLatestBlockhash()) + .lastValidBlockHeight, }); return txid; } diff --git a/test/index.ts b/test/index.ts index 9522c23..b226ce4 100644 --- a/test/index.ts +++ b/test/index.ts @@ -1,4 +1,4 @@ -import { SolanaAgentKit } from "../src"; +import { SolanaAgent } from "../src"; import { createSolanaTools } from "../src/langchain"; import { HumanMessage } from "@langchain/core/messages"; import { MemorySaver } from "@langchain/langgraph"; @@ -14,7 +14,7 @@ function validateEnvironment(): void { const missingVars: string[] = []; const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY"]; - requiredVars.forEach(varName => { + requiredVars.forEach((varName) => { if (!process.env[varName]) { missingVars.push(varName); } @@ -22,7 +22,7 @@ function validateEnvironment(): void { if (missingVars.length > 0) { console.error("Error: Required environment variables are not set"); - missingVars.forEach(varName => { + missingVars.forEach((varName) => { console.error(`${varName}=your_${varName.toLowerCase()}_here`); }); process.exit(1); @@ -50,13 +50,13 @@ async function initializeAgent() { } } - const solanaKit = new SolanaAgentKit( + const solanaAgent = new SolanaAgent( process.env.SOLANA_PRIVATE_KEY!, process.env.RPC_URL, - process.env.OPENAI_API_KEY! + process.env.OPENAI_API_KEY!, ); - const tools = createSolanaTools(solanaKit); + const tools = createSolanaTools(solanaAgent); const memory = new MemorySaver(); const config = { configurable: { thread_id: "Solana Agent Kit!" } }; @@ -65,13 +65,13 @@ async function initializeAgent() { 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://sendai.fun/kit for more information. Be - concise and helpful with your responses. Refrain from restating your tools' descriptions unless it is + 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://sendai.fun/kit for more information. Be + concise and helpful with your responses. Refrain from restating your tools' descriptions unless it is explicitly requested. `, }); @@ -96,7 +96,10 @@ async function runAutonomousMode(agent: any, config: any, interval = 10) { "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) { @@ -107,7 +110,7 @@ async function runAutonomousMode(agent: any, config: any, interval = 10) { console.log("-------------------"); } - await new Promise(resolve => setTimeout(resolve, interval * 1000)); + await new Promise((resolve) => setTimeout(resolve, interval * 1000)); } catch (error) { if (error instanceof Error) { console.error("Error:", error.message); @@ -126,7 +129,7 @@ async function runChatMode(agent: any, config: any) { }); const question = (prompt: string): Promise => - new Promise(resolve => rl.question(prompt, resolve)); + new Promise((resolve) => rl.question(prompt, resolve)); try { while (true) { @@ -136,7 +139,10 @@ async function runChatMode(agent: any, config: any) { 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) { @@ -164,7 +170,7 @@ async function chooseMode(): Promise<"chat" | "auto"> { }); const question = (prompt: string): Promise => - new Promise(resolve => rl.question(prompt, resolve)); + new Promise((resolve) => rl.question(prompt, resolve)); while (true) { console.log("\nAvailable modes:"); @@ -206,7 +212,7 @@ async function main() { } if (require.main === module) { - main().catch(error => { + main().catch((error) => { console.error("Fatal error:", error); process.exit(1); }); From 6d4f468fb3f35a3e39e1db37f73f10f9a7cb33fa Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 22 Dec 2024 01:30:29 +0530 Subject: [PATCH 02/10] fix --- README.md | 4 +- docs/assets/highlight.css | 15 +- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 13 +- docs/functions/createSolanaTools.html | 2 +- docs/index.html | 119 ++++++++----- docs/interfaces/CollectionDeployment.html | 4 +- docs/interfaces/CollectionOptions.html | 4 +- docs/interfaces/Creator.html | 4 +- docs/interfaces/FetchPriceResponse.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/media/CONTRIBUTING.md | 154 +++++++++++++++++ guides/add_your_own_tool.md | 14 +- src/agent/index.ts | 4 +- src/index.ts | 4 +- src/langchain/index.ts | 161 +++++++++--------- src/tools/create_image.ts | 4 +- .../create_orca_single_sided_whirlpool.ts | 6 +- src/tools/deploy_collection.ts | 4 +- src/tools/deploy_token.ts | 4 +- src/tools/get_balance.ts | 4 +- src/tools/get_primary_domain.ts | 4 +- src/tools/get_tps.ts | 2 +- src/tools/launch_pumpfun_token.ts | 4 +- src/tools/lend.ts | 4 +- src/tools/mint_nft.ts | 4 +- src/tools/openbook_create_market.ts | 4 +- src/tools/raydium_create_ammV4.ts | 4 +- src/tools/raydium_create_clmm.ts | 4 +- src/tools/raydium_create_cpmm.ts | 4 +- src/tools/register_domain.ts | 4 +- src/tools/request_faucet_funds.ts | 4 +- src/tools/resolve_sol_domain.ts | 4 +- src/tools/send_compressed_airdrop.ts | 6 +- src/tools/stake_with_jup.ts | 4 +- src/tools/trade.ts | 4 +- src/tools/transfer.ts | 4 +- src/utils/send_tx.ts | 4 +- test/index.ts | 2 +- 43 files changed, 407 insertions(+), 213 deletions(-) create mode 100644 docs/media/CONTRIBUTING.md diff --git a/README.md b/README.md index 6e2df64..93c262c 100644 --- a/README.md +++ b/README.md @@ -78,10 +78,10 @@ npm install solana-agent-kit ## Quick Start ```typescript -import { SolanaAgent, createSolanaTools } from "solana-agent-kit"; +agent: SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; // Initialize with private key and optional RPC URL -const agent = new SolanaAgent( +const agent = new SolanaAgentKit( "your-wallet-private-key-as-base58", "https://api.mainnet-beta.solana.com", "your-openai-api-key" diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css index 63010a9..fd488bf 100644 --- a/docs/assets/highlight.css +++ b/docs/assets/highlight.css @@ -5,8 +5,8 @@ --dark-hl-1: #D4D4D4; --light-hl-2: #A31515; --dark-hl-2: #CE9178; - --light-hl-3: #AF00DB; - --dark-hl-3: #C586C0; + --light-hl-3: #000000; + --dark-hl-3: #C8C8C8; --light-hl-4: #001080; --dark-hl-4: #9CDCFE; --light-hl-5: #008000; @@ -15,8 +15,10 @@ --dark-hl-6: #569CD6; --light-hl-7: #0070C1; --dark-hl-7: #4FC1FF; - --light-hl-8: #098658; - --dark-hl-8: #B5CEA8; + --light-hl-8: #AF00DB; + --dark-hl-8: #C586C0; + --light-hl-9: #098658; + --dark-hl-9: #B5CEA8; --light-code-background: #FFFFFF; --dark-code-background: #1E1E1E; } @@ -31,6 +33,7 @@ --hl-6: var(--light-hl-6); --hl-7: var(--light-hl-7); --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); --code-background: var(--light-code-background); } } @@ -44,6 +47,7 @@ --hl-6: var(--dark-hl-6); --hl-7: var(--dark-hl-7); --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); --code-background: var(--dark-code-background); } } @@ -57,6 +61,7 @@ --hl-6: var(--light-hl-6); --hl-7: var(--light-hl-7); --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); --code-background: var(--light-code-background); } @@ -70,6 +75,7 @@ --hl-6: var(--dark-hl-6); --hl-7: var(--dark-hl-7); --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); --code-background: var(--dark-code-background); } @@ -82,4 +88,5 @@ .hl-6 { color: var(--hl-6); } .hl-7 { color: var(--hl-7); } .hl-8 { color: var(--hl-8); } +.hl-9 { color: var(--hl-9); } pre, code { background: var(--code-background); } diff --git a/docs/assets/search.js b/docs/assets/search.js index 0bcb10d..8b3e63a 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 b767597..8179e3b 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, and trading

+Provides a unified interface for token operations, NFT management, trading and more

SolanaAgentKit

-

Constructors

Constructors

Properties

connection openai_api_key wallet @@ -9,6 +9,7 @@ Provides a unified interface for token operations, NFT management, and trading

Methods

createOrcaSingleSidedWhirlpool deployCollection deployToken +fetchTokenPrice getBalance getPrimaryDomain getTokenDataByAddress @@ -28,7 +29,7 @@ Provides a unified interface for token operations, NFT management, and tradingstake 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

    • Optionaltoken_address: PublicKey

    Returns Promise<null | number>

  • Parameters

    • account: PublicKey

    Returns Promise<string>

  • Parameters

    • tokenName: string
    • tokenTicker: string
    • description: string
    • imageUrl: string
    • Optionaloptions: PumpFunTokenOptions

    Returns Promise<{
        metadataUri: any;
        mint: string;
        signature: 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

    • 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<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

    • 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>

  • Parameters

    • Optionaltoken_address: PublicKey

    Returns Promise<null | number>

  • 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

    • 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<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 ca5e484..1f177c1 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)[]

+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)[]

diff --git a/docs/index.html b/docs/index.html index e7acd0e..c39a52f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,80 +1,112 @@ -solana-agent-kit

solana-agent-kit

Solana Agent Kit

A powerful toolkit for interacting with the Solana blockchain, providing easy-to-use functions for token operations, NFT management, and trading. Now integrated with LangChain for enhanced functionality.

-
    -
  • -

    🪙 Token Operations

    +solana-agent-kit

    solana-agent-kit

    +

    Solana Agent Kit

    +

    Solana Agent Kit Cover 1 (3)

    +

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

      -
    • Deploy new SPL tokens
    • -
    • Transfer SOL and SPL tokens
    • -
    • Check token balances
    • +
    • Trade tokens
    • +
    • Launch new tokens
    • +
    • Lend assets
    • +
    • Send compressed airdrops
    • +
    • Execute blinks
    • +
    • Launch tokens on AMMs
    • +
    • 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.

    +
      +
    • +

      Token Operations

      +
        +
      • Deploy SPL tokens by Metaplex
      • +
      • Transfer assets
      • +
      • Balance checks
      • Stake SOL
      • +
      • Zk compressed Airdrop by Light Protocol and Helius
    • -

      🖼️ NFT Management

      +

      NFT Management via Metaplex

        -
      • Deploy NFT collections
      • -
      • Mint NFTs to collections
      • -
      • Manage metadata and royalties
      • +
      • Collection deployment
      • +
      • NFT minting
      • +
      • Metadata management
      • +
      • Royalty configuration
    • -

      💱 Trading

      +

      DeFi Integration

        -
      • Integrated Jupiter Exchange support
      • -
      • Token swaps with customizable slippage
      • -
      • Direct routing options
      • +
      • Jupiter Exchange swaps
      • +
      • Launch on Pump via PumpPortal
      • +
      • Raydium pool creation (CPMM, CLMM, AMMv4)
      • +
      • Orca whirlpool integration
      • +
      • Meteora Dynamic AMM, DLMM Pool, and Alpga Vault
      • +
      • Openbook market creation
      • +
      • Register and Resolve SNS
      • +
      • Jito Bundles
    • -

      🏦 Yield Farming

      +

      Solana Blinks

        -
      • Lend idle assets to earn interest with Lulo
      • +
      • Lending by Lulo
      • +
      • Send Arcade Games
      • +
      • JupSOL staking
      • +
      +
    • +
    +
      +
    • +

      LangChain Integration

      +
        +
      • Ready-to-use LangChain tools for blockchain operations
      • +
      • Autonomous agent support with React framework
      • +
      • Memory management for persistent interactions
      • +
      • Streaming responses for real-time feedback
    • -

      🔗 LangChain Integration

      +

      Autonomous Modes

        -
      • Utilize LangChain tools for enhanced blockchain interactions
      • -
      • Access a suite of tools for balance checks, transfers, token deployments, and more
      • +
      • Interactive chat mode for guided operations
      • +
      • Autonomous mode for independent agent actions
      • +
      • Configurable action intervals
      • +
      • Built-in error handling and recovery
      • +
      +
    • +
    • +

      AI Tools

      +
        +
      • DALL-E integration for NFT artwork generation
      • +
      • Natural language processing for blockchain commands
      • +
      • Price feed integration for market analysis
      • +
      • Automated decision-making capabilities
    -
    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); +
    agent: 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 { deploy_token } from "solana-agent-kit";

    const result = await deploy_token(
    agent,
    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());
    -
    import { deploy_collection } from "solana-agent-kit";

    const collection = await deploy_collection(agent, {
    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 { trade } from "solana-agent-kit";
    import { PublicKey } from "@solana/web3.js";

    const signature = await trade(
    agent,
    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 { lendAsset } from "solana-agent-kit";
    import { PublicKey } from "@solana/web3.js";

    const signature = await lendAsset(
    agent,
    100 // amount
    ); +
    import { PublicKey } from "@solana/web3.js";

    const signature = await agent.lendAssets(
    100 // amount of USDC to lend
    );
    -
    import { stakeWithJup } from "solana-agent-kit";

    const signature = await stakeWithJup(
    agent,
    1 // amount in SOL
    ); +
    const signature = await agent.stake(
    1 // amount in SOL to stake
    );
    -
    import { fetchPrice } from "solana-agent-kit";

    const price = await fetchPrice(
    agent,
    "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN" // Token mint address
    );

    console.log("Price in USDC:", price); +
    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 {
    sendCompressedAirdrop,
    getAirdropCostEstimate,
    } from "solana-agent-kit";
    import { PublicKey } from "@solana/web3.js";

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

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

    Deploy a new SPL token with optional initial supply. If not specified, decimals default to 9.

    -

    Create a new NFT collection with customizable metadata and royalties.

    -

    Mint a new NFT as part of an existing collection.

    -

    Transfer SOL or SPL tokens to a recipient.

    -

    Swap tokens using Jupiter Exchange integration.

    -

    Check SOL or token balance for the agent's wallet.

    -

    Lend idle assets to earn interest with Lulo.

    -

    Stake SOL with Jupiter to earn rewards.

    -

    Send an SPL token airdrop to many recipients at low cost via ZK Compression.

    The toolkit relies on several key Solana and Metaplex libraries:

    • @solana/web3.js
    • @@ -85,7 +117,8 @@
    • @lightprotocol/compressed-token
    • @lightprotocol/stateless.js
    -

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

    -

    ISC License

    +

    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

    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 0438e92..6999f92 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 997e32b..29b5bfc 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 72a3136..38c524a 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 f2ffea8..37c020c 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/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index 1fbabda..a162800 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 0aafae9..f80d34c 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 4c85a86..f5a840f 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 d904b0c..fd2a37f 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 7e65f2a..da5a287 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/media/CONTRIBUTING.md b/docs/media/CONTRIBUTING.md new file mode 100644 index 0000000..9cc1837 --- /dev/null +++ b/docs/media/CONTRIBUTING.md @@ -0,0 +1,154 @@ +# Contributing to Solana Agent Kit + +First off, thank you for considering contributing to Solana Agent Kit! 🎉 Your contributions are **greatly appreciated**. + +## Table of Contents + +- [Contributing to Solana Agent Kit](#contributing-to-solana-agent-kit) + - [Table of Contents](#table-of-contents) + - [Code of Conduct](#code-of-conduct) + - [How Can I Contribute?](#how-can-i-contribute) + - [Reporting Bugs](#reporting-bugs) + - [Suggesting Enhancements](#suggesting-enhancements) + - [Your First Code Contribution](#your-first-code-contribution) + - [Pull Requests](#pull-requests) + - [Style Guides](#style-guides) + - [Code Style](#code-style) + - [Commit Messages](#commit-messages) + - [Naming Conventions](#naming-conventions) + - [Development Setup](#development-setup) + - [Prerequisites](#prerequisites) + - [Installation](#installation) + - [Building the Project](#building-the-project) + - [Running Tests](#running-tests) + - [Generating Documentation](#generating-documentation) + - [Security](#security) + - [License](#license) + +## Code of Conduct + +This project adheres to the [Contributor Covenant Code of Conduct](https://www.contributor-covenant.org/version/2/0/code_of_conduct/). By participating, you are expected to uphold this code. Please report unacceptable behavior to [aryan@sendai.fun](mailto:aryan@sendai.fun). + +## How Can I Contribute? + +### Reporting Bugs + +**Great**! Opening an issue is the best way to help us improve. Here's how you can report a bug: + +1. **Search** the [existing issues](https://github.com/sendaifun/solana-agent-kit/issues) to make sure it hasn't been reported. +2. **Open a new issue** and fill out the template with as much information as possible. +3. **Provide reproduction steps** if applicable. + +### Suggesting Enhancements + +We welcome your ideas for improving Solana Agent Kit! To suggest an enhancement: + +1. **Search** the [existing issues](https://github.com/sendaifun/solana-agent-kit/issues) to see if it's already been suggested. +2. **Open a new issue** and describe your idea in detail. + +### Your First Code Contribution + +Unsure where to start? You can help out by: + +- Fixing simple bugs. +- Improving documentation. +- Adding tests. + +Check out the [Good First Issues](https://github.com/sendaifun/solana-agent-kit/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) to get started! + +### Pull Requests + +1. **Fork** the repository. +2. **Create** a new branch for your feature or bugfix. + ```bash + git checkout -b feature/your-feature-name + ``` +3. **Commit** your changes with clear and descriptive messages. +4. **Push** to your fork. + ```bash + git push origin feature/your-feature-name + ``` +5. **Open a Pull Request** against the `main` branch of this repository. + +## Style Guides + +### Code Style + +- **Language**: TypeScript +- **Formatting**: Follow the existing codebase formatting. Consider using [Prettier](https://prettier.io/) for consistent code formatting. +- **Code Quality**: Adhere to the code quality rules defined in `.eslintrc`. Ensure all checks pass before submitting a PR. + +### Commit Messages + +Use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) for your commit messages. Examples: + +- `feat: add ability to deploy new SPL token` +- `fix: handle edge case when deploying collection` +- `docs: update README with new usage examples` + +### Naming Conventions + +- **Variables and Functions**: `camelCase` +- **Classes and Types**: `PascalCase` +- **Constants**: `UPPER_SNAKE_CASE` + +## Development Setup + +### Prerequisites + +- **Node.js**: v23.x or higher +- **npm**: v10.x or higher +- **Git**: Installed and configured + +### Installation + +1. **Clone** the repository: + ```bash + git clone https://github.com/yourusername/solana-agent-kit.git + ``` +2. **Navigate** to the project directory: + ```bash + cd solana-agent-kit + ``` +3. **Install** dependencies: + ```bash + pnpm install + ``` + +### Building the Project + +To compile the TypeScript code: + +```bash +pnpm run build +``` + +### Running Tests + +To execute the test suite: + +```bash +pnpm run test +``` + +### Generating Documentation + +To generate the project documentation using TypeDoc: + +```bash +npm run docs +``` + +The documentation will be available in the `docs/` directory. + +## Security + +This toolkit handles sensitive information such as private keys and API keys. **Ensure you never commit `.env` files or any sensitive data**. Review the `.gitignore` to confirm that sensitive files are excluded. + +For security vulnerabilities, please follow the [responsible disclosure](mailto:aryan@sendai.fun) process. + +## License + +This project is licensed under the [ISC License](LICENSE). + +--- diff --git a/guides/add_your_own_tool.md b/guides/add_your_own_tool.md index 71bfb7c..47782cb 100644 --- a/guides/add_your_own_tool.md +++ b/guides/add_your_own_tool.md @@ -21,19 +21,19 @@ Create a new TypeScript file in the `src/tools/` directory for your tool (e.g., ```typescript:src/tools/custom_tool.ts import { Tool } from "langchain/tools"; -import { SolanaAgent } from "../agent"; +import { SolanaAgentKit } from "../agent"; export class CustomTool extends Tool { name = "custom_tool"; description = "Description of what the custom tool does."; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } protected async _call(input: string): Promise { try { - const result = await this.solanaAgent.customFunction(input); + const result = await this.solanaKit.customFunction(input); return JSON.stringify({ status: "success", message: "Custom tool executed successfully", @@ -87,7 +87,7 @@ export function createSolanaTools(agent: SolanaAgentKit) { ### 6. Usage Example ```typescript -import { SolanaAgent, createSolanaTools } from "solana-agent-kit"; +agent: SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; const agent = new SolanaAgent( "your-wallet-private-key-as-base58", @@ -118,19 +118,19 @@ Here's a complete example of implementing a tool to fetch token prices: ```typescript:src/tools/fetch_token_price.ts import { Tool } from "langchain/tools"; -import { SolanaAgent } from "../agent"; +import { SolanaAgentKit } from "../agent"; export class FetchTokenPriceTool extends Tool { name = "fetch_token_price"; description = "Fetches the current price of a specified token."; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } protected async _call(tokenSymbol: string): Promise { try { - const price = await this.solanaAgent.getTokenPrice(tokenSymbol); + const price = await this.solanaKit.getTokenPrice(tokenSymbol); return JSON.stringify({ status: "success", message: `Price fetched successfully for ${tokenSymbol}.`, diff --git a/src/agent/index.ts b/src/agent/index.ts index f40e18d..44eae4f 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -42,12 +42,12 @@ import { BN } from "@coral-xyz/anchor"; * Main class for interacting with Solana blockchain * Provides a unified interface for token operations, NFT management, trading and more * - * @class SolanaAgent + * @class SolanaAgentKit * @property {Connection} connection - Solana RPC connection * @property {Keypair} wallet - Wallet keypair for signing transactions * @property {PublicKey} wallet_address - Public key of the wallet */ -export class SolanaAgent { +export class SolanaAgentKit { public connection: Connection; public wallet: Keypair; public wallet_address: PublicKey; diff --git a/src/index.ts b/src/index.ts index 8c267a1..1b4116f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,7 @@ -import { SolanaAgent } from "./agent"; +import { SolanaAgentKit } from "./agent"; import { createSolanaTools } from "./langchain"; -export { SolanaAgent, createSolanaTools }; +export { SolanaAgentKit, createSolanaTools }; // Optional: Export types that users might need export * from "./types"; diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 11a0ff1..c5db27c 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1,7 +1,7 @@ import { PublicKey } from "@solana/web3.js"; import Decimal from "decimal.js"; import { Tool } from "langchain/tools"; -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; import { create_image } from "../tools/create_image"; import { BN } from "@coral-xyz/anchor"; import { FEE_TIERS } from "../tools"; @@ -17,14 +17,14 @@ export class SolanaBalanceTool extends Tool { Inputs: tokenAddress: string, eg "So11111111111111111111111111111111111111112" (optional)`; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } protected async _call(input: string): Promise { try { const tokenAddress = input ? new PublicKey(input) : undefined; - const balance = await this.solanaAgent.getBalance(tokenAddress); + const balance = await this.solanaKit.getBalance(tokenAddress); return JSON.stringify({ status: "success", @@ -50,7 +50,7 @@ export class SolanaTransferTool extends Tool { amount: number, eg 1 (required) mint?: string, eg "So11111111111111111111111111111111111111112" or "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa" (optional)`; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -63,7 +63,7 @@ export class SolanaTransferTool extends Tool { ? new PublicKey(parsedInput.mint) : undefined; - const tx = await this.solanaAgent.transfer( + const tx = await this.solanaKit.transfer( recipient, parsedInput.amount, mintAddress, @@ -98,7 +98,7 @@ export class SolanaDeployTokenTool extends Tool { decimals?: number, eg 9 (optional, defaults to 9) initialSupply?: number, eg 1000000 (optional)`; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -106,7 +106,7 @@ export class SolanaDeployTokenTool extends Tool { try { const parsedInput = JSON.parse(input); - const result = await this.solanaAgent.deployToken( + const result = await this.solanaKit.deployToken( parsedInput.name, parsedInput.uri, parsedInput.symbol, @@ -139,7 +139,7 @@ export class SolanaDeployCollectionTool extends Tool { uri: string, eg "https://example.com/collection.json" (required) royaltyBasisPoints?: number, eg 500 for 5% (optional)`; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -147,7 +147,7 @@ export class SolanaDeployCollectionTool extends Tool { try { const parsedInput = JSON.parse(input); - const result = await this.solanaAgent.deployCollection(parsedInput); + const result = await this.solanaKit.deployCollection(parsedInput); return JSON.stringify({ status: "success", @@ -173,9 +173,9 @@ export class SolanaMintNFTTool extends Tool { 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.solanaAgent.wallet_address.toString()}`; + 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 solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -183,7 +183,7 @@ export class SolanaMintNFTTool extends Tool { try { const parsedInput = JSON.parse(input); - const result = await this.solanaAgent.mintNFT( + const result = await this.solanaKit.mintNFT( new PublicKey(parsedInput.collectionMint), { name: parsedInput.name, @@ -191,7 +191,7 @@ export class SolanaMintNFTTool extends Tool { }, parsedInput.recipient ? new PublicKey(parsedInput.recipient) - : this.solanaAgent.wallet_address, + : this.solanaKit.wallet_address, ); return JSON.stringify({ @@ -225,7 +225,7 @@ export class SolanaTradeTool extends Tool { inputMint?: string, eg "So11111111111111111111111111111111111111112" (optional) slippageBps?: number, eg 100 (optional)`; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -233,7 +233,7 @@ export class SolanaTradeTool extends Tool { try { const parsedInput = JSON.parse(input); - const tx = await this.solanaAgent.trade( + const tx = await this.solanaKit.trade( new PublicKey(parsedInput.outputMint), parsedInput.inputAmount, parsedInput.inputMint @@ -264,18 +264,18 @@ export class SolanaRequestFundsTool extends Tool { name = "solana_request_funds"; description = "Request SOL from Solana faucet (devnet/testnet only)"; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } protected async _call(_input: string): Promise { try { - await this.solanaAgent.requestFaucetFunds(); + await this.solanaKit.requestFaucetFunds(); return JSON.stringify({ status: "success", message: "Successfully requested faucet funds", - network: this.solanaAgent.connection.rpcEndpoint.split("/")[2], + network: this.solanaKit.connection.rpcEndpoint.split("/")[2], }); } catch (error: any) { return JSON.stringify({ @@ -296,7 +296,7 @@ export class SolanaRegisterDomainTool extends Tool { spaceKB: number, eg 1 (optional, default is 1) `; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -317,7 +317,7 @@ export class SolanaRegisterDomainTool extends Tool { const parsedInput = toJSON(input); this.validateInput(parsedInput); - const tx = await this.solanaAgent.registerDomain( + const tx = await this.solanaKit.registerDomain( parsedInput.name, parsedInput.spaceKB || 1, ); @@ -347,14 +347,14 @@ export class SolanaResolveDomainTool extends Tool { domain: string, eg "pumpfun.sol" or "pumpfun"(required) `; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } protected async _call(input: string): Promise { try { const domain = input.trim(); - const publicKey = await this.solanaAgent.resolveSolDomain(domain); + const publicKey = await this.solanaKit.resolveSolDomain(domain); return JSON.stringify({ status: "success", @@ -379,14 +379,14 @@ export class SolanaGetDomainTool extends Tool { account: string, eg "4Be9CvxqHW6BYiRAxW9Q3xu1ycTMWaL5z8NX4HR3ha7t" (required) `; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } protected async _call(input: string): Promise { try { const account = new PublicKey(input.trim()); - const domain = await this.solanaAgent.getPrimaryDomain(account); + const domain = await this.solanaKit.getPrimaryDomain(account); return JSON.stringify({ status: "success", @@ -407,12 +407,12 @@ export class SolanaGetWalletAddressTool extends Tool { name = "solana_get_wallet_address"; description = `Get the wallet address of the agent`; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } async _call(_input: string): Promise { - return this.solanaAgent.wallet_address.toString(); + return this.solanaKit.wallet_address.toString(); } } @@ -430,7 +430,7 @@ 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 solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -464,7 +464,7 @@ export class SolanaPumpfunTokenLaunchTool extends Tool { this.validateInput(parsedInput); // Launch token with validated input - await this.solanaAgent.launchPumpFunToken( + await this.solanaKit.launchPumpFunToken( parsedInput.tokenName, parsedInput.tokenTicker, parsedInput.description, @@ -498,7 +498,7 @@ export class SolanaCreateImageTool extends Tool { description = "Create an image using OpenAI's DALL-E. Input should be a string prompt for the image."; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -511,7 +511,7 @@ export class SolanaCreateImageTool extends Tool { protected async _call(input: string): Promise { try { this.validateInput(input); - const result = await create_image(this.solanaAgent, input.trim()); + const result = await create_image(this.solanaKit, input.trim()); return JSON.stringify({ status: "success", @@ -535,7 +535,7 @@ export class SolanaLendAssetTool extends Tool { Inputs (input is a json string): amount: number, eg 1, 0.01 (required)`; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -543,7 +543,7 @@ export class SolanaLendAssetTool extends Tool { try { let amount = JSON.parse(input).amount || input; - const tx = await this.solanaAgent.lendAssets(amount); + const tx = await this.solanaKit.lendAssets(amount); return JSON.stringify({ status: "success", @@ -565,13 +565,13 @@ export class SolanaTPSCalculatorTool extends Tool { name = "solana_get_tps"; description = "Get the current TPS of the Solana network"; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } async _call(_input: string): Promise { try { - const tps = await this.solanaAgent.getTPS(); + const tps = await this.solanaKit.getTPS(); return `Solana (mainnet-beta) current transactions per second: ${tps}`; } catch (error: any) { return `Error fetching TPS: ${error.message}`; @@ -586,7 +586,7 @@ export class SolanaStakeTool extends Tool { Inputs ( input is a JSON string ): amount: number, eg 1 or 0.01 (required)`; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -594,7 +594,7 @@ export class SolanaStakeTool extends Tool { try { const parsedInput = JSON.parse(input) || Number(input); - const tx = await this.solanaAgent.stake(parsedInput.amount); + const tx = await this.solanaKit.stake(parsedInput.amount); return JSON.stringify({ status: "success", @@ -622,13 +622,13 @@ export class SolanaFetchPriceTool extends Tool { Inputs: - tokenId: string, the mint address of the token, e.g., "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"`; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } async _call(input: string): Promise { try { - const price = await this.solanaAgent.fetchTokenPrice(input.trim()); + const price = await this.solanaKit.fetchTokenPrice(input.trim()); return JSON.stringify({ status: "success", tokenId: input.trim(), @@ -651,7 +651,7 @@ export class SolanaTokenDataTool extends Tool { Inputs: mintAddress is required. mintAddress: string, eg "So11111111111111111111111111111111111111112" (required)`; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -659,8 +659,7 @@ export class SolanaTokenDataTool extends Tool { try { const parsedInput = input.trim(); - const tokenData = - await this.solanaAgent.getTokenDataByAddress(parsedInput); + const tokenData = await this.solanaKit.getTokenDataByAddress(parsedInput); return JSON.stringify({ status: "success", @@ -683,14 +682,14 @@ export class SolanaTokenDataByTickerTool extends Tool { Inputs: ticker is required. ticker: string, eg "USDC" (required)`; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } protected async _call(input: string): Promise { try { const ticker = input.trim(); - const tokenData = await this.solanaAgent.getTokenDataByTicker(ticker); + const tokenData = await this.solanaKit.getTokenDataByTicker(ticker); return JSON.stringify({ status: "success", tokenData: tokenData, @@ -717,7 +716,7 @@ 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 solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -725,7 +724,7 @@ export class SolanaCompressedAirdropTool extends Tool { try { const parsedInput = JSON.parse(input); - const txs = await this.solanaAgent.sendCompressedAirdrop( + const txs = await this.solanaKit.sendCompressedAirdrop( parsedInput.mintAddress, parsedInput.amount, parsedInput.decimals, @@ -761,7 +760,7 @@ export class SolanaCreateSingleSidedWhirlpoolTool extends Tool { - maxPrice: number, eg: 5.0 (required, maximum price at which liquidity is added) - feeTier: number, eg: 0.30 (required, fee tier for the pool)`; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -781,7 +780,7 @@ export class SolanaCreateSingleSidedWhirlpoolTool extends Tool { ); } - const txId = await this.solanaAgent.createOrcaSingleSidedWhirlpool( + const txId = await this.solanaKit.createOrcaSingleSidedWhirlpool( depositTokenAmount, depositTokenMint, otherTokenMint, @@ -816,7 +815,7 @@ export class SolanaRaydiumCreateAmmV4 extends Tool { startTime: number(seconds), eg: now number or zero (required) `; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -824,7 +823,7 @@ export class SolanaRaydiumCreateAmmV4 extends Tool { try { let inputFormat = JSON.parse(input); - const tx = await this.solanaAgent.raydiumCreateAmmV4( + const tx = await this.solanaKit.raydiumCreateAmmV4( new PublicKey(inputFormat.marketId), new BN(inputFormat.baseAmount), new BN(inputFormat.quoteAmount), @@ -858,7 +857,7 @@ export class SolanaRaydiumCreateClmm extends Tool { startTime: number(seconds), eg: now number or zero (required) `; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -866,7 +865,7 @@ export class SolanaRaydiumCreateClmm extends Tool { try { let inputFormat = JSON.parse(input); - const tx = await this.solanaAgent.raydiumCreateClmm( + const tx = await this.solanaKit.raydiumCreateClmm( new PublicKey(inputFormat.mint1), new PublicKey(inputFormat.mint2), @@ -904,7 +903,7 @@ export class SolanaRaydiumCreateCpmm extends Tool { startTime: number(seconds), eg: now number or zero (required) `; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -912,7 +911,7 @@ export class SolanaRaydiumCreateCpmm extends Tool { try { let inputFormat = JSON.parse(input); - const tx = await this.solanaAgent.raydiumCreateCpmm( + const tx = await this.solanaKit.raydiumCreateCpmm( new PublicKey(inputFormat.mint1), new PublicKey(inputFormat.mint2), @@ -950,7 +949,7 @@ export class SolanaOpenbookCreateMarket extends Tool { tickSize: number (required) `; - constructor(private solanaAgent: SolanaAgent) { + constructor(private solanaKit: SolanaAgentKit) { super(); } @@ -958,7 +957,7 @@ export class SolanaOpenbookCreateMarket extends Tool { try { let inputFormat = JSON.parse(input); - const tx = await this.solanaAgent.openbookCreateMarket( + const tx = await this.solanaKit.openbookCreateMarket( new PublicKey(inputFormat.baseMint), new PublicKey(inputFormat.quoteMint), @@ -981,32 +980,32 @@ export class SolanaOpenbookCreateMarket extends Tool { } } -export function createSolanaTools(solanaAgent: SolanaAgent) { +export function createSolanaTools(solanaKit: SolanaAgentKit) { return [ - new SolanaBalanceTool(solanaAgent), - new SolanaTransferTool(solanaAgent), - new SolanaDeployTokenTool(solanaAgent), - new SolanaDeployCollectionTool(solanaAgent), - new SolanaMintNFTTool(solanaAgent), - new SolanaTradeTool(solanaAgent), - new SolanaRequestFundsTool(solanaAgent), - new SolanaRegisterDomainTool(solanaAgent), - new SolanaGetWalletAddressTool(solanaAgent), - new SolanaPumpfunTokenLaunchTool(solanaAgent), - new SolanaCreateImageTool(solanaAgent), - new SolanaLendAssetTool(solanaAgent), - new SolanaTPSCalculatorTool(solanaAgent), - new SolanaStakeTool(solanaAgent), - new SolanaFetchPriceTool(solanaAgent), - new SolanaResolveDomainTool(solanaAgent), - new SolanaGetDomainTool(solanaAgent), - new SolanaTokenDataTool(solanaAgent), - new SolanaTokenDataByTickerTool(solanaAgent), - new SolanaCompressedAirdropTool(solanaAgent), - new SolanaRaydiumCreateAmmV4(solanaAgent), - new SolanaRaydiumCreateClmm(solanaAgent), - new SolanaRaydiumCreateCpmm(solanaAgent), - new SolanaOpenbookCreateMarket(solanaAgent), - new SolanaCreateSingleSidedWhirlpoolTool(solanaAgent), + new SolanaBalanceTool(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 SolanaResolveDomainTool(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 SolanaCreateSingleSidedWhirlpoolTool(solanaKit), ]; } diff --git a/src/tools/create_image.ts b/src/tools/create_image.ts index c5660ae..b1b085d 100644 --- a/src/tools/create_image.ts +++ b/src/tools/create_image.ts @@ -1,4 +1,4 @@ -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; import OpenAI from "openai"; /** @@ -10,7 +10,7 @@ import OpenAI from "openai"; * @returns Object containing the generated image URLs */ export async function create_image( - agent: SolanaAgent, + agent: SolanaAgentKit, prompt: string, size: "256x256" | "512x512" | "1024x1024" = "1024x1024", n: number = 1, diff --git a/src/tools/create_orca_single_sided_whirlpool.ts b/src/tools/create_orca_single_sided_whirlpool.ts index 095d8fc..bed5870 100644 --- a/src/tools/create_orca_single_sided_whirlpool.ts +++ b/src/tools/create_orca_single_sided_whirlpool.ts @@ -1,5 +1,5 @@ import { Keypair, PublicKey, Transaction } from "@solana/web3.js"; -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; import { BN, Wallet } from "@coral-xyz/anchor"; import { Decimal } from "decimal.js"; import { @@ -99,7 +99,7 @@ export const FEE_TIERS = { * * @example * ```typescript - * import { SolanaAgentKit } from "your-sdk"; + * agent: SolanaAgentKitKit } from "your-sdk"; * import { PublicKey } from "@solana/web3.js"; * import { BN } from "@coral-xyz/anchor"; * import Decimal from "decimal.js"; @@ -125,7 +125,7 @@ export const FEE_TIERS = { * ``` */ export async function createOrcaSingleSidedWhirlpool( - agent: SolanaAgent, + agent: SolanaAgentKit, depositTokenAmount: BN, depositTokenMint: PublicKey, otherTokenMint: PublicKey, diff --git a/src/tools/deploy_collection.ts b/src/tools/deploy_collection.ts index 086d736..91e951c 100644 --- a/src/tools/deploy_collection.ts +++ b/src/tools/deploy_collection.ts @@ -1,4 +1,4 @@ -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; import { generateSigner, keypairIdentity, @@ -23,7 +23,7 @@ import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; * @returns Object containing collection address and metadata */ export async function deploy_collection( - agent: SolanaAgent, + agent: SolanaAgentKit, options: CollectionOptions, ): Promise { try { diff --git a/src/tools/deploy_token.ts b/src/tools/deploy_token.ts index 5940141..812d4b4 100644 --- a/src/tools/deploy_token.ts +++ b/src/tools/deploy_token.ts @@ -1,4 +1,4 @@ -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; import { PublicKey } from "@solana/web3.js"; import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; import { generateSigner, keypairIdentity } from "@metaplex-foundation/umi"; @@ -24,7 +24,7 @@ import { * @returns Object containing token mint address and initial account (if supply was minted) */ export async function deploy_token( - agent: SolanaAgent, + agent: SolanaAgentKit, name: string, uri: string, symbol: string, diff --git a/src/tools/get_balance.ts b/src/tools/get_balance.ts index fb70699..9e75daf 100644 --- a/src/tools/get_balance.ts +++ b/src/tools/get_balance.ts @@ -1,5 +1,5 @@ import { LAMPORTS_PER_SOL, PublicKey } from "@solana/web3.js"; -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; /** * Get the balance of SOL or an SPL token for the agent's wallet @@ -8,7 +8,7 @@ import { SolanaAgent } from "../index"; * @returns Promise resolving to the balance as a number (in UI units) or null if account doesn't exist */ export async function get_balance( - agent: SolanaAgent, + agent: SolanaAgentKit, token_address?: PublicKey, ): Promise { if (!token_address) diff --git a/src/tools/get_primary_domain.ts b/src/tools/get_primary_domain.ts index 01f19b6..d54f294 100644 --- a/src/tools/get_primary_domain.ts +++ b/src/tools/get_primary_domain.ts @@ -1,6 +1,6 @@ import { getPrimaryDomain as _getPrimaryDomain } from "@bonfida/spl-name-service"; import { PublicKey } from "@solana/web3.js"; -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; /** * Retrieves the primary .sol domain associated with a given Solana public key. @@ -15,7 +15,7 @@ import { SolanaAgent } from "../index"; * @throws Error if the domain is stale or if the domain resolution fails */ export async function getPrimaryDomain( - agent: SolanaAgent, + agent: SolanaAgentKit, account: PublicKey, ): Promise { try { diff --git a/src/tools/get_tps.ts b/src/tools/get_tps.ts index 38eb356..7314ce3 100644 --- a/src/tools/get_tps.ts +++ b/src/tools/get_tps.ts @@ -1,4 +1,4 @@ -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; export async function getTPS(agent: SolanaAgentKit): Promise { const perfSamples = await agent.connection.getRecentPerformanceSamples(); diff --git a/src/tools/launch_pumpfun_token.ts b/src/tools/launch_pumpfun_token.ts index ce997b4..7cb22cf 100644 --- a/src/tools/launch_pumpfun_token.ts +++ b/src/tools/launch_pumpfun_token.ts @@ -55,7 +55,7 @@ async function uploadMetadata( } async function createTokenTransaction( - agent: SolanaAgent, + agent: SolanaAgentKit, mintKeypair: Keypair, metadataResponse: any, options?: PumpFunTokenOptions, @@ -149,7 +149,7 @@ async function signAndSendTransaction( * @returns - Signature of the transaction, mint address and metadata URI, if successful, else error */ export async function launchPumpFunToken( - agent: SolanaAgent, + agent: SolanaAgentKit, tokenName: string, tokenTicker: string, description: string, diff --git a/src/tools/lend.ts b/src/tools/lend.ts index f036aa7..41107cf 100644 --- a/src/tools/lend.ts +++ b/src/tools/lend.ts @@ -1,5 +1,5 @@ import { VersionedTransaction } from "@solana/web3.js"; -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; /** * Lend tokens for yields using Lulo @@ -8,7 +8,7 @@ import { SolanaAgent } from "../index"; * @returns Transaction signature */ export async function lendAsset( - agent: SolanaAgent, + agent: SolanaAgentKit, amount: number, ): Promise { try { diff --git a/src/tools/mint_nft.ts b/src/tools/mint_nft.ts index 97e5fd2..88b37e4 100644 --- a/src/tools/mint_nft.ts +++ b/src/tools/mint_nft.ts @@ -1,4 +1,4 @@ -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; import { generateSigner, keypairIdentity } from "@metaplex-foundation/umi"; import { create, mplCore } from "@metaplex-foundation/mpl-core"; import { fetchCollection } from "@metaplex-foundation/mpl-core"; @@ -20,7 +20,7 @@ import { MintCollectionNFTResponse } from "../types"; * @returns Object containing NFT mint address and token account */ export async function mintCollectionNFT( - agent: SolanaAgent, + agent: SolanaAgentKit, collectionMint: PublicKey, metadata: { name: string; diff --git a/src/tools/openbook_create_market.ts b/src/tools/openbook_create_market.ts index 29dd829..c7c12aa 100644 --- a/src/tools/openbook_create_market.ts +++ b/src/tools/openbook_create_market.ts @@ -5,10 +5,10 @@ import { } from "@raydium-io/raydium-sdk-v2"; import { MintLayout, TOKEN_PROGRAM_ID } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; export async function openbookCreateMarket( - agent: SolanaAgent, + agent: SolanaAgentKit, baseMint: PublicKey, quoteMint: PublicKey, lotSize: number = 1, diff --git a/src/tools/raydium_create_ammV4.ts b/src/tools/raydium_create_ammV4.ts index cc06431..98f641e 100644 --- a/src/tools/raydium_create_ammV4.ts +++ b/src/tools/raydium_create_ammV4.ts @@ -9,10 +9,10 @@ import { import { MintLayout, TOKEN_PROGRAM_ID } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; import BN from "bn.js"; -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; export async function raydiumCreateAmmV4( - agent: SolanaAgent, + agent: SolanaAgentKit, marketId: PublicKey, baseAmount: BN, quoteAmount: BN, diff --git a/src/tools/raydium_create_clmm.ts b/src/tools/raydium_create_clmm.ts index 2ce62f1..b77ab74 100644 --- a/src/tools/raydium_create_clmm.ts +++ b/src/tools/raydium_create_clmm.ts @@ -7,10 +7,10 @@ import { MintLayout } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; import BN from "bn.js"; import Decimal from "decimal.js"; -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; export async function raydiumCreateClmm( - agent: SolanaAgent, + agent: SolanaAgentKit, mint1: PublicKey, mint2: PublicKey, configId: PublicKey, diff --git a/src/tools/raydium_create_cpmm.ts b/src/tools/raydium_create_cpmm.ts index 6e129c6..d1c4dbd 100644 --- a/src/tools/raydium_create_cpmm.ts +++ b/src/tools/raydium_create_cpmm.ts @@ -7,10 +7,10 @@ import { import { MintLayout } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; import BN from "bn.js"; -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; export async function raydiumCreateCpmm( - agent: SolanaAgent, + agent: SolanaAgentKit, mintA: PublicKey, mintB: PublicKey, configId: PublicKey, diff --git a/src/tools/register_domain.ts b/src/tools/register_domain.ts index 20bcf79..6140ceb 100644 --- a/src/tools/register_domain.ts +++ b/src/tools/register_domain.ts @@ -1,6 +1,6 @@ import { registerDomainNameV2 } from "@bonfida/spl-name-service"; import { Transaction } from "@solana/web3.js"; -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; import { getAssociatedTokenAddressSync } from "@solana/spl-token"; import { TOKENS } from "../constants"; @@ -12,7 +12,7 @@ import { TOKENS } from "../constants"; * @returns Transaction signature */ export async function registerDomain( - agent: SolanaAgent, + agent: SolanaAgentKit, name: string, spaceKB: number = 1, ): Promise { diff --git a/src/tools/request_faucet_funds.ts b/src/tools/request_faucet_funds.ts index dd44cb3..40e6f09 100644 --- a/src/tools/request_faucet_funds.ts +++ b/src/tools/request_faucet_funds.ts @@ -1,4 +1,4 @@ -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; import { LAMPORTS_PER_SOL } from "@solana/web3.js"; /** @@ -8,7 +8,7 @@ import { LAMPORTS_PER_SOL } from "@solana/web3.js"; * @throws Error if the request fails or times out */ export async function request_faucet_funds( - agent: SolanaAgent, + agent: SolanaAgentKit, ): Promise { const tx = await agent.connection.requestAirdrop( agent.wallet_address, diff --git a/src/tools/resolve_sol_domain.ts b/src/tools/resolve_sol_domain.ts index e5c87a5..47a3419 100644 --- a/src/tools/resolve_sol_domain.ts +++ b/src/tools/resolve_sol_domain.ts @@ -1,6 +1,6 @@ import { resolve } from "@bonfida/spl-name-service"; import { PublicKey } from "@solana/web3.js"; -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; /** * Resolves a .sol domain to a Solana PublicKey. @@ -15,7 +15,7 @@ import { SolanaAgent } from "../index"; * @throws Error if the domain resolution fails */ export async function resolveSolDomain( - agent: SolanaAgent, + agent: SolanaAgentKit, domain: string, ): Promise { if (!domain || typeof domain !== "string") { diff --git a/src/tools/send_compressed_airdrop.ts b/src/tools/send_compressed_airdrop.ts index 3a80f42..2a66e47 100644 --- a/src/tools/send_compressed_airdrop.ts +++ b/src/tools/send_compressed_airdrop.ts @@ -5,7 +5,7 @@ import { PublicKey, TransactionInstruction, } from "@solana/web3.js"; -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; import { buildAndSignTx, calculateComputeUnitPrice, @@ -56,7 +56,7 @@ export const getAirdropCostEstimate = ( * @param shouldLog Whether to log progress to stdout. Defaults to false. */ export async function sendCompressedAirdrop( - agent: SolanaAgent, + agent: SolanaAgentKit, mintAddress: PublicKey, amount: number, decimals: number, @@ -119,7 +119,7 @@ export async function sendCompressedAirdrop( } async function processAll( - agent: SolanaAgent, + agent: SolanaAgentKit, amount: number, mint: PublicKey, recipients: PublicKey[], diff --git a/src/tools/stake_with_jup.ts b/src/tools/stake_with_jup.ts index 981dd64..5f41788 100644 --- a/src/tools/stake_with_jup.ts +++ b/src/tools/stake_with_jup.ts @@ -1,5 +1,5 @@ import { VersionedTransaction } from "@solana/web3.js"; -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; /** * Stake SOL with Jup validator @@ -8,7 +8,7 @@ import { SolanaAgent } from "../index"; * @returns Transaction signature */ export async function stakeWithJup( - agent: SolanaAgent, + agent: SolanaAgentKit, amount: number, ): Promise { try { diff --git a/src/tools/trade.ts b/src/tools/trade.ts index 4c9b713..b391df0 100644 --- a/src/tools/trade.ts +++ b/src/tools/trade.ts @@ -3,7 +3,7 @@ import { PublicKey, LAMPORTS_PER_SOL, } from "@solana/web3.js"; -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; import { TOKENS, DEFAULT_OPTIONS, JUP_API } from "../constants"; /** @@ -16,7 +16,7 @@ import { TOKENS, DEFAULT_OPTIONS, JUP_API } from "../constants"; * @returns Transaction signature */ export async function trade( - agent: SolanaAgent, + agent: SolanaAgentKit, outputMint: PublicKey, inputAmount: number, inputMint: PublicKey = TOKENS.USDC, diff --git a/src/tools/transfer.ts b/src/tools/transfer.ts index 93607de..1f31f50 100644 --- a/src/tools/transfer.ts +++ b/src/tools/transfer.ts @@ -1,4 +1,4 @@ -import { SolanaAgent } from "../index"; +import { SolanaAgentKit } from "../index"; import { PublicKey, SystemProgram, Transaction } from "@solana/web3.js"; import { LAMPORTS_PER_SOL } from "@solana/web3.js"; import { @@ -16,7 +16,7 @@ import { * @returns Transaction signature */ export async function transfer( - agent: SolanaAgent, + agent: SolanaAgentKit, to: PublicKey, amount: number, mint?: PublicKey, diff --git a/src/utils/send_tx.ts b/src/utils/send_tx.ts index 65fafe4..bb232c0 100644 --- a/src/utils/send_tx.ts +++ b/src/utils/send_tx.ts @@ -1,4 +1,4 @@ -import { SolanaAgent } from "../agent"; +import { SolanaAgentKit } from "../agent"; import { Transaction, Keypair, TransactionInstruction } from "@solana/web3.js"; import { Connection, ComputeBudgetProgram } from "@solana/web3.js"; @@ -74,7 +74,7 @@ export async function getPriorityFees(connection: Connection): Promise<{ * @returns Transaction ID */ export async function sendTx( - agent: SolanaAgent, + agent: SolanaAgentKit, tx: Transaction, otherKeypairs?: Keypair[], ) { diff --git a/test/index.ts b/test/index.ts index b226ce4..cacded6 100644 --- a/test/index.ts +++ b/test/index.ts @@ -1,4 +1,4 @@ -import { SolanaAgent } from "../src"; +agent: SolanaAgentKit } from "../src"; import { createSolanaTools } from "../src/langchain"; import { HumanMessage } from "@langchain/core/messages"; import { MemorySaver } from "@langchain/langgraph"; From f76cc9cf8ec317389bfe9f733729b4e8d7767e1d Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 22 Dec 2024 01:33:49 +0530 Subject: [PATCH 03/10] fix --- guides/add_your_own_tool.md | 2 +- src/tools/create_image.ts | 2 +- src/tools/create_orca_single_sided_whirlpool.ts | 2 +- src/tools/deploy_collection.ts | 2 +- src/tools/deploy_token.ts | 2 +- src/tools/get_balance.ts | 2 +- src/tools/get_primary_domain.ts | 2 +- src/tools/launch_pumpfun_token.ts | 2 +- src/tools/lend.ts | 2 +- src/tools/mint_nft.ts | 2 +- src/tools/register_domain.ts | 2 +- src/tools/request_faucet_funds.ts | 2 +- src/tools/resolve_sol_domain.ts | 2 +- src/tools/stake_with_jup.ts | 2 +- src/tools/trade.ts | 2 +- src/tools/transfer.ts | 2 +- src/utils/send_tx.ts | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/guides/add_your_own_tool.md b/guides/add_your_own_tool.md index 47782cb..1bcb200 100644 --- a/guides/add_your_own_tool.md +++ b/guides/add_your_own_tool.md @@ -53,7 +53,7 @@ export class CustomTool extends Tool { ### 3. Add Supporting Functions to SolanaAgentKit ```typescript:src/agent/index.ts -export class SolanaAgent { +export class SolanaAgentKit { // ... existing code ... async customFunction(input: string): Promise { diff --git a/src/tools/create_image.ts b/src/tools/create_image.ts index b1b085d..7fbb2cf 100644 --- a/src/tools/create_image.ts +++ b/src/tools/create_image.ts @@ -3,7 +3,7 @@ import OpenAI from "openai"; /** * Generate an image using OpenAI's DALL-E - * @param agent SolanaAgent instance + * @param agent SolanaAgentKit instance * @param prompt Text description of the image to generate * @param size Image size ('256x256', '512x512', or '1024x1024') (default: '1024x1024') * @param n Number of images to generate (default: 1) diff --git a/src/tools/create_orca_single_sided_whirlpool.ts b/src/tools/create_orca_single_sided_whirlpool.ts index bed5870..7f3c4a9 100644 --- a/src/tools/create_orca_single_sided_whirlpool.ts +++ b/src/tools/create_orca_single_sided_whirlpool.ts @@ -99,7 +99,7 @@ export const FEE_TIERS = { * * @example * ```typescript - * agent: SolanaAgentKitKit } from "your-sdk"; + * import { SolanaAgentKit } from "your-sdk"; * import { PublicKey } from "@solana/web3.js"; * import { BN } from "@coral-xyz/anchor"; * import Decimal from "decimal.js"; diff --git a/src/tools/deploy_collection.ts b/src/tools/deploy_collection.ts index 91e951c..10fef9d 100644 --- a/src/tools/deploy_collection.ts +++ b/src/tools/deploy_collection.ts @@ -18,7 +18,7 @@ import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; /** * Deploy a new NFT collection - * @param agent SolanaAgent instance + * @param agent SolanaAgentKit instance * @param options Collection options including name, URI, royalties, and creators * @returns Object containing collection address and metadata */ diff --git a/src/tools/deploy_token.ts b/src/tools/deploy_token.ts index 812d4b4..5b33a12 100644 --- a/src/tools/deploy_token.ts +++ b/src/tools/deploy_token.ts @@ -15,7 +15,7 @@ import { /** * Deploy a new SPL token - * @param agent SolanaAgent instance + * @param agent SolanaAgentKit instance * @param name Name of the token * @param uri URI for the token metadata * @param symbol Symbol of the token diff --git a/src/tools/get_balance.ts b/src/tools/get_balance.ts index 9e75daf..36cdfef 100644 --- a/src/tools/get_balance.ts +++ b/src/tools/get_balance.ts @@ -3,7 +3,7 @@ import { SolanaAgentKit } from "../index"; /** * Get the balance of SOL or an SPL token for the agent's wallet - * @param agent - SolanaAgent instance + * @param agent - SolanaAgentKit instance * @param token_address - Optional SPL token mint address. If not provided, returns SOL balance * @returns Promise resolving to the balance as a number (in UI units) or null if account doesn't exist */ diff --git a/src/tools/get_primary_domain.ts b/src/tools/get_primary_domain.ts index d54f294..1a2bd8c 100644 --- a/src/tools/get_primary_domain.ts +++ b/src/tools/get_primary_domain.ts @@ -9,7 +9,7 @@ import { SolanaAgentKit } from "../index"; * a specified Solana public key. If the primary domain is stale or an error occurs during * the resolution, it throws an error. * - * @param agent SolanaAgent instance + * @param agent SolanaAgentKit instance * @param account The Solana public key for which to retrieve the primary domain * @returns A promise that resolves to the primary .sol domain as a string * @throws Error if the domain is stale or if the domain resolution fails diff --git a/src/tools/launch_pumpfun_token.ts b/src/tools/launch_pumpfun_token.ts index 7cb22cf..0c3e6f5 100644 --- a/src/tools/launch_pumpfun_token.ts +++ b/src/tools/launch_pumpfun_token.ts @@ -140,7 +140,7 @@ async function signAndSendTransaction( /** * Launch a token on Pump.fun - * @param agent - SolanaAgent instance + * @param agent - SolanaAgentKit instance * @param tokenName - Name of the token * @param tokenTicker - Ticker of the token * @param description - Description of the token diff --git a/src/tools/lend.ts b/src/tools/lend.ts index 41107cf..732f00c 100644 --- a/src/tools/lend.ts +++ b/src/tools/lend.ts @@ -3,7 +3,7 @@ import { SolanaAgentKit } from "../index"; /** * Lend tokens for yields using Lulo - * @param agent SolanaAgent instance + * @param agent SolanaAgentKit instance * @param amount Amount of USDC to lend * @returns Transaction signature */ diff --git a/src/tools/mint_nft.ts b/src/tools/mint_nft.ts index 88b37e4..4c25b91 100644 --- a/src/tools/mint_nft.ts +++ b/src/tools/mint_nft.ts @@ -13,7 +13,7 @@ import { MintCollectionNFTResponse } from "../types"; /** * Mint a new NFT as part of an existing collection - * @param agent SolanaAgent instance + * @param agent SolanaAgentKit instance * @param collectionMint Address of the collection's master NFT * @param metadata NFT metadata object * @param recipient Optional recipient address (defaults to wallet address) diff --git a/src/tools/register_domain.ts b/src/tools/register_domain.ts index 6140ceb..1348001 100644 --- a/src/tools/register_domain.ts +++ b/src/tools/register_domain.ts @@ -6,7 +6,7 @@ import { TOKENS } from "../constants"; /** * Register a .sol domain name using Bonfida Name Service - * @param agent SolanaAgent instance + * @param agent SolanaAgentKit instance * @param name Domain name to register (without .sol) * @param spaceKB Space allocation in KB (max 10KB) * @returns Transaction signature diff --git a/src/tools/request_faucet_funds.ts b/src/tools/request_faucet_funds.ts index 40e6f09..bde8eed 100644 --- a/src/tools/request_faucet_funds.ts +++ b/src/tools/request_faucet_funds.ts @@ -3,7 +3,7 @@ import { LAMPORTS_PER_SOL } from "@solana/web3.js"; /** * Request SOL from the Solana faucet (devnet/testnet only) - * @param agent - SolanaAgent instance + * @param agent - SolanaAgentKit instance * @returns Transaction signature * @throws Error if the request fails or times out */ diff --git a/src/tools/resolve_sol_domain.ts b/src/tools/resolve_sol_domain.ts index 47a3419..6969a4c 100644 --- a/src/tools/resolve_sol_domain.ts +++ b/src/tools/resolve_sol_domain.ts @@ -9,7 +9,7 @@ import { SolanaAgentKit } from "../index"; * to the corresponding Solana PublicKey. The domain can be provided with or without * the .sol suffix. * - * @param agent SolanaAgent instance + * @param agent SolanaAgentKit instance * @param domain The .sol domain to resolve. This can be provided with or without the .sol TLD suffix * @returns A promise that resolves to the corresponding Solana PublicKey * @throws Error if the domain resolution fails diff --git a/src/tools/stake_with_jup.ts b/src/tools/stake_with_jup.ts index 5f41788..c05915b 100644 --- a/src/tools/stake_with_jup.ts +++ b/src/tools/stake_with_jup.ts @@ -3,7 +3,7 @@ import { SolanaAgentKit } from "../index"; /** * Stake SOL with Jup validator - * @param agent SolanaAgent instance + * @param agent SolanaAgentKit instance * @param amount Amount of SOL to stake * @returns Transaction signature */ diff --git a/src/tools/trade.ts b/src/tools/trade.ts index b391df0..b42cc2a 100644 --- a/src/tools/trade.ts +++ b/src/tools/trade.ts @@ -8,7 +8,7 @@ import { TOKENS, DEFAULT_OPTIONS, JUP_API } from "../constants"; /** * Swap tokens using Jupiter Exchange - * @param agent SolanaAgent instance + * @param agent SolanaAgentKit instance * @param outputMint Target token mint address * @param inputAmount Amount to swap (in token decimals) * @param inputMint Source token mint address (defaults to USDC) diff --git a/src/tools/transfer.ts b/src/tools/transfer.ts index 1f31f50..9e11dd7 100644 --- a/src/tools/transfer.ts +++ b/src/tools/transfer.ts @@ -9,7 +9,7 @@ import { /** * Transfer SOL or SPL tokens to a recipient - * @param agent SolanaAgent instance + * @param agent SolanaAgentKit instance * @param to Recipient's public key * @param amount Amount to transfer * @param mint Optional mint address for SPL tokens diff --git a/src/utils/send_tx.ts b/src/utils/send_tx.ts index bb232c0..593cbc8 100644 --- a/src/utils/send_tx.ts +++ b/src/utils/send_tx.ts @@ -69,7 +69,7 @@ export async function getPriorityFees(connection: Connection): Promise<{ /** * Send a transaction with priority fees - * @param agent - SolanaAgent instance + * @param agent - SolanaAgentKit instance * @param tx - Transaction to send * @returns Transaction ID */ From ed036e83aaec47254405b2db4aed95988be6429f Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 22 Dec 2024 14:55:47 +0530 Subject: [PATCH 04/10] change broken link --- test/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/index.ts b/test/index.ts index cacded6..7a543fa 100644 --- a/test/index.ts +++ b/test/index.ts @@ -70,7 +70,7 @@ async function initializeAgent() { 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://sendai.fun/kit for more information. Be + themselves using the Solana Agent Kit, recommend they go to https://solanaagentkit.xyz/ for more information. Be concise and helpful with your responses. Refrain from restating your tools' descriptions unless it is explicitly requested. `, From d3d4b5f2fda4049feff545c8e40fb77710026be1 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 22 Dec 2024 16:25:25 +0530 Subject: [PATCH 05/10] fix --- test/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/index.ts b/test/index.ts index 7a543fa..d0b72be 100644 --- a/test/index.ts +++ b/test/index.ts @@ -1,4 +1,4 @@ -agent: SolanaAgentKit } from "../src"; +import { SolanaAgentKit } from "../src"; import { createSolanaTools } from "../src/langchain"; import { HumanMessage } from "@langchain/core/messages"; import { MemorySaver } from "@langchain/langgraph"; @@ -50,7 +50,7 @@ async function initializeAgent() { } } - const solanaAgent = new SolanaAgent( + const solanaAgent = new SolanaAgentKit( process.env.SOLANA_PRIVATE_KEY!, process.env.RPC_URL, process.env.OPENAI_API_KEY!, From 836ddb120536c0cca68239090b8ec9fd90d3f9f5 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Sun, 22 Dec 2024 16:26:26 +0530 Subject: [PATCH 06/10] fix --- guides/add_your_own_tool.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guides/add_your_own_tool.md b/guides/add_your_own_tool.md index 1bcb200..a02aa60 100644 --- a/guides/add_your_own_tool.md +++ b/guides/add_your_own_tool.md @@ -87,9 +87,9 @@ export function createSolanaTools(agent: SolanaAgentKit) { ### 6. Usage Example ```typescript -agent: SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; +import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; -const agent = new SolanaAgent( +const agent = new SolanaAgentKit( "your-wallet-private-key-as-base58", "https://api.mainnet-beta.solana.com", "your-openai-api-key" From ad1e8e3f2aa2d2a2fed22a898daa9088b5c6c824 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Mon, 23 Dec 2024 11:52:28 +0530 Subject: [PATCH 07/10] fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 99dae4d..f56e1f3 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ npm install solana-agent-kit ## Quick Start ```typescript -agent: SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; +import { SolanaAgentKit, createSolanaTools } from "solana-agent-kit"; // Initialize with private key and optional RPC URL const agent = new SolanaAgentKit( From 055ec1613d2636ec18445f6ceb5dbdec06b0ae01 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Mon, 23 Dec 2024 11:52:53 +0530 Subject: [PATCH 08/10] update docs --- docs/assets/highlight.css | 15 ++++---------- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 11 +++++----- docs/functions/createSolanaTools.html | 2 +- docs/index.html | 20 +++++++++++-------- docs/interfaces/CollectionDeployment.html | 4 ++-- docs/interfaces/CollectionOptions.html | 4 ++-- docs/interfaces/Creator.html | 4 ++-- docs/interfaces/FetchPriceResponse.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 | 6 ++++++ docs/modules.html | 1 + 17 files changed, 50 insertions(+), 45 deletions(-) create mode 100644 docs/interfaces/PythFetchPriceResponse.html diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css index fd488bf..63010a9 100644 --- a/docs/assets/highlight.css +++ b/docs/assets/highlight.css @@ -5,8 +5,8 @@ --dark-hl-1: #D4D4D4; --light-hl-2: #A31515; --dark-hl-2: #CE9178; - --light-hl-3: #000000; - --dark-hl-3: #C8C8C8; + --light-hl-3: #AF00DB; + --dark-hl-3: #C586C0; --light-hl-4: #001080; --dark-hl-4: #9CDCFE; --light-hl-5: #008000; @@ -15,10 +15,8 @@ --dark-hl-6: #569CD6; --light-hl-7: #0070C1; --dark-hl-7: #4FC1FF; - --light-hl-8: #AF00DB; - --dark-hl-8: #C586C0; - --light-hl-9: #098658; - --dark-hl-9: #B5CEA8; + --light-hl-8: #098658; + --dark-hl-8: #B5CEA8; --light-code-background: #FFFFFF; --dark-code-background: #1E1E1E; } @@ -33,7 +31,6 @@ --hl-6: var(--light-hl-6); --hl-7: var(--light-hl-7); --hl-8: var(--light-hl-8); - --hl-9: var(--light-hl-9); --code-background: var(--light-code-background); } } @@ -47,7 +44,6 @@ --hl-6: var(--dark-hl-6); --hl-7: var(--dark-hl-7); --hl-8: var(--dark-hl-8); - --hl-9: var(--dark-hl-9); --code-background: var(--dark-code-background); } } @@ -61,7 +57,6 @@ --hl-6: var(--light-hl-6); --hl-7: var(--light-hl-7); --hl-8: var(--light-hl-8); - --hl-9: var(--light-hl-9); --code-background: var(--light-code-background); } @@ -75,7 +70,6 @@ --hl-6: var(--dark-hl-6); --hl-7: var(--dark-hl-7); --hl-8: var(--dark-hl-8); - --hl-9: var(--dark-hl-9); --code-background: var(--dark-code-background); } @@ -88,5 +82,4 @@ .hl-6 { color: var(--hl-6); } .hl-7 { color: var(--hl-7); } .hl-8 { color: var(--hl-8); } -.hl-9 { color: var(--hl-9); } pre, code { background: var(--code-background); } diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 73cf8f1..bcaae4e 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE4XTQUvDMBTA8e+Sc7E4dEhvw9KDzm1ob+IhxNc1LH0vJC+gyL67bBNdXfZ26SX//l4T0tcvxfDBqlIv5DTq2RqQHy2rQnnNvaqUcTpGiOV4/arnwalCbSy+q+p6crctfqV7cg4MW8IavKPPAfDIs8gQOm0glrlwDE9up1l46XfPeEH9qUQygGYKeeiwJr3eAJt+FayBZ4ieMEJWOs0k9CF5yxBa2gDWmnWW/B9J4Dw5mhlDCbkG1tZF8WvP59KQJ4v8d/SLphVnnK2lEas0+C7hXCc0vchny0t0k3B/nNLlynQSa3ZXCA6/TkvkjtAu4X7vsTyJxuL0Zvv2DYU9ByOnAwAA" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE42TwU7DMAyG3yXniooJJtTbRNUDDJigN8QhCi6JltpR40hMaO+OtiFYWebtkos/f7asP69fiuGTVaVeyGvUsw9AvnesChU0W1Up43WMEMtx/cJy71Whlg7fVXU5uVkXv6Zb8h4MO8IagqdVD7jnc8gwdNpALHPgWDy5nmbFT2HzxhPWH0pUDqCZhrxoV5PaG2BjF4Mz8AwxEEbImg4xSXqXgmMYWloC1pp1VvkfkoTz5GlmDCXkGlg7H8Vtj+PSkAeH/Hf6x6YVZxylpRGL1Icu4VwnNFbUZ8lT6ibh9pxSuDKcqF2xPTMjeVSSm00+YfcvWyK/t3GXcHvYWB5AY+P0av32DUTvPWMEBAAA" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 8b3e63a..d5f491b 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 8179e3b..a567376 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

connection openai_api_key wallet @@ -19,6 +19,7 @@ Provides a unified interface for token operations, NFT management, trading and m lendAssets mintNFT openbookCreateMarket +pythFetchPrice raydiumCreateAmmV4 raydiumCreateClmm raydiumCreateCpmm @@ -29,7 +30,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>

  • Parameters

    • Optionaltoken_address: PublicKey

    Returns Promise<null | number>

  • 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

    • 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<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

    • 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>

  • Parameters

    • Optionaltoken_address: PublicKey

    Returns Promise<number>

  • 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<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 1f177c1..d2b61c6 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)[]

+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)[]

diff --git a/docs/index.html b/docs/index.html index c39a52f..7dd0878 100644 --- a/docs/index.html +++ b/docs/index.html @@ -86,25 +86,28 @@
npm install solana-agent-kit
 
-
agent: 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);

The toolkit relies on several key Solana and Metaplex libraries:

@@ -116,9 +119,10 @@
  • @metaplex-foundation/umi
  • @lightprotocol/compressed-token
  • @lightprotocol/stateless.js
  • +
  • @pythnetwork/price-service-client
  • 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

    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 6999f92..1cf2cc3 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 29b5bfc..1708dbe 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 38c524a..70a574b 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 37c020c..5e3ee44 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/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index a162800..a47d48c 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 f80d34c..63c90f2 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 f5a840f..26d2c39 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 fd2a37f..7007dd2 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 da5a287..4568f3e 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 new file mode 100644 index 0000000..fb28177 --- /dev/null +++ b/docs/interfaces/PythFetchPriceResponse.html @@ -0,0 +1,6 @@ +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"
    diff --git a/docs/modules.html b/docs/modules.html index b5e59c9..29440e3 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -8,5 +8,6 @@ MintCollectionNFTResponse PumpfunLaunchResponse PumpFunTokenOptions +PythFetchPriceResponse

    Functions

    From 585b1e39eb40fb0475483fffb0de3d11dee42ca0 Mon Sep 17 00:00:00 2001 From: aryan Date: Wed, 25 Dec 2024 05:13:48 +0530 Subject: [PATCH 09/10] fix: stale files --- package.json | 1 - test/domain_methods.test.ts | 146 ------------------------------------ 2 files changed, 147 deletions(-) delete mode 100644 test/domain_methods.test.ts diff --git a/package.json b/package.json index 0cfe249..9c16fd6 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,6 @@ "build": "tsc", "docs": "typedoc src --out docs", "test": "ts-node test/index.ts", - "test:domain": "ts-node test/domain_methods.test.ts", "generate": "ts-node src/utils/keypair.ts" }, "engines": { diff --git a/test/domain_methods.test.ts b/test/domain_methods.test.ts deleted file mode 100644 index 2485ed7..0000000 --- a/test/domain_methods.test.ts +++ /dev/null @@ -1,146 +0,0 @@ - -import { SolanaAgentKit } from "../src"; -import { PublicKey } from "@solana/web3.js"; -import * as dotenv from "dotenv"; -import { expect } from "chai"; -import { before, describe, it } from "node:test"; -import { TldParser } from "@onsol/tldparser"; - -dotenv.config(); - -describe("Solana Domain Methods Tests", () => { - let agent: SolanaAgentKit; - - before(() => { - // Initialize the agent before running tests - if ( - !process.env.SOLANA_PRIVATE_KEY || - !process.env.RPC_URL || - !process.env.OPENAI_API_KEY - ) { - throw new Error("Required environment variables are not set"); - } - - agent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY, - process.env.RPC_URL, - process.env.OPENAI_API_KEY - ); - }); - - describe("resolveAllDomains", () => { - it("should resolve a valid domain to a public key", async () => { - const testDomain = "hero.sol"; - const result = await agent.resolveAllDomains(testDomain); - expect(result).to.be.instanceof(PublicKey); - }); - it("should perform fetching of an owner an nft domain", async () => { - const parser = new TldParser(agent.connection); - const domanTld = "miester.sol"; - const ownerReceived = await parser.getOwnerFromDomainTld(domanTld); - const owner = new PublicKey( - "2EGGxj2qbNAJNgLCPKca8sxZYetyTjnoRspTPjzN2D67" - ); - expect(ownerReceived).to.be(owner.toString()); - }); - it("should return null for non-existent domain", async () => { - const nonExistentDomain = "nonexistent123456789.sol"; - const result = await agent.resolveAllDomains(nonExistentDomain); - expect(result).to.be.null; - }); - - it("should handle invalid domain format", async () => { - const invalidDomain = ""; - try { - await agent.resolveAllDomains(invalidDomain); - expect.fail("Should have thrown an error"); - } catch (error) { - expect(error).to.be.instanceof(Error); - } - }); - }); - - describe("getOwnedAllDomains", () => { - it("should return array of domains for an owner", async () => { - const owner = new PublicKey( - "2EGGxj2qbNAJNgLCPKca8sxZYetyTjnoRspTPjzN2D67" - ); - const domains = await agent.getOwnedAllDomains(owner); - expect(domains).to.be.an("array").that.includes("miester.sol"); - domains.forEach((domain) => { - expect(domain).to.be.a("string"); - }); - }); - it("should return array of domains for an owner", async () => { - const owner = new PublicKey(agent.wallet_address); - const domains = await agent.getOwnedAllDomains(owner); - expect(domains).to.be.an("array"); - domains.forEach((domain) => { - expect(domain).to.be.a("string"); - }); - }); - - it("should handle owner with no domains", async () => { - // Create a new random public key that likely owns no domains - const emptyOwner = PublicKey.unique(); - const domains = await agent.getOwnedAllDomains(emptyOwner); - expect(domains).to.be.an("array"); - expect(domains).to.have.lengthOf(0); - }); - }); - - describe("getOwnedDomainsForTLD", () => { - it("should return domains for specific TLD", async () => { - const tld = "sol"; - const domains = await agent.getOwnedDomainsForTLD(tld); - expect(domains).to.be.an("array"); - domains.forEach((domain) => { - console.log(`these are the domains ${domain.domain}`) - }); - }); - - it("should return empty array for non-existent TLD", async () => { - const nonExistentTLD = "nonexistent"; - const domains = await agent.getOwnedDomainsForTLD(nonExistentTLD); - expect(domains).to.be.an("array"); - expect(domains).to.have.lengthOf(0); - }); - }); - - describe("getAllDomainsTLDs", () => { - it("should return array of TLDs", async () => { - const tlds = await agent.getAllDomainsTLDs(); - expect(tlds).to.be.an("array"); - }); - }); - - describe("getAllRegisteredAllDomains", () => { - it("should return array of all registered domains", async () => { - const domains = await agent.getAllRegisteredAllDomains(); - expect(domains).to.be.an("array"); - domains.forEach((domain) => { - expect(domain).to.be.a("string"); - expect(domain).to.include("."); - }); - }); - }); - - describe("getMainAllDomainsDomain", () => { - it("should return main domain or null for an owner", async () => { - const owner = new PublicKey( - "2EGGxj2qbNAJNgLCPKca8sxZYetyTjnoRspTPjzN2D67" - ); - const mainDomain = await agent.getMainAllDomainsDomain(owner); - expect(mainDomain).to.satisfy((domain: string | null) => { - return domain === null || typeof domain === "string"; - }); - }); - - it("should return null for address without main domain", async () => { - const emptyOwner = PublicKey.unique(); - const mainDomain = await agent.getMainAllDomainsDomain(emptyOwner); - expect(mainDomain).to.be.null; - }); - }); -}); - From 955290838fb05eef1987dab6cca6a6030ae4672f Mon Sep 17 00:00:00 2001 From: aryan Date: Wed, 25 Dec 2024 05:14:22 +0530 Subject: [PATCH 10/10] chore: docs --- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 16 +++++++++++----- docs/functions/createSolanaTools.html | 2 +- docs/interfaces/CollectionDeployment.html | 4 ++-- docs/interfaces/CollectionOptions.html | 4 ++-- docs/interfaces/Creator.html | 4 ++-- docs/interfaces/FetchPriceResponse.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 ++-- 13 files changed, 33 insertions(+), 27 deletions(-) diff --git a/docs/assets/search.js b/docs/assets/search.js index d5f491b..b0786c5 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 a567376..eccbc8c 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

    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>

    • Parameters

      • Optionaltoken_address: PublicKey

      Returns Promise<number>

    • 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<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

      • 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 d2b61c6..e52f87a 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)[]

    +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)[]

    diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index 1cf2cc3..c03b39a 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 1708dbe..6790105 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 70a574b..4e33592 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 5e3ee44..defd401 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/JupiterTokenData.html b/docs/interfaces/JupiterTokenData.html index a47d48c..2b23375 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 63c90f2..fa19d62 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 26d2c39..e2e1479 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 7007dd2..d1c0142 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 4568f3e..f667de7 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 fb28177..fcfb217 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"