@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,104 @@
1
+ import { TokenData } from "../charts/token-data.js";
2
+ const mockToken1 = "0x1111111111111111111111111111111111111111";
3
+ const mockToken2 = "0x2222222222222222222222222222222222222222";
4
+ const mockUnderlyingToken = "0x9999999999999999999999999999999999999999";
5
+ const mockNativeTokenAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
6
+ const mockWrappedNativeTokenAddress = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";
7
+ const mockCMAddress = "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
8
+ function buildQuota(overrides) {
9
+ return {
10
+ rate: 0n,
11
+ quotaIncreaseFee: 0n,
12
+ totalQuoted: 0n,
13
+ limit: 0n,
14
+ isActive: true,
15
+ ...overrides
16
+ };
17
+ }
18
+ function buildPool(overrides = {}) {
19
+ const address = overrides.address ?? "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
20
+ return {
21
+ address,
22
+ expectedLiquidity: 0n,
23
+ availableLiquidity: 0n,
24
+ interestModel: {
25
+ interestModel: "0x0000000000000000000000000000000000000000",
26
+ U_1: 0n,
27
+ U_2: 0n,
28
+ R_base: 0n,
29
+ R_slope1: 0n,
30
+ R_slope2: 0n,
31
+ R_slope3: 0n,
32
+ version: 0,
33
+ isBorrowingMoreU2Forbidden: false
34
+ },
35
+ totalDebtLimit: 0n,
36
+ totalBorrowed: 0n,
37
+ ...overrides
38
+ };
39
+ }
40
+ function buildCreditManager(overrides = {}) {
41
+ const address = overrides.address ?? "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
42
+ const pool = overrides.pool ?? "0xcccccccccccccccccccccccccccccccccccccccc";
43
+ const underlyingToken = overrides.underlyingToken ?? mockUnderlyingToken;
44
+ const quotas = overrides.quotas ?? {};
45
+ return {
46
+ address,
47
+ name: overrides.name ?? "",
48
+ underlyingToken,
49
+ pool,
50
+ isPaused: overrides.isPaused ?? false,
51
+ collateralTokens: overrides.collateralTokens ?? [],
52
+ forbiddenTokens: overrides.forbiddenTokens ?? {},
53
+ supportedTokens: overrides.supportedTokens ?? {},
54
+ quotas,
55
+ liquidationThresholds: overrides.liquidationThresholds ?? {},
56
+ maxDebt: overrides.maxDebt ?? 0n,
57
+ minDebt: overrides.minDebt ?? 0n,
58
+ availableToBorrow: overrides.availableToBorrow ?? 0n,
59
+ totalDebt: overrides.totalDebt ?? 0n,
60
+ totalDebtLimit: overrides.totalDebtLimit ?? -1n,
61
+ feeInterest: overrides.feeInterest ?? 0,
62
+ baseBorrowRate: overrides.baseBorrowRate ?? 0,
63
+ maxEnabledTokensLength: overrides.maxEnabledTokensLength ?? 0,
64
+ chainId: overrides.chainId ?? 1,
65
+ isDegenMode: overrides.isDegenMode ?? false,
66
+ degenNFT: overrides.degenNFT ?? "0x0000000000000000000000000000000000000000",
67
+ isQuoted: overrides.isQuoted ?? (() => false),
68
+ isForbidden: overrides.isForbidden ?? (() => false),
69
+ ...overrides
70
+ };
71
+ }
72
+ function buildTokenData(address, symbol, decimals = 18, isPhantom = false) {
73
+ return new TokenData({
74
+ addr: address,
75
+ symbol,
76
+ name: symbol,
77
+ decimals,
78
+ isPhantom
79
+ });
80
+ }
81
+ const mockTokenData = {
82
+ [mockToken1]: buildTokenData(mockToken1, "T1"),
83
+ [mockToken2]: buildTokenData(mockToken2, "T2"),
84
+ [mockUnderlyingToken]: buildTokenData(mockUnderlyingToken, "UNDER")
85
+ };
86
+ const mockPrices = {
87
+ [mockToken1]: 300000000n,
88
+ [mockToken2]: 200000000n,
89
+ [mockUnderlyingToken]: 100000000n
90
+ };
91
+ export {
92
+ buildCreditManager,
93
+ buildPool,
94
+ buildQuota,
95
+ buildTokenData,
96
+ mockCMAddress,
97
+ mockNativeTokenAddress,
98
+ mockPrices,
99
+ mockToken1,
100
+ mockToken2,
101
+ mockTokenData,
102
+ mockUnderlyingToken,
103
+ mockWrappedNativeTokenAddress
104
+ };
@@ -0,0 +1,35 @@
1
+ import { PERCENTAGE_FACTOR } from "../../../sdk/constants/math.js";
2
+ function calculateBorrowRateFromUtilization(util, model, extraPrecision = 1n) {
3
+ const {
4
+ U_1: U_1_r,
5
+ U_2: U_2_r,
6
+ R_base: R_base_r,
7
+ R_slope1: R_slope1_r,
8
+ R_slope2: R_slope2_r,
9
+ R_slope3: R_slope3_r
10
+ } = model;
11
+ const U_1 = U_1_r * extraPrecision;
12
+ const U_2 = U_2_r * extraPrecision;
13
+ const R_base = R_base_r * extraPrecision;
14
+ const R_slope1 = R_slope1_r * extraPrecision;
15
+ const R_slope2 = R_slope2_r * extraPrecision;
16
+ const R_slope3 = R_slope3_r * extraPrecision;
17
+ const ONE = PERCENTAGE_FACTOR * extraPrecision;
18
+ if (util === 0n) {
19
+ return R_base;
20
+ }
21
+ if (util <= U_1) {
22
+ if (U_1 === 0n) return R_base;
23
+ const rate2 = R_base + R_slope1 * util / U_1;
24
+ return rate2;
25
+ }
26
+ if (util > U_1 && util <= U_2) {
27
+ const rate2 = R_base + R_slope1 + R_slope2 * (util - U_1) / (U_2 - U_1);
28
+ return rate2;
29
+ }
30
+ const rate = R_base + R_slope1 + R_slope2 + R_slope3 * (util - U_2) / (ONE - U_2);
31
+ return rate;
32
+ }
33
+ export {
34
+ calculateBorrowRateFromUtilization
35
+ };
@@ -0,0 +1,31 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { calculateBorrowRateFromUtilization } from "./calculate-borrow-rate-from-utilization.js";
3
+ describe("calculateBorrowRateFromUtilization", () => {
4
+ const model = {
5
+ U_1: 30n,
6
+ U_2: 80n,
7
+ R_base: 100n,
8
+ R_slope1: 200n,
9
+ R_slope2: 300n,
10
+ R_slope3: 400n,
11
+ interestModel: "0x1",
12
+ isBorrowingMoreU2Forbidden: false,
13
+ version: 3
14
+ };
15
+ it("returns base rate when util is zero", () => {
16
+ expect(calculateBorrowRateFromUtilization(0n, model)).toBe(100n);
17
+ });
18
+ it("uses first segment when util <= U1", () => {
19
+ expect(calculateBorrowRateFromUtilization(15n, model)).toBe(200n);
20
+ });
21
+ it("uses second segment when U1 < util <= U2", () => {
22
+ expect(calculateBorrowRateFromUtilization(50n, model)).toBe(420n);
23
+ });
24
+ it("uses third segment when util > U2", () => {
25
+ expect(calculateBorrowRateFromUtilization(90n, model)).toBe(600n);
26
+ });
27
+ it("supports extraPrecision scaling", () => {
28
+ const scaled = calculateBorrowRateFromUtilization(3000n, model, 100n);
29
+ expect(scaled).toBe(30000n);
30
+ });
31
+ });
@@ -0,0 +1,35 @@
1
+ import { PERCENTAGE_FACTOR_1KK } from "../../../sdk/constants/math.js";
2
+ import { PriceUtils } from "../../utils/price-math.js";
3
+ function calculateEarnings({
4
+ overallAPYBigInt,
5
+ targetAmount,
6
+ targetToken,
7
+ tokensList,
8
+ prices
9
+ }) {
10
+ if (overallAPYBigInt === void 0 || overallAPYBigInt === null)
11
+ return {
12
+ earnings: null,
13
+ earningsUSD: null
14
+ };
15
+ if (targetAmount === void 0 || targetAmount <= 0n)
16
+ return {
17
+ earnings: null,
18
+ earningsUSD: null
19
+ };
20
+ const earnings = overallAPYBigInt * targetAmount / PERCENTAGE_FACTOR_1KK;
21
+ const targetPrice = prices[targetToken] || 0n;
22
+ const targetDecimals = tokensList[targetToken]?.decimals || 18;
23
+ const earningsUSD = PriceUtils.calcTotalPrice(
24
+ targetPrice,
25
+ earnings,
26
+ targetDecimals
27
+ );
28
+ return {
29
+ earnings,
30
+ earningsUSD
31
+ };
32
+ }
33
+ export {
34
+ calculateEarnings
35
+ };
@@ -0,0 +1,65 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { PERCENTAGE_FACTOR_1KK } from "../../../sdk/constants/math.js";
3
+ import { toBN } from "../../../sdk/utils/formatter.js";
4
+ import {
5
+ mockPrices,
6
+ mockToken1,
7
+ mockTokenData
8
+ } from "../../test-utils/index.js";
9
+ import { calculateEarnings } from "./calculate-earnings.js";
10
+ describe("calculateEarnings", () => {
11
+ const targetToken = mockToken1;
12
+ const tokensList = mockTokenData;
13
+ const prices = mockPrices;
14
+ const targetAmount = toBN("100", 18);
15
+ const baseArgs = {
16
+ overallAPYBigInt: 1n,
17
+ targetAmount,
18
+ targetToken,
19
+ tokensList,
20
+ prices
21
+ };
22
+ it("returns null earnings when overallAPYBigInt is undefined", () => {
23
+ expect(
24
+ calculateEarnings({
25
+ ...baseArgs,
26
+ overallAPYBigInt: void 0
27
+ })
28
+ ).toEqual({ earnings: null, earningsUSD: null });
29
+ expect(
30
+ calculateEarnings({
31
+ ...baseArgs,
32
+ overallAPYBigInt: null
33
+ })
34
+ ).toEqual({ earnings: null, earningsUSD: null });
35
+ });
36
+ it("returns null earnings when targetAmount is missing or non-positive", () => {
37
+ expect(
38
+ calculateEarnings({
39
+ ...baseArgs,
40
+ targetAmount: void 0
41
+ })
42
+ ).toEqual({ earnings: null, earningsUSD: null });
43
+ expect(
44
+ calculateEarnings({
45
+ ...baseArgs,
46
+ targetAmount: 0n
47
+ })
48
+ ).toEqual({ earnings: null, earningsUSD: null });
49
+ });
50
+ it("calculates earnings and earningsUSD", () => {
51
+ const overallAPYBigInt = 2n * BigInt(PERCENTAGE_FACTOR_1KK);
52
+ const result = calculateEarnings({
53
+ ...baseArgs,
54
+ overallAPYBigInt,
55
+ targetAmount,
56
+ targetToken,
57
+ tokensList,
58
+ prices
59
+ });
60
+ expect(result).toEqual({
61
+ earnings: 200000000000000000000n,
62
+ earningsUSD: 600000000000000000000n
63
+ });
64
+ });
65
+ });
@@ -0,0 +1,34 @@
1
+ import {
2
+ PERCENTAGE_DECIMALS,
3
+ PERCENTAGE_FACTOR
4
+ } from "../../../sdk/constants/math.js";
5
+ import { BigIntMath } from "../../utils/bigint-math.js";
6
+ import { calculateBorrowRateFromUtilization } from "./calculate-borrow-rate-from-utilization.js";
7
+ function calculateSafeBorrowRate({
8
+ pool,
9
+ creditManager,
10
+ expectedLiquidityChange = 0n,
11
+ availableLiquidityChange = 0n
12
+ }) {
13
+ const expectedLiquidity = pool.expectedLiquidity + expectedLiquidityChange;
14
+ const availableLiquidity = pool.availableLiquidity + availableLiquidityChange;
15
+ const borrowed = BigIntMath.max(expectedLiquidity - availableLiquidity, 0n);
16
+ const EXTRA_PRECISION = 100n;
17
+ const ONE = PERCENTAGE_FACTOR * EXTRA_PRECISION;
18
+ const utilization = BigIntMath.min(
19
+ expectedLiquidity > 0 ? borrowed * ONE / expectedLiquidity : 0n,
20
+ ONE
21
+ );
22
+ const rate = calculateBorrowRateFromUtilization(
23
+ utilization,
24
+ pool.interestModel,
25
+ EXTRA_PRECISION
26
+ );
27
+ const rateWithDaoFee = Number(
28
+ rate * (BigInt(creditManager.feeInterest) + PERCENTAGE_FACTOR) / PERCENTAGE_DECIMALS / EXTRA_PRECISION
29
+ );
30
+ return rateWithDaoFee;
31
+ }
32
+ export {
33
+ calculateSafeBorrowRate
34
+ };
@@ -0,0 +1,38 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { buildCreditManager, buildPool } from "../../test-utils/index.js";
3
+ import { calculateSafeBorrowRate } from "./calculate-safe-borrow-rate.js";
4
+ describe("calculateSafeBorrowRate", () => {
5
+ const baseModel = {
6
+ U_1: 50n,
7
+ U_2: 80n,
8
+ R_base: 100n,
9
+ R_slope1: 0n,
10
+ R_slope2: 0n,
11
+ R_slope3: 0n,
12
+ interestModel: "0x1",
13
+ isBorrowingMoreU2Forbidden: false,
14
+ version: 3
15
+ };
16
+ const poolBase = buildPool({
17
+ expectedLiquidity: 1000n,
18
+ availableLiquidity: 1000n,
19
+ // util = 0
20
+ interestModel: baseModel
21
+ });
22
+ it("returns rate with no fee at zero utilization", () => {
23
+ const creditManager = buildCreditManager({ feeInterest: 0 });
24
+ const rate = calculateSafeBorrowRate({
25
+ pool: poolBase,
26
+ creditManager
27
+ });
28
+ expect(rate).toBe(1e4);
29
+ });
30
+ it("applies feeInterest scaling", () => {
31
+ const creditManager = buildCreditManager({ feeInterest: 200 });
32
+ const rate = calculateSafeBorrowRate({
33
+ pool: poolBase,
34
+ creditManager
35
+ });
36
+ expect(rate).toBe(10200);
37
+ });
38
+ });
@@ -0,0 +1,16 @@
1
+ import {
2
+ calculateSafeBorrowRate
3
+ } from "./calculate-safe-borrow-rate.js";
4
+ const getSafeBaseBorrowRate = (props) => {
5
+ const { onError, ...rest } = props;
6
+ try {
7
+ const rate = calculateSafeBorrowRate(rest);
8
+ return rate;
9
+ } catch (e) {
10
+ onError?.(e);
11
+ return void 0;
12
+ }
13
+ };
14
+ export {
15
+ getSafeBaseBorrowRate
16
+ };
@@ -0,0 +1,8 @@
1
+ const EMPTY_OBJECT = {};
2
+ const EMPTY_ARRAY = [];
3
+ const EMPTY_ADDRESS = "";
4
+ export {
5
+ EMPTY_ADDRESS,
6
+ EMPTY_ARRAY,
7
+ EMPTY_OBJECT
8
+ };
@@ -0,0 +1,6 @@
1
+ function getDefaultAsset(token) {
2
+ return { token };
3
+ }
4
+ export {
5
+ getDefaultAsset
6
+ };
@@ -0,0 +1,38 @@
1
+ import { isCollateralToken } from "../tokens/is-collateral-token.js";
2
+ function getCMAllowedCollaterals({
3
+ creditManager,
4
+ tokensList,
5
+ zeroDebt = false,
6
+ delayedPhantoms,
7
+ extraCollaterals,
8
+ nativeTokenAddress,
9
+ wrappedNativeTokenAddress
10
+ }) {
11
+ const tokens = creditManager?.collateralTokens;
12
+ if (!tokens) return {};
13
+ const collateralRecord = tokens.reduce(
14
+ (acc, address) => {
15
+ const allowed = isCollateralToken({
16
+ address,
17
+ tokensList,
18
+ creditManager,
19
+ zeroDebt,
20
+ delayedPhantoms,
21
+ extraCollateralConfigs: extraCollaterals?.list?.[address],
22
+ prices: extraCollaterals?.prices
23
+ });
24
+ if (allowed) {
25
+ acc[address] = address;
26
+ }
27
+ return acc;
28
+ },
29
+ {}
30
+ );
31
+ if (!creditManager.isPaused && wrappedNativeTokenAddress && collateralRecord[wrappedNativeTokenAddress] && nativeTokenAddress) {
32
+ collateralRecord[nativeTokenAddress] = nativeTokenAddress;
33
+ }
34
+ return collateralRecord;
35
+ }
36
+ export {
37
+ getCMAllowedCollaterals
38
+ };
@@ -0,0 +1,115 @@
1
+ import { afterEach, describe, expect, it, vi } from "vitest";
2
+ import { TokenData } from "../../../charts/token-data.js";
3
+ import {
4
+ buildCreditManager,
5
+ mockNativeTokenAddress,
6
+ mockToken1,
7
+ mockToken2,
8
+ mockUnderlyingToken,
9
+ mockWrappedNativeTokenAddress
10
+ } from "../../../test-utils/index.js";
11
+ import { isCollateralToken } from "../tokens/is-collateral-token.js";
12
+ import { getCMAllowedCollaterals } from "./get-cm-allowed-collaterals.js";
13
+ vi.mock("./is-collateral-token");
14
+ const mockIsCollateralToken = vi.mocked(isCollateralToken);
15
+ describe("getCMAllowedCollaterals", () => {
16
+ const underlying = mockUnderlyingToken;
17
+ const allowed = mockToken1;
18
+ const rejected = mockToken2;
19
+ const tokensList = {
20
+ [underlying]: new TokenData({
21
+ addr: underlying,
22
+ symbol: "DAI",
23
+ name: "Underlying",
24
+ decimals: 18,
25
+ isPhantom: false
26
+ }),
27
+ [allowed]: new TokenData({
28
+ addr: allowed,
29
+ symbol: "USDC",
30
+ name: "Allowed",
31
+ decimals: 6,
32
+ isPhantom: false
33
+ }),
34
+ [rejected]: new TokenData({
35
+ addr: rejected,
36
+ symbol: "WBTC",
37
+ name: "Rejected",
38
+ decimals: 8,
39
+ isPhantom: false
40
+ }),
41
+ [mockWrappedNativeTokenAddress]: new TokenData({
42
+ addr: mockWrappedNativeTokenAddress,
43
+ symbol: "WETH",
44
+ name: "WrappedNative",
45
+ decimals: 18,
46
+ isPhantom: false
47
+ })
48
+ };
49
+ const baseCm = buildCreditManager({
50
+ address: "0x0000000000000000000000000000000000000CAA",
51
+ underlyingToken: underlying,
52
+ collateralTokens: [
53
+ underlying,
54
+ allowed,
55
+ rejected,
56
+ mockWrappedNativeTokenAddress
57
+ ]
58
+ });
59
+ afterEach(() => {
60
+ vi.restoreAllMocks();
61
+ vi.clearAllMocks();
62
+ });
63
+ it("returns empty record when credit manager missing", () => {
64
+ const result = getCMAllowedCollaterals({
65
+ creditManager: void 0,
66
+ tokensList,
67
+ delayedPhantoms: {},
68
+ nativeTokenAddress: mockNativeTokenAddress,
69
+ wrappedNativeTokenAddress: mockWrappedNativeTokenAddress,
70
+ extraCollaterals: void 0
71
+ });
72
+ expect(result).toEqual({});
73
+ });
74
+ it("keeps allowed collaterals and mirrors wrapped native to native token", () => {
75
+ mockIsCollateralToken.mockImplementation(
76
+ ({ address }) => address !== rejected
77
+ );
78
+ const result = getCMAllowedCollaterals({
79
+ creditManager: baseCm,
80
+ tokensList,
81
+ delayedPhantoms: {},
82
+ nativeTokenAddress: mockNativeTokenAddress,
83
+ wrappedNativeTokenAddress: mockWrappedNativeTokenAddress,
84
+ extraCollaterals: void 0
85
+ });
86
+ expect(result).toEqual({
87
+ [underlying]: underlying,
88
+ [allowed]: allowed,
89
+ [mockWrappedNativeTokenAddress]: mockWrappedNativeTokenAddress,
90
+ [mockNativeTokenAddress]: mockNativeTokenAddress
91
+ });
92
+ });
93
+ it("does not mirror wrapped native when credit manager is paused", () => {
94
+ mockIsCollateralToken.mockReturnValue(true);
95
+ const pausedCm = buildCreditManager({
96
+ ...baseCm,
97
+ isPaused: true
98
+ });
99
+ const result = getCMAllowedCollaterals({
100
+ creditManager: pausedCm,
101
+ tokensList,
102
+ delayedPhantoms: {},
103
+ nativeTokenAddress: mockNativeTokenAddress,
104
+ wrappedNativeTokenAddress: mockWrappedNativeTokenAddress,
105
+ extraCollaterals: void 0
106
+ });
107
+ expect(result).toEqual({
108
+ [underlying]: underlying,
109
+ [allowed]: allowed,
110
+ [rejected]: rejected,
111
+ [mockWrappedNativeTokenAddress]: mockWrappedNativeTokenAddress
112
+ });
113
+ expect(result[mockNativeTokenAddress]).toBeUndefined();
114
+ });
115
+ });
@@ -0,0 +1,51 @@
1
+ import { sortBalances } from "../../creditAccount/sort.js";
2
+ import { wrapTokenAddress } from "../tokens/wrap-token-address.js";
3
+ function getWalletBalancesAllowedOnCM({
4
+ walletBalances,
5
+ collateralRecord,
6
+ nativeTokenAddress,
7
+ wrappedNativeTokenAddress,
8
+ prices,
9
+ tokensList,
10
+ isPaused = false
11
+ }) {
12
+ const walletBalancesSorted = sortBalances(
13
+ walletBalances || {},
14
+ prices,
15
+ tokensList
16
+ );
17
+ const { list, record } = walletBalancesSorted.reduce(
18
+ (acc, [token, balance]) => {
19
+ if (isPaused && token === nativeTokenAddress) return acc;
20
+ const wrappedAddress = wrapTokenAddress(
21
+ token,
22
+ nativeTokenAddress,
23
+ wrappedNativeTokenAddress
24
+ );
25
+ if (collateralRecord[wrappedAddress]) {
26
+ const asset = {
27
+ token,
28
+ balance
29
+ };
30
+ acc.list.push(asset);
31
+ acc.record[wrappedAddress] = asset;
32
+ }
33
+ return acc;
34
+ },
35
+ { list: [], record: {} }
36
+ );
37
+ const collateralList = Object.values(collateralRecord);
38
+ const missingAssets = collateralList.filter(
39
+ (token) => isPaused ? token !== nativeTokenAddress && !record[token] : !record[token]
40
+ ).map(
41
+ (token) => ({
42
+ token,
43
+ balance: 0n
44
+ })
45
+ );
46
+ const r = [...list, ...missingAssets];
47
+ return r;
48
+ }
49
+ export {
50
+ getWalletBalancesAllowedOnCM
51
+ };
@@ -0,0 +1,96 @@
1
+ import { afterEach, describe, expect, it, vi } from "vitest";
2
+ import { TokenData } from "../../../charts/token-data.js";
3
+ import {
4
+ mockNativeTokenAddress,
5
+ mockToken1,
6
+ mockWrappedNativeTokenAddress
7
+ } from "../../../test-utils/index.js";
8
+ import { sortBalances } from "../../creditAccount/sort.js";
9
+ import { getWalletBalancesAllowedOnCM } from "./get-wallet-balances-allowed-on-cm.js";
10
+ vi.mock("../../utils/creditAccount/sort.js", async () => {
11
+ const actual = await vi.importActual(
12
+ "../../utils/creditAccount/sort.js"
13
+ );
14
+ return {
15
+ ...actual,
16
+ sortBalances: vi.fn()
17
+ };
18
+ });
19
+ const mockSortBalances = vi.mocked(sortBalances);
20
+ describe("getWalletBalancesAllowedOnCM", () => {
21
+ const allowed = mockToken1;
22
+ const prices = {};
23
+ const tokensList = {
24
+ [mockNativeTokenAddress]: new TokenData({
25
+ addr: mockNativeTokenAddress,
26
+ symbol: "ETH",
27
+ name: "Native",
28
+ decimals: 18,
29
+ isPhantom: false
30
+ }),
31
+ [mockWrappedNativeTokenAddress]: new TokenData({
32
+ addr: mockWrappedNativeTokenAddress,
33
+ symbol: "WETH",
34
+ name: "Wrapped",
35
+ decimals: 18,
36
+ isPhantom: false
37
+ }),
38
+ [allowed]: new TokenData({
39
+ addr: allowed,
40
+ symbol: "DAI",
41
+ name: "Allowed",
42
+ decimals: 18,
43
+ isPhantom: false
44
+ })
45
+ };
46
+ afterEach(() => {
47
+ vi.restoreAllMocks();
48
+ vi.clearAllMocks();
49
+ });
50
+ it("wraps native token when allowed and keeps sorted balances", () => {
51
+ const collateralRecord = {
52
+ [mockWrappedNativeTokenAddress]: mockWrappedNativeTokenAddress,
53
+ [allowed]: allowed
54
+ };
55
+ mockSortBalances.mockReturnValue([
56
+ [mockNativeTokenAddress, 2n],
57
+ [allowed, 1n]
58
+ ]);
59
+ const result = getWalletBalancesAllowedOnCM({
60
+ walletBalances: {
61
+ [mockNativeTokenAddress]: 2n,
62
+ [allowed]: 1n
63
+ },
64
+ collateralRecord,
65
+ nativeTokenAddress: mockNativeTokenAddress,
66
+ wrappedNativeTokenAddress: mockWrappedNativeTokenAddress,
67
+ prices,
68
+ tokensList
69
+ });
70
+ expect(result).toEqual([
71
+ { token: mockNativeTokenAddress, balance: 2n },
72
+ { token: allowed, balance: 1n }
73
+ ]);
74
+ });
75
+ it("skips native token when paused and fills missing collaterals with zero", () => {
76
+ const collateralRecord = {
77
+ [mockWrappedNativeTokenAddress]: mockWrappedNativeTokenAddress,
78
+ [allowed]: allowed,
79
+ [mockNativeTokenAddress]: mockNativeTokenAddress
80
+ };
81
+ mockSortBalances.mockReturnValue([[mockNativeTokenAddress, 5n]]);
82
+ const result = getWalletBalancesAllowedOnCM({
83
+ walletBalances: { [mockNativeTokenAddress]: 5n },
84
+ collateralRecord,
85
+ nativeTokenAddress: mockNativeTokenAddress,
86
+ wrappedNativeTokenAddress: mockWrappedNativeTokenAddress,
87
+ prices,
88
+ tokensList,
89
+ isPaused: true
90
+ });
91
+ expect(result).toEqual([
92
+ { token: mockWrappedNativeTokenAddress, balance: 0n },
93
+ { token: allowed, balance: 0n }
94
+ ]);
95
+ });
96
+ });