@gearbox-protocol/sdk 14.10.1 → 14.10.2-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/dist/cjs/common-utils/test-utils/index.js +139 -0
  2. package/dist/cjs/common-utils/utils/apy/calculate-borrow-rate-from-utilization.js +59 -0
  3. package/dist/cjs/common-utils/utils/apy/calculate-borrow-rate-from-utilization.spec.js +32 -0
  4. package/dist/cjs/common-utils/utils/apy/calculate-earnings.js +59 -0
  5. package/dist/cjs/common-utils/utils/apy/calculate-earnings.spec.js +62 -0
  6. package/dist/cjs/common-utils/utils/apy/calculate-safe-borrow-rate.js +55 -0
  7. package/dist/cjs/common-utils/utils/apy/calculate-safe-borrow-rate.spec.js +39 -0
  8. package/dist/cjs/common-utils/utils/apy/get-safe-base-borrow-rate.js +38 -0
  9. package/dist/cjs/common-utils/utils/apy/index.js +8 -0
  10. package/dist/cjs/common-utils/utils/constants.js +34 -0
  11. package/dist/cjs/common-utils/utils/index.js +5 -1
  12. package/dist/cjs/common-utils/utils/strategies/assets/assets.js +30 -0
  13. package/dist/cjs/common-utils/utils/strategies/assets/index.js +22 -0
  14. package/dist/cjs/common-utils/utils/strategies/availability/index.js +1 -5
  15. package/dist/cjs/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.js +62 -0
  16. package/dist/cjs/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.spec.js +109 -0
  17. package/dist/cjs/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.js +75 -0
  18. package/dist/cjs/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.spec.js +93 -0
  19. package/dist/cjs/common-utils/utils/strategies/credit-managers/index.js +4 -0
  20. package/dist/cjs/common-utils/utils/strategies/index.js +2 -0
  21. package/dist/cjs/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.js +63 -0
  22. package/dist/cjs/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.spec.js +330 -0
  23. package/dist/cjs/common-utils/utils/strategies/leverage/get-collateral-by-debt.js +34 -0
  24. package/dist/cjs/common-utils/utils/strategies/leverage/get-collateral-by-debt.spec.js +30 -0
  25. package/dist/cjs/common-utils/utils/strategies/leverage/get-recommended-debt.js +85 -0
  26. package/dist/cjs/common-utils/utils/strategies/leverage/get-recommended-debt.spec.js +227 -0
  27. package/dist/cjs/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.js +33 -0
  28. package/dist/cjs/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.spec.js +23 -0
  29. package/dist/cjs/common-utils/utils/strategies/leverage/index.js +8 -0
  30. package/dist/cjs/common-utils/utils/strategies/leverage/max-leverage.js +2 -2
  31. package/dist/cjs/common-utils/utils/strategies/strategy-info/calculate-total-apy.js +112 -0
  32. package/dist/cjs/common-utils/utils/strategies/strategy-info/calculate-total-apy.spec.js +183 -0
  33. package/dist/cjs/common-utils/utils/strategies/strategy-info/calculate-total-points.js +74 -0
  34. package/dist/cjs/common-utils/utils/strategies/strategy-info/calculate-total-points.spec.js +131 -0
  35. package/dist/cjs/common-utils/utils/strategies/strategy-info/cm-availability-condition.js +5 -4
  36. package/dist/cjs/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.js +410 -0
  37. package/dist/cjs/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.spec.js +274 -0
  38. package/dist/cjs/common-utils/utils/strategies/strategy-info/get-strategy-you-can-earn.js +108 -0
  39. package/dist/cjs/common-utils/utils/strategies/strategy-info/index.js +8 -0
  40. package/dist/cjs/common-utils/utils/strategies/tokens/add-amount-in-target.js +41 -0
  41. package/dist/cjs/common-utils/utils/strategies/tokens/add-amount-in-target.spec.js +38 -0
  42. package/dist/cjs/common-utils/utils/strategies/tokens/get-chain-phantom-tokens.js +35 -0
  43. package/dist/cjs/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.js +42 -0
  44. package/dist/cjs/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.spec.js +32 -0
  45. package/dist/cjs/common-utils/utils/strategies/tokens/get-native-token-address.js +31 -0
  46. package/dist/cjs/common-utils/utils/strategies/tokens/index.js +19 -1
  47. package/dist/cjs/common-utils/utils/strategies/tokens/is-apy-with-points-exception.js +36 -0
  48. package/dist/cjs/common-utils/utils/strategies/tokens/is-collateral-token.js +59 -0
  49. package/dist/cjs/common-utils/utils/strategies/tokens/is-collateral-token.spec.js +135 -0
  50. package/dist/cjs/common-utils/utils/strategies/tokens/is-obtainable-token.js +42 -0
  51. package/dist/cjs/common-utils/utils/strategies/tokens/is-obtainable-token.spec.js +162 -0
  52. package/dist/cjs/common-utils/utils/strategies/tokens/is-valid-extra-collateral-token.js +51 -0
  53. package/dist/cjs/common-utils/utils/strategies/tokens/wrap-token-address.js +33 -0
  54. package/dist/cjs/common-utils/utils/strategies/tokens/wrap-token-address.spec.js +13 -0
  55. package/dist/cjs/common-utils/utils/strategies/types/index.js +4 -0
  56. package/dist/cjs/common-utils/utils/strategies/types/strategy-data.js +16 -0
  57. package/dist/cjs/common-utils/utils/strategies/types/strategy-earnings.js +16 -0
  58. package/dist/cjs/common-utils/utils/validation/index.js +38 -0
  59. package/dist/cjs/common-utils/utils/validation/is-zero-balance.js +30 -0
  60. package/dist/cjs/common-utils/utils/validation/validate-balance.js +47 -0
  61. package/dist/cjs/common-utils/utils/validation/validate-balance.spec.js +52 -0
  62. package/dist/cjs/common-utils/utils/validation/validate-balances.js +44 -0
  63. package/dist/cjs/common-utils/utils/validation/validate-balances.spec.js +37 -0
  64. package/dist/cjs/common-utils/utils/validation/validate-credit-manager.js +34 -0
  65. package/dist/cjs/common-utils/utils/validation/validate-credit-manager.spec.js +36 -0
  66. package/dist/cjs/common-utils/utils/validation/validate-hf.js +38 -0
  67. package/dist/cjs/common-utils/utils/validation/validate-hf.spec.js +24 -0
  68. package/dist/cjs/common-utils/utils/{strategies/availability → validation}/validate-open-account-pool-quota-status.js +1 -4
  69. package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-quota-status.spec.js +43 -0
  70. package/dist/cjs/common-utils/utils/{strategies/availability → validation}/validate-open-account-pool-status.js +1 -1
  71. package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-status.spec.js +98 -0
  72. package/dist/cjs/common-utils/utils/validation/validate-open-account.js +41 -0
  73. package/dist/cjs/common-utils/utils/validation/validate-open-account.spec.js +54 -0
  74. package/dist/cjs/common-utils/utils/validation/validate-quota.js +49 -0
  75. package/dist/cjs/common-utils/utils/validation/validate-quota.spec.js +79 -0
  76. package/dist/cjs/common-utils/utils/validation/validate-token-to-obtain.js +42 -0
  77. package/dist/cjs/common-utils/utils/validation/validate-token-to-obtain.spec.js +35 -0
  78. package/dist/cjs/common-utils/utils/validation/validation-types.js +16 -0
  79. package/dist/cjs/plugins/apy/strategy-data-source.js +1 -0
  80. package/dist/cjs/sdk/constants/math.js +3 -0
  81. package/dist/esm/common-utils/test-utils/index.js +104 -0
  82. package/dist/esm/common-utils/utils/apy/calculate-borrow-rate-from-utilization.js +35 -0
  83. package/dist/esm/common-utils/utils/apy/calculate-borrow-rate-from-utilization.spec.js +31 -0
  84. package/dist/esm/common-utils/utils/apy/calculate-earnings.js +35 -0
  85. package/dist/esm/common-utils/utils/apy/calculate-earnings.spec.js +65 -0
  86. package/dist/esm/common-utils/utils/apy/calculate-safe-borrow-rate.js +34 -0
  87. package/dist/esm/common-utils/utils/apy/calculate-safe-borrow-rate.spec.js +38 -0
  88. package/dist/esm/common-utils/utils/apy/get-safe-base-borrow-rate.js +16 -0
  89. package/dist/esm/common-utils/utils/apy/index.js +4 -0
  90. package/dist/esm/common-utils/utils/constants.js +8 -0
  91. package/dist/esm/common-utils/utils/index.js +2 -0
  92. package/dist/esm/common-utils/utils/strategies/assets/assets.js +6 -0
  93. package/dist/esm/common-utils/utils/strategies/assets/index.js +1 -0
  94. package/dist/esm/common-utils/utils/strategies/availability/index.js +0 -2
  95. package/dist/esm/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.js +38 -0
  96. package/dist/esm/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.spec.js +115 -0
  97. package/dist/esm/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.js +51 -0
  98. package/dist/esm/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.spec.js +96 -0
  99. package/dist/esm/common-utils/utils/strategies/credit-managers/index.js +2 -0
  100. package/dist/esm/common-utils/utils/strategies/index.js +1 -0
  101. package/dist/esm/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.js +42 -0
  102. package/dist/esm/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.spec.js +332 -0
  103. package/dist/esm/common-utils/utils/strategies/leverage/get-collateral-by-debt.js +10 -0
  104. package/dist/esm/common-utils/utils/strategies/leverage/get-collateral-by-debt.spec.js +29 -0
  105. package/dist/esm/common-utils/utils/strategies/leverage/get-recommended-debt.js +61 -0
  106. package/dist/esm/common-utils/utils/strategies/leverage/get-recommended-debt.spec.js +226 -0
  107. package/dist/esm/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.js +9 -0
  108. package/dist/esm/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.spec.js +22 -0
  109. package/dist/esm/common-utils/utils/strategies/leverage/index.js +4 -0
  110. package/dist/esm/common-utils/utils/strategies/leverage/max-leverage.js +2 -2
  111. package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-apy.js +88 -0
  112. package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-apy.spec.js +187 -0
  113. package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-points.js +54 -0
  114. package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-points.spec.js +139 -0
  115. package/dist/esm/common-utils/utils/strategies/strategy-info/cm-availability-condition.js +2 -5
  116. package/dist/esm/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.js +389 -0
  117. package/dist/esm/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.spec.js +278 -0
  118. package/dist/esm/common-utils/utils/strategies/strategy-info/get-strategy-you-can-earn.js +84 -0
  119. package/dist/esm/common-utils/utils/strategies/strategy-info/index.js +4 -0
  120. package/dist/esm/common-utils/utils/strategies/tokens/add-amount-in-target.js +17 -0
  121. package/dist/esm/common-utils/utils/strategies/tokens/add-amount-in-target.spec.js +41 -0
  122. package/dist/esm/common-utils/utils/strategies/tokens/get-chain-phantom-tokens.js +11 -0
  123. package/dist/esm/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.js +18 -0
  124. package/dist/esm/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.spec.js +36 -0
  125. package/dist/esm/common-utils/utils/strategies/tokens/get-native-token-address.js +7 -0
  126. package/dist/esm/common-utils/utils/strategies/tokens/index.js +9 -0
  127. package/dist/esm/common-utils/utils/strategies/tokens/is-apy-with-points-exception.js +11 -0
  128. package/dist/esm/common-utils/utils/strategies/tokens/is-collateral-token.js +35 -0
  129. package/dist/esm/common-utils/utils/strategies/tokens/is-collateral-token.spec.js +137 -0
  130. package/dist/esm/common-utils/utils/strategies/tokens/is-obtainable-token.js +18 -0
  131. package/dist/esm/common-utils/utils/strategies/tokens/is-obtainable-token.spec.js +161 -0
  132. package/dist/esm/common-utils/utils/strategies/tokens/is-valid-extra-collateral-token.js +27 -0
  133. package/dist/esm/common-utils/utils/strategies/tokens/wrap-token-address.js +9 -0
  134. package/dist/esm/common-utils/utils/strategies/tokens/wrap-token-address.spec.js +12 -0
  135. package/dist/esm/common-utils/utils/strategies/types/index.js +2 -0
  136. package/dist/esm/common-utils/utils/strategies/types/strategy-data.js +0 -0
  137. package/dist/esm/common-utils/utils/strategies/types/strategy-earnings.js +0 -0
  138. package/dist/esm/common-utils/utils/validation/index.js +9 -0
  139. package/dist/esm/common-utils/utils/validation/is-zero-balance.js +6 -0
  140. package/dist/esm/common-utils/utils/validation/validate-balance.js +23 -0
  141. package/dist/esm/common-utils/utils/validation/validate-balance.spec.js +51 -0
  142. package/dist/esm/common-utils/utils/validation/validate-balances.js +20 -0
  143. package/dist/esm/common-utils/utils/validation/validate-balances.spec.js +36 -0
  144. package/dist/esm/common-utils/utils/validation/validate-credit-manager.js +10 -0
  145. package/dist/esm/common-utils/utils/validation/validate-credit-manager.spec.js +35 -0
  146. package/dist/esm/common-utils/utils/validation/validate-hf.js +13 -0
  147. package/dist/esm/common-utils/utils/validation/validate-hf.spec.js +23 -0
  148. package/dist/esm/common-utils/utils/{strategies/availability → validation}/validate-open-account-pool-quota-status.js +1 -4
  149. package/dist/esm/common-utils/utils/validation/validate-open-account-pool-quota-status.spec.js +46 -0
  150. package/dist/esm/common-utils/utils/{strategies/availability → validation}/validate-open-account-pool-status.js +4 -2
  151. package/dist/esm/common-utils/utils/validation/validate-open-account-pool-status.spec.js +102 -0
  152. package/dist/esm/common-utils/utils/validation/validate-open-account.js +17 -0
  153. package/dist/esm/common-utils/utils/validation/validate-open-account.spec.js +56 -0
  154. package/dist/esm/common-utils/utils/validation/validate-quota.js +25 -0
  155. package/dist/esm/common-utils/utils/validation/validate-quota.spec.js +83 -0
  156. package/dist/esm/common-utils/utils/validation/validate-token-to-obtain.js +18 -0
  157. package/dist/esm/common-utils/utils/validation/validate-token-to-obtain.spec.js +34 -0
  158. package/dist/esm/common-utils/utils/validation/validation-types.js +0 -0
  159. package/dist/esm/plugins/apy/strategy-data-source.js +1 -0
  160. package/dist/esm/sdk/constants/math.js +2 -0
  161. package/dist/types/common-utils/test-utils/index.d.ts +16 -0
  162. package/dist/types/common-utils/utils/apy/calculate-borrow-rate-from-utilization.d.ts +2 -0
  163. package/dist/types/common-utils/utils/apy/calculate-borrow-rate-from-utilization.spec.d.ts +1 -0
  164. package/dist/types/common-utils/utils/apy/calculate-earnings.d.ts +16 -0
  165. package/dist/types/common-utils/utils/apy/calculate-earnings.spec.d.ts +1 -0
  166. package/dist/types/common-utils/utils/apy/calculate-safe-borrow-rate.d.ts +11 -0
  167. package/dist/types/common-utils/utils/apy/calculate-safe-borrow-rate.spec.d.ts +1 -0
  168. package/dist/types/common-utils/utils/apy/get-safe-base-borrow-rate.d.ts +4 -0
  169. package/dist/types/common-utils/utils/apy/index.d.ts +4 -0
  170. package/dist/types/common-utils/utils/constants.d.ts +4 -0
  171. package/dist/types/common-utils/utils/index.d.ts +2 -0
  172. package/dist/types/common-utils/utils/strategies/assets/assets.d.ts +3 -0
  173. package/dist/types/common-utils/utils/strategies/assets/index.d.ts +1 -0
  174. package/dist/types/common-utils/utils/strategies/availability/index.d.ts +0 -2
  175. package/dist/types/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.d.ts +20 -0
  176. package/dist/types/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.spec.d.ts +1 -0
  177. package/dist/types/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.d.ts +13 -0
  178. package/dist/types/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.spec.d.ts +1 -0
  179. package/dist/types/common-utils/utils/strategies/credit-managers/index.d.ts +2 -0
  180. package/dist/types/common-utils/utils/strategies/index.d.ts +1 -0
  181. package/dist/types/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.d.ts +11 -0
  182. package/dist/types/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.spec.d.ts +1 -0
  183. package/dist/types/common-utils/utils/strategies/leverage/get-collateral-by-debt.d.ts +2 -0
  184. package/dist/types/common-utils/utils/strategies/leverage/get-collateral-by-debt.spec.d.ts +1 -0
  185. package/dist/types/common-utils/utils/strategies/leverage/get-recommended-debt.d.ts +21 -0
  186. package/dist/types/common-utils/utils/strategies/leverage/get-recommended-debt.spec.d.ts +1 -0
  187. package/dist/types/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.d.ts +4 -0
  188. package/dist/types/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.spec.d.ts +1 -0
  189. package/dist/types/common-utils/utils/strategies/leverage/index.d.ts +4 -0
  190. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-apy.d.ts +28 -0
  191. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-apy.spec.d.ts +1 -0
  192. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-points.d.ts +22 -0
  193. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-points.spec.d.ts +1 -0
  194. package/dist/types/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.d.ts +19 -0
  195. package/dist/types/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.spec.d.ts +1 -0
  196. package/dist/types/common-utils/utils/strategies/strategy-info/get-strategy-you-can-earn.d.ts +29 -0
  197. package/dist/types/common-utils/utils/strategies/strategy-info/index.d.ts +4 -0
  198. package/dist/types/common-utils/utils/strategies/strategy-info/types.d.ts +1 -0
  199. package/dist/types/common-utils/utils/strategies/tokens/add-amount-in-target.d.ts +6 -0
  200. package/dist/types/common-utils/utils/strategies/tokens/add-amount-in-target.spec.d.ts +1 -0
  201. package/dist/types/common-utils/utils/strategies/tokens/get-chain-phantom-tokens.d.ts +6 -0
  202. package/dist/types/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.d.ts +12 -0
  203. package/dist/types/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.spec.d.ts +1 -0
  204. package/dist/types/common-utils/utils/strategies/tokens/get-native-token-address.d.ts +1 -0
  205. package/dist/types/common-utils/utils/strategies/tokens/index.d.ts +9 -0
  206. package/dist/types/common-utils/utils/strategies/tokens/is-apy-with-points-exception.d.ts +3 -0
  207. package/dist/types/common-utils/utils/strategies/tokens/is-collateral-token.d.ts +16 -0
  208. package/dist/types/common-utils/utils/strategies/tokens/is-collateral-token.spec.d.ts +1 -0
  209. package/dist/types/common-utils/utils/strategies/tokens/is-obtainable-token.d.ts +14 -0
  210. package/dist/types/common-utils/utils/strategies/tokens/is-obtainable-token.spec.d.ts +1 -0
  211. package/dist/types/common-utils/utils/strategies/tokens/is-valid-extra-collateral-token.d.ts +20 -0
  212. package/dist/types/common-utils/utils/strategies/tokens/wrap-token-address.d.ts +2 -0
  213. package/dist/types/common-utils/utils/strategies/tokens/wrap-token-address.spec.d.ts +1 -0
  214. package/dist/types/common-utils/utils/strategies/types/index.d.ts +4 -1
  215. package/dist/types/common-utils/utils/strategies/types/strategy-data.d.ts +64 -0
  216. package/dist/types/common-utils/utils/strategies/types/strategy-earnings.d.ts +43 -0
  217. package/dist/types/common-utils/utils/validation/index.d.ts +9 -0
  218. package/dist/types/common-utils/utils/validation/is-zero-balance.d.ts +1 -0
  219. package/dist/types/common-utils/utils/validation/validate-balance.d.ts +22 -0
  220. package/dist/types/common-utils/utils/validation/validate-balance.spec.d.ts +1 -0
  221. package/dist/types/common-utils/utils/validation/validate-balances.d.ts +9 -0
  222. package/dist/types/common-utils/utils/validation/validate-balances.spec.d.ts +1 -0
  223. package/dist/types/common-utils/utils/validation/validate-credit-manager.d.ts +10 -0
  224. package/dist/types/common-utils/utils/validation/validate-credit-manager.spec.d.ts +1 -0
  225. package/dist/types/common-utils/utils/validation/validate-hf.d.ts +9 -0
  226. package/dist/types/common-utils/utils/validation/validate-hf.spec.d.ts +1 -0
  227. package/dist/types/common-utils/utils/validation/validate-open-account-pool-quota-status.d.ts +7 -0
  228. package/dist/types/common-utils/utils/validation/validate-open-account-pool-quota-status.spec.d.ts +1 -0
  229. package/dist/types/common-utils/utils/validation/validate-open-account-pool-status.d.ts +23 -0
  230. package/dist/types/common-utils/utils/validation/validate-open-account-pool-status.spec.d.ts +1 -0
  231. package/dist/types/common-utils/utils/validation/validate-open-account.d.ts +21 -0
  232. package/dist/types/common-utils/utils/validation/validate-open-account.spec.d.ts +1 -0
  233. package/dist/types/common-utils/utils/validation/validate-quota.d.ts +20 -0
  234. package/dist/types/common-utils/utils/validation/validate-quota.spec.d.ts +1 -0
  235. package/dist/types/common-utils/utils/validation/validate-token-to-obtain.d.ts +13 -0
  236. package/dist/types/common-utils/utils/validation/validate-token-to-obtain.spec.d.ts +1 -0
  237. package/dist/types/common-utils/utils/validation/validation-types.d.ts +14 -0
  238. package/dist/types/dev/RevolverTransport.d.ts +4 -4
  239. package/dist/types/sdk/constants/math.d.ts +1 -0
  240. package/package.json +1 -1
  241. package/dist/cjs/common-utils/utils/strategies/__test-utils.js +0 -95
  242. package/dist/esm/common-utils/utils/strategies/__test-utils.js +0 -65
  243. package/dist/types/common-utils/utils/strategies/__test-utils.d.ts +0 -11
  244. package/dist/types/common-utils/utils/strategies/availability/validate-open-account-pool-quota-status.d.ts +0 -6
  245. package/dist/types/common-utils/utils/strategies/availability/validate-open-account-pool-status.d.ts +0 -24
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var calculate_total_points_exports = {};
20
+ __export(calculate_total_points_exports, {
21
+ calculateTotalPoints: () => calculateTotalPoints
22
+ });
23
+ module.exports = __toCommonJS(calculate_total_points_exports);
24
+ var import_math = require("../../../../sdk/constants/math.js");
25
+ var import_bigint_math = require("../../bigint-math.js");
26
+ var import_price_math = require("../../price-math.js");
27
+ var import_get_points_rates = require("../points/get-points-rates.js");
28
+ const THRESHOLD_POINTS = 1e3;
29
+ function calculateTotalPoints({
30
+ pointsAsset,
31
+ cmAddress,
32
+ info,
33
+ totalValue,
34
+ assetValue,
35
+ prices,
36
+ tokensList,
37
+ underlyingToken
38
+ }) {
39
+ if (!pointsAsset || !info) return null;
40
+ if (totalValue === void 0 || totalValue <= 0n) return null;
41
+ if (assetValue === void 0 || assetValue <= 0n) return null;
42
+ const { token: tokenAddress, balance: amount } = pointsAsset;
43
+ const price = prices[tokenAddress] || 0n;
44
+ const tokenDecimals = tokensList[tokenAddress]?.decimals || 18;
45
+ const money = import_price_math.PriceUtils.calcTotalPrice(price, amount, tokenDecimals);
46
+ const underlyingPrice = prices[underlyingToken] ?? import_math.PRICE_DECIMALS;
47
+ const { decimals: underlyingDecimals = 18 } = tokensList[underlyingToken] || {};
48
+ const assetAmountInUnderlying = import_price_math.PriceUtils.convertByPrice(money, {
49
+ price: underlyingPrice || import_math.PRICE_DECIMALS,
50
+ decimals: underlyingDecimals
51
+ });
52
+ const percent = assetAmountInUnderlying * import_math.PERCENTAGE_FACTOR / totalValue;
53
+ if (percent < THRESHOLD_POINTS) return null;
54
+ const leverage = assetAmountInUnderlying * import_math.LEVERAGE_DECIMALS / assetValue;
55
+ const rates = (0, import_get_points_rates.getPointsRates)(info.rewards, leverage);
56
+ const debt = totalValue - assetValue;
57
+ const leverageDebt = import_bigint_math.BigIntMath.min(assetAmountInUnderlying, debt > 0 ? debt : 0n) * import_math.LEVERAGE_DECIMALS / assetValue;
58
+ const debtRewardsAvailable = (info.debtRewards || []).filter(
59
+ (r) => r.cm === cmAddress || r.cm === "any"
60
+ );
61
+ const debtRates = (0, import_get_points_rates.getPointsRates)(debtRewardsAvailable, leverageDebt);
62
+ return {
63
+ info,
64
+ rates,
65
+ debtRates: {
66
+ rewards: debtRewardsAvailable,
67
+ rates: debtRates
68
+ }
69
+ };
70
+ }
71
+ // Annotate the CommonJS export names for ESM import in node:
72
+ 0 && (module.exports = {
73
+ calculateTotalPoints
74
+ });
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var import_vitest = require("vitest");
3
+ var import_math = require("../../../../sdk/constants/math.js");
4
+ var import_test_utils = require("../../../test-utils/index.js");
5
+ var import_calculate_total_points = require("./calculate-total-points.js");
6
+ (0, import_vitest.describe)("calculateTotalPoints", () => {
7
+ const pointsInfo = {
8
+ symbol: "PTS",
9
+ address: import_test_utils.mockToken1,
10
+ rewards: [
11
+ {
12
+ name: "points",
13
+ units: "pts",
14
+ multiplier: import_math.LEVERAGE_DECIMALS,
15
+ type: "base"
16
+ }
17
+ ],
18
+ debtRewards: [
19
+ {
20
+ name: "debt",
21
+ units: "pts",
22
+ multiplier: import_math.LEVERAGE_DECIMALS,
23
+ type: "debt",
24
+ cm: import_test_utils.mockCMAddress
25
+ }
26
+ ]
27
+ };
28
+ const baseArgs = {
29
+ pointsAsset: { token: import_test_utils.mockToken1, balance: 1n },
30
+ cmAddress: import_test_utils.mockCMAddress,
31
+ info: pointsInfo,
32
+ totalValue: 10n * import_math.PRICE_DECIMALS,
33
+ assetValue: 1n,
34
+ prices: import_test_utils.mockPrices,
35
+ tokensList: import_test_utils.mockTokenData,
36
+ underlyingToken: import_test_utils.mockUnderlyingToken
37
+ };
38
+ (0, import_vitest.it)("returns null when no pointsAsset or info", () => {
39
+ (0, import_vitest.expect)(
40
+ (0, import_calculate_total_points.calculateTotalPoints)({
41
+ ...baseArgs,
42
+ pointsAsset: void 0
43
+ })
44
+ ).toBeNull();
45
+ (0, import_vitest.expect)(
46
+ (0, import_calculate_total_points.calculateTotalPoints)({
47
+ ...baseArgs,
48
+ info: void 0
49
+ })
50
+ ).toBeNull();
51
+ });
52
+ (0, import_vitest.it)("returns null when no totalValue", () => {
53
+ (0, import_vitest.expect)(
54
+ (0, import_calculate_total_points.calculateTotalPoints)({
55
+ ...baseArgs,
56
+ totalValue: void 0
57
+ })
58
+ ).toBeNull();
59
+ (0, import_vitest.expect)(
60
+ (0, import_calculate_total_points.calculateTotalPoints)({
61
+ ...baseArgs,
62
+ totalValue: 0n
63
+ })
64
+ ).toBeNull();
65
+ });
66
+ (0, import_vitest.it)("returns null when no assetValue", () => {
67
+ (0, import_vitest.expect)(
68
+ (0, import_calculate_total_points.calculateTotalPoints)({
69
+ ...baseArgs,
70
+ assetValue: void 0
71
+ })
72
+ ).toBeNull();
73
+ (0, import_vitest.expect)(
74
+ (0, import_calculate_total_points.calculateTotalPoints)({
75
+ ...baseArgs,
76
+ assetValue: 0n
77
+ })
78
+ ).toBeNull();
79
+ });
80
+ (0, import_vitest.it)("returns null when below threshold", () => {
81
+ const result = (0, import_calculate_total_points.calculateTotalPoints)({
82
+ ...baseArgs,
83
+ totalValue: 10n * import_math.PRICE_DECIMALS
84
+ });
85
+ (0, import_vitest.expect)(result).toBeNull();
86
+ });
87
+ (0, import_vitest.it)("returns points data when above threshold with matching debt rewards", () => {
88
+ const assetAmount = import_math.PRICE_DECIMALS;
89
+ const totalValue = 4n * import_math.PRICE_DECIMALS;
90
+ const assetValue = import_math.PRICE_DECIMALS;
91
+ const result = (0, import_calculate_total_points.calculateTotalPoints)({
92
+ pointsAsset: { token: import_test_utils.mockToken1, balance: assetAmount },
93
+ cmAddress: import_test_utils.mockCMAddress,
94
+ info: pointsInfo,
95
+ totalValue,
96
+ assetValue,
97
+ prices: {
98
+ ...import_test_utils.mockPrices,
99
+ [import_test_utils.mockToken1]: 2n * import_math.PRICE_DECIMALS
100
+ },
101
+ tokensList: import_test_utils.mockTokenData,
102
+ underlyingToken: import_test_utils.mockUnderlyingToken
103
+ });
104
+ (0, import_vitest.expect)(result?.info).toBe(pointsInfo);
105
+ (0, import_vitest.expect)(result?.rates).toEqual([2n * import_math.LEVERAGE_DECIMALS]);
106
+ (0, import_vitest.expect)(result?.debtRates.rewards).toHaveLength(1);
107
+ (0, import_vitest.expect)(result?.debtRates.rates).toEqual([2n * import_math.LEVERAGE_DECIMALS]);
108
+ });
109
+ (0, import_vitest.it)("returns points data when above threshold with matching debt rewards when debt is lower than asset amount", () => {
110
+ const assetAmount = import_math.PRICE_DECIMALS;
111
+ const totalValue = 4n * import_math.PRICE_DECIMALS;
112
+ const assetValue = import_math.PRICE_DECIMALS;
113
+ const result = (0, import_calculate_total_points.calculateTotalPoints)({
114
+ pointsAsset: { token: import_test_utils.mockToken1, balance: assetAmount },
115
+ cmAddress: import_test_utils.mockCMAddress,
116
+ info: pointsInfo,
117
+ totalValue,
118
+ assetValue,
119
+ prices: {
120
+ ...import_test_utils.mockPrices,
121
+ [import_test_utils.mockToken1]: 4n * import_math.PRICE_DECIMALS
122
+ },
123
+ tokensList: import_test_utils.mockTokenData,
124
+ underlyingToken: import_test_utils.mockUnderlyingToken
125
+ });
126
+ (0, import_vitest.expect)(result?.info).toBe(pointsInfo);
127
+ (0, import_vitest.expect)(result?.rates).toEqual([4n * import_math.LEVERAGE_DECIMALS]);
128
+ (0, import_vitest.expect)(result?.debtRates.rewards).toHaveLength(1);
129
+ (0, import_vitest.expect)(result?.debtRates.rates).toEqual([3n * import_math.LEVERAGE_DECIMALS]);
130
+ });
131
+ });
@@ -21,15 +21,16 @@ __export(cm_availability_condition_exports, {
21
21
  cmAvailabilityCondition: () => cmAvailabilityCondition
22
22
  });
23
23
  module.exports = __toCommonJS(cm_availability_condition_exports);
24
+ var import_validate_open_account_pool_status = require("../../validation/validate-open-account-pool-status.js");
24
25
  var import_availability = require("../availability/index.js");
25
26
  function cmAvailabilityCondition(targetToken, cmA, cmB, pools) {
26
- const aHasMinError = (0, import_availability.validateOpenAccountPoolStatus)({
27
+ const aHasMinError = (0, import_validate_open_account_pool_status.validateOpenAccountPoolStatus)({
27
28
  pool: pools?.[cmA.pool],
28
29
  debt: cmA.minDebt,
29
30
  creditManager: cmA,
30
31
  targetToken
31
32
  });
32
- const bHasMinError = (0, import_availability.validateOpenAccountPoolStatus)({
33
+ const bHasMinError = (0, import_validate_open_account_pool_status.validateOpenAccountPoolStatus)({
33
34
  pool: pools?.[cmB.pool],
34
35
  debt: cmB.minDebt,
35
36
  creditManager: cmB,
@@ -41,13 +42,13 @@ function cmAvailabilityCondition(targetToken, cmA, cmB, pools) {
41
42
  const { freeOfNFT: bFreeOfNFT } = (0, import_availability.checkDegenNFT)(cmB);
42
43
  const nftSort = (0, import_availability.checkBoolean)(aFreeOfNFT, bFreeOfNFT);
43
44
  if (nftSort !== 0) return nftSort;
44
- const aHasMaxError = (0, import_availability.validateOpenAccountPoolStatus)({
45
+ const aHasMaxError = (0, import_validate_open_account_pool_status.validateOpenAccountPoolStatus)({
45
46
  pool: pools?.[cmA.pool],
46
47
  debt: cmA.maxDebt,
47
48
  creditManager: cmA,
48
49
  targetToken
49
50
  });
50
- const bHasMaxError = (0, import_availability.validateOpenAccountPoolStatus)({
51
+ const bHasMaxError = (0, import_validate_open_account_pool_status.validateOpenAccountPoolStatus)({
51
52
  pool: pools?.[cmB.pool],
52
53
  debt: cmB.maxDebt,
53
54
  creditManager: cmB,
@@ -0,0 +1,410 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var get_cm_you_can_earn_exports = {};
20
+ __export(get_cm_you_can_earn_exports, {
21
+ getCMYouCanEarn: () => getCMYouCanEarn
22
+ });
23
+ module.exports = __toCommonJS(get_cm_you_can_earn_exports);
24
+ var import_math = require("../../../../sdk/constants/math.js");
25
+ var import_formatter = require("../../../../sdk/utils/formatter.js");
26
+ var import_calculate_earnings = require("../../apy/calculate-earnings.js");
27
+ var import_calculate_effective_borrow_rate = require("../../apy/calculate-effective-borrow-rate.js");
28
+ var import_get_complex_apy_list = require("../../apy/get-complex-apy-list.js");
29
+ var import_get_safe_base_borrow_rate = require("../../apy/get-safe-base-borrow-rate.js");
30
+ var import_assets_math = require("../../assets-math.js");
31
+ var import_bigint_math = require("../../bigint-math.js");
32
+ var import_constants = require("../../constants.js");
33
+ var import_calc_health_factor = require("../../creditAccount/calc-health-factor.js");
34
+ var import_quota_utils = require("../../creditAccount/quota-utils.js");
35
+ var import_price_math = require("../../price-math.js");
36
+ var import_is_zero_balance = require("../../validation/is-zero-balance.js");
37
+ var import_validate_balances = require("../../validation/validate-balances.js");
38
+ var import_validate_credit_manager = require("../../validation/validate-credit-manager.js");
39
+ var import_validate_hf = require("../../validation/validate-hf.js");
40
+ var import_validate_open_account = require("../../validation/validate-open-account.js");
41
+ var import_validate_open_account_pool_status = require("../../validation/validate-open-account-pool-status.js");
42
+ var import_validate_token_to_obtain = require("../../validation/validate-token-to-obtain.js");
43
+ var import_get_cm_allowed_collaterals = require("../credit-managers/get-cm-allowed-collaterals.js");
44
+ var import_get_wallet_balances_allowed_on_cm = require("../credit-managers/get-wallet-balances-allowed-on-cm.js");
45
+ var import_get_collateral_by_debt = require("../leverage/get-collateral-by-debt.js");
46
+ var import_get_leverage_from_factor = require("../leverage/get-leverage-from-factor.js");
47
+ var import_get_recommended_debt = require("../leverage/get-recommended-debt.js");
48
+ var import_get_complex_points_list = require("../points/get-complex-points-list.js");
49
+ var import_get_points_info = require("../points/get-points-info.js");
50
+ var import_get_list_with_amount_in_target = require("../tokens/get-list-with-amount-in-target.js");
51
+ var import_calculate_total_apy = require("./calculate-total-apy.js");
52
+ var import_calculate_total_points = require("./calculate-total-points.js");
53
+ function getCMYouCanEarn({
54
+ allPrices,
55
+ creditManager,
56
+ tokensList,
57
+ delayedPhantoms,
58
+ nativeTokenAddress,
59
+ wrappedNativeTokenAddress,
60
+ walletBalances,
61
+ strategy,
62
+ slippage,
63
+ quotaReserve,
64
+ apyList,
65
+ pools
66
+ }) {
67
+ const baseInfo = {
68
+ strategy: strategy.name,
69
+ strategyChainId: strategy.chainId,
70
+ strategyNetwork: strategy.network,
71
+ strategyType: strategy.strategyType,
72
+ creditManager: creditManager.address,
73
+ cmName: creditManager.name,
74
+ underlyingToken: tokensList[creditManager.underlyingToken]?.title || creditManager.underlyingToken,
75
+ targetToken: tokensList[strategy.tokenOutAddress]?.title || strategy.tokenOutAddress
76
+ };
77
+ if (!walletBalances) {
78
+ return {
79
+ status: "error",
80
+ description: "No wallet balances",
81
+ otherInfo: baseInfo,
82
+ data: void 0
83
+ };
84
+ }
85
+ const targetTokenAddress = strategy.tokenOutAddress;
86
+ const targetDecimals = tokensList[targetTokenAddress]?.decimals || 18;
87
+ const prices = allPrices?.[creditManager?.pool || import_constants.EMPTY_ADDRESS];
88
+ if (!prices) {
89
+ return {
90
+ status: "error",
91
+ description: "No prices for cm pool",
92
+ otherInfo: baseInfo,
93
+ data: void 0
94
+ };
95
+ }
96
+ const collateralRecord = (0, import_get_cm_allowed_collaterals.getCMAllowedCollaterals)({
97
+ creditManager,
98
+ tokensList,
99
+ zeroDebt: false,
100
+ delayedPhantoms,
101
+ nativeTokenAddress,
102
+ wrappedNativeTokenAddress,
103
+ extraCollaterals: {
104
+ list: strategy.additionalCollaterals,
105
+ prices
106
+ }
107
+ });
108
+ const walletBalancesSorted = (0, import_get_wallet_balances_allowed_on_cm.getWalletBalancesAllowedOnCM)({
109
+ walletBalances,
110
+ collateralRecord,
111
+ nativeTokenAddress,
112
+ wrappedNativeTokenAddress,
113
+ tokensList,
114
+ prices,
115
+ isPaused: creditManager?.isPaused
116
+ });
117
+ const filtered = walletBalancesSorted.filter((a) => !(0, import_is_zero_balance.isZeroBalance)(a.balance));
118
+ const collateral_initial = filtered[0];
119
+ if (!collateral_initial || collateral_initial.balance === 0n) {
120
+ return {
121
+ status: "error",
122
+ description: `Initial collateral is zero`,
123
+ otherInfo: {
124
+ ...baseInfo,
125
+ walletBalancesSorted,
126
+ filtered
127
+ },
128
+ data: void 0
129
+ };
130
+ }
131
+ const collateralPrice = prices[collateral_initial.token] || 0n;
132
+ const collateralDecimals = tokensList[collateral_initial.token]?.decimals || 18;
133
+ const underlyingPrice = prices[creditManager.underlyingToken] || 0n;
134
+ const underlyingDecimals = tokensList[creditManager.underlyingToken]?.decimals || 18;
135
+ const assetValueFrom_initial = import_price_math.PriceUtils.convertByPrice(
136
+ import_price_math.PriceUtils.calcTotalPrice(
137
+ collateralPrice,
138
+ collateral_initial.balance,
139
+ collateralDecimals
140
+ ),
141
+ {
142
+ price: underlyingPrice,
143
+ decimals: underlyingDecimals
144
+ }
145
+ );
146
+ if (!assetValueFrom_initial || assetValueFrom_initial === 0n) {
147
+ return {
148
+ status: "error",
149
+ description: "Initial asset value from is zero",
150
+ otherInfo: baseInfo,
151
+ data: void 0
152
+ };
153
+ }
154
+ const recommendedDebt_initial = (0, import_get_recommended_debt.getRecommendedDebt)({
155
+ targetToken: targetTokenAddress,
156
+ amount: assetValueFrom_initial,
157
+ creditManager,
158
+ slippage,
159
+ swapCollateral: true,
160
+ leverageLimit: strategy.maxLeverage
161
+ });
162
+ const lt = creditManager.liquidationThresholds[targetTokenAddress] || 0n;
163
+ const recommendedAssetValueFrom = (0, import_get_collateral_by_debt.getCollateralByDebt)(
164
+ recommendedDebt_initial.maxDebt,
165
+ lt,
166
+ (0, import_formatter.toBN)("1.013", 4)
167
+ );
168
+ const assetValueFrom = import_bigint_math.BigIntMath.min(
169
+ assetValueFrom_initial,
170
+ recommendedAssetValueFrom
171
+ );
172
+ if (!assetValueFrom || assetValueFrom === 0n) {
173
+ return {
174
+ status: "error",
175
+ description: "Asset value from is zero",
176
+ otherInfo: baseInfo,
177
+ data: void 0
178
+ };
179
+ }
180
+ const assetValueFromTarget = import_price_math.PriceUtils.convertByPrice(
181
+ import_price_math.PriceUtils.calcTotalPrice(
182
+ underlyingPrice,
183
+ assetValueFrom,
184
+ underlyingDecimals
185
+ ),
186
+ {
187
+ price: collateralPrice,
188
+ decimals: collateralDecimals
189
+ }
190
+ );
191
+ const collateral = [
192
+ { token: collateral_initial.token, balance: assetValueFromTarget }
193
+ ];
194
+ const recommendedDebt = (0, import_get_recommended_debt.getRecommendedDebt)({
195
+ targetToken: targetTokenAddress,
196
+ amount: assetValueFrom,
197
+ creditManager,
198
+ slippage,
199
+ swapCollateral: true,
200
+ leverageLimit: strategy.maxLeverage
201
+ });
202
+ const debt = recommendedDebt.maxDebt;
203
+ const totalAmount = assetValueFrom + debt;
204
+ const targetPrice = prices[targetTokenAddress] || 0n;
205
+ const totalAmountInTarget = import_price_math.PriceUtils.convertByPrice(
206
+ import_price_math.PriceUtils.calcTotalPrice(underlyingPrice, totalAmount, underlyingDecimals),
207
+ {
208
+ price: targetPrice,
209
+ decimals: targetDecimals
210
+ }
211
+ );
212
+ const assets = [
213
+ {
214
+ token: targetTokenAddress,
215
+ balance: totalAmountInTarget
216
+ }
217
+ ];
218
+ const assetsWithAmountInTarget = (0, import_get_list_with_amount_in_target.getListWithAmountInTarget)({
219
+ assets,
220
+ targetToken: creditManager.underlyingToken,
221
+ prices,
222
+ tokensList
223
+ });
224
+ const assetsWithAmountInTargetRecord = import_assets_math.AssetUtils.constructAssetRecord(
225
+ assetsWithAmountInTarget
226
+ );
227
+ const quotasAfter = (0, import_quota_utils.calcQuotaUpdate)({
228
+ quotas: creditManager.quotas,
229
+ initialQuotas: import_constants.EMPTY_OBJECT,
230
+ assetsAfterUpdate: assetsWithAmountInTargetRecord,
231
+ allowedToObtain: assetsWithAmountInTargetRecord,
232
+ allowedToSpend: import_constants.EMPTY_OBJECT,
233
+ quotaReserve: (0, import_formatter.toBigInt)(quotaReserve),
234
+ maxDebt: creditManager.maxDebt,
235
+ calcModification: void 0,
236
+ liquidationThresholds: creditManager.liquidationThresholds
237
+ });
238
+ const desiredQuota = quotasAfter.desiredQuota;
239
+ const quotaDecrease = quotasAfter.quotaDecrease;
240
+ const quotaIncrease = quotasAfter.quotaIncrease;
241
+ const quotaUpdate = [...quotaDecrease, ...quotaIncrease];
242
+ const hf = (0, import_calc_health_factor.calcHealthFactor)({
243
+ assets: assetsWithAmountInTarget,
244
+ quotas: desiredQuota,
245
+ prices,
246
+ liquidationThresholds: creditManager.liquidationThresholds,
247
+ underlyingToken: creditManager.underlyingToken,
248
+ debt,
249
+ quotasInfo: creditManager.quotas,
250
+ tokensList
251
+ });
252
+ const pool = pools?.[creditManager.pool];
253
+ const error = (0, import_validate_credit_manager.validateCreditManager)({ creditManager }) || (0, import_validate_open_account_pool_status.validateOpenAccountPoolStatus)({
254
+ pool,
255
+ creditManager,
256
+ debt,
257
+ targetToken: targetTokenAddress
258
+ }) || (0, import_validate_token_to_obtain.validateTokenToObtain)({
259
+ targetToken: strategy.tokenOutAddress,
260
+ creditManager
261
+ }) || (0, import_validate_balances.validateBalances)({
262
+ balances: walletBalances,
263
+ assets: collateral
264
+ }) || (0, import_validate_open_account.validateOpenAccount)({
265
+ desiredQuota,
266
+ quotaUpdate,
267
+ debt,
268
+ creditManager,
269
+ loading: false
270
+ }) || (0, import_validate_hf.validateHF)({ hf });
271
+ if (error) {
272
+ return {
273
+ status: "error",
274
+ description: `Resulting CA did not pass validation: ${error.message}`,
275
+ otherInfo: {
276
+ ...baseInfo,
277
+ hf
278
+ },
279
+ data: void 0
280
+ };
281
+ }
282
+ const apyRecord = (0, import_get_complex_apy_list.getComplexAPYList)(
283
+ apyList?.apyList,
284
+ apyList?.extraCollateralAPYList,
285
+ creditManager.pool
286
+ );
287
+ if (!apyRecord) {
288
+ return {
289
+ status: "error",
290
+ description: "No complex apy record",
291
+ otherInfo: baseInfo,
292
+ data: void 0
293
+ };
294
+ }
295
+ const pointsList = (0, import_get_complex_points_list.getComplexPointsList)(
296
+ apyList?.pointsList,
297
+ apyList?.extraCollateralPointsList,
298
+ pool?.address
299
+ );
300
+ if (!pointsList) {
301
+ return {
302
+ status: "error",
303
+ description: "No complex points record",
304
+ otherInfo: baseInfo,
305
+ data: void 0
306
+ };
307
+ }
308
+ const pointsInfo = (0, import_get_points_info.getPointsInfo)({
309
+ chainId: strategy.chainId,
310
+ pointsList,
311
+ token: strategy.tokenOutAddress,
312
+ creditManagers: {
313
+ [creditManager.address]: creditManager
314
+ }
315
+ });
316
+ const baseBorrowRateTo = pool ? (0, import_get_safe_base_borrow_rate.getSafeBaseBorrowRate)({
317
+ creditManager,
318
+ pool,
319
+ availableLiquidityChange: debt * -1n
320
+ }) : creditManager.baseBorrowRate;
321
+ const effectiveBorrowRate = (0, import_calculate_effective_borrow_rate.calculateEffectiveBorrowRate)({
322
+ underlyingTokenAddress: creditManager.underlyingToken,
323
+ baseRateWithFee: baseBorrowRateTo,
324
+ apyList: apyRecord
325
+ });
326
+ const totalAPY = (0, import_calculate_total_apy.calculateTotalAPY)({
327
+ caAssets: assetsWithAmountInTarget,
328
+ lpAPY: apyRecord,
329
+ prices,
330
+ quotaRates: creditManager.quotas,
331
+ quotas: desiredQuota,
332
+ feeInterest: creditManager.feeInterest,
333
+ totalValue: totalAmount,
334
+ debt,
335
+ underlyingToken: creditManager.underlyingToken,
336
+ tokensList,
337
+ pointsInfo,
338
+ effectiveBorrowRate,
339
+ showAPY: true
340
+ });
341
+ const earn = (0, import_calculate_earnings.calculateEarnings)({
342
+ overallAPYBigInt: totalAPY.overallAPYBigInt,
343
+ targetAmount: assetValueFrom,
344
+ targetToken: creditManager.underlyingToken,
345
+ tokensList,
346
+ prices
347
+ });
348
+ const points = (0, import_calculate_total_points.calculateTotalPoints)({
349
+ pointsAsset: pointsInfo ? assetsWithAmountInTarget[0] : void 0,
350
+ cmAddress: creditManager.address,
351
+ info: pointsInfo,
352
+ totalValue: totalAmount,
353
+ assetValue: assetValueFrom,
354
+ prices,
355
+ tokensList,
356
+ underlyingToken: creditManager.underlyingToken
357
+ });
358
+ const leverage = (0, import_get_leverage_from_factor.getLeverageFromFactor)(
359
+ debt * import_math.LEVERAGE_DECIMALS / assetValueFrom
360
+ );
361
+ const info = {
362
+ info: {
363
+ strategy,
364
+ creditManager,
365
+ collateral,
366
+ assetsWithAmountInTarget,
367
+ assetValue: assetValueFrom,
368
+ debt,
369
+ totalAmount,
370
+ assetValueInUSD: import_price_math.PriceUtils.calcTotalPrice(
371
+ underlyingPrice,
372
+ assetValueFrom,
373
+ underlyingDecimals
374
+ ),
375
+ maxAPY: totalAPY,
376
+ bonusAPY: void 0,
377
+ extraAPY: [],
378
+ maxLeverage: leverage
379
+ },
380
+ earnings: earn,
381
+ points,
382
+ otherInfo: {
383
+ ...baseInfo,
384
+ collateral: collateral.map((c) => ({
385
+ token: tokensList[c.token]?.title || c.token,
386
+ balance: (0, import_formatter.formatBN)(c.balance, import_math.WAD_DECIMALS_POW, 4)
387
+ })),
388
+ apy: (0, import_formatter.formatBN)(totalAPY.overallAPYBigInt || 0, 4, 4),
389
+ earningsUSD: (0, import_formatter.formatBN)(earn.earningsUSD || 0n, import_math.WAD_DECIMALS_POW, 4),
390
+ assetValue: (0, import_formatter.formatBN)(assetValueFrom, targetDecimals, 4),
391
+ debt: (0, import_formatter.formatBN)(debt, targetDecimals, 4),
392
+ totalAmount: (0, import_formatter.formatBN)(totalAmount, underlyingDecimals, 4),
393
+ assetValueFrom_initial: (0, import_formatter.formatBN)(
394
+ assetValueFrom_initial,
395
+ targetDecimals,
396
+ 4
397
+ ),
398
+ debt_initial: (0, import_formatter.formatBN)(
399
+ recommendedDebt_initial.maxDebt,
400
+ targetDecimals,
401
+ 4
402
+ )
403
+ }
404
+ };
405
+ return { status: "ok", description: "ok", data: info };
406
+ }
407
+ // Annotate the CommonJS export names for ESM import in node:
408
+ 0 && (module.exports = {
409
+ getCMYouCanEarn
410
+ });