@andrewkimjoseph/celina-sdk 0.15.1 → 0.15.2

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 (361) hide show
  1. package/build/config/celina-tag.d.ts +5 -0
  2. package/build/config/celina-tag.js +67 -3
  3. package/build/config/celina-tag.js.map +1 -1
  4. package/build/index.d.ts +1 -1
  5. package/build/index.js +1 -1
  6. package/build/index.js.map +1 -1
  7. package/build/src/a2a/agent-card.d.ts +37 -0
  8. package/build/src/a2a/agent-card.js +46 -0
  9. package/build/src/a2a/agent-card.js.map +1 -0
  10. package/build/src/a2a/index.d.ts +2 -0
  11. package/build/src/a2a/index.js +3 -0
  12. package/build/src/a2a/index.js.map +1 -0
  13. package/build/src/a2a/skills.d.ts +18 -0
  14. package/build/src/a2a/skills.js +106 -0
  15. package/build/src/a2a/skills.js.map +1 -0
  16. package/build/src/aa/create-aa-client.d.ts +44 -0
  17. package/build/src/aa/create-aa-client.js +115 -0
  18. package/build/src/aa/create-aa-client.js.map +1 -0
  19. package/build/src/aa/gas-sponsorship.d.ts +27 -0
  20. package/build/src/aa/gas-sponsorship.js +65 -0
  21. package/build/src/aa/gas-sponsorship.js.map +1 -0
  22. package/build/src/aa/index.d.ts +4 -0
  23. package/build/src/aa/index.js +4 -0
  24. package/build/src/aa/index.js.map +1 -0
  25. package/build/src/aa/prepared-calls.d.ts +8 -0
  26. package/build/src/aa/prepared-calls.js +27 -0
  27. package/build/src/aa/prepared-calls.js.map +1 -0
  28. package/build/src/aa/types.d.ts +61 -0
  29. package/build/src/aa/types.js +2 -0
  30. package/build/src/aa/types.js.map +1 -0
  31. package/build/src/abis/aave-pool.d.ts +37 -0
  32. package/build/src/abis/aave-pool.js +26 -0
  33. package/build/src/abis/aave-pool.js.map +1 -0
  34. package/build/src/abis/accounts.d.ts +13 -0
  35. package/build/src/abis/accounts.js +10 -0
  36. package/build/src/abis/accounts.js.map +1 -0
  37. package/build/src/abis/election.d.ts +124 -0
  38. package/build/src/abis/election.js +88 -0
  39. package/build/src/abis/election.js.map +1 -0
  40. package/build/src/abis/gooddollar-broker.d.ts +77 -0
  41. package/build/src/abis/gooddollar-broker.js +44 -0
  42. package/build/src/abis/gooddollar-broker.js.map +1 -0
  43. package/build/src/abis/gooddollar-identity.d.ts +85 -0
  44. package/build/src/abis/gooddollar-identity.js +52 -0
  45. package/build/src/abis/gooddollar-identity.js.map +1 -0
  46. package/build/src/abis/governance.d.ts +86 -0
  47. package/build/src/abis/governance.js +68 -0
  48. package/build/src/abis/governance.js.map +1 -0
  49. package/build/src/abis/locked-gold.d.ts +10 -0
  50. package/build/src/abis/locked-gold.js +10 -0
  51. package/build/src/abis/locked-gold.js.map +1 -0
  52. package/build/src/abis/nft.d.ts +107 -0
  53. package/build/src/abis/nft.js +75 -0
  54. package/build/src/abis/nft.js.map +1 -0
  55. package/build/src/abis/permit2.d.ts +43 -0
  56. package/build/src/abis/permit2.js +30 -0
  57. package/build/src/abis/permit2.js.map +1 -0
  58. package/build/src/abis/self-registry.d.ts +194 -0
  59. package/build/src/abis/self-registry.js +120 -0
  60. package/build/src/abis/self-registry.js.map +1 -0
  61. package/build/src/abis/ubi-scheme.d.ts +91 -0
  62. package/build/src/abis/ubi-scheme.js +66 -0
  63. package/build/src/abis/ubi-scheme.js.map +1 -0
  64. package/build/src/abis/uniswap-state-view.d.ts +34 -0
  65. package/build/src/abis/uniswap-state-view.js +22 -0
  66. package/build/src/abis/uniswap-state-view.js.map +1 -0
  67. package/build/src/abis/uniswap-v4-quoter.d.ts +86 -0
  68. package/build/src/abis/uniswap-v4-quoter.js +64 -0
  69. package/build/src/abis/uniswap-v4-quoter.js.map +1 -0
  70. package/build/src/abis/universal-router.d.ts +16 -0
  71. package/build/src/abis/universal-router.js +14 -0
  72. package/build/src/abis/universal-router.js.map +1 -0
  73. package/build/src/abis/validators-minimal.d.ts +65 -0
  74. package/build/src/abis/validators-minimal.js +39 -0
  75. package/build/src/abis/validators-minimal.js.map +1 -0
  76. package/build/src/analytics/amplitude.d.ts +11 -0
  77. package/build/src/analytics/amplitude.js +76 -0
  78. package/build/src/analytics/amplitude.js.map +1 -0
  79. package/build/src/analytics/config.d.ts +7 -0
  80. package/build/src/analytics/config.js +25 -0
  81. package/build/src/analytics/config.js.map +1 -0
  82. package/build/src/analytics/consumer-package.d.ts +9 -0
  83. package/build/src/analytics/consumer-package.js +143 -0
  84. package/build/src/analytics/consumer-package.js.map +1 -0
  85. package/build/src/analytics/mcp-tool-events.d.ts +5 -0
  86. package/build/src/analytics/mcp-tool-events.js +53 -0
  87. package/build/src/analytics/mcp-tool-events.js.map +1 -0
  88. package/build/src/analytics/wallet-context.d.ts +11 -0
  89. package/build/src/analytics/wallet-context.js +81 -0
  90. package/build/src/analytics/wallet-context.js.map +1 -0
  91. package/build/src/analytics/wallet-extract.d.ts +9 -0
  92. package/build/src/analytics/wallet-extract.js +21 -0
  93. package/build/src/analytics/wallet-extract.js.map +1 -0
  94. package/build/src/analytics/wrap-service.d.ts +5 -0
  95. package/build/src/analytics/wrap-service.js +38 -0
  96. package/build/src/analytics/wrap-service.js.map +1 -0
  97. package/build/src/clients/celo-client.d.ts +19 -0
  98. package/build/src/clients/celo-client.js +32 -0
  99. package/build/src/clients/celo-client.js.map +1 -0
  100. package/build/src/clients/ens-client.d.ts +17 -0
  101. package/build/src/clients/ens-client.js +30 -0
  102. package/build/src/clients/ens-client.js.map +1 -0
  103. package/build/src/clients/mento-sdk.d.ts +2 -0
  104. package/build/src/clients/mento-sdk.js +9 -0
  105. package/build/src/clients/mento-sdk.js.map +1 -0
  106. package/build/src/clients/self-api.d.ts +82 -0
  107. package/build/src/clients/self-api.js +242 -0
  108. package/build/src/clients/self-api.js.map +1 -0
  109. package/build/src/clients/uniswap-sdk.d.ts +4 -0
  110. package/build/src/clients/uniswap-sdk.js +13 -0
  111. package/build/src/clients/uniswap-sdk.js.map +1 -0
  112. package/build/src/config/aave.d.ts +17 -0
  113. package/build/src/config/aave.js +77 -0
  114. package/build/src/config/aave.js.map +1 -0
  115. package/build/src/config/celina-tag.d.ts +55 -0
  116. package/build/src/config/celina-tag.js +234 -0
  117. package/build/src/config/celina-tag.js.map +1 -0
  118. package/build/src/config/celo-core-contracts.d.ts +8 -0
  119. package/build/src/config/celo-core-contracts.js +9 -0
  120. package/build/src/config/celo-core-contracts.js.map +1 -0
  121. package/build/src/config/chains.d.ts +937 -0
  122. package/build/src/config/chains.js +319 -0
  123. package/build/src/config/chains.js.map +1 -0
  124. package/build/src/config/gooddollar.d.ts +16 -0
  125. package/build/src/config/gooddollar.js +24 -0
  126. package/build/src/config/gooddollar.js.map +1 -0
  127. package/build/src/config/sdk-config.d.ts +44 -0
  128. package/build/src/config/sdk-config.js +28 -0
  129. package/build/src/config/sdk-config.js.map +1 -0
  130. package/build/src/config/self.d.ts +22 -0
  131. package/build/src/config/self.js +27 -0
  132. package/build/src/config/self.js.map +1 -0
  133. package/build/src/config/uniswap.d.ts +42 -0
  134. package/build/src/config/uniswap.js +76 -0
  135. package/build/src/config/uniswap.js.map +1 -0
  136. package/build/src/index.d.ts +127 -0
  137. package/build/src/index.js +72 -0
  138. package/build/src/index.js.map +1 -0
  139. package/build/src/oasf/index.d.ts +2 -0
  140. package/build/src/oasf/index.js +3 -0
  141. package/build/src/oasf/index.js.map +1 -0
  142. package/build/src/oasf/record.d.ts +39 -0
  143. package/build/src/oasf/record.js +35 -0
  144. package/build/src/oasf/record.js.map +1 -0
  145. package/build/src/oasf/taxonomy.d.ts +19 -0
  146. package/build/src/oasf/taxonomy.js +46 -0
  147. package/build/src/oasf/taxonomy.js.map +1 -0
  148. package/build/src/services/aave.service.d.ts +59 -0
  149. package/build/src/services/aave.service.js +210 -0
  150. package/build/src/services/aave.service.js.map +1 -0
  151. package/build/src/services/account.service.d.ts +22 -0
  152. package/build/src/services/account.service.js +29 -0
  153. package/build/src/services/account.service.js.map +1 -0
  154. package/build/src/services/agentkarma.service.d.ts +89 -0
  155. package/build/src/services/agentkarma.service.js +102 -0
  156. package/build/src/services/agentkarma.service.js.map +1 -0
  157. package/build/src/services/blockchain.service.d.ts +126 -0
  158. package/build/src/services/blockchain.service.js +188 -0
  159. package/build/src/services/blockchain.service.js.map +1 -0
  160. package/build/src/services/contract.service.d.ts +78 -0
  161. package/build/src/services/contract.service.js +117 -0
  162. package/build/src/services/contract.service.js.map +1 -0
  163. package/build/src/services/ens.service.d.ts +44 -0
  164. package/build/src/services/ens.service.js +92 -0
  165. package/build/src/services/ens.service.js.map +1 -0
  166. package/build/src/services/gooddollar.service.d.ts +184 -0
  167. package/build/src/services/gooddollar.service.js +675 -0
  168. package/build/src/services/gooddollar.service.js.map +1 -0
  169. package/build/src/services/governance.service.d.ts +96 -0
  170. package/build/src/services/governance.service.js +255 -0
  171. package/build/src/services/governance.service.js.map +1 -0
  172. package/build/src/services/mento-fx.service.d.ts +81 -0
  173. package/build/src/services/mento-fx.service.js +318 -0
  174. package/build/src/services/mento-fx.service.js.map +1 -0
  175. package/build/src/services/nft.service.d.ts +58 -0
  176. package/build/src/services/nft.service.js +222 -0
  177. package/build/src/services/nft.service.js.map +1 -0
  178. package/build/src/services/self-session-store.d.ts +19 -0
  179. package/build/src/services/self-session-store.js +28 -0
  180. package/build/src/services/self-session-store.js.map +1 -0
  181. package/build/src/services/self.service.d.ts +241 -0
  182. package/build/src/services/self.service.js +699 -0
  183. package/build/src/services/self.service.js.map +1 -0
  184. package/build/src/services/staking.service.d.ts +140 -0
  185. package/build/src/services/staking.service.js +444 -0
  186. package/build/src/services/staking.service.js.map +1 -0
  187. package/build/src/services/token.service.d.ts +110 -0
  188. package/build/src/services/token.service.js +189 -0
  189. package/build/src/services/token.service.js.map +1 -0
  190. package/build/src/services/transaction.service.d.ts +69 -0
  191. package/build/src/services/transaction.service.js +197 -0
  192. package/build/src/services/transaction.service.js.map +1 -0
  193. package/build/src/services/uniswap-path-router.d.ts +40 -0
  194. package/build/src/services/uniswap-path-router.js +168 -0
  195. package/build/src/services/uniswap-path-router.js.map +1 -0
  196. package/build/src/services/uniswap-pool-discovery.d.ts +55 -0
  197. package/build/src/services/uniswap-pool-discovery.js +198 -0
  198. package/build/src/services/uniswap-pool-discovery.js.map +1 -0
  199. package/build/src/services/uniswap.service.d.ts +83 -0
  200. package/build/src/services/uniswap.service.js +352 -0
  201. package/build/src/services/uniswap.service.js.map +1 -0
  202. package/build/src/simulation/index.d.ts +5 -0
  203. package/build/src/simulation/index.js +2 -0
  204. package/build/src/simulation/index.js.map +1 -0
  205. package/build/src/simulation/simulate-prepared-step.d.ts +17 -0
  206. package/build/src/simulation/simulate-prepared-step.js +42 -0
  207. package/build/src/simulation/simulate-prepared-step.js.map +1 -0
  208. package/build/src/tools/catalog.d.ts +11 -0
  209. package/build/src/tools/catalog.js +43 -0
  210. package/build/src/tools/catalog.js.map +1 -0
  211. package/build/src/tools/domains/aave.d.ts +2 -0
  212. package/build/src/tools/domains/aave.js +115 -0
  213. package/build/src/tools/domains/aave.js.map +1 -0
  214. package/build/src/tools/domains/agentkarma.d.ts +2 -0
  215. package/build/src/tools/domains/agentkarma.js +92 -0
  216. package/build/src/tools/domains/agentkarma.js.map +1 -0
  217. package/build/src/tools/domains/blockchain.d.ts +2 -0
  218. package/build/src/tools/domains/blockchain.js +122 -0
  219. package/build/src/tools/domains/blockchain.js.map +1 -0
  220. package/build/src/tools/domains/browser.d.ts +2 -0
  221. package/build/src/tools/domains/browser.js +45 -0
  222. package/build/src/tools/domains/browser.js.map +1 -0
  223. package/build/src/tools/domains/contract.d.ts +2 -0
  224. package/build/src/tools/domains/contract.js +67 -0
  225. package/build/src/tools/domains/contract.js.map +1 -0
  226. package/build/src/tools/domains/ens.d.ts +2 -0
  227. package/build/src/tools/domains/ens.js +16 -0
  228. package/build/src/tools/domains/ens.js.map +1 -0
  229. package/build/src/tools/domains/gooddollar.d.ts +2 -0
  230. package/build/src/tools/domains/gooddollar.js +171 -0
  231. package/build/src/tools/domains/gooddollar.js.map +1 -0
  232. package/build/src/tools/domains/governance.d.ts +2 -0
  233. package/build/src/tools/domains/governance.js +41 -0
  234. package/build/src/tools/domains/governance.js.map +1 -0
  235. package/build/src/tools/domains/index.d.ts +1 -0
  236. package/build/src/tools/domains/index.js +33 -0
  237. package/build/src/tools/domains/index.js.map +1 -0
  238. package/build/src/tools/domains/mento-fx.d.ts +2 -0
  239. package/build/src/tools/domains/mento-fx.js +67 -0
  240. package/build/src/tools/domains/mento-fx.js.map +1 -0
  241. package/build/src/tools/domains/nft.d.ts +2 -0
  242. package/build/src/tools/domains/nft.js +38 -0
  243. package/build/src/tools/domains/nft.js.map +1 -0
  244. package/build/src/tools/domains/self.d.ts +2 -0
  245. package/build/src/tools/domains/self.js +187 -0
  246. package/build/src/tools/domains/self.js.map +1 -0
  247. package/build/src/tools/domains/staking.d.ts +2 -0
  248. package/build/src/tools/domains/staking.js +74 -0
  249. package/build/src/tools/domains/staking.js.map +1 -0
  250. package/build/src/tools/domains/token.d.ts +2 -0
  251. package/build/src/tools/domains/token.js +74 -0
  252. package/build/src/tools/domains/token.js.map +1 -0
  253. package/build/src/tools/domains/transaction.d.ts +2 -0
  254. package/build/src/tools/domains/transaction.js +120 -0
  255. package/build/src/tools/domains/transaction.js.map +1 -0
  256. package/build/src/tools/domains/uniswap.d.ts +2 -0
  257. package/build/src/tools/domains/uniswap.js +67 -0
  258. package/build/src/tools/domains/uniswap.js.map +1 -0
  259. package/build/src/tools/filter.d.ts +2 -0
  260. package/build/src/tools/filter.js +50 -0
  261. package/build/src/tools/filter.js.map +1 -0
  262. package/build/src/tools/index.d.ts +7 -0
  263. package/build/src/tools/index.js +7 -0
  264. package/build/src/tools/index.js.map +1 -0
  265. package/build/src/tools/schemas/common.d.ts +165 -0
  266. package/build/src/tools/schemas/common.js +207 -0
  267. package/build/src/tools/schemas/common.js.map +1 -0
  268. package/build/src/tools/schemas/wallet-params.d.ts +9 -0
  269. package/build/src/tools/schemas/wallet-params.js +52 -0
  270. package/build/src/tools/schemas/wallet-params.js.map +1 -0
  271. package/build/src/tools/swap-routing.d.ts +25 -0
  272. package/build/src/tools/swap-routing.js +174 -0
  273. package/build/src/tools/swap-routing.js.map +1 -0
  274. package/build/src/tools/types.d.ts +124 -0
  275. package/build/src/tools/types.js +2 -0
  276. package/build/src/tools/types.js.map +1 -0
  277. package/build/src/tools/utils/normalize-token.d.ts +2 -0
  278. package/build/src/tools/utils/normalize-token.js +12 -0
  279. package/build/src/tools/utils/normalize-token.js.map +1 -0
  280. package/build/src/tools/utils/wallet.d.ts +4 -0
  281. package/build/src/tools/utils/wallet.js +8 -0
  282. package/build/src/tools/utils/wallet.js.map +1 -0
  283. package/build/src/tools/website-sync.d.ts +28 -0
  284. package/build/src/tools/website-sync.js +198 -0
  285. package/build/src/tools/website-sync.js.map +1 -0
  286. package/build/src/types/prepared.d.ts +43 -0
  287. package/build/src/types/prepared.js +15 -0
  288. package/build/src/types/prepared.js.map +1 -0
  289. package/build/src/utils/celo-format.d.ts +6 -0
  290. package/build/src/utils/celo-format.js +17 -0
  291. package/build/src/utils/celo-format.js.map +1 -0
  292. package/build/src/utils/erc20-allowance-storage.d.ts +20 -0
  293. package/build/src/utils/erc20-allowance-storage.js +64 -0
  294. package/build/src/utils/erc20-allowance-storage.js.map +1 -0
  295. package/build/src/utils/format-date.d.ts +2 -0
  296. package/build/src/utils/format-date.js +13 -0
  297. package/build/src/utils/format-date.js.map +1 -0
  298. package/build/src/utils/format-duration.d.ts +2 -0
  299. package/build/src/utils/format-duration.js +17 -0
  300. package/build/src/utils/format-duration.js.map +1 -0
  301. package/build/src/utils/format-unix-datetime.d.ts +4 -0
  302. package/build/src/utils/format-unix-datetime.js +18 -0
  303. package/build/src/utils/format-unix-datetime.js.map +1 -0
  304. package/build/src/utils/gooddollar-ubi-period.d.ts +23 -0
  305. package/build/src/utils/gooddollar-ubi-period.js +23 -0
  306. package/build/src/utils/gooddollar-ubi-period.js.map +1 -0
  307. package/build/src/utils/normalize-address.d.ts +7 -0
  308. package/build/src/utils/normalize-address.js +16 -0
  309. package/build/src/utils/normalize-address.js.map +1 -0
  310. package/build/src/utils/self-format.d.ts +28 -0
  311. package/build/src/utils/self-format.js +79 -0
  312. package/build/src/utils/self-format.js.map +1 -0
  313. package/build/src/utils/self-signing.d.ts +4 -0
  314. package/build/src/utils/self-signing.js +38 -0
  315. package/build/src/utils/self-signing.js.map +1 -0
  316. package/build/src/utils/transaction-errors.d.ts +3 -0
  317. package/build/src/utils/transaction-errors.js +17 -0
  318. package/build/src/utils/transaction-errors.js.map +1 -0
  319. package/build/tests/catalog/domains/blockchain.d.ts +2 -0
  320. package/build/tests/catalog/domains/blockchain.js +127 -0
  321. package/build/tests/catalog/domains/blockchain.js.map +1 -0
  322. package/build/tests/catalog/domains/chain-ext.d.ts +5 -0
  323. package/build/tests/catalog/domains/chain-ext.js +207 -0
  324. package/build/tests/catalog/domains/chain-ext.js.map +1 -0
  325. package/build/tests/catalog/domains/defi.d.ts +6 -0
  326. package/build/tests/catalog/domains/defi.js +581 -0
  327. package/build/tests/catalog/domains/defi.js.map +1 -0
  328. package/build/tests/catalog/domains/self.d.ts +2 -0
  329. package/build/tests/catalog/domains/self.js +208 -0
  330. package/build/tests/catalog/domains/self.js.map +1 -0
  331. package/build/tests/catalog/domains/token.d.ts +2 -0
  332. package/build/tests/catalog/domains/token.js +70 -0
  333. package/build/tests/catalog/domains/token.js.map +1 -0
  334. package/build/tests/catalog/domains/transaction.d.ts +2 -0
  335. package/build/tests/catalog/domains/transaction.js +96 -0
  336. package/build/tests/catalog/domains/transaction.js.map +1 -0
  337. package/build/tests/catalog/index.d.ts +2 -0
  338. package/build/tests/catalog/index.js +2 -0
  339. package/build/tests/catalog/index.js.map +1 -0
  340. package/build/tests/catalog/operations.d.ts +12 -0
  341. package/build/tests/catalog/operations.js +29 -0
  342. package/build/tests/catalog/operations.js.map +1 -0
  343. package/build/tests/catalog/types.d.ts +24 -0
  344. package/build/tests/catalog/types.js +2 -0
  345. package/build/tests/catalog/types.js.map +1 -0
  346. package/build/tests/fixtures/mainnet.d.ts +54 -0
  347. package/build/tests/fixtures/mainnet.js +53 -0
  348. package/build/tests/fixtures/mainnet.js.map +1 -0
  349. package/build/tests/helpers/assert.d.ts +4 -0
  350. package/build/tests/helpers/assert.js +24 -0
  351. package/build/tests/helpers/assert.js.map +1 -0
  352. package/build/tests/helpers/env.d.ts +12 -0
  353. package/build/tests/helpers/env.js +29 -0
  354. package/build/tests/helpers/env.js.map +1 -0
  355. package/build/tests/helpers/gating.d.ts +3 -0
  356. package/build/tests/helpers/gating.js +23 -0
  357. package/build/tests/helpers/gating.js.map +1 -0
  358. package/build/tests/testing-entry.d.ts +6 -0
  359. package/build/tests/testing-entry.js +6 -0
  360. package/build/tests/testing-entry.js.map +1 -0
  361. package/package.json +1 -1
@@ -0,0 +1,120 @@
1
+ import { z } from "zod";
2
+ import { addressOrEnsSchema, addressSchema, hexDataSchema, optionalWalletAddressSchema, tokenSymbolSchema, } from "../schemas/common.js";
3
+ import { normalizeRegistryTokenInput } from "../utils/normalize-token.js";
4
+ import { resolveWalletFromRuntime, useMcpServerExecutor } from "../utils/wallet.js";
5
+ export const transactionToolDefinitions = [
6
+ {
7
+ name: "estimate_send",
8
+ description: "Estimates gas for sending CELO or an ERC-20. Recipient can be ENS.",
9
+ inputSchema: z.object({
10
+ to: addressOrEnsSchema,
11
+ token: tokenSymbolSchema.optional(),
12
+ amount: z.string(),
13
+ from: optionalWalletAddressSchema,
14
+ }),
15
+ families: ["read"],
16
+ mcp: { title: "Estimate Send", annotations: { readOnlyHint: true } },
17
+ handler: async (runtime, input) => {
18
+ const { address, ens } = await runtime.celina.ens.resolveAddressOrEns(input.to);
19
+ const token = normalizeRegistryTokenInput(input.token ?? "CELO");
20
+ const amount = input.amount;
21
+ const from = input.from;
22
+ if (runtime.executors?.transaction &&
23
+ useMcpServerExecutor(runtime, from)) {
24
+ const estimate = await runtime.executors.transaction.estimateSend(address, token, amount);
25
+ if (ens) {
26
+ return Object.assign({}, estimate, { ens });
27
+ }
28
+ return estimate;
29
+ }
30
+ const sender = resolveWalletFromRuntime(runtime, {
31
+ from,
32
+ address: from,
33
+ });
34
+ const estimate = await runtime.celina.transaction.estimateSend(sender, address, token, amount);
35
+ return ens ? { ...estimate, ens } : estimate;
36
+ },
37
+ },
38
+ {
39
+ name: "send_token",
40
+ description: "Send CELO or an ERC-20 on mainnet. Requires CELO_PRIVATE_KEY in MCP server env.",
41
+ inputSchema: z.object({
42
+ to: addressOrEnsSchema,
43
+ token: tokenSymbolSchema.optional(),
44
+ amount: z.string(),
45
+ }),
46
+ families: ["execute"],
47
+ surfaces: ["mcp"],
48
+ requiresEnv: ["CELO_PRIVATE_KEY"],
49
+ mcp: {
50
+ title: "Send Token",
51
+ annotations: { destructiveHint: true, openWorldHint: true },
52
+ },
53
+ handler: async (runtime, input) => {
54
+ const tx = runtime.executors?.transaction;
55
+ if (!tx)
56
+ throw new Error("Transaction executor not configured.");
57
+ const { address, ens } = await runtime.celina.ens.resolveAddressOrEns(input.to);
58
+ const result = await tx.sendToken(address, normalizeRegistryTokenInput(input.token ?? "CELO"), input.amount);
59
+ return ens ? Object.assign({}, result, { ens }) : result;
60
+ },
61
+ },
62
+ {
63
+ name: "prepare_send",
64
+ description: "Prepare an unsigned send transaction. User must confirm and sign in wallet.",
65
+ inputSchema: z.object({
66
+ to: addressOrEnsSchema,
67
+ token: z.string(),
68
+ amount: z.string(),
69
+ from: optionalWalletAddressSchema,
70
+ }),
71
+ families: ["prepare"],
72
+ surfaces: ["browser"],
73
+ handler: async (runtime, input) => {
74
+ const sender = resolveWalletFromRuntime(runtime, {
75
+ from: input.from,
76
+ });
77
+ const token = normalizeRegistryTokenInput(input.token);
78
+ const amount = input.amount;
79
+ await runtime.hooks?.beforePrepareSend?.({ sender, token, amount });
80
+ const { address } = await runtime.celina.ens.resolveAddressOrEns(input.to);
81
+ return runtime.celina.transaction.prepareSend(sender, address, token, amount);
82
+ },
83
+ },
84
+ {
85
+ name: "get_gas_fee_data",
86
+ description: "Returns current gas fee data including EIP-1559 fees on mainnet.",
87
+ inputSchema: z.object({}),
88
+ families: ["read"],
89
+ mcp: {
90
+ title: "Get Gas Fee Data",
91
+ annotations: { readOnlyHint: true, idempotentHint: true },
92
+ },
93
+ handler: async (runtime) => runtime.celina.transaction.getGasFeeData(),
94
+ },
95
+ {
96
+ name: "estimate_transaction",
97
+ description: "Estimates gas for a generic transaction (to/value/data) from a wallet.",
98
+ inputSchema: z.object({
99
+ from: optionalWalletAddressSchema,
100
+ to: addressSchema,
101
+ value: z.string().optional(),
102
+ data: hexDataSchema,
103
+ }),
104
+ families: ["read"],
105
+ mcp: { title: "Estimate Transaction", annotations: { readOnlyHint: true } },
106
+ handler: async (runtime, input) => {
107
+ const sender = resolveWalletFromRuntime(runtime, {
108
+ from: input.from,
109
+ address: input.from,
110
+ });
111
+ return runtime.celina.transaction.estimateTransaction({
112
+ from: sender,
113
+ to: input.to,
114
+ value: input.value,
115
+ data: input.data,
116
+ });
117
+ },
118
+ },
119
+ ];
120
+ //# sourceMappingURL=transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../../src/tools/domains/transaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ToolDefinition } from "../types.js";
2
+ export declare const uniswapToolDefinitions: ToolDefinition[];
@@ -0,0 +1,67 @@
1
+ import { uniswapQuoteSchema, uniswapWalletSchema, } from "../schemas/common.js";
2
+ import { normalizeRegistryTokenInput } from "../utils/normalize-token.js";
3
+ import { resolveWalletFromRuntime, useMcpServerExecutor } from "../utils/wallet.js";
4
+ function mapUniswapWalletOptions(input) {
5
+ return {
6
+ recipient: input.recipient,
7
+ slippageTolerance: input.slippage_tolerance,
8
+ deadlineMinutes: input.deadline_minutes,
9
+ };
10
+ }
11
+ export const uniswapToolDefinitions = [
12
+ {
13
+ name: "get_uniswap_quote",
14
+ description: "Uniswap v4 AMM quote for a token pair on Celo mainnet.",
15
+ inputSchema: uniswapQuoteSchema,
16
+ families: ["read"],
17
+ mcp: { title: "Get Uniswap Quote", annotations: { readOnlyHint: true } },
18
+ handler: async (runtime, input) => runtime.celina.uniswap.getSwapQuote(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount),
19
+ },
20
+ {
21
+ name: "estimate_uniswap_swap",
22
+ description: "Estimate gas for a Uniswap v4 swap including ERC-20 and Permit2 approvals when needed.",
23
+ inputSchema: uniswapWalletSchema,
24
+ families: ["read"],
25
+ mcp: { title: "Estimate Uniswap Swap", annotations: { readOnlyHint: true } },
26
+ handler: async (runtime, input) => {
27
+ const from = input.from;
28
+ const sender = resolveWalletFromRuntime(runtime, { from });
29
+ if (runtime.executors?.uniswap && useMcpServerExecutor(runtime, from)) {
30
+ return runtime.executors.uniswap.estimate(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapUniswapWalletOptions(input));
31
+ }
32
+ return runtime.celina.uniswap.estimateSwap(sender, normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapUniswapWalletOptions(input));
33
+ },
34
+ },
35
+ {
36
+ name: "execute_uniswap_swap",
37
+ description: "Execute a Uniswap v4 swap on Celo mainnet. Requires CELO_PRIVATE_KEY.",
38
+ inputSchema: uniswapWalletSchema,
39
+ families: ["execute"],
40
+ surfaces: ["mcp"],
41
+ requiresEnv: ["CELO_PRIVATE_KEY"],
42
+ mcp: {
43
+ title: "Execute Uniswap Swap",
44
+ annotations: { destructiveHint: true, openWorldHint: true },
45
+ },
46
+ handler: async (runtime, input) => {
47
+ const uni = runtime.executors?.uniswap;
48
+ if (!uni)
49
+ throw new Error("Uniswap executor not configured.");
50
+ return uni.execute(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapUniswapWalletOptions(input));
51
+ },
52
+ },
53
+ {
54
+ name: "prepare_uniswap_swap",
55
+ description: "Prepare Uniswap v4 swap only. Prefer prepare_swap after get_swap_quote for automatic routing.",
56
+ inputSchema: uniswapWalletSchema,
57
+ families: ["prepare"],
58
+ surfaces: ["browser"],
59
+ handler: async (runtime, input) => {
60
+ const sender = resolveWalletFromRuntime(runtime, {
61
+ from: input.from,
62
+ });
63
+ return runtime.celina.uniswap.prepareSwap(sender, normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapUniswapWalletOptions(input));
64
+ },
65
+ },
66
+ ];
67
+ //# sourceMappingURL=uniswap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniswap.js","sourceRoot":"","sources":["../../../../src/tools/domains/uniswap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { FilterToolsOptions, ToolDefinition } from "./types.js";
2
+ export declare function filterToolDefinitions(definitions: ToolDefinition[], options?: FilterToolsOptions): ToolDefinition[];
@@ -0,0 +1,50 @@
1
+ import { requireWalletParamsInInputSchema } from "./schemas/wallet-params.js";
2
+ const ESTIMATE_PREFIX = "estimate_";
3
+ function requireExplicitWalletAddresses(definitions) {
4
+ return definitions.map((def) => {
5
+ const inputSchema = requireWalletParamsInInputSchema(def.inputSchema, {
6
+ toolName: def.name,
7
+ });
8
+ if (inputSchema === def.inputSchema) {
9
+ return def;
10
+ }
11
+ return { ...def, inputSchema };
12
+ });
13
+ }
14
+ export function filterToolDefinitions(definitions, options = {}) {
15
+ const filtered = definitions.filter((def) => {
16
+ if (options.surface) {
17
+ const surfaces = def.surfaces ?? ["mcp", "browser"];
18
+ if (!surfaces.includes(options.surface)) {
19
+ return false;
20
+ }
21
+ }
22
+ if (options.families?.length) {
23
+ if (!options.families.some((f) => def.families.includes(f))) {
24
+ return false;
25
+ }
26
+ }
27
+ if (options.names?.length && !options.names.includes(def.name)) {
28
+ return false;
29
+ }
30
+ if (def.name.startsWith(ESTIMATE_PREFIX) && options.estimateToolsEnabled === false) {
31
+ return false;
32
+ }
33
+ if (options.serverKeyToolsEnabled === false && def.requiresEnv?.length) {
34
+ if (def.requiresEnv.includes("CELO_PRIVATE_KEY") ||
35
+ def.requiresEnv.includes("SELF_AGENT_PRIVATE_KEY")) {
36
+ return false;
37
+ }
38
+ }
39
+ if (options.selfSessionToolsEnabled === false &&
40
+ def.requiresEnv?.includes("SELF_SESSION")) {
41
+ return false;
42
+ }
43
+ return true;
44
+ });
45
+ if (options.serverKeyToolsEnabled === false) {
46
+ return requireExplicitWalletAddresses(filtered);
47
+ }
48
+ return filtered;
49
+ }
50
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/tools/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAG9E,MAAM,eAAe,GAAG,WAAW,CAAC;AAEpC,SAAS,8BAA8B,CACrC,WAA6B;IAE7B,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7B,MAAM,WAAW,GAAG,gCAAgC,CAAC,GAAG,CAAC,WAAW,EAAE;YACpE,QAAQ,EAAE,GAAG,CAAC,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,WAAW,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;YACpC,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,WAA6B,EAC7B,UAA8B,EAAE;IAEhC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;YACnF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,OAAO,CAAC,qBAAqB,KAAK,KAAK,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;YACvE,IACE,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBAC5C,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAClD,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IACE,OAAO,CAAC,uBAAuB,KAAK,KAAK;YACzC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,EACzC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,qBAAqB,KAAK,KAAK,EAAE,CAAC;QAC5C,OAAO,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { ALL_TOOL_DEFINITIONS, getToolNames, getMcpToolNames, getBrowserToolNames, getToolsByFamily, getToolDefinition, validateToolCatalogSnakeCase, assertSnakeCaseRecordKeys, getToolInputSchemaShape, } from "./catalog.js";
2
+ export { filterToolDefinitions } from "./filter.js";
3
+ export { getSwapQuoteWithFallback, prepareSwapWithFallback, type SwapProtocol, type SwapQuoteResult, type SwapPrepareParams, } from "./swap-routing.js";
4
+ export * from "./schemas/common.js";
5
+ export type { FilterToolsOptions, McpToolAnnotations, McpToolMeta, ToolDefinition, ToolFamily, ToolRuntime, ToolRuntimeExecutors, ToolRuntimeHooks, ToolSurface, WalletInput, } from "./types.js";
6
+ export { normalizeRegistryTokenInput } from "./utils/normalize-token.js";
7
+ export { deriveToolAvailability, getHostedMcpToolCount, getHostedMcpToolDefinitions, getHostedMcpToolNames, getMcpToolNameSet, getWebsiteToolBaselines, HOSTED_MCP_FILTER, toWebsiteToolBaseline, TOOL_CATEGORY_BY_NAME, type WebsiteToolAvailability, type WebsiteToolBaseline, type WebsiteToolCategory, type WebsiteToolKind, } from "./website-sync.js";
@@ -0,0 +1,7 @@
1
+ export { ALL_TOOL_DEFINITIONS, getToolNames, getMcpToolNames, getBrowserToolNames, getToolsByFamily, getToolDefinition, validateToolCatalogSnakeCase, assertSnakeCaseRecordKeys, getToolInputSchemaShape, } from "./catalog.js";
2
+ export { filterToolDefinitions } from "./filter.js";
3
+ export { getSwapQuoteWithFallback, prepareSwapWithFallback, } from "./swap-routing.js";
4
+ export * from "./schemas/common.js";
5
+ export { normalizeRegistryTokenInput } from "./utils/normalize-token.js";
6
+ export { deriveToolAvailability, getHostedMcpToolCount, getHostedMcpToolDefinitions, getHostedMcpToolNames, getMcpToolNameSet, getWebsiteToolBaselines, HOSTED_MCP_FILTER, toWebsiteToolBaseline, TOOL_CATEGORY_BY_NAME, } from "./website-sync.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,4BAA4B,EAC5B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GAIxB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AAapC,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,GAKtB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,165 @@
1
+ import { z } from "zod";
2
+ export declare const addressSchema: z.ZodString;
3
+ export declare const optionalWalletAddressSchema: z.ZodOptional<z.ZodString>;
4
+ export declare const requiredWalletAddressSchema: z.ZodString;
5
+ /** Input keys that default to the MCP signer when omitted on local stdio. */
6
+ export declare const WALLET_PARAM_KEYS: readonly ["address", "wallet_address", "from", "from_address"];
7
+ export declare const addressOrEnsSchema: z.ZodString;
8
+ export declare const blockIdSchema: z.ZodEffects<z.ZodUnion<[z.ZodLiteral<"latest">, z.ZodLiteral<"pending">, z.ZodNumber, z.ZodString]>, string | number, unknown>;
9
+ export declare const positiveIntSchema: z.ZodEffects<z.ZodNumber, number, unknown>;
10
+ export declare const optionalPositiveIntSchema: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
11
+ export declare const optionalAgeLiteralSchema: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<18>, z.ZodLiteral<21>]>>, 0 | 18 | 21 | undefined, unknown>;
12
+ export declare const optionalBooleanSchema: z.ZodEffects<z.ZodOptional<z.ZodBoolean>, boolean | undefined, unknown>;
13
+ export declare const optionalStringSchema: z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, unknown>;
14
+ export declare const optionalHexKeySchema: z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, unknown>;
15
+ /** Treat empty form strings as omitted for optional enum fields. */
16
+ export declare function optionalEnumSchema<T extends [string, ...string[]]>(values: T): z.ZodEffects<z.ZodOptional<z.ZodEnum<z.Writeable<T>>>, z.Writeable<T>[number] | undefined, unknown>;
17
+ export declare const nonNegativeIntSchema: z.ZodEffects<z.ZodNumber, number, unknown>;
18
+ export declare const coercedNumberSchema: z.ZodEffects<z.ZodNumber, number, unknown>;
19
+ export declare const slippageToleranceSchema: z.ZodEffects<z.ZodNumber, number, unknown>;
20
+ /** Optional positive integer with an upper bound (e.g. page_size caps). */
21
+ export declare function optionalBoundedPositiveInt(max: number): z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
22
+ /** Optional positive integer with min/max (e.g. get_latest_blocks count). */
23
+ export declare function optionalBoundedPositiveIntRange(min: number, max: number): z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
24
+ export declare const tokenSymbolSchema: z.ZodString;
25
+ export declare const ensNameSchema: z.ZodString;
26
+ export declare const httpRequestPathSchema: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, string, unknown>;
27
+ export declare const tokenIdSchema: z.ZodString;
28
+ export declare const abiSchema: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">;
29
+ export declare const paginationFields: {
30
+ readonly page: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
31
+ readonly page_size: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
32
+ readonly offset: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
33
+ readonly limit: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
34
+ };
35
+ export declare const hexDataSchema: z.ZodOptional<z.ZodString>;
36
+ export declare const mentoFxQuoteSchema: z.ZodObject<{
37
+ token_in: z.ZodString;
38
+ token_out: z.ZodString;
39
+ amount: z.ZodString;
40
+ from: z.ZodOptional<z.ZodString>;
41
+ }, "strip", z.ZodTypeAny, {
42
+ amount: string;
43
+ token_in: string;
44
+ token_out: string;
45
+ from?: string | undefined;
46
+ }, {
47
+ amount: string;
48
+ token_in: string;
49
+ token_out: string;
50
+ from?: string | undefined;
51
+ }>;
52
+ export declare const mentoFxWalletSchema: z.ZodObject<{
53
+ token_in: z.ZodString;
54
+ token_out: z.ZodString;
55
+ amount: z.ZodString;
56
+ from: z.ZodOptional<z.ZodString>;
57
+ } & {
58
+ recipient: z.ZodOptional<z.ZodString>;
59
+ slippage_tolerance: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
60
+ deadline_minutes: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
61
+ }, "strip", z.ZodTypeAny, {
62
+ amount: string;
63
+ token_in: string;
64
+ token_out: string;
65
+ from?: string | undefined;
66
+ recipient?: string | undefined;
67
+ slippage_tolerance?: number | undefined;
68
+ deadline_minutes?: number | undefined;
69
+ }, {
70
+ amount: string;
71
+ token_in: string;
72
+ token_out: string;
73
+ from?: string | undefined;
74
+ recipient?: string | undefined;
75
+ slippage_tolerance?: unknown;
76
+ deadline_minutes?: unknown;
77
+ }>;
78
+ export declare const uniswapQuoteSchema: z.ZodObject<{
79
+ token_in: z.ZodString;
80
+ token_out: z.ZodString;
81
+ amount: z.ZodString;
82
+ from: z.ZodOptional<z.ZodString>;
83
+ }, "strip", z.ZodTypeAny, {
84
+ amount: string;
85
+ token_in: string;
86
+ token_out: string;
87
+ from?: string | undefined;
88
+ }, {
89
+ amount: string;
90
+ token_in: string;
91
+ token_out: string;
92
+ from?: string | undefined;
93
+ }>;
94
+ export declare const uniswapWalletSchema: z.ZodObject<{
95
+ token_in: z.ZodString;
96
+ token_out: z.ZodString;
97
+ amount: z.ZodString;
98
+ from: z.ZodOptional<z.ZodString>;
99
+ } & {
100
+ recipient: z.ZodOptional<z.ZodString>;
101
+ slippage_tolerance: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
102
+ deadline_minutes: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
103
+ }, "strip", z.ZodTypeAny, {
104
+ amount: string;
105
+ token_in: string;
106
+ token_out: string;
107
+ from?: string | undefined;
108
+ recipient?: string | undefined;
109
+ slippage_tolerance?: number | undefined;
110
+ deadline_minutes?: number | undefined;
111
+ }, {
112
+ amount: string;
113
+ token_in: string;
114
+ token_out: string;
115
+ from?: string | undefined;
116
+ recipient?: string | undefined;
117
+ slippage_tolerance?: unknown;
118
+ deadline_minutes?: unknown;
119
+ }>;
120
+ export declare const goodDollarReserveAmountSideSchema: z.ZodDefault<z.ZodOptional<z.ZodEnum<["in", "out"]>>>;
121
+ export declare const goodDollarReserveQuoteSchema: z.ZodObject<{
122
+ token_in: z.ZodString;
123
+ token_out: z.ZodString;
124
+ amount: z.ZodString;
125
+ amount_side: z.ZodDefault<z.ZodOptional<z.ZodEnum<["in", "out"]>>>;
126
+ from: z.ZodOptional<z.ZodString>;
127
+ }, "strip", z.ZodTypeAny, {
128
+ amount: string;
129
+ token_in: string;
130
+ token_out: string;
131
+ amount_side: "in" | "out";
132
+ from?: string | undefined;
133
+ }, {
134
+ amount: string;
135
+ token_in: string;
136
+ token_out: string;
137
+ from?: string | undefined;
138
+ amount_side?: "in" | "out" | undefined;
139
+ }>;
140
+ export declare const goodDollarReserveWalletSchema: z.ZodObject<{
141
+ token_in: z.ZodString;
142
+ token_out: z.ZodString;
143
+ amount: z.ZodString;
144
+ amount_side: z.ZodDefault<z.ZodOptional<z.ZodEnum<["in", "out"]>>>;
145
+ from: z.ZodOptional<z.ZodString>;
146
+ } & {
147
+ recipient: z.ZodOptional<z.ZodString>;
148
+ slippage_tolerance: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
149
+ }, "strip", z.ZodTypeAny, {
150
+ amount: string;
151
+ token_in: string;
152
+ token_out: string;
153
+ amount_side: "in" | "out";
154
+ from?: string | undefined;
155
+ recipient?: string | undefined;
156
+ slippage_tolerance?: number | undefined;
157
+ }, {
158
+ amount: string;
159
+ token_in: string;
160
+ token_out: string;
161
+ from?: string | undefined;
162
+ recipient?: string | undefined;
163
+ slippage_tolerance?: unknown;
164
+ amount_side?: "in" | "out" | undefined;
165
+ }>;
@@ -0,0 +1,207 @@
1
+ import { z } from "zod";
2
+ import { canonicalizeSigningUrl } from "../../utils/self-signing.js";
3
+ export const addressSchema = z
4
+ .string()
5
+ .regex(/^0x[a-fA-F0-9]{40}$/, "Invalid Ethereum address");
6
+ export const optionalWalletAddressSchema = addressSchema
7
+ .optional()
8
+ .describe("Wallet on Celo mainnet. Omit to use the connected wallet or MCP CELO_PRIVATE_KEY signer.");
9
+ export const requiredWalletAddressSchema = addressSchema.describe("Wallet on Celo mainnet (0x address).");
10
+ /** Input keys that default to the MCP signer when omitted on local stdio. */
11
+ export const WALLET_PARAM_KEYS = [
12
+ "address",
13
+ "wallet_address",
14
+ "from",
15
+ "from_address",
16
+ ];
17
+ export const addressOrEnsSchema = z
18
+ .string()
19
+ .min(3)
20
+ .describe("Recipient 0x address or ENS name (e.g. andrewkimjoseph.celo.eth, celina.eth)");
21
+ function normalizeBlockId(value) {
22
+ if (typeof value === "string") {
23
+ const trimmed = value.trim();
24
+ if (trimmed === "latest" || trimmed === "pending") {
25
+ return trimmed;
26
+ }
27
+ if (/^\d+$/.test(trimmed)) {
28
+ return Number(trimmed);
29
+ }
30
+ return trimmed;
31
+ }
32
+ return value;
33
+ }
34
+ function normalizeOptionalEmpty(value) {
35
+ if (value === "" || value === null) {
36
+ return undefined;
37
+ }
38
+ return value;
39
+ }
40
+ function normalizePositiveInt(value) {
41
+ if (typeof value === "string") {
42
+ const trimmed = value.trim();
43
+ if (trimmed === "") {
44
+ return undefined;
45
+ }
46
+ if (/^\d+$/.test(trimmed)) {
47
+ return Number(trimmed);
48
+ }
49
+ return trimmed;
50
+ }
51
+ return value;
52
+ }
53
+ function normalizeOptionalBoolean(value) {
54
+ const empty = normalizeOptionalEmpty(value);
55
+ if (empty === undefined) {
56
+ return undefined;
57
+ }
58
+ if (typeof empty === "string") {
59
+ const trimmed = empty.trim().toLowerCase();
60
+ if (trimmed === "true" || trimmed === "1") {
61
+ return true;
62
+ }
63
+ if (trimmed === "false" || trimmed === "0") {
64
+ return false;
65
+ }
66
+ }
67
+ return empty;
68
+ }
69
+ function normalizeAgeLiteral(value) {
70
+ const empty = normalizeOptionalEmpty(value);
71
+ if (empty === undefined) {
72
+ return undefined;
73
+ }
74
+ if (typeof empty === "string") {
75
+ const trimmed = empty.trim();
76
+ if (trimmed === "") {
77
+ return undefined;
78
+ }
79
+ if (/^\d+$/.test(trimmed)) {
80
+ return Number(trimmed);
81
+ }
82
+ }
83
+ return empty;
84
+ }
85
+ function normalizeDecimalNumber(value) {
86
+ if (typeof value === "string") {
87
+ const trimmed = value.trim();
88
+ if (/^-?\d+(\.\d+)?$/.test(trimmed)) {
89
+ return Number(trimmed);
90
+ }
91
+ return trimmed;
92
+ }
93
+ return value;
94
+ }
95
+ export const blockIdSchema = z.preprocess(normalizeBlockId, z.union([
96
+ z.literal("latest"),
97
+ z.literal("pending"),
98
+ z.number().int().nonnegative(),
99
+ z.string().regex(/^0x[a-fA-F0-9]+$/, "Invalid block hash"),
100
+ ]));
101
+ export const positiveIntSchema = z.preprocess(normalizePositiveInt, z.number().int().positive());
102
+ export const optionalPositiveIntSchema = z.preprocess(normalizePositiveInt, z.number().int().positive().optional());
103
+ export const optionalAgeLiteralSchema = z.preprocess(normalizeAgeLiteral, z.union([z.literal(0), z.literal(18), z.literal(21)]).optional());
104
+ export const optionalBooleanSchema = z.preprocess(normalizeOptionalBoolean, z.boolean().optional());
105
+ export const optionalStringSchema = z.preprocess(normalizeOptionalEmpty, z.string().optional());
106
+ export const optionalHexKeySchema = z.preprocess(normalizeOptionalEmpty, z.string().regex(/^0x[a-fA-F0-9]+$/).optional());
107
+ /** Treat empty form strings as omitted for optional enum fields. */
108
+ export function optionalEnumSchema(values) {
109
+ return z.preprocess(normalizeOptionalEmpty, z.enum(values).optional());
110
+ }
111
+ export const nonNegativeIntSchema = z.preprocess(normalizePositiveInt, z.number().int().min(0));
112
+ export const coercedNumberSchema = z.preprocess(normalizeDecimalNumber, z.number());
113
+ export const slippageToleranceSchema = z.preprocess(normalizeDecimalNumber, z.number().min(0).max(20));
114
+ /** Optional positive integer with an upper bound (e.g. page_size caps). */
115
+ export function optionalBoundedPositiveInt(max) {
116
+ return z
117
+ .preprocess(normalizePositiveInt, z.number().int().min(1).max(max))
118
+ .optional();
119
+ }
120
+ /** Optional positive integer with min/max (e.g. get_latest_blocks count). */
121
+ export function optionalBoundedPositiveIntRange(min, max) {
122
+ return z
123
+ .preprocess(normalizePositiveInt, z.number().int().min(min).max(max))
124
+ .optional();
125
+ }
126
+ export const tokenSymbolSchema = z
127
+ .string()
128
+ .describe("Celo mainnet token symbol (e.g. CELO, USDm, USDC, USDT)");
129
+ export const ensNameSchema = z
130
+ .string()
131
+ .min(3)
132
+ .describe("ENS name, e.g. celina.eth or andrewkimjoseph.celo.eth");
133
+ function normalizeHttpRequestPath(value) {
134
+ if (typeof value === "string") {
135
+ return value.trim();
136
+ }
137
+ return value;
138
+ }
139
+ export const httpRequestPathSchema = z.preprocess(normalizeHttpRequestPath, z
140
+ .string()
141
+ .min(1)
142
+ .refine((s) => !s.includes(".."), "HTTP request path must not contain '..'")
143
+ .transform((s) => canonicalizeSigningUrl(s))
144
+ .describe("HTTP request path or URL path+query that was signed — not a filesystem path."));
145
+ export const tokenIdSchema = z.string().describe("NFT token ID (decimal string)");
146
+ export const abiSchema = z
147
+ .array(z.record(z.unknown()))
148
+ .min(1)
149
+ .describe("Contract ABI as a JSON array");
150
+ export const paginationFields = {
151
+ page: positiveIntSchema.optional(),
152
+ page_size: positiveIntSchema.optional(),
153
+ offset: nonNegativeIntSchema.optional(),
154
+ limit: positiveIntSchema.optional(),
155
+ };
156
+ export const hexDataSchema = z
157
+ .string()
158
+ .regex(/^0x[a-fA-F0-9]*$/)
159
+ .optional()
160
+ .describe("Optional transaction calldata (hex)");
161
+ export const mentoFxQuoteSchema = z.object({
162
+ token_in: tokenSymbolSchema.describe("Input token symbol or address"),
163
+ token_out: tokenSymbolSchema.describe("Output token symbol or address"),
164
+ amount: z.string().describe("Human-readable amount of token_in, e.g. 100"),
165
+ from: optionalWalletAddressSchema,
166
+ });
167
+ export const mentoFxWalletSchema = mentoFxQuoteSchema.extend({
168
+ recipient: addressSchema
169
+ .optional()
170
+ .describe("Address that receives output tokens (defaults to signer)"),
171
+ slippage_tolerance: slippageToleranceSchema
172
+ .optional()
173
+ .describe("Max slippage in percent (default 0.5)"),
174
+ deadline_minutes: positiveIntSchema
175
+ .optional()
176
+ .describe("Transaction deadline in minutes (default 5)"),
177
+ });
178
+ export const uniswapQuoteSchema = z.object({
179
+ token_in: tokenSymbolSchema,
180
+ token_out: tokenSymbolSchema,
181
+ amount: z.string().describe("Human-readable amount of token_in"),
182
+ from: optionalWalletAddressSchema,
183
+ });
184
+ export const uniswapWalletSchema = uniswapQuoteSchema.extend({
185
+ recipient: addressSchema.optional(),
186
+ slippage_tolerance: slippageToleranceSchema.optional(),
187
+ deadline_minutes: positiveIntSchema.optional(),
188
+ });
189
+ export const goodDollarReserveAmountSideSchema = z
190
+ .enum(["in", "out"])
191
+ .optional()
192
+ .default("in")
193
+ .describe("'in': amount is token_in spend (default). 'out': amount is desired token_out receive amount.");
194
+ export const goodDollarReserveQuoteSchema = z.object({
195
+ token_in: tokenSymbolSchema.describe("GoodDollar or G$"),
196
+ token_out: tokenSymbolSchema.describe("USDm or cUSD"),
197
+ amount: z
198
+ .string()
199
+ .describe("Human-readable amount; paired with amount_side (in = spend, out = receive)"),
200
+ amount_side: goodDollarReserveAmountSideSchema,
201
+ from: optionalWalletAddressSchema,
202
+ });
203
+ export const goodDollarReserveWalletSchema = goodDollarReserveQuoteSchema.extend({
204
+ recipient: addressSchema.optional(),
205
+ slippage_tolerance: slippageToleranceSchema.optional(),
206
+ });
207
+ //# sourceMappingURL=common.js.map