@coinbase/agentkit 0.0.0-nightly-20250328174338

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/README.md +827 -0
  2. package/dist/action-providers/across/acrossActionProvider.d.ts +50 -0
  3. package/dist/action-providers/across/acrossActionProvider.js +333 -0
  4. package/dist/action-providers/across/acrossActionProvider.test.d.ts +1 -0
  5. package/dist/action-providers/across/acrossActionProvider.test.js +391 -0
  6. package/dist/action-providers/across/constants.d.ts +1 -0
  7. package/dist/action-providers/across/constants.js +2 -0
  8. package/dist/action-providers/across/index.d.ts +1 -0
  9. package/dist/action-providers/across/index.js +17 -0
  10. package/dist/action-providers/across/schemas.d.ts +36 -0
  11. package/dist/action-providers/across/schemas.js +46 -0
  12. package/dist/action-providers/across/utils.d.ts +7 -0
  13. package/dist/action-providers/across/utils.js +25 -0
  14. package/dist/action-providers/actionDecorator.d.ts +69 -0
  15. package/dist/action-providers/actionDecorator.js +96 -0
  16. package/dist/action-providers/actionProvider.d.ts +48 -0
  17. package/dist/action-providers/actionProvider.js +62 -0
  18. package/dist/action-providers/alchemy/alchemyTokenPricesActionProvider.d.ts +55 -0
  19. package/dist/action-providers/alchemy/alchemyTokenPricesActionProvider.js +173 -0
  20. package/dist/action-providers/alchemy/alchemyTokenPricesActionProvider.test.d.ts +1 -0
  21. package/dist/action-providers/alchemy/alchemyTokenPricesActionProvider.test.js +131 -0
  22. package/dist/action-providers/alchemy/index.d.ts +2 -0
  23. package/dist/action-providers/alchemy/index.js +18 -0
  24. package/dist/action-providers/alchemy/schemas.d.ts +41 -0
  25. package/dist/action-providers/alchemy/schemas.js +34 -0
  26. package/dist/action-providers/allora/alloraActionProvider.d.ts +44 -0
  27. package/dist/action-providers/allora/alloraActionProvider.js +195 -0
  28. package/dist/action-providers/allora/alloraActionProvider.test.d.ts +1 -0
  29. package/dist/action-providers/allora/alloraActionProvider.test.js +109 -0
  30. package/dist/action-providers/allora/index.d.ts +2 -0
  31. package/dist/action-providers/allora/index.js +18 -0
  32. package/dist/action-providers/allora/schemas.d.ts +28 -0
  33. package/dist/action-providers/allora/schemas.js +30 -0
  34. package/dist/action-providers/basename/basenameActionProvider.d.ts +30 -0
  35. package/dist/action-providers/basename/basenameActionProvider.js +109 -0
  36. package/dist/action-providers/basename/basenameActionProvider.test.d.ts +1 -0
  37. package/dist/action-providers/basename/basenameActionProvider.test.js +146 -0
  38. package/dist/action-providers/basename/constants.d.ts +52 -0
  39. package/dist/action-providers/basename/constants.js +81 -0
  40. package/dist/action-providers/basename/index.d.ts +2 -0
  41. package/dist/action-providers/basename/index.js +18 -0
  42. package/dist/action-providers/basename/schemas.d.ts +14 -0
  43. package/dist/action-providers/basename/schemas.js +14 -0
  44. package/dist/action-providers/cdp/cdpApiActionProvider.d.ts +43 -0
  45. package/dist/action-providers/cdp/cdpApiActionProvider.js +128 -0
  46. package/dist/action-providers/cdp/cdpApiActionProvider.test.d.ts +1 -0
  47. package/dist/action-providers/cdp/cdpApiActionProvider.test.js +146 -0
  48. package/dist/action-providers/cdp/cdpWalletActionProvider.d.ts +58 -0
  49. package/dist/action-providers/cdp/cdpWalletActionProvider.js +224 -0
  50. package/dist/action-providers/cdp/cdpWalletActionProvider.test.d.ts +1 -0
  51. package/dist/action-providers/cdp/cdpWalletActionProvider.test.js +267 -0
  52. package/dist/action-providers/cdp/constants.d.ts +31 -0
  53. package/dist/action-providers/cdp/constants.js +34 -0
  54. package/dist/action-providers/cdp/index.d.ts +3 -0
  55. package/dist/action-providers/cdp/index.js +19 -0
  56. package/dist/action-providers/cdp/schemas.d.ts +91 -0
  57. package/dist/action-providers/cdp/schemas.js +77 -0
  58. package/dist/action-providers/compound/compoundActionProvider.d.ts +67 -0
  59. package/dist/action-providers/compound/compoundActionProvider.js +365 -0
  60. package/dist/action-providers/compound/compoundActionProvider.test.d.ts +1 -0
  61. package/dist/action-providers/compound/compoundActionProvider.test.js +353 -0
  62. package/dist/action-providers/compound/constants.d.ts +180 -0
  63. package/dist/action-providers/compound/constants.js +129 -0
  64. package/dist/action-providers/compound/index.d.ts +1 -0
  65. package/dist/action-providers/compound/index.js +17 -0
  66. package/dist/action-providers/compound/schemas.d.ts +57 -0
  67. package/dist/action-providers/compound/schemas.js +58 -0
  68. package/dist/action-providers/compound/utils.d.ts +95 -0
  69. package/dist/action-providers/compound/utils.js +353 -0
  70. package/dist/action-providers/customActionProvider.d.ts +30 -0
  71. package/dist/action-providers/customActionProvider.js +66 -0
  72. package/dist/action-providers/defillama/constants.d.ts +8 -0
  73. package/dist/action-providers/defillama/constants.js +11 -0
  74. package/dist/action-providers/defillama/defillamaActionProvider.d.ts +54 -0
  75. package/dist/action-providers/defillama/defillamaActionProvider.js +180 -0
  76. package/dist/action-providers/defillama/defillamaActionProvider.test.d.ts +1 -0
  77. package/dist/action-providers/defillama/defillamaActionProvider.test.js +114 -0
  78. package/dist/action-providers/defillama/index.d.ts +1 -0
  79. package/dist/action-providers/defillama/index.js +17 -0
  80. package/dist/action-providers/defillama/schemas.d.ts +34 -0
  81. package/dist/action-providers/defillama/schemas.js +34 -0
  82. package/dist/action-providers/defillama/types.d.ts +73 -0
  83. package/dist/action-providers/defillama/types.js +2 -0
  84. package/dist/action-providers/defillama/utils.d.ts +10 -0
  85. package/dist/action-providers/defillama/utils.js +87 -0
  86. package/dist/action-providers/defillama/utils.test.d.ts +1 -0
  87. package/dist/action-providers/defillama/utils.test.js +124 -0
  88. package/dist/action-providers/erc20/constants.d.ts +137 -0
  89. package/dist/action-providers/erc20/constants.js +202 -0
  90. package/dist/action-providers/erc20/erc20ActionProvider.d.ts +38 -0
  91. package/dist/action-providers/erc20/erc20ActionProvider.js +142 -0
  92. package/dist/action-providers/erc20/erc20ActionProvider.test.d.ts +1 -0
  93. package/dist/action-providers/erc20/erc20ActionProvider.test.js +131 -0
  94. package/dist/action-providers/erc20/index.d.ts +1 -0
  95. package/dist/action-providers/erc20/index.js +17 -0
  96. package/dist/action-providers/erc20/schemas.d.ts +27 -0
  97. package/dist/action-providers/erc20/schemas.js +26 -0
  98. package/dist/action-providers/erc721/constants.d.ts +232 -0
  99. package/dist/action-providers/erc721/constants.js +298 -0
  100. package/dist/action-providers/erc721/erc721ActionProvider.d.ts +46 -0
  101. package/dist/action-providers/erc721/erc721ActionProvider.js +164 -0
  102. package/dist/action-providers/erc721/erc721ActionProvider.test.d.ts +1 -0
  103. package/dist/action-providers/erc721/erc721ActionProvider.test.js +137 -0
  104. package/dist/action-providers/erc721/index.d.ts +1 -0
  105. package/dist/action-providers/erc721/index.js +17 -0
  106. package/dist/action-providers/erc721/schemas.d.ts +46 -0
  107. package/dist/action-providers/erc721/schemas.js +44 -0
  108. package/dist/action-providers/farcaster/farcasterActionProvider.d.ts +57 -0
  109. package/dist/action-providers/farcaster/farcasterActionProvider.js +142 -0
  110. package/dist/action-providers/farcaster/farcasterActionProvider.test.d.ts +1 -0
  111. package/dist/action-providers/farcaster/farcasterActionProvider.test.js +151 -0
  112. package/dist/action-providers/farcaster/index.d.ts +2 -0
  113. package/dist/action-providers/farcaster/index.js +18 -0
  114. package/dist/action-providers/farcaster/schemas.d.ts +15 -0
  115. package/dist/action-providers/farcaster/schemas.js +20 -0
  116. package/dist/action-providers/index.d.ts +24 -0
  117. package/dist/action-providers/index.js +40 -0
  118. package/dist/action-providers/jupiter/index.d.ts +1 -0
  119. package/dist/action-providers/jupiter/index.js +17 -0
  120. package/dist/action-providers/jupiter/jupiterActionProvider.d.ts +36 -0
  121. package/dist/action-providers/jupiter/jupiterActionProvider.js +115 -0
  122. package/dist/action-providers/jupiter/jupiterActionProvider.test.d.ts +1 -0
  123. package/dist/action-providers/jupiter/jupiterActionProvider.test.js +146 -0
  124. package/dist/action-providers/jupiter/schemas.d.ts +20 -0
  125. package/dist/action-providers/jupiter/schemas.js +20 -0
  126. package/dist/action-providers/messari/constants.d.ts +17 -0
  127. package/dist/action-providers/messari/constants.js +20 -0
  128. package/dist/action-providers/messari/index.d.ts +5 -0
  129. package/dist/action-providers/messari/index.js +21 -0
  130. package/dist/action-providers/messari/messariActionProvider.d.ts +42 -0
  131. package/dist/action-providers/messari/messariActionProvider.js +128 -0
  132. package/dist/action-providers/messari/messariActionProvider.test.d.ts +1 -0
  133. package/dist/action-providers/messari/messariActionProvider.test.js +152 -0
  134. package/dist/action-providers/messari/schemas.d.ts +11 -0
  135. package/dist/action-providers/messari/schemas.js +16 -0
  136. package/dist/action-providers/messari/types.d.ts +40 -0
  137. package/dist/action-providers/messari/types.js +2 -0
  138. package/dist/action-providers/messari/utils.d.ts +22 -0
  139. package/dist/action-providers/messari/utils.js +65 -0
  140. package/dist/action-providers/moonwell/constants.d.ts +78 -0
  141. package/dist/action-providers/moonwell/constants.js +111 -0
  142. package/dist/action-providers/moonwell/index.d.ts +1 -0
  143. package/dist/action-providers/moonwell/index.js +5 -0
  144. package/dist/action-providers/moonwell/moonwellActionProvider.d.ts +39 -0
  145. package/dist/action-providers/moonwell/moonwellActionProvider.js +249 -0
  146. package/dist/action-providers/moonwell/moonwellActionProvider.test.d.ts +1 -0
  147. package/dist/action-providers/moonwell/moonwellActionProvider.test.js +455 -0
  148. package/dist/action-providers/moonwell/schemas.d.ts +30 -0
  149. package/dist/action-providers/moonwell/schemas.js +39 -0
  150. package/dist/action-providers/morpho/constants.d.ts +16 -0
  151. package/dist/action-providers/morpho/constants.js +27 -0
  152. package/dist/action-providers/morpho/index.d.ts +2 -0
  153. package/dist/action-providers/morpho/index.js +18 -0
  154. package/dist/action-providers/morpho/morphoActionProvider.d.ts +39 -0
  155. package/dist/action-providers/morpho/morphoActionProvider.js +154 -0
  156. package/dist/action-providers/morpho/morphoActionProvider.test.d.ts +1 -0
  157. package/dist/action-providers/morpho/morphoActionProvider.test.js +128 -0
  158. package/dist/action-providers/morpho/schemas.d.ts +36 -0
  159. package/dist/action-providers/morpho/schemas.js +47 -0
  160. package/dist/action-providers/opensea/index.d.ts +1 -0
  161. package/dist/action-providers/opensea/index.js +17 -0
  162. package/dist/action-providers/opensea/openseaActionProvider.d.ts +59 -0
  163. package/dist/action-providers/opensea/openseaActionProvider.js +146 -0
  164. package/dist/action-providers/opensea/openseaActionProvider.test.d.ts +1 -0
  165. package/dist/action-providers/opensea/openseaActionProvider.test.js +201 -0
  166. package/dist/action-providers/opensea/schemas.d.ts +30 -0
  167. package/dist/action-providers/opensea/schemas.js +33 -0
  168. package/dist/action-providers/opensea/utils.d.ts +12 -0
  169. package/dist/action-providers/opensea/utils.js +47 -0
  170. package/dist/action-providers/pyth/index.d.ts +2 -0
  171. package/dist/action-providers/pyth/index.js +18 -0
  172. package/dist/action-providers/pyth/pythActionProvider.d.ts +33 -0
  173. package/dist/action-providers/pyth/pythActionProvider.js +121 -0
  174. package/dist/action-providers/pyth/pythActionProvider.test.d.ts +1 -0
  175. package/dist/action-providers/pyth/pythActionProvider.test.js +113 -0
  176. package/dist/action-providers/pyth/schemas.d.ts +21 -0
  177. package/dist/action-providers/pyth/schemas.js +20 -0
  178. package/dist/action-providers/spl/index.d.ts +1 -0
  179. package/dist/action-providers/spl/index.js +17 -0
  180. package/dist/action-providers/spl/schemas.d.ts +30 -0
  181. package/dist/action-providers/spl/schemas.js +26 -0
  182. package/dist/action-providers/spl/splActionProvider.d.ts +45 -0
  183. package/dist/action-providers/spl/splActionProvider.js +173 -0
  184. package/dist/action-providers/spl/splActionProvider.test.d.ts +1 -0
  185. package/dist/action-providers/spl/splActionProvider.test.js +300 -0
  186. package/dist/action-providers/twitter/index.d.ts +2 -0
  187. package/dist/action-providers/twitter/index.js +18 -0
  188. package/dist/action-providers/twitter/schemas.d.ts +38 -0
  189. package/dist/action-providers/twitter/schemas.js +44 -0
  190. package/dist/action-providers/twitter/twitterActionProvider.d.ts +82 -0
  191. package/dist/action-providers/twitter/twitterActionProvider.js +204 -0
  192. package/dist/action-providers/twitter/twitterActionProvider.test.d.ts +1 -0
  193. package/dist/action-providers/twitter/twitterActionProvider.test.js +185 -0
  194. package/dist/action-providers/wallet/index.d.ts +1 -0
  195. package/dist/action-providers/wallet/index.js +17 -0
  196. package/dist/action-providers/wallet/schemas.d.ts +19 -0
  197. package/dist/action-providers/wallet/schemas.js +19 -0
  198. package/dist/action-providers/wallet/walletActionProvider.d.ts +44 -0
  199. package/dist/action-providers/wallet/walletActionProvider.js +140 -0
  200. package/dist/action-providers/wallet/walletActionProvider.test.d.ts +1 -0
  201. package/dist/action-providers/wallet/walletActionProvider.test.js +194 -0
  202. package/dist/action-providers/weth/constants.d.ts +19 -0
  203. package/dist/action-providers/weth/constants.js +29 -0
  204. package/dist/action-providers/weth/index.d.ts +1 -0
  205. package/dist/action-providers/weth/index.js +17 -0
  206. package/dist/action-providers/weth/schemas.d.ts +8 -0
  207. package/dist/action-providers/weth/schemas.js +10 -0
  208. package/dist/action-providers/weth/wethActionProvider.d.ts +30 -0
  209. package/dist/action-providers/weth/wethActionProvider.js +89 -0
  210. package/dist/action-providers/weth/wethActionProvider.test.d.ts +1 -0
  211. package/dist/action-providers/weth/wethActionProvider.test.js +92 -0
  212. package/dist/action-providers/wow/constants.d.ts +15 -0
  213. package/dist/action-providers/wow/constants.js +844 -0
  214. package/dist/action-providers/wow/index.d.ts +2 -0
  215. package/dist/action-providers/wow/index.js +18 -0
  216. package/dist/action-providers/wow/schemas.d.ts +43 -0
  217. package/dist/action-providers/wow/schemas.js +47 -0
  218. package/dist/action-providers/wow/uniswap/constants.d.ts +3 -0
  219. package/dist/action-providers/wow/uniswap/constants.js +100 -0
  220. package/dist/action-providers/wow/uniswap/utils.d.ts +82 -0
  221. package/dist/action-providers/wow/uniswap/utils.js +226 -0
  222. package/dist/action-providers/wow/utils.d.ts +27 -0
  223. package/dist/action-providers/wow/utils.js +63 -0
  224. package/dist/action-providers/wow/wowActionProvider.d.ts +46 -0
  225. package/dist/action-providers/wow/wowActionProvider.js +223 -0
  226. package/dist/action-providers/wow/wowActionProvider.test.d.ts +1 -0
  227. package/dist/action-providers/wow/wowActionProvider.test.js +291 -0
  228. package/dist/agentkit.d.ts +44 -0
  229. package/dist/agentkit.js +68 -0
  230. package/dist/analytics/index.d.ts +1 -0
  231. package/dist/analytics/index.js +17 -0
  232. package/dist/analytics/sendAnalyticsEvent.d.ts +31 -0
  233. package/dist/analytics/sendAnalyticsEvent.js +52 -0
  234. package/dist/index.d.ts +4 -0
  235. package/dist/index.js +20 -0
  236. package/dist/network/index.d.ts +3 -0
  237. package/dist/network/index.js +19 -0
  238. package/dist/network/network.d.ts +20 -0
  239. package/dist/network/network.js +86 -0
  240. package/dist/network/svm.d.ts +15 -0
  241. package/dist/network/svm.js +38 -0
  242. package/dist/network/types.d.ts +17 -0
  243. package/dist/network/types.js +2 -0
  244. package/dist/utils.d.ts +22 -0
  245. package/dist/utils.js +57 -0
  246. package/dist/utils.test.d.ts +1 -0
  247. package/dist/utils.test.js +50 -0
  248. package/dist/wallet-providers/cdpWalletProvider.d.ts +246 -0
  249. package/dist/wallet-providers/cdpWalletProvider.js +421 -0
  250. package/dist/wallet-providers/cdpWalletProvider.test.d.ts +1 -0
  251. package/dist/wallet-providers/cdpWalletProvider.test.js +701 -0
  252. package/dist/wallet-providers/evmWalletProvider.d.ts +51 -0
  253. package/dist/wallet-providers/evmWalletProvider.js +14 -0
  254. package/dist/wallet-providers/evmWalletProvider.test.d.ts +1 -0
  255. package/dist/wallet-providers/evmWalletProvider.test.js +56 -0
  256. package/dist/wallet-providers/index.d.ts +10 -0
  257. package/dist/wallet-providers/index.js +26 -0
  258. package/dist/wallet-providers/privyEvmWalletProvider.d.ts +55 -0
  259. package/dist/wallet-providers/privyEvmWalletProvider.js +140 -0
  260. package/dist/wallet-providers/privyEvmWalletProvider.test.d.ts +1 -0
  261. package/dist/wallet-providers/privyEvmWalletProvider.test.js +331 -0
  262. package/dist/wallet-providers/privyShared.d.ts +40 -0
  263. package/dist/wallet-providers/privyShared.js +49 -0
  264. package/dist/wallet-providers/privySvmWalletProvider.d.ts +128 -0
  265. package/dist/wallet-providers/privySvmWalletProvider.js +212 -0
  266. package/dist/wallet-providers/privySvmWalletProvider.test.d.ts +1 -0
  267. package/dist/wallet-providers/privySvmWalletProvider.test.js +310 -0
  268. package/dist/wallet-providers/privyWalletProvider.d.ts +35 -0
  269. package/dist/wallet-providers/privyWalletProvider.js +39 -0
  270. package/dist/wallet-providers/privyWalletProvider.test.d.ts +1 -0
  271. package/dist/wallet-providers/privyWalletProvider.test.js +124 -0
  272. package/dist/wallet-providers/smartWalletProvider.d.ts +177 -0
  273. package/dist/wallet-providers/smartWalletProvider.js +303 -0
  274. package/dist/wallet-providers/smartWalletProvider.test.d.ts +1 -0
  275. package/dist/wallet-providers/smartWalletProvider.test.js +388 -0
  276. package/dist/wallet-providers/solanaKeypairWalletProvider.d.ts +143 -0
  277. package/dist/wallet-providers/solanaKeypairWalletProvider.js +280 -0
  278. package/dist/wallet-providers/solanaKeypairWalletProvider.test.d.ts +1 -0
  279. package/dist/wallet-providers/solanaKeypairWalletProvider.test.js +218 -0
  280. package/dist/wallet-providers/svmWalletProvider.d.ts +56 -0
  281. package/dist/wallet-providers/svmWalletProvider.js +13 -0
  282. package/dist/wallet-providers/svmWalletProvider.test.d.ts +1 -0
  283. package/dist/wallet-providers/svmWalletProvider.test.js +55 -0
  284. package/dist/wallet-providers/viemWalletProvider.d.ts +103 -0
  285. package/dist/wallet-providers/viemWalletProvider.js +206 -0
  286. package/dist/wallet-providers/viemWalletProvider.test.d.ts +1 -0
  287. package/dist/wallet-providers/viemWalletProvider.test.js +338 -0
  288. package/dist/wallet-providers/walletProvider.d.ts +48 -0
  289. package/dist/wallet-providers/walletProvider.js +41 -0
  290. package/dist/wallet-providers/walletProvider.test.d.ts +1 -0
  291. package/dist/wallet-providers/walletProvider.test.js +103 -0
  292. package/package.json +83 -0
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./splActionProvider"), exports);
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Schema for transferring SPL tokens to another address.
4
+ */
5
+ export declare const TransferTokenSchema: z.ZodObject<{
6
+ recipient: z.ZodString;
7
+ mintAddress: z.ZodString;
8
+ amount: z.ZodNumber;
9
+ }, "strip", z.ZodTypeAny, {
10
+ amount: number;
11
+ recipient: string;
12
+ mintAddress: string;
13
+ }, {
14
+ amount: number;
15
+ recipient: string;
16
+ mintAddress: string;
17
+ }>;
18
+ /**
19
+ * Schema for getting SPL token balance.
20
+ */
21
+ export declare const GetBalanceSchema: z.ZodObject<{
22
+ mintAddress: z.ZodString;
23
+ address: z.ZodOptional<z.ZodString>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ mintAddress: string;
26
+ address?: string | undefined;
27
+ }, {
28
+ mintAddress: string;
29
+ address?: string | undefined;
30
+ }>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetBalanceSchema = exports.TransferTokenSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ /**
6
+ * Schema for transferring SPL tokens to another address.
7
+ */
8
+ exports.TransferTokenSchema = zod_1.z
9
+ .object({
10
+ recipient: zod_1.z.string().describe("The recipient's Solana address"),
11
+ mintAddress: zod_1.z.string().describe("The SPL token's mint address"),
12
+ amount: zod_1.z.number().positive().describe("Amount of tokens to transfer"),
13
+ })
14
+ .describe("Transfer SPL tokens to another Solana address");
15
+ /**
16
+ * Schema for getting SPL token balance.
17
+ */
18
+ exports.GetBalanceSchema = zod_1.z
19
+ .object({
20
+ mintAddress: zod_1.z.string().describe("The SPL token's mint address"),
21
+ address: zod_1.z
22
+ .string()
23
+ .optional()
24
+ .describe("Optional address to check balance for. If not provided, uses the wallet's address"),
25
+ })
26
+ .describe("Get SPL token balance for an address");
@@ -0,0 +1,45 @@
1
+ import { ActionProvider } from "../actionProvider";
2
+ import { Network } from "../../network";
3
+ import { SvmWalletProvider } from "../../wallet-providers/svmWalletProvider";
4
+ import { z } from "zod";
5
+ import { TransferTokenSchema, GetBalanceSchema } from "./schemas";
6
+ /**
7
+ * SplActionProvider serves as a provider for SPL token actions.
8
+ * It provides SPL token transfer functionality.
9
+ */
10
+ export declare class SplActionProvider extends ActionProvider<SvmWalletProvider> {
11
+ /**
12
+ * Creates a new SplActionProvider instance.
13
+ */
14
+ constructor();
15
+ /**
16
+ * Get the balance of SPL tokens for an address.
17
+ *
18
+ * @param walletProvider - The wallet provider to use
19
+ * @param args - Parameters including mint address and optional target address
20
+ * @returns A message indicating the token balance
21
+ */
22
+ getBalance(walletProvider: SvmWalletProvider, args: z.infer<typeof GetBalanceSchema>): Promise<string>;
23
+ /**
24
+ * Transfer SPL tokens to another address.
25
+ *
26
+ * @param walletProvider - The wallet provider to use for the transfer
27
+ * @param args - Transfer parameters including recipient address, mint address, and amount
28
+ * @returns A message indicating success or failure with transaction details
29
+ */
30
+ transfer(walletProvider: SvmWalletProvider, args: z.infer<typeof TransferTokenSchema>): Promise<string>;
31
+ /**
32
+ * Checks if the action provider supports the given network.
33
+ * Only supports Solana networks.
34
+ *
35
+ * @param network - The network to check support for
36
+ * @returns True if the network is a Solana network
37
+ */
38
+ supportsNetwork(network: Network): boolean;
39
+ }
40
+ /**
41
+ * Factory function to create a new SplActionProvider instance.
42
+ *
43
+ * @returns A new SplActionProvider instance
44
+ */
45
+ export declare const splActionProvider: () => SplActionProvider;
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.splActionProvider = exports.SplActionProvider = void 0;
13
+ const actionProvider_1 = require("../actionProvider");
14
+ const svmWalletProvider_1 = require("../../wallet-providers/svmWalletProvider");
15
+ const zod_1 = require("zod");
16
+ const actionDecorator_1 = require("../actionDecorator");
17
+ const schemas_1 = require("./schemas");
18
+ const web3_js_1 = require("@solana/web3.js");
19
+ /**
20
+ * SplActionProvider serves as a provider for SPL token actions.
21
+ * It provides SPL token transfer functionality.
22
+ */
23
+ class SplActionProvider extends actionProvider_1.ActionProvider {
24
+ /**
25
+ * Creates a new SplActionProvider instance.
26
+ */
27
+ constructor() {
28
+ super("spl", []);
29
+ }
30
+ /**
31
+ * Get the balance of SPL tokens for an address.
32
+ *
33
+ * @param walletProvider - The wallet provider to use
34
+ * @param args - Parameters including mint address and optional target address
35
+ * @returns A message indicating the token balance
36
+ */
37
+ async getBalance(walletProvider, args) {
38
+ try {
39
+ if (!args.address) {
40
+ args.address = walletProvider.getAddress();
41
+ }
42
+ const connection = walletProvider.getConnection();
43
+ const mintPubkey = new web3_js_1.PublicKey(args.mintAddress);
44
+ const ownerPubkey = new web3_js_1.PublicKey(args.address);
45
+ const { getMint, getAssociatedTokenAddress, getAccount, TokenAccountNotFoundError } = await import("@solana/spl-token");
46
+ let mintInfo;
47
+ try {
48
+ mintInfo = await getMint(connection, mintPubkey);
49
+ }
50
+ catch (error) {
51
+ return `Failed to fetch mint info for mint address ${args.mintAddress}. Error: ${error}`;
52
+ }
53
+ try {
54
+ const ata = await getAssociatedTokenAddress(mintPubkey, ownerPubkey);
55
+ const account = await getAccount(connection, ata);
56
+ const balance = Number(account.amount) / Math.pow(10, mintInfo.decimals);
57
+ return `Balance for ${args.address} is ${balance} tokens`;
58
+ }
59
+ catch (error) {
60
+ if (error instanceof TokenAccountNotFoundError) {
61
+ return `Balance for ${args.address} is 0 tokens`;
62
+ }
63
+ throw error;
64
+ }
65
+ }
66
+ catch (error) {
67
+ return `Error getting SPL token balance: ${error}`;
68
+ }
69
+ }
70
+ /**
71
+ * Transfer SPL tokens to another address.
72
+ *
73
+ * @param walletProvider - The wallet provider to use for the transfer
74
+ * @param args - Transfer parameters including recipient address, mint address, and amount
75
+ * @returns A message indicating success or failure with transaction details
76
+ */
77
+ async transfer(walletProvider, args) {
78
+ try {
79
+ const connection = walletProvider.getConnection();
80
+ const fromPubkey = walletProvider.getPublicKey();
81
+ const toPubkey = new web3_js_1.PublicKey(args.recipient);
82
+ const mintPubkey = new web3_js_1.PublicKey(args.mintAddress);
83
+ const { getMint, getAssociatedTokenAddress, getAccount, createAssociatedTokenAccountInstruction, createTransferCheckedInstruction, } = await import("@solana/spl-token");
84
+ let mintInfo;
85
+ try {
86
+ mintInfo = await getMint(connection, mintPubkey);
87
+ }
88
+ catch (error) {
89
+ return `Failed to fetch mint info for mint address ${args.mintAddress}. Error: ${error}`;
90
+ }
91
+ const adjustedAmount = args.amount * Math.pow(10, mintInfo.decimals);
92
+ const sourceAta = await getAssociatedTokenAddress(mintPubkey, fromPubkey);
93
+ const destinationAta = await getAssociatedTokenAddress(mintPubkey, toPubkey);
94
+ const instructions = [];
95
+ const sourceAccount = await getAccount(connection, sourceAta);
96
+ if (sourceAccount.amount < BigInt(adjustedAmount)) {
97
+ throw new Error(`Insufficient token balance. Have ${sourceAccount.amount}, need ${adjustedAmount}`);
98
+ }
99
+ try {
100
+ await getAccount(connection, destinationAta);
101
+ }
102
+ catch {
103
+ instructions.push(createAssociatedTokenAccountInstruction(fromPubkey, destinationAta, toPubkey, mintPubkey));
104
+ }
105
+ instructions.push(createTransferCheckedInstruction(sourceAta, mintPubkey, destinationAta, fromPubkey, adjustedAmount, mintInfo.decimals));
106
+ const tx = new web3_js_1.VersionedTransaction(web3_js_1.MessageV0.compile({
107
+ payerKey: fromPubkey,
108
+ instructions: instructions,
109
+ recentBlockhash: (await connection.getLatestBlockhash()).blockhash,
110
+ }));
111
+ const signature = await walletProvider.signAndSendTransaction(tx);
112
+ await walletProvider.waitForSignatureResult(signature);
113
+ return [
114
+ `Successfully transferred ${args.amount} tokens to ${args.recipient}`,
115
+ `Token mint: ${args.mintAddress}`,
116
+ `Signature: ${signature}`,
117
+ ].join("\n");
118
+ }
119
+ catch (error) {
120
+ return `Error transferring SPL tokens: ${error}`;
121
+ }
122
+ }
123
+ /**
124
+ * Checks if the action provider supports the given network.
125
+ * Only supports Solana networks.
126
+ *
127
+ * @param network - The network to check support for
128
+ * @returns True if the network is a Solana network
129
+ */
130
+ supportsNetwork(network) {
131
+ return network.protocolFamily === "svm";
132
+ }
133
+ }
134
+ exports.SplActionProvider = SplActionProvider;
135
+ __decorate([
136
+ (0, actionDecorator_1.CreateAction)({
137
+ name: "get_balance",
138
+ description: `
139
+ This tool will get the balance of SPL tokens for an address.
140
+ - Mint address must be a valid SPL token mint
141
+ - If no address is provided, uses the connected wallet's address
142
+ - Returns the token balance in token units (not raw)
143
+ `,
144
+ schema: schemas_1.GetBalanceSchema,
145
+ }),
146
+ __metadata("design:type", Function),
147
+ __metadata("design:paramtypes", [svmWalletProvider_1.SvmWalletProvider, void 0]),
148
+ __metadata("design:returntype", Promise)
149
+ ], SplActionProvider.prototype, "getBalance", null);
150
+ __decorate([
151
+ (0, actionDecorator_1.CreateAction)({
152
+ name: "transfer",
153
+ description: `
154
+ This tool will transfer SPL tokens to another address.
155
+ - Amount should be specified in token units (not raw)
156
+ - Recipient must be a valid Solana address
157
+ - Mint address must be a valid SPL token mint
158
+ - Ensures sufficient token balance before transfer
159
+ - Returns transaction details
160
+ `,
161
+ schema: schemas_1.TransferTokenSchema,
162
+ }),
163
+ __metadata("design:type", Function),
164
+ __metadata("design:paramtypes", [svmWalletProvider_1.SvmWalletProvider, void 0]),
165
+ __metadata("design:returntype", Promise)
166
+ ], SplActionProvider.prototype, "transfer", null);
167
+ /**
168
+ * Factory function to create a new SplActionProvider instance.
169
+ *
170
+ * @returns A new SplActionProvider instance
171
+ */
172
+ const splActionProvider = () => new SplActionProvider();
173
+ exports.splActionProvider = splActionProvider;
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const web3_js_1 = require("@solana/web3.js");
4
+ const splActionProvider_1 = require("./splActionProvider");
5
+ jest.mock("@solana/web3.js", () => ({
6
+ ...jest.requireActual("@solana/web3.js"),
7
+ Connection: jest.fn(),
8
+ SendTransactionError: jest.fn().mockReturnValue({
9
+ message: "Failed to send",
10
+ toString: () => "Failed to send",
11
+ }),
12
+ VersionedTransaction: jest.fn().mockReturnValue({
13
+ sign: jest.fn(),
14
+ }),
15
+ MessageV0: {
16
+ compile: jest.fn().mockReturnValue({}),
17
+ },
18
+ }));
19
+ jest.mock("@solana/spl-token", () => {
20
+ /**
21
+ * Custom error class for token account not found scenarios.
22
+ * Used to simulate cases where a token account doesn't exist.
23
+ */
24
+ class TokenAccountNotFoundError extends Error {
25
+ /**
26
+ * Creates a new TokenAccountNotFoundError instance.
27
+ * Sets the error message and name to identify token account not found scenarios.
28
+ */
29
+ constructor() {
30
+ super("Token account not found");
31
+ this.name = "TokenAccountNotFoundError";
32
+ }
33
+ }
34
+ return {
35
+ getAssociatedTokenAddress: jest.fn(),
36
+ getMint: jest.fn(),
37
+ getAccount: jest.fn(),
38
+ createAssociatedTokenAccountInstruction: jest.fn(),
39
+ createTransferCheckedInstruction: jest.fn(),
40
+ TokenAccountNotFoundError,
41
+ };
42
+ });
43
+ jest.mock("../../wallet-providers/svmWalletProvider");
44
+ describe("SplActionProvider", () => {
45
+ let actionProvider;
46
+ let mockWallet;
47
+ let mockConnection;
48
+ let mockGetAssociatedTokenAddress;
49
+ let mockGetMint;
50
+ let mockGetAccount;
51
+ /**
52
+ * Set up test environment before each test.
53
+ * Initializes mocks and creates fresh instances of required objects.
54
+ */
55
+ beforeEach(() => {
56
+ jest.clearAllMocks();
57
+ const mocked = jest.requireMock("@solana/spl-token");
58
+ mockGetAssociatedTokenAddress = mocked.getAssociatedTokenAddress;
59
+ mockGetMint = mocked.getMint;
60
+ mockGetAccount = mocked.getAccount;
61
+ mockGetMint.mockResolvedValue({ decimals: 6 });
62
+ mockGetAccount.mockRejectedValue(new Error("getAccount mock not implemented for this test"));
63
+ actionProvider = new splActionProvider_1.SplActionProvider();
64
+ mockConnection = {
65
+ getLatestBlockhash: jest.fn().mockResolvedValue({ blockhash: "mockedBlockhash" }),
66
+ };
67
+ const MOCK_SIGNATURE = "mock-signature";
68
+ const mockSignatureReceipt = {
69
+ context: { slot: 1234 },
70
+ value: { err: null },
71
+ };
72
+ mockWallet = {
73
+ getConnection: jest.fn().mockReturnValue(mockConnection),
74
+ getPublicKey: jest.fn().mockReturnValue(new web3_js_1.PublicKey("11111111111111111111111111111111")),
75
+ signAndSendTransaction: jest.fn().mockResolvedValue(MOCK_SIGNATURE),
76
+ waitForSignatureResult: jest.fn().mockResolvedValue(mockSignatureReceipt),
77
+ getAddress: jest.fn().mockReturnValue("11111111111111111111111111111111"),
78
+ getNetwork: jest.fn().mockReturnValue({ protocolFamily: "svm", networkId: "mainnet" }),
79
+ getName: jest.fn().mockReturnValue("mock-wallet"),
80
+ getBalance: jest.fn().mockResolvedValue(BigInt(1000000000)),
81
+ nativeTransfer: jest.fn(),
82
+ };
83
+ });
84
+ describe("constructor", () => {
85
+ /**
86
+ * Test that the SPL action provider is created with the correct name.
87
+ */
88
+ it("should create a provider with correct name", () => {
89
+ expect(actionProvider["name"]).toBe("spl");
90
+ });
91
+ });
92
+ describe("supportsNetwork", () => {
93
+ /**
94
+ * Test that the provider correctly identifies Solana networks as supported.
95
+ */
96
+ it("should return true for Solana networks", () => {
97
+ const network = {
98
+ protocolFamily: "svm",
99
+ networkId: "solana-mainnet",
100
+ };
101
+ expect(actionProvider.supportsNetwork(network)).toBe(true);
102
+ });
103
+ /**
104
+ * Test that the provider correctly identifies non-Solana networks as unsupported.
105
+ */
106
+ it("should return false for non-Solana networks", () => {
107
+ const network = {
108
+ protocolFamily: "evm",
109
+ networkId: "ethereum-mainnet",
110
+ };
111
+ expect(actionProvider.supportsNetwork(network)).toBe(false);
112
+ });
113
+ });
114
+ describe("transfer", () => {
115
+ const MINT_ADDRESS = "So11111111111111111111111111111111111111112";
116
+ const RECIPIENT_ADDRESS = "DjXsn34uz8yCBQ8bevLrEPYYC1RvhHvjzuVF8opNc4K2";
117
+ const SENDER_ADDRESS = "11111111111111111111111111111111";
118
+ const MOCK_SIGNATURE = "mock-signature";
119
+ const transferArgs = {
120
+ recipient: RECIPIENT_ADDRESS,
121
+ mintAddress: MINT_ADDRESS,
122
+ amount: 100,
123
+ };
124
+ const mockTokenAccount = {
125
+ amount: BigInt(1000000000),
126
+ address: new web3_js_1.PublicKey(MINT_ADDRESS),
127
+ mint: new web3_js_1.PublicKey(MINT_ADDRESS),
128
+ owner: new web3_js_1.PublicKey(RECIPIENT_ADDRESS),
129
+ delegate: null,
130
+ delegatedAmount: BigInt(0),
131
+ closeAuthority: null,
132
+ isFrozen: false,
133
+ isNative: false,
134
+ rentExemptReserve: null,
135
+ isInitialized: true,
136
+ tlvData: new Map(),
137
+ };
138
+ const mockSignatureReceipt = {
139
+ context: { slot: 1234 },
140
+ value: { err: null },
141
+ };
142
+ beforeEach(() => {
143
+ mockWallet.getPublicKey.mockReturnValue(new web3_js_1.PublicKey(SENDER_ADDRESS));
144
+ mockWallet.getAddress.mockReturnValue(SENDER_ADDRESS);
145
+ mockWallet.signAndSendTransaction.mockResolvedValue(MOCK_SIGNATURE);
146
+ mockWallet.waitForSignatureResult.mockResolvedValue(mockSignatureReceipt);
147
+ });
148
+ /**
149
+ * Test successful SPL token transfer with all required steps:
150
+ * - Account validation
151
+ * - Instruction creation
152
+ * - Signing
153
+ * - Sending
154
+ * - Receipt confirmation
155
+ */
156
+ it("should successfully transfer SPL tokens", async () => {
157
+ mockGetAccount.mockResolvedValue(mockTokenAccount);
158
+ const result = await actionProvider.transfer(mockWallet, transferArgs);
159
+ expect(mockGetAssociatedTokenAddress).toHaveBeenNthCalledWith(1, new web3_js_1.PublicKey(transferArgs.mintAddress), new web3_js_1.PublicKey(SENDER_ADDRESS));
160
+ expect(mockGetAssociatedTokenAddress).toHaveBeenNthCalledWith(2, new web3_js_1.PublicKey(transferArgs.mintAddress), new web3_js_1.PublicKey(transferArgs.recipient));
161
+ expect(mockGetMint).toHaveBeenCalledWith(mockConnection, new web3_js_1.PublicKey(transferArgs.mintAddress));
162
+ expect(mockGetAccount).toHaveBeenCalled();
163
+ expect(mockWallet.signAndSendTransaction).toHaveBeenCalled();
164
+ expect(mockWallet.waitForSignatureResult).toHaveBeenCalledWith(MOCK_SIGNATURE);
165
+ expect(result).toContain(`Successfully transferred ${transferArgs.amount} tokens`);
166
+ expect(result).toContain(`to ${transferArgs.recipient}`);
167
+ expect(result).toContain(`Token mint: ${transferArgs.mintAddress}`);
168
+ expect(result).toContain(`Signature: ${MOCK_SIGNATURE}`);
169
+ });
170
+ /**
171
+ * Test handling of insufficient balance.
172
+ * Verifies that the provider properly checks token balances and prevents transfers when funds are insufficient.
173
+ */
174
+ it("should handle insufficient balance", async () => {
175
+ mockGetAccount.mockResolvedValue({
176
+ ...mockTokenAccount,
177
+ amount: BigInt(10000000),
178
+ });
179
+ const result = await actionProvider.transfer(mockWallet, transferArgs);
180
+ expect(result).toBe("Error transferring SPL tokens: Error: Insufficient token balance. Have 10000000, need 100000000");
181
+ });
182
+ /**
183
+ * Test handling of Solana-specific send errors.
184
+ * Verifies that the provider properly handles and reports SendTransactionError instances.
185
+ */
186
+ it("should handle SendTransactionError", async () => {
187
+ mockGetAccount.mockResolvedValue(mockTokenAccount);
188
+ const error = new web3_js_1.SendTransactionError({
189
+ logs: [],
190
+ action: "send",
191
+ signature: "mock-signature",
192
+ transactionMessage: "Failed to send",
193
+ });
194
+ mockWallet.signAndSendTransaction.mockRejectedValue(error);
195
+ const result = await actionProvider.transfer(mockWallet, transferArgs);
196
+ expect(result).toBe("Error transferring SPL tokens: Failed to send");
197
+ });
198
+ /**
199
+ * Test handling of general errors during transfer.
200
+ * Verifies that the provider properly handles and reports unexpected errors.
201
+ */
202
+ it("should handle regular errors", async () => {
203
+ mockGetAccount.mockResolvedValue(mockTokenAccount);
204
+ const error = new Error("Regular error message");
205
+ mockWallet.signAndSendTransaction.mockRejectedValue(error);
206
+ const result = await actionProvider.transfer(mockWallet, transferArgs);
207
+ expect(result).toBe("Error transferring SPL tokens: Error: Regular error message");
208
+ });
209
+ /**
210
+ * Test that ATA is created by default when missing
211
+ */
212
+ it("should create ATA by default when missing", async () => {
213
+ mockGetAccount
214
+ .mockResolvedValueOnce(mockTokenAccount)
215
+ .mockRejectedValueOnce(new Error("Account does not exist"))
216
+ .mockResolvedValue(mockTokenAccount);
217
+ const result = await actionProvider.transfer(mockWallet, transferArgs);
218
+ const { createAssociatedTokenAccountInstruction } = jest.requireMock("@solana/spl-token");
219
+ expect(createAssociatedTokenAccountInstruction).toHaveBeenCalled();
220
+ expect(result).toContain(`Successfully transferred ${transferArgs.amount} tokens`);
221
+ });
222
+ });
223
+ /**
224
+ * Tests for the getBalance method
225
+ */
226
+ describe("getBalance", () => {
227
+ const MINT_ADDRESS = "So11111111111111111111111111111111111111112";
228
+ const TARGET_ADDRESS = "DjXsn34uz8yCBQ8bevLrEPYYC1RvhHvjzuVF8opNc4K2";
229
+ const SENDER_ADDRESS = "11111111111111111111111111111111";
230
+ const balanceArgs = {
231
+ mintAddress: MINT_ADDRESS,
232
+ };
233
+ const balanceWithAddressArgs = {
234
+ mintAddress: MINT_ADDRESS,
235
+ address: TARGET_ADDRESS,
236
+ };
237
+ const mockTokenAccount = {
238
+ amount: BigInt(1000000000),
239
+ address: new web3_js_1.PublicKey(MINT_ADDRESS),
240
+ mint: new web3_js_1.PublicKey(MINT_ADDRESS),
241
+ owner: new web3_js_1.PublicKey(TARGET_ADDRESS),
242
+ delegate: null,
243
+ delegatedAmount: BigInt(0),
244
+ closeAuthority: null,
245
+ isFrozen: false,
246
+ isNative: false,
247
+ rentExemptReserve: null,
248
+ isInitialized: true,
249
+ tlvData: new Map(),
250
+ };
251
+ beforeEach(() => {
252
+ mockWallet.getPublicKey.mockReturnValue(new web3_js_1.PublicKey(SENDER_ADDRESS));
253
+ mockWallet.getAddress.mockReturnValue(SENDER_ADDRESS);
254
+ });
255
+ /**
256
+ * Tests that getBalance returns the correct balance for the connected wallet
257
+ * when no specific address is provided.
258
+ */
259
+ it("should get balance for connected wallet", async () => {
260
+ mockGetAccount.mockResolvedValue(mockTokenAccount);
261
+ const result = await actionProvider.getBalance(mockWallet, balanceArgs);
262
+ expect(mockGetAssociatedTokenAddress).toHaveBeenCalledWith(new web3_js_1.PublicKey(balanceArgs.mintAddress), new web3_js_1.PublicKey(SENDER_ADDRESS));
263
+ expect(mockGetMint).toHaveBeenCalledWith(mockConnection, new web3_js_1.PublicKey(balanceArgs.mintAddress));
264
+ expect(mockGetAccount).toHaveBeenCalled();
265
+ expect(result).toBe(`Balance for ${SENDER_ADDRESS} is 1000 tokens`);
266
+ });
267
+ /**
268
+ * Tests that getBalance returns the correct balance when a specific
269
+ * address is provided in the arguments.
270
+ */
271
+ it("should get balance for specified address", async () => {
272
+ mockGetAccount.mockResolvedValue(mockTokenAccount);
273
+ const result = await actionProvider.getBalance(mockWallet, balanceWithAddressArgs);
274
+ expect(mockGetAssociatedTokenAddress).toHaveBeenCalledWith(new web3_js_1.PublicKey(balanceWithAddressArgs.mintAddress), new web3_js_1.PublicKey(balanceWithAddressArgs.address));
275
+ expect(mockGetMint).toHaveBeenCalledWith(mockConnection, new web3_js_1.PublicKey(balanceWithAddressArgs.mintAddress));
276
+ expect(mockGetAccount).toHaveBeenCalled();
277
+ expect(result).toBe(`Balance for ${TARGET_ADDRESS} is 1000 tokens`);
278
+ });
279
+ /**
280
+ * Tests that getBalance correctly handles the case where a token account
281
+ * does not exist, returning a zero balance instead of an error.
282
+ */
283
+ it("should handle non-existent token account", async () => {
284
+ const { TokenAccountNotFoundError } = jest.requireMock("@solana/spl-token");
285
+ mockGetAccount.mockRejectedValue(new TokenAccountNotFoundError());
286
+ const result = await actionProvider.getBalance(mockWallet, balanceArgs);
287
+ expect(result).toBe(`Balance for ${SENDER_ADDRESS} is 0 tokens`);
288
+ });
289
+ /**
290
+ * Tests that getBalance properly handles and reports unexpected errors
291
+ * that occur during the balance check.
292
+ */
293
+ it("should handle errors", async () => {
294
+ const error = new Error("Test error");
295
+ mockGetAccount.mockRejectedValue(error);
296
+ const result = await actionProvider.getBalance(mockWallet, balanceArgs);
297
+ expect(result).toBe("Error getting SPL token balance: Error: Test error");
298
+ });
299
+ });
300
+ });
@@ -0,0 +1,2 @@
1
+ export * from "./schemas";
2
+ export * from "./twitterActionProvider";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./schemas"), exports);
18
+ __exportStar(require("./twitterActionProvider"), exports);
@@ -0,0 +1,38 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Input schema for retrieving account details.
4
+ */
5
+ export declare const TwitterAccountDetailsSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
6
+ /**
7
+ * Input schema for retrieving account mentions.
8
+ */
9
+ export declare const TwitterAccountMentionsSchema: z.ZodObject<{
10
+ userId: z.ZodString;
11
+ }, "strip", z.ZodTypeAny, {
12
+ userId: string;
13
+ }, {
14
+ userId: string;
15
+ }>;
16
+ /**
17
+ * Input schema for posting a tweet.
18
+ */
19
+ export declare const TwitterPostTweetSchema: z.ZodObject<{
20
+ tweet: z.ZodString;
21
+ }, "strip", z.ZodTypeAny, {
22
+ tweet: string;
23
+ }, {
24
+ tweet: string;
25
+ }>;
26
+ /**
27
+ * Input schema for posting a tweet reply.
28
+ */
29
+ export declare const TwitterPostTweetReplySchema: z.ZodObject<{
30
+ tweetId: z.ZodString;
31
+ tweetReply: z.ZodString;
32
+ }, "strip", z.ZodTypeAny, {
33
+ tweetId: string;
34
+ tweetReply: string;
35
+ }, {
36
+ tweetId: string;
37
+ tweetReply: string;
38
+ }>;