@gearbox-protocol/sdk 16.0.0-next.18 → 16.0.0-next.19

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 (186) hide show
  1. package/dist/cjs/common-utils/index.js +3 -21
  2. package/dist/cjs/common-utils/test-utils/index.js +4 -3
  3. package/dist/cjs/common-utils/utils/index.js +3 -22
  4. package/dist/cjs/common-utils/utils/strategies/index.js +3 -0
  5. package/dist/cjs/common-utils/utils/strategies/strategy-info/cm-availability-condition.js +5 -5
  6. package/dist/cjs/common-utils/utils/strategies/strategy-info/credit-manager-issues.js +135 -0
  7. package/dist/cjs/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.js +12 -23
  8. package/dist/cjs/common-utils/utils/strategies/strategy-info/index.js +3 -0
  9. package/dist/cjs/onchain/accounts/index.js +2 -3
  10. package/dist/cjs/onchain/accounts/intents/guards.js +55 -50
  11. package/dist/cjs/onchain/accounts/intents/index.js +7 -8
  12. package/dist/cjs/onchain/accounts/intents/math.js +15 -22
  13. package/dist/cjs/onchain/accounts/intents/open-strategy.js +5 -5
  14. package/dist/cjs/onchain/accounts/intents/plan.js +27 -41
  15. package/dist/cjs/onchain/accounts/intents/realize.js +14 -21
  16. package/dist/cjs/onchain/accounts/intents/tail.js +2 -2
  17. package/dist/cjs/onchain/accounts/intents/testing/sdk-mock.js +1 -0
  18. package/dist/cjs/onchain/accounts/intents/view.js +1 -0
  19. package/dist/cjs/onchain/constants/index.js +1 -0
  20. package/dist/cjs/onchain/constants/math.js +11 -0
  21. package/dist/cjs/onchain/index.js +32 -3
  22. package/dist/cjs/onchain/validation/checks.js +250 -0
  23. package/dist/cjs/onchain/validation/index.js +29 -0
  24. package/dist/cjs/onchain/{accounts/intents → validation}/refusal.js +12 -1
  25. package/dist/cjs/onchain/validation/token.js +29 -0
  26. package/dist/cjs/preview/index.js +10 -0
  27. package/dist/cjs/preview/preview/buildDelayedPreview.js +1 -0
  28. package/dist/cjs/preview/preview/previewAdjustCreditAccount.js +1 -0
  29. package/dist/cjs/preview/preview/previewOpenCreditAccount.js +1 -0
  30. package/dist/cjs/preview/validate/checkOperation.js +173 -0
  31. package/dist/cjs/preview/validate/checkSimulation.js +52 -0
  32. package/dist/cjs/preview/validate/index.js +6 -0
  33. package/dist/cjs/sdk/index.js +4 -0
  34. package/dist/cjs/sdk/prepare/PrepareApi.js +17 -13
  35. package/dist/cjs/sdk/prepare/index.js +4 -0
  36. package/dist/cjs/sdk/prepare/types.js +4 -0
  37. package/dist/esm/common-utils/index.js +2 -11
  38. package/dist/esm/common-utils/test-utils/index.js +4 -3
  39. package/dist/esm/common-utils/utils/index.js +2 -12
  40. package/dist/esm/common-utils/utils/strategies/index.js +2 -1
  41. package/dist/esm/common-utils/utils/strategies/strategy-info/cm-availability-condition.js +5 -5
  42. package/dist/esm/common-utils/utils/strategies/strategy-info/credit-manager-issues.js +133 -0
  43. package/dist/esm/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.js +12 -23
  44. package/dist/esm/common-utils/utils/strategies/strategy-info/index.js +2 -1
  45. package/dist/esm/dev/AccountOpener.js +1 -1
  46. package/dist/esm/dev/withdrawalUtils.js +1 -1
  47. package/dist/esm/onchain/accounts/CreditAccountsServiceV310.js +2 -2
  48. package/dist/esm/onchain/accounts/index.js +2 -2
  49. package/dist/esm/onchain/accounts/intents/guards.js +55 -50
  50. package/dist/esm/onchain/accounts/intents/index.js +5 -5
  51. package/dist/esm/onchain/accounts/intents/math.js +14 -21
  52. package/dist/esm/onchain/accounts/intents/open-strategy.js +4 -4
  53. package/dist/esm/onchain/accounts/intents/plan.js +15 -29
  54. package/dist/esm/onchain/accounts/intents/realize.js +12 -19
  55. package/dist/esm/onchain/accounts/intents/tail.js +1 -1
  56. package/dist/esm/onchain/accounts/intents/testing/sdk-mock.js +1 -0
  57. package/dist/esm/onchain/accounts/intents/view.js +1 -0
  58. package/dist/esm/onchain/accounts/liquidations/LiquidationsService.js +1 -1
  59. package/dist/esm/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
  60. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
  61. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
  62. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
  63. package/dist/esm/onchain/base/TokensMeta.js +3 -3
  64. package/dist/esm/onchain/chain/detectNetwork.js +1 -1
  65. package/dist/esm/onchain/constants/index.js +2 -2
  66. package/dist/esm/onchain/constants/math.js +11 -1
  67. package/dist/esm/onchain/core/createAddressProvider.js +1 -1
  68. package/dist/esm/onchain/index.js +7 -3
  69. package/dist/esm/onchain/market/adapters/contracts/AccountMigratorAdapterContract.js +1 -1
  70. package/dist/esm/onchain/market/adapters/contracts/ERC4626AdapterContract.js +1 -1
  71. package/dist/esm/onchain/market/credit/CreditFacadeV310BaseContract.js +1 -1
  72. package/dist/esm/onchain/market/pool/PoolV310Contract.js +1 -1
  73. package/dist/esm/onchain/market/zapper/IETHZapperContract.js +1 -1
  74. package/dist/esm/onchain/market/zapper/ZapperContract.js +1 -1
  75. package/dist/esm/onchain/pools/PoolService.js +1 -1
  76. package/dist/esm/onchain/utils/viem/simulateWithPriceUpdates.js +1 -1
  77. package/dist/esm/onchain/validation/checks.js +230 -0
  78. package/dist/esm/onchain/validation/index.js +4 -0
  79. package/dist/esm/onchain/{accounts/intents → validation}/refusal.js +12 -2
  80. package/dist/esm/onchain/validation/token.js +27 -0
  81. package/dist/esm/preview/index.js +5 -1
  82. package/dist/esm/preview/preview/buildDelayedPreview.js +1 -0
  83. package/dist/esm/preview/preview/previewAdjustCreditAccount.js +1 -0
  84. package/dist/esm/preview/preview/previewOpenCreditAccount.js +1 -0
  85. package/dist/esm/preview/simulate/simulatePoolOperation.js +1 -1
  86. package/dist/esm/preview/trace/extractTransfers.js +1 -1
  87. package/dist/esm/preview/validate/checkOperation.js +171 -0
  88. package/dist/esm/preview/validate/checkSimulation.js +51 -0
  89. package/dist/esm/preview/validate/index.js +3 -0
  90. package/dist/esm/sdk/index.js +2 -1
  91. package/dist/esm/sdk/prepare/PrepareApi.js +15 -11
  92. package/dist/esm/sdk/prepare/index.js +2 -1
  93. package/dist/esm/sdk/prepare/types.js +2 -1
  94. package/dist/types/common-utils/index.d.ts +2 -12
  95. package/dist/types/common-utils/utils/index.d.ts +2 -13
  96. package/dist/types/common-utils/utils/strategies/index.d.ts +2 -1
  97. package/dist/types/common-utils/utils/strategies/strategy-info/credit-manager-issues.d.ts +34 -0
  98. package/dist/types/common-utils/utils/strategies/strategy-info/index.d.ts +2 -1
  99. package/dist/types/model/previews.d.ts +22 -0
  100. package/dist/types/onchain/accounts/index.d.ts +2 -2
  101. package/dist/types/onchain/accounts/intents/guards.d.ts +8 -4
  102. package/dist/types/onchain/accounts/intents/index.d.ts +4 -3
  103. package/dist/types/onchain/accounts/intents/math.d.ts +2 -1
  104. package/dist/types/onchain/accounts/intents/plan.d.ts +3 -0
  105. package/dist/types/onchain/accounts/intents/types.d.ts +7 -1
  106. package/dist/types/onchain/constants/index.d.ts +2 -2
  107. package/dist/types/onchain/constants/math.d.ts +9 -1
  108. package/dist/types/onchain/index.d.ts +7 -3
  109. package/dist/types/onchain/validation/checks.d.ts +167 -0
  110. package/dist/types/onchain/validation/index.d.ts +4 -0
  111. package/dist/types/onchain/{accounts/intents → validation}/refusal.d.ts +100 -31
  112. package/dist/types/onchain/validation/token.d.ts +17 -0
  113. package/dist/types/preview/index.d.ts +5 -1
  114. package/dist/types/preview/validate/checkOperation.d.ts +46 -0
  115. package/dist/types/preview/validate/checkSimulation.d.ts +34 -0
  116. package/dist/types/preview/validate/index.d.ts +3 -0
  117. package/dist/types/sdk/index.d.ts +2 -2
  118. package/dist/types/sdk/prepare/index.d.ts +2 -2
  119. package/dist/types/sdk/prepare/types.d.ts +2 -2
  120. package/package.json +1 -1
  121. package/dist/cjs/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.spec.js +0 -267
  122. package/dist/cjs/common-utils/utils/validation/index.js +0 -23
  123. package/dist/cjs/common-utils/utils/validation/is-zero-balance.js +0 -7
  124. package/dist/cjs/common-utils/utils/validation/validate-balance.js +0 -22
  125. package/dist/cjs/common-utils/utils/validation/validate-balance.spec.js +0 -54
  126. package/dist/cjs/common-utils/utils/validation/validate-balances.js +0 -17
  127. package/dist/cjs/common-utils/utils/validation/validate-balances.spec.js +0 -45
  128. package/dist/cjs/common-utils/utils/validation/validate-credit-manager.js +0 -8
  129. package/dist/cjs/common-utils/utils/validation/validate-credit-manager.spec.js +0 -36
  130. package/dist/cjs/common-utils/utils/validation/validate-hf.js +0 -10
  131. package/dist/cjs/common-utils/utils/validation/validate-hf.spec.js +0 -26
  132. package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-quota-status.js +0 -14
  133. package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-quota-status.spec.js +0 -29
  134. package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-status.js +0 -37
  135. package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-status.spec.js +0 -98
  136. package/dist/cjs/common-utils/utils/validation/validate-open-account.js +0 -18
  137. package/dist/cjs/common-utils/utils/validation/validate-open-account.spec.js +0 -56
  138. package/dist/cjs/common-utils/utils/validation/validate-quota.js +0 -23
  139. package/dist/cjs/common-utils/utils/validation/validate-quota.spec.js +0 -88
  140. package/dist/cjs/common-utils/utils/validation/validate-token-to-obtain.js +0 -18
  141. package/dist/cjs/common-utils/utils/validation/validate-token-to-obtain.spec.js +0 -36
  142. package/dist/cjs/common-utils/utils/validation/validation-types.js +0 -1
  143. package/dist/esm/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.spec.js +0 -264
  144. package/dist/esm/common-utils/utils/validation/index.js +0 -12
  145. package/dist/esm/common-utils/utils/validation/is-zero-balance.js +0 -6
  146. package/dist/esm/common-utils/utils/validation/validate-balance.js +0 -21
  147. package/dist/esm/common-utils/utils/validation/validate-balance.spec.js +0 -54
  148. package/dist/esm/common-utils/utils/validation/validate-balances.js +0 -16
  149. package/dist/esm/common-utils/utils/validation/validate-balances.spec.js +0 -45
  150. package/dist/esm/common-utils/utils/validation/validate-credit-manager.js +0 -7
  151. package/dist/esm/common-utils/utils/validation/validate-credit-manager.spec.js +0 -36
  152. package/dist/esm/common-utils/utils/validation/validate-hf.js +0 -8
  153. package/dist/esm/common-utils/utils/validation/validate-hf.spec.js +0 -26
  154. package/dist/esm/common-utils/utils/validation/validate-open-account-pool-quota-status.js +0 -13
  155. package/dist/esm/common-utils/utils/validation/validate-open-account-pool-quota-status.spec.js +0 -29
  156. package/dist/esm/common-utils/utils/validation/validate-open-account-pool-status.js +0 -36
  157. package/dist/esm/common-utils/utils/validation/validate-open-account-pool-status.spec.js +0 -98
  158. package/dist/esm/common-utils/utils/validation/validate-open-account.js +0 -17
  159. package/dist/esm/common-utils/utils/validation/validate-open-account.spec.js +0 -56
  160. package/dist/esm/common-utils/utils/validation/validate-quota.js +0 -22
  161. package/dist/esm/common-utils/utils/validation/validate-quota.spec.js +0 -88
  162. package/dist/esm/common-utils/utils/validation/validate-token-to-obtain.js +0 -17
  163. package/dist/esm/common-utils/utils/validation/validate-token-to-obtain.spec.js +0 -36
  164. package/dist/esm/common-utils/utils/validation/validation-types.js +0 -1
  165. package/dist/types/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.spec.d.ts +0 -1
  166. package/dist/types/common-utils/utils/validation/index.d.ts +0 -12
  167. package/dist/types/common-utils/utils/validation/is-zero-balance.d.ts +0 -4
  168. package/dist/types/common-utils/utils/validation/validate-balance.d.ts +0 -25
  169. package/dist/types/common-utils/utils/validation/validate-balance.spec.d.ts +0 -1
  170. package/dist/types/common-utils/utils/validation/validate-balances.d.ts +0 -13
  171. package/dist/types/common-utils/utils/validation/validate-balances.spec.d.ts +0 -1
  172. package/dist/types/common-utils/utils/validation/validate-credit-manager.d.ts +0 -13
  173. package/dist/types/common-utils/utils/validation/validate-credit-manager.spec.d.ts +0 -1
  174. package/dist/types/common-utils/utils/validation/validate-hf.d.ts +0 -12
  175. package/dist/types/common-utils/utils/validation/validate-hf.spec.d.ts +0 -1
  176. package/dist/types/common-utils/utils/validation/validate-open-account-pool-quota-status.d.ts +0 -10
  177. package/dist/types/common-utils/utils/validation/validate-open-account-pool-quota-status.spec.d.ts +0 -1
  178. package/dist/types/common-utils/utils/validation/validate-open-account-pool-status.d.ts +0 -26
  179. package/dist/types/common-utils/utils/validation/validate-open-account-pool-status.spec.d.ts +0 -1
  180. package/dist/types/common-utils/utils/validation/validate-open-account.d.ts +0 -25
  181. package/dist/types/common-utils/utils/validation/validate-open-account.spec.d.ts +0 -1
  182. package/dist/types/common-utils/utils/validation/validate-quota.d.ts +0 -24
  183. package/dist/types/common-utils/utils/validation/validate-quota.spec.d.ts +0 -1
  184. package/dist/types/common-utils/utils/validation/validate-token-to-obtain.d.ts +0 -17
  185. package/dist/types/common-utils/utils/validation/validate-token-to-obtain.spec.d.ts +0 -1
  186. package/dist/types/common-utils/utils/validation/validation-types.d.ts +0 -10
@@ -1,98 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_common_utils_utils_validation_validate_open_account_pool_status = require("./validate-open-account-pool-status.js");
3
- const require_common_utils_test_utils_index = require("../../test-utils/index.js");
4
- let vitest = require("vitest");
5
- //#region src/common-utils/utils/validation/validate-open-account-pool-status.spec.ts
6
- const mockCreditManager = require_common_utils_test_utils_index.buildCreditManager({
7
- minDebt: 1000n,
8
- maxDebt: 1000000n,
9
- totalDebtLimit: 5000000n,
10
- totalDebt: 2000000n,
11
- availableToBorrow: 3000000n,
12
- quotas: { [require_common_utils_test_utils_index.mockToken1]: require_common_utils_test_utils_index.buildQuota({
13
- token: require_common_utils_test_utils_index.mockToken1,
14
- limit: 1000000n,
15
- totalQuoted: 500000n,
16
- rate: 0n
17
- }) }
18
- });
19
- const mockPool = require_common_utils_test_utils_index.buildPool({
20
- totalDebtLimit: 10000000n,
21
- totalBorrowed: 5000000n
22
- });
23
- (0, vitest.describe)("validateOpenAccountPoolStatus", () => {
24
- (0, vitest.it)("returns null when all conditions are met", () => {
25
- const result = require_common_utils_utils_validation_validate_open_account_pool_status.validateOpenAccountPoolStatus({
26
- debt: 50000n,
27
- creditManager: mockCreditManager,
28
- pool: mockPool,
29
- targetToken: require_common_utils_test_utils_index.mockToken1
30
- });
31
- (0, vitest.expect)(result).toBeNull();
32
- });
33
- (0, vitest.it)("returns error when debt exceeds debt limit", () => {
34
- const result = require_common_utils_utils_validation_validate_open_account_pool_status.validateOpenAccountPoolStatus({
35
- debt: 4000000n,
36
- creditManager: mockCreditManager,
37
- pool: mockPool,
38
- targetToken: require_common_utils_test_utils_index.mockToken1
39
- });
40
- (0, vitest.expect)(result).toEqual({
41
- message: "insufficientDebtLimit",
42
- amount: 3000000n,
43
- solutionAmount: 3000000n
44
- });
45
- });
46
- (0, vitest.it)("returns error when debt exceeds pool debt limit", () => {
47
- const result = require_common_utils_utils_validation_validate_open_account_pool_status.validateOpenAccountPoolStatus({
48
- debt: 6000000n,
49
- creditManager: require_common_utils_test_utils_index.buildCreditManager({
50
- ...mockCreditManager,
51
- totalDebtLimit: -1n
52
- }),
53
- pool: mockPool,
54
- targetToken: require_common_utils_test_utils_index.mockToken1
55
- });
56
- (0, vitest.expect)(result).toEqual({
57
- message: "insufficientPoolDebtLimit",
58
- amount: 5000000n
59
- });
60
- });
61
- (0, vitest.it)("returns error when debt exceeds available liquidity", () => {
62
- const result = require_common_utils_utils_validation_validate_open_account_pool_status.validateOpenAccountPoolStatus({
63
- debt: 4000000n,
64
- creditManager: require_common_utils_test_utils_index.buildCreditManager({
65
- ...mockCreditManager,
66
- totalDebtLimit: -1n
67
- }),
68
- pool: require_common_utils_test_utils_index.buildPool({ totalDebtLimit: -1n }),
69
- targetToken: require_common_utils_test_utils_index.mockToken1
70
- });
71
- (0, vitest.expect)(result).toEqual({
72
- message: "insufficientPoolLiquidity",
73
- amount: 3000000n
74
- });
75
- });
76
- (0, vitest.it)("returns error when quota is insufficient", () => {
77
- const result = require_common_utils_utils_validation_validate_open_account_pool_status.validateOpenAccountPoolStatus({
78
- debt: 600000n,
79
- creditManager: mockCreditManager,
80
- pool: mockPool,
81
- targetToken: require_common_utils_test_utils_index.mockToken1
82
- });
83
- (0, vitest.expect)(result).toEqual({
84
- message: "insufficientQuota",
85
- token: require_common_utils_test_utils_index.mockToken1
86
- });
87
- });
88
- (0, vitest.it)("returns null when targetToken is null", () => {
89
- const result = require_common_utils_utils_validation_validate_open_account_pool_status.validateOpenAccountPoolStatus({
90
- debt: 50000n,
91
- creditManager: mockCreditManager,
92
- pool: mockPool,
93
- targetToken: null
94
- });
95
- (0, vitest.expect)(result).toBeNull();
96
- });
97
- });
98
- //#endregion
@@ -1,18 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_common_utils_utils_validation_validate_quota = require("./validate-quota.js");
3
- //#region src/common-utils/utils/validation/validate-open-account.ts
4
- function validateOpenAccount(props) {
5
- const { debt, creditManager, loading } = props;
6
- if (loading) return { message: "loading" };
7
- if (debt < creditManager.minDebt) return {
8
- message: "amountLessMin",
9
- amount: creditManager.minDebt
10
- };
11
- if (debt > creditManager.maxDebt) return {
12
- message: "debtGreaterMax",
13
- amount: creditManager.maxDebt
14
- };
15
- return require_common_utils_utils_validation_validate_quota.validateQuota(props);
16
- }
17
- //#endregion
18
- exports.validateOpenAccount = validateOpenAccount;
@@ -1,56 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_common_utils_utils_validation_validate_open_account = require("./validate-open-account.js");
3
- const require_common_utils_test_utils_index = require("../../test-utils/index.js");
4
- let vitest = require("vitest");
5
- //#region src/common-utils/utils/validation/validate-open-account.spec.ts
6
- const mockCreditManager = require_common_utils_test_utils_index.buildCreditManager({
7
- minDebt: 1000n,
8
- maxDebt: 1000000n,
9
- underlyingToken: require_common_utils_test_utils_index.mockUnderlyingToken
10
- });
11
- (0, vitest.describe)("validateOpenAccount", () => {
12
- (0, vitest.it)("returns null when all conditions are met", () => {
13
- const result = require_common_utils_utils_validation_validate_open_account.validateOpenAccount({
14
- debt: 50000n,
15
- creditManager: mockCreditManager,
16
- desiredQuota: {},
17
- quotaUpdate: []
18
- });
19
- (0, vitest.expect)(result).toBeNull();
20
- });
21
- (0, vitest.it)("returns loading error when loading is true", () => {
22
- const result = require_common_utils_utils_validation_validate_open_account.validateOpenAccount({
23
- debt: 50000n,
24
- creditManager: mockCreditManager,
25
- desiredQuota: {},
26
- quotaUpdate: [],
27
- loading: true
28
- });
29
- (0, vitest.expect)(result).toEqual({ message: "loading" });
30
- });
31
- (0, vitest.it)("returns error when debt is less than min", () => {
32
- const result = require_common_utils_utils_validation_validate_open_account.validateOpenAccount({
33
- debt: 500n,
34
- creditManager: mockCreditManager,
35
- desiredQuota: {},
36
- quotaUpdate: []
37
- });
38
- (0, vitest.expect)(result).toEqual({
39
- message: "amountLessMin",
40
- amount: 1000n
41
- });
42
- });
43
- (0, vitest.it)("returns error when debt is greater than max", () => {
44
- const result = require_common_utils_utils_validation_validate_open_account.validateOpenAccount({
45
- debt: 2000000n,
46
- creditManager: mockCreditManager,
47
- desiredQuota: {},
48
- quotaUpdate: []
49
- });
50
- (0, vitest.expect)(result).toEqual({
51
- message: "debtGreaterMax",
52
- amount: 1000000n
53
- });
54
- });
55
- });
56
- //#endregion
@@ -1,23 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- //#region src/common-utils/utils/validation/validate-quota.ts
3
- function validateQuota(props) {
4
- const desiredQuotasList = Object.values(props.desiredQuota).filter((a) => a.balance > 0n);
5
- if (desiredQuotasList.length > props.creditManager.maxEnabledTokensLength) return {
6
- message: "maxQuotasLengthReached",
7
- count: desiredQuotasList.length,
8
- max: props.creditManager.maxEnabledTokensLength
9
- };
10
- if (props.quotaUpdate.length === 0 && props.throwOnZeroQuotaUpdate) return { message: "quotaShouldBeUpdated" };
11
- for (const { token, balance: updateBy } of props.quotaUpdate) {
12
- const quota = props.creditManager.quotas[token];
13
- if (updateBy > 0 && quota) {
14
- if ((quota.isActive ? quota.limit : 0n) - quota.totalQuoted < updateBy) return {
15
- message: "insufficientQuota",
16
- token
17
- };
18
- }
19
- }
20
- return null;
21
- }
22
- //#endregion
23
- exports.validateQuota = validateQuota;
@@ -1,88 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_common_utils_utils_validation_validate_quota = require("./validate-quota.js");
3
- const require_common_utils_test_utils_index = require("../../test-utils/index.js");
4
- let vitest = require("vitest");
5
- //#region src/common-utils/utils/validation/validate-quota.spec.ts
6
- const mockCreditManager = require_common_utils_test_utils_index.buildCreditManager({
7
- minDebt: 1000n,
8
- maxDebt: 1000000n,
9
- totalDebtLimit: 5000000n,
10
- totalDebt: 2000000n,
11
- availableToBorrow: 3000000n,
12
- quotas: {
13
- [require_common_utils_test_utils_index.mockToken1]: require_common_utils_test_utils_index.buildQuota({
14
- token: require_common_utils_test_utils_index.mockToken1,
15
- limit: 1000000n,
16
- totalQuoted: 500000n,
17
- rate: 0n
18
- }),
19
- [require_common_utils_test_utils_index.mockToken2]: require_common_utils_test_utils_index.buildQuota({
20
- token: require_common_utils_test_utils_index.mockToken2,
21
- limit: 2000000n,
22
- totalQuoted: 1000000n,
23
- rate: 0n
24
- })
25
- },
26
- maxEnabledTokensLength: 2
27
- });
28
- (0, vitest.describe)("validateQuota", () => {
29
- (0, vitest.it)("returns null when all conditions are met", () => {
30
- const result = require_common_utils_utils_validation_validate_quota.validateQuota({
31
- desiredQuota: {},
32
- quotaUpdate: [],
33
- creditManager: mockCreditManager,
34
- throwOnZeroQuotaUpdate: false
35
- });
36
- (0, vitest.expect)(result).toBeNull();
37
- });
38
- (0, vitest.it)("returns error when max quotas length is reached", () => {
39
- const result = require_common_utils_utils_validation_validate_quota.validateQuota({
40
- desiredQuota: {
41
- [require_common_utils_test_utils_index.mockToken1]: {
42
- token: require_common_utils_test_utils_index.mockToken1,
43
- balance: 1000n
44
- },
45
- [require_common_utils_test_utils_index.mockToken2]: {
46
- token: require_common_utils_test_utils_index.mockToken2,
47
- balance: 1000n
48
- }
49
- },
50
- quotaUpdate: [],
51
- creditManager: require_common_utils_test_utils_index.buildCreditManager({
52
- ...mockCreditManager,
53
- maxEnabledTokensLength: 1
54
- }),
55
- throwOnZeroQuotaUpdate: false
56
- });
57
- (0, vitest.expect)(result).toEqual({
58
- message: "maxQuotasLengthReached",
59
- count: 2,
60
- max: 1
61
- });
62
- });
63
- (0, vitest.it)("returns error when quota update is empty and throwOnZeroQuotaUpdate is true", () => {
64
- const result = require_common_utils_utils_validation_validate_quota.validateQuota({
65
- desiredQuota: {},
66
- quotaUpdate: [],
67
- creditManager: mockCreditManager,
68
- throwOnZeroQuotaUpdate: true
69
- });
70
- (0, vitest.expect)(result).toEqual({ message: "quotaShouldBeUpdated" });
71
- });
72
- (0, vitest.it)("returns error when quota is insufficient", () => {
73
- const result = require_common_utils_utils_validation_validate_quota.validateQuota({
74
- desiredQuota: {},
75
- quotaUpdate: [{
76
- token: require_common_utils_test_utils_index.mockToken1,
77
- balance: 600000n
78
- }],
79
- creditManager: mockCreditManager,
80
- throwOnZeroQuotaUpdate: false
81
- });
82
- (0, vitest.expect)(result).toEqual({
83
- message: "insufficientQuota",
84
- token: require_common_utils_test_utils_index.mockToken1
85
- });
86
- });
87
- });
88
- //#endregion
@@ -1,18 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- //#region src/common-utils/utils/validation/validate-token-to-obtain.ts
3
- function validateTokenToObtain({ creditManager, targetToken }) {
4
- if (Array.isArray(targetToken)) {
5
- for (const asset of targetToken) if (creditManager.forbiddenTokens[asset.token]) return {
6
- message: "tokenIsForbidden",
7
- token: asset.token
8
- };
9
- return null;
10
- }
11
- if (targetToken !== null && creditManager.forbiddenTokens[targetToken]) return {
12
- message: "tokenIsForbidden",
13
- token: targetToken
14
- };
15
- return null;
16
- }
17
- //#endregion
18
- exports.validateTokenToObtain = validateTokenToObtain;
@@ -1,36 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_common_utils_utils_validation_validate_token_to_obtain = require("./validate-token-to-obtain.js");
3
- const require_common_utils_test_utils_index = require("../../test-utils/index.js");
4
- let vitest = require("vitest");
5
- //#region src/common-utils/utils/validation/validate-token-to-obtain.spec.ts
6
- const mockCreditManager = require_common_utils_test_utils_index.buildCreditManager({ forbiddenTokens: {} });
7
- (0, vitest.describe)("validateTokenToObtain", () => {
8
- (0, vitest.it)("returns null when targetToken is null", () => {
9
- const result = require_common_utils_utils_validation_validate_token_to_obtain.validateTokenToObtain({
10
- targetToken: null,
11
- creditManager: mockCreditManager
12
- });
13
- (0, vitest.expect)(result).toBeNull();
14
- });
15
- (0, vitest.it)("returns null when targetToken is not forbidden", () => {
16
- const result = require_common_utils_utils_validation_validate_token_to_obtain.validateTokenToObtain({
17
- targetToken: require_common_utils_test_utils_index.mockToken1,
18
- creditManager: mockCreditManager
19
- });
20
- (0, vitest.expect)(result).toBeNull();
21
- });
22
- (0, vitest.it)("returns error when targetToken is forbidden", () => {
23
- const result = require_common_utils_utils_validation_validate_token_to_obtain.validateTokenToObtain({
24
- targetToken: require_common_utils_test_utils_index.mockToken1,
25
- creditManager: require_common_utils_test_utils_index.buildCreditManager({
26
- ...mockCreditManager,
27
- forbiddenTokens: { [require_common_utils_test_utils_index.mockToken1]: true }
28
- })
29
- });
30
- (0, vitest.expect)(result).toEqual({
31
- message: "tokenIsForbidden",
32
- token: require_common_utils_test_utils_index.mockToken1
33
- });
34
- });
35
- });
36
- //#endregion
@@ -1 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
@@ -1,264 +0,0 @@
1
- import { toBN } from "../../../../onchain/utils/formatter.js";
2
- import { getCMYouCanEarn } from "./get-cm-you-can-earn.js";
3
- import { buildCreditManager, buildPool, buildQuota, buildTokenData } from "../../../test-utils/index.js";
4
- import { describe, expect, it } from "vitest";
5
- //#region src/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.spec.ts
6
- describe("getCMYouCanEarn", () => {
7
- const collateralTokenAddress = "0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee";
8
- const targetTokenAddress = "0xe72b141df173b999ae7c1adcbf60cc9833ce56a8";
9
- const underlyingTokenAddress = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";
10
- const deth = "0x871ab8e36cae9af35c6a3488b049965233deb7ed";
11
- const nativeTokenAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
12
- const wrappedNativeTokenAddress = underlyingTokenAddress;
13
- const tokenDataList = {
14
- [collateralTokenAddress]: buildTokenData(collateralTokenAddress, "weETH"),
15
- [targetTokenAddress]: buildTokenData(targetTokenAddress, "ethPlus"),
16
- [underlyingTokenAddress]: buildTokenData(underlyingTokenAddress, "WETH"),
17
- [nativeTokenAddress]: buildTokenData(nativeTokenAddress, "ETH"),
18
- [deth]: buildTokenData(deth, "dETH")
19
- };
20
- const poolAddress = "0x0000000000000000000000000000000000000POOL";
21
- const creditManager = buildCreditManager({
22
- address: "0x0000000000000000000000000000000000000CM1",
23
- pool: poolAddress,
24
- underlyingToken: underlyingTokenAddress,
25
- collateralTokens: [
26
- collateralTokenAddress,
27
- underlyingTokenAddress,
28
- targetTokenAddress,
29
- deth
30
- ],
31
- supportedTokens: {
32
- [collateralTokenAddress]: true,
33
- [underlyingTokenAddress]: true,
34
- [targetTokenAddress]: true,
35
- [deth]: true
36
- },
37
- liquidationThresholds: {
38
- [collateralTokenAddress]: 9300n,
39
- [targetTokenAddress]: 9300n,
40
- [underlyingTokenAddress]: 9500n,
41
- [deth]: 8800n
42
- },
43
- quotas: {
44
- [targetTokenAddress]: buildQuota({
45
- isActive: true,
46
- limit: 5000000000000000000000n,
47
- quotaIncreaseFee: 0n,
48
- rate: 100n,
49
- token: "0xe72b141df173b999ae7c1adcbf60cc9833ce56a8",
50
- totalQuoted: 1708445825184283030000n
51
- }),
52
- [collateralTokenAddress]: buildQuota({
53
- token: collateralTokenAddress,
54
- rate: 0n,
55
- limit: toBN("1000000", 18)
56
- }),
57
- [deth]: buildQuota({
58
- isActive: true,
59
- limit: 500000000000000000000n,
60
- quotaIncreaseFee: 0n,
61
- rate: 100n,
62
- token: deth,
63
- totalQuoted: 28666207338545540000n
64
- })
65
- },
66
- isQuoted: (t) => t.toLowerCase() !== underlyingTokenAddress,
67
- feeInterest: 2e3,
68
- isPaused: false,
69
- baseBorrowRate: 18991,
70
- maxDebt: 250000000000000000000n,
71
- minDebt: 10000000000000000000n,
72
- availableToBorrow: 859640767327531138355n
73
- });
74
- const pools = { [poolAddress]: buildPool({
75
- address: poolAddress,
76
- chainId: 1,
77
- network: "Mainnet",
78
- underlyingToken: underlyingTokenAddress,
79
- dieselToken: poolAddress,
80
- isPaused: false,
81
- version: 310,
82
- expectedLiquidity: 5596004266940175413222n,
83
- expectedLiquidityLimit: 6903325375622920584635n,
84
- availableLiquidity: 1307321108682745171413n,
85
- interestModel: {
86
- interestModel: "0x12e6e5c6fe4b37576dd4052e03a97ee7b9c29e86",
87
- U_1: 7000n,
88
- U_2: 9200n,
89
- R_base: 0n,
90
- R_slope1: 113n,
91
- R_slope2: 150n,
92
- R_slope3: 1236n,
93
- version: 310,
94
- isBorrowingMoreU2Forbidden: true
95
- }
96
- }) };
97
- const allPrices = { [poolAddress]: {
98
- [collateralTokenAddress]: 347896889077n,
99
- [targetTokenAddress]: 342474099875n,
100
- [underlyingTokenAddress]: 320438727057n,
101
- [deth]: 322630065873n
102
- } };
103
- const walletBalances = {
104
- [underlyingTokenAddress]: 0n,
105
- [collateralTokenAddress]: 6191758000000000000n,
106
- [targetTokenAddress]: 0n
107
- };
108
- const apyList = {
109
- apyList: {
110
- [targetTokenAddress]: 24600,
111
- [collateralTokenAddress]: 27612,
112
- [deth]: 16600
113
- },
114
- extraCollateralAPYList: { [poolAddress]: { [targetTokenAddress]: {
115
- address: targetTokenAddress,
116
- pool: poolAddress,
117
- symbol: "ETHPlus",
118
- type: "relative",
119
- value: 0
120
- } } },
121
- pointsList: {
122
- [collateralTokenAddress]: {
123
- symbol: "weETH",
124
- address: "0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee",
125
- debtRewards: void 0,
126
- rewards: [{
127
- name: "Ether.fi",
128
- units: "points",
129
- multiplier: 200n,
130
- type: "etherfi"
131
- }]
132
- },
133
- [deth]: {
134
- address: "0x871ab8e36cae9af35c6a3488b049965233deb7ed",
135
- debtRewards: void 0,
136
- rewards: [{
137
- name: "Makina",
138
- units: "points",
139
- multiplier: 36000n,
140
- type: "makina"
141
- }],
142
- symbol: "DETH"
143
- }
144
- },
145
- extraCollateralPointsList: {},
146
- poolRewardsList: {},
147
- tokenExtraRewardsList: {},
148
- poolExternalAPYList: {},
149
- poolExtraAPYList: {}
150
- };
151
- it("computes expected earnings for APY-only scenario", () => {
152
- const result = getCMYouCanEarn({
153
- creditManager,
154
- pools,
155
- strategy: {
156
- id: "test-strategy",
157
- tokenOutAddress: targetTokenAddress,
158
- chainId: 1,
159
- network: "Mainnet"
160
- },
161
- delayedPhantoms: {},
162
- apyList,
163
- tokensList: tokenDataList,
164
- walletBalances,
165
- nativeTokenAddress,
166
- wrappedNativeTokenAddress,
167
- allPrices,
168
- slippage: 10,
169
- quotaReserve: 500
170
- });
171
- expect(result.status).toEqual("ok");
172
- expect(result.data?.info?.maxAPY).toEqual({
173
- overallAPY: 7.392,
174
- overallAPYBigInt: 73920n,
175
- overallAPYStatus: "calculated"
176
- });
177
- expect(result.data?.earnings).toEqual({
178
- earnings: 496914282513333354n,
179
- earningsUSD: 1592305801450150145856n
180
- });
181
- });
182
- it("computes expected earnings for APY and points scenario", () => {
183
- const result = getCMYouCanEarn({
184
- creditManager,
185
- pools,
186
- strategy: {
187
- id: "test-strategy",
188
- tokenOutAddress: collateralTokenAddress,
189
- chainId: 1,
190
- network: "Mainnet"
191
- },
192
- delayedPhantoms: {},
193
- apyList,
194
- tokensList: tokenDataList,
195
- walletBalances,
196
- nativeTokenAddress,
197
- wrappedNativeTokenAddress,
198
- allPrices,
199
- slippage: 10,
200
- quotaReserve: 500
201
- });
202
- expect(result.status).toEqual("ok");
203
- expect(result.data?.info?.maxAPY).toEqual({
204
- overallAPY: 11.233,
205
- overallAPYBigInt: 112330n,
206
- overallAPYStatus: "calculated"
207
- });
208
- expect(result.data?.earnings).toEqual({
209
- earnings: 755118795383153892n,
210
- earningsUSD: 2419693055693930817344n
211
- });
212
- expect(result.data?.points?.info).toEqual(apyList.pointsList?.[collateralTokenAddress] || {});
213
- expect(result.data?.points).toEqual({
214
- debtRates: {
215
- rewards: [],
216
- rates: []
217
- },
218
- info: apyList.pointsList?.[collateralTokenAddress] || {},
219
- rates: [2454n]
220
- });
221
- });
222
- it("computes expected earnings for points-only scenario", () => {
223
- const result = getCMYouCanEarn({
224
- creditManager,
225
- pools,
226
- strategy: {
227
- id: "test-strategy",
228
- tokenOutAddress: deth,
229
- chainId: 1,
230
- network: "Mainnet"
231
- },
232
- delayedPhantoms: {},
233
- apyList,
234
- tokensList: tokenDataList,
235
- walletBalances,
236
- nativeTokenAddress,
237
- wrappedNativeTokenAddress,
238
- allPrices,
239
- slippage: 10,
240
- quotaReserve: 500
241
- });
242
- expect(result.status).toEqual("ok");
243
- expect(result.data?.info?.maxAPY).toEqual({
244
- overallAPY: void 0,
245
- overallAPYBigInt: void 0,
246
- overallAPYStatus: "negativeForPoints"
247
- });
248
- expect(result.data?.earnings).toEqual({
249
- earnings: null,
250
- earningsUSD: null
251
- });
252
- expect(result.data?.points?.info).toEqual(apyList.pointsList?.[deth] || {});
253
- expect(result.data?.points).toEqual({
254
- debtRates: {
255
- rewards: [],
256
- rates: []
257
- },
258
- info: apyList.pointsList?.[deth] || {},
259
- rates: [259920n]
260
- });
261
- });
262
- });
263
- //#endregion
264
- export {};
@@ -1,12 +0,0 @@
1
- import { MIN_HF_LIMITED, validateHF } from "./validate-hf.js";
2
- import { validateOpenAccountPoolQuotaStatus } from "./validate-open-account-pool-quota-status.js";
3
- import { validateOpenAccountPoolStatus } from "./validate-open-account-pool-status.js";
4
- import { isZeroBalance } from "./is-zero-balance.js";
5
- import { validateBalance } from "./validate-balance.js";
6
- import { validateBalances } from "./validate-balances.js";
7
- import { validateCreditManager } from "./validate-credit-manager.js";
8
- import { validateQuota } from "./validate-quota.js";
9
- import { validateOpenAccount } from "./validate-open-account.js";
10
- import { validateTokenToObtain } from "./validate-token-to-obtain.js";
11
- import "./validation-types.js";
12
- export { MIN_HF_LIMITED, isZeroBalance, validateBalance, validateBalances, validateCreditManager, validateHF, validateOpenAccount, validateOpenAccountPoolQuotaStatus, validateOpenAccountPoolStatus, validateQuota, validateTokenToObtain };
@@ -1,6 +0,0 @@
1
- //#region src/common-utils/utils/validation/is-zero-balance.ts
2
- function isZeroBalance(balance) {
3
- return (balance ?? 0n) <= 10n;
4
- }
5
- //#endregion
6
- export { isZeroBalance };
@@ -1,21 +0,0 @@
1
- import "../constants.js";
2
- import { isZeroBalance } from "./is-zero-balance.js";
3
- //#region src/common-utils/utils/validation/validate-balance.ts
4
- function validateBalance({ amount, tokenAddress, maxAmount = 0n, zeroCheck = true, single }) {
5
- const safeAddress = tokenAddress || "";
6
- if (!safeAddress) return {
7
- message: "unknownToken",
8
- token: safeAddress
9
- };
10
- if (maxAmount < amount) return {
11
- message: "insufficientFunds",
12
- token: safeAddress
13
- };
14
- if (zeroCheck && isZeroBalance(amount)) return {
15
- message: single ? "enterAmount" : "zeroBalance",
16
- token: safeAddress
17
- };
18
- return null;
19
- }
20
- //#endregion
21
- export { validateBalance };