From b943dbb23e04968819d4c458c77481047dacc413 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Wed, 11 Dec 2024 02:03:52 +0530 Subject: [PATCH 1/4] refactor: lulo blink --- src/constants/index.ts | 5 ----- src/tools/lend.ts | 42 +++++++++--------------------------------- src/types/index.ts | 6 ------ 3 files changed, 9 insertions(+), 44 deletions(-) diff --git a/src/constants/index.ts b/src/constants/index.ts index dfcc9f6..7c1d9c5 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -28,8 +28,3 @@ export const DEFAULT_OPTIONS = { * Jupiter API URL */ export const JUP_API = "https://quote-api.jup.ag/v6"; - -/** - * LULO (fka Flexlend) API URL - */ -export const LULO_API = "https://api.flexlend.fi"; diff --git a/src/tools/lend.ts b/src/tools/lend.ts index 5fd85b7..d31283d 100644 --- a/src/tools/lend.ts +++ b/src/tools/lend.ts @@ -1,56 +1,32 @@ import { VersionedTransaction } from "@solana/web3.js"; -import { SolanaAgentKit } from "../index"; -import { LuloAccountDetailsResponse, LuloDepositAssetMint } from "../types"; -import { getPriorityFees } from "../utils/send_tx"; -import { LULO_API } from "../constants"; +import { LuloAccountDetailsResponse } from "../types"; +import { SolanaAgentKit } from "../agent"; /** * Lend tokens for yields using Lulo * @param agent SolanaAgentKit instance - * @param asset Mint address of the token to lend (as supported by Lulo) - * @param amount Amount to lend (in token decimals) - * @param LULO_API_KEY Valid API key for Lulo + * @param amount Amount of USDC to lend * @returns Transaction signature */ export async function lendAsset( agent: SolanaAgentKit, - asset: LuloDepositAssetMint, amount: number, - LULO_API_KEY = "", ): Promise { try { - if (!LULO_API_KEY) { - throw new Error("Missing Lulo API key"); - } - - const request = { - owner: agent.wallet.publicKey.toBase58(), - mintAddress: asset.toBase58(), - depositAmount: amount.toString(), - }; - - const priorityFees = await getPriorityFees(agent.connection); - const priority = `?priorityFee=${priorityFees.median}`; - const response = await fetch( - `${LULO_API}/generate/account/deposit${priority}`, + `https://blink.lulo.fi/actions?amount=${amount}&symbol=USDC`, { method: "POST", - headers: { - "Content-Type": "application/json", - "x-wallet-pubkey": agent.wallet.publicKey.toBase58(), - "x-api-key": LULO_API_KEY, - }, - body: JSON.stringify(request), + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + }), }, ); - const { - data: { transactionMeta }, - } = await response.json(); + const data = await response.json(); const luloTxn = VersionedTransaction.deserialize( - Buffer.from(transactionMeta[0].transaction, "base64"), + Buffer.from(data.transaction, "base64"), ); // Sign and send transaction diff --git a/src/types/index.ts b/src/types/index.ts index 16d2c4c..62c6991 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,5 +1,4 @@ import { PublicKey } from "@solana/web3.js"; -import { TOKENS } from "../constants"; export interface Creator { address: string; @@ -24,11 +23,6 @@ export interface MintCollectionNFTResponse { metadata: PublicKey; } -/** - * Mint addresses of supported tokens for lending on Lulo - */ -export type LuloDepositAssetMint = (typeof TOKENS)[keyof typeof TOKENS]; - /** * Lulo Account Details response format */ From 12af3c434f3b3869e2c1e554c27d1426266067f9 Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Wed, 11 Dec 2024 02:05:22 +0530 Subject: [PATCH 2/4] fix --- README.md | 2 -- src/agent/index.ts | 10 +++------- src/langchain/index.ts | 10 +++------- 3 files changed, 6 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 2dd01d8..8b7ae7d 100644 --- a/README.md +++ b/README.md @@ -104,9 +104,7 @@ import { PublicKey } from '@solana/web3.js'; const signature = await lendAsset( agent, - new PublicKey('asset-mint'), 100, // amount - "lulo-api-key" ); ``` diff --git a/src/agent/index.ts b/src/agent/index.ts index b165ccc..59ee62d 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -13,7 +13,7 @@ import { getLendingDetails, getTPS, } from "../tools"; -import { CollectionOptions, LuloDepositAssetMint } from "../types"; +import { CollectionOptions } from "../types"; import { DEFAULT_OPTIONS } from "../constants"; /** @@ -96,12 +96,8 @@ export class SolanaAgentKit { return trade(this, outputMint, inputAmount, inputMint, slippageBps); } - async lendAssets( - asset: LuloDepositAssetMint, - amount: number, - LULO_API_KEY: string, - ) { - return lendAsset(this, asset, amount, LULO_API_KEY); + async lendAssets(amount: number) { + return lendAsset(this, amount); } async fetchLendingDetails(LULO_API_KEY: string) { diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 3819a5c..b52a8b5 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -193,7 +193,7 @@ export class SolanaGetWalletAddressTool extends Tool { export class SolanaLendAssetTool extends Tool { name = "solana_lend_asset"; description = - "Lend idle assets for yield using Lulo. Input should be JSON with: {asset: string, amount: number, luloApiKey: string}"; + "Lend idle assets for yield using Lulo. Input should be JSON with: {amount: number}"; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -201,13 +201,9 @@ export class SolanaLendAssetTool extends Tool { async _call(input: string): Promise { try { - const { asset, amount, luloApiKey } = JSON.parse(input); + const { amount } = JSON.parse(input); - const tx = await this.solanaKit.lendAssets( - new PublicKey(asset), - amount, - luloApiKey, - ); + const tx = await this.solanaKit.lendAssets(amount); return `Asset lent successfully. Transaction: ${tx}`; } catch (error: any) { From eb7746ec50fd9859c2ffc9c3d5f3e451dc28392e Mon Sep 17 00:00:00 2001 From: aryan Date: Fri, 13 Dec 2024 15:01:25 +0530 Subject: [PATCH 3/4] fix: lend using lulo --- src/agent/index.ts | 5 ---- src/langchain/index.ts | 65 ++++++++++++++++-------------------------- src/tools/lend.ts | 58 ++++++++++++++++--------------------- 3 files changed, 49 insertions(+), 79 deletions(-) diff --git a/src/agent/index.ts b/src/agent/index.ts index 9564695..0d7a4ef 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -10,7 +10,6 @@ import { trade, registerDomain, launchPumpFunToken, - getLendingDetails, lendAsset, getTPS, } from "../tools"; @@ -92,10 +91,6 @@ export class SolanaAgentKit { return lendAsset(this, amount); } - async fetchLendingDetails(LULO_API_KEY: string) { - return getLendingDetails(this, LULO_API_KEY); - } - async getTPS() { return getTPS(this); } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 972a360..2ba3b23 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -64,7 +64,7 @@ export class SolanaTransferTool extends Tool { const tx = await this.solanaKit.transfer( recipient, parsedInput.amount, - mintAddress, + mintAddress ); return JSON.stringify({ @@ -102,7 +102,7 @@ export class SolanaDeployTokenTool extends Tool { input.decimals > 9) ) { throw new Error( - "decimals must be a number between 0 and 9 when provided", + "decimals must be a number between 0 and 9 when provided" ); } if ( @@ -159,7 +159,7 @@ export class SolanaDeployCollectionTool extends Tool { input.royaltyBasisPoints > 10000) ) { throw new Error( - "royaltyBasisPoints must be a number between 0 and 10000 when provided", + "royaltyBasisPoints must be a number between 0 and 10000 when provided" ); } if (input.creators) { @@ -169,7 +169,7 @@ export class SolanaDeployCollectionTool extends Tool { input.creators.forEach((creator: any, index: number) => { if (!creator.address || typeof creator.address !== "string") { throw new Error( - `creator[${index}].address is required and must be a string`, + `creator[${index}].address is required and must be a string` ); } if ( @@ -178,7 +178,7 @@ export class SolanaDeployCollectionTool extends Tool { creator.percentage > 100 ) { throw new Error( - `creator[${index}].percentage must be a number between 0 and 100`, + `creator[${index}].percentage must be a number between 0 and 100` ); } }); @@ -246,9 +246,7 @@ export class SolanaMintNFTTool extends Tool { const result = await this.solanaKit.mintNFT( new PublicKey(parsedInput.collectionMint), parsedInput.metadata, - parsedInput.recipient - ? new PublicKey(parsedInput.recipient) - : undefined, + parsedInput.recipient ? new PublicKey(parsedInput.recipient) : undefined ); return JSON.stringify({ @@ -292,7 +290,7 @@ export class SolanaTradeTool extends Tool { parsedInput.inputMint ? new PublicKey(parsedInput.inputMint) : new PublicKey("So11111111111111111111111111111111111111112"), - parsedInput.slippageBps, + parsedInput.slippageBps ); return JSON.stringify({ @@ -373,7 +371,7 @@ export class SolanaRegisterDomainTool extends Tool { const tx = await this.solanaKit.registerDomain( parsedInput.name, - parsedInput.spaceKB || 1, + parsedInput.spaceKB || 1 ); return JSON.stringify({ @@ -465,7 +463,7 @@ export class SolanaPumpfunTokenLaunchTool extends Tool { telegram: parsedInput.telegram, website: parsedInput.website, initialLiquiditySOL: parsedInput.initialLiquiditySOL, - }, + } ); return JSON.stringify({ @@ -521,8 +519,10 @@ export class SolanaCreateImageTool extends Tool { export class SolanaLendAssetTool extends Tool { name = "solana_lend_asset"; - description = - "Lend idle assets for yield using Lulo. Input should be JSON with: {amount: number}"; + description = `Lend idle USDC for yield using Lulo. ( only USDC is supported ) + + Inputs (input is a json string): + amount: number, eg 1, 0.01 (required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -530,36 +530,22 @@ export class SolanaLendAssetTool extends Tool { async _call(input: string): Promise { try { - const { amount } = JSON.parse(input); + let amount = JSON.parse(input).amount || input; const tx = await this.solanaKit.lendAssets(amount); - return `Asset lent successfully. Transaction: ${tx}`; + return JSON.stringify({ + status: "success", + message: "Asset lent successfully", + transaction: tx, + amount: amount, + }); } catch (error: any) { - return `Error lending asset: ${error.message}`; - } - } -} - -export class SolanaFetchLendingDetailsTool extends Tool { - name = "solana_get_lending_details"; - description = - "Get details of assets lent on Lulo. Input should be JSON with: {luloApiKey: string}"; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - async _call(input: string): Promise { - try { - const { luloApiKey } = JSON.parse(input); - - const lendingDetails = - await this.solanaKit.fetchLendingDetails(luloApiKey); - - return `Lending details: ${lendingDetails}`; - } catch (error: any) { - return `Error fetching lending details: ${error.message}`; + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); } } } @@ -596,7 +582,6 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaPumpfunTokenLaunchTool(solanaKit), new SolanaCreateImageTool(solanaKit), new SolanaLendAssetTool(solanaKit), - new SolanaFetchLendingDetailsTool(solanaKit), new SolanaTPSCalculatorTool(solanaKit), ]; } diff --git a/src/tools/lend.ts b/src/tools/lend.ts index d31283d..7889343 100644 --- a/src/tools/lend.ts +++ b/src/tools/lend.ts @@ -10,61 +10,51 @@ import { SolanaAgentKit } from "../agent"; */ export async function lendAsset( agent: SolanaAgentKit, - amount: number, + amount: number ): Promise { try { const response = await fetch( `https://blink.lulo.fi/actions?amount=${amount}&symbol=USDC`, { method: "POST", + headers: { + "Content-Type": "application/json", + }, body: JSON.stringify({ account: agent.wallet.publicKey.toBase58(), }), - }, + } ); 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 + const { blockhash } = await agent.connection.getLatestBlockhash(); + luloTxn.message.recentBlockhash = blockhash; + // Sign and send transaction luloTxn.sign([agent.wallet]); - const signature = await agent.connection.sendTransaction(luloTxn); + + const signature = await agent.connection.sendTransaction(luloTxn, { + preflightCommitment: "confirmed", + maxRetries: 3, + }); + + // Wait for confirmation using the latest strategy + const latestBlockhash = await agent.connection.getLatestBlockhash(); + await agent.connection.confirmTransaction({ + signature, + blockhash: latestBlockhash.blockhash, + lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, + }); return signature; } catch (error: any) { throw new Error(`Lending failed: ${error.message}`); } } - -/** - * Fetch lending details for agent - * @param agent SolanaAgentKit instance - * @param LULO_API_KEY Valid API key for Lulo - * @returns Lending account details - */ -export async function getLendingDetails( - agent: SolanaAgentKit, - LULO_API_KEY = "", -): Promise { - try { - if (!LULO_API_KEY) { - throw new Error("Missing Lulo API key"); - } - - const response = await fetch(`${LULO_API}/account`, { - headers: { - "x-wallet-pubkey": agent.wallet.publicKey.toBase58(), - "x-api-key": LULO_API_KEY, - }, - }); - - const { data } = await response.json(); - - return data as LuloAccountDetailsResponse; - } catch (error: any) { - throw new Error(`Failed to fetch lending details: ${error.message}`); - } -} From d0433e88faedd37d47186e38c86bdadfd9f16ee3 Mon Sep 17 00:00:00 2001 From: aryan Date: Fri, 13 Dec 2024 15:17:16 +0530 Subject: [PATCH 4/4] docs --- docs/CNAME | 1 - docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 12 +++++++----- docs/functions/createSolanaTools.html | 2 +- docs/index.html | 2 +- docs/interfaces/CollectionDeployment.html | 4 ++-- docs/interfaces/CollectionOptions.html | 4 ++-- docs/interfaces/Creator.html | 4 ++-- docs/interfaces/LuloAccountDetailsResponse.html | 4 ++-- docs/interfaces/MintCollectionNFTResponse.html | 4 ++-- docs/interfaces/PumpFunTokenOptions.html | 4 ++-- docs/interfaces/PumpfunLaunchResponse.html | 4 ++-- docs/modules.html | 1 - docs/types/LuloDepositAssetMint.html | 2 -- 15 files changed, 25 insertions(+), 27 deletions(-) delete mode 100644 docs/CNAME delete mode 100644 docs/types/LuloDepositAssetMint.html diff --git a/docs/CNAME b/docs/CNAME deleted file mode 100644 index 2708636..0000000 --- a/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -solanaagentkit.xyz \ No newline at end of file diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 1fbea8f..42ae6d9 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE4WSTU/DMAyG/0vOFWUVG9DbRLUL40PQG+IQBZdGS+2odiQmtP+OyibWji695OInj+PXeftWAl+icvVKTqNefgLKvRWVKK+lVrkyTjMDp8P6RS2NU4naWPxQ+Sy72SV/pjtyDoxYwgK8o20D2PNZFGgrbYDTMXAozuaLUfGT706esB6oqLIFLdSOi/a12PV1cLQ0hgJKAaKt4xdgT8gwajyPx5o8WJTjUI+rMtrjLB1r8RwaXwVc64CmjupHySn1KmBJG4iubYSbSr4AT2xlyQzSjX30ytYf4j5lTpyXt9ezedbzmm7psP/sJZHrPbYK+Jspp/+goXVxtXv/ATHeAoJZAwAA" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE4XSTUsDQQwG4P+S8+Ji0SJ7K5ZerB/o3sTDMGbdodlk2GRAkf53qRXt4nR6mUveeUJInj/B8N2ggSchx27xhmw3waCC6KyHBjw5VdR6Wj/rbSCoYBP4FZrz2dW2+pWuhQi9BeElRpKPAfnAC2w4ds6j1rngFJ5dzrPwfdy9ekL9SRXJEZ3JmIf2tdL3dSJZeC+JbYnmAukjahRWzIrH46Umt4Htb6i7VVvscTRdavGQhtglXrvEvi/y2eQpepW4lQ0W15bJlVi/Ww7uj7IVoQO0S/w9u9b/QlNxfrF9+QJeMbLbAQMAAA==" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 73c468a..6172d55 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 3b6a544..5117a69 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

SolanaAgentKit

-

Constructors

Constructors

Properties

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

Methods

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

    • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS

    Returns Promise<{
        mint: PublicKey;
    }>

  • Parameters

    • Optionaltoken_address: PublicKey

    Returns Promise<null | number>

  • Parameters

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

    Returns Promise<{
        metadataUri: any;
        mint: string;
        signature: string;
    }>

  • Parameters

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

    Returns Promise<MintCollectionNFTResponse>

  • Parameters

    • name: string
    • OptionalspaceKB: number

    Returns Promise<string>

  • 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

    • decimals: number = DEFAULT_OPTIONS.TOKEN_DECIMALS

    Returns Promise<{
        mint: PublicKey;
    }>

  • Parameters

    • Optionaltoken_address: PublicKey

    Returns Promise<null | number>

  • 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;
          symbol: string;
          uri: string;
      }
      • Optionalcreators?: {
            address: string;
            share: number;
        }[]
      • name: string
      • OptionalsellerFeeBasisPoints?: number
      • symbol: string
      • uri: string
    • Optionalrecipient: PublicKey

    Returns Promise<MintCollectionNFTResponse>

  • Parameters

    • name: string
    • OptionalspaceKB: number

    Returns Promise<string>

  • 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 0689a13..d9c0079 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
        | SolanaGetWalletAddressTool
        | SolanaPumpfunTokenLaunchTool
        | SolanaCreateImageTool)[]

+createSolanaTools | solana-agent-kit

Function createSolanaTools

  • Parameters

    Returns (
        | SolanaBalanceTool
        | SolanaTransferTool
        | SolanaDeployTokenTool
        | SolanaDeployCollectionTool
        | SolanaMintNFTTool
        | SolanaTradeTool
        | SolanaRequestFundsTool
        | SolanaRegisterDomainTool
        | SolanaGetWalletAddressTool
        | SolanaPumpfunTokenLaunchTool
        | SolanaCreateImageTool
        | SolanaLendAssetTool
        | SolanaTPSCalculatorTool)[]

diff --git a/docs/index.html b/docs/index.html index 021597b..e4b3a2c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -53,7 +53,7 @@
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 { lendAsset } from 'solana-agent-kit';
import { PublicKey } from '@solana/web3.js';

const signature = await lendAsset(
agent,
new PublicKey('asset-mint'),
100, // amount
"lulo-api-key"
); +
import { lendAsset } from 'solana-agent-kit';
import { PublicKey } from '@solana/web3.js';

const signature = await lendAsset(
agent,
100, // amount
);

Deploy a new SPL token with optional initial supply.

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

Interface CollectionDeployment

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

Properties

collectionAddress +CollectionDeployment | solana-agent-kit

Interface CollectionDeployment

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

Properties

collectionAddress: PublicKey
signature: Uint8Array
+

Properties

collectionAddress: PublicKey
signature: Uint8Array
diff --git a/docs/interfaces/CollectionOptions.html b/docs/interfaces/CollectionOptions.html index 69c5eab..3983a1d 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 40ecce7..45d7bc5 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/LuloAccountDetailsResponse.html b/docs/interfaces/LuloAccountDetailsResponse.html index c112461..0034242 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 ecc3c1d..2d0001a 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 8c0e69e..81b6797 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 c5b14ca..9e25399 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/modules.html b/docs/modules.html index bffe782..4d1e321 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -6,6 +6,5 @@ MintCollectionNFTResponse PumpfunLaunchResponse PumpFunTokenOptions -

Type Aliases

Functions

diff --git a/docs/types/LuloDepositAssetMint.html b/docs/types/LuloDepositAssetMint.html deleted file mode 100644 index 1015fda..0000000 --- a/docs/types/LuloDepositAssetMint.html +++ /dev/null @@ -1,2 +0,0 @@ -LuloDepositAssetMint | solana-agent-kit

Type Alias LuloDepositAssetMint

LuloDepositAssetMint: typeof TOKENS[keyof typeof TOKENS]

Mint addresses of supported tokens for lending on Lulo

-