From 5cdb4fd9e711223492cf05cb48941d95678df7b3 Mon Sep 17 00:00:00 2001 From: aryan Date: Thu, 5 Dec 2024 21:33:09 +0530 Subject: [PATCH] feat: add image support --- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/classes/SolanaAgentKit.html | 14 +-- docs/functions/createSolanaTools.html | 2 +- docs/interfaces/CollectionDeployment.html | 4 +- docs/interfaces/CollectionOptions.html | 4 +- docs/interfaces/Creator.html | 4 +- .../LuloAccountDetailsResponse.html | 4 +- .../interfaces/MintCollectionNFTResponse.html | 4 +- docs/interfaces/PumpFunTokenOptions.html | 9 ++ docs/interfaces/PumpfunLaunchResponse.html | 5 + docs/modules.html | 2 + docs/types/LuloDepositAssetMint.html | 2 +- package.json | 1 + pnpm-lock.yaml | 53 +++++---- src/agent/index.ts | 5 +- src/langchain/index.ts | 109 +++++++++++------- src/tools/create_image.ts | 40 +++++++ src/types/index.ts | 22 ++++ 19 files changed, 197 insertions(+), 91 deletions(-) create mode 100644 docs/interfaces/PumpFunTokenOptions.html create mode 100644 docs/interfaces/PumpfunLaunchResponse.html create mode 100644 src/tools/create_image.ts diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 9dabcc9..1fbea8f 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE4XSwU7DMAwG4HfxuaJbxQb0VlFxAYYEuyEOUfBYhGdHtSttmvbuqGxi7ei6Sy7+8zlO8r4Fw7VBDm9Cjl3xhWyPwSCB6GwJOXhyqqhpt361tBVBAt+BPyEfZ7e75E+6FyL0FoRLjCSbFXLLC2xYLZxHTfuCXTibTHvhl9isekE9pAbJCp1J1Q/ta0Pbn2qSwnup2Uo0F0hfUaOwYq94Pj7U5DmwHYeaPcwHe5xNX5qjxCgarFBFa5Cjbpt4OPxp5sQc3d2MJ1nL9c0V4v7rzEWo9WKLmn9PqOm/UFedXu8+fgCaFcWUpwIAAA==" \ No newline at end of file +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 diff --git a/docs/assets/search.js b/docs/assets/search.js index 9c2b490..7948610 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 3d2bb59..552e3a6 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,22 +1,20 @@ 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: Connection

Solana RPC connection

-
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

    • asset: PublicKey
    • amount: number
    • LULO_API_KEY: string

    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>

+

Constructors

Properties

connection: Connection

Solana RPC connection

+
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

    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>

diff --git a/docs/functions/createSolanaTools.html b/docs/functions/createSolanaTools.html index b713625..f921005 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
        | SolanaLendAssetTool
        | SolanaFetchLendingDetailsTool
        | SolanaTPSCalculatorTool)[]

+createSolanaTools | solana-agent-kit

Function createSolanaTools

  • Parameters

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

diff --git a/docs/interfaces/CollectionDeployment.html b/docs/interfaces/CollectionDeployment.html index c8aae03..f964980 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 4dc95c0..e6ff08c 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 1c0921a..a93a8c0 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 ad41209..1278cfd 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 147b4c2..eb8841b 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 new file mode 100644 index 0000000..e74c17f --- /dev/null +++ b/docs/interfaces/PumpFunTokenOptions.html @@ -0,0 +1,9 @@ +PumpFunTokenOptions | solana-agent-kit

Interface PumpFunTokenOptions

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

Properties

description?: string
imageUrl?: string
initialLiquiditySOL?: number
priorityFee?: number
slippageBps?: number
telegram?: string
twitter?: string
website?: string
diff --git a/docs/interfaces/PumpfunLaunchResponse.html b/docs/interfaces/PumpfunLaunchResponse.html new file mode 100644 index 0000000..d6968bf --- /dev/null +++ b/docs/interfaces/PumpfunLaunchResponse.html @@ -0,0 +1,5 @@ +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
diff --git a/docs/modules.html b/docs/modules.html index ae48dd7..bffe782 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -4,6 +4,8 @@ Creator LuloAccountDetailsResponse MintCollectionNFTResponse +PumpfunLaunchResponse +PumpFunTokenOptions

Type Aliases

Functions

diff --git a/docs/types/LuloDepositAssetMint.html b/docs/types/LuloDepositAssetMint.html index b67a06d..d38defd 100644 --- a/docs/types/LuloDepositAssetMint.html +++ b/docs/types/LuloDepositAssetMint.html @@ -1,2 +1,2 @@ LuloDepositAssetMint | solana-agent-kit

Type Alias LuloDepositAssetMint

LuloDepositAssetMint: typeof TOKENS[keyof typeof TOKENS]

Mint addresses of supported tokens for lending on Lulo

-
+
diff --git a/package.json b/package.json index e2f9c23..4d0e5d8 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "dotenv": "^16.4.5", "form-data": "^4.0.1", "langchain": "^0.3.6", + "openai": "^4.75.0", "typedoc": "^0.26.11" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 562ff0e..445564c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,13 +13,13 @@ importers: version: 3.0.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@langchain/core': specifier: ^0.3.18 - version: 0.3.18(openai@4.72.0(zod@3.23.8)) + version: 0.3.18(openai@4.75.0(zod@3.23.8)) '@langchain/groq': specifier: ^0.1.2 - version: 0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) + version: 0.1.2(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) '@langchain/openai': specifier: ^0.3.13 - version: 0.3.13(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) + version: 0.3.13(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) '@metaplex-foundation/mpl-core': specifier: ^1.1.1 version: 1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.5.0) @@ -52,7 +52,10 @@ importers: version: 4.0.1 langchain: specifier: ^0.3.6 - version: 0.3.6(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))(@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))))(axios@1.7.7)(openai@4.72.0(zod@3.23.8)) + version: 0.3.6(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8)))(@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))))(axios@1.7.7)(openai@4.75.0(zod@3.23.8)) + openai: + specifier: ^4.75.0 + version: 4.75.0(zod@3.23.8) typedoc: specifier: ^0.26.11 version: 0.26.11(typescript@5.6.3) @@ -798,8 +801,8 @@ packages: oniguruma-to-es@0.1.2: resolution: {integrity: sha512-sBYKVJlIMB0WPO+tSu/NNB1ytSFeHyyJZ3Ayxfx3f/QUuXu0lvZk0VB4K7npmdlHSC0ldqanzh/sUSlAbgCTfw==} - openai@4.72.0: - resolution: {integrity: sha512-hFqG9BWCs7L7ifrhJXw7mJXmUBr7d9N6If3J9563o0jfwVA4wFANFDDaOIWFdgDdwgCXg5emf0Q+LoLCGszQYA==} + openai@4.75.0: + resolution: {integrity: sha512-8cWaK3td0qLspaflKWD6AvpQnl0gynWFbHg7sMAgiu//F20I4GJlCCpllDrECO6WFSuY8HXJj8gji3urw2BGGg==} hasBin: true peerDependencies: zod: ^3.23.8 @@ -1078,13 +1081,13 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))': + '@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))': dependencies: ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.15 - langsmith: 0.2.5(openai@4.72.0(zod@3.23.8)) + langsmith: 0.2.5(openai@4.75.0(zod@3.23.8)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -1094,29 +1097,29 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))': + '@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.18(openai@4.72.0(zod@3.23.8)) - '@langchain/openai': 0.3.13(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) + '@langchain/core': 0.3.18(openai@4.75.0(zod@3.23.8)) + '@langchain/openai': 0.3.13(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) groq-sdk: 0.5.0 zod: 3.23.8 zod-to-json-schema: 3.23.5(zod@3.23.8) transitivePeerDependencies: - encoding - '@langchain/openai@0.3.13(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))': + '@langchain/openai@0.3.13(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.18(openai@4.72.0(zod@3.23.8)) + '@langchain/core': 0.3.18(openai@4.75.0(zod@3.23.8)) js-tiktoken: 1.0.15 - openai: 4.72.0(zod@3.23.8) + openai: 4.75.0(zod@3.23.8) zod: 3.23.8 zod-to-json-schema: 3.23.5(zod@3.23.8) transitivePeerDependencies: - encoding - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))': + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.18(openai@4.72.0(zod@3.23.8)) + '@langchain/core': 0.3.18(openai@4.75.0(zod@3.23.8)) js-tiktoken: 1.0.15 '@metaplex-foundation/mpl-core@1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.5.0)': @@ -1772,15 +1775,15 @@ snapshots: jsonpointer@5.0.1: {} - langchain@0.3.6(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8)))(@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))))(axios@1.7.7)(openai@4.72.0(zod@3.23.8)): + langchain@0.3.6(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8)))(@langchain/groq@0.1.2(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))))(axios@1.7.7)(openai@4.75.0(zod@3.23.8)): dependencies: - '@langchain/core': 0.3.18(openai@4.72.0(zod@3.23.8)) - '@langchain/openai': 0.3.13(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) + '@langchain/core': 0.3.18(openai@4.75.0(zod@3.23.8)) + '@langchain/openai': 0.3.13(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) js-tiktoken: 1.0.15 js-yaml: 4.1.0 jsonpointer: 5.0.1 - langsmith: 0.2.5(openai@4.72.0(zod@3.23.8)) + langsmith: 0.2.5(openai@4.75.0(zod@3.23.8)) openapi-types: 12.1.3 p-retry: 4.6.2 uuid: 10.0.0 @@ -1788,13 +1791,13 @@ snapshots: zod: 3.23.8 zod-to-json-schema: 3.23.5(zod@3.23.8) optionalDependencies: - '@langchain/groq': 0.1.2(@langchain/core@0.3.18(openai@4.72.0(zod@3.23.8))) + '@langchain/groq': 0.1.2(@langchain/core@0.3.18(openai@4.75.0(zod@3.23.8))) axios: 1.7.7 transitivePeerDependencies: - encoding - openai - langsmith@0.2.5(openai@4.72.0(zod@3.23.8)): + langsmith@0.2.5(openai@4.75.0(zod@3.23.8)): dependencies: '@types/uuid': 10.0.0 commander: 10.0.1 @@ -1803,7 +1806,7 @@ snapshots: semver: 7.6.3 uuid: 10.0.0 optionalDependencies: - openai: 4.72.0(zod@3.23.8) + openai: 4.75.0(zod@3.23.8) linkify-it@5.0.0: dependencies: @@ -1882,7 +1885,7 @@ snapshots: regex: 4.4.0 regex-recursion: 4.2.1 - openai@4.72.0(zod@3.23.8): + openai@4.75.0(zod@3.23.8): dependencies: '@types/node': 18.19.64 '@types/node-fetch': 2.6.12 diff --git a/src/agent/index.ts b/src/agent/index.ts index 1a48f0b..7ab96da 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -27,14 +27,17 @@ export class SolanaAgentKit { public connection: Connection; public wallet: Keypair; public wallet_address: PublicKey; + public openai_api_key: string; constructor( private_key: string, - rpc_url = "https://api.mainnet-beta.solana.com" + rpc_url = "https://api.mainnet-beta.solana.com", + openai_api_key: string ) { this.connection = new Connection(rpc_url); this.wallet = Keypair.fromSecretKey(bs58.decode(private_key)); this.wallet_address = this.wallet.publicKey; + this.openai_api_key = openai_api_key; } // Tool methods diff --git a/src/langchain/index.ts b/src/langchain/index.ts index a121394..b207459 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -3,6 +3,7 @@ import { SolanaAgentKit } from "../index"; import { PublicKey } from "@solana/web3.js"; import { PumpFunTokenOptions } from "../types"; import { toJSON } from "../utils/toJSON"; +import { create_image } from "../tools/create_image"; export class SolanaBalanceTool extends Tool { name = "solana_balance"; description = @@ -193,59 +194,80 @@ export class SolanaGetWalletAddressTool extends Tool { export class SolanaPumpfunTokenLaunchTool extends Tool { name = "solana_launch_pumpfun_token"; - description = "Launch a new token on Pump.fun via Solana Agent Kit. Requires a JSON input with tokenName and tokenTicker, with optional fields for description, twitter, telegram, website, imageUrl, initialLiquiditySOL, and mintAddress."; + description = + "Launch a new token on Pump.fun via Solana Agent Kit. Requires a JSON input with tokenName and tokenTicker, with optional fields for description, twitter, telegram, website, imageUrl, initialLiquiditySOL, and mintAddress."; constructor(private solanaKit: SolanaAgentKit) { - super(); + super(); } - private validateInput(input : any): void { - if (!input.tokenName || typeof input.tokenName !== 'string') { - throw new Error('tokenName is required and must be a string'); - } - if (!input.tokenTicker || typeof input.tokenTicker !== 'string') { - throw new Error('tokenTicker is required and must be a string'); - } - if (input.initialLiquiditySOL !== undefined && typeof input.initialLiquiditySOL !== 'number') { - throw new Error('initialLiquiditySOL must be a number when provided'); - } + private validateInput(input: any): void { + if (!input.tokenName || typeof input.tokenName !== "string") { + throw new Error("tokenName is required and must be a string"); + } + if (!input.tokenTicker || typeof input.tokenTicker !== "string") { + throw new Error("tokenTicker is required and must be a string"); + } + if ( + input.initialLiquiditySOL !== undefined && + typeof input.initialLiquiditySOL !== "number" + ) { + throw new Error("initialLiquiditySOL must be a number when provided"); + } } protected async _call(input: string): Promise { - try { - // Parse and normalize input - const parsedInput = toJSON(input); - // Validate the input - this.validateInput(parsedInput); + try { + // Parse and normalize input + const parsedInput = toJSON(input); + // Validate the input + this.validateInput(parsedInput); - // Launch token with validated input - await this.solanaKit.launchPumpFunToken( - parsedInput.tokenName, - parsedInput.tokenTicker, - { - description: parsedInput.description, - twitter: parsedInput.twitter, - telegram: parsedInput.telegram, - website: parsedInput.website, - imageUrl: parsedInput.imageUrl, - initialLiquiditySOL: parsedInput.initialLiquiditySOL, - } - ); + // Launch token with validated input + await this.solanaKit.launchPumpFunToken( + parsedInput.tokenName, + parsedInput.tokenTicker, + { + description: parsedInput.description, + twitter: parsedInput.twitter, + telegram: parsedInput.telegram, + website: parsedInput.website, + imageUrl: parsedInput.imageUrl, + initialLiquiditySOL: parsedInput.initialLiquiditySOL, + } + ); - return JSON.stringify({ - status: "success", - message: "Token launched successfully on Pump.fun", - tokenName: parsedInput.tokenName, - tokenTicker: parsedInput.tokenTicker - }); + return JSON.stringify({ + status: "success", + message: "Token launched successfully on Pump.fun", + tokenName: parsedInput.tokenName, + tokenTicker: parsedInput.tokenTicker, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR" - }); - } +export class SolanaCreateImageTool extends Tool { + name = "solana_create_image"; + description = "Create an image using OpenAI's DALL-E"; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + async _call(input: string): Promise { + try { + const result = await create_image(this.solanaKit, input); + return JSON.stringify(result); + } catch (error: any) { + return `Error creating image: ${error.message}`; + } } } @@ -261,5 +283,6 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaRegisterDomainTool(solanaKit), new SolanaGetWalletAddressTool(solanaKit), new SolanaPumpfunTokenLaunchTool(solanaKit), + new SolanaCreateImageTool(solanaKit), ]; } diff --git a/src/tools/create_image.ts b/src/tools/create_image.ts new file mode 100644 index 0000000..e2c4bd4 --- /dev/null +++ b/src/tools/create_image.ts @@ -0,0 +1,40 @@ +import { SolanaAgentKit } from "../index"; +import OpenAI from "openai"; + +/** + * Generate an image using OpenAI's DALL-E + * @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) + * @returns Object containing the generated image URLs + */ +export async function create_image( + agent: SolanaAgentKit, + prompt: string, + size: "256x256" | "512x512" | "1024x1024" = "1024x1024", + n: number = 1 +) { + try { + if (!agent.openai_api_key) { + throw new Error("OpenAI API key not found in agent configuration"); + } + + const openai = new OpenAI({ + apiKey: agent.openai_api_key + }); + + const response = await openai.images.generate({ + prompt, + n, + size, + }); + + return { + images: response.data.map((img) => img.url), + }; + + } catch (error: any) { + throw new Error(`Image generation failed: ${error.message}`); + } +} diff --git a/src/types/index.ts b/src/types/index.ts index 6ff1ffb..4fd92d6 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,4 +1,5 @@ import { PublicKey } from "@solana/web3.js"; +import { TOKENS } from "../constants"; export interface Creator { address: string; @@ -40,3 +41,24 @@ export interface PumpfunLaunchResponse { metadataUri?: string; error?: string; } + + +/** + * Mint addresses of supported tokens for lending on Lulo + */ +export type LuloDepositAssetMint = (typeof TOKENS)[keyof typeof TOKENS]; + +/** + * Lulo Account Details response format + */ +export interface LuloAccountDetailsResponse { + totalValue: number; + interestEarned: number; + realtimeApy: number; + settings: { + owner: string; + allowedProtocols: string | null; + homebase: string | null; + minimumRate: string; + }; +}