diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index bcaae4e..54693ba 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE42TwU7DMAyG3yXniooJJtTbRNUDDJigN8QhCi6JltpR40hMaO+OtiFYWebtkos/f7asP69fiuGTVaVeyGvUsw9AvnesChU0W1Up43WMEMtx/cJy71Whlg7fVXU5uVkXv6Zb8h4MO8IagqdVD7jnc8gwdNpALHPgWDy5nmbFT2HzxhPWH0pUDqCZhrxoV5PaG2BjF4Mz8AwxEEbImg4xSXqXgmMYWloC1pp1VvkfkoTz5GlmDCXkGlg7H8Vtj+PSkAeH/Hf6x6YVZxylpRGL1Icu4VwnNFbUZ8lT6ibh9pxSuDKcqF2xPTMjeVSSm00+YfcvWyK/t3GXcHvYWB5AY+P0av32DUTvPWMEBAAA" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE42TwU7DMAyG3yXniooJJtTbRFUkGDCN3hCHEFwaNXWixBFMaO+O6BCsLPW45OIv3x/ZzuOHIHgnUYgHayTKxSsg3WgSmXCSWlEIZWQIEPJx/aSl3ohMdBpfRHE6u9hmP6ZLawwo0hZLcMZuesA9n0YC30gFIU+BY/HsfJ4U37uvMxyxflOs0oMk69OiXY27XgGpduW1gjUEZzFA0nSIcdIr/fxmfTfEQy1Dt4Zp9RTMBVxHpwl8bTvAUpJMiv9CnHAZjV0oZSNSCSS1CWw7pnEu5FYj/c72rqrZjEmai1jF3jURlzKiall9kjymriIO7eS2N8Gx2g21/1zCNMrJ1bBUu49fW2v2XtxEHBob8gNobJyfbZ8+AWWuiIJlBAAA" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index b0786c5..ca9eed4 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,H4sIAAAAAAAAE7Wd33OcOBLH/xf8OuUEkPjhNyc+V+Uuu0kl3r2HqZQLD/KEMwMsaOKbS+V/vxIwQ/eoGTeD9ylbHnX3V9JHLSGQ9qdTl8+Nc7X86TxlRepcuV60cIpko5wr52uZJ0VyvVaF/lemnYWzrXPnylnlSdOo5g3++fK73uTOYv+rc+U4vxZ7r9L1Dl5XZdHoervSZc1xeYHLA/cLp0pqVWhb6RDYfesJGLlQK52VBTfwUHxO3OckzxWr/S4ORefHu0/StFZNMyEuMJkTv6xUkWT3SZXdP6kdK75lMjG+91YM3Nbqr61q9G2yXSl9uy1SXhuQZnN0pKrKy91d+aR4wOHy8yO/L/N8Au+E0RwNa6XfJXlSrBQrOio+J+4mK/Tvt3esoEPZORF1nRTNo+KlM1B4HuPrrNGqvik3ScbrX8tkXvymzH+or2U+SYFlNJOwz3W2SerdBA2E0cy+T3mA70vOiZarIr1uGqV5GQ0Vn9nSd5+/ctu3Kzo3nkmDN4lO3u2uJ0xkY5avp+YuWz0xx/qI4Rwtj0qvvrdOP9cZM7XaNrMYTLbF6vvn7aa63Rb8yY00m6Oj0ckTr/77krOiqSJ9X24qg5NKr7M6rcuKF33Eco6aVa0SrT7Vq+RrVqxz9TVLVfrv71mdV2WZ81a3L7l4hdnhOu8TPXcBZlvNHLefnguVTpRBmr2Gjt7bbVnffbyZJOXYcqaaoWZ3H2/YjWJZzVfxpV+SnNNH4+Yzdf2WZMXgb9rSYsR21lhKdmm23bxvx+v1ZvOn4A0myuzVdLzPN5vpMnqr11NRnaWimq3CPK4+lOVT5/C3pH5iPt+PGM7RUu3091szw/MXBJbJxPiBOJqJupJ3ZZkPw/dxW7SPkc0bq8zJvSJPBgfvbTOBfaKs0Kp+TFaqedP/dNIV2pU43g4Z8XXx0h7IXtNImErVK1XoZK1ejISKcoOh5jk8q3+q2qYmQx4X4jdZ+w/b5UVffKQmltaRoNs6mxCzKz0zZF3uklzv3iVN1nwus0JPaMgL0nimoFXX7VNkAJPpwWmobtoNoY0xP6ljKMdHa3WwPn6644S4oMxfqjaozoioJlsXid7WL0B/LAaanSUCNv9vWaGH4r/f3n1RTVUWDalptDC/I8wW2HTXF70ZXd3xOoyJUDpJE52cI2QwPV8M7AD4iHoirRLF+I2unzOtFTmvjfm9GGzoelK6x8KrXK3rZDMt/mA0W8CzemgyTSI9Gn+wmR0+KzKdJfnH7K9tlmZ69/XTx0lSaPvZspo8q6pkrd5Vk4i7wHazZVR1VtaZ3t2qaR2E7c6RcTwMH7fFx3bb6FQOJAvyh+LJnD/um5H06RpMTMMnFJxMwdOC9zn0D3rpdUoDsnwFKaqu6fX+CRF7m/PCQ+g+bvPyerUqt4W+UTrJ8uYUeeOlJ8wEpU7yP5N8e06EC2RNV/9ElUazo9lSafQ/krpQ6TmyLA+vJa1WSa6zjbqudufowuavJapRWmfFmszZLykCtjPkBFL6A8T393pXnYXTXs3lwcVUUZeHCo19G/Bc0Oueidou947OVriv5Nh2QZ6Xzyr9XJe6XMF9jRmaCZ9/l/zv5UY9JGflLUs28PV3yd1kRbbZbr4k9KJwqmLs7hVFw8nin9sq06o+vOGjhB+XeZXtKtLpi/tWltyJmz501JN7PtyQzW7zAF5bvRj0UH5e2FStsk1CD206MLCYF1on9HxBh+1LzwuZl+vyjy8f+FEHg5nNnGT57v5HmW+ngHVkNU/CY63U/9R9stXf20cUvgzCcp4Us2o/R4hlN09GpepNUqhC36fmuX4k79JSSNt5ctR/tSqasb0WWgaymRyeu2Z6KfZLayXLHsge3RvNirVaPZUfyNU3U9EldjNZ3enJb3h9dOoJyS414cFcJ3pL4jDi9eJgQdeVkDz6UPakCrrxx2IPJnODV6bQh+KPrzfvpwjAZnNFbFTTjLzCGhMwmMwNvirTSZH78meERRtO6KXoyR0nsuRrkH3C80t0j8g/BdmtUumHm6k6sOmriTlLxisJOEH7KQkvET9NxBj1pxScJH8s/LeFkxWp+q9z9dP5oWqT7J0rx7v0L2Nn4TxmKk/NiZD9g8Cq3PSvANNytW3/81tf7E+1al85Xi270m/eOovl24VwL+M4/PZtsdwbtz+0f9j7GP7SGrrOYulShq5l6CJDz1ksPcrQsww9ZOg7i6VPGfqWoY8MhbNYCspQWIYCGUpnsZSUobQMJTIMnMUyoAwDyzBAhqGzWIaUYWgZhsgwchbLiDKMLMMIGcbOYhlThrFlGGMADA8uyY5rw+Me0dPiQ/NDAIQJcg0XLsmQa0PkYopcw4ZLcuTaILmYJNfw4ZIsuTZMLqbJNYy4JE+uDZSLiXINJy7JlGtD5WKqXMOKS3Ll2mC5mCzX8OKSbLk2XC6myzXMuCRfrg2YiwnzDDMeSZhnE+ZhwjzDjEcS5tmEeUc5qk1SdJYi0hQmzDPMeCRhnk2YhwnzDDMeSZhnE+ZhwjzDjEcS5tmEeZgwzzDjkYR5NmEeJswzzHgkYZ5NmIcJ8wwzHkmYZxPmYcI8w4xHEubZhHmYMN8w45OE+TZhPibMN8z4JGG+TZiPCfMNMz5JmG8T5h/NhO1USM+FxGSICfMNMz5JmG8T5mPCfMOMTxLm24T5mDDfMOOThPk2YT4mzDfM+CRhvk2YjwnzDTN+tPCDyyiKsbFNmI8J8w0zPkmYbxPmY8KEYUaQhAmbMIEJE4YZ4VKyhU2YwIQJw4wgCRM2YQITJgwzgiRM2ISJo/VWu+CiV1zEkgsTJgwzgiRM2IQJTJgwzAiSMGETJjBhwjAjQrK1bcIEJkwYZgSZw4RNmMCECcOMiMnINmECEyYNM5IkTNqESUyYNMxIModJmzCJCZOGGUkSJm3CJCZMGmYkSZi0CZOYMGmYkSRh0iZMHq3q22U9va4nFvaYMGmYkSRh0iZMYsKkYUaSOUzahElMmDTMSJIwaRMmMWEyHmVb2oRJTFjwdhTPwCYswIQFLWFk9gxswgJMWGCYCUi2A5uwABMWGGYCku3AJizAhAWGmYBkO7AJCzBhgWEmINkObMKCo2fH9uGRZDsgHh8xYYFhJiDZDmzCAkxYYJgJArKfbcICTFhgmAlItgObsAATFhpmApLt0CYsxISFhpmAJCy0CQsxYaFhJiQJC23CQkxYaJgJScJCm7AQExaK0TVJaBMWYsJCOboyCG3CQkxYaJgJSbZDm7DwaIei3aIg2Q6JTQpMWGiYCUm2Q5uwEBMWGmZCku3QJizEhEWGmZDM25FNWIQJiwwzIcl2ZBMWYcKiljB6b8YmLMKERS1hJNuRTViECYsMMxHJdmQTFmHCIjmaDCKbsAgTFhlmInJgRDZhESYsMsxEJJ6RTVh0tA/WboT5pGxiKwwTFhlmIhLPyCYswoTFhpmIxDO2CYsxYbFhJiJbO7YJizFhsWEmIif32CYsxoTFhpmIxDO2CYsxYbEYbe3YJizGhMWGmYjee7QJizFhsWEmJtmObcJiTFgcjre2TViMCYuj8da2Cev/1O7g/1C1VumHbid/uTy8wv7p3Pfb+8Hh5dZPJ4icq5+/Fk4kzb+/hm399q+HnX3zm4l4+Jho8OZHgze/9xYKnrfuu7dq+O4NiARuw7csd91bj8FFFA4uYq8ziiOmq/4deZYij+7gMQqYnvZHTIi2E6AnxFR/KTiGBVxK4JLXqYPLcn+uBfh7C/xx+2G4IGtw5A1+PK6b4YKvwQ/oApfnpz1mWtarpGlvNGjMjQbPw40GQKIAGnkId86b9gyrLo8Y9kH3+szu3Z9sBV4Axn44xQvuSFA5wasc/tZqcBWCekU8JoYv5IAbHwxxXsU65lfgLiowOIGoCc50d+cIkAVUsfz05wxA7gJjJuDBDj9aAlUCjiJen7WXurQvwevDpwrAIRiFEa92rcO2kfpX62C8AHkejwP7uznQ8KDlI97YXiud5HnaXaugzQtqKA8Q4fGQ6PzVh/sjBufIcQwcx1zHD/trzAZHwA/bjVEzyEr7qyRAugCd4vM6Za20+Wx+rLZgtHu8LLZ32Ht7LGudo4nUA13t8ThcK111F3TZdXZBbnN542StdAu1OaX0sCPmZhfQ47LpAT51f68TcAn622V3uK6wLtB0Lq/phg/1QY4CWkLeYOuPN+b7440Nnj0lWHlI3spjfyBI9QeCgDwwNwQ8Z//pvlk89ABKLWDVEPosd93FVFV3SsyaJDzg0OM1n7l1LelvXQPdCUaXyxtd5gPs9n4DUD/Q9iGPrHybl0l3ziHtzjlQE0YA6hnwGu7w+ROYdkAlY7dfifPYHc5xA9JAipO8FLd3c9RuEoyCgNeN/RmSuv28GfQA0BTy5vzuoCZYoQExIu6MAmb1jr4CB7rgsoiva1hiFY+aAkMAv4KXHo3f4hFV2QWt5vKq2haHQgChomcr5GWM49tlARcAMLYrc4FP9zyw6S/wAbMymKF83gzVn2QDYxFk/oA3yOFVMkAMAM1nO7K+7QeQAYcRL0tYi8kYoBDzEmHr41Gp9OgpHS6reN3XesqKbZOukCfAQczDc3/a/VGh2knQd5KX+fqpp5uHqCEowRCUvCEIpzPiYV+CsSR56dDcGTU8cyDKQOP5zG5AzsgHGFDnmEdaf8lXNzKTzeaHQCpBlX1elZHDVXt3GfAHnrB8Xr7F/qojf2Ah5DMr3B9nTiqU0wKQggLeANs/CBErblBNl1nN7h7tx/Ye7cfuHm2gDohjumtvhRx5ZgHseTz2en9NmRO1BZ3gMjuhu/7pwVz/VPXXP4FJCzgUPIfmvtDV4b7QZH9fKKgz8Olxfe6PmYOOAE0X8DIVuPMCVBFkPBF2lpI32ewvLnnATz4SMCJ5kHQbc4m5qu4pQxMymG14ib2/LRa0N9zR5A2B/VkNkM9Ap0X97nnMWx/sT7uCaRgoCnkN1B0hBS5Akgh5c8pwARDoKlAtyWOxnZOOJnIgJuKh09588aO7+QIwDRom4LVufy03yAFgXLi8lDLc6Q7cwP1r3nxzuOEJtC+okOSxd/TkI4AHwfOw/59QgMkJzE0TXNxTr0KAHJ6r/b1PoFWAE8nw8m3hVFml8qxQztXy269f/wdrfe1E92QAAA=="; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/SolanaAgentKit.html b/docs/classes/SolanaAgentKit.html index eccbc8c..ee667a3 100644 --- a/docs/classes/SolanaAgentKit.html +++ b/docs/classes/SolanaAgentKit.html @@ -1,12 +1,13 @@ SolanaAgentKit | solana-agent-kit

Class SolanaAgentKit

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

SolanaAgentKit

-

Constructors

Constructors

  • Parameters

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

    Returns SolanaAgentKit

Properties

connection: Connection

Solana RPC connection

-
openai_api_key: string
wallet: Keypair

Wallet keypair for signing transactions

-
wallet_address: PublicKey

Public key of the wallet

-

Methods

  • Parameters

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

    Returns Promise<string>

  • Parameters

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

    Returns Promise<{
        mint: PublicKey;
    }>

  • Parameters

    • mint: string

    Returns Promise<string>

  • Returns Promise<String[]>

  • Returns Promise<string[]>

  • Parameters

    • Optionaltoken_address: PublicKey

    Returns Promise<number>

  • Parameters

    • owner: PublicKey

    Returns Promise<null | string>

  • Parameters

    • owner: PublicKey

    Returns Promise<string[]>

  • Parameters

    • tld: string

    Returns Promise<string[]>

  • Parameters

    • account: PublicKey

    Returns Promise<string>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

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

    Returns Promise<MintCollectionNFTResponse>

  • Parameters

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

    Returns Promise<string[]>

  • Parameters

    • priceFeedID: string

    Returns Promise<string>

  • Parameters

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

    Returns Promise<string>

  • Parameters

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

    Returns Promise<string>

  • Parameters

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

    Returns Promise<string>

  • Parameters

    • name: string
    • OptionalspaceKB: number

    Returns Promise<string>

  • Returns Promise<string>

  • Parameters

    • domain: string

    Returns Promise<undefined | PublicKey>

  • Parameters

    • domain: string

    Returns Promise<PublicKey>

  • Parameters

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

    Returns Promise<string[]>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

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

    Returns Promise<string>

  • Parameters

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

    Returns Promise<string>

+

Constructors

  • Parameters

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

    Returns SolanaAgentKit

Properties

connection: Connection

Solana RPC connection

+
openai_api_key: string
wallet: Keypair

Wallet keypair for signing transactions

+
wallet_address: PublicKey

Public key of the wallet

+

Methods

  • Parameters

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

    Returns Promise<GibworkCreateTaskReponse>

  • Parameters

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

    Returns Promise<string>

  • Parameters

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

    Returns Promise<{
        mint: PublicKey;
    }>

  • Parameters

    • mint: string

    Returns Promise<string>

  • Returns Promise<String[]>

  • Returns Promise<string[]>

  • Parameters

    • Optionaltoken_address: PublicKey

    Returns Promise<number>

  • Parameters

    • owner: PublicKey

    Returns Promise<null | string>

  • Parameters

    • owner: PublicKey

    Returns Promise<string[]>

  • Parameters

    • tld: string

    Returns Promise<string[]>

  • Parameters

    • account: PublicKey

    Returns Promise<string>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

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

    Returns Promise<MintCollectionNFTResponse>

  • Parameters

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

    Returns Promise<string[]>

  • Parameters

    • priceFeedID: string

    Returns Promise<string>

  • Parameters

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

    Returns Promise<string>

  • Parameters

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

    Returns Promise<string>

  • Parameters

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

    Returns Promise<string>

  • Parameters

    • name: string
    • OptionalspaceKB: number

    Returns Promise<string>

  • Returns Promise<string>

  • Parameters

    • domain: string

    Returns Promise<undefined | PublicKey>

  • Parameters

    • domain: string

    Returns Promise<PublicKey>

  • Parameters

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

    Returns Promise<string>

  • Parameters

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

    Returns Promise<string[]>

  • Parameters

    • amount: number

    Returns Promise<string>

  • Parameters

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

    Returns Promise<string>

  • Parameters

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

    Returns Promise<string>

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

Function createSolanaTools

  • Parameters

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

+createSolanaTools | solana-agent-kit

Function createSolanaTools

  • Parameters

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

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

solana-agent-kit

-

Solana Agent Kit

-

Solana Agent Kit Cover 1 (3)

+

Solana Agent Kit

Solana Agent Kit Cover 1 (3)

+

NPM Downloads +GitHub forks +GitHub License

+

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

  • Solana Blinks

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

    Non-Financial Actions

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

    -

    MIT License

    +

    Apache-2 License

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

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

    Interface CollectionDeployment

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

    Properties

    collectionAddress +CollectionDeployment | solana-agent-kit

    Interface CollectionDeployment

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

    Properties

    collectionAddress: PublicKey
    signature: Uint8Array<ArrayBufferLike>
    +

    Properties

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

    Interface CollectionOptions

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

    Properties

    creators? +CollectionOptions | solana-agent-kit

    Interface CollectionOptions

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

    Properties

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

    Properties

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

    Interface Creator

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

    Properties

    address +Creator | solana-agent-kit

    Interface Creator

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

    Properties

    Properties

    address: string
    percentage: number
    +

    Properties

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

    Interface FetchPriceResponse

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

    Properties

    code? +FetchPriceResponse | solana-agent-kit

    Interface FetchPriceResponse

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

    Properties

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

    Properties

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

    Interface GibworkCreateTaskReponse

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

    Properties

    Properties

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

    Interface JupiterTokenData

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

    Properties

    address +JupiterTokenData | solana-agent-kit

    Interface JupiterTokenData

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

    Properties

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

    Properties

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

    Interface LuloAccountDetailsResponse

    Lulo Account Details response format

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

    Properties

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

    Properties

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

    Properties

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

    Interface MintCollectionNFTResponse

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

    Properties

    metadata +MintCollectionNFTResponse | solana-agent-kit

    Interface MintCollectionNFTResponse

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

    Properties

    Properties

    metadata: PublicKey
    mint: PublicKey
    +

    Properties

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

    Interface PumpFunTokenOptions

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

    Properties

    initialLiquiditySOL? +PumpFunTokenOptions | solana-agent-kit

    Interface PumpFunTokenOptions

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

    Properties

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

    Properties

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

    Interface PumpfunLaunchResponse

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

    Properties

    error? +PumpfunLaunchResponse | solana-agent-kit

    Interface PumpfunLaunchResponse

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

    Properties

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

    Properties

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

    Interface PythFetchPriceResponse

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

    Properties

    code? +PythFetchPriceResponse | solana-agent-kit

    Interface PythFetchPriceResponse

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

    Properties

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

    Properties

    code?: string
    message?: string
    price?: string
    priceFeedID: string
    status: "success" | "error"
    diff --git a/docs/modules.html b/docs/modules.html index 29440e3..fba41cb 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -3,6 +3,7 @@ CollectionOptions Creator FetchPriceResponse +GibworkCreateTaskReponse JupiterTokenData LuloAccountDetailsResponse MintCollectionNFTResponse diff --git a/package.json b/package.json index abd3301..5cf223d 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", "@solana/spl-token": "^0.4.9", "@solana/web3.js": "^1.95.4", + "@tiplink/api": "^0.3.1", "bn.js": "^5.2.1", "bs58": "^6.0.0", "chai": "^5.1.2", @@ -56,13 +57,13 @@ "@types/bn.js": "^5.1.5", "@types/chai": "^5.0.1", "@types/node": "^22.9.0", - "ts-node": "^10.9.2", - "typescript": "^5.7.2", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0", - "prettier": "^3.2.5" + "prettier": "^3.2.5", + "ts-node": "^10.9.2", + "typescript": "^5.7.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddfc583..06a97f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,6 +71,9 @@ importers: '@solana/web3.js': specifier: ^1.95.4 version: 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@tiplink/api': + specifier: ^0.3.1 + version: 0.3.1(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10) bn.js: specifier: ^5.2.1 version: 5.2.1 @@ -578,6 +581,12 @@ packages: peerDependencies: '@solana/web3.js': ^1.95.3 + '@solana/spl-token@0.3.11': + resolution: {integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.88.0 + '@solana/spl-token@0.4.6': resolution: {integrity: sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==} engines: {node: '>=16'} @@ -609,6 +618,9 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@tiplink/api@0.3.1': + resolution: {integrity: sha512-HjnXethjKOHTYT0IP1BewlMS7wZJ+hsoDgRa6jA1cNvxvwQjE1WHOyvOUPpAi+DJDw4P4/omFtyHr7dwLfnB/g==} + '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -822,6 +834,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + big.js@6.2.2: resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} @@ -870,6 +886,9 @@ packages: resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} engines: {node: '>=4.5'} + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -1352,6 +1371,9 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -1464,6 +1486,18 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + libsodium-sumo@0.7.15: + resolution: {integrity: sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==} + + libsodium-wrappers-sumo@0.7.15: + resolution: {integrity: sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==} + + libsodium-wrappers@0.7.15: + resolution: {integrity: sha512-E4anqJQwcfiC6+Yrl01C1m8p99wEhLmJSs0VQqST66SbQXXBoaJY0pF4BNjRYa/sOQAxx6lXAaAFIlx+15tXJQ==} + + libsodium@0.7.15: + resolution: {integrity: sha512-sZwRknt/tUpE2AwzHq3jEyUU5uvIZHtSssktXq7owd++3CSgn8RGrv6UZJJBpP7+iBghBqe7Z06/2M31rI2NKw==} + linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} @@ -1554,6 +1588,11 @@ packages: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -1669,6 +1708,9 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + poly1305-js@0.4.4: + resolution: {integrity: sha512-5B6/S+vg5AOr66wJDkh5LOpU/F3EKANDy4VXKsNZLXea1uCy6CiOWOZ3VhcC0nYdhE7vJUMcLxqcVlrv2g/+Rg==} + possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -1768,6 +1810,14 @@ packages: snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + sodium-native@3.4.1: + resolution: {integrity: sha512-PaNN/roiFWzVVTL6OqjzYct38NSXewdl2wz8SRB51Br/MLIJPrbM3XexhVWkq7D3UWMysfrhKVf1v1phZq6MeQ==} + + sodium-plus@0.9.0: + resolution: {integrity: sha512-WWKxrd81qDL7C1A10yxNmZ135yovEZuIRnZ/BIf/FcajYBupbKbPdgzwlusPHLVxkMDDamcarq9PxxRBUSqpCw==} + peerDependencies: + sodium-native: ^3.2.0 + space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -1862,6 +1912,9 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + tweetnacl@1.0.3: resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} @@ -1873,6 +1926,9 @@ packages: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typedoc@0.26.11: resolution: {integrity: sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==} engines: {node: '>= 18'} @@ -1880,6 +1936,11 @@ packages: peerDependencies: typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + typescript@5.7.2: resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} engines: {node: '>=14.17'} @@ -2001,6 +2062,9 @@ packages: utf-8-validate: optional: true + xsalsa20@1.2.0: + resolution: {integrity: sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w==} + yaml@2.6.1: resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} engines: {node: '>= 14'} @@ -2514,6 +2578,11 @@ snapshots: '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) typescript: 5.7.2 + '@solana/codecs-core@2.0.0-rc.1(typescript@4.9.5)': + dependencies: + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + typescript: 4.9.5 + '@solana/codecs-core@2.0.0-rc.1(typescript@5.7.2)': dependencies: '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) @@ -2532,6 +2601,13 @@ snapshots: '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) typescript: 5.7.2 + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + typescript: 4.9.5 + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) @@ -2550,6 +2626,12 @@ snapshots: '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) typescript: 5.7.2 + '@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + typescript: 4.9.5 + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) @@ -2571,6 +2653,14 @@ snapshots: fastestsmallesttextencoderdecoder: 1.0.22 typescript: 5.7.2 + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 4.9.5 + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) @@ -2600,6 +2690,17 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) @@ -2622,6 +2723,12 @@ snapshots: commander: 12.1.0 typescript: 5.7.2 + '@solana/errors@2.0.0-rc.1(typescript@4.9.5)': + dependencies: + chalk: 5.4.0 + commander: 12.1.0 + typescript: 4.9.5 + '@solana/errors@2.0.0-rc.1(typescript@5.7.2)': dependencies: chalk: 5.4.0 @@ -2644,6 +2751,17 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@4.9.5) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) @@ -2688,6 +2806,14 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) @@ -2696,6 +2822,20 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 @@ -2793,6 +2933,26 @@ snapshots: dependencies: tslib: 2.8.1 + '@tiplink/api@0.3.1(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + bs58: 5.0.0 + libsodium: 0.7.15 + libsodium-wrappers-sumo: 0.7.15 + nanoid: 3.3.8 + sodium-plus: 0.9.0(sodium-native@3.4.1) + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + typescript: 4.9.5 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - sodium-native + - utf-8-validate + '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} @@ -3026,6 +3186,8 @@ snapshots: base64-js@1.5.1: {} + big-integer@1.6.52: {} + big.js@6.2.2: {} bigint-buffer@1.1.5: @@ -3077,6 +3239,11 @@ snapshots: buffer-layout@1.2.2: {} + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + buffer@6.0.3: dependencies: base64-js: 1.5.1 @@ -3572,6 +3739,8 @@ snapshots: dependencies: which-typed-array: 1.1.18 + is-typedarray@1.0.0: {} + isexe@2.0.0: {} isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): @@ -3672,6 +3841,18 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + libsodium-sumo@0.7.15: {} + + libsodium-wrappers-sumo@0.7.15: + dependencies: + libsodium-sumo: 0.7.15 + + libsodium-wrappers@0.7.15: + dependencies: + libsodium: 0.7.15 + + libsodium@0.7.15: {} + linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 @@ -3765,6 +3946,8 @@ snapshots: mustache@4.2.0: {} + nanoid@3.3.8: {} + natural-compare@1.4.0: {} no-case@3.0.4: @@ -3778,8 +3961,7 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-gyp-build@4.8.4: - optional: true + node-gyp-build@4.8.4: {} object-is@1.1.6: dependencies: @@ -3876,6 +4058,10 @@ snapshots: picomatch@2.3.1: {} + poly1305-js@0.4.4: + dependencies: + big-integer: 1.6.52 + possible-typed-array-names@1.0.0: {} prelude-ls@1.2.1: {} @@ -3970,6 +4156,19 @@ snapshots: dot-case: 3.0.4 tslib: 2.8.1 + sodium-native@3.4.1: + dependencies: + node-gyp-build: 4.8.4 + + sodium-plus@0.9.0(sodium-native@3.4.1): + dependencies: + buffer: 5.7.1 + libsodium-wrappers: 0.7.15 + poly1305-js: 0.4.4 + sodium-native: 3.4.1 + typedarray-to-buffer: 3.1.5 + xsalsa20: 1.2.0 + space-separated-tokens@2.0.2: {} stringify-entities@4.0.4: @@ -4052,6 +4251,8 @@ snapshots: tslib@2.8.1: {} + tweetnacl-util@0.15.1: {} + tweetnacl@1.0.3: {} type-check@0.4.0: @@ -4060,6 +4261,10 @@ snapshots: type-fest@0.20.2: {} + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + typedoc@0.26.11(typescript@5.7.2): dependencies: lunr: 2.3.9 @@ -4069,6 +4274,8 @@ snapshots: typescript: 5.7.2 yaml: 2.6.1 + typescript@4.9.5: {} + typescript@5.7.2: {} uc.micro@2.1.0: {} @@ -4180,6 +4387,8 @@ snapshots: bufferutil: 4.0.8 utf-8-validate: 5.0.10 + xsalsa20@1.2.0: {} + yaml@2.6.1: {} yn@3.1.1: {} diff --git a/src/agent/index.ts b/src/agent/index.ts index 56f66f4..bf89861 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -35,6 +35,8 @@ import { getOwnedAllDomains, resolveAllDomains, create_gibwork_task, + rock_paper_scissor, + create_TipLink, } from "../tools"; import { CollectionDeployment, @@ -337,4 +339,14 @@ export class SolanaAgentKit { payer ? new PublicKey(payer) : undefined, ); } + + async rockPaperScissors( + amount: number, + choice: "rock" | "paper" | "scissors", + ) { + return rock_paper_scissor(this, amount, choice); + } + async createTiplink(amount: number, splmintAddress?: PublicKey) { + return create_TipLink(this, amount, splmintAddress); + } } diff --git a/src/langchain/index.ts b/src/langchain/index.ts index f28b000..21888bf 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -1229,6 +1229,103 @@ export class SolanaCreateGibworkTask extends Tool { } } +export class SolanaRockPaperScissorsTool extends Tool { + name = "rock_paper_scissors"; + description = `Play rock paper scissors to win SEND coins. + + Inputs (input is a JSON string): + choice: string, either "rock", "paper", or "scissors" (required) + amount: number, amount of SOL to play with - must be 0.1, 0.01, or 0.005 SOL (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + private validateInput(input: any): void { + if (input.choice !== undefined) { + throw new Error("choice is required."); + } + if ( + input.amount !== undefined && + (typeof input.spaceKB !== "number" || input.spaceKB <= 0) + ) { + throw new Error("amount must be a positive number when provided"); + } + } + + protected async _call(input: string): Promise { + try { + const parsedInput = toJSON(input); + this.validateInput(parsedInput); + const result = await this.solanaKit.rockPaperScissors( + Number(parsedInput['"amount"']), + parsedInput['"choice"'].replace(/^"|"$/g, "") as + | "rock" + | "paper" + | "scissors", + ); + + return JSON.stringify({ + status: "success", + message: result, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaTipLinkTool extends Tool { + name = "solana_tiplink"; + description = `Create a TipLink for transferring SOL or SPL tokens. + Input is a JSON string with: + - amount: number (required) - Amount to transfer + - splmintAddress: string (optional) - SPL token mint address`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + if (!parsedInput.amount) { + throw new Error("Amount is required"); + } + + const amount = parseFloat(parsedInput.amount); + const splmintAddress = parsedInput.splmintAddress + ? new PublicKey(parsedInput.splmintAddress) + : undefined; + + const { url, signature } = await this.solanaKit.createTiplink( + amount, + splmintAddress, + ); + + return JSON.stringify({ + status: "success", + url, + signature, + amount, + tokenType: splmintAddress ? "SPL" : "SOL", + message: `TipLink created successfully`, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + export function createSolanaTools(solanaKit: SolanaAgentKit) { return [ new SolanaBalanceTool(solanaKit), @@ -1263,5 +1360,7 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaGetMainDomain(solanaKit), new SolanaResolveAllDomainsTool(solanaKit), new SolanaCreateGibworkTask(solanaKit), + new SolanaRockPaperScissorsTool(solanaKit), + new SolanaTipLinkTool(solanaKit), ]; } diff --git a/src/tools/create_tiplinks.ts b/src/tools/create_tiplinks.ts new file mode 100644 index 0000000..20348ad --- /dev/null +++ b/src/tools/create_tiplinks.ts @@ -0,0 +1,112 @@ +import { TipLink } from "@tiplink/api"; +import { + Transaction, + SystemProgram, + LAMPORTS_PER_SOL, + sendAndConfirmTransaction, + PublicKey, + ComputeBudgetProgram, +} from "@solana/web3.js"; +import { + getAssociatedTokenAddress, + createTransferInstruction, + getMint, + createAssociatedTokenAccountInstruction, +} from "@solana/spl-token"; +import { SolanaAgentKit } from "../index"; + +const MINIMUM_SOL_BALANCE = 0.003 * LAMPORTS_PER_SOL; + +export async function create_TipLink( + agent: SolanaAgentKit, + amount: number, + splmintAddress?: PublicKey, +): Promise<{ url: string; signature: string }> { + try { + const tiplink = await TipLink.create(); + + if (!splmintAddress) { + const transaction = new Transaction(); + transaction.add( + SystemProgram.transfer({ + fromPubkey: agent.wallet_address, + toPubkey: tiplink.keypair.publicKey, + lamports: amount * LAMPORTS_PER_SOL, + }), + ); + + const signature = await sendAndConfirmTransaction( + agent.connection, + transaction, + [agent.wallet], + { commitment: "confirmed" }, + ); + + return { + url: tiplink.url.toString(), + signature, + }; + } else { + const fromAta = await getAssociatedTokenAddress( + splmintAddress, + agent.wallet_address, + ); + const toAta = await getAssociatedTokenAddress( + splmintAddress, + tiplink.keypair.publicKey, + ); + + const mintInfo = await getMint(agent.connection, splmintAddress); + const adjustedAmount = amount * Math.pow(10, mintInfo.decimals); + + const transaction = new Transaction(); + + transaction.add( + ComputeBudgetProgram.setComputeUnitPrice({ + microLamports: 5000, + }), + ); + + transaction.add( + SystemProgram.transfer({ + fromPubkey: agent.wallet_address, + toPubkey: tiplink.keypair.publicKey, + lamports: MINIMUM_SOL_BALANCE, + }), + ); + + transaction.add( + createAssociatedTokenAccountInstruction( + agent.wallet_address, + toAta, + tiplink.keypair.publicKey, + splmintAddress, + ), + ); + + transaction.add( + createTransferInstruction( + fromAta, + toAta, + agent.wallet_address, + adjustedAmount, + ), + ); + + const signature = await sendAndConfirmTransaction( + agent.connection, + transaction, + [agent.wallet], + { commitment: "confirmed" }, + ); + + return { + url: tiplink.url.toString(), + signature, + }; + } + } catch (error: any) { + console.error("Error creating TipLink or sending funds:", error.message); + throw new Error(`Failed to create TipLink: ${error.message}`); + } +} diff --git a/src/tools/index.ts b/src/tools/index.ts index 9a18cf4..468648e 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -37,3 +37,6 @@ export * from "./openbook_create_market"; export * from "./pyth_fetch_price"; export * from "./create_gibwork_task"; + +export * from "./rock_paper_scissor"; +export * from "./create_tiplinks"; diff --git a/src/tools/rock_paper_scissor.ts b/src/tools/rock_paper_scissor.ts new file mode 100644 index 0000000..8a0603e --- /dev/null +++ b/src/tools/rock_paper_scissor.ts @@ -0,0 +1,132 @@ +import { sendAndConfirmTransaction, Transaction } from "@solana/web3.js"; +import { SolanaAgentKit } from "../agent"; + +export async function rock_paper_scissor( + agent: SolanaAgentKit, + amount: number, + choice: "rock" | "paper" | "scissors", +) { + try { + const res = await fetch( + `https://rps.sendarcade.fun/api/actions/bot?amount=${amount}&choice=${choice}`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + }), + }, + ); + + const data = await res.json(); + if (data.transaction) { + const txn = Transaction.from(Buffer.from(data.transaction, "base64")); + txn.sign(agent.wallet); + txn.recentBlockhash = ( + await agent.connection.getLatestBlockhash() + ).blockhash; + const sig = await sendAndConfirmTransaction( + agent.connection, + txn, + [agent.wallet], + { commitment: "confirmed" }, + ); + const href = data.links?.next?.href; + return await outcome(agent, sig, href); + } else { + return "failed"; + } + } catch (error: any) { + console.error(error); + throw new Error(`RPS game failed: ${error.message}`); + } +} +async function outcome( + agent: SolanaAgentKit, + sig: string, + href: string, +): Promise { + try { + const res = await fetch( + "https://rps.sendarcade.fun" + href, // href = /api/actions/outcome?id=... + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + signature: sig, + }), + }, + ); + + const data: any = await res.json(); + const title = data.title; + if (title.startsWith("You lost")) { + return title; + } + const next_href = data.links?.actions?.[0]?.href; + return title + "\n" + (await won(agent, next_href)); + } catch (error: any) { + console.error(error); + throw new Error(`RPS outcome failed: ${error.message}`); + } +} +async function won(agent: SolanaAgentKit, href: string): Promise { + try { + const res = await fetch( + "https://rps.sendarcade.fun" + href, // href = /api/actions/won?id=... + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + }), + }, + ); + + const data: any = await res.json(); + if (data.transaction) { + const txn = Transaction.from(Buffer.from(data.transaction, "base64")); + txn.partialSign(agent.wallet); + await agent.connection.sendRawTransaction(txn.serialize(), { + preflightCommitment: "confirmed", + }); + } else { + return "Failed to claim prize."; + } + const next_href = data.links?.next?.href; + return await postWin(agent, next_href); + } catch (error: any) { + console.error(error); + throw new Error(`RPS outcome failed: ${error.message}`); + } +} +async function postWin(agent: SolanaAgentKit, href: string): Promise { + try { + const res = await fetch( + "https://rps.sendarcade.fun" + href, // href = /api/actions/postwin?id=... + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + account: agent.wallet.publicKey.toBase58(), + }), + }, + ); + + const data: any = await res.json(); + const title = data.title; + return "Prize claimed Successfully" + "\n" + title; + } catch (error: any) { + console.error(error); + throw new Error(`RPS outcome failed: ${error.message}`); + } +}