@mento-protocol/mento-sdk 3.0.0-beta.3 → 3.0.0-beta.30

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 (371) hide show
  1. package/README.md +132 -275
  2. package/dist/cache/routes.d.ts +13 -0
  3. package/dist/cache/routes.d.ts.map +1 -0
  4. package/dist/cache/routes.js +11483 -0
  5. package/dist/cache/routes.js.map +1 -0
  6. package/dist/cache/tokens.d.ts +67 -0
  7. package/dist/cache/tokens.d.ts.map +1 -0
  8. package/dist/cache/tokens.js +379 -0
  9. package/dist/cache/tokens.js.map +1 -0
  10. package/dist/core/abis/activePool.d.ts +2 -0
  11. package/dist/core/abis/activePool.d.ts.map +1 -0
  12. package/dist/core/abis/activePool.js +14 -0
  13. package/dist/core/abis/activePool.js.map +1 -0
  14. package/dist/core/abis/addressesRegistry.d.ts +2 -0
  15. package/dist/core/abis/addressesRegistry.d.ts.map +1 -0
  16. package/dist/core/abis/addressesRegistry.js +26 -0
  17. package/dist/core/abis/addressesRegistry.js.map +1 -0
  18. package/dist/core/abis/borrowerOperations.d.ts +9 -0
  19. package/dist/core/abis/borrowerOperations.d.ts.map +1 -0
  20. package/dist/core/abis/borrowerOperations.js +89 -0
  21. package/dist/core/abis/borrowerOperations.js.map +1 -0
  22. package/dist/core/abis/breakerbox.d.ts +13 -0
  23. package/dist/core/abis/breakerbox.d.ts.map +1 -0
  24. package/dist/core/abis/breakerbox.js +8 -0
  25. package/dist/core/abis/breakerbox.js.map +1 -0
  26. package/dist/core/abis/erc20.d.ts +7 -0
  27. package/dist/core/abis/erc20.d.ts.map +1 -1
  28. package/dist/core/abis/erc20.js +7 -0
  29. package/dist/core/abis/erc20.js.map +1 -1
  30. package/dist/core/abis/fpmm.d.ts +236 -0
  31. package/dist/core/abis/fpmm.d.ts.map +1 -1
  32. package/dist/core/abis/fpmm.js +38 -0
  33. package/dist/core/abis/fpmm.js.map +1 -1
  34. package/dist/core/abis/fpmmFactory.d.ts +64 -0
  35. package/dist/core/abis/fpmmFactory.d.ts.map +1 -1
  36. package/dist/core/abis/fpmmFactory.js +17 -0
  37. package/dist/core/abis/fpmmFactory.js.map +1 -1
  38. package/dist/core/abis/hintHelpers.d.ts +2 -0
  39. package/dist/core/abis/hintHelpers.d.ts.map +1 -0
  40. package/dist/core/abis/hintHelpers.js +14 -0
  41. package/dist/core/abis/hintHelpers.js.map +1 -0
  42. package/dist/core/abis/index.d.ts +12 -1
  43. package/dist/core/abis/index.d.ts.map +1 -1
  44. package/dist/core/abis/index.js +12 -1
  45. package/dist/core/abis/index.js.map +1 -1
  46. package/dist/core/abis/multiTroveGetter.d.ts +8 -0
  47. package/dist/core/abis/multiTroveGetter.d.ts.map +1 -0
  48. package/dist/core/abis/multiTroveGetter.js +15 -0
  49. package/dist/core/abis/multiTroveGetter.js.map +1 -0
  50. package/dist/core/abis/priceFeed.d.ts +7 -0
  51. package/dist/core/abis/priceFeed.d.ts.map +1 -0
  52. package/dist/core/abis/priceFeed.js +16 -0
  53. package/dist/core/abis/priceFeed.js.map +1 -0
  54. package/dist/core/abis/router.d.ts +520 -1
  55. package/dist/core/abis/router.d.ts.map +1 -1
  56. package/dist/core/abis/router.js +35 -0
  57. package/dist/core/abis/router.js.map +1 -1
  58. package/dist/core/abis/sortedTroves.d.ts +2 -0
  59. package/dist/core/abis/sortedTroves.d.ts.map +1 -0
  60. package/dist/core/abis/sortedTroves.js +15 -0
  61. package/dist/core/abis/sortedTroves.js.map +1 -0
  62. package/dist/core/abis/systemParams.d.ts +2 -0
  63. package/dist/core/abis/systemParams.d.ts.map +1 -0
  64. package/dist/core/abis/systemParams.js +14 -0
  65. package/dist/core/abis/systemParams.js.map +1 -0
  66. package/dist/core/abis/troveManager.d.ts +2 -0
  67. package/dist/core/abis/troveManager.d.ts.map +1 -0
  68. package/dist/core/abis/troveManager.js +27 -0
  69. package/dist/core/abis/troveManager.js.map +1 -0
  70. package/dist/core/abis/troveNFT.d.ts +2 -0
  71. package/dist/core/abis/troveNFT.d.ts.map +1 -0
  72. package/dist/core/abis/troveNFT.js +9 -0
  73. package/dist/core/abis/troveNFT.js.map +1 -0
  74. package/dist/core/abis/virtualPool.d.ts +40 -0
  75. package/dist/core/abis/virtualPool.d.ts.map +1 -1
  76. package/dist/core/abis/virtualPool.js +6 -1
  77. package/dist/core/abis/virtualPool.js.map +1 -1
  78. package/dist/core/abis/virtualPoolFactory.d.ts +32 -0
  79. package/dist/core/abis/virtualPoolFactory.d.ts.map +1 -1
  80. package/dist/core/abis/virtualPoolFactory.js +8 -0
  81. package/dist/core/abis/virtualPoolFactory.js.map +1 -1
  82. package/dist/core/constants/addresses.d.ts.map +1 -1
  83. package/dist/core/constants/addresses.js +14 -4
  84. package/dist/core/constants/addresses.js.map +1 -1
  85. package/dist/core/constants/borrowConstants.d.ts +10 -0
  86. package/dist/core/constants/borrowConstants.d.ts.map +1 -0
  87. package/dist/core/constants/borrowConstants.js +16 -0
  88. package/dist/core/constants/borrowConstants.js.map +1 -0
  89. package/dist/core/constants/borrowRegistries.d.ts +7 -0
  90. package/dist/core/constants/borrowRegistries.d.ts.map +1 -0
  91. package/dist/core/constants/borrowRegistries.js +31 -0
  92. package/dist/core/constants/borrowRegistries.js.map +1 -0
  93. package/dist/core/constants/index.d.ts +2 -3
  94. package/dist/core/constants/index.d.ts.map +1 -1
  95. package/dist/core/constants/index.js +2 -3
  96. package/dist/core/constants/index.js.map +1 -1
  97. package/dist/core/errors/index.d.ts +1 -0
  98. package/dist/core/errors/index.d.ts.map +1 -1
  99. package/dist/core/errors/index.js +1 -0
  100. package/dist/core/errors/index.js.map +1 -1
  101. package/dist/core/errors/oracle.d.ts +9 -0
  102. package/dist/core/errors/oracle.d.ts.map +1 -0
  103. package/dist/core/errors/oracle.js +15 -0
  104. package/dist/core/errors/oracle.js.map +1 -0
  105. package/dist/core/errors/router.d.ts +6 -0
  106. package/dist/core/errors/router.d.ts.map +1 -1
  107. package/dist/core/errors/router.js +11 -1
  108. package/dist/core/errors/router.js.map +1 -1
  109. package/dist/core/types/borrow.d.ts +87 -0
  110. package/dist/core/types/borrow.d.ts.map +1 -0
  111. package/dist/{services/tokens/supply/ISupplyCalculator.js → core/types/borrow.js} +1 -1
  112. package/dist/core/types/borrow.js.map +1 -0
  113. package/dist/core/types/contractAddresses.d.ts +2 -0
  114. package/dist/core/types/contractAddresses.d.ts.map +1 -1
  115. package/dist/core/types/index.d.ts +5 -1
  116. package/dist/core/types/index.d.ts.map +1 -1
  117. package/dist/core/types/index.js +5 -1
  118. package/dist/core/types/index.js.map +1 -1
  119. package/dist/core/types/liquidity.d.ts +117 -0
  120. package/dist/core/types/liquidity.d.ts.map +1 -0
  121. package/dist/{services/tokens/supply/calculatorFactory.js → core/types/liquidity.js} +1 -1
  122. package/dist/core/types/liquidity.js.map +1 -0
  123. package/dist/core/types/pool.d.ts +110 -0
  124. package/dist/core/types/pool.d.ts.map +1 -1
  125. package/dist/core/types/provider.d.ts.map +1 -1
  126. package/dist/core/types/provider.js +0 -1
  127. package/dist/core/types/provider.js.map +1 -1
  128. package/dist/core/types/route.d.ts +3 -3
  129. package/dist/core/types/route.d.ts.map +1 -1
  130. package/dist/core/types/token.d.ts +13 -17
  131. package/dist/core/types/token.d.ts.map +1 -1
  132. package/dist/core/types/tradingLimits.d.ts +91 -0
  133. package/dist/core/types/tradingLimits.d.ts.map +1 -0
  134. package/dist/core/types/tradingLimits.js +3 -0
  135. package/dist/core/types/tradingLimits.js.map +1 -0
  136. package/dist/core/types/tradingMode.d.ts +24 -0
  137. package/dist/core/types/tradingMode.d.ts.map +1 -0
  138. package/dist/core/types/tradingMode.js +31 -0
  139. package/dist/core/types/tradingMode.js.map +1 -0
  140. package/dist/core/types/transaction.d.ts +45 -0
  141. package/dist/core/types/transaction.d.ts.map +1 -0
  142. package/dist/core/types/transaction.js +3 -0
  143. package/dist/core/types/transaction.js.map +1 -0
  144. package/dist/index.d.ts +29 -3
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +42 -5
  147. package/dist/index.js.map +1 -1
  148. package/dist/services/borrow/BorrowService.d.ts +54 -0
  149. package/dist/services/borrow/BorrowService.d.ts.map +1 -0
  150. package/dist/services/borrow/BorrowService.js +129 -0
  151. package/dist/services/borrow/BorrowService.js.map +1 -0
  152. package/dist/services/borrow/borrowHelpers.d.ts +4 -0
  153. package/dist/services/borrow/borrowHelpers.d.ts.map +1 -0
  154. package/dist/services/borrow/borrowHelpers.js +13 -0
  155. package/dist/services/borrow/borrowHelpers.js.map +1 -0
  156. package/dist/services/borrow/borrowMath.d.ts +13 -0
  157. package/dist/services/borrow/borrowMath.d.ts.map +1 -0
  158. package/dist/services/borrow/borrowMath.js +129 -0
  159. package/dist/services/borrow/borrowMath.js.map +1 -0
  160. package/dist/services/borrow/index.d.ts +2 -0
  161. package/dist/services/borrow/index.d.ts.map +1 -0
  162. package/dist/services/{tokens/supply → borrow}/index.js +1 -6
  163. package/dist/services/borrow/index.js.map +1 -0
  164. package/dist/services/borrow/internal/borrowApprovalService.d.ts +14 -0
  165. package/dist/services/borrow/internal/borrowApprovalService.d.ts.map +1 -0
  166. package/dist/services/borrow/internal/borrowApprovalService.js +53 -0
  167. package/dist/services/borrow/internal/borrowApprovalService.js.map +1 -0
  168. package/dist/services/borrow/internal/borrowContextStore.d.ts +11 -0
  169. package/dist/services/borrow/internal/borrowContextStore.d.ts.map +1 -0
  170. package/dist/services/borrow/internal/borrowContextStore.js +40 -0
  171. package/dist/services/borrow/internal/borrowContextStore.js.map +1 -0
  172. package/dist/services/borrow/internal/borrowErc20.d.ts +5 -0
  173. package/dist/services/borrow/internal/borrowErc20.d.ts.map +1 -0
  174. package/dist/services/borrow/internal/borrowErc20.js +43 -0
  175. package/dist/services/borrow/internal/borrowErc20.js.map +1 -0
  176. package/dist/services/borrow/internal/borrowHints.d.ts +7 -0
  177. package/dist/services/borrow/internal/borrowHints.d.ts.map +1 -0
  178. package/dist/services/borrow/internal/borrowHints.js +31 -0
  179. package/dist/services/borrow/internal/borrowHints.js.map +1 -0
  180. package/dist/services/borrow/internal/borrowPositionParser.d.ts +4 -0
  181. package/dist/services/borrow/internal/borrowPositionParser.d.ts.map +1 -0
  182. package/dist/services/borrow/internal/borrowPositionParser.js +87 -0
  183. package/dist/services/borrow/internal/borrowPositionParser.js.map +1 -0
  184. package/dist/services/borrow/internal/borrowReadService.d.ts +28 -0
  185. package/dist/services/borrow/internal/borrowReadService.d.ts.map +1 -0
  186. package/dist/services/borrow/internal/borrowReadService.js +218 -0
  187. package/dist/services/borrow/internal/borrowReadService.js.map +1 -0
  188. package/dist/services/borrow/internal/borrowRegistryReader.d.ts +5 -0
  189. package/dist/services/borrow/internal/borrowRegistryReader.d.ts.map +1 -0
  190. package/dist/services/borrow/internal/borrowRegistryReader.js +96 -0
  191. package/dist/services/borrow/internal/borrowRegistryReader.js.map +1 -0
  192. package/dist/services/borrow/internal/borrowTransactionService.d.ts +23 -0
  193. package/dist/services/borrow/internal/borrowTransactionService.d.ts.map +1 -0
  194. package/dist/services/borrow/internal/borrowTransactionService.js +276 -0
  195. package/dist/services/borrow/internal/borrowTransactionService.js.map +1 -0
  196. package/dist/services/borrow/internal/borrowTypes.d.ts +15 -0
  197. package/dist/services/borrow/internal/borrowTypes.d.ts.map +1 -0
  198. package/dist/services/borrow/internal/borrowTypes.js +3 -0
  199. package/dist/services/borrow/internal/borrowTypes.js.map +1 -0
  200. package/dist/services/borrow/internal/borrowValidation.d.ts +13 -0
  201. package/dist/services/borrow/internal/borrowValidation.d.ts.map +1 -0
  202. package/dist/services/borrow/internal/borrowValidation.js +96 -0
  203. package/dist/services/borrow/internal/borrowValidation.js.map +1 -0
  204. package/dist/services/index.d.ts +2 -2
  205. package/dist/services/index.d.ts.map +1 -1
  206. package/dist/services/index.js +2 -2
  207. package/dist/services/index.js.map +1 -1
  208. package/dist/services/liquidity/LiquidityService.d.ts +154 -0
  209. package/dist/services/liquidity/LiquidityService.d.ts.map +1 -0
  210. package/dist/services/liquidity/LiquidityService.js +184 -0
  211. package/dist/services/liquidity/LiquidityService.js.map +1 -0
  212. package/dist/services/liquidity/basicLiquidity.d.ts +11 -0
  213. package/dist/services/liquidity/basicLiquidity.d.ts.map +1 -0
  214. package/dist/services/liquidity/basicLiquidity.js +172 -0
  215. package/dist/services/liquidity/basicLiquidity.js.map +1 -0
  216. package/dist/services/liquidity/index.d.ts +2 -0
  217. package/dist/services/liquidity/index.d.ts.map +1 -0
  218. package/dist/services/liquidity/index.js +18 -0
  219. package/dist/services/liquidity/index.js.map +1 -0
  220. package/dist/services/liquidity/liquidityHelpers.d.ts +13 -0
  221. package/dist/services/liquidity/liquidityHelpers.d.ts.map +1 -0
  222. package/dist/services/liquidity/liquidityHelpers.js +74 -0
  223. package/dist/services/liquidity/liquidityHelpers.js.map +1 -0
  224. package/dist/services/liquidity/zapHelpers.d.ts +66 -0
  225. package/dist/services/liquidity/zapHelpers.d.ts.map +1 -0
  226. package/dist/services/liquidity/zapHelpers.js +133 -0
  227. package/dist/services/liquidity/zapHelpers.js.map +1 -0
  228. package/dist/services/liquidity/zapIn.d.ts +17 -0
  229. package/dist/services/liquidity/zapIn.d.ts.map +1 -0
  230. package/dist/services/liquidity/zapIn.js +125 -0
  231. package/dist/services/liquidity/zapIn.js.map +1 -0
  232. package/dist/services/liquidity/zapOut.d.ts +17 -0
  233. package/dist/services/liquidity/zapOut.d.ts.map +1 -0
  234. package/dist/services/liquidity/zapOut.js +242 -0
  235. package/dist/services/liquidity/zapOut.js.map +1 -0
  236. package/dist/services/pools/PoolService.d.ts +35 -10
  237. package/dist/services/pools/PoolService.d.ts.map +1 -1
  238. package/dist/services/pools/PoolService.js +61 -109
  239. package/dist/services/pools/PoolService.js.map +1 -1
  240. package/dist/services/pools/poolDetails.d.ts +11 -0
  241. package/dist/services/pools/poolDetails.d.ts.map +1 -0
  242. package/dist/services/pools/poolDetails.js +151 -0
  243. package/dist/services/pools/poolDetails.js.map +1 -0
  244. package/dist/services/pools/poolDiscovery.d.ts +12 -0
  245. package/dist/services/pools/poolDiscovery.d.ts.map +1 -0
  246. package/dist/services/pools/poolDiscovery.js +114 -0
  247. package/dist/services/pools/poolDiscovery.js.map +1 -0
  248. package/dist/services/quotes/QuoteService.d.ts +21 -12
  249. package/dist/services/quotes/QuoteService.d.ts.map +1 -1
  250. package/dist/services/quotes/QuoteService.js +44 -17
  251. package/dist/services/quotes/QuoteService.js.map +1 -1
  252. package/dist/services/routes/RouteService.d.ts +3 -3
  253. package/dist/services/routes/RouteService.d.ts.map +1 -1
  254. package/dist/services/routes/RouteService.js +3 -5
  255. package/dist/services/routes/RouteService.js.map +1 -1
  256. package/dist/services/swap/SwapService.d.ts +23 -19
  257. package/dist/services/swap/SwapService.d.ts.map +1 -1
  258. package/dist/services/swap/SwapService.js +36 -15
  259. package/dist/services/swap/SwapService.js.map +1 -1
  260. package/dist/services/tokens/tokenService.d.ts +3 -3
  261. package/dist/services/tokens/tokenService.d.ts.map +1 -1
  262. package/dist/services/tokens/tokenService.js +26 -37
  263. package/dist/services/tokens/tokenService.js.map +1 -1
  264. package/dist/services/trading/TradingLimitsService.d.ts +38 -0
  265. package/dist/services/trading/TradingLimitsService.d.ts.map +1 -0
  266. package/dist/services/trading/TradingLimitsService.js +157 -0
  267. package/dist/services/trading/TradingLimitsService.js.map +1 -0
  268. package/dist/services/trading/TradingService.d.ts +110 -0
  269. package/dist/services/trading/TradingService.d.ts.map +1 -0
  270. package/dist/services/trading/TradingService.js +162 -0
  271. package/dist/services/trading/TradingService.js.map +1 -0
  272. package/dist/services/trading/index.d.ts +3 -0
  273. package/dist/services/trading/index.d.ts.map +1 -0
  274. package/dist/services/trading/index.js +19 -0
  275. package/dist/services/trading/index.js.map +1 -0
  276. package/dist/utils/costUtils.js +4 -4
  277. package/dist/utils/costUtils.js.map +1 -1
  278. package/dist/utils/deadline.d.ts +21 -0
  279. package/dist/utils/deadline.d.ts.map +1 -0
  280. package/dist/utils/deadline.js +26 -0
  281. package/dist/utils/deadline.js.map +1 -0
  282. package/dist/utils/index.d.ts +3 -0
  283. package/dist/utils/index.d.ts.map +1 -1
  284. package/dist/utils/index.js +3 -0
  285. package/dist/utils/index.js.map +1 -1
  286. package/dist/utils/pathEncoder.d.ts +8 -2
  287. package/dist/utils/pathEncoder.d.ts.map +1 -1
  288. package/dist/utils/pathEncoder.js +19 -3
  289. package/dist/utils/pathEncoder.js.map +1 -1
  290. package/dist/utils/rateFeed.d.ts +18 -0
  291. package/dist/utils/rateFeed.d.ts.map +1 -0
  292. package/dist/utils/rateFeed.js +27 -0
  293. package/dist/utils/rateFeed.js.map +1 -0
  294. package/dist/utils/routeUtils.d.ts +53 -53
  295. package/dist/utils/routeUtils.d.ts.map +1 -1
  296. package/dist/utils/routeUtils.js +41 -41
  297. package/dist/utils/routeUtils.js.map +1 -1
  298. package/dist/utils/routes.d.ts +2 -8
  299. package/dist/utils/routes.d.ts.map +1 -1
  300. package/dist/utils/routes.js +5 -46
  301. package/dist/utils/routes.js.map +1 -1
  302. package/dist/utils/tokens.d.ts +1 -62
  303. package/dist/utils/tokens.d.ts.map +1 -1
  304. package/dist/utils/tokens.js +10 -163
  305. package/dist/utils/tokens.js.map +1 -1
  306. package/dist/utils/tradingLimits.d.ts +41 -0
  307. package/dist/utils/tradingLimits.d.ts.map +1 -0
  308. package/dist/utils/tradingLimits.js +171 -0
  309. package/dist/utils/tradingLimits.js.map +1 -0
  310. package/dist/utils/validation.d.ts +19 -0
  311. package/dist/utils/validation.d.ts.map +1 -0
  312. package/dist/utils/validation.js +34 -0
  313. package/dist/utils/validation.js.map +1 -0
  314. package/package.json +6 -6
  315. package/dist/cache/routes.42220.d.ts +0 -3
  316. package/dist/cache/routes.42220.d.ts.map +0 -1
  317. package/dist/cache/routes.42220.js +0 -112
  318. package/dist/cache/routes.42220.js.map +0 -1
  319. package/dist/cache/tokens.11142220.d.ts +0 -3
  320. package/dist/cache/tokens.11142220.d.ts.map +0 -1
  321. package/dist/cache/tokens.11142220.js +0 -129
  322. package/dist/cache/tokens.11142220.js.map +0 -1
  323. package/dist/cache/tokens.42220.d.ts +0 -3
  324. package/dist/cache/tokens.42220.d.ts.map +0 -1
  325. package/dist/cache/tokens.42220.js +0 -129
  326. package/dist/cache/tokens.42220.js.map +0 -1
  327. package/dist/core/abis/uniswapV3.d.ts +0 -4
  328. package/dist/core/abis/uniswapV3.d.ts.map +0 -1
  329. package/dist/core/abis/uniswapV3.js +0 -16
  330. package/dist/core/abis/uniswapV3.js.map +0 -1
  331. package/dist/core/constants/aaveConfig.d.ts +0 -7
  332. package/dist/core/constants/aaveConfig.d.ts.map +0 -1
  333. package/dist/core/constants/aaveConfig.js +0 -22
  334. package/dist/core/constants/aaveConfig.js.map +0 -1
  335. package/dist/core/constants/mentoAddresses.d.ts +0 -7
  336. package/dist/core/constants/mentoAddresses.d.ts.map +0 -1
  337. package/dist/core/constants/mentoAddresses.js +0 -10
  338. package/dist/core/constants/mentoAddresses.js.map +0 -1
  339. package/dist/core/constants/protocolAddresses.d.ts +0 -5
  340. package/dist/core/constants/protocolAddresses.d.ts.map +0 -1
  341. package/dist/core/constants/protocolAddresses.js +0 -8
  342. package/dist/core/constants/protocolAddresses.js.map +0 -1
  343. package/dist/services/tokens/supply/ISupplyCalculator.d.ts +0 -14
  344. package/dist/services/tokens/supply/ISupplyCalculator.d.ts.map +0 -1
  345. package/dist/services/tokens/supply/ISupplyCalculator.js.map +0 -1
  346. package/dist/services/tokens/supply/aaveSupplyCalculator.d.ts +0 -22
  347. package/dist/services/tokens/supply/aaveSupplyCalculator.d.ts.map +0 -1
  348. package/dist/services/tokens/supply/aaveSupplyCalculator.js +0 -46
  349. package/dist/services/tokens/supply/aaveSupplyCalculator.js.map +0 -1
  350. package/dist/services/tokens/supply/calculatorFactory.d.ts +0 -8
  351. package/dist/services/tokens/supply/calculatorFactory.d.ts.map +0 -1
  352. package/dist/services/tokens/supply/calculatorFactory.js.map +0 -1
  353. package/dist/services/tokens/supply/defaultCalculatorFactory.d.ts +0 -9
  354. package/dist/services/tokens/supply/defaultCalculatorFactory.d.ts.map +0 -1
  355. package/dist/services/tokens/supply/defaultCalculatorFactory.js +0 -28
  356. package/dist/services/tokens/supply/defaultCalculatorFactory.js.map +0 -1
  357. package/dist/services/tokens/supply/index.d.ts +0 -7
  358. package/dist/services/tokens/supply/index.d.ts.map +0 -1
  359. package/dist/services/tokens/supply/index.js.map +0 -1
  360. package/dist/services/tokens/supply/multisigSupplyCalculator.d.ts +0 -9
  361. package/dist/services/tokens/supply/multisigSupplyCalculator.d.ts.map +0 -1
  362. package/dist/services/tokens/supply/multisigSupplyCalculator.js +0 -33
  363. package/dist/services/tokens/supply/multisigSupplyCalculator.js.map +0 -1
  364. package/dist/services/tokens/supply/uniV3SupplyCalculator.d.ts +0 -21
  365. package/dist/services/tokens/supply/uniV3SupplyCalculator.d.ts.map +0 -1
  366. package/dist/services/tokens/supply/uniV3SupplyCalculator.js +0 -238
  367. package/dist/services/tokens/supply/uniV3SupplyCalculator.js.map +0 -1
  368. package/dist/services/tokens/supplyAdjustmentService.d.ts +0 -19
  369. package/dist/services/tokens/supplyAdjustmentService.d.ts.map +0 -1
  370. package/dist/services/tokens/supplyAdjustmentService.js +0 -49
  371. package/dist/services/tokens/supplyAdjustmentService.js.map +0 -1
@@ -0,0 +1,154 @@
1
+ import { PublicClient } from 'viem';
2
+ import { PoolService } from '../pools';
3
+ import { RouteService } from '../routes';
4
+ import { LiquidityOptions, AddLiquidityQuote, RemoveLiquidityQuote, AddLiquidityDetails, RemoveLiquidityDetails, AddLiquidityTransaction, RemoveLiquidityTransaction, LPTokenBalance, ZapInQuote, ZapOutQuote, ZapInDetails, ZapOutDetails, ZapInTransaction, ZapOutTransaction } from '../../core/types';
5
+ export declare class LiquidityService {
6
+ private publicClient;
7
+ private chainId;
8
+ private poolService;
9
+ private routeService;
10
+ constructor(publicClient: PublicClient, chainId: number, poolService: PoolService, routeService: RouteService);
11
+ /**
12
+ * Builds add liquidity transaction with token approvals if needed.
13
+ * Provide two tokens in any order - the Router handles token ordering automatically.
14
+ * @param poolAddress - FPMM pool address
15
+ * @param tokenA - First token address
16
+ * @param amountA - Amount of first token
17
+ * @param tokenB - Second token address
18
+ * @param amountB - Amount of second token
19
+ * @param recipient - Address to receive LP tokens
20
+ * @param owner - Address that owns the input tokens (for checking allowances)
21
+ * @param options - Slippage tolerance and deadline
22
+ * @returns Transaction with approvals (if needed) and add liquidity call
23
+ */
24
+ buildAddLiquidityTransaction(poolAddress: string, tokenA: string, amountA: bigint, tokenB: string, amountB: bigint, recipient: string, owner: string, options: LiquidityOptions): Promise<AddLiquidityTransaction>;
25
+ /**
26
+ * Builds add liquidity transaction parameters without checking token approvals.
27
+ * Use buildAddLiquidityTransaction if you need approval handling.
28
+ * @param poolAddress - FPMM pool address
29
+ * @param tokenA - First token address
30
+ * @param amountA - Amount of first token
31
+ * @param tokenB - Second token address
32
+ * @param amountB - Amount of second token
33
+ * @param recipient - Address to receive LP tokens
34
+ * @param options - Slippage tolerance and deadline
35
+ * @returns Transaction details with encoded call data
36
+ */
37
+ buildAddLiquidityParams(poolAddress: string, tokenA: string, amountA: bigint, tokenB: string, amountB: bigint, recipient: string, options: LiquidityOptions): Promise<AddLiquidityDetails>;
38
+ /**
39
+ * Builds remove liquidity transaction with LP token approval if needed.
40
+ * @param poolAddress - FPMM pool address (also the LP token address)
41
+ * @param liquidity - Amount of LP tokens to burn
42
+ * @param recipient - Address to receive the underlying tokens
43
+ * @param owner - Address that owns the LP tokens (for checking allowance)
44
+ * @param options - Slippage tolerance and deadline
45
+ * @returns Transaction with approval (if needed) and remove liquidity call
46
+ */
47
+ buildRemoveLiquidityTransaction(poolAddress: string, liquidity: bigint, recipient: string, owner: string, options: LiquidityOptions): Promise<RemoveLiquidityTransaction>;
48
+ /**
49
+ * Builds remove liquidity transaction parameters without checking LP token approval.
50
+ * Use buildRemoveLiquidityTransaction if you need approval handling.
51
+ * @param poolAddress - FPMM pool address
52
+ * @param liquidity - Amount of LP tokens to burn
53
+ * @param recipient - Address to receive the underlying tokens
54
+ * @param options - Slippage tolerance and deadline
55
+ * @returns Transaction details with encoded call data
56
+ */
57
+ buildRemoveLiquidityParams(poolAddress: string, liquidity: bigint, recipient: string, options: LiquidityOptions): Promise<RemoveLiquidityDetails>;
58
+ /**
59
+ * Quotes an add liquidity operation (read-only call).
60
+ * Returns expected amounts and LP tokens based on current pool reserves.
61
+ * @param poolAddress - FPMM pool address
62
+ * @param tokenA - First token address
63
+ * @param amountA - Amount of first token
64
+ * @param tokenB - Second token address
65
+ * @param amountB - Amount of second token
66
+ * @returns Expected amounts and LP tokens to be minted
67
+ */
68
+ quoteAddLiquidity(poolAddress: string, tokenA: string, amountA: bigint, tokenB: string, amountB: bigint): Promise<AddLiquidityQuote>;
69
+ /**
70
+ * Quotes a remove liquidity operation (read-only call).
71
+ * Returns expected token amounts based on current pool reserves.
72
+ * @param poolAddress - FPMM pool address
73
+ * @param liquidity - Amount of LP tokens to burn
74
+ * @returns Expected amounts of token0 and token1
75
+ */
76
+ quoteRemoveLiquidity(poolAddress: string, liquidity: bigint): Promise<RemoveLiquidityQuote>;
77
+ /**
78
+ * Gets LP token balance and pool share percentage for an address.
79
+ * @param poolAddress - FPMM pool address (also the LP token address)
80
+ * @param owner - Address to check balance for
81
+ * @returns Balance, total supply, and share percentage
82
+ */
83
+ getLPTokenBalance(poolAddress: string, owner: string): Promise<LPTokenBalance>;
84
+ /**
85
+ * Builds zap in transaction with approval if needed.
86
+ * Adds liquidity using a single input token - the Router swaps it to both pool tokens automatically.
87
+ * @param poolAddress - FPMM pool address
88
+ * @param tokenIn - Input token address
89
+ * @param amountIn - Total input amount
90
+ * @param amountInSplit - How to split input between pool tokens (0-1, e.g., 0.5 for 50/50)
91
+ * @param recipient - Address to receive LP tokens
92
+ * @param owner - Address that owns the input token
93
+ * @param options - Slippage tolerance and deadline
94
+ * @returns Transaction with approval (if needed) and zap in call
95
+ */
96
+ buildZapInTransaction(poolAddress: string, tokenIn: string, amountIn: bigint, amountInSplit: number, recipient: string, owner: string, options: LiquidityOptions): Promise<ZapInTransaction>;
97
+ /**
98
+ * Builds zap in transaction parameters without checking approval.
99
+ * Use buildZapInTransaction if you need approval handling.
100
+ * @param poolAddress - FPMM pool address
101
+ * @param tokenIn - Input token address
102
+ * @param amountIn - Total input amount
103
+ * @param amountInSplit - Split ratio (0-1)
104
+ * @param recipient - Address to receive LP tokens
105
+ * @param options - Slippage tolerance and deadline
106
+ * @returns Transaction details with encoded call data and routing information
107
+ */
108
+ buildZapInParams(poolAddress: string, tokenIn: string, amountIn: bigint, amountInSplit: number, recipient: string, options: LiquidityOptions): Promise<ZapInDetails>;
109
+ /**
110
+ * Builds zap out transaction with approval if needed.
111
+ * Removes liquidity and swaps both tokens to a single output token.
112
+ * @param poolAddress - FPMM pool address
113
+ * @param tokenOut - Output token address
114
+ * @param liquidity - Amount of LP tokens to burn
115
+ * @param recipient - Address to receive output tokens
116
+ * @param owner - Address that owns the LP tokens
117
+ * @param options - Slippage tolerance and deadline
118
+ * @returns Transaction with approval (if needed) and zap out call
119
+ */
120
+ buildZapOutTransaction(poolAddress: string, tokenOut: string, liquidity: bigint, recipient: string, owner: string, options: LiquidityOptions): Promise<ZapOutTransaction>;
121
+ /**
122
+ * Builds zap out transaction parameters without checking approval.
123
+ * Use buildZapOutTransaction if you need approval handling.
124
+ * @param poolAddress - FPMM pool address
125
+ * @param tokenOut - Output token address
126
+ * @param liquidity - Amount of LP tokens to burn
127
+ * @param recipient - Address to receive output tokens
128
+ * @param options - Slippage tolerance and deadline
129
+ * @returns Transaction details with encoded call data and routing information
130
+ */
131
+ buildZapOutParams(poolAddress: string, tokenOut: string, liquidity: bigint, recipient: string, options: LiquidityOptions): Promise<ZapOutDetails>;
132
+ /**
133
+ * Quotes a zap in operation (read-only call).
134
+ * Estimates expected LP tokens and minimum amounts after swaps and slippage.
135
+ * @param poolAddress - FPMM pool address
136
+ * @param tokenIn - Input token address
137
+ * @param amountIn - Total input amount
138
+ * @param amountInSplit - Split ratio (0-1)
139
+ * @param options - Slippage tolerance and deadline
140
+ * @returns Expected LP tokens and minimum amounts for both pool tokens
141
+ */
142
+ quoteZapIn(poolAddress: string, tokenIn: string, amountIn: bigint, amountInSplit: number, options: LiquidityOptions): Promise<ZapInQuote>;
143
+ /**
144
+ * Quotes a zap out operation (read-only call).
145
+ * Estimates expected output tokens after removing liquidity and swapping.
146
+ * @param poolAddress - FPMM pool address
147
+ * @param tokenOut - Output token address
148
+ * @param liquidity - Amount of LP tokens to burn
149
+ * @param options - Slippage tolerance and deadline
150
+ * @returns Expected output amount and minimum amounts after slippage
151
+ */
152
+ quoteZapOut(poolAddress: string, tokenOut: string, liquidity: bigint, options: LiquidityOptions): Promise<ZapOutQuote>;
153
+ }
154
+ //# sourceMappingURL=LiquidityService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiquidityService.d.ts","sourceRoot":"","sources":["../../../src/services/liquidity/LiquidityService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LiquidityService = void 0;
4
+ const basicLiquidity_1 = require("./basicLiquidity");
5
+ const zapIn_1 = require("./zapIn");
6
+ const zapOut_1 = require("./zapOut");
7
+ class LiquidityService {
8
+ constructor(publicClient, chainId, poolService, routeService) {
9
+ this.publicClient = publicClient;
10
+ this.chainId = chainId;
11
+ this.poolService = poolService;
12
+ this.routeService = routeService;
13
+ }
14
+ /**
15
+ * Builds add liquidity transaction with token approvals if needed.
16
+ * Provide two tokens in any order - the Router handles token ordering automatically.
17
+ * @param poolAddress - FPMM pool address
18
+ * @param tokenA - First token address
19
+ * @param amountA - Amount of first token
20
+ * @param tokenB - Second token address
21
+ * @param amountB - Amount of second token
22
+ * @param recipient - Address to receive LP tokens
23
+ * @param owner - Address that owns the input tokens (for checking allowances)
24
+ * @param options - Slippage tolerance and deadline
25
+ * @returns Transaction with approvals (if needed) and add liquidity call
26
+ */
27
+ async buildAddLiquidityTransaction(poolAddress, tokenA, amountA, tokenB, amountB, recipient, owner, options) {
28
+ return (0, basicLiquidity_1.buildAddLiquidityTransactionInternal)(this.publicClient, this.chainId, this.poolService, poolAddress, tokenA, amountA, tokenB, amountB, recipient, owner, options);
29
+ }
30
+ /**
31
+ * Builds add liquidity transaction parameters without checking token approvals.
32
+ * Use buildAddLiquidityTransaction if you need approval handling.
33
+ * @param poolAddress - FPMM pool address
34
+ * @param tokenA - First token address
35
+ * @param amountA - Amount of first token
36
+ * @param tokenB - Second token address
37
+ * @param amountB - Amount of second token
38
+ * @param recipient - Address to receive LP tokens
39
+ * @param options - Slippage tolerance and deadline
40
+ * @returns Transaction details with encoded call data
41
+ */
42
+ async buildAddLiquidityParams(poolAddress, tokenA, amountA, tokenB, amountB, recipient, options) {
43
+ return (0, basicLiquidity_1.buildAddLiquidityParamsInternal)(this.publicClient, this.chainId, this.poolService, poolAddress, tokenA, amountA, tokenB, amountB, recipient, options);
44
+ }
45
+ /**
46
+ * Builds remove liquidity transaction with LP token approval if needed.
47
+ * @param poolAddress - FPMM pool address (also the LP token address)
48
+ * @param liquidity - Amount of LP tokens to burn
49
+ * @param recipient - Address to receive the underlying tokens
50
+ * @param owner - Address that owns the LP tokens (for checking allowance)
51
+ * @param options - Slippage tolerance and deadline
52
+ * @returns Transaction with approval (if needed) and remove liquidity call
53
+ */
54
+ async buildRemoveLiquidityTransaction(poolAddress, liquidity, recipient, owner, options) {
55
+ return (0, basicLiquidity_1.buildRemoveLiquidityTransactionInternal)(this.publicClient, this.chainId, this.poolService, poolAddress, liquidity, recipient, owner, options);
56
+ }
57
+ /**
58
+ * Builds remove liquidity transaction parameters without checking LP token approval.
59
+ * Use buildRemoveLiquidityTransaction if you need approval handling.
60
+ * @param poolAddress - FPMM pool address
61
+ * @param liquidity - Amount of LP tokens to burn
62
+ * @param recipient - Address to receive the underlying tokens
63
+ * @param options - Slippage tolerance and deadline
64
+ * @returns Transaction details with encoded call data
65
+ */
66
+ async buildRemoveLiquidityParams(poolAddress, liquidity, recipient, options) {
67
+ return (0, basicLiquidity_1.buildRemoveLiquidityParamsInternal)(this.publicClient, this.chainId, this.poolService, poolAddress, liquidity, recipient, options);
68
+ }
69
+ /**
70
+ * Quotes an add liquidity operation (read-only call).
71
+ * Returns expected amounts and LP tokens based on current pool reserves.
72
+ * @param poolAddress - FPMM pool address
73
+ * @param tokenA - First token address
74
+ * @param amountA - Amount of first token
75
+ * @param tokenB - Second token address
76
+ * @param amountB - Amount of second token
77
+ * @returns Expected amounts and LP tokens to be minted
78
+ */
79
+ async quoteAddLiquidity(poolAddress, tokenA, amountA, tokenB, amountB) {
80
+ return (0, basicLiquidity_1.quoteAddLiquidityInternal)(this.publicClient, this.chainId, this.poolService, poolAddress, tokenA, amountA, tokenB, amountB);
81
+ }
82
+ /**
83
+ * Quotes a remove liquidity operation (read-only call).
84
+ * Returns expected token amounts based on current pool reserves.
85
+ * @param poolAddress - FPMM pool address
86
+ * @param liquidity - Amount of LP tokens to burn
87
+ * @returns Expected amounts of token0 and token1
88
+ */
89
+ async quoteRemoveLiquidity(poolAddress, liquidity) {
90
+ return (0, basicLiquidity_1.quoteRemoveLiquidityInternal)(this.publicClient, this.chainId, this.poolService, poolAddress, liquidity);
91
+ }
92
+ /**
93
+ * Gets LP token balance and pool share percentage for an address.
94
+ * @param poolAddress - FPMM pool address (also the LP token address)
95
+ * @param owner - Address to check balance for
96
+ * @returns Balance, total supply, and share percentage
97
+ */
98
+ async getLPTokenBalance(poolAddress, owner) {
99
+ return (0, basicLiquidity_1.getLPTokenBalanceInternal)(this.publicClient, this.poolService, poolAddress, owner);
100
+ }
101
+ /**
102
+ * Builds zap in transaction with approval if needed.
103
+ * Adds liquidity using a single input token - the Router swaps it to both pool tokens automatically.
104
+ * @param poolAddress - FPMM pool address
105
+ * @param tokenIn - Input token address
106
+ * @param amountIn - Total input amount
107
+ * @param amountInSplit - How to split input between pool tokens (0-1, e.g., 0.5 for 50/50)
108
+ * @param recipient - Address to receive LP tokens
109
+ * @param owner - Address that owns the input token
110
+ * @param options - Slippage tolerance and deadline
111
+ * @returns Transaction with approval (if needed) and zap in call
112
+ */
113
+ async buildZapInTransaction(poolAddress, tokenIn, amountIn, amountInSplit, recipient, owner, options) {
114
+ return (0, zapIn_1.buildZapInTransactionInternal)(this.publicClient, this.chainId, this.poolService, this.routeService, poolAddress, tokenIn, amountIn, amountInSplit, recipient, owner, options);
115
+ }
116
+ /**
117
+ * Builds zap in transaction parameters without checking approval.
118
+ * Use buildZapInTransaction if you need approval handling.
119
+ * @param poolAddress - FPMM pool address
120
+ * @param tokenIn - Input token address
121
+ * @param amountIn - Total input amount
122
+ * @param amountInSplit - Split ratio (0-1)
123
+ * @param recipient - Address to receive LP tokens
124
+ * @param options - Slippage tolerance and deadline
125
+ * @returns Transaction details with encoded call data and routing information
126
+ */
127
+ async buildZapInParams(poolAddress, tokenIn, amountIn, amountInSplit, recipient, options) {
128
+ return (0, zapIn_1.buildZapInParamsInternal)(this.publicClient, this.chainId, this.poolService, this.routeService, poolAddress, tokenIn, amountIn, amountInSplit, recipient, options);
129
+ }
130
+ /**
131
+ * Builds zap out transaction with approval if needed.
132
+ * Removes liquidity and swaps both tokens to a single output token.
133
+ * @param poolAddress - FPMM pool address
134
+ * @param tokenOut - Output token address
135
+ * @param liquidity - Amount of LP tokens to burn
136
+ * @param recipient - Address to receive output tokens
137
+ * @param owner - Address that owns the LP tokens
138
+ * @param options - Slippage tolerance and deadline
139
+ * @returns Transaction with approval (if needed) and zap out call
140
+ */
141
+ async buildZapOutTransaction(poolAddress, tokenOut, liquidity, recipient, owner, options) {
142
+ return (0, zapOut_1.buildZapOutTransactionInternal)(this.publicClient, this.chainId, this.poolService, this.routeService, poolAddress, tokenOut, liquidity, recipient, owner, options);
143
+ }
144
+ /**
145
+ * Builds zap out transaction parameters without checking approval.
146
+ * Use buildZapOutTransaction if you need approval handling.
147
+ * @param poolAddress - FPMM pool address
148
+ * @param tokenOut - Output token address
149
+ * @param liquidity - Amount of LP tokens to burn
150
+ * @param recipient - Address to receive output tokens
151
+ * @param options - Slippage tolerance and deadline
152
+ * @returns Transaction details with encoded call data and routing information
153
+ */
154
+ async buildZapOutParams(poolAddress, tokenOut, liquidity, recipient, options) {
155
+ return (0, zapOut_1.buildZapOutParamsInternal)(this.publicClient, this.chainId, this.poolService, this.routeService, poolAddress, tokenOut, liquidity, recipient, options);
156
+ }
157
+ /**
158
+ * Quotes a zap in operation (read-only call).
159
+ * Estimates expected LP tokens and minimum amounts after swaps and slippage.
160
+ * @param poolAddress - FPMM pool address
161
+ * @param tokenIn - Input token address
162
+ * @param amountIn - Total input amount
163
+ * @param amountInSplit - Split ratio (0-1)
164
+ * @param options - Slippage tolerance and deadline
165
+ * @returns Expected LP tokens and minimum amounts for both pool tokens
166
+ */
167
+ async quoteZapIn(poolAddress, tokenIn, amountIn, amountInSplit, options) {
168
+ return (0, zapIn_1.quoteZapInInternal)(this.publicClient, this.chainId, this.poolService, this.routeService, poolAddress, tokenIn, amountIn, amountInSplit, options);
169
+ }
170
+ /**
171
+ * Quotes a zap out operation (read-only call).
172
+ * Estimates expected output tokens after removing liquidity and swapping.
173
+ * @param poolAddress - FPMM pool address
174
+ * @param tokenOut - Output token address
175
+ * @param liquidity - Amount of LP tokens to burn
176
+ * @param options - Slippage tolerance and deadline
177
+ * @returns Expected output amount and minimum amounts after slippage
178
+ */
179
+ async quoteZapOut(poolAddress, tokenOut, liquidity, options) {
180
+ return (0, zapOut_1.quoteZapOutInternal)(this.publicClient, this.chainId, this.poolService, this.routeService, poolAddress, tokenOut, liquidity, options);
181
+ }
182
+ }
183
+ exports.LiquidityService = LiquidityService;
184
+ //# sourceMappingURL=LiquidityService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiquidityService.js","sourceRoot":"","sources":["../../../src/services/liquidity/LiquidityService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { PublicClient } from 'viem';
2
+ import { PoolService } from '../pools';
3
+ import { LiquidityOptions, AddLiquidityQuote, RemoveLiquidityQuote, AddLiquidityDetails, RemoveLiquidityDetails, AddLiquidityTransaction, RemoveLiquidityTransaction, LPTokenBalance } from '../../core/types';
4
+ export declare function buildAddLiquidityTransactionInternal(publicClient: PublicClient, chainId: number, poolService: PoolService, poolAddress: string, tokenA: string, amountA: bigint, tokenB: string, amountB: bigint, recipient: string, owner: string, options: LiquidityOptions): Promise<AddLiquidityTransaction>;
5
+ export declare function buildAddLiquidityParamsInternal(publicClient: PublicClient, chainId: number, poolService: PoolService, poolAddress: string, tokenA: string, amountA: bigint, tokenB: string, amountB: bigint, recipient: string, options: LiquidityOptions): Promise<AddLiquidityDetails>;
6
+ export declare function quoteAddLiquidityInternal(publicClient: PublicClient, chainId: number, poolService: PoolService, poolAddress: string, tokenA: string, amountA: bigint, tokenB: string, amountB: bigint): Promise<AddLiquidityQuote>;
7
+ export declare function buildRemoveLiquidityTransactionInternal(publicClient: PublicClient, chainId: number, poolService: PoolService, poolAddress: string, liquidity: bigint, recipient: string, owner: string, options: LiquidityOptions): Promise<RemoveLiquidityTransaction>;
8
+ export declare function buildRemoveLiquidityParamsInternal(publicClient: PublicClient, chainId: number, poolService: PoolService, poolAddress: string, liquidity: bigint, recipient: string, options: LiquidityOptions): Promise<RemoveLiquidityDetails>;
9
+ export declare function quoteRemoveLiquidityInternal(publicClient: PublicClient, chainId: number, poolService: PoolService, poolAddress: string, liquidity: bigint): Promise<RemoveLiquidityQuote>;
10
+ export declare function getLPTokenBalanceInternal(publicClient: PublicClient, poolService: PoolService, poolAddress: string, owner: string): Promise<LPTokenBalance>;
11
+ //# sourceMappingURL=basicLiquidity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basicLiquidity.d.ts","sourceRoot":"","sources":["../../../src/services/liquidity/basicLiquidity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAsB,MAAM,MAAM,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,EACf,MAAM,kBAAkB,CAAA;AAuCzB,wBAAsB,oCAAoC,CACxD,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,uBAAuB,CAAC,CAiClC;AAED,wBAAsB,+BAA+B,CACnD,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAmC9B;AAED,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,CAAC,CAkB5B;AAED,wBAAsB,uCAAuC,CAC3D,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,0BAA0B,CAAC,CAuBrC;AAED,wBAAsB,kCAAkC,CACtD,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,sBAAsB,CAAC,CA6BjC;AAED,wBAAsB,4BAA4B,CAChD,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,CAAC,CAc/B;AAED,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,cAAc,CAAC,CAgCzB"}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildAddLiquidityTransactionInternal = buildAddLiquidityTransactionInternal;
4
+ exports.buildAddLiquidityParamsInternal = buildAddLiquidityParamsInternal;
5
+ exports.quoteAddLiquidityInternal = quoteAddLiquidityInternal;
6
+ exports.buildRemoveLiquidityTransactionInternal = buildRemoveLiquidityTransactionInternal;
7
+ exports.buildRemoveLiquidityParamsInternal = buildRemoveLiquidityParamsInternal;
8
+ exports.quoteRemoveLiquidityInternal = quoteRemoveLiquidityInternal;
9
+ exports.getLPTokenBalanceInternal = getLPTokenBalanceInternal;
10
+ const viem_1 = require("viem");
11
+ const abis_1 = require("../../core/abis");
12
+ const constants_1 = require("../../core/constants");
13
+ const validation_1 = require("../../utils/validation");
14
+ const liquidityHelpers_1 = require("./liquidityHelpers");
15
+ function encodeAddLiquidityCall(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, recipient, deadline) {
16
+ return (0, viem_1.encodeFunctionData)({
17
+ abi: abis_1.ROUTER_ABI,
18
+ functionName: 'addLiquidity',
19
+ args: [tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, recipient, deadline],
20
+ });
21
+ }
22
+ function encodeRemoveLiquidityCall(token0, token1, liquidity, amount0Min, amount1Min, recipient, deadline) {
23
+ return (0, viem_1.encodeFunctionData)({
24
+ abi: abis_1.ROUTER_ABI,
25
+ functionName: 'removeLiquidity',
26
+ args: [token0, token1, liquidity, amount0Min, amount1Min, recipient, deadline],
27
+ });
28
+ }
29
+ async function buildAddLiquidityTransactionInternal(publicClient, chainId, poolService, poolAddress, tokenA, amountA, tokenB, amountB, recipient, owner, options) {
30
+ const addLiquidity = await buildAddLiquidityParamsInternal(publicClient, chainId, poolService, poolAddress, tokenA, amountA, tokenB, amountB, recipient, options);
31
+ (0, validation_1.validateAddress)(owner, 'owner');
32
+ const ownerAddr = owner;
33
+ const tokenAAddr = addLiquidity.tokenA;
34
+ const tokenBAddr = addLiquidity.tokenB;
35
+ const [allowanceA, allowanceB] = await Promise.all([
36
+ (0, liquidityHelpers_1.getAllowance)(publicClient, tokenAAddr, ownerAddr, chainId),
37
+ (0, liquidityHelpers_1.getAllowance)(publicClient, tokenBAddr, ownerAddr, chainId),
38
+ ]);
39
+ const approvalA = allowanceA < amountA
40
+ ? { token: addLiquidity.tokenA, amount: amountA, params: (0, liquidityHelpers_1.buildApprovalParams)(chainId, tokenAAddr, amountA) }
41
+ : null;
42
+ const approvalB = allowanceB < amountB
43
+ ? { token: addLiquidity.tokenB, amount: amountB, params: (0, liquidityHelpers_1.buildApprovalParams)(chainId, tokenBAddr, amountB) }
44
+ : null;
45
+ return { approvalA, approvalB, addLiquidity };
46
+ }
47
+ async function buildAddLiquidityParamsInternal(publicClient, chainId, poolService, poolAddress, tokenA, amountA, tokenB, amountB, recipient, options) {
48
+ (0, validation_1.validateAddress)(poolAddress, 'poolAddress');
49
+ (0, validation_1.validateAddress)(tokenA, 'tokenA');
50
+ (0, validation_1.validateAddress)(tokenB, 'tokenB');
51
+ (0, validation_1.validateAddress)(recipient, 'recipient');
52
+ const { token0, token1, factoryAddr } = await (0, liquidityHelpers_1.getPoolInfo)(poolService, poolAddress);
53
+ (0, liquidityHelpers_1.validatePoolTokens)(token0, token1, tokenA, tokenB);
54
+ const quote = await quoteAddLiquidityInternal(publicClient, chainId, poolService, poolAddress, tokenA, amountA, tokenB, amountB);
55
+ const amountAMin = (0, liquidityHelpers_1.calculateMinAmount)(quote.amountA, options.slippageTolerance);
56
+ const amountBMin = (0, liquidityHelpers_1.calculateMinAmount)(quote.amountB, options.slippageTolerance);
57
+ const routerAddress = (0, constants_1.getContractAddress)(chainId, 'Router');
58
+ const data = encodeAddLiquidityCall(tokenA, tokenB, amountA, amountB, amountAMin, amountBMin, recipient, options.deadline);
59
+ return {
60
+ params: {
61
+ to: routerAddress,
62
+ data,
63
+ value: '0',
64
+ },
65
+ poolAddress,
66
+ token0,
67
+ token1,
68
+ tokenA,
69
+ tokenB,
70
+ amountADesired: amountA,
71
+ amountBDesired: amountB,
72
+ amountAMin,
73
+ amountBMin,
74
+ estimatedMinLiquidity: quote.liquidity,
75
+ deadline: options.deadline,
76
+ };
77
+ }
78
+ async function quoteAddLiquidityInternal(publicClient, chainId, poolService, poolAddress, tokenA, amountA, tokenB, amountB) {
79
+ (0, validation_1.validateAddress)(poolAddress, 'poolAddress');
80
+ (0, validation_1.validateAddress)(tokenA, 'tokenA');
81
+ (0, validation_1.validateAddress)(tokenB, 'tokenB');
82
+ const { token0, token1, factoryAddr } = await (0, liquidityHelpers_1.getPoolInfo)(poolService, poolAddress);
83
+ (0, liquidityHelpers_1.validatePoolTokens)(token0, token1, tokenA, tokenB);
84
+ const routerAddress = (0, constants_1.getContractAddress)(chainId, 'Router');
85
+ const [resultAmountA, resultAmountB, liquidity] = (await publicClient.readContract({
86
+ address: routerAddress,
87
+ abi: abis_1.ROUTER_ABI,
88
+ functionName: 'quoteAddLiquidity',
89
+ args: [tokenA, tokenB, factoryAddr, amountA, amountB],
90
+ }));
91
+ return { amountA: resultAmountA, amountB: resultAmountB, liquidity };
92
+ }
93
+ async function buildRemoveLiquidityTransactionInternal(publicClient, chainId, poolService, poolAddress, liquidity, recipient, owner, options) {
94
+ (0, validation_1.validateAddress)(owner, 'owner');
95
+ // Build remove liquidity params
96
+ const removeLiquidity = await buildRemoveLiquidityParamsInternal(publicClient, chainId, poolService, poolAddress, liquidity, recipient, options);
97
+ const poolAddr = poolAddress; // Pool address IS the LP token
98
+ const ownerAddr = owner;
99
+ const currentAllowance = await (0, liquidityHelpers_1.getAllowance)(publicClient, poolAddr, ownerAddr, chainId);
100
+ const approval = currentAllowance < liquidity
101
+ ? { token: poolAddress, amount: liquidity, params: (0, liquidityHelpers_1.buildApprovalParams)(chainId, poolAddr, liquidity) }
102
+ : null;
103
+ return { approval, removeLiquidity };
104
+ }
105
+ async function buildRemoveLiquidityParamsInternal(publicClient, chainId, poolService, poolAddress, liquidity, recipient, options) {
106
+ (0, validation_1.validateAddress)(poolAddress, 'poolAddress');
107
+ (0, validation_1.validateAddress)(recipient, 'recipient');
108
+ const { token0, token1 } = await (0, liquidityHelpers_1.getPoolInfo)(poolService, poolAddress);
109
+ const quote = await quoteRemoveLiquidityInternal(publicClient, chainId, poolService, poolAddress, liquidity);
110
+ const amount0Min = (0, liquidityHelpers_1.calculateMinAmount)(quote.amount0, options.slippageTolerance);
111
+ const amount1Min = (0, liquidityHelpers_1.calculateMinAmount)(quote.amount1, options.slippageTolerance);
112
+ const routerAddress = (0, constants_1.getContractAddress)(chainId, 'Router');
113
+ const data = encodeRemoveLiquidityCall(token0, token1, liquidity, amount0Min, amount1Min, recipient, options.deadline);
114
+ return {
115
+ params: {
116
+ to: routerAddress,
117
+ data,
118
+ value: '0',
119
+ },
120
+ poolAddress,
121
+ token0,
122
+ token1,
123
+ liquidity,
124
+ amount0Min,
125
+ amount1Min,
126
+ expectedAmount0: quote.amount0,
127
+ expectedAmount1: quote.amount1,
128
+ deadline: options.deadline,
129
+ };
130
+ }
131
+ async function quoteRemoveLiquidityInternal(publicClient, chainId, poolService, poolAddress, liquidity) {
132
+ (0, validation_1.validateAddress)(poolAddress, 'poolAddress');
133
+ const { token0, token1, factoryAddr } = await (0, liquidityHelpers_1.getPoolInfo)(poolService, poolAddress);
134
+ const routerAddress = (0, constants_1.getContractAddress)(chainId, 'Router');
135
+ const [amount0, amount1] = (await publicClient.readContract({
136
+ address: routerAddress,
137
+ abi: abis_1.ROUTER_ABI,
138
+ functionName: 'quoteRemoveLiquidity',
139
+ args: [token0, token1, factoryAddr, liquidity],
140
+ }));
141
+ return { amount0, amount1 };
142
+ }
143
+ async function getLPTokenBalanceInternal(publicClient, poolService, poolAddress, owner) {
144
+ (0, validation_1.validateAddress)(poolAddress, 'poolAddress');
145
+ (0, validation_1.validateAddress)(owner, 'owner');
146
+ const { token0, token1 } = await (0, liquidityHelpers_1.getPoolInfo)(poolService, poolAddress);
147
+ // Pool address IS the LP token address (FPMM pools are ERC20)
148
+ const [balance, totalSupply] = await Promise.all([
149
+ publicClient.readContract({
150
+ address: poolAddress,
151
+ abi: abis_1.ERC20_ABI,
152
+ functionName: 'balanceOf',
153
+ args: [owner],
154
+ }),
155
+ publicClient.readContract({
156
+ address: poolAddress,
157
+ abi: abis_1.ERC20_ABI,
158
+ functionName: 'totalSupply',
159
+ args: [],
160
+ }),
161
+ ]);
162
+ const sharePercent = totalSupply > 0n ? Number((balance * 10000n) / totalSupply) / 100 : 0;
163
+ return {
164
+ poolAddress,
165
+ balance,
166
+ token0,
167
+ token1,
168
+ totalSupply,
169
+ sharePercent,
170
+ };
171
+ }
172
+ //# sourceMappingURL=basicLiquidity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basicLiquidity.js","sourceRoot":"","sources":["../../../src/services/liquidity/basicLiquidity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './LiquidityService';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/liquidity/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./LiquidityService"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/liquidity/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAkC"}
@@ -0,0 +1,13 @@
1
+ import { Address, PublicClient } from 'viem';
2
+ import { PoolService } from '../pools';
3
+ import { CallParams } from '../../core/types';
4
+ export declare function buildApprovalParams(chainId: number, token: Address, amount: bigint): CallParams;
5
+ export declare function getAllowance(publicClient: PublicClient, token: Address, owner: Address, chainId: number): Promise<bigint>;
6
+ export declare function calculateMinAmount(amount: bigint, slippageTolerance: number): bigint;
7
+ export declare function getPoolInfo(poolService: PoolService, poolAddress: string): Promise<{
8
+ token0: Address;
9
+ token1: Address;
10
+ factoryAddr: Address;
11
+ }>;
12
+ export declare function validatePoolTokens(poolToken0: Address, poolToken1: Address, tokenA: string, tokenB: string): void;
13
+ //# sourceMappingURL=liquidityHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquidityHelpers.d.ts","sourceRoot":"","sources":["../../../src/services/liquidity/liquidityHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAsB,MAAM,MAAM,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,UAAU,EAAY,MAAM,kBAAkB,CAAA;AAKvD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAQ/F;AAED,wBAAsB,YAAY,CAChC,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAWpF;AAED,wBAAsB,WAAW,CAC/B,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IACT,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,OAAO,CAAA;CACrB,CAAC,CAmBD;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,OAAO,EACnB,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,IAAI,CAoBN"}