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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) 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/constants.js +34 -0
  10. package/dist/cjs/common-utils/utils/strategies/assets/assets.js +30 -0
  11. package/dist/cjs/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.js +62 -0
  12. package/dist/cjs/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.spec.js +109 -0
  13. package/dist/cjs/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.js +75 -0
  14. package/dist/cjs/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.spec.js +93 -0
  15. package/dist/cjs/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.js +63 -0
  16. package/dist/cjs/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.spec.js +330 -0
  17. package/dist/cjs/common-utils/utils/strategies/leverage/get-collateral-by-debt.js +34 -0
  18. package/dist/cjs/common-utils/utils/strategies/leverage/get-collateral-by-debt.spec.js +30 -0
  19. package/dist/cjs/common-utils/utils/strategies/leverage/get-recommended-debt.js +85 -0
  20. package/dist/cjs/common-utils/utils/strategies/leverage/get-recommended-debt.spec.js +227 -0
  21. package/dist/cjs/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.js +33 -0
  22. package/dist/cjs/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.spec.js +23 -0
  23. package/dist/cjs/common-utils/utils/strategies/leverage/max-leverage.js +2 -2
  24. package/dist/cjs/common-utils/utils/strategies/strategy-info/calculate-total-apy.js +112 -0
  25. package/dist/cjs/common-utils/utils/strategies/strategy-info/calculate-total-apy.spec.js +183 -0
  26. package/dist/cjs/common-utils/utils/strategies/strategy-info/calculate-total-points.js +74 -0
  27. package/dist/cjs/common-utils/utils/strategies/strategy-info/calculate-total-points.spec.js +131 -0
  28. package/dist/cjs/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.js +410 -0
  29. package/dist/cjs/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.spec.js +274 -0
  30. package/dist/cjs/common-utils/utils/strategies/strategy-info/get-strategy-you-can-earn.js +108 -0
  31. package/dist/cjs/common-utils/utils/strategies/tokens/add-amount-in-target.js +41 -0
  32. package/dist/cjs/common-utils/utils/strategies/tokens/add-amount-in-target.spec.js +38 -0
  33. package/dist/cjs/common-utils/utils/strategies/tokens/get-chain-phantom-tokens.js +35 -0
  34. package/dist/cjs/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.js +42 -0
  35. package/dist/cjs/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.spec.js +32 -0
  36. package/dist/cjs/common-utils/utils/strategies/tokens/get-native-token-address.js +31 -0
  37. package/dist/cjs/common-utils/utils/strategies/tokens/is-apy-with-points-exception.js +36 -0
  38. package/dist/cjs/common-utils/utils/strategies/tokens/is-collateral-token.js +59 -0
  39. package/dist/cjs/common-utils/utils/strategies/tokens/is-collateral-token.spec.js +135 -0
  40. package/dist/cjs/common-utils/utils/strategies/tokens/is-obtainable-token.js +42 -0
  41. package/dist/cjs/common-utils/utils/strategies/tokens/is-obtainable-token.spec.js +162 -0
  42. package/dist/cjs/common-utils/utils/strategies/tokens/is-valid-extra-collateral-token.js +51 -0
  43. package/dist/cjs/common-utils/utils/strategies/tokens/wrap-token-address.js +33 -0
  44. package/dist/cjs/common-utils/utils/strategies/tokens/wrap-token-address.spec.js +13 -0
  45. package/dist/cjs/common-utils/utils/strategies/types/strategy-data.js +16 -0
  46. package/dist/cjs/common-utils/utils/strategies/types/strategy-earnings.js +16 -0
  47. package/dist/cjs/common-utils/utils/validation/is-zero-balance.js +30 -0
  48. package/dist/cjs/common-utils/utils/validation/validate-balance.js +47 -0
  49. package/dist/cjs/common-utils/utils/validation/validate-balance.spec.js +52 -0
  50. package/dist/cjs/common-utils/utils/validation/validate-balances.js +44 -0
  51. package/dist/cjs/common-utils/utils/validation/validate-balances.spec.js +37 -0
  52. package/dist/cjs/common-utils/utils/validation/validate-credit-manager.js +34 -0
  53. package/dist/cjs/common-utils/utils/validation/validate-credit-manager.spec.js +36 -0
  54. package/dist/cjs/common-utils/utils/validation/validate-hf.js +38 -0
  55. package/dist/cjs/common-utils/utils/validation/validate-hf.spec.js +24 -0
  56. package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-quota-status.js +37 -0
  57. package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-quota-status.spec.js +43 -0
  58. package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-status.js +76 -0
  59. package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-status.spec.js +98 -0
  60. package/dist/cjs/common-utils/utils/validation/validate-open-account.js +41 -0
  61. package/dist/cjs/common-utils/utils/validation/validate-open-account.spec.js +54 -0
  62. package/dist/cjs/common-utils/utils/validation/validate-quota.js +49 -0
  63. package/dist/cjs/common-utils/utils/validation/validate-quota.spec.js +79 -0
  64. package/dist/cjs/common-utils/utils/validation/validate-token-to-obtain.js +42 -0
  65. package/dist/cjs/common-utils/utils/validation/validate-token-to-obtain.spec.js +35 -0
  66. package/dist/cjs/common-utils/utils/validation/validation-types.js +16 -0
  67. package/dist/cjs/sdk/constants/math.js +3 -0
  68. package/dist/esm/common-utils/test-utils/index.js +104 -0
  69. package/dist/esm/common-utils/utils/apy/calculate-borrow-rate-from-utilization.js +35 -0
  70. package/dist/esm/common-utils/utils/apy/calculate-borrow-rate-from-utilization.spec.js +31 -0
  71. package/dist/esm/common-utils/utils/apy/calculate-earnings.js +35 -0
  72. package/dist/esm/common-utils/utils/apy/calculate-earnings.spec.js +65 -0
  73. package/dist/esm/common-utils/utils/apy/calculate-safe-borrow-rate.js +34 -0
  74. package/dist/esm/common-utils/utils/apy/calculate-safe-borrow-rate.spec.js +38 -0
  75. package/dist/esm/common-utils/utils/apy/get-safe-base-borrow-rate.js +16 -0
  76. package/dist/esm/common-utils/utils/constants.js +8 -0
  77. package/dist/esm/common-utils/utils/strategies/assets/assets.js +6 -0
  78. package/dist/esm/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.js +38 -0
  79. package/dist/esm/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.spec.js +115 -0
  80. package/dist/esm/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.js +51 -0
  81. package/dist/esm/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.spec.js +96 -0
  82. package/dist/esm/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.js +42 -0
  83. package/dist/esm/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.spec.js +332 -0
  84. package/dist/esm/common-utils/utils/strategies/leverage/get-collateral-by-debt.js +10 -0
  85. package/dist/esm/common-utils/utils/strategies/leverage/get-collateral-by-debt.spec.js +29 -0
  86. package/dist/esm/common-utils/utils/strategies/leverage/get-recommended-debt.js +61 -0
  87. package/dist/esm/common-utils/utils/strategies/leverage/get-recommended-debt.spec.js +226 -0
  88. package/dist/esm/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.js +9 -0
  89. package/dist/esm/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.spec.js +22 -0
  90. package/dist/esm/common-utils/utils/strategies/leverage/max-leverage.js +2 -2
  91. package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-apy.js +88 -0
  92. package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-apy.spec.js +187 -0
  93. package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-points.js +54 -0
  94. package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-points.spec.js +139 -0
  95. package/dist/esm/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.js +389 -0
  96. package/dist/esm/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.spec.js +278 -0
  97. package/dist/esm/common-utils/utils/strategies/strategy-info/get-strategy-you-can-earn.js +84 -0
  98. package/dist/esm/common-utils/utils/strategies/tokens/add-amount-in-target.js +17 -0
  99. package/dist/esm/common-utils/utils/strategies/tokens/add-amount-in-target.spec.js +41 -0
  100. package/dist/esm/common-utils/utils/strategies/tokens/get-chain-phantom-tokens.js +11 -0
  101. package/dist/esm/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.js +18 -0
  102. package/dist/esm/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.spec.js +36 -0
  103. package/dist/esm/common-utils/utils/strategies/tokens/get-native-token-address.js +7 -0
  104. package/dist/esm/common-utils/utils/strategies/tokens/is-apy-with-points-exception.js +11 -0
  105. package/dist/esm/common-utils/utils/strategies/tokens/is-collateral-token.js +35 -0
  106. package/dist/esm/common-utils/utils/strategies/tokens/is-collateral-token.spec.js +137 -0
  107. package/dist/esm/common-utils/utils/strategies/tokens/is-obtainable-token.js +18 -0
  108. package/dist/esm/common-utils/utils/strategies/tokens/is-obtainable-token.spec.js +161 -0
  109. package/dist/esm/common-utils/utils/strategies/tokens/is-valid-extra-collateral-token.js +27 -0
  110. package/dist/esm/common-utils/utils/strategies/tokens/wrap-token-address.js +9 -0
  111. package/dist/esm/common-utils/utils/strategies/tokens/wrap-token-address.spec.js +12 -0
  112. package/dist/esm/common-utils/utils/strategies/types/strategy-data.js +0 -0
  113. package/dist/esm/common-utils/utils/strategies/types/strategy-earnings.js +0 -0
  114. package/dist/esm/common-utils/utils/validation/is-zero-balance.js +6 -0
  115. package/dist/esm/common-utils/utils/validation/validate-balance.js +23 -0
  116. package/dist/esm/common-utils/utils/validation/validate-balance.spec.js +51 -0
  117. package/dist/esm/common-utils/utils/validation/validate-balances.js +20 -0
  118. package/dist/esm/common-utils/utils/validation/validate-balances.spec.js +36 -0
  119. package/dist/esm/common-utils/utils/validation/validate-credit-manager.js +10 -0
  120. package/dist/esm/common-utils/utils/validation/validate-credit-manager.spec.js +35 -0
  121. package/dist/esm/common-utils/utils/validation/validate-hf.js +13 -0
  122. package/dist/esm/common-utils/utils/validation/validate-hf.spec.js +23 -0
  123. package/dist/esm/common-utils/utils/validation/validate-open-account-pool-quota-status.js +13 -0
  124. package/dist/esm/common-utils/utils/validation/validate-open-account-pool-quota-status.spec.js +46 -0
  125. package/dist/esm/common-utils/utils/validation/validate-open-account-pool-status.js +54 -0
  126. package/dist/esm/common-utils/utils/validation/validate-open-account-pool-status.spec.js +102 -0
  127. package/dist/esm/common-utils/utils/validation/validate-open-account.js +17 -0
  128. package/dist/esm/common-utils/utils/validation/validate-open-account.spec.js +56 -0
  129. package/dist/esm/common-utils/utils/validation/validate-quota.js +25 -0
  130. package/dist/esm/common-utils/utils/validation/validate-quota.spec.js +83 -0
  131. package/dist/esm/common-utils/utils/validation/validate-token-to-obtain.js +18 -0
  132. package/dist/esm/common-utils/utils/validation/validate-token-to-obtain.spec.js +34 -0
  133. package/dist/esm/common-utils/utils/validation/validation-types.js +0 -0
  134. package/dist/esm/sdk/constants/math.js +2 -0
  135. package/dist/types/common-utils/test-utils/index.d.ts +16 -0
  136. package/dist/types/common-utils/utils/apy/calculate-borrow-rate-from-utilization.d.ts +2 -0
  137. package/dist/types/common-utils/utils/apy/calculate-borrow-rate-from-utilization.spec.d.ts +1 -0
  138. package/dist/types/common-utils/utils/apy/calculate-earnings.d.ts +16 -0
  139. package/dist/types/common-utils/utils/apy/calculate-earnings.spec.d.ts +1 -0
  140. package/dist/types/common-utils/utils/apy/calculate-safe-borrow-rate.d.ts +11 -0
  141. package/dist/types/common-utils/utils/apy/calculate-safe-borrow-rate.spec.d.ts +1 -0
  142. package/dist/types/common-utils/utils/apy/get-safe-base-borrow-rate.d.ts +4 -0
  143. package/dist/types/common-utils/utils/constants.d.ts +4 -0
  144. package/dist/types/common-utils/utils/strategies/assets/assets.d.ts +3 -0
  145. package/dist/types/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.d.ts +20 -0
  146. package/dist/types/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.spec.d.ts +1 -0
  147. package/dist/types/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.d.ts +13 -0
  148. package/dist/types/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.spec.d.ts +1 -0
  149. package/dist/types/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.d.ts +11 -0
  150. package/dist/types/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.spec.d.ts +1 -0
  151. package/dist/types/common-utils/utils/strategies/leverage/get-collateral-by-debt.d.ts +2 -0
  152. package/dist/types/common-utils/utils/strategies/leverage/get-collateral-by-debt.spec.d.ts +1 -0
  153. package/dist/types/common-utils/utils/strategies/leverage/get-recommended-debt.d.ts +21 -0
  154. package/dist/types/common-utils/utils/strategies/leverage/get-recommended-debt.spec.d.ts +1 -0
  155. package/dist/types/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.d.ts +4 -0
  156. package/dist/types/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.spec.d.ts +1 -0
  157. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-apy.d.ts +28 -0
  158. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-apy.spec.d.ts +1 -0
  159. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-points.d.ts +22 -0
  160. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-points.spec.d.ts +1 -0
  161. package/dist/types/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.d.ts +19 -0
  162. package/dist/types/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.spec.d.ts +1 -0
  163. package/dist/types/common-utils/utils/strategies/strategy-info/get-strategy-you-can-earn.d.ts +29 -0
  164. package/dist/types/common-utils/utils/strategies/tokens/add-amount-in-target.d.ts +6 -0
  165. package/dist/types/common-utils/utils/strategies/tokens/add-amount-in-target.spec.d.ts +1 -0
  166. package/dist/types/common-utils/utils/strategies/tokens/get-chain-phantom-tokens.d.ts +6 -0
  167. package/dist/types/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.d.ts +12 -0
  168. package/dist/types/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.spec.d.ts +1 -0
  169. package/dist/types/common-utils/utils/strategies/tokens/get-native-token-address.d.ts +1 -0
  170. package/dist/types/common-utils/utils/strategies/tokens/is-apy-with-points-exception.d.ts +3 -0
  171. package/dist/types/common-utils/utils/strategies/tokens/is-collateral-token.d.ts +16 -0
  172. package/dist/types/common-utils/utils/strategies/tokens/is-collateral-token.spec.d.ts +1 -0
  173. package/dist/types/common-utils/utils/strategies/tokens/is-obtainable-token.d.ts +14 -0
  174. package/dist/types/common-utils/utils/strategies/tokens/is-obtainable-token.spec.d.ts +1 -0
  175. package/dist/types/common-utils/utils/strategies/tokens/is-valid-extra-collateral-token.d.ts +20 -0
  176. package/dist/types/common-utils/utils/strategies/tokens/wrap-token-address.d.ts +2 -0
  177. package/dist/types/common-utils/utils/strategies/tokens/wrap-token-address.spec.d.ts +1 -0
  178. package/dist/types/common-utils/utils/strategies/types/index.d.ts +2 -1
  179. package/dist/types/common-utils/utils/strategies/types/strategy-data.d.ts +64 -0
  180. package/dist/types/common-utils/utils/strategies/types/strategy-earnings.d.ts +43 -0
  181. package/dist/types/common-utils/utils/validation/is-zero-balance.d.ts +1 -0
  182. package/dist/types/common-utils/utils/validation/validate-balance.d.ts +22 -0
  183. package/dist/types/common-utils/utils/validation/validate-balance.spec.d.ts +1 -0
  184. package/dist/types/common-utils/utils/validation/validate-balances.d.ts +9 -0
  185. package/dist/types/common-utils/utils/validation/validate-balances.spec.d.ts +1 -0
  186. package/dist/types/common-utils/utils/validation/validate-credit-manager.d.ts +10 -0
  187. package/dist/types/common-utils/utils/validation/validate-credit-manager.spec.d.ts +1 -0
  188. package/dist/types/common-utils/utils/validation/validate-hf.d.ts +9 -0
  189. package/dist/types/common-utils/utils/validation/validate-hf.spec.d.ts +1 -0
  190. package/dist/types/common-utils/utils/validation/validate-open-account-pool-quota-status.d.ts +7 -0
  191. package/dist/types/common-utils/utils/validation/validate-open-account-pool-quota-status.spec.d.ts +1 -0
  192. package/dist/types/common-utils/utils/validation/validate-open-account-pool-status.d.ts +23 -0
  193. package/dist/types/common-utils/utils/validation/validate-open-account-pool-status.spec.d.ts +1 -0
  194. package/dist/types/common-utils/utils/validation/validate-open-account.d.ts +21 -0
  195. package/dist/types/common-utils/utils/validation/validate-open-account.spec.d.ts +1 -0
  196. package/dist/types/common-utils/utils/validation/validate-quota.d.ts +20 -0
  197. package/dist/types/common-utils/utils/validation/validate-quota.spec.d.ts +1 -0
  198. package/dist/types/common-utils/utils/validation/validate-token-to-obtain.d.ts +13 -0
  199. package/dist/types/common-utils/utils/validation/validate-token-to-obtain.spec.d.ts +1 -0
  200. package/dist/types/common-utils/utils/validation/validation-types.d.ts +14 -0
  201. package/dist/types/dev/RevolverTransport.d.ts +4 -4
  202. package/dist/types/sdk/constants/math.d.ts +1 -0
  203. package/package.json +1 -1
  204. package/dist/cjs/common-utils/utils/strategies/__test-utils.js +0 -95
  205. package/dist/esm/common-utils/utils/strategies/__test-utils.js +0 -65
  206. package/dist/types/common-utils/utils/strategies/__test-utils.d.ts +0 -11
@@ -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
+ });
@@ -0,0 +1,227 @@
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_max_leverage_factor = require("./calculate-max-leverage-factor.js");
6
+ var import_calculate_max_strategy_debt = require("./calculate-max-strategy-debt.js");
7
+ var import_get_recommended_debt = require("./get-recommended-debt.js");
8
+ import_vitest.vi.mock("./calculate-max-strategy-debt");
9
+ import_vitest.vi.mock(
10
+ "../../utils/strategies/leverage/calculate-max-leverage-factor.js",
11
+ async () => {
12
+ const actual = await import_vitest.vi.importActual(
13
+ "../../utils/strategies/leverage/calculate-max-leverage-factor.js"
14
+ );
15
+ return {
16
+ ...actual,
17
+ calculateMaxLeverageFactor: import_vitest.vi.fn(
18
+ actual.calculateMaxLeverageFactor
19
+ )
20
+ };
21
+ }
22
+ );
23
+ const mockCalculateMaxStrategyDebt = import_vitest.vi.mocked(import_calculate_max_strategy_debt.calculateMaxStrategyDebt);
24
+ const mockCalculateMaxLeverageFactor = import_vitest.vi.mocked(import_calculate_max_leverage_factor.calculateMaxLeverageFactor);
25
+ (0, import_vitest.describe)("getRecommendedDebt", () => {
26
+ const mockCreditManager = (0, import_test_utils.buildCreditManager)({});
27
+ (0, import_vitest.beforeEach)(() => {
28
+ mockCalculateMaxStrategyDebt.mockReset();
29
+ mockCalculateMaxLeverageFactor.mockReset();
30
+ });
31
+ (0, import_vitest.it)("returns zero max debt with recommended factor when maxDebt is zero", () => {
32
+ const maxDebt = 0n;
33
+ mockCalculateMaxStrategyDebt.mockReturnValue(maxDebt);
34
+ mockCalculateMaxLeverageFactor.mockReturnValue(300n);
35
+ const result = (0, import_get_recommended_debt.getRecommendedDebt)({
36
+ targetToken: import_test_utils.mockToken1,
37
+ amount: 1000n,
38
+ creditManager: mockCreditManager,
39
+ slippage: 100,
40
+ maxDebtConstantLoss: 30n,
41
+ swapCollateral: true,
42
+ leverageLimit: void 0
43
+ });
44
+ (0, import_vitest.expect)(mockCalculateMaxStrategyDebt).toHaveBeenCalledWith({
45
+ targetToken: import_test_utils.mockToken1,
46
+ amount: 1000n,
47
+ creditManager: mockCreditManager,
48
+ slippage: 100,
49
+ constantLoss: 30n,
50
+ swapCollateral: true
51
+ });
52
+ (0, import_vitest.expect)(mockCalculateMaxLeverageFactor).toHaveBeenCalledWith({
53
+ targetToken: import_test_utils.mockToken1,
54
+ creditManagers: [mockCreditManager],
55
+ slippage: 100,
56
+ leverageLimit: void 0
57
+ });
58
+ (0, import_vitest.expect)(result).toEqual({
59
+ maxDebt,
60
+ recommended: {
61
+ factor: 210n,
62
+ debt: maxDebt
63
+ }
64
+ });
65
+ });
66
+ (0, import_vitest.it)("returns zero max debt with recommended factor when amount is zero", () => {
67
+ const maxDebt = 500n;
68
+ mockCalculateMaxStrategyDebt.mockReturnValue(maxDebt);
69
+ mockCalculateMaxLeverageFactor.mockReturnValue(300n);
70
+ const result = (0, import_get_recommended_debt.getRecommendedDebt)({
71
+ targetToken: import_test_utils.mockToken1,
72
+ amount: 0n,
73
+ creditManager: mockCreditManager,
74
+ slippage: 100,
75
+ maxDebtConstantLoss: 30n,
76
+ swapCollateral: true,
77
+ leverageLimit: void 0
78
+ });
79
+ (0, import_vitest.expect)(mockCalculateMaxStrategyDebt).toHaveBeenCalledWith({
80
+ targetToken: import_test_utils.mockToken1,
81
+ amount: 0n,
82
+ creditManager: mockCreditManager,
83
+ slippage: 100,
84
+ constantLoss: 30n,
85
+ swapCollateral: true
86
+ });
87
+ (0, import_vitest.expect)(mockCalculateMaxLeverageFactor).toHaveBeenCalledWith({
88
+ targetToken: import_test_utils.mockToken1,
89
+ creditManagers: [mockCreditManager],
90
+ slippage: 100,
91
+ leverageLimit: void 0
92
+ });
93
+ (0, import_vitest.expect)(result).toEqual({
94
+ maxDebt,
95
+ recommended: {
96
+ factor: 210n,
97
+ debt: maxDebt
98
+ }
99
+ });
100
+ });
101
+ (0, import_vitest.it)("returns recommended debt using adjusted constant loss when amount and maxDebt are positive", () => {
102
+ const maxDebt = 5000n;
103
+ const recommendedMaxDebt = 3500n;
104
+ const amount = 1000n;
105
+ const leverageLimit = Number(4n * import_math.LEVERAGE_DECIMALS);
106
+ mockCalculateMaxStrategyDebt.mockReturnValueOnce(maxDebt).mockReturnValueOnce(recommendedMaxDebt);
107
+ mockCalculateMaxLeverageFactor.mockReturnValue(450n);
108
+ const result = (0, import_get_recommended_debt.getRecommendedDebt)({
109
+ targetToken: import_test_utils.mockToken1,
110
+ amount,
111
+ creditManager: mockCreditManager,
112
+ slippage: 50,
113
+ maxDebtConstantLoss: 75n,
114
+ swapCollateral: false,
115
+ leverageLimit
116
+ });
117
+ (0, import_vitest.expect)(mockCalculateMaxStrategyDebt).toHaveBeenNthCalledWith(1, {
118
+ targetToken: import_test_utils.mockToken1,
119
+ amount,
120
+ creditManager: mockCreditManager,
121
+ slippage: 50,
122
+ constantLoss: 75n,
123
+ swapCollateral: false
124
+ });
125
+ (0, import_vitest.expect)(mockCalculateMaxStrategyDebt).toHaveBeenNthCalledWith(2, {
126
+ targetToken: import_test_utils.mockToken1,
127
+ amount,
128
+ creditManager: mockCreditManager,
129
+ slippage: 50,
130
+ constantLoss: 3400n,
131
+ swapCollateral: false
132
+ });
133
+ (0, import_vitest.expect)(mockCalculateMaxLeverageFactor).toHaveBeenCalledWith({
134
+ targetToken: import_test_utils.mockToken1,
135
+ creditManagers: [mockCreditManager],
136
+ slippage: 50,
137
+ leverageLimit
138
+ });
139
+ (0, import_vitest.expect)(result).toEqual({
140
+ maxDebt,
141
+ recommended: {
142
+ factor: recommendedMaxDebt * import_math.LEVERAGE_DECIMALS / amount,
143
+ debt: recommendedMaxDebt
144
+ }
145
+ });
146
+ });
147
+ (0, import_vitest.it)("passes maxLeverageConstantLoss through to leverage calculation", () => {
148
+ const maxDebt = 2000n;
149
+ const recommendedMaxDebt = 1000n;
150
+ const amount = 500n;
151
+ const maxLeverageConstantLoss = 999n;
152
+ const maxDebtConstantLoss = 55n;
153
+ const recommendedDebtConstantLoss = 777n;
154
+ mockCalculateMaxStrategyDebt.mockReturnValueOnce(maxDebt).mockReturnValueOnce(recommendedMaxDebt);
155
+ mockCalculateMaxLeverageFactor.mockReturnValue(420n);
156
+ const result = (0, import_get_recommended_debt.getRecommendedDebt)({
157
+ targetToken: import_test_utils.mockToken1,
158
+ amount,
159
+ creditManager: mockCreditManager,
160
+ slippage: 25,
161
+ maxLeverageConstantLoss,
162
+ maxDebtConstantLoss,
163
+ recommendedDebtConstantLoss,
164
+ swapCollateral: true,
165
+ leverageLimit: 123
166
+ });
167
+ (0, import_vitest.expect)(mockCalculateMaxStrategyDebt).toHaveBeenNthCalledWith(1, {
168
+ targetToken: import_test_utils.mockToken1,
169
+ amount,
170
+ creditManager: mockCreditManager,
171
+ slippage: 25,
172
+ constantLoss: maxDebtConstantLoss,
173
+ swapCollateral: true
174
+ });
175
+ (0, import_vitest.expect)(mockCalculateMaxLeverageFactor).toHaveBeenCalledWith({
176
+ targetToken: import_test_utils.mockToken1,
177
+ creditManagers: [mockCreditManager],
178
+ slippage: 25,
179
+ leverageLimit: 123,
180
+ constantLoss: maxLeverageConstantLoss
181
+ });
182
+ (0, import_vitest.expect)(mockCalculateMaxStrategyDebt).toHaveBeenNthCalledWith(2, {
183
+ targetToken: import_test_utils.mockToken1,
184
+ amount,
185
+ creditManager: mockCreditManager,
186
+ slippage: 25,
187
+ constantLoss: recommendedDebtConstantLoss,
188
+ swapCollateral: true
189
+ });
190
+ (0, import_vitest.expect)(result).toEqual({
191
+ maxDebt,
192
+ recommended: {
193
+ factor: 200n,
194
+ debt: recommendedMaxDebt
195
+ }
196
+ });
197
+ });
198
+ (0, import_vitest.it)("uses custom recommendedDebtConstantLoss when provided", () => {
199
+ const maxDebt = 10000n;
200
+ const recommendedMaxDebt = 6000n;
201
+ const amount = 2000n;
202
+ const recommendedDebtConstantLoss = 1234n;
203
+ mockCalculateMaxStrategyDebt.mockReturnValueOnce(maxDebt).mockReturnValueOnce(recommendedMaxDebt);
204
+ mockCalculateMaxLeverageFactor.mockReturnValue(800n);
205
+ const result = (0, import_get_recommended_debt.getRecommendedDebt)({
206
+ targetToken: import_test_utils.mockToken1,
207
+ amount,
208
+ creditManager: mockCreditManager,
209
+ slippage: 15,
210
+ maxDebtConstantLoss: 60n,
211
+ maxLeverageConstantLoss: 70n,
212
+ recommendedDebtConstantLoss,
213
+ swapCollateral: false,
214
+ leverageLimit: void 0
215
+ });
216
+ (0, import_vitest.expect)(mockCalculateMaxStrategyDebt).toHaveBeenNthCalledWith(2, {
217
+ targetToken: import_test_utils.mockToken1,
218
+ amount,
219
+ creditManager: mockCreditManager,
220
+ slippage: 15,
221
+ constantLoss: recommendedDebtConstantLoss,
222
+ swapCollateral: false
223
+ });
224
+ (0, import_vitest.expect)(result.recommended.debt).toBe(recommendedMaxDebt);
225
+ (0, import_vitest.expect)(result.recommended.factor).toBe(300n);
226
+ });
227
+ });
@@ -0,0 +1,33 @@
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_leverage_factor_exports = {};
20
+ __export(get_recommended_leverage_factor_exports, {
21
+ getRecommendedLeverageFactor: () => getRecommendedLeverageFactor
22
+ });
23
+ module.exports = __toCommonJS(get_recommended_leverage_factor_exports);
24
+ function getRecommendedLeverageFactor({
25
+ maxLeverageFactor
26
+ }) {
27
+ const l = BigInt(Math.floor(Number(maxLeverageFactor) * 0.7 / 10)) * 10n;
28
+ return l;
29
+ }
30
+ // Annotate the CommonJS export names for ESM import in node:
31
+ 0 && (module.exports = {
32
+ getRecommendedLeverageFactor
33
+ });
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var import_vitest = require("vitest");
3
+ var import_get_recommended_leverage_factor = require("./get-recommended-leverage-factor.js");
4
+ (0, import_vitest.describe)("getRecommendedLeverageFactor", () => {
5
+ (0, import_vitest.it)("returns zero when max factor is zero", () => {
6
+ const factor = (0, import_get_recommended_leverage_factor.getRecommendedLeverageFactor)({
7
+ maxLeverageFactor: 0n
8
+ });
9
+ (0, import_vitest.expect)(factor).toBe(0n);
10
+ });
11
+ (0, import_vitest.it)("returns 70% of max rounded down to tens", () => {
12
+ const factor = (0, import_get_recommended_leverage_factor.getRecommendedLeverageFactor)({
13
+ maxLeverageFactor: 550n
14
+ });
15
+ (0, import_vitest.expect)(factor).toBe(380n);
16
+ });
17
+ (0, import_vitest.it)("rounds down fractional 70% results to nearest ten", () => {
18
+ const factor = (0, import_get_recommended_leverage_factor.getRecommendedLeverageFactor)({
19
+ maxLeverageFactor: 503n
20
+ });
21
+ (0, import_vitest.expect)(factor).toBe(350n);
22
+ });
23
+ });
@@ -26,8 +26,8 @@ var import_get_factor_from_leverage = require("./get-factor-from-leverage.js");
26
26
  var import_max_leverage_threshold = require("./max-leverage-threshold.js");
27
27
  function maxLeverage(lpToken, cms, targetHF = import_sdk.PERCENTAGE_FACTOR) {
28
28
  const [maxThreshold] = (0, import_max_leverage_threshold.maxLeverageThreshold)(lpToken, cms);
29
- const maxLeverageValue = targetHF * import_sdk.LEVERAGE_DECIMALS / (targetHF - maxThreshold);
30
- return (0, import_get_factor_from_leverage.getFactorFromLeverage)(maxLeverageValue);
29
+ const maxLeverage2 = targetHF * import_sdk.LEVERAGE_DECIMALS / (targetHF - maxThreshold);
30
+ return (0, import_get_factor_from_leverage.getFactorFromLeverage)(maxLeverage2);
31
31
  }
32
32
  // Annotate the CommonJS export names for ESM import in node:
33
33
  0 && (module.exports = {
@@ -0,0 +1,112 @@
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_apy_exports = {};
20
+ __export(calculate_total_apy_exports, {
21
+ calculateTotalAPY: () => calculateTotalAPY
22
+ });
23
+ module.exports = __toCommonJS(calculate_total_apy_exports);
24
+ var import_math = require("../../../../sdk/constants/math.js");
25
+ var import_constants = require("../../constants.js");
26
+ var import_calc_overall_apy = require("../../creditAccount/calc-overall-apy.js");
27
+ var import_is_apy_with_points_exception = require("../tokens/is-apy-with-points-exception.js");
28
+ function calculateTotalAPY({
29
+ caAssets,
30
+ lpAPY,
31
+ pointsInfo,
32
+ isValueTo,
33
+ debt,
34
+ totalValue,
35
+ effectiveBorrowRate,
36
+ showAPY,
37
+ prices,
38
+ quotaRates,
39
+ quotas,
40
+ feeInterest,
41
+ underlyingToken,
42
+ tokensList
43
+ }) {
44
+ const pointsWithAPY = (lpAPY?.[pointsInfo?.address || import_constants.EMPTY_ADDRESS] || 0) > 0;
45
+ const pointsWithoutAPY = pointsInfo?.address && !pointsWithAPY;
46
+ if (pointsWithoutAPY && !(0, import_is_apy_with_points_exception.isApyWithPointsException)(pointsInfo?.address)) {
47
+ return isValueTo ? {
48
+ overallAPY: null,
49
+ overallAPYBigInt: null,
50
+ overallAPYStatus: "pointsNoAPY"
51
+ } : {
52
+ overallAPY: void 0,
53
+ overallAPYBigInt: void 0,
54
+ overallAPYStatus: "pointsNoAPY"
55
+ };
56
+ }
57
+ if (pointsWithAPY && (debt === 0n || totalValue === 0n || caAssets.length === 0 || effectiveBorrowRate === 0)) {
58
+ return {
59
+ overallAPY: void 0,
60
+ overallAPYBigInt: void 0,
61
+ overallAPYStatus: "noAPY"
62
+ };
63
+ }
64
+ if (!showAPY) {
65
+ return {
66
+ overallAPY: null,
67
+ overallAPYBigInt: null,
68
+ overallAPYStatus: "notEnoughFarmAssets"
69
+ };
70
+ }
71
+ const r = (0, import_calc_overall_apy.calcOverallAPY)({
72
+ caAssets,
73
+ lpAPY,
74
+ prices,
75
+ quotaRates,
76
+ quotas,
77
+ feeInterest,
78
+ totalValue,
79
+ debt,
80
+ baseRateWithFee: effectiveBorrowRate,
81
+ underlyingToken,
82
+ tokensList
83
+ });
84
+ if (r === void 0) {
85
+ return {
86
+ overallAPY: void 0,
87
+ overallAPYBigInt: void 0,
88
+ overallAPYStatus: "noAPY"
89
+ };
90
+ }
91
+ const apy = Number(r) / Number(import_math.PERCENTAGE_FACTOR);
92
+ if (pointsWithAPY && !(0, import_is_apy_with_points_exception.isApyWithPointsException)(pointsInfo?.address) && apy <= 0) {
93
+ return isValueTo ? {
94
+ overallAPY: null,
95
+ overallAPYBigInt: null,
96
+ overallAPYStatus: "negativeForPoints"
97
+ } : {
98
+ overallAPY: void 0,
99
+ overallAPYBigInt: void 0,
100
+ overallAPYStatus: "negativeForPoints"
101
+ };
102
+ }
103
+ return {
104
+ overallAPYStatus: "calculated",
105
+ overallAPY: apy,
106
+ overallAPYBigInt: r
107
+ };
108
+ }
109
+ // Annotate the CommonJS export names for ESM import in node:
110
+ 0 && (module.exports = {
111
+ calculateTotalAPY
112
+ });