@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,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const messariActionProvider_1 = require("./messariActionProvider");
4
+ const constants_1 = require("./constants");
5
+ const MOCK_API_KEY = "messari-test-key";
6
+ const MOCK_RESEARCH_RESPONSE = {
7
+ data: {
8
+ messages: [
9
+ {
10
+ role: "assistant",
11
+ content: "Ethereum (ETH) has shown strong performance over the past month with a 15% price increase. The current price is approximately $3,500, up from $3,000 at the beginning of the month. Trading volume has also increased by 20% in the same period.",
12
+ },
13
+ ],
14
+ },
15
+ };
16
+ const MOCK_ERROR_RESPONSE = {
17
+ error: "Internal server error, please try again. If the problem persists, please contact support",
18
+ data: null,
19
+ };
20
+ describe("MessariActionProvider", () => {
21
+ let provider;
22
+ beforeEach(() => {
23
+ process.env.MESSARI_API_KEY = MOCK_API_KEY;
24
+ provider = (0, messariActionProvider_1.messariActionProvider)({ apiKey: MOCK_API_KEY });
25
+ jest.restoreAllMocks();
26
+ });
27
+ afterEach(() => {
28
+ jest.clearAllMocks();
29
+ delete process.env.MESSARI_API_KEY;
30
+ });
31
+ describe("constructor", () => {
32
+ it("should initialize with API key from constructor", () => {
33
+ const customProvider = (0, messariActionProvider_1.messariActionProvider)({ apiKey: "custom-key" });
34
+ expect(customProvider["apiKey"]).toBe("custom-key");
35
+ });
36
+ it("should initialize with API key from environment variable", () => {
37
+ process.env.MESSARI_API_KEY = "env-key";
38
+ const envProvider = (0, messariActionProvider_1.messariActionProvider)();
39
+ expect(envProvider["apiKey"]).toBe("env-key");
40
+ });
41
+ it("should throw error if API key is not provided", () => {
42
+ delete process.env.MESSARI_API_KEY;
43
+ expect(() => (0, messariActionProvider_1.messariActionProvider)()).toThrow(constants_1.API_KEY_MISSING_ERROR);
44
+ });
45
+ });
46
+ describe("researchQuestion", () => {
47
+ it("should successfully fetch research results", async () => {
48
+ const fetchMock = jest.spyOn(global, "fetch").mockResolvedValue({
49
+ ok: true,
50
+ json: async () => MOCK_RESEARCH_RESPONSE,
51
+ });
52
+ const question = "What is the current price of Ethereum?";
53
+ const response = await provider.researchQuestion({ question });
54
+ expect(fetchMock).toHaveBeenCalled();
55
+ const [url, options] = fetchMock.mock.calls[0];
56
+ expect(url).toBe("https://api.messari.io/ai/v1/chat/completions");
57
+ expect(options).toEqual(expect.objectContaining({
58
+ method: "POST",
59
+ headers: expect.objectContaining({
60
+ "Content-Type": "application/json",
61
+ "x-messari-api-key": MOCK_API_KEY,
62
+ }),
63
+ body: JSON.stringify({
64
+ messages: [
65
+ {
66
+ role: "user",
67
+ content: question,
68
+ },
69
+ ],
70
+ }),
71
+ }));
72
+ expect(response).toContain("Messari Research Results:");
73
+ expect(response).toContain(MOCK_RESEARCH_RESPONSE.data.messages[0].content);
74
+ });
75
+ it("should handle non-ok response with structured error format", async () => {
76
+ const errorResponseText = JSON.stringify(MOCK_ERROR_RESPONSE);
77
+ jest.spyOn(global, "fetch").mockResolvedValue({
78
+ ok: false,
79
+ status: 500,
80
+ statusText: "Internal Server Error",
81
+ text: async () => errorResponseText,
82
+ });
83
+ const response = await provider.researchQuestion({
84
+ question: "What is the current price of Bitcoin?",
85
+ });
86
+ expect(response).toContain("Messari API Error: Internal server error");
87
+ expect(response).not.toContain("500");
88
+ });
89
+ it("should handle non-ok response with non-JSON error format", async () => {
90
+ const plainTextError = "Rate limit exceeded";
91
+ jest.spyOn(global, "fetch").mockResolvedValue({
92
+ ok: false,
93
+ status: 429,
94
+ statusText: "Too Many Requests",
95
+ text: async () => plainTextError,
96
+ });
97
+ const response = await provider.researchQuestion({
98
+ question: "What is the current price of Bitcoin?",
99
+ });
100
+ expect(response).toContain("Messari API Error:");
101
+ expect(response).toContain("429");
102
+ expect(response).toContain("Too Many Requests");
103
+ expect(response).toContain(plainTextError);
104
+ });
105
+ it("should handle JSON parsing error in successful response", async () => {
106
+ jest.spyOn(global, "fetch").mockResolvedValue({
107
+ ok: true,
108
+ json: async () => {
109
+ throw new Error("Invalid JSON");
110
+ },
111
+ });
112
+ const response = await provider.researchQuestion({
113
+ question: "What is the market cap of Solana?",
114
+ });
115
+ expect(response).toContain("Unexpected error: Failed to parse API response");
116
+ expect(response).toContain("Invalid JSON");
117
+ });
118
+ it("should handle invalid response format", async () => {
119
+ jest.spyOn(global, "fetch").mockResolvedValue({
120
+ ok: true,
121
+ json: async () => ({ data: { messages: [] } }),
122
+ });
123
+ const response = await provider.researchQuestion({
124
+ question: "What is the market cap of Solana?",
125
+ });
126
+ expect(response).toContain("Unexpected error: Received invalid response format from Messari API");
127
+ });
128
+ it("should handle fetch error", async () => {
129
+ const error = new Error("Network error");
130
+ jest.spyOn(global, "fetch").mockRejectedValue(error);
131
+ const response = await provider.researchQuestion({
132
+ question: "What is the market cap of Solana?",
133
+ });
134
+ expect(response).toContain("Unexpected error: Network error");
135
+ });
136
+ it("should handle string error with JSON content", async () => {
137
+ const stringifiedError = JSON.stringify(MOCK_ERROR_RESPONSE);
138
+ jest.spyOn(global, "fetch").mockRejectedValue(stringifiedError);
139
+ const response = await provider.researchQuestion({
140
+ question: "What is the market cap of Solana?",
141
+ });
142
+ expect(response).toContain("Messari API Error: Internal server error");
143
+ });
144
+ });
145
+ describe("supportsNetwork", () => {
146
+ it("should always return true as research is network-agnostic", () => {
147
+ expect(provider.supportsNetwork({ protocolFamily: "evm" })).toBe(true);
148
+ expect(provider.supportsNetwork({ protocolFamily: "solana" })).toBe(true);
149
+ expect(provider.supportsNetwork({ protocolFamily: "unknown" })).toBe(true);
150
+ });
151
+ });
152
+ });
@@ -0,0 +1,11 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Input schema for submitting a research question to Messari AI.
4
+ */
5
+ export declare const MessariResearchQuestionSchema: z.ZodObject<{
6
+ question: z.ZodString;
7
+ }, "strip", z.ZodTypeAny, {
8
+ question: string;
9
+ }, {
10
+ question: string;
11
+ }>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessariResearchQuestionSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ /**
6
+ * Input schema for submitting a research question to Messari AI.
7
+ */
8
+ exports.MessariResearchQuestionSchema = zod_1.z
9
+ .object({
10
+ question: zod_1.z
11
+ .string()
12
+ .min(1, "Research question is required.")
13
+ .describe("The research question about crypto markets, protocols, or tokens"),
14
+ })
15
+ .strip()
16
+ .describe("Input schema for submitting a research question to Messari AI");
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Configuration options for the MessariActionProvider.
3
+ */
4
+ export interface MessariActionProviderConfig {
5
+ /**
6
+ * Messari API Key
7
+ */
8
+ apiKey?: string;
9
+ }
10
+ /**
11
+ * Message format in Messari API responses
12
+ */
13
+ export interface MessariMessage {
14
+ content: string;
15
+ role: string;
16
+ }
17
+ /**
18
+ * Response format from Messari API
19
+ */
20
+ export interface MessariAPIResponse {
21
+ data: {
22
+ messages: MessariMessage[];
23
+ };
24
+ }
25
+ /**
26
+ * Error response format from Messari API
27
+ */
28
+ export interface MessariErrorResponse {
29
+ error?: string;
30
+ data?: null | unknown;
31
+ }
32
+ /**
33
+ * Extended Error interface for Messari API errors
34
+ */
35
+ export interface MessariError extends Error {
36
+ status?: number;
37
+ statusText?: string;
38
+ responseText?: string;
39
+ errorResponse?: MessariErrorResponse;
40
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,22 @@
1
+ import { MessariError } from "./types";
2
+ /**
3
+ * Creates a MessariError from an HTTP response
4
+ *
5
+ * @param response - The fetch Response object
6
+ * @returns A MessariError with response details
7
+ */
8
+ export declare function createMessariError(response: Response): Promise<MessariError>;
9
+ /**
10
+ * Formats error details for API errors
11
+ *
12
+ * @param error - The MessariError to format
13
+ * @returns Formatted error message
14
+ */
15
+ export declare function formatMessariApiError(error: MessariError): string;
16
+ /**
17
+ * Formats generic errors
18
+ *
19
+ * @param error - The error to format
20
+ * @returns Formatted error message
21
+ */
22
+ export declare function formatGenericError(error: unknown): string;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMessariError = createMessariError;
4
+ exports.formatMessariApiError = formatMessariApiError;
5
+ exports.formatGenericError = formatGenericError;
6
+ /**
7
+ * Creates a MessariError from an HTTP response
8
+ *
9
+ * @param response - The fetch Response object
10
+ * @returns A MessariError with response details
11
+ */
12
+ async function createMessariError(response) {
13
+ const error = new Error(`Messari API returned ${response.status} ${response.statusText}`);
14
+ error.status = response.status;
15
+ error.statusText = response.statusText;
16
+ const responseText = await response.text();
17
+ error.responseText = responseText;
18
+ try {
19
+ const errorJson = JSON.parse(responseText);
20
+ error.errorResponse = errorJson;
21
+ }
22
+ catch {
23
+ // If parsing fails, just use the raw text
24
+ }
25
+ return error;
26
+ }
27
+ /**
28
+ * Formats error details for API errors
29
+ *
30
+ * @param error - The MessariError to format
31
+ * @returns Formatted error message
32
+ */
33
+ function formatMessariApiError(error) {
34
+ if (error.errorResponse?.error) {
35
+ return `Messari API Error: ${error.errorResponse.error}`;
36
+ }
37
+ const errorDetails = {
38
+ status: error.status,
39
+ statusText: error.statusText,
40
+ responseText: error.responseText,
41
+ message: error.message,
42
+ };
43
+ return `Messari API Error: ${JSON.stringify(errorDetails, null, 2)}`;
44
+ }
45
+ /**
46
+ * Formats generic errors
47
+ *
48
+ * @param error - The error to format
49
+ * @returns Formatted error message
50
+ */
51
+ function formatGenericError(error) {
52
+ // Check if this might be a JSON string containing an error message
53
+ if (typeof error === "string") {
54
+ try {
55
+ const parsedError = JSON.parse(error);
56
+ if (parsedError.error) {
57
+ return `Messari API Error: ${parsedError.error}`;
58
+ }
59
+ }
60
+ catch {
61
+ // Not valid JSON, continue with normal handling
62
+ }
63
+ }
64
+ return `Unexpected error: ${error instanceof Error ? error.message : String(error)}`;
65
+ }
@@ -0,0 +1,78 @@
1
+ export declare const MOONWELL_BASE_ADDRESSES: {
2
+ "0xEdc817A28E8B93B03976FBd4a3dDBc9f7D176c22": string;
3
+ "0x73b06D8d18De422E269645eaCe15400DE7462417": string;
4
+ "0x628ff693426583D9a7FB391E54366292F509D457": string;
5
+ "0x3bf93770f2d4a794c3d9EBEfBAeBAE2a8f09A5E5": string;
6
+ "0x627Fe393Bc6EdDA28e99AE648fD6fF362514304b": string;
7
+ "0x73902f619CEB9B31FD8EFecf435CbDf89E369Ba6": string;
8
+ "0xb8051464C8c92209C92F3a4CD9C73746C4c3CFb3": string;
9
+ "0xF877ACaFA28c19b96727966690b2f44d35aD5976": string;
10
+ "0xb682c840B5F4FC58B20769E691A6fa1305A501a2": string;
11
+ "0xfC41B49d064Ac646015b459C522820DB9472F4B5": string;
12
+ "0xdC7810B47eAAb250De623F0eE07764afa5F71ED1": string;
13
+ "0xb6419c6C2e60c4025D6D06eE4F913ce89425a357": string;
14
+ "0x9A858ebfF1bEb0D3495BB0e2897c1528eD84A218": string;
15
+ "0x70778cfcFC475c7eA0f24cC625Baf6EaE475D0c9": string;
16
+ };
17
+ export declare const MOONWELL_BASE_SEPOLIA_ADDRESSES: {
18
+ "0x876852425331a113d8E432eFFB3aC5BEf38f033a": string;
19
+ "0x5302EbD8BC32435C823c2e22B04Cd6c45f593e89": string;
20
+ "0x2F39a349A79492a70E152760ce7123A1933eCf28": string;
21
+ };
22
+ export declare const WETH_ROUTER_ADDRESS = "0x70778cfcFC475c7eA0f24cC625Baf6EaE475D0c9";
23
+ export declare const TOKEN_DECIMALS: {
24
+ "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913": number;
25
+ "0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42": number;
26
+ "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A": number;
27
+ "0xEDfa23602D0EC14714057867A78d01e94176BEA0": number;
28
+ "0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b": number;
29
+ "0xA88594D404727625A9437C3f886C7643872296AE": number;
30
+ "0x820C137fa70C8691f0e44Dc420a5e53c168921Dc": number;
31
+ "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb": number;
32
+ "0x4200000000000000000000000000000000000006": number;
33
+ "0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22": number;
34
+ "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452": number;
35
+ "0x940181a94a35a4569e4529a3cdfb74e38fd98631": number;
36
+ "0x0000000000000000000000000000000000000000": number;
37
+ };
38
+ export declare const MTOKENS_UNDERLYING_DECIMALS: {
39
+ MOONWELL_USDC: number;
40
+ MOONWELL_DAI: number;
41
+ MOONWELL_WETH: number;
42
+ MOONWELL_cbETH: number;
43
+ MOONWELL_wstETH: number;
44
+ MOONWELL_AERO: number;
45
+ MOONWELL_weETH: number;
46
+ MOONWELL_cbBTC: number;
47
+ MOONWELL_EURC: number;
48
+ MOONWELL_wrsETH: number;
49
+ MOONWELL_WELL: number;
50
+ MOONWELL_USDS: number;
51
+ MOONWELL_TBTC: number;
52
+ };
53
+ export declare const ETH_ROUTER_ABI: {
54
+ name: string;
55
+ inputs: {
56
+ internalType: string;
57
+ name: string;
58
+ type: string;
59
+ }[];
60
+ outputs: never[];
61
+ stateMutability: string;
62
+ type: string;
63
+ }[];
64
+ export declare const MTOKEN_ABI: {
65
+ type: string;
66
+ name: string;
67
+ inputs: {
68
+ name: string;
69
+ type: string;
70
+ internalType: string;
71
+ }[];
72
+ outputs: {
73
+ name: string;
74
+ type: string;
75
+ internalType: string;
76
+ }[];
77
+ stateMutability: string;
78
+ }[];
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MTOKEN_ABI = exports.ETH_ROUTER_ABI = exports.MTOKENS_UNDERLYING_DECIMALS = exports.TOKEN_DECIMALS = exports.WETH_ROUTER_ADDRESS = exports.MOONWELL_BASE_SEPOLIA_ADDRESSES = exports.MOONWELL_BASE_ADDRESSES = void 0;
4
+ exports.MOONWELL_BASE_ADDRESSES = {
5
+ "0xEdc817A28E8B93B03976FBd4a3dDBc9f7D176c22": "MOONWELL_USDC",
6
+ "0x73b06D8d18De422E269645eaCe15400DE7462417": "MOONWELL_DAI",
7
+ "0x628ff693426583D9a7FB391E54366292F509D457": "MOONWELL_WETH",
8
+ "0x3bf93770f2d4a794c3d9EBEfBAeBAE2a8f09A5E5": "MOONWELL_cbETH",
9
+ "0x627Fe393Bc6EdDA28e99AE648fD6fF362514304b": "MOONWELL_wstETH",
10
+ "0x73902f619CEB9B31FD8EFecf435CbDf89E369Ba6": "MOONWELL_AERO",
11
+ "0xb8051464C8c92209C92F3a4CD9C73746C4c3CFb3": "MOONWELL_weETH",
12
+ "0xF877ACaFA28c19b96727966690b2f44d35aD5976": "MOONWELL_cbBTC",
13
+ "0xb682c840B5F4FC58B20769E691A6fa1305A501a2": "MOONWELL_EURC",
14
+ "0xfC41B49d064Ac646015b459C522820DB9472F4B5": "MOONWELL_wrsETH",
15
+ "0xdC7810B47eAAb250De623F0eE07764afa5F71ED1": "MOONWELL_WELL",
16
+ "0xb6419c6C2e60c4025D6D06eE4F913ce89425a357": "MOONWELL_USDS",
17
+ "0x9A858ebfF1bEb0D3495BB0e2897c1528eD84A218": "MOONWELL_TBTC",
18
+ "0x70778cfcFC475c7eA0f24cC625Baf6EaE475D0c9": "WETH_ROUTER",
19
+ };
20
+ exports.MOONWELL_BASE_SEPOLIA_ADDRESSES = {
21
+ "0x876852425331a113d8E432eFFB3aC5BEf38f033a": "MOONWELL_USDBC",
22
+ "0x5302EbD8BC32435C823c2e22B04Cd6c45f593e89": "MOONWELL_cbETH",
23
+ "0x2F39a349A79492a70E152760ce7123A1933eCf28": "MOONWELL_WETH",
24
+ };
25
+ exports.WETH_ROUTER_ADDRESS = "0x70778cfcFC475c7eA0f24cC625Baf6EaE475D0c9";
26
+ // Token decimals mapping
27
+ exports.TOKEN_DECIMALS = {
28
+ "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913": 6, // USDC
29
+ "0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42": 6, // EURC
30
+ "0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A": 18, // weETH
31
+ "0xEDfa23602D0EC14714057867A78d01e94176BEA0": 18, // wrsETH
32
+ "0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b": 18, // tBTC
33
+ "0xA88594D404727625A9437C3f886C7643872296AE": 18, // WELL
34
+ "0x820C137fa70C8691f0e44Dc420a5e53c168921Dc": 18, // USDS
35
+ "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb": 18, // DAI
36
+ "0x4200000000000000000000000000000000000006": 18, // WETH
37
+ "0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22": 18, // cbETH
38
+ "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452": 18, // wstETH
39
+ "0x940181a94a35a4569e4529a3cdfb74e38fd98631": 18, // AERO
40
+ "0x0000000000000000000000000000000000000000": 18, // ETH (native)
41
+ };
42
+ exports.MTOKENS_UNDERLYING_DECIMALS = {
43
+ MOONWELL_USDC: 6,
44
+ MOONWELL_DAI: 18,
45
+ MOONWELL_WETH: 18,
46
+ MOONWELL_cbETH: 18,
47
+ MOONWELL_wstETH: 18,
48
+ MOONWELL_AERO: 18,
49
+ MOONWELL_weETH: 18,
50
+ MOONWELL_cbBTC: 18,
51
+ MOONWELL_EURC: 6,
52
+ MOONWELL_wrsETH: 18,
53
+ MOONWELL_WELL: 18,
54
+ MOONWELL_USDS: 18,
55
+ MOONWELL_TBTC: 18,
56
+ };
57
+ exports.ETH_ROUTER_ABI = [
58
+ {
59
+ name: "mint",
60
+ inputs: [
61
+ {
62
+ internalType: "address",
63
+ name: "receiver",
64
+ type: "address",
65
+ },
66
+ ],
67
+ outputs: [],
68
+ stateMutability: "payable",
69
+ type: "function",
70
+ },
71
+ ];
72
+ exports.MTOKEN_ABI = [
73
+ {
74
+ type: "function",
75
+ name: "mint",
76
+ inputs: [
77
+ {
78
+ name: "mintAmount",
79
+ type: "uint256",
80
+ internalType: "uint256",
81
+ },
82
+ ],
83
+ outputs: [
84
+ {
85
+ name: "",
86
+ type: "uint256",
87
+ internalType: "uint256",
88
+ },
89
+ ],
90
+ stateMutability: "nonpayable",
91
+ },
92
+ {
93
+ type: "function",
94
+ name: "redeemUnderlying",
95
+ inputs: [
96
+ {
97
+ name: "redeemAmount",
98
+ type: "uint256",
99
+ internalType: "uint256",
100
+ },
101
+ ],
102
+ outputs: [
103
+ {
104
+ name: "",
105
+ type: "uint256",
106
+ internalType: "uint256",
107
+ },
108
+ ],
109
+ stateMutability: "nonpayable",
110
+ },
111
+ ];
@@ -0,0 +1 @@
1
+ export { moonwellActionProvider } from "./moonwellActionProvider";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.moonwellActionProvider = void 0;
4
+ var moonwellActionProvider_1 = require("./moonwellActionProvider");
5
+ Object.defineProperty(exports, "moonwellActionProvider", { enumerable: true, get: function () { return moonwellActionProvider_1.moonwellActionProvider; } });
@@ -0,0 +1,39 @@
1
+ import { z } from "zod";
2
+ import { ActionProvider } from "../actionProvider";
3
+ import { EvmWalletProvider } from "../../wallet-providers";
4
+ import { MintSchema, RedeemSchema } from "./schemas";
5
+ import { Network } from "../../network";
6
+ export declare const SUPPORTED_NETWORKS: string[];
7
+ /**
8
+ * MoonwellActionProvider is an action provider for Moonwell MToken interactions.
9
+ */
10
+ export declare class MoonwellActionProvider extends ActionProvider<EvmWalletProvider> {
11
+ /**
12
+ * Constructor for the MoonwellActionProvider class.
13
+ */
14
+ constructor();
15
+ /**
16
+ * Deposits assets into a Moonwell MToken
17
+ *
18
+ * @param wallet - The wallet instance to execute the transaction
19
+ * @param args - The input arguments for the action
20
+ * @returns A success message with transaction details or an error message
21
+ */
22
+ mint(wallet: EvmWalletProvider, args: z.infer<typeof MintSchema>): Promise<string>;
23
+ /**
24
+ * Redeems assets from a Moonwell MToken
25
+ *
26
+ * @param wallet - The wallet instance to execute the transaction
27
+ * @param args - The input arguments for the action
28
+ * @returns A success message with transaction details or an error message
29
+ */
30
+ redeem(wallet: EvmWalletProvider, args: z.infer<typeof RedeemSchema>): Promise<string>;
31
+ /**
32
+ * Checks if the Moonwell action provider supports the given network.
33
+ *
34
+ * @param network - The network to check.
35
+ * @returns True if the Moonwell action provider supports the network, false otherwise.
36
+ */
37
+ supportsNetwork: (network: Network) => boolean;
38
+ }
39
+ export declare const moonwellActionProvider: () => MoonwellActionProvider;