@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,330 @@
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_loss_coefficient = require("./calculate-loss-coefficient.js");
6
+ var import_calculate_max_strategy_debt = require("./calculate-max-strategy-debt.js");
7
+ var import_max_leverage = require("./max-leverage.js");
8
+ import_vitest.vi.mock("./max-leverage");
9
+ import_vitest.vi.mock(
10
+ "../../utils/strategies/leverage/calculate-loss-coefficient.js",
11
+ async () => {
12
+ const actual = await import_vitest.vi.importActual(
13
+ "../../utils/strategies/leverage/calculate-loss-coefficient.js"
14
+ );
15
+ return {
16
+ ...actual,
17
+ calculateLossCoefficient: import_vitest.vi.fn(
18
+ actual.calculateLossCoefficient
19
+ )
20
+ };
21
+ }
22
+ );
23
+ const mockMaxLeverage = import_vitest.vi.mocked(import_max_leverage.maxLeverage);
24
+ const mockCalculateLossCoefficient = import_vitest.vi.mocked(import_calculate_loss_coefficient.calculateLossCoefficient);
25
+ (0, import_vitest.describe)("calculateMaxStrategyDebt", () => {
26
+ const mockCreditManager = (0, import_test_utils.buildCreditManager)({});
27
+ (0, import_vitest.beforeEach)(() => {
28
+ mockMaxLeverage.mockReturnValue(
29
+ 10n * import_math.LEVERAGE_DECIMALS
30
+ );
31
+ import_vitest.vi.clearAllMocks();
32
+ });
33
+ (0, import_vitest.it)("should return effectiveMaxDebt when amount is zero without calling maxLeverage", () => {
34
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
35
+ targetToken: import_test_utils.mockToken1,
36
+ amount: 0n,
37
+ creditManager: mockCreditManager,
38
+ slippage: 100,
39
+ constantLoss: 30n
40
+ });
41
+ (0, import_vitest.expect)(mockMaxLeverage).not.toHaveBeenCalled();
42
+ (0, import_vitest.expect)(result).toEqual(900000n);
43
+ });
44
+ (0, import_vitest.it)("should calculate max debt correctly with mocked maxLeverage", () => {
45
+ const maxLeverageValue = 5n * import_math.LEVERAGE_DECIMALS;
46
+ mockMaxLeverage.mockReturnValue(maxLeverageValue);
47
+ const targetToken = import_test_utils.mockToken1;
48
+ const amount = 10000n;
49
+ const slippage = 100;
50
+ const constantLoss = 30n;
51
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
52
+ targetToken: import_test_utils.mockToken1,
53
+ amount,
54
+ creditManager: mockCreditManager,
55
+ slippage,
56
+ constantLoss
57
+ });
58
+ (0, import_vitest.expect)(mockMaxLeverage).toHaveBeenCalledWith(targetToken, [
59
+ mockCreditManager
60
+ ]);
61
+ (0, import_vitest.expect)(mockMaxLeverage).toHaveBeenCalledTimes(1);
62
+ (0, import_vitest.expect)(result).toEqual(49350n);
63
+ });
64
+ (0, import_vitest.it)("should handle case where effectiveDebt exceeds effectiveMaxDebt", () => {
65
+ const veryHighLeverage = 100n * import_math.LEVERAGE_DECIMALS;
66
+ mockMaxLeverage.mockReturnValue(veryHighLeverage);
67
+ const amount = 100000000000000000000000n;
68
+ const creditManager = (0, import_test_utils.buildCreditManager)({
69
+ availableToBorrow: 1000n
70
+ });
71
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
72
+ targetToken: import_test_utils.mockToken1,
73
+ amount,
74
+ creditManager,
75
+ slippage: 100,
76
+ constantLoss: 30n
77
+ });
78
+ (0, import_vitest.expect)(result).toEqual(creditManager.availableToBorrow);
79
+ });
80
+ (0, import_vitest.it)("should ensure result is at least minDebt", () => {
81
+ mockMaxLeverage.mockReturnValue(1n);
82
+ const amount = 10000n;
83
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
84
+ targetToken: import_test_utils.mockToken1,
85
+ amount,
86
+ creditManager: mockCreditManager,
87
+ slippage: 100,
88
+ constantLoss: 30n
89
+ });
90
+ (0, import_vitest.expect)(result).toEqual(mockCreditManager.minDebt);
91
+ });
92
+ (0, import_vitest.it)("should handle different slippage values correctly", () => {
93
+ const maxLeverageValue = 10n * import_math.LEVERAGE_DECIMALS;
94
+ mockMaxLeverage.mockReturnValue(maxLeverageValue);
95
+ const amount = 10000n;
96
+ const highSlippage = 500;
97
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
98
+ targetToken: import_test_utils.mockToken1,
99
+ amount,
100
+ creditManager: mockCreditManager,
101
+ slippage: highSlippage,
102
+ constantLoss: 30n
103
+ });
104
+ (0, import_vitest.expect)(result).toEqual(94700n);
105
+ });
106
+ (0, import_vitest.it)("should handle different constantLoss values correctly", () => {
107
+ const maxLeverageValue = 10n * import_math.LEVERAGE_DECIMALS;
108
+ mockMaxLeverage.mockReturnValue(maxLeverageValue);
109
+ const amount = 10000n;
110
+ const highConstantLoss = 500n;
111
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
112
+ targetToken: import_test_utils.mockToken1,
113
+ amount,
114
+ creditManager: mockCreditManager,
115
+ slippage: 100,
116
+ constantLoss: highConstantLoss
117
+ });
118
+ (0, import_vitest.expect)(result).toEqual(94000n);
119
+ });
120
+ (0, import_vitest.it)("should respect quota limit when quotaLeft is less than availableToBorrow", () => {
121
+ const maxLeverageValue = 10n * import_math.LEVERAGE_DECIMALS;
122
+ mockMaxLeverage.mockReturnValue(maxLeverageValue);
123
+ const quotaLimit = 50000n;
124
+ const totalQuoted = 40000n;
125
+ const amount = 10000n;
126
+ const availableToBorrow = 100000n;
127
+ const creditManagerWithQuota = (0, import_test_utils.buildCreditManager)({
128
+ availableToBorrow,
129
+ quotas: {
130
+ ...mockCreditManager.quotas,
131
+ [import_test_utils.mockToken1]: {
132
+ ...mockCreditManager.quotas[import_test_utils.mockToken1],
133
+ limit: quotaLimit,
134
+ totalQuoted
135
+ }
136
+ }
137
+ });
138
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
139
+ targetToken: import_test_utils.mockToken1,
140
+ amount,
141
+ creditManager: creditManagerWithQuota,
142
+ slippage: 100,
143
+ constantLoss: 30n
144
+ });
145
+ (0, import_vitest.expect)(result).toEqual(quotaLimit - totalQuoted);
146
+ });
147
+ (0, import_vitest.it)("should use availableToBorrow when quota does not exist for target token", () => {
148
+ const maxLeverageValue = 10n * import_math.LEVERAGE_DECIMALS;
149
+ mockMaxLeverage.mockReturnValue(maxLeverageValue);
150
+ const availableToBorrow = 75000n;
151
+ const tokenWithoutQuota = "0x9999999999999999999999999999999999999999";
152
+ const creditManagerWithoutQuota = (0, import_test_utils.buildCreditManager)({
153
+ availableToBorrow
154
+ });
155
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
156
+ targetToken: tokenWithoutQuota,
157
+ amount: 10000n,
158
+ creditManager: creditManagerWithoutQuota,
159
+ slippage: 100,
160
+ constantLoss: 30n
161
+ });
162
+ (0, import_vitest.expect)(result).toEqual(creditManagerWithoutQuota.availableToBorrow);
163
+ });
164
+ (0, import_vitest.it)("should respect quotaLeft", () => {
165
+ const maxLeverageValue = 10n * import_math.LEVERAGE_DECIMALS;
166
+ mockMaxLeverage.mockReturnValue(maxLeverageValue);
167
+ const quotaLimit = 50000n;
168
+ const totalQuoted = 10000n;
169
+ const amount = 20000n;
170
+ const availableToBorrow = 100000n;
171
+ const creditManagerWithQuota = (0, import_test_utils.buildCreditManager)({
172
+ availableToBorrow,
173
+ quotas: {
174
+ ...mockCreditManager.quotas,
175
+ [import_test_utils.mockToken1]: {
176
+ ...mockCreditManager.quotas[import_test_utils.mockToken1],
177
+ limit: quotaLimit,
178
+ totalQuoted
179
+ }
180
+ }
181
+ });
182
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
183
+ targetToken: import_test_utils.mockToken1,
184
+ amount,
185
+ creditManager: creditManagerWithQuota,
186
+ slippage: 100,
187
+ constantLoss: 30n
188
+ });
189
+ (0, import_vitest.expect)(result).toEqual(quotaLimit - totalQuoted);
190
+ });
191
+ (0, import_vitest.it)("returns minDebt when quotaLeft would be negative (clamped to 0)", () => {
192
+ const maxLeverageValue = 10n * import_math.LEVERAGE_DECIMALS;
193
+ mockMaxLeverage.mockReturnValue(maxLeverageValue);
194
+ const quotaLimit = 50000n;
195
+ const totalQuoted = 50001n;
196
+ const amount = 20000n;
197
+ const availableToBorrow = 100000n;
198
+ const creditManagerWithQuota = (0, import_test_utils.buildCreditManager)({
199
+ availableToBorrow,
200
+ quotas: {
201
+ ...mockCreditManager.quotas,
202
+ [import_test_utils.mockToken1]: {
203
+ ...mockCreditManager.quotas[import_test_utils.mockToken1],
204
+ limit: quotaLimit,
205
+ totalQuoted
206
+ }
207
+ }
208
+ });
209
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
210
+ targetToken: import_test_utils.mockToken1,
211
+ amount,
212
+ creditManager: creditManagerWithQuota,
213
+ slippage: 100,
214
+ constantLoss: 30n
215
+ });
216
+ (0, import_vitest.expect)(result).toEqual(mockCreditManager.minDebt);
217
+ (0, import_vitest.expect)(mockMaxLeverage).not.toHaveBeenCalled();
218
+ });
219
+ (0, import_vitest.it)("returns minDebt when quotaLimit is zero", () => {
220
+ const maxLeverageValue = 10n * import_math.LEVERAGE_DECIMALS;
221
+ mockMaxLeverage.mockReturnValue(maxLeverageValue);
222
+ const quotaLimit = 0n;
223
+ const totalQuoted = 30000n;
224
+ const amount = 20000n;
225
+ const availableToBorrow = 100000n;
226
+ const creditManagerWithQuota = (0, import_test_utils.buildCreditManager)({
227
+ availableToBorrow,
228
+ quotas: {
229
+ ...mockCreditManager.quotas,
230
+ [import_test_utils.mockToken1]: {
231
+ ...mockCreditManager.quotas[import_test_utils.mockToken1],
232
+ limit: quotaLimit,
233
+ totalQuoted
234
+ }
235
+ }
236
+ });
237
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
238
+ targetToken: import_test_utils.mockToken1,
239
+ amount,
240
+ creditManager: creditManagerWithQuota,
241
+ slippage: 100,
242
+ constantLoss: 30n
243
+ });
244
+ (0, import_vitest.expect)(result).toEqual(mockCreditManager.minDebt);
245
+ (0, import_vitest.expect)(mockMaxLeverage).not.toHaveBeenCalled();
246
+ });
247
+ (0, import_vitest.it)("returns minDebt when effectiveMaxDebt is below minDebt", () => {
248
+ mockCalculateLossCoefficient.mockReturnValueOnce(import_math.PERCENTAGE_FACTOR);
249
+ const creditManager = (0, import_test_utils.buildCreditManager)({
250
+ minDebt: 500n,
251
+ availableToBorrow: 50n,
252
+ maxDebt: 200n
253
+ });
254
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
255
+ targetToken: import_test_utils.mockToken1,
256
+ amount: 0n,
257
+ creditManager,
258
+ slippage: 0,
259
+ constantLoss: 0n
260
+ });
261
+ (0, import_vitest.expect)(result).toEqual(creditManager.minDebt);
262
+ (0, import_vitest.expect)(mockMaxLeverage).not.toHaveBeenCalled();
263
+ });
264
+ (0, import_vitest.it)("clamps leveraged result to minDebt when effective debt is smaller", () => {
265
+ mockCalculateLossCoefficient.mockReturnValueOnce(import_math.PERCENTAGE_FACTOR);
266
+ const creditManager = (0, import_test_utils.buildCreditManager)({
267
+ minDebt: 500n,
268
+ availableToBorrow: 2000n,
269
+ maxDebt: 2000n
270
+ });
271
+ mockMaxLeverage.mockReturnValue(1n);
272
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
273
+ targetToken: import_test_utils.mockToken1,
274
+ amount: 100n,
275
+ creditManager,
276
+ slippage: 0,
277
+ constantLoss: 0n
278
+ });
279
+ (0, import_vitest.expect)(result).toEqual(creditManager.minDebt);
280
+ (0, import_vitest.expect)(mockMaxLeverage).toHaveBeenCalledTimes(1);
281
+ });
282
+ (0, import_vitest.it)("ignores quota when swapCollateral is false", () => {
283
+ const creditManagerWithQuota = (0, import_test_utils.buildCreditManager)({
284
+ availableToBorrow: 100000n,
285
+ quotas: {
286
+ ...mockCreditManager.quotas,
287
+ [import_test_utils.mockToken1]: {
288
+ ...mockCreditManager.quotas[import_test_utils.mockToken1],
289
+ limit: 50000n,
290
+ totalQuoted: 40000n
291
+ }
292
+ }
293
+ });
294
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
295
+ targetToken: import_test_utils.mockToken1,
296
+ amount: 0n,
297
+ creditManager: creditManagerWithQuota,
298
+ slippage: 100,
299
+ constantLoss: 30n,
300
+ swapCollateral: false
301
+ });
302
+ (0, import_vitest.expect)(result).toEqual(creditManagerWithQuota.availableToBorrow);
303
+ (0, import_vitest.expect)(mockMaxLeverage).not.toHaveBeenCalled();
304
+ });
305
+ (0, import_vitest.it)("should respect quota limit when amount is zero", () => {
306
+ const quotaLimit = 50000n;
307
+ const totalQuoted = 20000n;
308
+ const availableToBorrow = 100000n;
309
+ const creditManagerWithQuota = (0, import_test_utils.buildCreditManager)({
310
+ availableToBorrow,
311
+ quotas: {
312
+ ...mockCreditManager.quotas,
313
+ [import_test_utils.mockToken1]: {
314
+ ...mockCreditManager.quotas[import_test_utils.mockToken1],
315
+ limit: quotaLimit,
316
+ totalQuoted
317
+ }
318
+ }
319
+ });
320
+ const result = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
321
+ targetToken: import_test_utils.mockToken1,
322
+ amount: 0n,
323
+ creditManager: creditManagerWithQuota,
324
+ slippage: 100,
325
+ constantLoss: 30n
326
+ });
327
+ (0, import_vitest.expect)(result).toBe(30000n);
328
+ (0, import_vitest.expect)(mockMaxLeverage).not.toHaveBeenCalled();
329
+ });
330
+ });
@@ -0,0 +1,34 @@
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_collateral_by_debt_exports = {};
20
+ __export(get_collateral_by_debt_exports, {
21
+ getCollateralByDebt: () => getCollateralByDebt
22
+ });
23
+ module.exports = __toCommonJS(get_collateral_by_debt_exports);
24
+ var import_math = require("../../../../sdk/constants/math.js");
25
+ function getCollateralByDebt(debt, lt, targetHF = import_math.PERCENTAGE_FACTOR) {
26
+ if (lt === 0n) return 0n;
27
+ if (targetHF === lt) return 0n;
28
+ const a = debt * (targetHF - lt) / lt;
29
+ return a;
30
+ }
31
+ // Annotate the CommonJS export names for ESM import in node:
32
+ 0 && (module.exports = {
33
+ getCollateralByDebt
34
+ });
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var import_vitest = require("vitest");
3
+ var import_math = require("../../../../sdk/constants/math.js");
4
+ var import_formatter = require("../../../../sdk/utils/formatter.js");
5
+ var import_get_collateral_by_debt = require("./get-collateral-by-debt.js");
6
+ (0, import_vitest.describe)("getCollateralByDebt", () => {
7
+ (0, import_vitest.it)("returns full debt when target HF equals 1 and LT is 0.5", () => {
8
+ const debt = 1000000n;
9
+ const lt = (0, import_formatter.toBN)("0.5", 4);
10
+ const result = (0, import_get_collateral_by_debt.getCollateralByDebt)(debt, lt);
11
+ (0, import_vitest.expect)(result).toBe(debt);
12
+ });
13
+ (0, import_vitest.it)("returns 0 when lt = hf", () => {
14
+ const debt = 1000000n;
15
+ const result = (0, import_get_collateral_by_debt.getCollateralByDebt)(debt, import_math.PERCENTAGE_FACTOR);
16
+ (0, import_vitest.expect)(result).toBe(0n);
17
+ });
18
+ (0, import_vitest.it)("returns when lt = 0", () => {
19
+ const debt = 1000000n;
20
+ const result = (0, import_get_collateral_by_debt.getCollateralByDebt)(debt, 0n);
21
+ (0, import_vitest.expect)(result).toBe(0n);
22
+ });
23
+ (0, import_vitest.it)("handles fractional LT and target HF values", () => {
24
+ const debt = 35n * import_math.WAD / 2n;
25
+ const lt = (0, import_formatter.toBN)("0.93", 4);
26
+ const targetHF = (0, import_formatter.toBN)("1.035", 4);
27
+ const result = (0, import_get_collateral_by_debt.getCollateralByDebt)(debt, lt, targetHF);
28
+ (0, import_vitest.expect)(result).toBe(1975806451612903225n);
29
+ });
30
+ });
@@ -0,0 +1,85 @@
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_recommended_debt_exports = {};
20
+ __export(get_recommended_debt_exports, {
21
+ getRecommendedDebt: () => getRecommendedDebt
22
+ });
23
+ module.exports = __toCommonJS(get_recommended_debt_exports);
24
+ var import_math = require("../../../../sdk/constants/math.js");
25
+ var import_calculate_max_leverage_factor = require("./calculate-max-leverage-factor.js");
26
+ var import_calculate_max_strategy_debt = require("./calculate-max-strategy-debt.js");
27
+ var import_get_recommended_leverage_factor = require("./get-recommended-leverage-factor.js");
28
+ function getRecommendedDebt({
29
+ targetToken,
30
+ amount,
31
+ creditManager,
32
+ slippage,
33
+ maxLeverageConstantLoss,
34
+ maxDebtConstantLoss,
35
+ recommendedDebtConstantLoss = 3400n,
36
+ swapCollateral,
37
+ leverageLimit
38
+ }) {
39
+ const maxDebt = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
40
+ targetToken,
41
+ amount,
42
+ creditManager,
43
+ slippage,
44
+ constantLoss: maxDebtConstantLoss,
45
+ swapCollateral
46
+ });
47
+ const recommendedLeverageFactor = (0, import_get_recommended_leverage_factor.getRecommendedLeverageFactor)({
48
+ maxLeverageFactor: (0, import_calculate_max_leverage_factor.calculateMaxLeverageFactor)({
49
+ targetToken,
50
+ creditManagers: [creditManager],
51
+ slippage,
52
+ leverageLimit,
53
+ constantLoss: maxLeverageConstantLoss
54
+ })
55
+ });
56
+ if (maxDebt === 0n || amount === 0n) {
57
+ return {
58
+ maxDebt,
59
+ recommended: {
60
+ factor: recommendedLeverageFactor,
61
+ debt: maxDebt
62
+ }
63
+ };
64
+ }
65
+ const recommendedMaxDebt = (0, import_calculate_max_strategy_debt.calculateMaxStrategyDebt)({
66
+ targetToken,
67
+ amount,
68
+ creditManager,
69
+ slippage,
70
+ constantLoss: recommendedDebtConstantLoss,
71
+ swapCollateral
72
+ });
73
+ const leverageFactorOfMaxDebt = recommendedMaxDebt * import_math.LEVERAGE_DECIMALS / amount;
74
+ return {
75
+ maxDebt,
76
+ recommended: {
77
+ factor: leverageFactorOfMaxDebt,
78
+ debt: recommendedMaxDebt
79
+ }
80
+ };
81
+ }
82
+ // Annotate the CommonJS export names for ESM import in node:
83
+ 0 && (module.exports = {
84
+ getRecommendedDebt
85
+ });