@andrewkimjoseph/celina-sdk 0.9.8 → 0.9.9

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 (349) hide show
  1. package/build/src/a2a/agent-card.d.ts +37 -0
  2. package/build/src/a2a/agent-card.js +46 -0
  3. package/build/src/a2a/agent-card.js.map +1 -0
  4. package/build/src/a2a/index.d.ts +2 -0
  5. package/build/src/a2a/index.js +3 -0
  6. package/build/src/a2a/index.js.map +1 -0
  7. package/build/src/a2a/skills.d.ts +18 -0
  8. package/build/src/a2a/skills.js +101 -0
  9. package/build/src/a2a/skills.js.map +1 -0
  10. package/build/src/abis/aave-pool.d.ts +37 -0
  11. package/build/src/abis/aave-pool.js +26 -0
  12. package/build/src/abis/aave-pool.js.map +1 -0
  13. package/build/src/abis/accounts.d.ts +13 -0
  14. package/build/src/abis/accounts.js +10 -0
  15. package/build/src/abis/accounts.js.map +1 -0
  16. package/build/src/abis/election.d.ts +124 -0
  17. package/build/src/abis/election.js +88 -0
  18. package/build/src/abis/election.js.map +1 -0
  19. package/build/src/abis/gooddollar-broker.d.ts +77 -0
  20. package/build/src/abis/gooddollar-broker.js +44 -0
  21. package/build/src/abis/gooddollar-broker.js.map +1 -0
  22. package/build/src/abis/gooddollar-identity.d.ts +85 -0
  23. package/build/src/abis/gooddollar-identity.js +52 -0
  24. package/build/src/abis/gooddollar-identity.js.map +1 -0
  25. package/build/src/abis/governance.d.ts +86 -0
  26. package/build/src/abis/governance.js +68 -0
  27. package/build/src/abis/governance.js.map +1 -0
  28. package/build/src/abis/locked-gold.d.ts +10 -0
  29. package/build/src/abis/locked-gold.js +10 -0
  30. package/build/src/abis/locked-gold.js.map +1 -0
  31. package/build/src/abis/nft.d.ts +107 -0
  32. package/build/src/abis/nft.js +75 -0
  33. package/build/src/abis/nft.js.map +1 -0
  34. package/build/src/abis/permit2.d.ts +43 -0
  35. package/build/src/abis/permit2.js +30 -0
  36. package/build/src/abis/permit2.js.map +1 -0
  37. package/build/src/abis/self-registry.d.ts +194 -0
  38. package/build/src/abis/self-registry.js +120 -0
  39. package/build/src/abis/self-registry.js.map +1 -0
  40. package/build/src/abis/ubi-scheme.d.ts +91 -0
  41. package/build/src/abis/ubi-scheme.js +66 -0
  42. package/build/src/abis/ubi-scheme.js.map +1 -0
  43. package/build/src/abis/uniswap-state-view.d.ts +34 -0
  44. package/build/src/abis/uniswap-state-view.js +22 -0
  45. package/build/src/abis/uniswap-state-view.js.map +1 -0
  46. package/build/src/abis/uniswap-v4-quoter.d.ts +86 -0
  47. package/build/src/abis/uniswap-v4-quoter.js +64 -0
  48. package/build/src/abis/uniswap-v4-quoter.js.map +1 -0
  49. package/build/src/abis/universal-router.d.ts +16 -0
  50. package/build/src/abis/universal-router.js +14 -0
  51. package/build/src/abis/universal-router.js.map +1 -0
  52. package/build/src/abis/validators-minimal.d.ts +65 -0
  53. package/build/src/abis/validators-minimal.js +39 -0
  54. package/build/src/abis/validators-minimal.js.map +1 -0
  55. package/build/src/analytics/amplitude.d.ts +11 -0
  56. package/build/src/analytics/amplitude.js +76 -0
  57. package/build/src/analytics/amplitude.js.map +1 -0
  58. package/build/src/analytics/config.d.ts +7 -0
  59. package/build/src/analytics/config.js +28 -0
  60. package/build/src/analytics/config.js.map +1 -0
  61. package/build/src/analytics/consumer-package.d.ts +9 -0
  62. package/build/src/analytics/consumer-package.js +143 -0
  63. package/build/src/analytics/consumer-package.js.map +1 -0
  64. package/build/src/analytics/mcp-tool-events.d.ts +5 -0
  65. package/build/src/analytics/mcp-tool-events.js +53 -0
  66. package/build/src/analytics/mcp-tool-events.js.map +1 -0
  67. package/build/src/analytics/wallet-context.d.ts +11 -0
  68. package/build/src/analytics/wallet-context.js +81 -0
  69. package/build/src/analytics/wallet-context.js.map +1 -0
  70. package/build/src/analytics/wallet-extract.d.ts +9 -0
  71. package/build/src/analytics/wallet-extract.js +21 -0
  72. package/build/src/analytics/wallet-extract.js.map +1 -0
  73. package/build/src/analytics/wrap-service.d.ts +5 -0
  74. package/build/src/analytics/wrap-service.js +38 -0
  75. package/build/src/analytics/wrap-service.js.map +1 -0
  76. package/build/src/clients/celo-client.d.ts +17 -0
  77. package/build/src/clients/celo-client.js +28 -0
  78. package/build/src/clients/celo-client.js.map +1 -0
  79. package/build/src/clients/ens-client.d.ts +17 -0
  80. package/build/src/clients/ens-client.js +30 -0
  81. package/build/src/clients/ens-client.js.map +1 -0
  82. package/build/src/clients/mento-sdk.d.ts +2 -0
  83. package/build/src/clients/mento-sdk.js +9 -0
  84. package/build/src/clients/mento-sdk.js.map +1 -0
  85. package/build/src/clients/self-api.d.ts +82 -0
  86. package/build/src/clients/self-api.js +242 -0
  87. package/build/src/clients/self-api.js.map +1 -0
  88. package/build/src/clients/uniswap-sdk.d.ts +4 -0
  89. package/build/src/clients/uniswap-sdk.js +13 -0
  90. package/build/src/clients/uniswap-sdk.js.map +1 -0
  91. package/build/src/config/aave.d.ts +17 -0
  92. package/build/src/config/aave.js +77 -0
  93. package/build/src/config/aave.js.map +1 -0
  94. package/build/src/config/celina-tag.d.ts +4 -0
  95. package/build/src/config/celina-tag.js +13 -0
  96. package/build/src/config/celina-tag.js.map +1 -0
  97. package/build/src/config/celo-core-contracts.d.ts +8 -0
  98. package/build/src/config/celo-core-contracts.js +9 -0
  99. package/build/src/config/celo-core-contracts.js.map +1 -0
  100. package/build/src/config/chains.d.ts +937 -0
  101. package/build/src/config/chains.js +319 -0
  102. package/build/src/config/chains.js.map +1 -0
  103. package/build/src/config/gooddollar.d.ts +16 -0
  104. package/build/src/config/gooddollar.js +24 -0
  105. package/build/src/config/gooddollar.js.map +1 -0
  106. package/build/src/config/sdk-config.d.ts +33 -0
  107. package/build/src/config/sdk-config.js +31 -0
  108. package/build/src/config/sdk-config.js.map +1 -0
  109. package/build/src/config/self.d.ts +22 -0
  110. package/build/src/config/self.js +27 -0
  111. package/build/src/config/self.js.map +1 -0
  112. package/build/src/config/uniswap.d.ts +42 -0
  113. package/build/src/config/uniswap.js +76 -0
  114. package/build/src/config/uniswap.js.map +1 -0
  115. package/build/src/index.d.ts +90 -0
  116. package/build/src/index.js +65 -0
  117. package/build/src/index.js.map +1 -0
  118. package/build/src/oasf/index.d.ts +2 -0
  119. package/build/src/oasf/index.js +3 -0
  120. package/build/src/oasf/index.js.map +1 -0
  121. package/build/src/oasf/record.d.ts +39 -0
  122. package/build/src/oasf/record.js +35 -0
  123. package/build/src/oasf/record.js.map +1 -0
  124. package/build/src/oasf/taxonomy.d.ts +19 -0
  125. package/build/src/oasf/taxonomy.js +46 -0
  126. package/build/src/oasf/taxonomy.js.map +1 -0
  127. package/build/src/services/aave.service.d.ts +58 -0
  128. package/build/src/services/aave.service.js +210 -0
  129. package/build/src/services/aave.service.js.map +1 -0
  130. package/build/src/services/account.service.d.ts +22 -0
  131. package/build/src/services/account.service.js +29 -0
  132. package/build/src/services/account.service.js.map +1 -0
  133. package/build/src/services/blockchain.service.d.ts +107 -0
  134. package/build/src/services/blockchain.service.js +151 -0
  135. package/build/src/services/blockchain.service.js.map +1 -0
  136. package/build/src/services/contract.service.d.ts +78 -0
  137. package/build/src/services/contract.service.js +117 -0
  138. package/build/src/services/contract.service.js.map +1 -0
  139. package/build/src/services/ens.service.d.ts +44 -0
  140. package/build/src/services/ens.service.js +92 -0
  141. package/build/src/services/ens.service.js.map +1 -0
  142. package/build/src/services/gooddollar.service.d.ts +183 -0
  143. package/build/src/services/gooddollar.service.js +675 -0
  144. package/build/src/services/gooddollar.service.js.map +1 -0
  145. package/build/src/services/governance.service.d.ts +96 -0
  146. package/build/src/services/governance.service.js +255 -0
  147. package/build/src/services/governance.service.js.map +1 -0
  148. package/build/src/services/mento-fx.service.d.ts +80 -0
  149. package/build/src/services/mento-fx.service.js +319 -0
  150. package/build/src/services/mento-fx.service.js.map +1 -0
  151. package/build/src/services/nft.service.d.ts +58 -0
  152. package/build/src/services/nft.service.js +222 -0
  153. package/build/src/services/nft.service.js.map +1 -0
  154. package/build/src/services/self-session-store.d.ts +19 -0
  155. package/build/src/services/self-session-store.js +28 -0
  156. package/build/src/services/self-session-store.js.map +1 -0
  157. package/build/src/services/self.service.d.ts +241 -0
  158. package/build/src/services/self.service.js +699 -0
  159. package/build/src/services/self.service.js.map +1 -0
  160. package/build/src/services/staking.service.d.ts +140 -0
  161. package/build/src/services/staking.service.js +444 -0
  162. package/build/src/services/staking.service.js.map +1 -0
  163. package/build/src/services/token.service.d.ts +110 -0
  164. package/build/src/services/token.service.js +189 -0
  165. package/build/src/services/token.service.js.map +1 -0
  166. package/build/src/services/transaction.service.d.ts +68 -0
  167. package/build/src/services/transaction.service.js +198 -0
  168. package/build/src/services/transaction.service.js.map +1 -0
  169. package/build/src/services/uniswap-path-router.d.ts +40 -0
  170. package/build/src/services/uniswap-path-router.js +168 -0
  171. package/build/src/services/uniswap-path-router.js.map +1 -0
  172. package/build/src/services/uniswap-pool-discovery.d.ts +55 -0
  173. package/build/src/services/uniswap-pool-discovery.js +198 -0
  174. package/build/src/services/uniswap-pool-discovery.js.map +1 -0
  175. package/build/src/services/uniswap.service.d.ts +82 -0
  176. package/build/src/services/uniswap.service.js +352 -0
  177. package/build/src/services/uniswap.service.js.map +1 -0
  178. package/build/src/simulation/index.d.ts +5 -0
  179. package/build/src/simulation/index.js +2 -0
  180. package/build/src/simulation/index.js.map +1 -0
  181. package/build/src/simulation/simulate-prepared-step.d.ts +17 -0
  182. package/build/src/simulation/simulate-prepared-step.js +42 -0
  183. package/build/src/simulation/simulate-prepared-step.js.map +1 -0
  184. package/build/src/tools/catalog.d.ts +11 -0
  185. package/build/src/tools/catalog.js +43 -0
  186. package/build/src/tools/catalog.js.map +1 -0
  187. package/build/src/tools/domains/aave.d.ts +2 -0
  188. package/build/src/tools/domains/aave.js +115 -0
  189. package/build/src/tools/domains/aave.js.map +1 -0
  190. package/build/src/tools/domains/blockchain.d.ts +2 -0
  191. package/build/src/tools/domains/blockchain.js +86 -0
  192. package/build/src/tools/domains/blockchain.js.map +1 -0
  193. package/build/src/tools/domains/browser.d.ts +2 -0
  194. package/build/src/tools/domains/browser.js +45 -0
  195. package/build/src/tools/domains/browser.js.map +1 -0
  196. package/build/src/tools/domains/contract.d.ts +2 -0
  197. package/build/src/tools/domains/contract.js +67 -0
  198. package/build/src/tools/domains/contract.js.map +1 -0
  199. package/build/src/tools/domains/ens.d.ts +2 -0
  200. package/build/src/tools/domains/ens.js +16 -0
  201. package/build/src/tools/domains/ens.js.map +1 -0
  202. package/build/src/tools/domains/gooddollar.d.ts +2 -0
  203. package/build/src/tools/domains/gooddollar.js +171 -0
  204. package/build/src/tools/domains/gooddollar.js.map +1 -0
  205. package/build/src/tools/domains/governance.d.ts +2 -0
  206. package/build/src/tools/domains/governance.js +41 -0
  207. package/build/src/tools/domains/governance.js.map +1 -0
  208. package/build/src/tools/domains/index.d.ts +1 -0
  209. package/build/src/tools/domains/index.js +31 -0
  210. package/build/src/tools/domains/index.js.map +1 -0
  211. package/build/src/tools/domains/mento-fx.d.ts +2 -0
  212. package/build/src/tools/domains/mento-fx.js +67 -0
  213. package/build/src/tools/domains/mento-fx.js.map +1 -0
  214. package/build/src/tools/domains/nft.d.ts +2 -0
  215. package/build/src/tools/domains/nft.js +38 -0
  216. package/build/src/tools/domains/nft.js.map +1 -0
  217. package/build/src/tools/domains/self.d.ts +2 -0
  218. package/build/src/tools/domains/self.js +187 -0
  219. package/build/src/tools/domains/self.js.map +1 -0
  220. package/build/src/tools/domains/staking.d.ts +2 -0
  221. package/build/src/tools/domains/staking.js +74 -0
  222. package/build/src/tools/domains/staking.js.map +1 -0
  223. package/build/src/tools/domains/token.d.ts +2 -0
  224. package/build/src/tools/domains/token.js +74 -0
  225. package/build/src/tools/domains/token.js.map +1 -0
  226. package/build/src/tools/domains/transaction.d.ts +2 -0
  227. package/build/src/tools/domains/transaction.js +120 -0
  228. package/build/src/tools/domains/transaction.js.map +1 -0
  229. package/build/src/tools/domains/uniswap.d.ts +2 -0
  230. package/build/src/tools/domains/uniswap.js +67 -0
  231. package/build/src/tools/domains/uniswap.js.map +1 -0
  232. package/build/src/tools/filter.d.ts +2 -0
  233. package/build/src/tools/filter.js +50 -0
  234. package/build/src/tools/filter.js.map +1 -0
  235. package/build/src/tools/index.d.ts +7 -0
  236. package/build/src/tools/index.js +7 -0
  237. package/build/src/tools/index.js.map +1 -0
  238. package/build/src/tools/schemas/common.d.ts +165 -0
  239. package/build/src/tools/schemas/common.js +207 -0
  240. package/build/src/tools/schemas/common.js.map +1 -0
  241. package/build/src/tools/schemas/wallet-params.d.ts +9 -0
  242. package/build/src/tools/schemas/wallet-params.js +52 -0
  243. package/build/src/tools/schemas/wallet-params.js.map +1 -0
  244. package/build/src/tools/swap-routing.d.ts +25 -0
  245. package/build/src/tools/swap-routing.js +174 -0
  246. package/build/src/tools/swap-routing.js.map +1 -0
  247. package/build/src/tools/types.d.ts +124 -0
  248. package/build/src/tools/types.js +2 -0
  249. package/build/src/tools/types.js.map +1 -0
  250. package/build/src/tools/utils/normalize-token.d.ts +2 -0
  251. package/build/src/tools/utils/normalize-token.js +12 -0
  252. package/build/src/tools/utils/normalize-token.js.map +1 -0
  253. package/build/src/tools/utils/wallet.d.ts +4 -0
  254. package/build/src/tools/utils/wallet.js +8 -0
  255. package/build/src/tools/utils/wallet.js.map +1 -0
  256. package/build/src/tools/website-sync.d.ts +28 -0
  257. package/build/src/tools/website-sync.js +165 -0
  258. package/build/src/tools/website-sync.js.map +1 -0
  259. package/build/src/types/prepared.d.ts +28 -0
  260. package/build/src/types/prepared.js +12 -0
  261. package/build/src/types/prepared.js.map +1 -0
  262. package/build/src/utils/celo-format.d.ts +6 -0
  263. package/build/src/utils/celo-format.js +17 -0
  264. package/build/src/utils/celo-format.js.map +1 -0
  265. package/build/src/utils/erc20-allowance-storage.d.ts +20 -0
  266. package/build/src/utils/erc20-allowance-storage.js +64 -0
  267. package/build/src/utils/erc20-allowance-storage.js.map +1 -0
  268. package/build/src/utils/format-date.d.ts +2 -0
  269. package/build/src/utils/format-date.js +13 -0
  270. package/build/src/utils/format-date.js.map +1 -0
  271. package/build/src/utils/format-duration.d.ts +2 -0
  272. package/build/src/utils/format-duration.js +17 -0
  273. package/build/src/utils/format-duration.js.map +1 -0
  274. package/build/src/utils/format-unix-datetime.d.ts +4 -0
  275. package/build/src/utils/format-unix-datetime.js +18 -0
  276. package/build/src/utils/format-unix-datetime.js.map +1 -0
  277. package/build/src/utils/gooddollar-ubi-period.d.ts +23 -0
  278. package/build/src/utils/gooddollar-ubi-period.js +23 -0
  279. package/build/src/utils/gooddollar-ubi-period.js.map +1 -0
  280. package/build/src/utils/normalize-address.d.ts +7 -0
  281. package/build/src/utils/normalize-address.js +16 -0
  282. package/build/src/utils/normalize-address.js.map +1 -0
  283. package/build/src/utils/self-format.d.ts +28 -0
  284. package/build/src/utils/self-format.js +79 -0
  285. package/build/src/utils/self-format.js.map +1 -0
  286. package/build/src/utils/self-signing.d.ts +4 -0
  287. package/build/src/utils/self-signing.js +38 -0
  288. package/build/src/utils/self-signing.js.map +1 -0
  289. package/build/src/utils/transaction-errors.d.ts +3 -0
  290. package/build/src/utils/transaction-errors.js +17 -0
  291. package/build/src/utils/transaction-errors.js.map +1 -0
  292. package/build/tests/catalog/domains/blockchain.d.ts +2 -0
  293. package/build/tests/catalog/domains/blockchain.js +127 -0
  294. package/build/tests/catalog/domains/blockchain.js.map +1 -0
  295. package/build/tests/catalog/domains/chain-ext.d.ts +5 -0
  296. package/build/tests/catalog/domains/chain-ext.js +207 -0
  297. package/build/tests/catalog/domains/chain-ext.js.map +1 -0
  298. package/build/tests/catalog/domains/defi.d.ts +6 -0
  299. package/build/tests/catalog/domains/defi.js +581 -0
  300. package/build/tests/catalog/domains/defi.js.map +1 -0
  301. package/build/tests/catalog/domains/self.d.ts +2 -0
  302. package/build/tests/catalog/domains/self.js +208 -0
  303. package/build/tests/catalog/domains/self.js.map +1 -0
  304. package/build/tests/catalog/domains/token.d.ts +2 -0
  305. package/build/tests/catalog/domains/token.js +70 -0
  306. package/build/tests/catalog/domains/token.js.map +1 -0
  307. package/build/tests/catalog/domains/transaction.d.ts +2 -0
  308. package/build/tests/catalog/domains/transaction.js +96 -0
  309. package/build/tests/catalog/domains/transaction.js.map +1 -0
  310. package/build/tests/catalog/index.d.ts +2 -0
  311. package/build/tests/catalog/index.js +2 -0
  312. package/build/tests/catalog/index.js.map +1 -0
  313. package/build/tests/catalog/operations.d.ts +12 -0
  314. package/build/tests/catalog/operations.js +29 -0
  315. package/build/tests/catalog/operations.js.map +1 -0
  316. package/build/tests/catalog/types.d.ts +24 -0
  317. package/build/tests/catalog/types.js +2 -0
  318. package/build/tests/catalog/types.js.map +1 -0
  319. package/build/tests/fixtures/mainnet.d.ts +54 -0
  320. package/build/tests/fixtures/mainnet.js +53 -0
  321. package/build/tests/fixtures/mainnet.js.map +1 -0
  322. package/build/tests/helpers/assert.d.ts +4 -0
  323. package/build/tests/helpers/assert.js +24 -0
  324. package/build/tests/helpers/assert.js.map +1 -0
  325. package/build/tests/helpers/env.d.ts +11 -0
  326. package/build/tests/helpers/env.js +28 -0
  327. package/build/tests/helpers/env.js.map +1 -0
  328. package/build/tests/helpers/gating.d.ts +3 -0
  329. package/build/tests/helpers/gating.js +23 -0
  330. package/build/tests/helpers/gating.js.map +1 -0
  331. package/build/tests/testing-entry.d.ts +6 -0
  332. package/build/tests/testing-entry.js +6 -0
  333. package/build/tests/testing-entry.js.map +1 -0
  334. package/package.json +5 -9
  335. package/tests/README.md +0 -78
  336. package/tests/catalog/domains/blockchain.ts +0 -133
  337. package/tests/catalog/domains/chain-ext.ts +0 -219
  338. package/tests/catalog/domains/defi.ts +0 -647
  339. package/tests/catalog/domains/self.ts +0 -220
  340. package/tests/catalog/domains/token.ts +0 -74
  341. package/tests/catalog/domains/transaction.ts +0 -111
  342. package/tests/catalog/index.ts +0 -7
  343. package/tests/catalog/operations.ts +0 -53
  344. package/tests/catalog/types.ts +0 -27
  345. package/tests/fixtures/mainnet.ts +0 -93
  346. package/tests/helpers/assert.ts +0 -30
  347. package/tests/helpers/env.ts +0 -38
  348. package/tests/helpers/gating.ts +0 -36
  349. package/tests/testing-entry.ts +0 -27
@@ -1,647 +0,0 @@
1
- import type { OperationSpec } from "../types.js";
2
- import { assertHasKeys } from "../../helpers/assert.js";
3
- import { getSwapQuoteWithFallback } from "../../../src/tools/swap-routing.js";
4
- import { GOODDOLLAR_MENTO_BROKER } from "../../../src/config/gooddollar.js";
5
-
6
- function fromAddress(fx: Parameters<OperationSpec["assert"]>[1]): `0x${string}` {
7
- return fx.signerAddress ?? fx.wallet;
8
- }
9
-
10
- export const mentoFxOperations: OperationSpec[] = [
11
- {
12
- id: "mentoFx.getFxQuote",
13
- domain: "mentoFx",
14
- layer: "read",
15
- sdk: {
16
- invoke: (client) => client.mentoFx.getFxQuote("USDm", "EURm", "1"),
17
- },
18
- mcp: {
19
- tool: "get_mento_fx_quote",
20
- arguments: () => ({
21
- token_in: "USDm",
22
- token_out: "EURm",
23
- amount: "1",
24
- }),
25
- },
26
- assert: (result) => {
27
- assertHasKeys(result, ["tokenIn", "tokenOut", "expectedOut"]);
28
- },
29
- },
30
- {
31
- id: "mentoFx.estimateFx",
32
- domain: "mentoFx",
33
- layer: "read",
34
- requiresEnv: ["CELO_PRIVATE_KEY"],
35
- sdk: {
36
- invoke: (client, fx) =>
37
- client.mentoFx.estimateFx(fromAddress(fx), "USDm", "EURm", "1"),
38
- },
39
- mcp: {
40
- tool: "estimate_mento_fx",
41
- arguments: () => ({
42
- token_in: "USDm",
43
- token_out: "EURm",
44
- amount: "1",
45
- }),
46
- },
47
- assert: (result) => {
48
- assertHasKeys(result, ["fxGas", "expectedOut"]);
49
- },
50
- },
51
- {
52
- id: "mentoFx.prepareFx",
53
- domain: "mentoFx",
54
- layer: "prepare",
55
- sdk: {
56
- invoke: (client, fx) =>
57
- client.mentoFx.prepareFx(fromAddress(fx), "USDm", "EURm", "1"),
58
- },
59
- assert: (result) => {
60
- assertHasKeys(result, ["from", "steps", "summary"]);
61
- },
62
- },
63
- {
64
- id: "mentoFx.executeFx",
65
- domain: "mentoFx",
66
- layer: "write",
67
- requiresEnv: ["CELO_PRIVATE_KEY"],
68
- requiresWrites: true,
69
- mcp: {
70
- tool: "execute_mento_fx",
71
- arguments: () => ({
72
- token_in: "USDm",
73
- token_out: "EURm",
74
- amount: "0.01",
75
- }),
76
- },
77
- assert: (result) => {
78
- assertHasKeys(result, ["hash"]);
79
- },
80
- },
81
- ];
82
-
83
- export const uniswapOperations: OperationSpec[] = [
84
- {
85
- id: "uniswap.getSwapQuote",
86
- domain: "uniswap",
87
- layer: "read",
88
- sdk: {
89
- invoke: (client) => client.uniswap.getSwapQuote("CELO", "USDC", "0.001"),
90
- },
91
- mcp: {
92
- tool: "get_uniswap_quote",
93
- arguments: () => ({
94
- token_in: "CELO",
95
- token_out: "USDC",
96
- amount: "0.001",
97
- }),
98
- },
99
- assert: (result) => {
100
- assertHasKeys(result, ["tokenIn", "tokenOut", "expectedOut", "protocol"]);
101
- },
102
- },
103
- {
104
- id: "uniswap.estimateSwap",
105
- domain: "uniswap",
106
- layer: "read",
107
- requiresEnv: ["CELO_PRIVATE_KEY"],
108
- sdk: {
109
- invoke: (client, fx) =>
110
- client.uniswap.estimateSwap(
111
- fromAddress(fx),
112
- "CELO",
113
- "USDC",
114
- "0.001",
115
- ),
116
- },
117
- mcp: {
118
- tool: "estimate_uniswap_swap",
119
- arguments: () => ({
120
- token_in: "CELO",
121
- token_out: "USDC",
122
- amount: "0.001",
123
- }),
124
- },
125
- assert: (result) => {
126
- assertHasKeys(result, ["swapGas", "expectedOut"]);
127
- },
128
- },
129
- {
130
- id: "uniswap.prepareSwap",
131
- domain: "uniswap",
132
- layer: "prepare",
133
- sdk: {
134
- invoke: (client, fx) =>
135
- client.uniswap.prepareSwap(
136
- fromAddress(fx),
137
- "CELO",
138
- "USDC",
139
- "0.001",
140
- ),
141
- },
142
- assert: (result) => {
143
- assertHasKeys(result, ["from", "steps", "summary"]);
144
- },
145
- },
146
- {
147
- id: "uniswap.executeSwap",
148
- domain: "uniswap",
149
- layer: "write",
150
- requiresEnv: ["CELO_PRIVATE_KEY"],
151
- requiresWrites: true,
152
- mcp: {
153
- tool: "execute_uniswap_swap",
154
- arguments: () => ({
155
- token_in: "CELO",
156
- token_out: "USDC",
157
- amount: "0.001",
158
- }),
159
- },
160
- assert: (result) => {
161
- assertHasKeys(result, ["hash"]);
162
- },
163
- },
164
- ];
165
-
166
- export const aaveOperations: OperationSpec[] = [
167
- {
168
- id: "aave.getBalances",
169
- domain: "aave",
170
- layer: "read",
171
- sdk: {
172
- invoke: (client, fx) => client.aave.getBalances(fx.wallet),
173
- },
174
- mcp: {
175
- tool: "get_aave_balances",
176
- arguments: (fx) => ({ address: fx.wallet }),
177
- },
178
- assert: (result) => {
179
- assertHasKeys(result, ["address", "balances", "market"]);
180
- },
181
- },
182
- {
183
- id: "aave.prepareSupply",
184
- domain: "aave",
185
- layer: "prepare",
186
- requiresEnv: ["CELO_PRIVATE_KEY"],
187
- sdk: {
188
- invoke: (client, fx) =>
189
- client.aave.prepareSupply(fromAddress(fx), "USDm", "0.01"),
190
- },
191
- assert: (result) => {
192
- assertHasKeys(result, ["from", "steps"]);
193
- },
194
- },
195
- {
196
- id: "aave.prepareWithdraw",
197
- domain: "aave",
198
- layer: "prepare",
199
- requiresEnv: ["CELO_PRIVATE_KEY"],
200
- sdk: {
201
- invoke: (client, fx) =>
202
- client.aave.prepareWithdraw(fromAddress(fx), "USDm", "0.01"),
203
- },
204
- assert: (result) => {
205
- assertHasKeys(result, ["from", "steps"]);
206
- },
207
- },
208
- {
209
- id: "aave.supply",
210
- domain: "aave",
211
- layer: "write",
212
- requiresEnv: ["CELO_PRIVATE_KEY"],
213
- requiresWrites: true,
214
- mcp: {
215
- tool: "supply_aave",
216
- arguments: () => ({
217
- token: "USDm",
218
- amount: "0.01",
219
- }),
220
- },
221
- assert: (result) => {
222
- assertHasKeys(result, ["hash"]);
223
- },
224
- },
225
- {
226
- id: "aave.withdraw",
227
- domain: "aave",
228
- layer: "write",
229
- requiresEnv: ["CELO_PRIVATE_KEY"],
230
- requiresWrites: true,
231
- mcp: {
232
- tool: "withdraw_aave",
233
- arguments: () => ({
234
- token: "USDm",
235
- amount: "0.01",
236
- }),
237
- },
238
- assert: (result) => {
239
- assertHasKeys(result, ["hash"]);
240
- },
241
- },
242
- ];
243
-
244
- export const ensOperations: OperationSpec[] = [
245
- {
246
- id: "ens.resolveEns",
247
- domain: "ens",
248
- layer: "read",
249
- sdk: {
250
- invoke: (client, fx) => client.ens.resolveEns(fx.ensName, "celo"),
251
- },
252
- mcp: {
253
- tool: "resolve_ens",
254
- arguments: (fx) => ({
255
- name: fx.ensName,
256
- chain: "celo",
257
- }),
258
- },
259
- assert: (result) => {
260
- assertHasKeys(result, ["name", "address"]);
261
- },
262
- },
263
- ];
264
-
265
- export const gooddollarOperations: OperationSpec[] = [
266
- {
267
- id: "gooddollar.getWhitelistingInfo",
268
- domain: "gooddollar",
269
- layer: "read",
270
- sdk: {
271
- invoke: (client, fx) => client.gooddollar.getWhitelistingInfo(fx.wallet),
272
- },
273
- mcp: {
274
- tool: "get_gooddollar_whitelisting_info",
275
- arguments: (fx) => ({ address: fx.wallet }),
276
- },
277
- assert: (result) => {
278
- assertHasKeys(result, [
279
- "isWhitelisted",
280
- "whitelistedRoot",
281
- "isConnectedWallet",
282
- "checkedAddress",
283
- ]);
284
- },
285
- },
286
- {
287
- id: "gooddollar.getIdentityLink",
288
- domain: "gooddollar",
289
- layer: "read",
290
- sdk: {
291
- invoke: (client, fx) => client.gooddollar.getIdentityLink(fx.wallet),
292
- },
293
- mcp: {
294
- tool: "get_gooddollar_identity_link",
295
- arguments: (fx) => ({ address: fx.wallet }),
296
- },
297
- assert: (result) => {
298
- assertHasKeys(result, [
299
- "whitelistedRoot",
300
- "isConnectedWallet",
301
- "checkedAddress",
302
- "isWhitelisted",
303
- ]);
304
- },
305
- },
306
- {
307
- id: "gooddollar.getUbiClaimEligibility",
308
- domain: "gooddollar",
309
- layer: "read",
310
- sdk: {
311
- invoke: (client, fx) =>
312
- client.gooddollar.getUbiClaimEligibility(fx.wallet),
313
- },
314
- mcp: {
315
- tool: "get_gooddollar_ubi_entitlement",
316
- arguments: (fx) => ({ address: fx.wallet }),
317
- },
318
- assert: (result) => {
319
- assertHasKeys(result, [
320
- "isEligibleToClaim",
321
- "claimableAmount",
322
- "secondsUntilNextClaim",
323
- "nextClaimAvailableIn",
324
- "ubiPeriodDay",
325
- ]);
326
- },
327
- },
328
- {
329
- id: "gooddollar.prepareClaimUbi",
330
- domain: "gooddollar",
331
- layer: "prepare",
332
- requiresEnv: ["CELO_PRIVATE_KEY"],
333
- sdk: {
334
- invoke: (client, fx) =>
335
- client.gooddollar.prepareClaimUbi(fromAddress(fx)),
336
- },
337
- assert: (result) => {
338
- assertHasKeys(result, ["from", "steps"]);
339
- },
340
- },
341
- {
342
- id: "gooddollar.claimDailyUbi",
343
- domain: "gooddollar",
344
- layer: "write",
345
- requiresEnv: ["CELO_PRIVATE_KEY"],
346
- requiresWrites: true,
347
- mcp: {
348
- tool: "claim_daily_gooddollar_ubi",
349
- arguments: () => ({}),
350
- },
351
- assert: (result) => {
352
- assertHasKeys(result, ["hash"]);
353
- },
354
- },
355
- {
356
- id: "gooddollar.getReserveQuote.sell",
357
- domain: "gooddollar",
358
- layer: "read",
359
- sdk: {
360
- invoke: (client) =>
361
- client.gooddollar.getReserveQuote("GoodDollar", "USDm", "1000"),
362
- },
363
- mcp: {
364
- tool: "get_gooddollar_reserve_quote",
365
- arguments: () => ({
366
- token_in: "GoodDollar",
367
- token_out: "USDm",
368
- amount: "1000",
369
- }),
370
- },
371
- assert: (result) => {
372
- const quote = result as { protocol?: string; expectedOut?: string };
373
- if (quote.protocol !== "gooddollar_reserve") {
374
- throw new Error(`Expected gooddollar_reserve, got ${quote.protocol}`);
375
- }
376
- if (parseExpectedOut(quote.expectedOut) <= 0) {
377
- throw new Error("Expected positive reserve output for G$ → USDm");
378
- }
379
- },
380
- },
381
- {
382
- id: "gooddollar.getReserveQuote.buy",
383
- domain: "gooddollar",
384
- layer: "read",
385
- sdk: {
386
- invoke: (client) =>
387
- client.gooddollar.getReserveQuote("USDm", "GoodDollar", "100"),
388
- },
389
- mcp: {
390
- tool: "get_gooddollar_reserve_quote",
391
- arguments: () => ({
392
- token_in: "USDm",
393
- token_out: "GoodDollar",
394
- amount: "100",
395
- }),
396
- },
397
- assert: (result) => {
398
- const quote = result as { protocol?: string; expectedOut?: string };
399
- if (quote.protocol !== "gooddollar_reserve") {
400
- throw new Error(`Expected gooddollar_reserve, got ${quote.protocol}`);
401
- }
402
- if (parseExpectedOut(quote.expectedOut) <= 1000) {
403
- throw new Error("Expected reserve to return substantially more G$ than Uniswap");
404
- }
405
- },
406
- },
407
- {
408
- id: "gooddollar.getReserveQuote.sell.exactOut",
409
- domain: "gooddollar",
410
- layer: "read",
411
- sdk: {
412
- invoke: (client) =>
413
- client.gooddollar.getReserveQuote("GoodDollar", "USDm", "0.6", {
414
- amountSide: "out",
415
- }),
416
- },
417
- mcp: {
418
- tool: "get_gooddollar_reserve_quote",
419
- arguments: () => ({
420
- token_in: "GoodDollar",
421
- token_out: "USDm",
422
- amount: "0.6",
423
- amount_side: "out",
424
- }),
425
- },
426
- assert: (result) => {
427
- const quote = result as {
428
- protocol?: string;
429
- amountIn?: string;
430
- expectedOut?: string;
431
- amountSide?: string;
432
- };
433
- if (quote.protocol !== "gooddollar_reserve") {
434
- throw new Error(`Expected gooddollar_reserve, got ${quote.protocol}`);
435
- }
436
- if (quote.amountSide !== "out") {
437
- throw new Error(`Expected amountSide out, got ${quote.amountSide}`);
438
- }
439
- const out = parseExpectedOut(quote.expectedOut);
440
- const input = parseExpectedOut(quote.amountIn);
441
- if (Math.abs(out - 0.6) > 0.01) {
442
- throw new Error(`Expected ~0.6 USDm out, got ${quote.expectedOut}`);
443
- }
444
- if (input <= 1) {
445
- throw new Error(`Expected large G$ input for 0.6 USDm, got ${quote.amountIn}`);
446
- }
447
- },
448
- },
449
- {
450
- id: "gooddollar.getReserveQuote.buy.exactOut",
451
- domain: "gooddollar",
452
- layer: "read",
453
- sdk: {
454
- invoke: (client) =>
455
- client.gooddollar.getReserveQuote("USDm", "GoodDollar", "100", {
456
- amountSide: "out",
457
- }),
458
- },
459
- mcp: {
460
- tool: "get_gooddollar_reserve_quote",
461
- arguments: () => ({
462
- token_in: "USDm",
463
- token_out: "GoodDollar",
464
- amount: "100",
465
- amount_side: "out",
466
- }),
467
- },
468
- assert: (result) => {
469
- const quote = result as {
470
- protocol?: string;
471
- amountIn?: string;
472
- expectedOut?: string;
473
- amountSide?: string;
474
- };
475
- if (quote.protocol !== "gooddollar_reserve") {
476
- throw new Error(`Expected gooddollar_reserve, got ${quote.protocol}`);
477
- }
478
- if (quote.amountSide !== "out") {
479
- throw new Error(`Expected amountSide out, got ${quote.amountSide}`);
480
- }
481
- const out = parseExpectedOut(quote.expectedOut);
482
- const input = parseExpectedOut(quote.amountIn);
483
- if (Math.abs(out - 100) > 1) {
484
- throw new Error(`Expected ~100 G$ out, got ${quote.expectedOut}`);
485
- }
486
- if (Math.abs(input - 100) > 5) {
487
- throw new Error(`Expected ~100 USDm in for 100 G$ out, got ${quote.amountIn}`);
488
- }
489
- },
490
- },
491
- {
492
- id: "swap.getSwapQuoteWithFallback.gdUsd",
493
- domain: "swap",
494
- layer: "read",
495
- sdk: {
496
- invoke: (client) =>
497
- getSwapQuoteWithFallback(client, "GoodDollar", "USDm", "1000"),
498
- },
499
- assert: (result) => {
500
- const quote = result as { protocol?: string };
501
- if (quote.protocol !== "gooddollar_reserve") {
502
- throw new Error(`Expected gooddollar_reserve, got ${quote.protocol}`);
503
- }
504
- },
505
- },
506
- {
507
- id: "swap.getSwapQuoteWithFallback.usdGd",
508
- domain: "swap",
509
- layer: "read",
510
- sdk: {
511
- invoke: (client) =>
512
- getSwapQuoteWithFallback(client, "USDm", "GoodDollar", "100"),
513
- },
514
- assert: (result) => {
515
- const quote = result as { protocol?: string };
516
- if (quote.protocol !== "gooddollar_reserve") {
517
- throw new Error(`Expected gooddollar_reserve, got ${quote.protocol}`);
518
- }
519
- },
520
- },
521
- {
522
- id: "gooddollar.prepareReserveSwap.sell",
523
- domain: "gooddollar",
524
- layer: "prepare",
525
- requiresEnv: ["CELO_PRIVATE_KEY"],
526
- sdk: {
527
- invoke: (client, fx) =>
528
- client.gooddollar.prepareReserveSwap(
529
- fromAddress(fx),
530
- "GoodDollar",
531
- "USDm",
532
- "1000",
533
- ),
534
- },
535
- assert: (result) => {
536
- const flow = result as { steps?: Array<{ to?: string }> };
537
- assertHasKeys(result, ["from", "steps"]);
538
- const last = flow.steps?.at(-1);
539
- if (last?.to?.toLowerCase() !== GOODDOLLAR_MENTO_BROKER.toLowerCase()) {
540
- throw new Error("Expected final reserve swap step to target MentoBroker");
541
- }
542
- },
543
- },
544
- {
545
- id: "gooddollar.prepareReserveSwap.sell.exactOut",
546
- domain: "gooddollar",
547
- layer: "prepare",
548
- requiresEnv: ["CELO_PRIVATE_KEY"],
549
- sdk: {
550
- invoke: (client, fx) =>
551
- client.gooddollar.prepareReserveSwap(
552
- fromAddress(fx),
553
- "GoodDollar",
554
- "USDm",
555
- "0.01",
556
- { amountSide: "out" },
557
- ),
558
- },
559
- assert: (result) => {
560
- const flow = result as { steps?: Array<{ to?: string }>; summary?: string };
561
- assertHasKeys(result, ["from", "steps", "summary"]);
562
- const last = flow.steps?.at(-1);
563
- if (last?.to?.toLowerCase() !== GOODDOLLAR_MENTO_BROKER.toLowerCase()) {
564
- throw new Error("Expected final reserve swap step to target MentoBroker");
565
- }
566
- const summary = flow.summary ?? "";
567
- if (!/0\.01\s+USDm/i.test(summary)) {
568
- throw new Error(`Expected 0.01 USDm in prepare summary, got: ${summary}`);
569
- }
570
- if (/0\.00006995/.test(summary)) {
571
- throw new Error(`Prepare used micro G$ input instead of exact-out resolve: ${summary}`);
572
- }
573
- },
574
- },
575
- {
576
- id: "gooddollar.prepareReserveSwap.buy",
577
- domain: "gooddollar",
578
- layer: "prepare",
579
- requiresEnv: ["CELO_PRIVATE_KEY"],
580
- sdk: {
581
- invoke: (client, fx) =>
582
- client.gooddollar.prepareReserveSwap(
583
- fromAddress(fx),
584
- "USDm",
585
- "GoodDollar",
586
- "10",
587
- ),
588
- },
589
- assert: (result) => {
590
- const flow = result as { steps?: Array<{ to?: string }> };
591
- assertHasKeys(result, ["from", "steps"]);
592
- const last = flow.steps?.at(-1);
593
- if (last?.to?.toLowerCase() !== GOODDOLLAR_MENTO_BROKER.toLowerCase()) {
594
- throw new Error("Expected final reserve swap step to target MentoBroker");
595
- }
596
- },
597
- },
598
- {
599
- id: "gooddollar.estimateReserveSwap.sell",
600
- domain: "gooddollar",
601
- layer: "read",
602
- requiresEnv: ["CELO_PRIVATE_KEY"],
603
- sdk: {
604
- invoke: (client, fx) =>
605
- client.gooddollar.estimateReserveSwap(
606
- fromAddress(fx),
607
- "GoodDollar",
608
- "USDm",
609
- "1000",
610
- ),
611
- },
612
- mcp: {
613
- tool: "estimate_gooddollar_reserve_swap",
614
- arguments: () => ({
615
- token_in: "GoodDollar",
616
- token_out: "USDm",
617
- amount: "1000",
618
- }),
619
- },
620
- assert: (result) => {
621
- assertHasKeys(result, ["expectedOut", "approvalNeeded", "swapGas"]);
622
- },
623
- },
624
- {
625
- id: "gooddollar.executeReserveSwap.sell",
626
- domain: "gooddollar",
627
- layer: "write",
628
- requiresEnv: ["CELO_PRIVATE_KEY"],
629
- requiresWrites: true,
630
- mcp: {
631
- tool: "execute_gooddollar_reserve_swap",
632
- arguments: () => ({
633
- token_in: "GoodDollar",
634
- token_out: "USDm",
635
- amount: "1",
636
- }),
637
- },
638
- assert: (result) => {
639
- assertHasKeys(result, ["hash"]);
640
- },
641
- },
642
- ];
643
-
644
- function parseExpectedOut(value: string | undefined): number {
645
- const n = Number(String(value ?? "").replace(/,/g, ""));
646
- return Number.isFinite(n) ? n : 0;
647
- }