@mento-protocol/mento-sdk 2.0.0-beta.9 → 3.0.0-beta.1

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 (364) hide show
  1. package/README.md +170 -132
  2. package/dist/cache/routes.42220.d.ts +3 -0
  3. package/dist/cache/routes.42220.d.ts.map +1 -0
  4. package/dist/cache/routes.42220.js +112 -0
  5. package/dist/cache/routes.42220.js.map +1 -0
  6. package/dist/cache/tokens.11142220.d.ts +3 -0
  7. package/dist/cache/tokens.11142220.d.ts.map +1 -0
  8. package/dist/cache/tokens.11142220.js +129 -0
  9. package/dist/cache/tokens.11142220.js.map +1 -0
  10. package/dist/cache/tokens.42220.d.ts +3 -0
  11. package/dist/cache/tokens.42220.d.ts.map +1 -0
  12. package/dist/cache/tokens.42220.js +129 -0
  13. package/dist/cache/tokens.42220.js.map +1 -0
  14. package/dist/core/abis/bipoolmanager.d.ts +34 -0
  15. package/dist/core/abis/bipoolmanager.d.ts.map +1 -0
  16. package/dist/core/abis/bipoolmanager.js +72 -0
  17. package/dist/core/abis/bipoolmanager.js.map +1 -0
  18. package/dist/core/abis/broker.d.ts +2 -0
  19. package/dist/core/abis/broker.d.ts.map +1 -0
  20. package/dist/core/abis/broker.js +9 -0
  21. package/dist/core/abis/broker.js.map +1 -0
  22. package/dist/core/abis/erc20.d.ts +2 -0
  23. package/dist/core/abis/erc20.d.ts.map +1 -0
  24. package/dist/{abis → core/abis}/erc20.js +5 -2
  25. package/dist/core/abis/erc20.js.map +1 -0
  26. package/dist/core/abis/fpmm.d.ts +34 -0
  27. package/dist/core/abis/fpmm.d.ts.map +1 -0
  28. package/dist/core/abis/fpmm.js +11 -0
  29. package/dist/core/abis/fpmm.js.map +1 -0
  30. package/dist/core/abis/fpmmFactory.d.ts +21 -0
  31. package/dist/core/abis/fpmmFactory.d.ts.map +1 -0
  32. package/dist/core/abis/fpmmFactory.js +9 -0
  33. package/dist/core/abis/fpmmFactory.js.map +1 -0
  34. package/dist/core/abis/index.d.ts +10 -0
  35. package/dist/core/abis/index.d.ts.map +1 -0
  36. package/dist/{abis → core/abis}/index.js +4 -0
  37. package/dist/core/abis/index.js.map +1 -0
  38. package/dist/core/abis/pricingmodule.d.ts +2 -0
  39. package/dist/core/abis/pricingmodule.d.ts.map +1 -0
  40. package/dist/core/abis/pricingmodule.js +6 -0
  41. package/dist/core/abis/pricingmodule.js.map +1 -0
  42. package/dist/core/abis/reserve.d.ts +2 -0
  43. package/dist/core/abis/reserve.d.ts.map +1 -0
  44. package/dist/core/abis/reserve.js +10 -0
  45. package/dist/core/abis/reserve.js.map +1 -0
  46. package/dist/core/abis/router.d.ts +2 -0
  47. package/dist/core/abis/router.d.ts.map +1 -0
  48. package/dist/core/abis/router.js +10 -0
  49. package/dist/core/abis/router.js.map +1 -0
  50. package/dist/core/abis/uniswapV3.d.ts +4 -0
  51. package/dist/core/abis/uniswapV3.d.ts.map +1 -0
  52. package/dist/{abis → core/abis}/uniswapV3.js +7 -6
  53. package/dist/core/abis/uniswapV3.js.map +1 -0
  54. package/dist/core/abis/virtualPool.d.ts +10 -0
  55. package/dist/core/abis/virtualPool.d.ts.map +1 -0
  56. package/dist/core/abis/virtualPool.js +6 -0
  57. package/dist/core/abis/virtualPool.js.map +1 -0
  58. package/dist/core/abis/virtualPoolFactory.d.ts +27 -0
  59. package/dist/core/abis/virtualPoolFactory.d.ts.map +1 -0
  60. package/dist/core/abis/virtualPoolFactory.js +9 -0
  61. package/dist/core/abis/virtualPoolFactory.js.map +1 -0
  62. package/dist/core/constants/aaveConfig.d.ts.map +1 -0
  63. package/dist/core/constants/aaveConfig.js.map +1 -0
  64. package/dist/{constants → core/constants}/addresses.d.ts +4 -5
  65. package/dist/core/constants/addresses.d.ts.map +1 -0
  66. package/dist/core/constants/addresses.js +73 -0
  67. package/dist/core/constants/addresses.js.map +1 -0
  68. package/dist/core/constants/chainId.d.ts +5 -0
  69. package/dist/core/constants/chainId.d.ts.map +1 -0
  70. package/dist/{constants → core/constants}/chainId.js +1 -1
  71. package/dist/core/constants/chainId.js.map +1 -0
  72. package/dist/core/constants/contractNames.d.ts.map +1 -0
  73. package/dist/core/constants/contractNames.js.map +1 -0
  74. package/dist/{constants → core/constants}/index.d.ts +0 -2
  75. package/dist/core/constants/index.d.ts.map +1 -0
  76. package/dist/{constants → core/constants}/index.js +0 -2
  77. package/dist/core/constants/index.js.map +1 -0
  78. package/dist/{constants → core/constants}/mentoAddresses.d.ts +2 -0
  79. package/dist/core/constants/mentoAddresses.d.ts.map +1 -0
  80. package/dist/{constants → core/constants}/mentoAddresses.js +2 -0
  81. package/dist/core/constants/mentoAddresses.js.map +1 -0
  82. package/dist/core/constants/protocolAddresses.d.ts.map +1 -0
  83. package/dist/core/constants/protocolAddresses.js.map +1 -0
  84. package/dist/core/errors/base.d.ts +8 -0
  85. package/dist/core/errors/base.d.ts.map +1 -0
  86. package/dist/core/errors/base.js +17 -0
  87. package/dist/core/errors/base.js.map +1 -0
  88. package/dist/core/errors/index.d.ts +3 -0
  89. package/dist/core/errors/index.d.ts.map +1 -0
  90. package/dist/core/errors/index.js +19 -0
  91. package/dist/core/errors/index.js.map +1 -0
  92. package/dist/core/errors/router.d.ts +8 -0
  93. package/dist/core/errors/router.d.ts.map +1 -0
  94. package/dist/core/errors/router.js +14 -0
  95. package/dist/core/errors/router.js.map +1 -0
  96. package/dist/core/types/contractAddresses.d.ts +39 -0
  97. package/dist/core/types/contractAddresses.d.ts.map +1 -0
  98. package/dist/core/types/contractAddresses.js.map +1 -0
  99. package/dist/{types → core/types}/index.d.ts +2 -1
  100. package/dist/core/types/index.d.ts.map +1 -0
  101. package/dist/{types → core/types}/index.js +2 -1
  102. package/dist/core/types/index.js.map +1 -0
  103. package/dist/core/types/pool.d.ts +35 -0
  104. package/dist/core/types/pool.d.ts.map +1 -0
  105. package/dist/core/types/pool.js +14 -0
  106. package/dist/core/types/pool.js.map +1 -0
  107. package/dist/core/types/provider.d.ts +45 -0
  108. package/dist/core/types/provider.d.ts.map +1 -0
  109. package/dist/core/types/provider.js +4 -0
  110. package/dist/core/types/provider.js.map +1 -0
  111. package/dist/core/types/route.d.ts +62 -0
  112. package/dist/core/types/route.d.ts.map +1 -0
  113. package/dist/{types/provider.js → core/types/route.js} +1 -1
  114. package/dist/core/types/route.js.map +1 -0
  115. package/dist/{types → core/types}/token.d.ts +7 -7
  116. package/dist/core/types/token.d.ts.map +1 -0
  117. package/dist/{types → core/types}/token.js.map +1 -1
  118. package/dist/index.d.ts +39 -110
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +57 -153
  121. package/dist/index.js.map +1 -1
  122. package/dist/services/index.d.ts +6 -6
  123. package/dist/services/index.d.ts.map +1 -1
  124. package/dist/services/index.js +6 -6
  125. package/dist/services/index.js.map +1 -1
  126. package/dist/services/pools/PoolService.d.ts +37 -0
  127. package/dist/services/pools/PoolService.d.ts.map +1 -0
  128. package/dist/services/pools/PoolService.js +158 -0
  129. package/dist/services/pools/PoolService.js.map +1 -0
  130. package/dist/services/pools/index.d.ts +2 -0
  131. package/dist/services/pools/index.d.ts.map +1 -0
  132. package/dist/services/pools/index.js +18 -0
  133. package/dist/services/pools/index.js.map +1 -0
  134. package/dist/services/quotes/QuoteService.d.ts +41 -0
  135. package/dist/services/quotes/QuoteService.d.ts.map +1 -0
  136. package/dist/services/quotes/QuoteService.js +61 -0
  137. package/dist/services/quotes/QuoteService.js.map +1 -0
  138. package/dist/services/quotes/index.d.ts +2 -0
  139. package/dist/services/quotes/index.d.ts.map +1 -0
  140. package/dist/services/quotes/index.js +18 -0
  141. package/dist/services/quotes/index.js.map +1 -0
  142. package/dist/services/routes/RouteService.d.ts +109 -0
  143. package/dist/services/routes/RouteService.d.ts.map +1 -0
  144. package/dist/services/routes/RouteService.js +241 -0
  145. package/dist/services/routes/RouteService.js.map +1 -0
  146. package/dist/services/routes/index.d.ts +2 -0
  147. package/dist/services/routes/index.d.ts.map +1 -0
  148. package/dist/services/routes/index.js +18 -0
  149. package/dist/services/routes/index.js.map +1 -0
  150. package/dist/services/swap/SwapService.d.ts +158 -0
  151. package/dist/services/swap/SwapService.d.ts.map +1 -0
  152. package/dist/services/swap/SwapService.js +160 -0
  153. package/dist/services/swap/SwapService.js.map +1 -0
  154. package/dist/services/swap/index.d.ts +2 -0
  155. package/dist/services/swap/index.d.ts.map +1 -0
  156. package/dist/services/swap/index.js +18 -0
  157. package/dist/services/swap/index.js.map +1 -0
  158. package/dist/services/tokens/index.d.ts +2 -0
  159. package/dist/services/tokens/index.d.ts.map +1 -0
  160. package/dist/services/tokens/index.js +18 -0
  161. package/dist/services/tokens/index.js.map +1 -0
  162. package/dist/services/tokens/supply/ISupplyCalculator.d.ts.map +1 -0
  163. package/dist/services/tokens/supply/ISupplyCalculator.js.map +1 -0
  164. package/dist/services/{supply → tokens/supply}/aaveSupplyCalculator.d.ts +4 -3
  165. package/dist/services/tokens/supply/aaveSupplyCalculator.d.ts.map +1 -0
  166. package/dist/services/{supply → tokens/supply}/aaveSupplyCalculator.js +7 -7
  167. package/dist/services/tokens/supply/aaveSupplyCalculator.js.map +1 -0
  168. package/dist/services/tokens/supply/calculatorFactory.d.ts +8 -0
  169. package/dist/services/tokens/supply/calculatorFactory.d.ts.map +1 -0
  170. package/dist/services/tokens/supply/calculatorFactory.js.map +1 -0
  171. package/dist/services/tokens/supply/defaultCalculatorFactory.d.ts +9 -0
  172. package/dist/services/tokens/supply/defaultCalculatorFactory.d.ts.map +1 -0
  173. package/dist/services/{supply → tokens/supply}/defaultCalculatorFactory.js +12 -7
  174. package/dist/services/tokens/supply/defaultCalculatorFactory.js.map +1 -0
  175. package/dist/services/tokens/supply/index.d.ts.map +1 -0
  176. package/dist/services/tokens/supply/index.js.map +1 -0
  177. package/dist/services/tokens/supply/multisigSupplyCalculator.d.ts +9 -0
  178. package/dist/services/tokens/supply/multisigSupplyCalculator.d.ts.map +1 -0
  179. package/dist/services/tokens/supply/multisigSupplyCalculator.js +33 -0
  180. package/dist/services/tokens/supply/multisigSupplyCalculator.js.map +1 -0
  181. package/dist/services/{supply → tokens/supply}/uniV3SupplyCalculator.d.ts +3 -3
  182. package/dist/services/tokens/supply/uniV3SupplyCalculator.d.ts.map +1 -0
  183. package/dist/services/{supply → tokens/supply}/uniV3SupplyCalculator.js +11 -6
  184. package/dist/services/tokens/supply/uniV3SupplyCalculator.js.map +1 -0
  185. package/dist/services/{supplyAdjustmentService.d.ts → tokens/supplyAdjustmentService.d.ts} +7 -2
  186. package/dist/services/tokens/supplyAdjustmentService.d.ts.map +1 -0
  187. package/dist/services/{supplyAdjustmentService.js → tokens/supplyAdjustmentService.js} +14 -11
  188. package/dist/services/tokens/supplyAdjustmentService.js.map +1 -0
  189. package/dist/services/tokens/tokenService.d.ts +33 -0
  190. package/dist/services/tokens/tokenService.d.ts.map +1 -0
  191. package/dist/services/tokens/tokenService.js +136 -0
  192. package/dist/services/tokens/tokenService.js.map +1 -0
  193. package/dist/utils/chainConfig.d.ts +16 -0
  194. package/dist/utils/chainConfig.d.ts.map +1 -0
  195. package/dist/utils/chainConfig.js +62 -0
  196. package/dist/utils/chainConfig.js.map +1 -0
  197. package/dist/utils/costUtils.d.ts +12 -0
  198. package/dist/utils/costUtils.d.ts.map +1 -0
  199. package/dist/utils/costUtils.js +59 -0
  200. package/dist/utils/costUtils.js.map +1 -0
  201. package/dist/utils/index.d.ts +4 -0
  202. package/dist/utils/index.d.ts.map +1 -1
  203. package/dist/utils/index.js +4 -0
  204. package/dist/utils/index.js.map +1 -1
  205. package/dist/utils/pathEncoder.d.ts +28 -0
  206. package/dist/utils/pathEncoder.d.ts.map +1 -0
  207. package/dist/utils/pathEncoder.js +57 -0
  208. package/dist/utils/pathEncoder.js.map +1 -0
  209. package/dist/utils/routeUtils.d.ts +295 -0
  210. package/dist/utils/routeUtils.d.ts.map +1 -0
  211. package/dist/utils/routeUtils.js +371 -0
  212. package/dist/utils/routeUtils.js.map +1 -0
  213. package/dist/utils/routes.d.ts +9 -0
  214. package/dist/utils/routes.d.ts.map +1 -0
  215. package/dist/utils/routes.js +49 -0
  216. package/dist/utils/routes.js.map +1 -0
  217. package/dist/utils/sortUtils.d.ts +24 -0
  218. package/dist/utils/sortUtils.d.ts.map +1 -0
  219. package/dist/utils/sortUtils.js +39 -0
  220. package/dist/utils/sortUtils.js.map +1 -0
  221. package/dist/utils/tokens.d.ts +78 -0
  222. package/dist/utils/tokens.d.ts.map +1 -0
  223. package/dist/utils/tokens.js +181 -0
  224. package/dist/utils/tokens.js.map +1 -0
  225. package/package.json +10 -23
  226. package/dist/abis/bipoolmanager.d.ts +0 -15
  227. package/dist/abis/bipoolmanager.d.ts.map +0 -1
  228. package/dist/abis/bipoolmanager.js +0 -26
  229. package/dist/abis/bipoolmanager.js.map +0 -1
  230. package/dist/abis/broker.d.ts +0 -2
  231. package/dist/abis/broker.d.ts.map +0 -1
  232. package/dist/abis/broker.js +0 -15
  233. package/dist/abis/broker.js.map +0 -1
  234. package/dist/abis/erc20.d.ts +0 -2
  235. package/dist/abis/erc20.d.ts.map +0 -1
  236. package/dist/abis/erc20.js.map +0 -1
  237. package/dist/abis/index.d.ts +0 -6
  238. package/dist/abis/index.d.ts.map +0 -1
  239. package/dist/abis/index.js.map +0 -1
  240. package/dist/abis/pricingmodule.d.ts +0 -2
  241. package/dist/abis/pricingmodule.d.ts.map +0 -1
  242. package/dist/abis/pricingmodule.js +0 -5
  243. package/dist/abis/pricingmodule.js.map +0 -1
  244. package/dist/abis/reserve.d.ts +0 -2
  245. package/dist/abis/reserve.d.ts.map +0 -1
  246. package/dist/abis/reserve.js +0 -9
  247. package/dist/abis/reserve.js.map +0 -1
  248. package/dist/abis/uniswapV3.d.ts +0 -4
  249. package/dist/abis/uniswapV3.d.ts.map +0 -1
  250. package/dist/abis/uniswapV3.js.map +0 -1
  251. package/dist/adapters/implementations/ethersAdapter.d.ts +0 -13
  252. package/dist/adapters/implementations/ethersAdapter.d.ts.map +0 -1
  253. package/dist/adapters/implementations/ethersAdapter.js +0 -92
  254. package/dist/adapters/implementations/ethersAdapter.js.map +0 -1
  255. package/dist/adapters/implementations/ethersV5Adapter.d.ts +0 -13
  256. package/dist/adapters/implementations/ethersV5Adapter.d.ts.map +0 -1
  257. package/dist/adapters/implementations/ethersV5Adapter.js +0 -92
  258. package/dist/adapters/implementations/ethersV5Adapter.js.map +0 -1
  259. package/dist/adapters/implementations/viemAdapter.d.ts +0 -18
  260. package/dist/adapters/implementations/viemAdapter.d.ts.map +0 -1
  261. package/dist/adapters/implementations/viemAdapter.js +0 -126
  262. package/dist/adapters/implementations/viemAdapter.js.map +0 -1
  263. package/dist/adapters/index.d.ts +0 -5
  264. package/dist/adapters/index.d.ts.map +0 -1
  265. package/dist/adapters/index.js +0 -10
  266. package/dist/adapters/index.js.map +0 -1
  267. package/dist/adapters/proxies/ethersAdapterProxy.d.ts +0 -26
  268. package/dist/adapters/proxies/ethersAdapterProxy.d.ts.map +0 -1
  269. package/dist/adapters/proxies/ethersAdapterProxy.js +0 -78
  270. package/dist/adapters/proxies/ethersAdapterProxy.js.map +0 -1
  271. package/dist/adapters/proxies/ethersV5AdapterProxy.d.ts +0 -26
  272. package/dist/adapters/proxies/ethersV5AdapterProxy.d.ts.map +0 -1
  273. package/dist/adapters/proxies/ethersV5AdapterProxy.js +0 -78
  274. package/dist/adapters/proxies/ethersV5AdapterProxy.js.map +0 -1
  275. package/dist/adapters/proxies/viemAdapterProxy.d.ts +0 -29
  276. package/dist/adapters/proxies/viemAdapterProxy.d.ts.map +0 -1
  277. package/dist/adapters/proxies/viemAdapterProxy.js +0 -78
  278. package/dist/adapters/proxies/viemAdapterProxy.js.map +0 -1
  279. package/dist/constants/aaveConfig.d.ts.map +0 -1
  280. package/dist/constants/aaveConfig.js.map +0 -1
  281. package/dist/constants/addresses.d.ts.map +0 -1
  282. package/dist/constants/addresses.js +0 -61
  283. package/dist/constants/addresses.js.map +0 -1
  284. package/dist/constants/chainId.d.ts +0 -5
  285. package/dist/constants/chainId.d.ts.map +0 -1
  286. package/dist/constants/chainId.js.map +0 -1
  287. package/dist/constants/contractNames.d.ts.map +0 -1
  288. package/dist/constants/contractNames.js.map +0 -1
  289. package/dist/constants/index.d.ts.map +0 -1
  290. package/dist/constants/index.js.map +0 -1
  291. package/dist/constants/mentoAddresses.d.ts.map +0 -1
  292. package/dist/constants/mentoAddresses.js.map +0 -1
  293. package/dist/constants/proposalState.d.ts +0 -11
  294. package/dist/constants/proposalState.d.ts.map +0 -1
  295. package/dist/constants/proposalState.js +0 -15
  296. package/dist/constants/proposalState.js.map +0 -1
  297. package/dist/constants/protocolAddresses.d.ts.map +0 -1
  298. package/dist/constants/protocolAddresses.js.map +0 -1
  299. package/dist/constants/stableTokenMetadata.d.ts +0 -12
  300. package/dist/constants/stableTokenMetadata.d.ts.map +0 -1
  301. package/dist/constants/stableTokenMetadata.js +0 -14
  302. package/dist/constants/stableTokenMetadata.js.map +0 -1
  303. package/dist/services/collateralAssetService.d.ts +0 -8
  304. package/dist/services/collateralAssetService.d.ts.map +0 -1
  305. package/dist/services/collateralAssetService.js +0 -47
  306. package/dist/services/collateralAssetService.js.map +0 -1
  307. package/dist/services/stableTokenService.d.ts +0 -9
  308. package/dist/services/stableTokenService.d.ts.map +0 -1
  309. package/dist/services/stableTokenService.js +0 -40
  310. package/dist/services/stableTokenService.js.map +0 -1
  311. package/dist/services/supply/ISupplyCalculator.d.ts.map +0 -1
  312. package/dist/services/supply/ISupplyCalculator.js.map +0 -1
  313. package/dist/services/supply/aaveSupplyCalculator.d.ts.map +0 -1
  314. package/dist/services/supply/aaveSupplyCalculator.js.map +0 -1
  315. package/dist/services/supply/calculatorFactory.d.ts +0 -8
  316. package/dist/services/supply/calculatorFactory.d.ts.map +0 -1
  317. package/dist/services/supply/calculatorFactory.js.map +0 -1
  318. package/dist/services/supply/defaultCalculatorFactory.d.ts +0 -9
  319. package/dist/services/supply/defaultCalculatorFactory.d.ts.map +0 -1
  320. package/dist/services/supply/defaultCalculatorFactory.js.map +0 -1
  321. package/dist/services/supply/index.d.ts.map +0 -1
  322. package/dist/services/supply/index.js.map +0 -1
  323. package/dist/services/supply/multisigSupplyCalculator.d.ts +0 -9
  324. package/dist/services/supply/multisigSupplyCalculator.d.ts.map +0 -1
  325. package/dist/services/supply/multisigSupplyCalculator.js +0 -21
  326. package/dist/services/supply/multisigSupplyCalculator.js.map +0 -1
  327. package/dist/services/supply/uniV3SupplyCalculator.d.ts.map +0 -1
  328. package/dist/services/supply/uniV3SupplyCalculator.js.map +0 -1
  329. package/dist/services/supplyAdjustmentService.d.ts.map +0 -1
  330. package/dist/services/supplyAdjustmentService.js.map +0 -1
  331. package/dist/services/swapService.d.ts +0 -70
  332. package/dist/services/swapService.d.ts.map +0 -1
  333. package/dist/services/swapService.js +0 -134
  334. package/dist/services/swapService.js.map +0 -1
  335. package/dist/services/tokenMetadataService.d.ts +0 -8
  336. package/dist/services/tokenMetadataService.d.ts.map +0 -1
  337. package/dist/services/tokenMetadataService.js +0 -44
  338. package/dist/services/tokenMetadataService.js.map +0 -1
  339. package/dist/types/contractAddresses.d.ts +0 -23
  340. package/dist/types/contractAddresses.d.ts.map +0 -1
  341. package/dist/types/contractAddresses.js.map +0 -1
  342. package/dist/types/exchange.d.ts +0 -6
  343. package/dist/types/exchange.d.ts.map +0 -1
  344. package/dist/types/exchange.js +0 -3
  345. package/dist/types/exchange.js.map +0 -1
  346. package/dist/types/index.d.ts.map +0 -1
  347. package/dist/types/index.js.map +0 -1
  348. package/dist/types/provider.d.ts +0 -29
  349. package/dist/types/provider.d.ts.map +0 -1
  350. package/dist/types/provider.js.map +0 -1
  351. package/dist/types/token.d.ts.map +0 -1
  352. /package/dist/{constants → core/constants}/aaveConfig.d.ts +0 -0
  353. /package/dist/{constants → core/constants}/aaveConfig.js +0 -0
  354. /package/dist/{constants → core/constants}/contractNames.d.ts +0 -0
  355. /package/dist/{constants → core/constants}/contractNames.js +0 -0
  356. /package/dist/{constants → core/constants}/protocolAddresses.d.ts +0 -0
  357. /package/dist/{constants → core/constants}/protocolAddresses.js +0 -0
  358. /package/dist/{types → core/types}/contractAddresses.js +0 -0
  359. /package/dist/{types → core/types}/token.js +0 -0
  360. /package/dist/services/{supply → tokens/supply}/ISupplyCalculator.d.ts +0 -0
  361. /package/dist/services/{supply → tokens/supply}/ISupplyCalculator.js +0 -0
  362. /package/dist/services/{supply → tokens/supply}/calculatorFactory.js +0 -0
  363. /package/dist/services/{supply → tokens/supply}/index.d.ts +0 -0
  364. /package/dist/services/{supply → tokens/supply}/index.js +0 -0
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDefaultRpcUrl = getDefaultRpcUrl;
4
+ exports.getChainConfig = getChainConfig;
5
+ const chains_1 = require("viem/chains");
6
+ const viem_1 = require("viem");
7
+ const chainId_1 = require("../core/constants/chainId");
8
+ // Celo Sepolia chain definition (not available in viem/chains yet)
9
+ const celoSepolia = (0, viem_1.defineChain)({
10
+ id: 11142220,
11
+ name: 'Celo Sepolia',
12
+ nativeCurrency: {
13
+ decimals: 18,
14
+ name: 'CELO',
15
+ symbol: 'CELO',
16
+ },
17
+ rpcUrls: {
18
+ default: {
19
+ http: ['https://forno.celo-sepolia.celo-testnet.org'],
20
+ },
21
+ },
22
+ blockExplorers: {
23
+ default: {
24
+ name: 'Celo Explorer',
25
+ url: 'https://sepolia.celoscan.io',
26
+ },
27
+ },
28
+ testnet: true,
29
+ });
30
+ /**
31
+ * Get the default RPC URL for a given chain ID
32
+ * @param chainId - The chain ID
33
+ * @returns The default RPC URL for the chain
34
+ * @throws Error if chain ID is not supported
35
+ */
36
+ function getDefaultRpcUrl(chainId) {
37
+ switch (chainId) {
38
+ case chainId_1.ChainId.CELO:
39
+ return 'https://forno.celo.org';
40
+ case chainId_1.ChainId.CELO_SEPOLIA:
41
+ return 'https://forno.celo-sepolia.celo-testnet.org';
42
+ default:
43
+ throw new Error(`Unsupported chain ID: ${chainId}`);
44
+ }
45
+ }
46
+ /**
47
+ * Get the viem chain configuration for a given chain ID
48
+ * @param chainId - The chain ID
49
+ * @returns The viem chain configuration
50
+ * @throws Error if chain ID is not supported
51
+ */
52
+ function getChainConfig(chainId) {
53
+ switch (chainId) {
54
+ case chainId_1.ChainId.CELO:
55
+ return chains_1.celo;
56
+ case chainId_1.ChainId.CELO_SEPOLIA:
57
+ return celoSepolia;
58
+ default:
59
+ throw new Error(`Unsupported chain ID: ${chainId}`);
60
+ }
61
+ }
62
+ //# sourceMappingURL=chainConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chainConfig.js","sourceRoot":"","sources":["../../src/utils/chainConfig.ts"],"names":[],"mappings":";;AAiCA,4CASC;AAQD,wCASC;AA3DD,wCAA8C;AAC9C,+BAAkC;AAClC,uDAAmD;AAEnD,mEAAmE;AACnE,MAAM,WAAW,GAAG,IAAA,kBAAW,EAAC;IAC9B,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,cAAc;IACpB,cAAc,EAAE;QACd,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,MAAM;KACf;IACD,OAAO,EAAE;QACP,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,6CAA6C,CAAC;SACtD;KACF;IACD,cAAc,EAAE;QACd,OAAO,EAAE;YACP,IAAI,EAAE,eAAe;YACrB,GAAG,EAAE,6BAA6B;SACnC;KACF;IACD,OAAO,EAAE,IAAI;CACd,CAAC,CAAA;AAEF;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,iBAAO,CAAC,IAAI;YACf,OAAO,wBAAwB,CAAA;QACjC,KAAK,iBAAO,CAAC,YAAY;YACvB,OAAO,6CAA6C,CAAA;QACtD;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAA;IACvD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,OAAe;IAC5C,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,iBAAO,CAAC,IAAI;YACf,OAAO,aAAI,CAAA;QACb,KAAK,iBAAO,CAAC,YAAY;YACvB,OAAO,WAAW,CAAA;QACpB;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAA;IACvD,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Pool } from '../core/types';
2
+ import type { PublicClient } from 'viem';
3
+ /**
4
+ * Calculate cost percentage for a pool based on its type
5
+ * Returns cost as a percentage (e.g., 0.5 = 0.5%)
6
+ *
7
+ * @param pool - The pool to calculate cost for
8
+ * @param publicClient - Viem public client for RPC calls
9
+ * @returns Cost percentage for the pool
10
+ */
11
+ export declare function getPoolCostPercent(pool: Pool, publicClient: PublicClient): Promise<number>;
12
+ //# sourceMappingURL=costUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"costUtils.d.ts","sourceRoot":"","sources":["../../src/utils/costUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,IAAI,EAAE,MAAM,eAAe,CAAA;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAGxC;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhG"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPoolCostPercent = getPoolCostPercent;
4
+ const types_1 = require("../core/types");
5
+ const abis_1 = require("../core/abis");
6
+ const virtualPool_1 = require("../core/abis/virtualPool");
7
+ /**
8
+ * Calculate cost percentage for a pool based on its type
9
+ * Returns cost as a percentage (e.g., 0.5 = 0.5%)
10
+ *
11
+ * @param pool - The pool to calculate cost for
12
+ * @param publicClient - Viem public client for RPC calls
13
+ * @returns Cost percentage for the pool
14
+ */
15
+ async function getPoolCostPercent(pool, publicClient) {
16
+ if (pool.poolType === types_1.PoolType.FPMM) {
17
+ return getFPMMCostPercent(pool.poolAddr, publicClient);
18
+ }
19
+ else if (pool.poolType === types_1.PoolType.Virtual) {
20
+ return getVirtualPoolCostPercent(pool.poolAddr, publicClient);
21
+ }
22
+ else {
23
+ throw new Error('Invalid pool type');
24
+ }
25
+ }
26
+ /**
27
+ * Calculate cost for FPMM pools
28
+ * FPMM pools use lpFee + protocolFee in basis points (10000 = 100%)
29
+ */
30
+ async function getFPMMCostPercent(poolAddress, publicClient) {
31
+ const [lpFee, protocolFee] = await Promise.all([
32
+ publicClient.readContract({
33
+ address: poolAddress,
34
+ abi: abis_1.FPMM_ABI,
35
+ functionName: 'lpFee',
36
+ }),
37
+ publicClient.readContract({
38
+ address: poolAddress,
39
+ abi: abis_1.FPMM_ABI,
40
+ functionName: 'protocolFee',
41
+ }),
42
+ ]);
43
+ // Convert from basis points to percentage
44
+ const totalBasisPoints = Number(lpFee) + Number(protocolFee);
45
+ return totalBasisPoints / 100;
46
+ }
47
+ /**
48
+ * Calculate cost for Virtual pools
49
+ */
50
+ async function getVirtualPoolCostPercent(poolAddress, publicClient) {
51
+ const protocolFee = await publicClient.readContract({
52
+ address: poolAddress,
53
+ abi: virtualPool_1.VIRTUAL_POOL_ABI,
54
+ functionName: 'protocolFee',
55
+ });
56
+ //TODO: Confirim calculation
57
+ return Number(protocolFee) / 100;
58
+ }
59
+ //# sourceMappingURL=costUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"costUtils.js","sourceRoot":"","sources":["../../src/utils/costUtils.ts"],"names":[],"mappings":";;AAaA,gDAQC;AArBD,yCAA8C;AAC9C,uCAAuC;AAEvC,0DAA2D;AAE3D;;;;;;;GAOG;AACI,KAAK,UAAU,kBAAkB,CAAC,IAAU,EAAE,YAA0B;IAC7E,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IACxD,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAQ,CAAC,OAAO,EAAE,CAAC;QAC9C,OAAO,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IAC/D,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACtC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAAC,WAAmB,EAAE,YAA0B;IAC/E,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,YAAY,CAAC,YAAY,CAAC;YACxB,OAAO,EAAE,WAA4B;YACrC,GAAG,EAAE,eAAQ;YACb,YAAY,EAAE,OAAO;SACtB,CAAoB;QACrB,YAAY,CAAC,YAAY,CAAC;YACxB,OAAO,EAAE,WAA4B;YACrC,GAAG,EAAE,eAAQ;YACb,YAAY,EAAE,aAAa;SAC5B,CAAoB;KACtB,CAAC,CAAA;IAEF,0CAA0C;IAC1C,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;IAC5D,OAAO,gBAAgB,GAAG,GAAG,CAAA;AAC/B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,yBAAyB,CAAC,WAAmB,EAAE,YAA0B;IACtF,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;QAClD,OAAO,EAAE,WAA4B;QACrC,GAAG,EAAE,8BAAgB;QACrB,YAAY,EAAE,aAAa;KAC5B,CAAC,CAAA;IAEF,4BAA4B;IAC5B,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,GAAG,CAAA;AAClC,CAAC"}
@@ -1,2 +1,6 @@
1
1
  export * from './retry';
2
+ export * from './chainConfig';
3
+ export * from './routes';
4
+ export * from './sortUtils';
5
+ export * from './pathEncoder';
2
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
@@ -15,4 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./retry"), exports);
18
+ __exportStar(require("./chainConfig"), exports);
19
+ __exportStar(require("./routes"), exports);
20
+ __exportStar(require("./sortUtils"), exports);
21
+ __exportStar(require("./pathEncoder"), exports);
18
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,gDAA6B;AAC7B,2CAAwB;AACxB,8CAA2B;AAC3B,gDAA6B"}
@@ -0,0 +1,28 @@
1
+ import { Address } from 'viem';
2
+ import { Pool } from '../core/types';
3
+ /**
4
+ * Route structure expected by the Router contract's getAmountsOut and swapTokensForTokens functions
5
+ */
6
+ export interface RouterRoute {
7
+ from: Address;
8
+ to: Address;
9
+ factory: Address;
10
+ }
11
+ /**
12
+ * Converts a route path to the format expected by the Router contract.
13
+ * Used by both QuoteService (getAmountsOut) and SwapService (swapTokensForTokens).
14
+ *
15
+ * @param path - The route path (array of pools)
16
+ * @param tokenIn - The input token address (determines swap direction)
17
+ * @param _tokenOut - The output token address (unused but kept for API clarity)
18
+ * @returns Array of RouterRoute objects for the contract call
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const route = await routeService.findRoute(cUSD, CELO)
23
+ * const routerRoutes = encodeRoutePath(route.path, cUSD, CELO)
24
+ * // routerRoutes can now be passed to Router.getAmountsOut or Router.swapTokensForTokens
25
+ * ```
26
+ */
27
+ export declare function encodeRoutePath(path: Pool[], tokenIn: Address, _tokenOut: Address): RouterRoute[];
28
+ //# sourceMappingURL=pathEncoder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathEncoder.d.ts","sourceRoot":"","sources":["../../src/utils/pathEncoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEpC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAA;IACb,EAAE,EAAE,OAAO,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,WAAW,EAAE,CA4CjG"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeRoutePath = encodeRoutePath;
4
+ /**
5
+ * Converts a route path to the format expected by the Router contract.
6
+ * Used by both QuoteService (getAmountsOut) and SwapService (swapTokensForTokens).
7
+ *
8
+ * @param path - The route path (array of pools)
9
+ * @param tokenIn - The input token address (determines swap direction)
10
+ * @param _tokenOut - The output token address (unused but kept for API clarity)
11
+ * @returns Array of RouterRoute objects for the contract call
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const route = await routeService.findRoute(cUSD, CELO)
16
+ * const routerRoutes = encodeRoutePath(route.path, cUSD, CELO)
17
+ * // routerRoutes can now be passed to Router.getAmountsOut or Router.swapTokensForTokens
18
+ * ```
19
+ */
20
+ function encodeRoutePath(path, tokenIn, _tokenOut) {
21
+ const routes = [];
22
+ const tokenInLower = tokenIn.toLowerCase();
23
+ // Check if we need to reverse the path
24
+ // The path is stored in canonical order, but we may need to traverse it backwards
25
+ const firstPool = path[0];
26
+ const startsWithTokenIn = firstPool.token0.toLowerCase() === tokenInLower || firstPool.token1.toLowerCase() === tokenInLower;
27
+ // If tokenIn isn't in the first pool, reverse the path
28
+ const orderedPath = startsWithTokenIn ? path : [...path].reverse();
29
+ let currentTokenIn = tokenInLower;
30
+ for (const pool of orderedPath) {
31
+ const token0 = pool.token0.toLowerCase();
32
+ const token1 = pool.token1.toLowerCase();
33
+ // Determine direction: which token is the input for this hop?
34
+ let from;
35
+ let to;
36
+ if (currentTokenIn === token0) {
37
+ from = pool.token0;
38
+ to = pool.token1;
39
+ }
40
+ else if (currentTokenIn === token1) {
41
+ from = pool.token1;
42
+ to = pool.token0;
43
+ }
44
+ else {
45
+ throw new Error(`Token ${currentTokenIn} not found in pool ${pool.poolAddr}`);
46
+ }
47
+ routes.push({
48
+ from,
49
+ to,
50
+ factory: pool.factoryAddr,
51
+ });
52
+ // The output of this hop becomes the input of the next hop
53
+ currentTokenIn = to.toLowerCase();
54
+ }
55
+ return routes;
56
+ }
57
+ //# sourceMappingURL=pathEncoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathEncoder.js","sourceRoot":"","sources":["../../src/utils/pathEncoder.ts"],"names":[],"mappings":";;AA4BA,0CA4CC;AA5DD;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,eAAe,CAAC,IAAY,EAAE,OAAgB,EAAE,SAAkB;IAChF,MAAM,MAAM,GAAkB,EAAE,CAAA;IAChC,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IAE1C,uCAAuC;IACvC,kFAAkF;IAClF,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,iBAAiB,GACrB,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,YAAY,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,YAAY,CAAA;IAEpG,uDAAuD;IACvD,MAAM,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAA;IAElE,IAAI,cAAc,GAAG,YAAY,CAAA;IAEjC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;QAExC,8DAA8D;QAC9D,IAAI,IAAa,CAAA;QACjB,IAAI,EAAW,CAAA;QAEf,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;YAC9B,IAAI,GAAG,IAAI,CAAC,MAAiB,CAAA;YAC7B,EAAE,GAAG,IAAI,CAAC,MAAiB,CAAA;QAC7B,CAAC;aAAM,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;YACrC,IAAI,GAAG,IAAI,CAAC,MAAiB,CAAA;YAC7B,EAAE,GAAG,IAAI,CAAC,MAAiB,CAAA;QAC7B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,SAAS,cAAc,sBAAsB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC/E,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;YACV,IAAI;YACJ,EAAE;YACF,OAAO,EAAE,IAAI,CAAC,WAAsB;SACrC,CAAC,CAAA;QAEF,2DAA2D;QAC3D,cAAc,GAAG,EAAE,CAAC,WAAW,EAAE,CAAA;IACnC,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,295 @@
1
+ import type { Route, RouteID, RouteWithCost, Pool } from '../core/types';
2
+ type TokenSymbol = string;
3
+ type Address = string;
4
+ /**
5
+ * =============================================================================
6
+ * ROUTE GENERATION UTILITIES
7
+ * =============================================================================
8
+ *
9
+ * Utilities for generating optimal trading routes in the Mento protocol.
10
+ *
11
+ * The main workflow is:
12
+ *
13
+ * 1. Build connectivity structures from direct trading pairs
14
+ * 2. Generate all possible routes (direct + two-hop)
15
+ * 3. Select optimal routes using cost data or heuristics
16
+ *
17
+ * ALGORITHM OVERVIEW:
18
+ * - Creates a graph where tokens are nodes and direct exchanges are edges
19
+ * - Uses graph traversal to find two-hop routes through intermediate tokens
20
+ * - Optimizes route selection based on cost data when available
21
+ * - Falls back to heuristics (prefer direct routes, major stablecoins)
22
+ * =============================================================================
23
+ */
24
+ /**
25
+ * Connectivity data structure that represents the token graph connecting all tokens.
26
+ * Helps to efficiently answer: "How can I trade from token A to token B?"
27
+ *
28
+ * CONCRETE EXAMPLE:
29
+ * Given these direct trading pairs:
30
+ * - cUSD ↔ CELO (direct exchange exists)
31
+ * - CELO ↔ cEUR (direct exchange exists)
32
+ * - cUSD ↔ cREAL (direct exchange exists)
33
+ *
34
+ * How route finding works:
35
+ * - Direct route: cUSD → cEUR? Check token graph: cUSD connects to [CELO, cREAL], none is cEUR → No direct route
36
+ * - Two-hop route: cUSD → ? → cEUR?
37
+ * - cUSD connects to CELO, CELO connects to cEUR → Found route: cUSD → CELO → cEUR
38
+ * - cUSD connects to cREAL, cREAL connects to [cUSD] → No route via cREAL
39
+ *
40
+ * The "connectivity" part means we can quickly traverse the network of
41
+ * token connections to find all possible trading paths.
42
+ */
43
+ export interface ConnectivityData {
44
+ /** Maps token address to symbol for efficient lookups
45
+ *
46
+ * ```
47
+ * '0x765D...' → 'cUSD'
48
+ * '0x471E...' → 'CELO'
49
+ * '0xD876...' → 'cEUR'
50
+ * ```
51
+ */
52
+ addrToSymbol: Map<Address, TokenSymbol>;
53
+ /** Adjacency list mapping which tokens connect to which
54
+ * Used for finding two-hop routes by traversing token → neighbor → neighbor.
55
+ *
56
+ * Example for a cUSD => cEUR swap: First we find cUSD → [CELO, cKES, ...]
57
+ * Then we find CELO → [cUSD, cEUR, ...] = found route via cUSD → CELO → cEUR
58
+ *
59
+ * ```
60
+ * 'cUSD_addr' → Set(['CELO_addr', 'cKES_addr']) // cUSD connects to CELO and cKES
61
+ * 'CELO_addr' → Set(['cUSD_addr', 'cEUR_addr']) // CELO connects to cUSD and cEUR
62
+ * 'cEUR_addr' → Set(['CELO_addr']) // cEUR connects to CELO
63
+ * 'cKES_addr' → Set(['cUSD_addr']) // cKES connects to cUSD
64
+ * ```
65
+ */
66
+ tokenGraph: Map<Address, Set<Address>>;
67
+ /** Maps sorted token address pairs to their direct route details
68
+ * ```
69
+ * 'CELO_addr-cEUR_addr' → { route details for CELO ↔ cEUR }
70
+ * 'CELO_addr-cUSD_addr' → { route details for CELO ↔ cUSD }
71
+ * 'cUSD_addr-cKES_addr' → { route details for cUSD ↔ cKES }
72
+ * ```
73
+ */
74
+ directRouteMap: Map<RouteID, Pool>;
75
+ /** Original direct routes from mento.getDirectRoutes() for reference */
76
+ directRoutes: Route[];
77
+ }
78
+ /**
79
+ * Builds the connectivity data structures needed for route generation.
80
+ *
81
+ * Transforms a list of direct trading pairs into our ConnectivityData
82
+ * that allow us to quickly find trading routes.
83
+ *
84
+ * **Construction Process:**
85
+ *
86
+ * ```
87
+ * Input: TradablePairs = [
88
+ * { id: 'cUSD-CELO', assets: [cUSD, CELO], path: [exchange1_CELO_cUSD] },
89
+ * { id: 'CELO-cEUR', assets: [CELO, cEUR], path: [exchange2_CELO_cEUR] }
90
+ * ]
91
+ *
92
+ * Step 1 - Build addrToSymbol map:
93
+ * cUSD.address → 'cUSD'
94
+ * CELO.address → 'CELO'
95
+ * cEUR.address → 'cEUR'
96
+ *
97
+ * Step 2 - Build directPathMap (sorted alphabetically for consistency):
98
+ * 'CELO_addr-cEUR_addr' → exchange2_CELO_cEUR
99
+ * 'CELO_addr-cUSD_addr' → exchange1_CELO_cUSD
100
+ *
101
+ * Step 3 - Build bidirectional tokenGraph:
102
+ * cUSD.address → Set([CELO.address])
103
+ * CELO.address → Set([cUSD.address, cEUR.address])
104
+ * cEUR.address → Set([CELO.address])
105
+ * ```
106
+ *
107
+ * **Result**: We can now efficiently answer:
108
+ * - "What's the symbol for address X?" → addrToSymbol.get(addr)
109
+ * - "What exchange connects tokens X and Y?" → directPathMap.get(sortedAddressPairKey)
110
+ * - "What tokens can I reach from token X?" → tokenGraph.get(X)
111
+ *
112
+ * @param directRoutes - Array of direct trading pairs
113
+ * @returns Connectivity data structure for efficient route generation
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * const directPairs = [
118
+ * { id: 'cUSD-CELO', assets: [cUSD, CELO], path: [exchange1] },
119
+ * { id: 'CELO-cEUR', assets: [CELO, cEUR], path: [exchange2] }
120
+ * ]
121
+ *
122
+ * const connectivityData = buildConnectivityStructures(directPairs)
123
+ *
124
+ * // Now we can efficiently find routes:
125
+ * // 1. Check if cUSD connects to anything: connectivityData.tokenGraph.get(cUSD.address) → [CELO.address]
126
+ * // 2. Check if CELO connects to cEUR: connectivityData.tokenGraph.get(CELO.address) → [cUSD.address, cEUR.address] ✓
127
+ * // 3. Get exchange details: connectivityData.directPathMap.get('CELO_addr-cEUR_addr') → exchange2_CELO_cEUR
128
+ * // Result: Found route cUSD → CELO → cEUR with exchange details
129
+ * ```
130
+ */
131
+ export declare function buildConnectivityStructures(directRoutes: Route[]): ConnectivityData;
132
+ /**
133
+ * Generates all possible routes (direct + two-hop) using connectivity data.
134
+ *
135
+ * This function implements a route discovery algorithm that:
136
+ *
137
+ * 1. **Adds all direct routes** (single-hop routes)
138
+ * 2. **Discovers two-hop routes** using graph traversal:
139
+ * - For each token A, find its neighbors (tokens directly connected)
140
+ * - For each neighbor B, find B's neighbors
141
+ * - If B connects to token C (C ≠ A), then A->B->C is a valid route
142
+ *
143
+ * **Route Deduplication**: Multiple routes between the same token pair
144
+ * are collected in arrays, allowing the selection algorithm to choose
145
+ * the best one based on cost data or heuristics.
146
+ *
147
+ * **Canonical Route IDs**: All routes use alphabetically sorted symbols
148
+ * (e.g., 'cEUR-cUSD' not 'cUSD-cEUR') for consistent identification.
149
+ *
150
+ * @param connectivityData - The connectivity data from buildConnectivityStructures()
151
+ * @returns Map of route ID -> array of possible routes for that token pair
152
+ *
153
+ * @example
154
+ * ```typescript
155
+ * // Given direct routes: cUSD-CELO, CELO-cEUR, cUSD-USDC
156
+ * const allRoutes = generateAllRoutes(connectivityData)
157
+ *
158
+ * // Results might include:
159
+ * // 'cUSD-CELO' -> [{ path: [cUSD->CELO] }] // direct route
160
+ * // 'cEUR-cUSD' -> [
161
+ * // { path: [cUSD->USDC, USDC->cEUR] } // two-hop via USDC
162
+ * // { path: [cUSD->CELO, CELO->cEUR] } // two-hop via CELO
163
+ * // ]
164
+ * ```
165
+ */
166
+ export declare function generateAllRoutes(connectivityData: ConnectivityData): Map<RouteID, Route[]>;
167
+ /**
168
+ * Creates a two-hop tradable pair if valid exchange hops exist.
169
+ *
170
+ * 1. **Validates tokens exist** in the asset map
171
+ * 2. **Finds exchange hops** for both segments of the route
172
+ * 3. **Creates canonical pair structure** with sorted symbols
173
+ *
174
+ * **Route Structure**: The resulting pair represents trading from start->end
175
+ * via intermediate token, but the assets are ordered alphabetically by symbol
176
+ * for consistency (canonical form).
177
+ *
178
+ * **Path Representation**: The path array contains the actual exchange hops
179
+ * needed to execute the trade, preserving the routing information.
180
+ *
181
+ * @param startToken - Starting token address
182
+ * @param intermediate - Intermediate token address for routing
183
+ * @param end - Destination token address
184
+ * @param assetMap - Map of token address -> Asset details
185
+ * @param directPathMap - Map of token pairs -> exchange hop details
186
+ * @returns Route if valid route exists, null otherwise
187
+ *
188
+ * @example
189
+ * ```typescript
190
+ * // Create route: cUSD -> CELO -> cEUR
191
+ * const pair = createTwoHopPair(
192
+ * '0x765D...', // cUSD address
193
+ * '0x471E...', // CELO address
194
+ * '0xD876...', // cEUR address
195
+ * addrToSymbol,
196
+ * directPathMap
197
+ * )
198
+ *
199
+ * // Result:
200
+ * // {
201
+ * // id: 'cEUR-cUSD', // alphabetical order
202
+ * // assets: [cEUR, cUSD], // alphabetical order
203
+ * // path: [ // actual routing path
204
+ * // { cUSD->CELO exchange },
205
+ * // { CELO->cEUR exchange }
206
+ * // ]
207
+ * // }
208
+ * ```
209
+ */
210
+ export declare function createTwoHopRoute(startAddr: Address, intermediateAddr: Address, endAddr: Address, addrToSymbol: Map<Address, TokenSymbol>, directRouteMap: Map<RouteID, Pool>): Route | null;
211
+ /**
212
+ * Selects optimal routes from all candidates based on spread data or heuristics.
213
+ *
214
+ * This is the route optimization engine that implements the following logic:
215
+ *
216
+ * **For Single Route**: Use it directly (no optimization needed)
217
+ *
218
+ * **For Multiple Routes**:
219
+ * - If `returnAllRoutes=true`: Return all routes (used for cache generation)
220
+ * - If `returnAllRoutes=false`: Apply optimization to select the best route
221
+ *
222
+ * **Route Selection Strategy**: Delegates to `selectBestRoute()` which uses
223
+ * a multi-tier approach prioritizing cost efficiency and reliability.
224
+ *
225
+ * @param allRoutes - Map of pair ID -> array of possible routes
226
+ * @param returnAllRoutes - Whether to return all routes or optimize selection
227
+ * @param assetMap - Asset map for token symbol lookups during optimization
228
+ * @returns Array of selected optimal routes
229
+ *
230
+ * @example
231
+ * ```typescript
232
+ * // Multiple routes for cUSD-cEUR pair
233
+ * const candidates = new Map([
234
+ * ['cEUR-cUSD', [
235
+ * { path: [cUSD->CELO->cEUR], costData: { totalCostPercent: 0.5 } },
236
+ * { path: [cUSD->cREAL->cEUR], costData: { totalCostPercent: 0.3 } },
237
+ * { path: [cUSD->cEUR] } // direct route, no cost data
238
+ * ]]
239
+ * ])
240
+ *
241
+ * const optimal = selectOptimalRoutes(candidates, false, assetMap)
242
+ * // Returns the cUSD->cREAL->cEUR route (lowest cost: 0.3%)
243
+ * ```
244
+ */
245
+ export declare function selectOptimalRoutes(allRoutes: Map<RouteID, Route[]>, returnAllRoutes: boolean, addrToSymbol: Map<Address, TokenSymbol>): (Route | RouteWithCost)[];
246
+ /**
247
+ * Selects the best route from candidates using cost data or fallback heuristics.
248
+ *
249
+ * This function implements a sophisticated route selection algorithm with
250
+ * multiple optimization tiers:
251
+ *
252
+ * **Tier 1 - Cost-Based Optimization** (Preferred):
253
+ * - Use routes with cost data (actual cost information)
254
+ * - Select route with lowest `totalCostPercent`
255
+ * - This provides the most cost-efficient trading
256
+ *
257
+ * **Tier 2 - Direct Route Preference** (Fallback):
258
+ * - If no cost data available, prefer direct (single-hop) routes
259
+ * - Direct routes have lower execution risk and gas costs
260
+ *
261
+ * **Tier 3 - Major Stablecoin Preference** (Final Fallback):
262
+ * - For two-hop routes, prefer those going through major stablecoins
263
+ * - Major FX currencies like cUSD and cEUR typically have better liquidity
264
+ *
265
+ * **Tier 4 - First Available** (Last Resort):
266
+ * - If no other heuristics apply, use the first route found
267
+ *
268
+ * @param candidates - Array of possible routes for the same token pair
269
+ * @param assetMap - Asset map for token symbol lookups
270
+ * @returns The optimal route selected using the tier system
271
+ *
272
+ * @example
273
+ * ```typescript
274
+ * const candidates = [
275
+ * { path: [A->B->C], costData: { totalCostPercent: 0.8 } },
276
+ * { path: [A->D->C], costData: { totalCostPercent: 0.4 } }, // Winner: lowest cost
277
+ * { path: [A->C] }, // direct route, no cost data
278
+ * ]
279
+ *
280
+ * const best = selectBestRoute(candidates, assetMap)
281
+ * // Returns the A->D->C route (0.4% cost)
282
+ * ```
283
+ */
284
+ export declare function selectBestRoute(candidates: Route[], addrToSymbol: Map<Address, TokenSymbol>): Route | RouteWithCost;
285
+ /**
286
+ * Extracts the intermediate token address from a two-hop route.
287
+ * In a two-hop route A->B->C, this function finds token B (the intermediate).
288
+ */
289
+ export declare function getIntermediateToken(route: Route): Address | undefined;
290
+ /**
291
+ * Type guard to check if a Route has cost data.
292
+ */
293
+ export declare function hasCostData(pair: Route | RouteWithCost): pair is RouteWithCost;
294
+ export {};
295
+ //# sourceMappingURL=routeUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routeUtils.d.ts","sourceRoot":"","sources":["../../src/utils/routeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAS,aAAa,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAI/E,KAAK,WAAW,GAAG,MAAM,CAAA;AACzB,KAAK,OAAO,GAAG,MAAM,CAAA;AAErB;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;OAOG;IACH,YAAY,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAEvC;;;;;;;;;;;;OAYG;IACH,UAAU,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IAEtC;;;;;;OAMG;IACH,cAAc,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAElC,wEAAwE;IACxE,YAAY,EAAE,KAAK,EAAE,CAAA;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,gBAAgB,CA4BnF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAgD3F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,OAAO,EAClB,gBAAgB,EAAE,OAAO,EACzB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,EACvC,cAAc,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GACjC,KAAK,GAAG,IAAI,CAgCd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAChC,eAAe,EAAE,OAAO,EACxB,YAAY,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,GACtC,CAAC,KAAK,GAAG,aAAa,CAAC,EAAE,CAoB3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,KAAK,GAAG,aAAa,CAwBnH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,CAMtE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,aAAa,GAAG,IAAI,IAAI,aAAa,CAE9E"}