@mento-protocol/mento-sdk 3.2.2-beta1 → 3.2.3

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 (397) hide show
  1. package/dist/cjs/ChainClient.d.ts +9 -0
  2. package/dist/cjs/ChainClient.js +58 -0
  3. package/dist/cjs/TestChainClient.d.ts +7 -0
  4. package/dist/cjs/TestChainClient.js +41 -0
  5. package/dist/cjs/constants/addresses.d.ts +4 -0
  6. package/dist/cjs/constants/addresses.js +59 -0
  7. package/dist/cjs/constants/currencies.d.ts +5 -0
  8. package/dist/cjs/constants/currencies.js +29 -0
  9. package/dist/cjs/constants/index.d.ts +4 -0
  10. package/dist/{services/borrow → cjs/constants}/index.js +4 -4
  11. package/dist/cjs/constants/tokens.11142220.d.ts +2 -0
  12. package/dist/cjs/constants/tokens.11142220.js +128 -0
  13. package/dist/cjs/constants/tokens.42220.d.ts +2 -0
  14. package/dist/cjs/constants/tokens.42220.js +128 -0
  15. package/dist/cjs/constants/tokens.d.ts +65 -0
  16. package/dist/cjs/constants/tokens.js +170 -0
  17. package/dist/cjs/constants/tradablePairs.11142220.d.ts +2 -0
  18. package/dist/cjs/constants/tradablePairs.11142220.js +7391 -0
  19. package/dist/cjs/constants/tradablePairs.42220.d.ts +2 -0
  20. package/dist/cjs/constants/tradablePairs.42220.js +7391 -0
  21. package/dist/cjs/constants/tradablePairs.d.ts +16 -0
  22. package/dist/cjs/constants/tradablePairs.js +53 -0
  23. package/dist/cjs/enums/chainId.d.ts +4 -0
  24. package/dist/{core/constants → cjs/enums}/chainId.js +1 -4
  25. package/dist/cjs/enums/index.d.ts +3 -0
  26. package/dist/{services/liquidity → cjs/enums}/index.js +3 -2
  27. package/dist/cjs/enums/proposalState.d.ts +10 -0
  28. package/dist/cjs/enums/proposalState.js +14 -0
  29. package/dist/cjs/enums/tradingMode.d.ts +17 -0
  30. package/dist/cjs/enums/tradingMode.js +21 -0
  31. package/dist/cjs/governance.d.ts +62 -0
  32. package/dist/cjs/governance.js +151 -0
  33. package/dist/cjs/index.d.ts +7 -0
  34. package/dist/{core/constants → cjs}/index.js +7 -6
  35. package/dist/cjs/interfaces/IChainClient.d.ts +6 -0
  36. package/dist/{core/types/route.js → cjs/interfaces/IChainClient.js} +0 -1
  37. package/dist/cjs/interfaces/index.d.ts +4 -0
  38. package/dist/{core/errors → cjs/interfaces}/index.js +4 -4
  39. package/dist/cjs/interfaces/tradingLimit.d.ts +7 -0
  40. package/dist/{core/types/token.js → cjs/interfaces/tradingLimit.js} +0 -1
  41. package/dist/cjs/interfaces/tradingLimitsConfig.d.ts +10 -0
  42. package/dist/{core/types/borrow.js → cjs/interfaces/tradingLimitsConfig.js} +0 -1
  43. package/dist/cjs/interfaces/tradingLimitsState.d.ts +9 -0
  44. package/dist/{core/types/provider.js → cjs/interfaces/tradingLimitsState.js} +0 -1
  45. package/dist/cjs/limits.d.ts +33 -0
  46. package/dist/cjs/limits.js +130 -0
  47. package/dist/cjs/mento.d.ts +287 -0
  48. package/dist/cjs/mento.js +699 -0
  49. package/dist/{utils → cjs}/routeUtils.d.ts +93 -84
  50. package/dist/{utils → cjs}/routeUtils.js +124 -123
  51. package/dist/cjs/types/contractAddressMap.d.ts +4 -0
  52. package/dist/cjs/types/contractAddressMap.js +2 -0
  53. package/dist/cjs/types/contractAddresses.d.ts +23 -0
  54. package/dist/cjs/types/contractAddresses.js +2 -0
  55. package/dist/cjs/types/index.d.ts +2 -0
  56. package/dist/{services/pools → cjs/types}/index.js +2 -2
  57. package/dist/cjs/utils.d.ts +80 -0
  58. package/dist/cjs/utils.js +177 -0
  59. package/dist/esm/ChainClient.d.ts +9 -0
  60. package/dist/esm/ChainClient.js +54 -0
  61. package/dist/esm/TestChainClient.d.ts +7 -0
  62. package/dist/esm/TestChainClient.js +37 -0
  63. package/dist/esm/constants/addresses.d.ts +4 -0
  64. package/dist/esm/constants/addresses.js +55 -0
  65. package/dist/esm/constants/currencies.d.ts +5 -0
  66. package/dist/esm/constants/currencies.js +26 -0
  67. package/dist/esm/constants/index.d.ts +4 -0
  68. package/dist/esm/constants/index.js +4 -0
  69. package/dist/esm/constants/tokens.11142220.d.ts +2 -0
  70. package/dist/esm/constants/tokens.11142220.js +125 -0
  71. package/dist/esm/constants/tokens.42220.d.ts +2 -0
  72. package/dist/esm/constants/tokens.42220.js +125 -0
  73. package/dist/esm/constants/tokens.d.ts +65 -0
  74. package/dist/esm/constants/tokens.js +142 -0
  75. package/dist/esm/constants/tradablePairs.11142220.d.ts +2 -0
  76. package/dist/esm/constants/tradablePairs.11142220.js +7388 -0
  77. package/dist/esm/constants/tradablePairs.42220.d.ts +2 -0
  78. package/dist/esm/constants/tradablePairs.42220.js +7388 -0
  79. package/dist/esm/constants/tradablePairs.d.ts +16 -0
  80. package/dist/esm/constants/tradablePairs.js +26 -0
  81. package/dist/esm/enums/chainId.d.ts +4 -0
  82. package/dist/esm/{core/constants → enums}/chainId.js +0 -2
  83. package/dist/esm/enums/index.d.ts +3 -0
  84. package/dist/esm/enums/index.js +3 -0
  85. package/dist/esm/enums/proposalState.d.ts +10 -0
  86. package/dist/esm/enums/proposalState.js +11 -0
  87. package/dist/esm/enums/tradingMode.d.ts +17 -0
  88. package/dist/esm/enums/tradingMode.js +18 -0
  89. package/dist/esm/governance.d.ts +62 -0
  90. package/dist/esm/governance.js +147 -0
  91. package/dist/esm/index.d.ts +7 -0
  92. package/dist/esm/index.js +6 -138
  93. package/dist/esm/interfaces/IChainClient.d.ts +6 -0
  94. package/dist/esm/interfaces/index.d.ts +4 -0
  95. package/dist/esm/interfaces/index.js +4 -0
  96. package/dist/esm/interfaces/tradingLimit.d.ts +7 -0
  97. package/dist/esm/interfaces/tradingLimitsConfig.d.ts +10 -0
  98. package/dist/esm/interfaces/tradingLimitsState.d.ts +9 -0
  99. package/dist/esm/limits.d.ts +33 -0
  100. package/dist/esm/limits.js +123 -0
  101. package/dist/esm/mento.d.ts +287 -0
  102. package/dist/esm/mento.js +671 -0
  103. package/dist/esm/routeUtils.d.ts +304 -0
  104. package/dist/esm/{utils/routeUtils.js → routeUtils.js} +116 -115
  105. package/dist/esm/types/contractAddressMap.d.ts +4 -0
  106. package/dist/esm/types/contractAddresses.d.ts +23 -0
  107. package/dist/esm/types/index.d.ts +2 -0
  108. package/dist/esm/types/index.js +2 -0
  109. package/dist/esm/utils.d.ts +80 -0
  110. package/dist/esm/utils.js +162 -0
  111. package/package.json +1 -1
  112. package/dist/cache/routes.d.ts +0 -13
  113. package/dist/cache/routes.js +0 -13733
  114. package/dist/cache/tokens.d.ts +0 -68
  115. package/dist/cache/tokens.js +0 -446
  116. package/dist/core/abis/activePool.d.ts +0 -2
  117. package/dist/core/abis/activePool.js +0 -14
  118. package/dist/core/abis/addressesRegistry.d.ts +0 -2
  119. package/dist/core/abis/addressesRegistry.js +0 -26
  120. package/dist/core/abis/bipoolmanager.d.ts +0 -34
  121. package/dist/core/abis/bipoolmanager.js +0 -72
  122. package/dist/core/abis/borrowerOperations.d.ts +0 -9
  123. package/dist/core/abis/borrowerOperations.js +0 -89
  124. package/dist/core/abis/breakerbox.d.ts +0 -13
  125. package/dist/core/abis/breakerbox.js +0 -8
  126. package/dist/core/abis/broker.d.ts +0 -2
  127. package/dist/core/abis/broker.js +0 -9
  128. package/dist/core/abis/erc20.d.ts +0 -9
  129. package/dist/core/abis/erc20.js +0 -21
  130. package/dist/core/abis/fpmm.d.ts +0 -270
  131. package/dist/core/abis/fpmm.js +0 -49
  132. package/dist/core/abis/fpmmFactory.d.ts +0 -85
  133. package/dist/core/abis/fpmmFactory.js +0 -26
  134. package/dist/core/abis/hintHelpers.d.ts +0 -2
  135. package/dist/core/abis/hintHelpers.js +0 -14
  136. package/dist/core/abis/index.d.ts +0 -22
  137. package/dist/core/abis/index.js +0 -38
  138. package/dist/core/abis/liquidityStrategy.d.ts +0 -132
  139. package/dist/core/abis/liquidityStrategy.js +0 -10
  140. package/dist/core/abis/multiTroveGetter.d.ts +0 -8
  141. package/dist/core/abis/multiTroveGetter.js +0 -15
  142. package/dist/core/abis/priceFeed.d.ts +0 -7
  143. package/dist/core/abis/priceFeed.js +0 -16
  144. package/dist/core/abis/pricingmodule.d.ts +0 -2
  145. package/dist/core/abis/pricingmodule.js +0 -6
  146. package/dist/core/abis/reserve.d.ts +0 -3
  147. package/dist/core/abis/reserve.js +0 -18
  148. package/dist/core/abis/router.d.ts +0 -521
  149. package/dist/core/abis/router.js +0 -45
  150. package/dist/core/abis/sortedTroves.d.ts +0 -2
  151. package/dist/core/abis/sortedTroves.js +0 -15
  152. package/dist/core/abis/systemParams.d.ts +0 -2
  153. package/dist/core/abis/systemParams.js +0 -14
  154. package/dist/core/abis/troveManager.d.ts +0 -2
  155. package/dist/core/abis/troveManager.js +0 -27
  156. package/dist/core/abis/troveNFT.d.ts +0 -2
  157. package/dist/core/abis/troveNFT.js +0 -9
  158. package/dist/core/abis/virtualPool.d.ts +0 -50
  159. package/dist/core/abis/virtualPool.js +0 -11
  160. package/dist/core/abis/virtualPoolFactory.d.ts +0 -59
  161. package/dist/core/abis/virtualPoolFactory.js +0 -17
  162. package/dist/core/constants/addresses.d.ts +0 -18
  163. package/dist/core/constants/addresses.js +0 -113
  164. package/dist/core/constants/borrowConstants.d.ts +0 -10
  165. package/dist/core/constants/borrowConstants.js +0 -16
  166. package/dist/core/constants/borrowRegistries.d.ts +0 -7
  167. package/dist/core/constants/borrowRegistries.js +0 -30
  168. package/dist/core/constants/chainId.d.ts +0 -7
  169. package/dist/core/constants/contractNames.d.ts +0 -21
  170. package/dist/core/constants/contractNames.js +0 -24
  171. package/dist/core/constants/index.d.ts +0 -6
  172. package/dist/core/errors/base.d.ts +0 -8
  173. package/dist/core/errors/base.js +0 -17
  174. package/dist/core/errors/index.d.ts +0 -4
  175. package/dist/core/errors/oracle.d.ts +0 -9
  176. package/dist/core/errors/oracle.js +0 -15
  177. package/dist/core/errors/router.d.ts +0 -14
  178. package/dist/core/errors/router.js +0 -24
  179. package/dist/core/types/borrow.d.ts +0 -87
  180. package/dist/core/types/contractAddresses.d.ts +0 -42
  181. package/dist/core/types/contractAddresses.js +0 -3
  182. package/dist/core/types/index.d.ts +0 -10
  183. package/dist/core/types/index.js +0 -26
  184. package/dist/core/types/liquidity.d.ts +0 -194
  185. package/dist/core/types/liquidity.js +0 -3
  186. package/dist/core/types/pool.d.ts +0 -208
  187. package/dist/core/types/pool.js +0 -14
  188. package/dist/core/types/provider.d.ts +0 -45
  189. package/dist/core/types/route.d.ts +0 -62
  190. package/dist/core/types/token.d.ts +0 -21
  191. package/dist/core/types/tradingLimits.d.ts +0 -91
  192. package/dist/core/types/tradingLimits.js +0 -3
  193. package/dist/core/types/tradingMode.d.ts +0 -24
  194. package/dist/core/types/tradingMode.js +0 -31
  195. package/dist/core/types/transaction.d.ts +0 -45
  196. package/dist/core/types/transaction.js +0 -3
  197. package/dist/esm/cache/routes.js +0 -13728
  198. package/dist/esm/cache/tokens.js +0 -438
  199. package/dist/esm/core/abis/activePool.js +0 -10
  200. package/dist/esm/core/abis/addressesRegistry.js +0 -22
  201. package/dist/esm/core/abis/bipoolmanager.js +0 -68
  202. package/dist/esm/core/abis/borrowerOperations.js +0 -85
  203. package/dist/esm/core/abis/breakerbox.js +0 -4
  204. package/dist/esm/core/abis/broker.js +0 -5
  205. package/dist/esm/core/abis/erc20.js +0 -17
  206. package/dist/esm/core/abis/fpmm.js +0 -45
  207. package/dist/esm/core/abis/fpmmFactory.js +0 -22
  208. package/dist/esm/core/abis/hintHelpers.js +0 -10
  209. package/dist/esm/core/abis/index.js +0 -21
  210. package/dist/esm/core/abis/liquidityStrategy.js +0 -6
  211. package/dist/esm/core/abis/multiTroveGetter.js +0 -11
  212. package/dist/esm/core/abis/priceFeed.js +0 -12
  213. package/dist/esm/core/abis/pricingmodule.js +0 -2
  214. package/dist/esm/core/abis/reserve.js +0 -14
  215. package/dist/esm/core/abis/router.js +0 -41
  216. package/dist/esm/core/abis/sortedTroves.js +0 -11
  217. package/dist/esm/core/abis/systemParams.js +0 -10
  218. package/dist/esm/core/abis/troveManager.js +0 -23
  219. package/dist/esm/core/abis/troveNFT.js +0 -5
  220. package/dist/esm/core/abis/virtualPool.js +0 -7
  221. package/dist/esm/core/abis/virtualPoolFactory.js +0 -13
  222. package/dist/esm/core/constants/addresses.js +0 -107
  223. package/dist/esm/core/constants/borrowConstants.js +0 -12
  224. package/dist/esm/core/constants/borrowRegistries.js +0 -25
  225. package/dist/esm/core/constants/contractNames.js +0 -20
  226. package/dist/esm/core/constants/index.js +0 -5
  227. package/dist/esm/core/errors/base.js +0 -12
  228. package/dist/esm/core/errors/index.js +0 -3
  229. package/dist/esm/core/errors/oracle.js +0 -10
  230. package/dist/esm/core/errors/router.js +0 -18
  231. package/dist/esm/core/types/index.js +0 -9
  232. package/dist/esm/core/types/pool.js +0 -10
  233. package/dist/esm/core/types/tradingLimits.js +0 -1
  234. package/dist/esm/core/types/tradingMode.js +0 -26
  235. package/dist/esm/core/types/transaction.js +0 -1
  236. package/dist/esm/package.json +0 -1
  237. package/dist/esm/services/borrow/BorrowService.js +0 -455
  238. package/dist/esm/services/borrow/borrowHelpers.js +0 -3
  239. package/dist/esm/services/borrow/borrowMath.js +0 -127
  240. package/dist/esm/services/borrow/index.js +0 -3
  241. package/dist/esm/services/borrow/internal/borrowApprovalService.js +0 -48
  242. package/dist/esm/services/borrow/internal/borrowContextStore.js +0 -35
  243. package/dist/esm/services/borrow/internal/borrowErc20.js +0 -38
  244. package/dist/esm/services/borrow/internal/borrowHints.js +0 -27
  245. package/dist/esm/services/borrow/internal/borrowPositionParser.js +0 -82
  246. package/dist/esm/services/borrow/internal/borrowReadService.js +0 -271
  247. package/dist/esm/services/borrow/internal/borrowRegistryReader.js +0 -108
  248. package/dist/esm/services/borrow/internal/borrowTransactionService.js +0 -271
  249. package/dist/esm/services/borrow/internal/borrowTypes.js +0 -1
  250. package/dist/esm/services/borrow/internal/borrowValidation.js +0 -89
  251. package/dist/esm/services/index.js +0 -8
  252. package/dist/esm/services/liquidity/LiquidityService.js +0 -163
  253. package/dist/esm/services/liquidity/basicLiquidity.js +0 -162
  254. package/dist/esm/services/liquidity/index.js +0 -1
  255. package/dist/esm/services/liquidity/liquidityHelpers.js +0 -95
  256. package/dist/esm/services/liquidity/rebalance.js +0 -59
  257. package/dist/esm/services/liquidity/zapHelpers.js +0 -120
  258. package/dist/esm/services/liquidity/zapIn.js +0 -112
  259. package/dist/esm/services/liquidity/zapOut.js +0 -248
  260. package/dist/esm/services/pools/PoolService.js +0 -204
  261. package/dist/esm/services/pools/index.js +0 -1
  262. package/dist/esm/services/pools/poolDetails.js +0 -209
  263. package/dist/esm/services/pools/poolDiscovery.js +0 -112
  264. package/dist/esm/services/pools/rebalancePreview.js +0 -181
  265. package/dist/esm/services/quotes/QuoteService.js +0 -85
  266. package/dist/esm/services/quotes/index.js +0 -1
  267. package/dist/esm/services/routes/RouteService.js +0 -268
  268. package/dist/esm/services/routes/index.js +0 -1
  269. package/dist/esm/services/swap/SwapService.js +0 -247
  270. package/dist/esm/services/swap/index.js +0 -1
  271. package/dist/esm/services/tokens/index.js +0 -1
  272. package/dist/esm/services/tokens/tokenService.js +0 -285
  273. package/dist/esm/services/trading/TradingLimitsService.js +0 -154
  274. package/dist/esm/services/trading/TradingService.js +0 -196
  275. package/dist/esm/services/trading/index.js +0 -2
  276. package/dist/esm/utils/chainConfig.js +0 -118
  277. package/dist/esm/utils/costUtils.js +0 -56
  278. package/dist/esm/utils/deadline.js +0 -22
  279. package/dist/esm/utils/index.js +0 -9
  280. package/dist/esm/utils/multicall.js +0 -47
  281. package/dist/esm/utils/pathEncoder.js +0 -69
  282. package/dist/esm/utils/rateFeed.js +0 -23
  283. package/dist/esm/utils/retry.js +0 -24
  284. package/dist/esm/utils/routes.js +0 -2
  285. package/dist/esm/utils/sortUtils.js +0 -33
  286. package/dist/esm/utils/tokens.js +0 -2
  287. package/dist/esm/utils/tradingLimits.js +0 -163
  288. package/dist/esm/utils/validation.js +0 -30
  289. package/dist/index.d.ts +0 -101
  290. package/dist/index.js +0 -158
  291. package/dist/services/borrow/BorrowService.d.ts +0 -381
  292. package/dist/services/borrow/BorrowService.js +0 -460
  293. package/dist/services/borrow/borrowHelpers.d.ts +0 -4
  294. package/dist/services/borrow/borrowHelpers.js +0 -13
  295. package/dist/services/borrow/borrowMath.d.ts +0 -21
  296. package/dist/services/borrow/borrowMath.js +0 -137
  297. package/dist/services/borrow/index.d.ts +0 -4
  298. package/dist/services/borrow/internal/borrowApprovalService.d.ts +0 -14
  299. package/dist/services/borrow/internal/borrowApprovalService.js +0 -53
  300. package/dist/services/borrow/internal/borrowContextStore.d.ts +0 -11
  301. package/dist/services/borrow/internal/borrowContextStore.js +0 -40
  302. package/dist/services/borrow/internal/borrowErc20.d.ts +0 -5
  303. package/dist/services/borrow/internal/borrowErc20.js +0 -43
  304. package/dist/services/borrow/internal/borrowHints.d.ts +0 -7
  305. package/dist/services/borrow/internal/borrowHints.js +0 -31
  306. package/dist/services/borrow/internal/borrowPositionParser.d.ts +0 -4
  307. package/dist/services/borrow/internal/borrowPositionParser.js +0 -87
  308. package/dist/services/borrow/internal/borrowReadService.d.ts +0 -31
  309. package/dist/services/borrow/internal/borrowReadService.js +0 -276
  310. package/dist/services/borrow/internal/borrowRegistryReader.d.ts +0 -5
  311. package/dist/services/borrow/internal/borrowRegistryReader.js +0 -113
  312. package/dist/services/borrow/internal/borrowTransactionService.d.ts +0 -23
  313. package/dist/services/borrow/internal/borrowTransactionService.js +0 -276
  314. package/dist/services/borrow/internal/borrowTypes.d.ts +0 -15
  315. package/dist/services/borrow/internal/borrowTypes.js +0 -3
  316. package/dist/services/borrow/internal/borrowValidation.d.ts +0 -14
  317. package/dist/services/borrow/internal/borrowValidation.js +0 -104
  318. package/dist/services/index.d.ts +0 -9
  319. package/dist/services/index.js +0 -25
  320. package/dist/services/liquidity/LiquidityService.d.ts +0 -139
  321. package/dist/services/liquidity/LiquidityService.js +0 -168
  322. package/dist/services/liquidity/basicLiquidity.d.ts +0 -11
  323. package/dist/services/liquidity/basicLiquidity.js +0 -172
  324. package/dist/services/liquidity/index.d.ts +0 -2
  325. package/dist/services/liquidity/liquidityHelpers.d.ts +0 -19
  326. package/dist/services/liquidity/liquidityHelpers.js +0 -104
  327. package/dist/services/liquidity/rebalance.d.ts +0 -6
  328. package/dist/services/liquidity/rebalance.js +0 -64
  329. package/dist/services/liquidity/zapHelpers.d.ts +0 -66
  330. package/dist/services/liquidity/zapHelpers.js +0 -129
  331. package/dist/services/liquidity/zapIn.d.ts +0 -18
  332. package/dist/services/liquidity/zapIn.js +0 -119
  333. package/dist/services/liquidity/zapOut.d.ts +0 -9
  334. package/dist/services/liquidity/zapOut.js +0 -255
  335. package/dist/services/pools/PoolService.d.ts +0 -69
  336. package/dist/services/pools/PoolService.js +0 -209
  337. package/dist/services/pools/index.d.ts +0 -2
  338. package/dist/services/pools/poolDetails.d.ts +0 -13
  339. package/dist/services/pools/poolDetails.js +0 -216
  340. package/dist/services/pools/poolDiscovery.d.ts +0 -12
  341. package/dist/services/pools/poolDiscovery.js +0 -117
  342. package/dist/services/pools/rebalancePreview.d.ts +0 -5
  343. package/dist/services/pools/rebalancePreview.js +0 -186
  344. package/dist/services/quotes/QuoteService.d.ts +0 -51
  345. package/dist/services/quotes/QuoteService.js +0 -91
  346. package/dist/services/quotes/index.d.ts +0 -2
  347. package/dist/services/quotes/index.js +0 -18
  348. package/dist/services/routes/RouteService.d.ts +0 -117
  349. package/dist/services/routes/RouteService.js +0 -306
  350. package/dist/services/routes/index.d.ts +0 -2
  351. package/dist/services/routes/index.js +0 -18
  352. package/dist/services/swap/SwapService.d.ts +0 -198
  353. package/dist/services/swap/SwapService.js +0 -252
  354. package/dist/services/swap/index.d.ts +0 -2
  355. package/dist/services/swap/index.js +0 -18
  356. package/dist/services/tokens/index.d.ts +0 -2
  357. package/dist/services/tokens/index.js +0 -18
  358. package/dist/services/tokens/tokenService.d.ts +0 -55
  359. package/dist/services/tokens/tokenService.js +0 -290
  360. package/dist/services/trading/TradingLimitsService.d.ts +0 -38
  361. package/dist/services/trading/TradingLimitsService.js +0 -159
  362. package/dist/services/trading/TradingService.d.ts +0 -113
  363. package/dist/services/trading/TradingService.js +0 -201
  364. package/dist/services/trading/index.d.ts +0 -3
  365. package/dist/services/trading/index.js +0 -19
  366. package/dist/utils/chainConfig.d.ts +0 -16
  367. package/dist/utils/chainConfig.js +0 -123
  368. package/dist/utils/costUtils.d.ts +0 -12
  369. package/dist/utils/costUtils.js +0 -60
  370. package/dist/utils/deadline.d.ts +0 -21
  371. package/dist/utils/deadline.js +0 -26
  372. package/dist/utils/index.d.ts +0 -10
  373. package/dist/utils/index.js +0 -26
  374. package/dist/utils/multicall.d.ts +0 -30
  375. package/dist/utils/multicall.js +0 -52
  376. package/dist/utils/pathEncoder.d.ts +0 -34
  377. package/dist/utils/pathEncoder.js +0 -73
  378. package/dist/utils/rateFeed.d.ts +0 -18
  379. package/dist/utils/rateFeed.js +0 -27
  380. package/dist/utils/retry.d.ts +0 -12
  381. package/dist/utils/retry.js +0 -28
  382. package/dist/utils/routes.d.ts +0 -3
  383. package/dist/utils/routes.js +0 -8
  384. package/dist/utils/sortUtils.d.ts +0 -24
  385. package/dist/utils/sortUtils.js +0 -39
  386. package/dist/utils/tokens.d.ts +0 -2
  387. package/dist/utils/tokens.js +0 -13
  388. package/dist/utils/tradingLimits.d.ts +0 -41
  389. package/dist/utils/tradingLimits.js +0 -171
  390. package/dist/utils/validation.d.ts +0 -19
  391. package/dist/utils/validation.js +0 -34
  392. /package/dist/esm/{core/types/borrow.js → interfaces/IChainClient.js} +0 -0
  393. /package/dist/esm/{core/types/contractAddresses.js → interfaces/tradingLimit.js} +0 -0
  394. /package/dist/esm/{core/types/liquidity.js → interfaces/tradingLimitsConfig.js} +0 -0
  395. /package/dist/esm/{core/types/provider.js → interfaces/tradingLimitsState.js} +0 -0
  396. /package/dist/esm/{core/types/route.js → types/contractAddressMap.js} +0 -0
  397. /package/dist/esm/{core/types/token.js → types/contractAddresses.js} +0 -0
@@ -1,4 +1,3 @@
1
- import { canonicalSymbolKey } from './sortUtils';
2
1
  /**
3
2
  * Builds the connectivity data structures needed for route generation.
4
3
  *
@@ -9,23 +8,23 @@ import { canonicalSymbolKey } from './sortUtils';
9
8
  *
10
9
  * ```
11
10
  * Input: TradablePairs = [
12
- * { id: 'USDm-CELO', assets: [USDm, CELO], path: [exchange1_CELO_USDm] },
13
- * { id: 'CELO-EURm', assets: [CELO, EURm], path: [exchange2_CELO_EURm] }
11
+ * { id: 'cUSD-CELO', assets: [cUSD, CELO], path: [exchange1_CELO_cUSD] },
12
+ * { id: 'CELO-cEUR', assets: [CELO, cEUR], path: [exchange2_CELO_cEUR] }
14
13
  * ]
15
14
  *
16
15
  * Step 1 - Build addrToSymbol map:
17
- * USDm.address → 'USDm'
16
+ * cUSD.address → 'cUSD'
18
17
  * CELO.address → 'CELO'
19
- * EURm.address → 'EURm'
18
+ * cEUR.address → 'cEUR'
20
19
  *
21
20
  * Step 2 - Build directPathMap (sorted alphabetically for consistency):
22
- * 'CELO_addr-EURm_addr' → exchange2_CELO_EURm
23
- * 'CELO_addr-USDm_addr' → exchange1_CELO_USDm
21
+ * 'CELO_addr-cEUR_addr' → exchange2_CELO_cEUR
22
+ * 'CELO_addr-cUSD_addr' → exchange1_CELO_cUSD
24
23
  *
25
24
  * Step 3 - Build bidirectional tokenGraph:
26
- * USDm.address → Set([CELO.address])
27
- * CELO.address → Set([USDm.address, EURm.address])
28
- * EURm.address → Set([CELO.address])
25
+ * cUSD.address → Set([CELO.address])
26
+ * CELO.address → Set([cUSD.address, cEUR.address])
27
+ * cEUR.address → Set([CELO.address])
29
28
  * ```
30
29
  *
31
30
  * **Result**: We can now efficiently answer:
@@ -33,57 +32,59 @@ import { canonicalSymbolKey } from './sortUtils';
33
32
  * - "What exchange connects tokens X and Y?" → directPathMap.get(sortedAddressPairKey)
34
33
  * - "What tokens can I reach from token X?" → tokenGraph.get(X)
35
34
  *
36
- * @param directRoutes - Array of direct trading pairs
35
+ * @param directPairs - Array of direct trading pairs
37
36
  * @returns Connectivity data structure for efficient route generation
38
37
  *
39
38
  * @example
40
39
  * ```typescript
41
40
  * const directPairs = [
42
- * { id: 'USDm-CELO', assets: [USDm, CELO], path: [exchange1] },
43
- * { id: 'CELO-EURm', assets: [CELO, EURm], path: [exchange2] }
41
+ * { id: 'cUSD-CELO', assets: [cUSD, CELO], path: [exchange1] },
42
+ * { id: 'CELO-cEUR', assets: [CELO, cEUR], path: [exchange2] }
44
43
  * ]
45
44
  *
46
45
  * const connectivityData = buildConnectivityStructures(directPairs)
47
46
  *
48
47
  * // Now we can efficiently find routes:
49
- * // 1. Check if USDm connects to anything: connectivityData.tokenGraph.get(USDm.address) → [CELO.address]
50
- * // 2. Check if CELO connects to EURm: connectivityData.tokenGraph.get(CELO.address) → [USDm.address, EURm.address] ✓
51
- * // 3. Get exchange details: connectivityData.directPathMap.get('CELO_addr-EURm_addr') → exchange2_CELO_EURm
52
- * // Result: Found route USDm → CELO → EURm with exchange details
48
+ * // 1. Check if cUSD connects to anything: connectivityData.tokenGraph.get(cUSD.address) → [CELO.address]
49
+ * // 2. Check if CELO connects to cEUR: connectivityData.tokenGraph.get(CELO.address) → [cUSD.address, cEUR.address] ✓
50
+ * // 3. Get exchange details: connectivityData.directPathMap.get('CELO_addr-cEUR_addr') → exchange2_CELO_cEUR
51
+ * // Result: Found route cUSD → CELO → cEUR with exchange details
53
52
  * ```
54
53
  */
55
- export function buildConnectivityStructures(directRoutes) {
54
+ export function buildConnectivityStructures(directPairs) {
56
55
  const addrToSymbol = new Map();
57
- const directRouteMap = new Map();
56
+ const directPathMap = new Map();
58
57
  const tokenGraph = new Map();
59
- for (const route of directRoutes) {
60
- const [tokenA, tokenB] = route.tokens;
58
+ for (const pair of directPairs) {
59
+ const [assetA, assetB] = pair.assets;
61
60
  // Build address-to-symbol map for quick symbol lookups
62
- addrToSymbol.set(tokenA.address, tokenA.symbol);
63
- addrToSymbol.set(tokenB.address, tokenB.symbol);
61
+ addrToSymbol.set(assetA.address, assetA.symbol);
62
+ addrToSymbol.set(assetB.address, assetB.symbol);
64
63
  // Build direct path map (sorted addresses as key for consistency)
65
64
  // for quick lookup of exchange details for any token pair
66
- const routeId = canonicalSymbolKey(tokenA.symbol, tokenB.symbol);
67
- if (!directRouteMap.has(routeId)) {
68
- directRouteMap.set(routeId, route.path[0]);
65
+ const sortedAddresses = [assetA.address, assetB.address]
66
+ .sort()
67
+ .join('-');
68
+ if (!directPathMap.has(sortedAddresses)) {
69
+ directPathMap.set(sortedAddresses, pair.path[0]);
69
70
  }
70
71
  // Build bidirectional connectivity graph for route traversal
71
72
  // Each token can reach its directly connected tokens
72
- if (!tokenGraph.has(tokenA.address))
73
- tokenGraph.set(tokenA.address, new Set());
74
- if (!tokenGraph.has(tokenB.address))
75
- tokenGraph.set(tokenB.address, new Set());
76
- tokenGraph.get(tokenA.address).add(tokenB.address);
77
- tokenGraph.get(tokenB.address).add(tokenA.address);
73
+ if (!tokenGraph.has(assetA.address))
74
+ tokenGraph.set(assetA.address, new Set());
75
+ if (!tokenGraph.has(assetB.address))
76
+ tokenGraph.set(assetB.address, new Set());
77
+ tokenGraph.get(assetA.address).add(assetB.address);
78
+ tokenGraph.get(assetB.address).add(assetA.address);
78
79
  }
79
- return { addrToSymbol, directRouteMap, tokenGraph, directRoutes };
80
+ return { addrToSymbol, directPathMap, tokenGraph, directPairs };
80
81
  }
81
82
  /**
82
83
  * Generates all possible routes (direct + two-hop) using connectivity data.
83
84
  *
84
85
  * This function implements a route discovery algorithm that:
85
86
  *
86
- * 1. **Adds all direct routes** (single-hop routes)
87
+ * 1. **Adds all direct pairs** (single-hop routes)
87
88
  * 2. **Discovers two-hop routes** using graph traversal:
88
89
  * - For each token A, find its neighbors (tokens directly connected)
89
90
  * - For each neighbor B, find B's neighbors
@@ -91,64 +92,64 @@ export function buildConnectivityStructures(directRoutes) {
91
92
  *
92
93
  * **Route Deduplication**: Multiple routes between the same token pair
93
94
  * are collected in arrays, allowing the selection algorithm to choose
94
- * the best one based on cost data or heuristics.
95
+ * the best one based on spread data or heuristics.
95
96
  *
96
- * **Canonical Route IDs**: All routes use alphabetically sorted symbols
97
- * (e.g., 'EURm-USDm' not 'USDm-EURm') for consistent identification.
97
+ * **Canonical Pair IDs**: All pairs use alphabetically sorted symbols
98
+ * (e.g., 'cEUR-cUSD' not 'cUSD-cEUR') for consistent identification.
98
99
  *
99
100
  * @param connectivityData - The connectivity data from buildConnectivityStructures()
100
- * @returns Map of route ID -> array of possible routes for that token pair
101
+ * @returns Map of pair ID -> array of possible routes for that pair
101
102
  *
102
103
  * @example
103
104
  * ```typescript
104
- * // Given direct routes: USDm-CELO, CELO-EURm, USDm-USDC
105
+ * // Given direct pairs: cUSD-CELO, CELO-cEUR, cUSD-USDC
105
106
  * const allRoutes = generateAllRoutes(connectivityData)
106
107
  *
107
108
  * // Results might include:
108
- * // 'USDm-CELO' -> [{ path: [USDm->CELO] }] // direct route
109
- * // 'EURm-USDm' -> [
110
- * // { path: [USDm->USDC, USDC->EURm] } // two-hop via USDC
111
- * // { path: [USDm->CELO, CELO->EURm] } // two-hop via CELO
109
+ * // 'cUSD-CELO' -> [{ path: [cUSD->CELO] }] // direct route
110
+ * // 'cEUR-cUSD' -> [
111
+ * // { path: [cUSD->USDC, USDC->cEUR] } // two-hop via USDC
112
+ * // { path: [cUSD->CELO, CELO->cEUR] } // two-hop via CELO
112
113
  * // ]
113
114
  * ```
114
115
  */
115
116
  export function generateAllRoutes(connectivityData) {
116
- const { addrToSymbol, directRouteMap, tokenGraph, directRoutes } = connectivityData;
117
+ const { addrToSymbol, directPathMap, tokenGraph, directPairs } = connectivityData;
117
118
  const allRoutes = new Map();
118
119
  // Step 1: Add all direct pairs (single-hop routes)
119
- for (const route of directRoutes) {
120
- if (!allRoutes.has(route.id)) {
121
- allRoutes.set(route.id, []);
120
+ for (const pair of directPairs) {
121
+ if (!allRoutes.has(pair.id)) {
122
+ allRoutes.set(pair.id, []);
122
123
  }
123
- allRoutes.get(route.id).push(route);
124
+ allRoutes.get(pair.id).push(pair);
124
125
  }
125
- // Step 2: Generate two-hop routes using graph traversal
126
+ // Step 2: Generate two-hop pairs using graph traversal
126
127
  // Algorithm: For each token, explore all paths of length 2
127
- // OUTER LOOP: "For each starting token..." (e.g., USDm, CELO, EURm, etc.)
128
+ // OUTER LOOP: "For each starting token..." (e.g., cUSD, CELO, cEUR, etc.)
128
129
  for (const [start, neighbors] of tokenGraph.entries()) {
129
130
  // MIDDLE LOOP: "Where can I go from the starting token?" (first hop)
130
- // Example: If start = USDm, neighbors might be [CELO, USDC, KESm]
131
+ // Example: If start = cUSD, neighbors might be [CELO, USDC, cKES]
131
132
  for (const intermediate of neighbors) {
132
133
  // Get all tokens reachable from this intermediate token (second hop destinations)
133
134
  const secondHopNeighbors = tokenGraph.get(intermediate);
134
135
  if (!secondHopNeighbors)
135
136
  continue;
136
137
  // INNER LOOP: "From the intermediate token, where can I go?" (second hop)
137
- // Example: If intermediate = CELO, secondHopNeighbors might be [USDm, EURm, BRLm]
138
+ // Example: If intermediate = CELO, secondHopNeighbors might be [cUSD, cEUR, cBRL]
138
139
  for (const end of secondHopNeighbors) {
139
- // Skip circular routes like USDm → CELO → USDm (pointless)
140
+ // Skip circular routes like cUSD → CELO → cUSD (pointless)
140
141
  if (end === start)
141
142
  continue;
142
143
  // At this point we have a potential route: start → intermediate → end
143
- // Example: USDm → CELO → EURm
144
+ // Example: cUSD → CELO → cEUR
144
145
  // Try to create a valid two-hop trading pair from this route
145
- const twoHopRoute = createTwoHopRoute(start, intermediate, end, addrToSymbol, directRouteMap);
146
+ const twoHopPair = createTwoHopPair(start, intermediate, end, addrToSymbol, directPathMap);
146
147
  // If we successfully created the pair, add it to our collection
147
- if (twoHopRoute) {
148
- if (!allRoutes.has(twoHopRoute.id)) {
149
- allRoutes.set(twoHopRoute.id, []);
148
+ if (twoHopPair) {
149
+ if (!allRoutes.has(twoHopPair.id)) {
150
+ allRoutes.set(twoHopPair.id, []);
150
151
  }
151
- allRoutes.get(twoHopRoute.id).push(twoHopRoute);
152
+ allRoutes.get(twoHopPair.id).push(twoHopPair);
152
153
  }
153
154
  }
154
155
  }
@@ -178,52 +179,52 @@ export function generateAllRoutes(connectivityData) {
178
179
  *
179
180
  * @example
180
181
  * ```typescript
181
- * // Create route: USDm -> CELO -> EURm
182
+ * // Create route: cUSD -> CELO -> cEUR
182
183
  * const pair = createTwoHopPair(
183
- * '0x765D...', // USDm address
184
+ * '0x765D...', // cUSD address
184
185
  * '0x471E...', // CELO address
185
- * '0xD876...', // EURm address
186
+ * '0xD876...', // cEUR address
186
187
  * addrToSymbol,
187
188
  * directPathMap
188
189
  * )
189
190
  *
190
191
  * // Result:
191
192
  * // {
192
- * // id: 'EURm-USDm', // alphabetical order
193
- * // assets: [EURm, USDm], // alphabetical order
193
+ * // id: 'cEUR-cUSD', // alphabetical order
194
+ * // assets: [cEUR, cUSD], // alphabetical order
194
195
  * // path: [ // actual routing path
195
- * // { USDm->CELO exchange },
196
- * // { CELO->EURm exchange }
196
+ * // { cUSD->CELO exchange },
197
+ * // { CELO->cEUR exchange }
197
198
  * // ]
198
199
  * // }
199
200
  * ```
200
201
  */
201
- export function createTwoHopRoute(startAddr, intermediateAddr, endAddr, addrToSymbol, directRouteMap) {
202
- // Validate that both all tokens exist in our address-to-symbol map
203
- const startSymbol = addrToSymbol.get(startAddr);
204
- const intermediateSymbol = addrToSymbol.get(intermediateAddr);
205
- const endSymbol = addrToSymbol.get(endAddr);
206
- if (!startSymbol || !intermediateSymbol || !endSymbol)
202
+ export function createTwoHopPair(startToken, intermediateToken, endToken, addrToSymbol, directPathMap) {
203
+ // Validate that both start and end tokens exist in our address-to-symbol map
204
+ const startSymbol = addrToSymbol.get(startToken);
205
+ const endSymbol = addrToSymbol.get(endToken);
206
+ if (!startSymbol || !endSymbol)
207
207
  return null;
208
+ // Create Asset objects from address and symbol
209
+ const startAsset = { address: startToken, symbol: startSymbol };
210
+ const endAsset = { address: endToken, symbol: endSymbol };
208
211
  // Find exchange hops for both segments of the two-hop route
209
212
  // Keys are sorted token addresses for consistent lookup
210
- const hop1Key = canonicalSymbolKey(startSymbol, intermediateSymbol);
211
- const hop2Key = canonicalSymbolKey(intermediateSymbol, endSymbol);
212
- const hop1 = directRouteMap.get(hop1Key);
213
- const hop2 = directRouteMap.get(hop2Key);
213
+ const hop1Key = [startToken, intermediateToken].sort().join('-');
214
+ const hop2Key = [intermediateToken, endToken].sort().join('-');
215
+ const hop1 = directPathMap.get(hop1Key);
216
+ const hop2 = directPathMap.get(hop2Key);
214
217
  // If either hop doesn't exist, this route is invalid
215
218
  if (!hop1 || !hop2)
216
219
  return null;
217
220
  // Create canonical pair structure (alphabetical symbol ordering)
218
- const routeId = canonicalSymbolKey(startSymbol, endSymbol);
219
- // Create Token objects from address and symbol
220
- const startToken = { address: startAddr, symbol: startSymbol };
221
- const endToken = { address: endAddr, symbol: endSymbol };
222
- // Token array follows alphabetical ordering for consistency
223
- const tokens = startSymbol <= endSymbol ? [startToken, endToken] : [endToken, startToken];
221
+ const sortedSymbols = [startSymbol, endSymbol].sort();
222
+ const pairId = `${sortedSymbols[0]}-${sortedSymbols[1]}`;
223
+ // Assets array follows alphabetical ordering for consistency
224
+ const assets = startSymbol <= endSymbol ? [startAsset, endAsset] : [endAsset, startAsset];
224
225
  return {
225
- id: routeId,
226
- tokens,
226
+ id: pairId,
227
+ assets,
227
228
  path: [hop1, hop2], // Preserves actual routing path for execution
228
229
  };
229
230
  }
@@ -248,58 +249,58 @@ export function createTwoHopRoute(startAddr, intermediateAddr, endAddr, addrToSy
248
249
  *
249
250
  * @example
250
251
  * ```typescript
251
- * // Multiple routes for USDm-EURm pair
252
+ * // Multiple routes for cUSD-cEUR pair
252
253
  * const candidates = new Map([
253
- * ['EURm-USDm', [
254
- * { path: [USDm->CELO->EURm], costData: { totalCostPercent: 0.5 } },
255
- * { path: [USDm->BRLm->EURm], costData: { totalCostPercent: 0.3 } },
256
- * { path: [USDm->EURm] } // direct route, no cost data
254
+ * ['cEUR-cUSD', [
255
+ * { path: [cUSD->CELO->cEUR], spreadData: { totalSpreadPercent: 0.5 } },
256
+ * { path: [cUSD->cREAL->cEUR], spreadData: { totalSpreadPercent: 0.3 } },
257
+ * { path: [cUSD->cEUR] } // direct route, no spread data
257
258
  * ]]
258
259
  * ])
259
260
  *
260
261
  * const optimal = selectOptimalRoutes(candidates, false, assetMap)
261
- * // Returns the USDm->BRLm->EURm route (lowest cost: 0.3%)
262
+ * // Returns the cUSD->cREAL->cEUR route (lowest spread: 0.3%)
262
263
  * ```
263
264
  */
264
265
  export function selectOptimalRoutes(allRoutes, returnAllRoutes, addrToSymbol) {
265
266
  const result = new Map();
266
- for (const [routeId, routes] of allRoutes) {
267
+ for (const [pairId, routes] of allRoutes) {
267
268
  if (routes.length === 1) {
268
269
  // Only one route available - use it directly
269
- result.set(routeId, routes[0]);
270
+ result.set(pairId, routes[0]);
270
271
  }
271
272
  else if (returnAllRoutes) {
272
273
  // Return all routes with unique keys (used for cache generation)
273
274
  routes.forEach((route, index) => {
274
- result.set(`${routeId}_${index}`, route);
275
+ result.set(`${pairId}_${index}`, route);
275
276
  });
276
277
  }
277
278
  else {
278
279
  // Multiple routes - select the best one using optimization logic
279
280
  const bestRoute = selectBestRoute(routes, addrToSymbol);
280
- result.set(routeId, bestRoute);
281
+ result.set(pairId, bestRoute);
281
282
  }
282
283
  }
283
284
  return Array.from(result.values());
284
285
  }
285
286
  /**
286
- * Selects the best route from candidates using cost data or fallback heuristics.
287
+ * Selects the best route from candidates using spread data or fallback heuristics.
287
288
  *
288
289
  * This function implements a sophisticated route selection algorithm with
289
290
  * multiple optimization tiers:
290
291
  *
291
- * **Tier 1 - Cost-Based Optimization** (Preferred):
292
- * - Use routes with cost data (actual cost information)
293
- * - Select route with lowest `totalCostPercent`
292
+ * **Tier 1 - Spread-Based Optimization** (Preferred):
293
+ * - Use routes with spread data (actual cost information)
294
+ * - Select route with lowest `totalSpreadPercent`
294
295
  * - This provides the most cost-efficient trading
295
296
  *
296
297
  * **Tier 2 - Direct Route Preference** (Fallback):
297
- * - If no cost data available, prefer direct (single-hop) routes
298
+ * - If no spread data available, prefer direct (single-hop) routes
298
299
  * - Direct routes have lower execution risk and gas costs
299
300
  *
300
301
  * **Tier 3 - Major Stablecoin Preference** (Final Fallback):
301
302
  * - For two-hop routes, prefer those going through major stablecoins
302
- * - Major FX currencies like USDm and EURm typically have better liquidity
303
+ * - Major FX currencies like cUSD and cEUR typically have better liquidity
303
304
  *
304
305
  * **Tier 4 - First Available** (Last Resort):
305
306
  * - If no other heuristics apply, use the first route found
@@ -311,27 +312,29 @@ export function selectOptimalRoutes(allRoutes, returnAllRoutes, addrToSymbol) {
311
312
  * @example
312
313
  * ```typescript
313
314
  * const candidates = [
314
- * { path: [A->B->C], costData: { totalCostPercent: 0.8 } },
315
- * { path: [A->D->C], costData: { totalCostPercent: 0.4 } }, // Winner: lowest cost
316
- * { path: [A->C] }, // direct route, no cost data
315
+ * { path: [A->B->C], spreadData: { totalSpreadPercent: 0.8 } },
316
+ * { path: [A->D->C], spreadData: { totalSpreadPercent: 0.4 } }, // Winner: lowest spread
317
+ * { path: [A->C] }, // direct route, no spread data
317
318
  * ]
318
319
  *
319
320
  * const best = selectBestRoute(candidates, assetMap)
320
- * // Returns the A->D->C route (0.4% cost)
321
+ * // Returns the A->D->C route (0.4% spread)
321
322
  * ```
322
323
  */
323
324
  export function selectBestRoute(candidates, addrToSymbol) {
324
- // Tier 1: Prefer routes with cost data (lowest cost wins)
325
- const candidatesWithCost = candidates.filter(hasCostData);
326
- if (candidatesWithCost.length > 0) {
327
- return candidatesWithCost.reduce((best, current) => current.costData.totalCostPercent < best.costData.totalCostPercent ? current : best);
325
+ // Tier 1: Prefer routes with spread data (lowest spread wins)
326
+ const candidatesWithSpread = candidates.filter(hasSpreadData);
327
+ if (candidatesWithSpread.length > 0) {
328
+ return candidatesWithSpread.reduce((best, current) => current.spreadData.totalSpreadPercent < best.spreadData.totalSpreadPercent
329
+ ? current
330
+ : best);
328
331
  }
329
332
  // Tier 2: Prefer direct routes (single-hop, lower risk)
330
333
  const directRoute = candidates.find((c) => c.path.length === 1);
331
334
  if (directRoute)
332
335
  return directRoute;
333
336
  // Tier 3: Prefer routes through major stablecoins (better liquidity)
334
- const stablecoins = ['USDm', 'EURm', 'USDC', 'USDT'];
337
+ const stablecoins = ['cUSD', 'cEUR', 'USDC', 'USDT'];
335
338
  const routeWithStablecoin = candidates.find((candidate) => {
336
339
  const intermediateToken = getIntermediateToken(candidate);
337
340
  if (!intermediateToken)
@@ -349,13 +352,11 @@ export function selectBestRoute(candidates, addrToSymbol) {
349
352
  export function getIntermediateToken(route) {
350
353
  // Find the common token between the two hops
351
354
  const [hop1, hop2] = route.path;
352
- const hop1Tokens = [hop1.token0, hop1.token1];
353
- const hop2Tokens = [hop2.token0, hop2.token1];
354
- return hop1Tokens.find((addr) => hop2Tokens.includes(addr));
355
+ return hop1.assets.find((addr) => hop2.assets.includes(addr));
355
356
  }
356
357
  /**
357
- * Type guard to check if a Route has cost data.
358
+ * Type guard to check if a Route has spread data.
358
359
  */
359
- export function hasCostData(pair) {
360
- return 'costData' in pair && pair.costData !== undefined;
360
+ export function hasSpreadData(pair) {
361
+ return 'spreadData' in pair && pair.spreadData !== undefined;
361
362
  }
@@ -0,0 +1,4 @@
1
+ import { ContractAddresses } from '.';
2
+ export type ContractAddressMap = {
3
+ [chainId: number]: Partial<ContractAddresses>;
4
+ };
@@ -0,0 +1,23 @@
1
+ export type ContractAddresses = {
2
+ GovernanceFactory: string;
3
+ Airgrab: string;
4
+ Emission: string;
5
+ MentoGovernor: string;
6
+ MentoToken: string;
7
+ TimelockController: string;
8
+ Locking: string;
9
+ MentoRouter: string;
10
+ Broker: string;
11
+ BiPoolManager: string;
12
+ BreakerBox: string;
13
+ Reserve: string;
14
+ ConstantSumPricingModule: string;
15
+ ConstantProductPricingModule: string;
16
+ MedianDeltaBreaker: string;
17
+ ValueDeltaBreaker: string;
18
+ StableToken: string;
19
+ StableTokenEUR: string;
20
+ StableTokenBRL: string;
21
+ StableTokenXOF: string;
22
+ SortedOracles: string;
23
+ };
@@ -0,0 +1,2 @@
1
+ export * from './contractAddresses';
2
+ export * from './contractAddressMap';
@@ -0,0 +1,2 @@
1
+ export * from './contractAddresses';
2
+ export * from './contractAddressMap';
@@ -0,0 +1,80 @@
1
+ import { BigNumberish, providers, Signer } from 'ethers';
2
+ import { TokenSymbol } from './constants';
3
+ import { Address } from './interfaces';
4
+ import { Token, TradablePair } from './mento';
5
+ /**
6
+ * Gets the chain ID from a signer or provider
7
+ * @param signerOrProvider an ethers provider or signer
8
+ * @returns the chain ID
9
+ */
10
+ export declare function getChainId(signerOrProvider: Signer | providers.Provider): Promise<number>;
11
+ /**
12
+ * Ensures that given signer is truly a a connected signer
13
+ * @param signer an ethers signer
14
+ * @throws if signer is invalid or not connected
15
+ */
16
+ export declare function validateSigner(signer: Signer): void;
17
+ /**
18
+ * Ensures that given signerOrProvider is truly a provider or a connected signer
19
+ * @param signerOrProvider an ethers provider or signer
20
+ * @throws if signerOrProvider is invalid or not connected
21
+ */
22
+ export declare function validateSignerOrProvider(signerOrProvider: Signer | providers.Provider): void;
23
+ /**
24
+ * Returns the symbol of an erc20 token
25
+ * @param tokenAddr the address of the erc20 token
26
+ * @param signerOrProvider an ethers provider or signer
27
+ * @returns the symbol of the erc20 token
28
+ */
29
+ export declare function getSymbolFromTokenAddress(tokenAddr: Address, signerOrProvider: Signer | providers.Provider): Promise<TokenSymbol>;
30
+ /**
31
+ * Returns the name of an erc20 token
32
+ * @param tokenAddr the address of the erc20 token
33
+ * @param signerOrProvider an ethers provider or signer
34
+ * @returns the name of the erc20 token
35
+ */
36
+ export declare function getNameFromTokenAddress(tokenAddr: Address, signerOrProvider: Signer | providers.Provider): Promise<string>;
37
+ /**
38
+ * Returns the decimals of an erc20 token
39
+ * @param tokenAddr the address of the erc20 token
40
+ * @param signerOrProvider an ethers provider or signer
41
+ * @returns the decimals of the erc20 token
42
+ */
43
+ export declare function getDecimalsFromTokenAddress(tokenAddr: Address, signerOrProvider: Signer | providers.Provider): Promise<number>;
44
+ /**
45
+ * Returns a populated tx obj for increasing the allowance of a spender for a given erc20 token by a given amount
46
+ * @param tokenAddr the address of the erc20 token
47
+ * @param spender the address of the spender
48
+ * @param amount the amount to increase the allowance by
49
+ * @param signerOrProvider an ethers signer or provider
50
+ * @returns the populated TransactionRequest object
51
+ */
52
+ export declare function increaseAllowance(tokenAddr: string, spender: string, amount: BigNumberish, signerOrProvider: Signer | providers.Provider): Promise<providers.TransactionRequest>;
53
+ /**
54
+ * Find a token address by its symbol from tradable pairs
55
+ * @param pairs array of tradable pairs to search through
56
+ * @param symbol the token symbol to find (case-insensitive)
57
+ * @returns the token address if found, null otherwise
58
+ */
59
+ export declare function findTokenAddressBySymbolInTradablePairs(symbol: TokenSymbol, pairs: readonly TradablePair[]): Address | null;
60
+ export declare function capitalize(str: string): string; /**
61
+ * Helper function to get token address by symbol for a specific chain
62
+ * @param symbol - The token symbol
63
+ * @param chainId - The chain ID
64
+ * @returns The token address or undefined if not found
65
+ */
66
+ export declare function getTokenAddress(symbol: TokenSymbol, chainId: number): string | undefined;
67
+ /**
68
+ * Helper function to find a token by symbol in the cached tokens
69
+ * @param symbol - The token symbol to search for
70
+ * @param chainId - The chain ID
71
+ * @returns The token object or undefined if not found
72
+ */
73
+ export declare function findTokenBySymbol(symbol: string, chainId: number): Token | undefined;
74
+ /**
75
+ * Computes the rate feed ID from a rate feed identifier string.
76
+ * This follows the Solidity formula: address(uint160(uint256(keccak256(abi.encodePacked(rateFeed)))))
77
+ * @param rateFeed the rate feed identifier string (e.g., "EURUSD", "relayed:COPUSD")
78
+ * @returns the computed rate feed address
79
+ */
80
+ export declare function toRateFeedId(rateFeed: string): Address;