@andrewkimjoseph/celina-sdk 0.9.7 → 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 (365) hide show
  1. package/build/analytics/mcp-tool-events.js +2 -0
  2. package/build/analytics/mcp-tool-events.js.map +1 -1
  3. package/build/index.d.ts +1 -1
  4. package/build/services/gooddollar.service.d.ts +16 -2
  5. package/build/services/gooddollar.service.js +54 -31
  6. package/build/services/gooddollar.service.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 +101 -0
  15. package/build/src/a2a/skills.js.map +1 -0
  16. package/build/src/abis/aave-pool.d.ts +37 -0
  17. package/build/src/abis/aave-pool.js +26 -0
  18. package/build/src/abis/aave-pool.js.map +1 -0
  19. package/build/src/abis/accounts.d.ts +13 -0
  20. package/build/src/abis/accounts.js +10 -0
  21. package/build/src/abis/accounts.js.map +1 -0
  22. package/build/src/abis/election.d.ts +124 -0
  23. package/build/src/abis/election.js +88 -0
  24. package/build/src/abis/election.js.map +1 -0
  25. package/build/src/abis/gooddollar-broker.d.ts +77 -0
  26. package/build/src/abis/gooddollar-broker.js +44 -0
  27. package/build/src/abis/gooddollar-broker.js.map +1 -0
  28. package/build/src/abis/gooddollar-identity.d.ts +85 -0
  29. package/build/src/abis/gooddollar-identity.js +52 -0
  30. package/build/src/abis/gooddollar-identity.js.map +1 -0
  31. package/build/src/abis/governance.d.ts +86 -0
  32. package/build/src/abis/governance.js +68 -0
  33. package/build/src/abis/governance.js.map +1 -0
  34. package/build/src/abis/locked-gold.d.ts +10 -0
  35. package/build/src/abis/locked-gold.js +10 -0
  36. package/build/src/abis/locked-gold.js.map +1 -0
  37. package/build/src/abis/nft.d.ts +107 -0
  38. package/build/src/abis/nft.js +75 -0
  39. package/build/src/abis/nft.js.map +1 -0
  40. package/build/src/abis/permit2.d.ts +43 -0
  41. package/build/src/abis/permit2.js +30 -0
  42. package/build/src/abis/permit2.js.map +1 -0
  43. package/build/src/abis/self-registry.d.ts +194 -0
  44. package/build/src/abis/self-registry.js +120 -0
  45. package/build/src/abis/self-registry.js.map +1 -0
  46. package/build/src/abis/ubi-scheme.d.ts +91 -0
  47. package/build/src/abis/ubi-scheme.js +66 -0
  48. package/build/src/abis/ubi-scheme.js.map +1 -0
  49. package/build/src/abis/uniswap-state-view.d.ts +34 -0
  50. package/build/src/abis/uniswap-state-view.js +22 -0
  51. package/build/src/abis/uniswap-state-view.js.map +1 -0
  52. package/build/src/abis/uniswap-v4-quoter.d.ts +86 -0
  53. package/build/src/abis/uniswap-v4-quoter.js +64 -0
  54. package/build/src/abis/uniswap-v4-quoter.js.map +1 -0
  55. package/build/src/abis/universal-router.d.ts +16 -0
  56. package/build/src/abis/universal-router.js +14 -0
  57. package/build/src/abis/universal-router.js.map +1 -0
  58. package/build/src/abis/validators-minimal.d.ts +65 -0
  59. package/build/src/abis/validators-minimal.js +39 -0
  60. package/build/src/abis/validators-minimal.js.map +1 -0
  61. package/build/src/analytics/amplitude.d.ts +11 -0
  62. package/build/src/analytics/amplitude.js +76 -0
  63. package/build/src/analytics/amplitude.js.map +1 -0
  64. package/build/src/analytics/config.d.ts +7 -0
  65. package/build/src/analytics/config.js +28 -0
  66. package/build/src/analytics/config.js.map +1 -0
  67. package/build/src/analytics/consumer-package.d.ts +9 -0
  68. package/build/src/analytics/consumer-package.js +143 -0
  69. package/build/src/analytics/consumer-package.js.map +1 -0
  70. package/build/src/analytics/mcp-tool-events.d.ts +5 -0
  71. package/build/src/analytics/mcp-tool-events.js +53 -0
  72. package/build/src/analytics/mcp-tool-events.js.map +1 -0
  73. package/build/src/analytics/wallet-context.d.ts +11 -0
  74. package/build/src/analytics/wallet-context.js +81 -0
  75. package/build/src/analytics/wallet-context.js.map +1 -0
  76. package/build/src/analytics/wallet-extract.d.ts +9 -0
  77. package/build/src/analytics/wallet-extract.js +21 -0
  78. package/build/src/analytics/wallet-extract.js.map +1 -0
  79. package/build/src/analytics/wrap-service.d.ts +5 -0
  80. package/build/src/analytics/wrap-service.js +38 -0
  81. package/build/src/analytics/wrap-service.js.map +1 -0
  82. package/build/src/clients/celo-client.d.ts +17 -0
  83. package/build/src/clients/celo-client.js +28 -0
  84. package/build/src/clients/celo-client.js.map +1 -0
  85. package/build/src/clients/ens-client.d.ts +17 -0
  86. package/build/src/clients/ens-client.js +30 -0
  87. package/build/src/clients/ens-client.js.map +1 -0
  88. package/build/src/clients/mento-sdk.d.ts +2 -0
  89. package/build/src/clients/mento-sdk.js +9 -0
  90. package/build/src/clients/mento-sdk.js.map +1 -0
  91. package/build/src/clients/self-api.d.ts +82 -0
  92. package/build/src/clients/self-api.js +242 -0
  93. package/build/src/clients/self-api.js.map +1 -0
  94. package/build/src/clients/uniswap-sdk.d.ts +4 -0
  95. package/build/src/clients/uniswap-sdk.js +13 -0
  96. package/build/src/clients/uniswap-sdk.js.map +1 -0
  97. package/build/src/config/aave.d.ts +17 -0
  98. package/build/src/config/aave.js +77 -0
  99. package/build/src/config/aave.js.map +1 -0
  100. package/build/src/config/celina-tag.d.ts +4 -0
  101. package/build/src/config/celina-tag.js +13 -0
  102. package/build/src/config/celina-tag.js.map +1 -0
  103. package/build/src/config/celo-core-contracts.d.ts +8 -0
  104. package/build/src/config/celo-core-contracts.js +9 -0
  105. package/build/src/config/celo-core-contracts.js.map +1 -0
  106. package/build/src/config/chains.d.ts +937 -0
  107. package/build/src/config/chains.js +319 -0
  108. package/build/src/config/chains.js.map +1 -0
  109. package/build/src/config/gooddollar.d.ts +16 -0
  110. package/build/src/config/gooddollar.js +24 -0
  111. package/build/src/config/gooddollar.js.map +1 -0
  112. package/build/src/config/sdk-config.d.ts +33 -0
  113. package/build/src/config/sdk-config.js +31 -0
  114. package/build/src/config/sdk-config.js.map +1 -0
  115. package/build/src/config/self.d.ts +22 -0
  116. package/build/src/config/self.js +27 -0
  117. package/build/src/config/self.js.map +1 -0
  118. package/build/src/config/uniswap.d.ts +42 -0
  119. package/build/src/config/uniswap.js +76 -0
  120. package/build/src/config/uniswap.js.map +1 -0
  121. package/build/src/index.d.ts +90 -0
  122. package/build/src/index.js +65 -0
  123. package/build/src/index.js.map +1 -0
  124. package/build/src/oasf/index.d.ts +2 -0
  125. package/build/src/oasf/index.js +3 -0
  126. package/build/src/oasf/index.js.map +1 -0
  127. package/build/src/oasf/record.d.ts +39 -0
  128. package/build/src/oasf/record.js +35 -0
  129. package/build/src/oasf/record.js.map +1 -0
  130. package/build/src/oasf/taxonomy.d.ts +19 -0
  131. package/build/src/oasf/taxonomy.js +46 -0
  132. package/build/src/oasf/taxonomy.js.map +1 -0
  133. package/build/src/services/aave.service.d.ts +58 -0
  134. package/build/src/services/aave.service.js +210 -0
  135. package/build/src/services/aave.service.js.map +1 -0
  136. package/build/src/services/account.service.d.ts +22 -0
  137. package/build/src/services/account.service.js +29 -0
  138. package/build/src/services/account.service.js.map +1 -0
  139. package/build/src/services/blockchain.service.d.ts +107 -0
  140. package/build/src/services/blockchain.service.js +151 -0
  141. package/build/src/services/blockchain.service.js.map +1 -0
  142. package/build/src/services/contract.service.d.ts +78 -0
  143. package/build/src/services/contract.service.js +117 -0
  144. package/build/src/services/contract.service.js.map +1 -0
  145. package/build/src/services/ens.service.d.ts +44 -0
  146. package/build/src/services/ens.service.js +92 -0
  147. package/build/src/services/ens.service.js.map +1 -0
  148. package/build/src/services/gooddollar.service.d.ts +183 -0
  149. package/build/src/services/gooddollar.service.js +675 -0
  150. package/build/src/services/gooddollar.service.js.map +1 -0
  151. package/build/src/services/governance.service.d.ts +96 -0
  152. package/build/src/services/governance.service.js +255 -0
  153. package/build/src/services/governance.service.js.map +1 -0
  154. package/build/src/services/mento-fx.service.d.ts +80 -0
  155. package/build/src/services/mento-fx.service.js +319 -0
  156. package/build/src/services/mento-fx.service.js.map +1 -0
  157. package/build/src/services/nft.service.d.ts +58 -0
  158. package/build/src/services/nft.service.js +222 -0
  159. package/build/src/services/nft.service.js.map +1 -0
  160. package/build/src/services/self-session-store.d.ts +19 -0
  161. package/build/src/services/self-session-store.js +28 -0
  162. package/build/src/services/self-session-store.js.map +1 -0
  163. package/build/src/services/self.service.d.ts +241 -0
  164. package/build/src/services/self.service.js +699 -0
  165. package/build/src/services/self.service.js.map +1 -0
  166. package/build/src/services/staking.service.d.ts +140 -0
  167. package/build/src/services/staking.service.js +444 -0
  168. package/build/src/services/staking.service.js.map +1 -0
  169. package/build/src/services/token.service.d.ts +110 -0
  170. package/build/src/services/token.service.js +189 -0
  171. package/build/src/services/token.service.js.map +1 -0
  172. package/build/src/services/transaction.service.d.ts +68 -0
  173. package/build/src/services/transaction.service.js +198 -0
  174. package/build/src/services/transaction.service.js.map +1 -0
  175. package/build/src/services/uniswap-path-router.d.ts +40 -0
  176. package/build/src/services/uniswap-path-router.js +168 -0
  177. package/build/src/services/uniswap-path-router.js.map +1 -0
  178. package/build/src/services/uniswap-pool-discovery.d.ts +55 -0
  179. package/build/src/services/uniswap-pool-discovery.js +198 -0
  180. package/build/src/services/uniswap-pool-discovery.js.map +1 -0
  181. package/build/src/services/uniswap.service.d.ts +82 -0
  182. package/build/src/services/uniswap.service.js +352 -0
  183. package/build/src/services/uniswap.service.js.map +1 -0
  184. package/build/src/simulation/index.d.ts +5 -0
  185. package/build/src/simulation/index.js +2 -0
  186. package/build/src/simulation/index.js.map +1 -0
  187. package/build/src/simulation/simulate-prepared-step.d.ts +17 -0
  188. package/build/src/simulation/simulate-prepared-step.js +42 -0
  189. package/build/src/simulation/simulate-prepared-step.js.map +1 -0
  190. package/build/src/tools/catalog.d.ts +11 -0
  191. package/build/src/tools/catalog.js +43 -0
  192. package/build/src/tools/catalog.js.map +1 -0
  193. package/build/src/tools/domains/aave.d.ts +2 -0
  194. package/build/src/tools/domains/aave.js +115 -0
  195. package/build/src/tools/domains/aave.js.map +1 -0
  196. package/build/src/tools/domains/blockchain.d.ts +2 -0
  197. package/build/src/tools/domains/blockchain.js +86 -0
  198. package/build/src/tools/domains/blockchain.js.map +1 -0
  199. package/build/src/tools/domains/browser.d.ts +2 -0
  200. package/build/src/tools/domains/browser.js +45 -0
  201. package/build/src/tools/domains/browser.js.map +1 -0
  202. package/build/src/tools/domains/contract.d.ts +2 -0
  203. package/build/src/tools/domains/contract.js +67 -0
  204. package/build/src/tools/domains/contract.js.map +1 -0
  205. package/build/src/tools/domains/ens.d.ts +2 -0
  206. package/build/src/tools/domains/ens.js +16 -0
  207. package/build/src/tools/domains/ens.js.map +1 -0
  208. package/build/src/tools/domains/gooddollar.d.ts +2 -0
  209. package/build/src/tools/domains/gooddollar.js +171 -0
  210. package/build/src/tools/domains/gooddollar.js.map +1 -0
  211. package/build/src/tools/domains/governance.d.ts +2 -0
  212. package/build/src/tools/domains/governance.js +41 -0
  213. package/build/src/tools/domains/governance.js.map +1 -0
  214. package/build/src/tools/domains/index.d.ts +1 -0
  215. package/build/src/tools/domains/index.js +31 -0
  216. package/build/src/tools/domains/index.js.map +1 -0
  217. package/build/src/tools/domains/mento-fx.d.ts +2 -0
  218. package/build/src/tools/domains/mento-fx.js +67 -0
  219. package/build/src/tools/domains/mento-fx.js.map +1 -0
  220. package/build/src/tools/domains/nft.d.ts +2 -0
  221. package/build/src/tools/domains/nft.js +38 -0
  222. package/build/src/tools/domains/nft.js.map +1 -0
  223. package/build/src/tools/domains/self.d.ts +2 -0
  224. package/build/src/tools/domains/self.js +187 -0
  225. package/build/src/tools/domains/self.js.map +1 -0
  226. package/build/src/tools/domains/staking.d.ts +2 -0
  227. package/build/src/tools/domains/staking.js +74 -0
  228. package/build/src/tools/domains/staking.js.map +1 -0
  229. package/build/src/tools/domains/token.d.ts +2 -0
  230. package/build/src/tools/domains/token.js +74 -0
  231. package/build/src/tools/domains/token.js.map +1 -0
  232. package/build/src/tools/domains/transaction.d.ts +2 -0
  233. package/build/src/tools/domains/transaction.js +120 -0
  234. package/build/src/tools/domains/transaction.js.map +1 -0
  235. package/build/src/tools/domains/uniswap.d.ts +2 -0
  236. package/build/src/tools/domains/uniswap.js +67 -0
  237. package/build/src/tools/domains/uniswap.js.map +1 -0
  238. package/build/src/tools/filter.d.ts +2 -0
  239. package/build/src/tools/filter.js +50 -0
  240. package/build/src/tools/filter.js.map +1 -0
  241. package/build/src/tools/index.d.ts +7 -0
  242. package/build/src/tools/index.js +7 -0
  243. package/build/src/tools/index.js.map +1 -0
  244. package/build/src/tools/schemas/common.d.ts +165 -0
  245. package/build/src/tools/schemas/common.js +207 -0
  246. package/build/src/tools/schemas/common.js.map +1 -0
  247. package/build/src/tools/schemas/wallet-params.d.ts +9 -0
  248. package/build/src/tools/schemas/wallet-params.js +52 -0
  249. package/build/src/tools/schemas/wallet-params.js.map +1 -0
  250. package/build/src/tools/swap-routing.d.ts +25 -0
  251. package/build/src/tools/swap-routing.js +174 -0
  252. package/build/src/tools/swap-routing.js.map +1 -0
  253. package/build/src/tools/types.d.ts +124 -0
  254. package/build/src/tools/types.js +2 -0
  255. package/build/src/tools/types.js.map +1 -0
  256. package/build/src/tools/utils/normalize-token.d.ts +2 -0
  257. package/build/src/tools/utils/normalize-token.js +12 -0
  258. package/build/src/tools/utils/normalize-token.js.map +1 -0
  259. package/build/src/tools/utils/wallet.d.ts +4 -0
  260. package/build/src/tools/utils/wallet.js +8 -0
  261. package/build/src/tools/utils/wallet.js.map +1 -0
  262. package/build/src/tools/website-sync.d.ts +28 -0
  263. package/build/src/tools/website-sync.js +165 -0
  264. package/build/src/tools/website-sync.js.map +1 -0
  265. package/build/src/types/prepared.d.ts +28 -0
  266. package/build/src/types/prepared.js +12 -0
  267. package/build/src/types/prepared.js.map +1 -0
  268. package/build/src/utils/celo-format.d.ts +6 -0
  269. package/build/src/utils/celo-format.js +17 -0
  270. package/build/src/utils/celo-format.js.map +1 -0
  271. package/build/src/utils/erc20-allowance-storage.d.ts +20 -0
  272. package/build/src/utils/erc20-allowance-storage.js +64 -0
  273. package/build/src/utils/erc20-allowance-storage.js.map +1 -0
  274. package/build/src/utils/format-date.d.ts +2 -0
  275. package/build/src/utils/format-date.js +13 -0
  276. package/build/src/utils/format-date.js.map +1 -0
  277. package/build/src/utils/format-duration.d.ts +2 -0
  278. package/build/src/utils/format-duration.js +17 -0
  279. package/build/src/utils/format-duration.js.map +1 -0
  280. package/build/src/utils/format-unix-datetime.d.ts +4 -0
  281. package/build/src/utils/format-unix-datetime.js +18 -0
  282. package/build/src/utils/format-unix-datetime.js.map +1 -0
  283. package/build/src/utils/gooddollar-ubi-period.d.ts +23 -0
  284. package/build/src/utils/gooddollar-ubi-period.js +23 -0
  285. package/build/src/utils/gooddollar-ubi-period.js.map +1 -0
  286. package/build/src/utils/normalize-address.d.ts +7 -0
  287. package/build/src/utils/normalize-address.js +16 -0
  288. package/build/src/utils/normalize-address.js.map +1 -0
  289. package/build/src/utils/self-format.d.ts +28 -0
  290. package/build/src/utils/self-format.js +79 -0
  291. package/build/src/utils/self-format.js.map +1 -0
  292. package/build/src/utils/self-signing.d.ts +4 -0
  293. package/build/src/utils/self-signing.js +38 -0
  294. package/build/src/utils/self-signing.js.map +1 -0
  295. package/build/src/utils/transaction-errors.d.ts +3 -0
  296. package/build/src/utils/transaction-errors.js +17 -0
  297. package/build/src/utils/transaction-errors.js.map +1 -0
  298. package/build/tests/catalog/domains/blockchain.d.ts +2 -0
  299. package/build/tests/catalog/domains/blockchain.js +127 -0
  300. package/build/tests/catalog/domains/blockchain.js.map +1 -0
  301. package/build/tests/catalog/domains/chain-ext.d.ts +5 -0
  302. package/build/tests/catalog/domains/chain-ext.js +207 -0
  303. package/build/tests/catalog/domains/chain-ext.js.map +1 -0
  304. package/build/tests/catalog/domains/defi.d.ts +6 -0
  305. package/build/tests/catalog/domains/defi.js +581 -0
  306. package/build/tests/catalog/domains/defi.js.map +1 -0
  307. package/build/tests/catalog/domains/self.d.ts +2 -0
  308. package/build/tests/catalog/domains/self.js +208 -0
  309. package/build/tests/catalog/domains/self.js.map +1 -0
  310. package/build/tests/catalog/domains/token.d.ts +2 -0
  311. package/build/tests/catalog/domains/token.js +70 -0
  312. package/build/tests/catalog/domains/token.js.map +1 -0
  313. package/build/tests/catalog/domains/transaction.d.ts +2 -0
  314. package/build/tests/catalog/domains/transaction.js +96 -0
  315. package/build/tests/catalog/domains/transaction.js.map +1 -0
  316. package/build/tests/catalog/index.d.ts +2 -0
  317. package/build/tests/catalog/index.js +2 -0
  318. package/build/tests/catalog/index.js.map +1 -0
  319. package/build/tests/catalog/operations.d.ts +12 -0
  320. package/build/tests/catalog/operations.js +29 -0
  321. package/build/tests/catalog/operations.js.map +1 -0
  322. package/build/tests/catalog/types.d.ts +24 -0
  323. package/build/tests/catalog/types.js +2 -0
  324. package/build/tests/catalog/types.js.map +1 -0
  325. package/build/tests/fixtures/mainnet.d.ts +54 -0
  326. package/build/tests/fixtures/mainnet.js +53 -0
  327. package/build/tests/fixtures/mainnet.js.map +1 -0
  328. package/build/tests/helpers/assert.d.ts +4 -0
  329. package/build/tests/helpers/assert.js +24 -0
  330. package/build/tests/helpers/assert.js.map +1 -0
  331. package/build/tests/helpers/env.d.ts +11 -0
  332. package/build/tests/helpers/env.js +28 -0
  333. package/build/tests/helpers/env.js.map +1 -0
  334. package/build/tests/helpers/gating.d.ts +3 -0
  335. package/build/tests/helpers/gating.js +23 -0
  336. package/build/tests/helpers/gating.js.map +1 -0
  337. package/build/tests/testing-entry.d.ts +6 -0
  338. package/build/tests/testing-entry.js +6 -0
  339. package/build/tests/testing-entry.js.map +1 -0
  340. package/build/tools/domains/browser.js +4 -1
  341. package/build/tools/domains/browser.js.map +1 -1
  342. package/build/tools/domains/gooddollar.js +11 -7
  343. package/build/tools/domains/gooddollar.js.map +1 -1
  344. package/build/tools/schemas/common.d.ts +7 -0
  345. package/build/tools/schemas/common.js +9 -1
  346. package/build/tools/schemas/common.js.map +1 -1
  347. package/build/tools/swap-routing.d.ts +1 -0
  348. package/build/tools/swap-routing.js +2 -1
  349. package/build/tools/swap-routing.js.map +1 -1
  350. package/package.json +5 -9
  351. package/tests/README.md +0 -78
  352. package/tests/catalog/domains/blockchain.ts +0 -133
  353. package/tests/catalog/domains/chain-ext.ts +0 -219
  354. package/tests/catalog/domains/defi.ts +0 -532
  355. package/tests/catalog/domains/self.ts +0 -220
  356. package/tests/catalog/domains/token.ts +0 -74
  357. package/tests/catalog/domains/transaction.ts +0 -111
  358. package/tests/catalog/index.ts +0 -7
  359. package/tests/catalog/operations.ts +0 -53
  360. package/tests/catalog/types.ts +0 -27
  361. package/tests/fixtures/mainnet.ts +0 -93
  362. package/tests/helpers/assert.ts +0 -30
  363. package/tests/helpers/env.ts +0 -38
  364. package/tests/helpers/gating.ts +0 -36
  365. package/tests/testing-entry.ts +0 -27
@@ -0,0 +1,174 @@
1
+ import { isGoodDollarUsdReservePair } from "../config/gooddollar.js";
2
+ function parseExpectedOut(value) {
3
+ const n = Number(value.replace(/,/g, ""));
4
+ return Number.isFinite(n) ? n : 0;
5
+ }
6
+ function isMentoMarketClosedError(message) {
7
+ return /mento fx market is currently closed/i.test(message);
8
+ }
9
+ function isMentoRouteError(message) {
10
+ return /no mento fx route/i.test(message);
11
+ }
12
+ function isUniswapRouteError(message) {
13
+ return /no uniswap v4 route|insufficient liquidity in uniswap v4/i.test(message);
14
+ }
15
+ function isGoodDollarReserveRouteError(message) {
16
+ return /no gooddollar reserve route/i.test(message);
17
+ }
18
+ function isInsufficientBalanceError(message) {
19
+ return /insufficient .+ balance/i.test(message);
20
+ }
21
+ function rejectionMessage(reason) {
22
+ return reason instanceof Error ? reason.message : String(reason);
23
+ }
24
+ function filterAlternatives(best, others) {
25
+ if (best.protocol !== "gooddollar_reserve") {
26
+ return others;
27
+ }
28
+ const bestOut = parseExpectedOut(best.expectedOut);
29
+ if (bestOut <= 0) {
30
+ return others;
31
+ }
32
+ return others.filter((alt) => {
33
+ if (alt.protocol !== "uniswap_v4" || alt.error) {
34
+ return true;
35
+ }
36
+ const altOut = parseExpectedOut(alt.expectedOut);
37
+ return altOut >= bestOut * 0.95;
38
+ });
39
+ }
40
+ async function tryMentoQuote(celina, tokenIn, tokenOut, amount, from) {
41
+ const quote = await celina.mentoFx.getFxQuote(tokenIn, tokenOut, amount, from);
42
+ return {
43
+ protocol: "mento_fx",
44
+ tokenIn: quote.tokenIn,
45
+ tokenOut: quote.tokenOut,
46
+ amountIn: quote.amountIn,
47
+ expectedOut: quote.expectedOut,
48
+ routeHops: quote.routeHops,
49
+ network: quote.network,
50
+ };
51
+ }
52
+ async function tryUniswapQuote(celina, tokenIn, tokenOut, amount, from) {
53
+ const quote = await celina.uniswap.getSwapQuote(tokenIn, tokenOut, amount, from);
54
+ return {
55
+ protocol: "uniswap_v4",
56
+ tokenIn: quote.tokenIn,
57
+ tokenOut: quote.tokenOut,
58
+ amountIn: quote.amountIn,
59
+ expectedOut: quote.expectedOut,
60
+ routeHops: quote.routeHops,
61
+ network: quote.network,
62
+ };
63
+ }
64
+ async function tryGoodDollarReserveQuote(celina, tokenIn, tokenOut, amount, from) {
65
+ const quote = await celina.gooddollar.getReserveQuote(tokenIn, tokenOut, amount, { from });
66
+ return {
67
+ protocol: "gooddollar_reserve",
68
+ tokenIn: quote.tokenIn,
69
+ tokenOut: quote.tokenOut,
70
+ amountIn: quote.amountIn,
71
+ expectedOut: quote.expectedOut,
72
+ routeHops: quote.routeHops,
73
+ network: quote.network,
74
+ };
75
+ }
76
+ /** Quote a swap across Mento FX, GoodDollar reserve, and Uniswap v4; returns the best route. */
77
+ export async function getSwapQuoteWithFallback(celina, tokenIn, tokenOut, amount, from) {
78
+ const reserveEligible = isGoodDollarUsdReservePair(tokenIn, tokenOut);
79
+ const quoteTasks = [
80
+ tryMentoQuote(celina, tokenIn, tokenOut, amount, from),
81
+ tryUniswapQuote(celina, tokenIn, tokenOut, amount, from),
82
+ ];
83
+ if (reserveEligible) {
84
+ quoteTasks.push(tryGoodDollarReserveQuote(celina, tokenIn, tokenOut, amount, from));
85
+ }
86
+ const results = await Promise.allSettled(quoteTasks);
87
+ const mentoResult = results[0];
88
+ const uniswapResult = results[1];
89
+ const reserveResult = reserveEligible ? results[2] : undefined;
90
+ const successes = [];
91
+ const alternatives = [];
92
+ if (mentoResult.status === "fulfilled") {
93
+ successes.push(mentoResult.value);
94
+ }
95
+ else {
96
+ const message = rejectionMessage(mentoResult.reason);
97
+ if (!isMentoRouteError(message)) {
98
+ alternatives.push({ protocol: "mento_fx", expectedOut: "0", error: message });
99
+ }
100
+ }
101
+ if (uniswapResult.status === "fulfilled") {
102
+ successes.push(uniswapResult.value);
103
+ }
104
+ else {
105
+ const message = rejectionMessage(uniswapResult.reason);
106
+ if (!isUniswapRouteError(message)) {
107
+ alternatives.push({ protocol: "uniswap_v4", expectedOut: "0", error: message });
108
+ }
109
+ }
110
+ if (reserveResult) {
111
+ if (reserveResult.status === "fulfilled") {
112
+ successes.push(reserveResult.value);
113
+ }
114
+ else {
115
+ const message = rejectionMessage(reserveResult.reason);
116
+ if (!isGoodDollarReserveRouteError(message)) {
117
+ alternatives.push({
118
+ protocol: "gooddollar_reserve",
119
+ expectedOut: "0",
120
+ error: message,
121
+ });
122
+ }
123
+ }
124
+ }
125
+ if (successes.length === 0) {
126
+ const failures = results
127
+ .filter((result) => result.status === "rejected")
128
+ .map((result) => rejectionMessage(result.reason));
129
+ const balanceError = failures.find(isInsufficientBalanceError);
130
+ if (balanceError) {
131
+ throw new Error(balanceError);
132
+ }
133
+ const marketClosedError = failures.find(isMentoMarketClosedError);
134
+ if (marketClosedError) {
135
+ throw new Error(marketClosedError);
136
+ }
137
+ throw new Error(`No swap route for ${tokenIn} → ${tokenOut} via Mento FX, GoodDollar reserve, or Uniswap v4.`);
138
+ }
139
+ successes.sort((a, b) => parseExpectedOut(b.expectedOut) - parseExpectedOut(a.expectedOut));
140
+ const best = successes[0];
141
+ const otherProtocols = filterAlternatives(best, successes.slice(1).map((q) => ({
142
+ protocol: q.protocol,
143
+ expectedOut: q.expectedOut,
144
+ })));
145
+ return {
146
+ ...best,
147
+ alternatives: otherProtocols.length > 0 ? otherProtocols : alternatives,
148
+ };
149
+ }
150
+ export async function prepareSwapWithFallback(celina, from, tokenIn, tokenOut, amount, params, protocol) {
151
+ const chosen = protocol ??
152
+ (await getSwapQuoteWithFallback(celina, tokenIn, tokenOut, amount, from))
153
+ .protocol;
154
+ if (chosen === "mento_fx") {
155
+ return celina.mentoFx.prepareFx(from, tokenIn, tokenOut, amount, {
156
+ recipient: params?.recipient,
157
+ slippageTolerance: params?.slippageTolerance,
158
+ deadlineMinutes: params?.deadlineMinutes,
159
+ });
160
+ }
161
+ if (chosen === "gooddollar_reserve") {
162
+ return celina.gooddollar.prepareReserveSwap(from, tokenIn, tokenOut, amount, {
163
+ recipient: params?.recipient,
164
+ slippageTolerance: params?.slippageTolerance,
165
+ amountSide: params?.amountSide,
166
+ });
167
+ }
168
+ return celina.uniswap.prepareSwap(from, tokenIn, tokenOut, amount, {
169
+ recipient: params?.recipient,
170
+ slippageTolerance: params?.slippageTolerance,
171
+ deadlineMinutes: params?.deadlineMinutes,
172
+ });
173
+ }
174
+ //# sourceMappingURL=swap-routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap-routing.js","sourceRoot":"","sources":["../../../src/tools/swap-routing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ import type { z } from "zod";
2
+ import type { CelinaClient } from "../index.js";
3
+ export type ToolSurface = "mcp" | "browser";
4
+ export type ToolFamily = "read" | "prepare" | "execute";
5
+ export type ToolEnvRequirement = "CELO_PRIVATE_KEY" | "SELF_AGENT_PRIVATE_KEY" | "SELF_SESSION";
6
+ export type WalletInput = {
7
+ address?: string;
8
+ wallet_address?: string;
9
+ from?: string;
10
+ };
11
+ export type McpToolAnnotations = {
12
+ readOnlyHint?: boolean;
13
+ idempotentHint?: boolean;
14
+ destructiveHint?: boolean;
15
+ openWorldHint?: boolean;
16
+ };
17
+ export type McpToolMeta = {
18
+ title?: string;
19
+ annotations?: McpToolAnnotations;
20
+ /** MCP adapter uses okSelfSession for QR registration flows. */
21
+ responseKind?: "default" | "self_session";
22
+ };
23
+ export type ToolRuntimeHooks = {
24
+ beforePrepareSend?: (params: {
25
+ sender: `0x${string}`;
26
+ token: string;
27
+ amount: string;
28
+ }) => Promise<void>;
29
+ };
30
+ export type TransactionExecutors = {
31
+ estimateSend: (to: `0x${string}`, token: string, amount: string) => Promise<unknown>;
32
+ sendToken: (to: `0x${string}`, token: string, amount: string) => Promise<unknown>;
33
+ };
34
+ export type MentoFxExecutors = {
35
+ estimate: (tokenIn: string, tokenOut: string, amount: string, options?: {
36
+ recipient?: `0x${string}`;
37
+ slippageTolerance?: number;
38
+ deadlineMinutes?: number;
39
+ }) => Promise<unknown>;
40
+ execute: (tokenIn: string, tokenOut: string, amount: string, options?: {
41
+ recipient?: `0x${string}`;
42
+ slippageTolerance?: number;
43
+ deadlineMinutes?: number;
44
+ }) => Promise<unknown>;
45
+ };
46
+ export type UniswapExecutors = {
47
+ estimate: (tokenIn: string, tokenOut: string, amount: string, options?: {
48
+ recipient?: `0x${string}`;
49
+ slippageTolerance?: number;
50
+ deadlineMinutes?: number;
51
+ }) => Promise<unknown>;
52
+ execute: (tokenIn: string, tokenOut: string, amount: string, options?: {
53
+ recipient?: `0x${string}`;
54
+ slippageTolerance?: number;
55
+ deadlineMinutes?: number;
56
+ }) => Promise<unknown>;
57
+ };
58
+ export type AaveExecutors = {
59
+ supply: (token: string, amount: string) => Promise<unknown>;
60
+ withdraw: (token: string, amount?: string, withdrawMax?: boolean) => Promise<unknown>;
61
+ };
62
+ export type GoodDollarWriteExecutors = {
63
+ claimDailyUbi: () => Promise<unknown>;
64
+ estimateReserveSwap: (tokenIn: string, tokenOut: string, amount: string, options?: {
65
+ recipient?: `0x${string}`;
66
+ slippageTolerance?: number;
67
+ }) => Promise<unknown>;
68
+ executeReserveSwap: (tokenIn: string, tokenOut: string, amount: string, options?: {
69
+ recipient?: `0x${string}`;
70
+ slippageTolerance?: number;
71
+ }) => Promise<unknown>;
72
+ };
73
+ export type SelfExecutors = {
74
+ verifyAgent: (args: Record<string, unknown>) => Promise<unknown>;
75
+ lookupAgent: (agentId: number) => Promise<unknown>;
76
+ verifyRequest: (args: Record<string, unknown>) => Promise<unknown>;
77
+ registerAgent: (args: Record<string, unknown>) => Promise<unknown>;
78
+ checkRegistration: (sessionId: string) => Promise<unknown>;
79
+ getIdentity: () => Promise<unknown>;
80
+ refreshProof: (args: Record<string, unknown>) => Promise<unknown>;
81
+ deregisterAgent: () => Promise<unknown>;
82
+ signRequest: (args: Record<string, unknown>) => Promise<unknown>;
83
+ authenticatedFetch: (args: Record<string, unknown>) => Promise<unknown>;
84
+ };
85
+ export type ToolRuntimeExecutors = {
86
+ transaction?: TransactionExecutors;
87
+ mentoFx?: MentoFxExecutors;
88
+ uniswap?: UniswapExecutors;
89
+ aave?: AaveExecutors;
90
+ gooddollarWrite?: GoodDollarWriteExecutors;
91
+ self?: SelfExecutors;
92
+ };
93
+ export interface ToolRuntime {
94
+ celina: CelinaClient;
95
+ resolveWallet: (input?: WalletInput) => `0x${string}`;
96
+ hooks?: ToolRuntimeHooks;
97
+ executors?: ToolRuntimeExecutors;
98
+ /** MCP session wallet metadata for get_wallet_address. */
99
+ mcpWallet?: {
100
+ address: `0x${string}`;
101
+ hasWallet: boolean;
102
+ };
103
+ }
104
+ export interface ToolDefinition {
105
+ name: string;
106
+ description: string;
107
+ inputSchema: z.ZodTypeAny;
108
+ families: ToolFamily[];
109
+ surfaces?: ToolSurface[];
110
+ requiresEnv?: ToolEnvRequirement[];
111
+ mcp?: McpToolMeta;
112
+ handler: (runtime: ToolRuntime, input: Record<string, unknown>) => Promise<unknown>;
113
+ }
114
+ export type FilterToolsOptions = {
115
+ surface?: ToolSurface;
116
+ families?: ToolFamily[];
117
+ names?: string[];
118
+ /** When false, omit tools that require CELO_PRIVATE_KEY or SELF_AGENT_PRIVATE_KEY. Default true. */
119
+ serverKeyToolsEnabled?: boolean;
120
+ /** When false, omit Self registration session tools. Default true. */
121
+ selfSessionToolsEnabled?: boolean;
122
+ /** When false, omit estimate_* gas simulation tools. Default true. */
123
+ estimateToolsEnabled?: boolean;
124
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ /** Normalize common LLM token shorthands before registry lookup. */
2
+ export declare function normalizeRegistryTokenInput(token: string): string;
@@ -0,0 +1,12 @@
1
+ const REGISTRY_ALIASES = {
2
+ GD: "GoodDollar",
3
+ "G$": "GoodDollar",
4
+ GOODDOLLAR: "GoodDollar",
5
+ };
6
+ /** Normalize common LLM token shorthands before registry lookup. */
7
+ export function normalizeRegistryTokenInput(token) {
8
+ const trimmed = token.trim();
9
+ const upper = trimmed.toUpperCase();
10
+ return REGISTRY_ALIASES[upper] ?? REGISTRY_ALIASES[trimmed] ?? trimmed;
11
+ }
12
+ //# sourceMappingURL=normalize-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-token.js","sourceRoot":"","sources":["../../../../src/tools/utils/normalize-token.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAA2B;IAC/C,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,YAAY;IAClB,UAAU,EAAE,YAAY;CACzB,CAAC;AAEF,oEAAoE;AACpE,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;AACzE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ToolRuntime, WalletInput } from "../types.js";
2
+ export declare function resolveWalletFromRuntime(runtime: ToolRuntime, input?: WalletInput): `0x${string}`;
3
+ /** Use MCP server signer for estimates only when a wallet is configured and no explicit from. */
4
+ export declare function useMcpServerExecutor(runtime: ToolRuntime, explicitFrom?: string): boolean;
@@ -0,0 +1,8 @@
1
+ export function resolveWalletFromRuntime(runtime, input) {
2
+ return runtime.resolveWallet(input);
3
+ }
4
+ /** Use MCP server signer for estimates only when a wallet is configured and no explicit from. */
5
+ export function useMcpServerExecutor(runtime, explicitFrom) {
6
+ return Boolean(runtime.mcpWallet?.hasWallet && !explicitFrom);
7
+ }
8
+ //# sourceMappingURL=wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../../src/tools/utils/wallet.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CACtC,OAAoB,EACpB,KAAmB;IAEnB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,oBAAoB,CAClC,OAAoB,EACpB,YAAqB;IAErB,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,IAAI,CAAC,YAAY,CAAC,CAAC;AAChE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { FilterToolsOptions, ToolDefinition } from "./types.js";
2
+ export type WebsiteToolCategory = "Blockchain" | "Account" | "Token" | "Transaction" | "Mento FX" | "Uniswap" | "Wallet" | "GoodDollar" | "Aave" | "Self" | "Governance" | "Staking" | "NFT" | "Contract";
3
+ export type WebsiteToolKind = "read" | "write";
4
+ export type WebsiteToolAvailability = "hosted" | "stdio" | "both";
5
+ export interface WebsiteToolBaseline {
6
+ name: string;
7
+ slug: string;
8
+ title: string;
9
+ summary: string;
10
+ description: string;
11
+ kind: WebsiteToolKind;
12
+ category: WebsiteToolCategory;
13
+ inputs: Array<{
14
+ name: string;
15
+ type: string;
16
+ required?: boolean;
17
+ description: string;
18
+ }>;
19
+ }
20
+ export declare const HOSTED_MCP_FILTER: FilterToolsOptions;
21
+ export declare const TOOL_CATEGORY_BY_NAME: Record<string, WebsiteToolCategory>;
22
+ export declare function toWebsiteToolBaseline(definition: ToolDefinition): WebsiteToolBaseline;
23
+ export declare function deriveToolAvailability(definition: ToolDefinition): WebsiteToolAvailability;
24
+ export declare function getHostedMcpToolDefinitions(): ToolDefinition[];
25
+ export declare function getHostedMcpToolNames(): string[];
26
+ export declare function getHostedMcpToolCount(): number;
27
+ export declare function getWebsiteToolBaselines(): WebsiteToolBaseline[];
28
+ export declare function getMcpToolNameSet(): Set<string>;
@@ -0,0 +1,165 @@
1
+ import { ALL_TOOL_DEFINITIONS, getToolInputSchemaShape } from "./catalog.js";
2
+ import { filterToolDefinitions } from "./filter.js";
3
+ export const HOSTED_MCP_FILTER = {
4
+ surface: "mcp",
5
+ serverKeyToolsEnabled: false,
6
+ selfSessionToolsEnabled: false,
7
+ estimateToolsEnabled: false,
8
+ };
9
+ const STDIO_ONLY_TOOLS = new Set([
10
+ "send_token",
11
+ "execute_mento_fx",
12
+ "execute_uniswap_swap",
13
+ "supply_aave",
14
+ "withdraw_aave",
15
+ "claim_daily_gooddollar_ubi",
16
+ "execute_gooddollar_reserve_swap",
17
+ "get_wallet_address",
18
+ "get_self_identity",
19
+ "sign_self_request",
20
+ "authenticated_self_fetch",
21
+ "refresh_self_proof",
22
+ "deregister_self_agent",
23
+ "register_self_agent",
24
+ "check_self_registration",
25
+ ]);
26
+ export const TOOL_CATEGORY_BY_NAME = {
27
+ get_network_status: "Blockchain",
28
+ get_block: "Blockchain",
29
+ get_latest_blocks: "Blockchain",
30
+ get_transaction: "Blockchain",
31
+ get_account: "Account",
32
+ get_wallet_address: "Wallet",
33
+ get_celo_balances: "Token",
34
+ get_stablecoin_balances: "Token",
35
+ get_token_info: "Token",
36
+ get_token_balance: "Token",
37
+ estimate_send: "Transaction",
38
+ send_token: "Transaction",
39
+ get_mento_fx_quote: "Mento FX",
40
+ estimate_mento_fx: "Mento FX",
41
+ execute_mento_fx: "Mento FX",
42
+ prepare_mento_fx: "Mento FX",
43
+ get_uniswap_quote: "Uniswap",
44
+ estimate_uniswap_swap: "Uniswap",
45
+ execute_uniswap_swap: "Uniswap",
46
+ prepare_uniswap_swap: "Uniswap",
47
+ get_swap_quote: "Uniswap",
48
+ prepare_swap: "Uniswap",
49
+ get_aave_balances: "Aave",
50
+ supply_aave: "Aave",
51
+ withdraw_aave: "Aave",
52
+ resolve_ens: "Wallet",
53
+ get_gooddollar_whitelisting_info: "GoodDollar",
54
+ get_gooddollar_identity_link: "GoodDollar",
55
+ get_gooddollar_ubi_entitlement: "GoodDollar",
56
+ claim_daily_gooddollar_ubi: "GoodDollar",
57
+ prepare_claim_daily_gooddollar_ubi: "GoodDollar",
58
+ get_gooddollar_reserve_quote: "GoodDollar",
59
+ estimate_gooddollar_reserve_swap: "GoodDollar",
60
+ execute_gooddollar_reserve_swap: "GoodDollar",
61
+ prepare_gooddollar_reserve_swap: "GoodDollar",
62
+ get_governance_proposals: "Governance",
63
+ get_proposal_details: "Governance",
64
+ get_staking_balances: "Staking",
65
+ get_validator_groups: "Staking",
66
+ get_validator_group_details: "Staking",
67
+ get_activatable_stakes: "Staking",
68
+ get_total_staking_info: "Staking",
69
+ get_nft_info: "NFT",
70
+ get_nft_balance: "NFT",
71
+ call_contract_function: "Contract",
72
+ estimate_contract_gas: "Contract",
73
+ verify_self_agent: "Self",
74
+ lookup_self_agent: "Self",
75
+ verify_self_request: "Self",
76
+ register_self_agent: "Self",
77
+ check_self_registration: "Self",
78
+ get_self_identity: "Self",
79
+ refresh_self_proof: "Self",
80
+ deregister_self_agent: "Self",
81
+ sign_self_request: "Self",
82
+ authenticated_self_fetch: "Self",
83
+ };
84
+ function toolNameToSlug(name) {
85
+ return name.replace(/_/g, "-");
86
+ }
87
+ function familyToKind(families) {
88
+ return families.includes("execute") ? "write" : "read";
89
+ }
90
+ function firstSentence(text) {
91
+ const match = text.match(/^[^.!?]+[.!?]?/);
92
+ return match ? match[0].trim() : text.slice(0, 120);
93
+ }
94
+ function zodFieldType(key, schema) {
95
+ if (!schema || typeof schema !== "object") {
96
+ return "string";
97
+ }
98
+ const zod = schema;
99
+ const typeName = zod._def?.typeName;
100
+ if (typeName === "ZodOptional" || typeName === "ZodDefault") {
101
+ return zodFieldType(key, zod._def?.innerType);
102
+ }
103
+ if (typeName === "ZodBoolean")
104
+ return "boolean";
105
+ if (typeName === "ZodNumber")
106
+ return "number";
107
+ if (typeName === "ZodArray")
108
+ return "array";
109
+ return "string";
110
+ }
111
+ function inputsFromSchema(definition) {
112
+ const shape = getToolInputSchemaShape(definition);
113
+ if (!shape)
114
+ return [];
115
+ return Object.entries(shape).map(([name, schema]) => ({
116
+ name,
117
+ type: zodFieldType(name, schema),
118
+ required: !String(schema).includes("optional"),
119
+ description: name.replace(/_/g, " "),
120
+ }));
121
+ }
122
+ function categoryForTool(definition) {
123
+ return TOOL_CATEGORY_BY_NAME[definition.name] ?? "Blockchain";
124
+ }
125
+ export function toWebsiteToolBaseline(definition) {
126
+ return {
127
+ name: definition.name,
128
+ slug: toolNameToSlug(definition.name),
129
+ title: definition.mcp?.title ?? definition.name.replace(/_/g, " "),
130
+ summary: firstSentence(definition.description),
131
+ description: definition.description,
132
+ kind: familyToKind(definition.families),
133
+ category: categoryForTool(definition),
134
+ inputs: inputsFromSchema(definition),
135
+ };
136
+ }
137
+ export function deriveToolAvailability(definition) {
138
+ if (definition.name.startsWith("estimate_")) {
139
+ return "stdio";
140
+ }
141
+ if (STDIO_ONLY_TOOLS.has(definition.name)) {
142
+ return "stdio";
143
+ }
144
+ const surfaces = definition.surfaces ?? ["mcp", "browser"];
145
+ if (surfaces.length === 1 && surfaces[0] === "browser") {
146
+ return "stdio";
147
+ }
148
+ return "both";
149
+ }
150
+ export function getHostedMcpToolDefinitions() {
151
+ return filterToolDefinitions(ALL_TOOL_DEFINITIONS, HOSTED_MCP_FILTER);
152
+ }
153
+ export function getHostedMcpToolNames() {
154
+ return getHostedMcpToolDefinitions().map((d) => d.name);
155
+ }
156
+ export function getHostedMcpToolCount() {
157
+ return getHostedMcpToolDefinitions().length;
158
+ }
159
+ export function getWebsiteToolBaselines() {
160
+ return filterToolDefinitions(ALL_TOOL_DEFINITIONS, { surface: "mcp" }).map(toWebsiteToolBaseline);
161
+ }
162
+ export function getMcpToolNameSet() {
163
+ return new Set(filterToolDefinitions(ALL_TOOL_DEFINITIONS, { surface: "mcp" }).map((d) => d.name));
164
+ }
165
+ //# sourceMappingURL=website-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"website-sync.js","sourceRoot":"","sources":["../../../src/tools/website-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export type PreparedTxKind = "native" | "erc20" | "contract";
2
+ /** Single unsigned transaction step in a prepared flow. */
3
+ export interface PreparedTx {
4
+ /** Step category for UI and wallet routing. */
5
+ kind: PreparedTxKind;
6
+ to: `0x${string}`;
7
+ data?: `0x${string}`;
8
+ /** Wei amount as decimal string for JSON serialization */
9
+ value?: string;
10
+ description: string;
11
+ }
12
+ /** In-memory prepared flow before JSON serialization. */
13
+ export interface PreparedFlow {
14
+ steps: PreparedTx[];
15
+ summary: string;
16
+ network: "mainnet";
17
+ from: `0x${string}`;
18
+ }
19
+ /**
20
+ * JSON-safe prepared flow returned by prepare* tools and chat APIs.
21
+ * Consumers simulate each step (see @andrewkimjoseph/celina-sdk/simulation), then call sendTransactionAsync (wagmi) or walletClient.sendTransaction (viem).
22
+ */
23
+ export interface SerializedPreparedFlow extends Omit<PreparedFlow, "steps"> {
24
+ steps: PreparedTx[];
25
+ preparedFlow: true;
26
+ }
27
+ /** Marks a prepared flow as JSON-safe for API and chat tool responses. */
28
+ export declare function serializePreparedFlow(flow: PreparedFlow): SerializedPreparedFlow;
@@ -0,0 +1,12 @@
1
+ /** Marks a prepared flow as JSON-safe for API and chat tool responses. */
2
+ export function serializePreparedFlow(flow) {
3
+ return {
4
+ ...flow,
5
+ preparedFlow: true,
6
+ steps: flow.steps.map((step) => ({
7
+ ...step,
8
+ value: step.value?.toString(),
9
+ })),
10
+ };
11
+ }
12
+ //# sourceMappingURL=prepared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepared.js","sourceRoot":"","sources":["../../../src/types/prepared.ts"],"names":[],"mappings":"AA8BA,0EAA0E;AAC1E,MAAM,UAAU,qBAAqB,CAAC,IAAkB;IACtD,OAAO;QACL,GAAG,IAAI;QACP,YAAY,EAAE,IAAI;QAClB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,IAAI;YACP,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;SAC9B,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Human-readable CELO amount from wei (18 decimals). */
2
+ export declare function formatCeloAmount(wei: bigint): string;
3
+ /** Shorten a hex address for display (`0x1234…abcd`). */
4
+ export declare function formatAddress(address: string): string;
5
+ /** Format validator score basis points as a percentage string. */
6
+ export declare function formatScorePercentage(score: bigint | number): string;
@@ -0,0 +1,17 @@
1
+ import { formatUnits } from "viem";
2
+ /** Human-readable CELO amount from wei (18 decimals). */
3
+ export function formatCeloAmount(wei) {
4
+ return `${formatUnits(wei, 18)} CELO`;
5
+ }
6
+ /** Shorten a hex address for display (`0x1234…abcd`). */
7
+ export function formatAddress(address) {
8
+ if (address.length < 10)
9
+ return address;
10
+ return `${address.slice(0, 6)}...${address.slice(-4)}`;
11
+ }
12
+ /** Format validator score basis points as a percentage string. */
13
+ export function formatScorePercentage(score) {
14
+ const value = typeof score === "bigint" ? Number(score) : score;
15
+ return `${(value / 100).toFixed(2)}%`;
16
+ }
17
+ //# sourceMappingURL=celo-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"celo-format.js","sourceRoot":"","sources":["../../../src/utils/celo-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAEnC,yDAAyD;AACzD,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC;AACxC,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,OAAO,CAAC;IACxC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,qBAAqB,CAAC,KAAsB;IAC1D,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAChE,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACxC,CAAC"}