@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.
- package/dist/cjs/common-utils/test-utils/index.js +139 -0
- package/dist/cjs/common-utils/utils/apy/calculate-borrow-rate-from-utilization.js +59 -0
- package/dist/cjs/common-utils/utils/apy/calculate-borrow-rate-from-utilization.spec.js +32 -0
- package/dist/cjs/common-utils/utils/apy/calculate-earnings.js +59 -0
- package/dist/cjs/common-utils/utils/apy/calculate-earnings.spec.js +62 -0
- package/dist/cjs/common-utils/utils/apy/calculate-safe-borrow-rate.js +55 -0
- package/dist/cjs/common-utils/utils/apy/calculate-safe-borrow-rate.spec.js +39 -0
- package/dist/cjs/common-utils/utils/apy/get-safe-base-borrow-rate.js +38 -0
- package/dist/cjs/common-utils/utils/constants.js +34 -0
- package/dist/cjs/common-utils/utils/strategies/assets/assets.js +30 -0
- package/dist/cjs/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.js +62 -0
- package/dist/cjs/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.spec.js +109 -0
- package/dist/cjs/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.js +75 -0
- package/dist/cjs/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.spec.js +93 -0
- package/dist/cjs/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.js +63 -0
- package/dist/cjs/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.spec.js +330 -0
- package/dist/cjs/common-utils/utils/strategies/leverage/get-collateral-by-debt.js +34 -0
- package/dist/cjs/common-utils/utils/strategies/leverage/get-collateral-by-debt.spec.js +30 -0
- package/dist/cjs/common-utils/utils/strategies/leverage/get-recommended-debt.js +85 -0
- package/dist/cjs/common-utils/utils/strategies/leverage/get-recommended-debt.spec.js +227 -0
- package/dist/cjs/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.js +33 -0
- package/dist/cjs/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.spec.js +23 -0
- package/dist/cjs/common-utils/utils/strategies/leverage/max-leverage.js +2 -2
- package/dist/cjs/common-utils/utils/strategies/strategy-info/calculate-total-apy.js +112 -0
- package/dist/cjs/common-utils/utils/strategies/strategy-info/calculate-total-apy.spec.js +183 -0
- package/dist/cjs/common-utils/utils/strategies/strategy-info/calculate-total-points.js +74 -0
- package/dist/cjs/common-utils/utils/strategies/strategy-info/calculate-total-points.spec.js +131 -0
- package/dist/cjs/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.js +410 -0
- package/dist/cjs/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.spec.js +274 -0
- package/dist/cjs/common-utils/utils/strategies/strategy-info/get-strategy-you-can-earn.js +108 -0
- package/dist/cjs/common-utils/utils/strategies/tokens/add-amount-in-target.js +41 -0
- package/dist/cjs/common-utils/utils/strategies/tokens/add-amount-in-target.spec.js +38 -0
- package/dist/cjs/common-utils/utils/strategies/tokens/get-chain-phantom-tokens.js +35 -0
- package/dist/cjs/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.js +42 -0
- package/dist/cjs/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.spec.js +32 -0
- package/dist/cjs/common-utils/utils/strategies/tokens/get-native-token-address.js +31 -0
- package/dist/cjs/common-utils/utils/strategies/tokens/is-apy-with-points-exception.js +36 -0
- package/dist/cjs/common-utils/utils/strategies/tokens/is-collateral-token.js +59 -0
- package/dist/cjs/common-utils/utils/strategies/tokens/is-collateral-token.spec.js +135 -0
- package/dist/cjs/common-utils/utils/strategies/tokens/is-obtainable-token.js +42 -0
- package/dist/cjs/common-utils/utils/strategies/tokens/is-obtainable-token.spec.js +162 -0
- package/dist/cjs/common-utils/utils/strategies/tokens/is-valid-extra-collateral-token.js +51 -0
- package/dist/cjs/common-utils/utils/strategies/tokens/wrap-token-address.js +33 -0
- package/dist/cjs/common-utils/utils/strategies/tokens/wrap-token-address.spec.js +13 -0
- package/dist/cjs/common-utils/utils/strategies/types/strategy-data.js +16 -0
- package/dist/cjs/common-utils/utils/strategies/types/strategy-earnings.js +16 -0
- package/dist/cjs/common-utils/utils/validation/is-zero-balance.js +30 -0
- package/dist/cjs/common-utils/utils/validation/validate-balance.js +47 -0
- package/dist/cjs/common-utils/utils/validation/validate-balance.spec.js +52 -0
- package/dist/cjs/common-utils/utils/validation/validate-balances.js +44 -0
- package/dist/cjs/common-utils/utils/validation/validate-balances.spec.js +37 -0
- package/dist/cjs/common-utils/utils/validation/validate-credit-manager.js +34 -0
- package/dist/cjs/common-utils/utils/validation/validate-credit-manager.spec.js +36 -0
- package/dist/cjs/common-utils/utils/validation/validate-hf.js +38 -0
- package/dist/cjs/common-utils/utils/validation/validate-hf.spec.js +24 -0
- package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-quota-status.js +37 -0
- package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-quota-status.spec.js +43 -0
- package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-status.js +76 -0
- package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-status.spec.js +98 -0
- package/dist/cjs/common-utils/utils/validation/validate-open-account.js +41 -0
- package/dist/cjs/common-utils/utils/validation/validate-open-account.spec.js +54 -0
- package/dist/cjs/common-utils/utils/validation/validate-quota.js +49 -0
- package/dist/cjs/common-utils/utils/validation/validate-quota.spec.js +79 -0
- package/dist/cjs/common-utils/utils/validation/validate-token-to-obtain.js +42 -0
- package/dist/cjs/common-utils/utils/validation/validate-token-to-obtain.spec.js +35 -0
- package/dist/cjs/common-utils/utils/validation/validation-types.js +16 -0
- package/dist/cjs/sdk/constants/math.js +3 -0
- package/dist/esm/common-utils/test-utils/index.js +104 -0
- package/dist/esm/common-utils/utils/apy/calculate-borrow-rate-from-utilization.js +35 -0
- package/dist/esm/common-utils/utils/apy/calculate-borrow-rate-from-utilization.spec.js +31 -0
- package/dist/esm/common-utils/utils/apy/calculate-earnings.js +35 -0
- package/dist/esm/common-utils/utils/apy/calculate-earnings.spec.js +65 -0
- package/dist/esm/common-utils/utils/apy/calculate-safe-borrow-rate.js +34 -0
- package/dist/esm/common-utils/utils/apy/calculate-safe-borrow-rate.spec.js +38 -0
- package/dist/esm/common-utils/utils/apy/get-safe-base-borrow-rate.js +16 -0
- package/dist/esm/common-utils/utils/constants.js +8 -0
- package/dist/esm/common-utils/utils/strategies/assets/assets.js +6 -0
- package/dist/esm/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.js +38 -0
- package/dist/esm/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.spec.js +115 -0
- package/dist/esm/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.js +51 -0
- package/dist/esm/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.spec.js +96 -0
- package/dist/esm/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.js +42 -0
- package/dist/esm/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.spec.js +332 -0
- package/dist/esm/common-utils/utils/strategies/leverage/get-collateral-by-debt.js +10 -0
- package/dist/esm/common-utils/utils/strategies/leverage/get-collateral-by-debt.spec.js +29 -0
- package/dist/esm/common-utils/utils/strategies/leverage/get-recommended-debt.js +61 -0
- package/dist/esm/common-utils/utils/strategies/leverage/get-recommended-debt.spec.js +226 -0
- package/dist/esm/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.js +9 -0
- package/dist/esm/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.spec.js +22 -0
- package/dist/esm/common-utils/utils/strategies/leverage/max-leverage.js +2 -2
- package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-apy.js +88 -0
- package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-apy.spec.js +187 -0
- package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-points.js +54 -0
- package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-points.spec.js +139 -0
- package/dist/esm/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.js +389 -0
- package/dist/esm/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.spec.js +278 -0
- package/dist/esm/common-utils/utils/strategies/strategy-info/get-strategy-you-can-earn.js +84 -0
- package/dist/esm/common-utils/utils/strategies/tokens/add-amount-in-target.js +17 -0
- package/dist/esm/common-utils/utils/strategies/tokens/add-amount-in-target.spec.js +41 -0
- package/dist/esm/common-utils/utils/strategies/tokens/get-chain-phantom-tokens.js +11 -0
- package/dist/esm/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.js +18 -0
- package/dist/esm/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.spec.js +36 -0
- package/dist/esm/common-utils/utils/strategies/tokens/get-native-token-address.js +7 -0
- package/dist/esm/common-utils/utils/strategies/tokens/is-apy-with-points-exception.js +11 -0
- package/dist/esm/common-utils/utils/strategies/tokens/is-collateral-token.js +35 -0
- package/dist/esm/common-utils/utils/strategies/tokens/is-collateral-token.spec.js +137 -0
- package/dist/esm/common-utils/utils/strategies/tokens/is-obtainable-token.js +18 -0
- package/dist/esm/common-utils/utils/strategies/tokens/is-obtainable-token.spec.js +161 -0
- package/dist/esm/common-utils/utils/strategies/tokens/is-valid-extra-collateral-token.js +27 -0
- package/dist/esm/common-utils/utils/strategies/tokens/wrap-token-address.js +9 -0
- package/dist/esm/common-utils/utils/strategies/tokens/wrap-token-address.spec.js +12 -0
- package/dist/esm/common-utils/utils/strategies/types/strategy-data.js +0 -0
- package/dist/esm/common-utils/utils/strategies/types/strategy-earnings.js +0 -0
- package/dist/esm/common-utils/utils/validation/is-zero-balance.js +6 -0
- package/dist/esm/common-utils/utils/validation/validate-balance.js +23 -0
- package/dist/esm/common-utils/utils/validation/validate-balance.spec.js +51 -0
- package/dist/esm/common-utils/utils/validation/validate-balances.js +20 -0
- package/dist/esm/common-utils/utils/validation/validate-balances.spec.js +36 -0
- package/dist/esm/common-utils/utils/validation/validate-credit-manager.js +10 -0
- package/dist/esm/common-utils/utils/validation/validate-credit-manager.spec.js +35 -0
- package/dist/esm/common-utils/utils/validation/validate-hf.js +13 -0
- package/dist/esm/common-utils/utils/validation/validate-hf.spec.js +23 -0
- package/dist/esm/common-utils/utils/validation/validate-open-account-pool-quota-status.js +13 -0
- package/dist/esm/common-utils/utils/validation/validate-open-account-pool-quota-status.spec.js +46 -0
- package/dist/esm/common-utils/utils/validation/validate-open-account-pool-status.js +54 -0
- package/dist/esm/common-utils/utils/validation/validate-open-account-pool-status.spec.js +102 -0
- package/dist/esm/common-utils/utils/validation/validate-open-account.js +17 -0
- package/dist/esm/common-utils/utils/validation/validate-open-account.spec.js +56 -0
- package/dist/esm/common-utils/utils/validation/validate-quota.js +25 -0
- package/dist/esm/common-utils/utils/validation/validate-quota.spec.js +83 -0
- package/dist/esm/common-utils/utils/validation/validate-token-to-obtain.js +18 -0
- package/dist/esm/common-utils/utils/validation/validate-token-to-obtain.spec.js +34 -0
- package/dist/esm/common-utils/utils/validation/validation-types.js +0 -0
- package/dist/esm/sdk/constants/math.js +2 -0
- package/dist/types/common-utils/test-utils/index.d.ts +16 -0
- package/dist/types/common-utils/utils/apy/calculate-borrow-rate-from-utilization.d.ts +2 -0
- package/dist/types/common-utils/utils/apy/calculate-borrow-rate-from-utilization.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/apy/calculate-earnings.d.ts +16 -0
- package/dist/types/common-utils/utils/apy/calculate-earnings.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/apy/calculate-safe-borrow-rate.d.ts +11 -0
- package/dist/types/common-utils/utils/apy/calculate-safe-borrow-rate.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/apy/get-safe-base-borrow-rate.d.ts +4 -0
- package/dist/types/common-utils/utils/constants.d.ts +4 -0
- package/dist/types/common-utils/utils/strategies/assets/assets.d.ts +3 -0
- package/dist/types/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.d.ts +20 -0
- package/dist/types/common-utils/utils/strategies/credit-managers/get-cm-allowed-collaterals.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.d.ts +13 -0
- package/dist/types/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.d.ts +11 -0
- package/dist/types/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/leverage/get-collateral-by-debt.d.ts +2 -0
- package/dist/types/common-utils/utils/strategies/leverage/get-collateral-by-debt.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/leverage/get-recommended-debt.d.ts +21 -0
- package/dist/types/common-utils/utils/strategies/leverage/get-recommended-debt.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.d.ts +4 -0
- package/dist/types/common-utils/utils/strategies/leverage/get-recommended-leverage-factor.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-apy.d.ts +28 -0
- package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-apy.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-points.d.ts +22 -0
- package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-points.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.d.ts +19 -0
- package/dist/types/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/strategy-info/get-strategy-you-can-earn.d.ts +29 -0
- package/dist/types/common-utils/utils/strategies/tokens/add-amount-in-target.d.ts +6 -0
- package/dist/types/common-utils/utils/strategies/tokens/add-amount-in-target.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/tokens/get-chain-phantom-tokens.d.ts +6 -0
- package/dist/types/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.d.ts +12 -0
- package/dist/types/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/tokens/get-native-token-address.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/tokens/is-apy-with-points-exception.d.ts +3 -0
- package/dist/types/common-utils/utils/strategies/tokens/is-collateral-token.d.ts +16 -0
- package/dist/types/common-utils/utils/strategies/tokens/is-collateral-token.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/tokens/is-obtainable-token.d.ts +14 -0
- package/dist/types/common-utils/utils/strategies/tokens/is-obtainable-token.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/tokens/is-valid-extra-collateral-token.d.ts +20 -0
- package/dist/types/common-utils/utils/strategies/tokens/wrap-token-address.d.ts +2 -0
- package/dist/types/common-utils/utils/strategies/tokens/wrap-token-address.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/strategies/types/index.d.ts +2 -1
- package/dist/types/common-utils/utils/strategies/types/strategy-data.d.ts +64 -0
- package/dist/types/common-utils/utils/strategies/types/strategy-earnings.d.ts +43 -0
- package/dist/types/common-utils/utils/validation/is-zero-balance.d.ts +1 -0
- package/dist/types/common-utils/utils/validation/validate-balance.d.ts +22 -0
- package/dist/types/common-utils/utils/validation/validate-balance.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/validation/validate-balances.d.ts +9 -0
- package/dist/types/common-utils/utils/validation/validate-balances.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/validation/validate-credit-manager.d.ts +10 -0
- package/dist/types/common-utils/utils/validation/validate-credit-manager.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/validation/validate-hf.d.ts +9 -0
- package/dist/types/common-utils/utils/validation/validate-hf.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/validation/validate-open-account-pool-quota-status.d.ts +7 -0
- package/dist/types/common-utils/utils/validation/validate-open-account-pool-quota-status.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/validation/validate-open-account-pool-status.d.ts +23 -0
- package/dist/types/common-utils/utils/validation/validate-open-account-pool-status.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/validation/validate-open-account.d.ts +21 -0
- package/dist/types/common-utils/utils/validation/validate-open-account.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/validation/validate-quota.d.ts +20 -0
- package/dist/types/common-utils/utils/validation/validate-quota.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/validation/validate-token-to-obtain.d.ts +13 -0
- package/dist/types/common-utils/utils/validation/validate-token-to-obtain.spec.d.ts +1 -0
- package/dist/types/common-utils/utils/validation/validation-types.d.ts +14 -0
- package/dist/types/dev/RevolverTransport.d.ts +4 -4
- package/dist/types/sdk/constants/math.d.ts +1 -0
- package/package.json +1 -1
- package/dist/cjs/common-utils/utils/strategies/__test-utils.js +0 -95
- package/dist/esm/common-utils/utils/strategies/__test-utils.js +0 -65
- package/dist/types/common-utils/utils/strategies/__test-utils.d.ts +0 -11
|
@@ -0,0 +1,37 @@
|
|
|
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 validate_open_account_pool_quota_status_exports = {};
|
|
20
|
+
__export(validate_open_account_pool_quota_status_exports, {
|
|
21
|
+
validateOpenAccountPoolQuotaStatus: () => validateOpenAccountPoolQuotaStatus
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(validate_open_account_pool_quota_status_exports);
|
|
24
|
+
function validateOpenAccountPoolQuotaStatus(targetToken, creditManager, amountToBorrow) {
|
|
25
|
+
const quota = creditManager.quotas[targetToken];
|
|
26
|
+
if (quota) {
|
|
27
|
+
const realLimit = quota.isActive ? quota.limit : 0n;
|
|
28
|
+
const quotaLeft = realLimit - quota.totalQuoted;
|
|
29
|
+
if (quotaLeft < amountToBorrow)
|
|
30
|
+
return { message: "insufficientQuota", token: targetToken };
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
35
|
+
0 && (module.exports = {
|
|
36
|
+
validateOpenAccountPoolQuotaStatus
|
|
37
|
+
});
|
package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-quota-status.spec.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var import_vitest = require("vitest");
|
|
3
|
+
var import_test_utils = require("../../test-utils/index.js");
|
|
4
|
+
var import_validate_open_account_pool_quota_status = require("./validate-open-account-pool-quota-status.js");
|
|
5
|
+
const mockCreditManager = (0, import_test_utils.buildCreditManager)({
|
|
6
|
+
quotas: {
|
|
7
|
+
[import_test_utils.mockToken1]: (0, import_test_utils.buildQuota)({
|
|
8
|
+
token: import_test_utils.mockToken1,
|
|
9
|
+
limit: 1000000n,
|
|
10
|
+
totalQuoted: 500000n,
|
|
11
|
+
rate: 0n
|
|
12
|
+
})
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
(0, import_vitest.describe)("validateOpenAccountPoolQuotaStatus", () => {
|
|
16
|
+
(0, import_vitest.it)("returns null when quota is sufficient", () => {
|
|
17
|
+
const result = (0, import_validate_open_account_pool_quota_status.validateOpenAccountPoolQuotaStatus)(
|
|
18
|
+
import_test_utils.mockToken1,
|
|
19
|
+
mockCreditManager,
|
|
20
|
+
100000n
|
|
21
|
+
);
|
|
22
|
+
(0, import_vitest.expect)(result).toBeNull();
|
|
23
|
+
});
|
|
24
|
+
(0, import_vitest.it)("returns error when quota is insufficient", () => {
|
|
25
|
+
const result = (0, import_validate_open_account_pool_quota_status.validateOpenAccountPoolQuotaStatus)(
|
|
26
|
+
import_test_utils.mockToken1,
|
|
27
|
+
mockCreditManager,
|
|
28
|
+
600000n
|
|
29
|
+
);
|
|
30
|
+
(0, import_vitest.expect)(result).toEqual({
|
|
31
|
+
message: "insufficientQuota",
|
|
32
|
+
token: import_test_utils.mockToken1
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
(0, import_vitest.it)("returns null when token has no quota", () => {
|
|
36
|
+
const result = (0, import_validate_open_account_pool_quota_status.validateOpenAccountPoolQuotaStatus)(
|
|
37
|
+
"0x9999999999999999999999999999999999999999",
|
|
38
|
+
mockCreditManager,
|
|
39
|
+
100000n
|
|
40
|
+
);
|
|
41
|
+
(0, import_vitest.expect)(result).toBeNull();
|
|
42
|
+
});
|
|
43
|
+
});
|
|
@@ -0,0 +1,76 @@
|
|
|
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 validate_open_account_pool_status_exports = {};
|
|
20
|
+
__export(validate_open_account_pool_status_exports, {
|
|
21
|
+
validateOpenAccountPoolStatus: () => validateOpenAccountPoolStatus
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(validate_open_account_pool_status_exports);
|
|
24
|
+
var import_bigint_math = require("../bigint-math.js");
|
|
25
|
+
var import_validate_open_account_pool_quota_status = require("./validate-open-account-pool-quota-status.js");
|
|
26
|
+
function validateOpenAccountPoolStatus(props) {
|
|
27
|
+
const { debt, creditManager, pool, targetToken } = props;
|
|
28
|
+
const effectiveDebt = import_bigint_math.BigIntMath.max(creditManager.minDebt, debt);
|
|
29
|
+
const hasDebtLimit = creditManager.totalDebtLimit >= 0n;
|
|
30
|
+
const debtLimitLeft = import_bigint_math.BigIntMath.max(
|
|
31
|
+
creditManager.totalDebtLimit - creditManager.totalDebt,
|
|
32
|
+
0n
|
|
33
|
+
);
|
|
34
|
+
const { totalDebtLimit = 0n, totalBorrowed = 0n } = pool || {};
|
|
35
|
+
const hasPoolDebtLimit = totalDebtLimit > 0n;
|
|
36
|
+
const poolDebtLimitLeft = totalDebtLimit - totalBorrowed;
|
|
37
|
+
const canOpenMinDebt = creditManager.minDebt <= debtLimitLeft && creditManager.minDebt <= poolDebtLimitLeft && creditManager.minDebt <= creditManager.availableToBorrow;
|
|
38
|
+
const minPositionSize = import_bigint_math.BigIntMath.min(
|
|
39
|
+
import_bigint_math.BigIntMath.min(debtLimitLeft, poolDebtLimitLeft),
|
|
40
|
+
creditManager.availableToBorrow
|
|
41
|
+
);
|
|
42
|
+
if (hasDebtLimit && effectiveDebt > debtLimitLeft) {
|
|
43
|
+
return {
|
|
44
|
+
message: "insufficientDebtLimit",
|
|
45
|
+
amount: debtLimitLeft,
|
|
46
|
+
solutionAmount: canOpenMinDebt ? minPositionSize : void 0
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (hasPoolDebtLimit && effectiveDebt > poolDebtLimitLeft) {
|
|
50
|
+
return {
|
|
51
|
+
message: "insufficientPoolDebtLimit",
|
|
52
|
+
amount: poolDebtLimitLeft,
|
|
53
|
+
solutionAmount: canOpenMinDebt ? minPositionSize : void 0
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (effectiveDebt > creditManager.availableToBorrow) {
|
|
57
|
+
return {
|
|
58
|
+
message: "insufficientPoolLiquidity",
|
|
59
|
+
amount: creditManager.availableToBorrow,
|
|
60
|
+
solutionAmount: canOpenMinDebt ? minPositionSize : void 0
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
if (targetToken !== null) {
|
|
64
|
+
const quotaError = (0, import_validate_open_account_pool_quota_status.validateOpenAccountPoolQuotaStatus)(
|
|
65
|
+
targetToken,
|
|
66
|
+
creditManager,
|
|
67
|
+
effectiveDebt
|
|
68
|
+
);
|
|
69
|
+
if (quotaError) return quotaError;
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
74
|
+
0 && (module.exports = {
|
|
75
|
+
validateOpenAccountPoolStatus
|
|
76
|
+
});
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var import_vitest = require("vitest");
|
|
3
|
+
var import_test_utils = require("../../test-utils/index.js");
|
|
4
|
+
var import_validate_open_account_pool_status = require("./validate-open-account-pool-status.js");
|
|
5
|
+
const mockCreditManager = (0, import_test_utils.buildCreditManager)({
|
|
6
|
+
minDebt: 1000n,
|
|
7
|
+
maxDebt: 1000000n,
|
|
8
|
+
totalDebtLimit: 5000000n,
|
|
9
|
+
totalDebt: 2000000n,
|
|
10
|
+
availableToBorrow: 3000000n,
|
|
11
|
+
quotas: {
|
|
12
|
+
[import_test_utils.mockToken1]: (0, import_test_utils.buildQuota)({
|
|
13
|
+
token: import_test_utils.mockToken1,
|
|
14
|
+
limit: 1000000n,
|
|
15
|
+
totalQuoted: 500000n,
|
|
16
|
+
rate: 0n
|
|
17
|
+
})
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
const mockPool = (0, import_test_utils.buildPool)({
|
|
21
|
+
totalDebtLimit: 10000000n,
|
|
22
|
+
totalBorrowed: 5000000n
|
|
23
|
+
});
|
|
24
|
+
(0, import_vitest.describe)("validateOpenAccountPoolStatus", () => {
|
|
25
|
+
(0, import_vitest.it)("returns null when all conditions are met", () => {
|
|
26
|
+
const result = (0, import_validate_open_account_pool_status.validateOpenAccountPoolStatus)({
|
|
27
|
+
debt: 50000n,
|
|
28
|
+
creditManager: mockCreditManager,
|
|
29
|
+
pool: mockPool,
|
|
30
|
+
targetToken: import_test_utils.mockToken1
|
|
31
|
+
});
|
|
32
|
+
(0, import_vitest.expect)(result).toBeNull();
|
|
33
|
+
});
|
|
34
|
+
(0, import_vitest.it)("returns error when debt exceeds debt limit", () => {
|
|
35
|
+
const result = (0, import_validate_open_account_pool_status.validateOpenAccountPoolStatus)({
|
|
36
|
+
debt: 4000000n,
|
|
37
|
+
creditManager: mockCreditManager,
|
|
38
|
+
pool: mockPool,
|
|
39
|
+
targetToken: import_test_utils.mockToken1
|
|
40
|
+
});
|
|
41
|
+
(0, import_vitest.expect)(result).toEqual({
|
|
42
|
+
message: "insufficientDebtLimit",
|
|
43
|
+
amount: 3000000n,
|
|
44
|
+
solutionAmount: 3000000n
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
(0, import_vitest.it)("returns error when debt exceeds pool debt limit", () => {
|
|
48
|
+
const result = (0, import_validate_open_account_pool_status.validateOpenAccountPoolStatus)({
|
|
49
|
+
debt: 6000000n,
|
|
50
|
+
creditManager: (0, import_test_utils.buildCreditManager)({
|
|
51
|
+
...mockCreditManager,
|
|
52
|
+
totalDebtLimit: -1n
|
|
53
|
+
}),
|
|
54
|
+
pool: mockPool,
|
|
55
|
+
targetToken: import_test_utils.mockToken1
|
|
56
|
+
});
|
|
57
|
+
(0, import_vitest.expect)(result).toEqual({
|
|
58
|
+
message: "insufficientPoolDebtLimit",
|
|
59
|
+
amount: 5000000n
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
(0, import_vitest.it)("returns error when debt exceeds available liquidity", () => {
|
|
63
|
+
const result = (0, import_validate_open_account_pool_status.validateOpenAccountPoolStatus)({
|
|
64
|
+
debt: 4000000n,
|
|
65
|
+
creditManager: (0, import_test_utils.buildCreditManager)({
|
|
66
|
+
...mockCreditManager,
|
|
67
|
+
totalDebtLimit: -1n
|
|
68
|
+
}),
|
|
69
|
+
pool: (0, import_test_utils.buildPool)({ totalDebtLimit: -1n }),
|
|
70
|
+
targetToken: import_test_utils.mockToken1
|
|
71
|
+
});
|
|
72
|
+
(0, import_vitest.expect)(result).toEqual({
|
|
73
|
+
message: "insufficientPoolLiquidity",
|
|
74
|
+
amount: 3000000n
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
(0, import_vitest.it)("returns error when quota is insufficient", () => {
|
|
78
|
+
const result = (0, import_validate_open_account_pool_status.validateOpenAccountPoolStatus)({
|
|
79
|
+
debt: 600000n,
|
|
80
|
+
creditManager: mockCreditManager,
|
|
81
|
+
pool: mockPool,
|
|
82
|
+
targetToken: import_test_utils.mockToken1
|
|
83
|
+
});
|
|
84
|
+
(0, import_vitest.expect)(result).toEqual({
|
|
85
|
+
message: "insufficientQuota",
|
|
86
|
+
token: import_test_utils.mockToken1
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
(0, import_vitest.it)("returns null when targetToken is null", () => {
|
|
90
|
+
const result = (0, import_validate_open_account_pool_status.validateOpenAccountPoolStatus)({
|
|
91
|
+
debt: 50000n,
|
|
92
|
+
creditManager: mockCreditManager,
|
|
93
|
+
pool: mockPool,
|
|
94
|
+
targetToken: null
|
|
95
|
+
});
|
|
96
|
+
(0, import_vitest.expect)(result).toBeNull();
|
|
97
|
+
});
|
|
98
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
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 validate_open_account_exports = {};
|
|
20
|
+
__export(validate_open_account_exports, {
|
|
21
|
+
validateOpenAccount: () => validateOpenAccount
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(validate_open_account_exports);
|
|
24
|
+
var import_validate_quota = require("./validate-quota.js");
|
|
25
|
+
function validateOpenAccount(props) {
|
|
26
|
+
const { debt, creditManager, loading } = props;
|
|
27
|
+
if (loading) {
|
|
28
|
+
return { message: "loading" };
|
|
29
|
+
}
|
|
30
|
+
if (debt < creditManager.minDebt) {
|
|
31
|
+
return { message: "amountLessMin", amount: creditManager.minDebt };
|
|
32
|
+
}
|
|
33
|
+
if (debt > creditManager.maxDebt) {
|
|
34
|
+
return { message: "debtGreaterMax", amount: creditManager.maxDebt };
|
|
35
|
+
}
|
|
36
|
+
return (0, import_validate_quota.validateQuota)(props);
|
|
37
|
+
}
|
|
38
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
39
|
+
0 && (module.exports = {
|
|
40
|
+
validateOpenAccount
|
|
41
|
+
});
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var import_vitest = require("vitest");
|
|
3
|
+
var import_test_utils = require("../../test-utils/index.js");
|
|
4
|
+
var import_validate_open_account = require("./validate-open-account.js");
|
|
5
|
+
const mockCreditManager = (0, import_test_utils.buildCreditManager)({
|
|
6
|
+
minDebt: 1000n,
|
|
7
|
+
maxDebt: 1000000n,
|
|
8
|
+
underlyingToken: import_test_utils.mockUnderlyingToken
|
|
9
|
+
});
|
|
10
|
+
(0, import_vitest.describe)("validateOpenAccount", () => {
|
|
11
|
+
(0, import_vitest.it)("returns null when all conditions are met", () => {
|
|
12
|
+
const result = (0, import_validate_open_account.validateOpenAccount)({
|
|
13
|
+
debt: 50000n,
|
|
14
|
+
creditManager: mockCreditManager,
|
|
15
|
+
desiredQuota: {},
|
|
16
|
+
quotaUpdate: []
|
|
17
|
+
});
|
|
18
|
+
(0, import_vitest.expect)(result).toBeNull();
|
|
19
|
+
});
|
|
20
|
+
(0, import_vitest.it)("returns loading error when loading is true", () => {
|
|
21
|
+
const result = (0, import_validate_open_account.validateOpenAccount)({
|
|
22
|
+
debt: 50000n,
|
|
23
|
+
creditManager: mockCreditManager,
|
|
24
|
+
desiredQuota: {},
|
|
25
|
+
quotaUpdate: [],
|
|
26
|
+
loading: true
|
|
27
|
+
});
|
|
28
|
+
(0, import_vitest.expect)(result).toEqual({ message: "loading" });
|
|
29
|
+
});
|
|
30
|
+
(0, import_vitest.it)("returns error when debt is less than min", () => {
|
|
31
|
+
const result = (0, import_validate_open_account.validateOpenAccount)({
|
|
32
|
+
debt: 500n,
|
|
33
|
+
creditManager: mockCreditManager,
|
|
34
|
+
desiredQuota: {},
|
|
35
|
+
quotaUpdate: []
|
|
36
|
+
});
|
|
37
|
+
(0, import_vitest.expect)(result).toEqual({
|
|
38
|
+
message: "amountLessMin",
|
|
39
|
+
amount: 1000n
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
(0, import_vitest.it)("returns error when debt is greater than max", () => {
|
|
43
|
+
const result = (0, import_validate_open_account.validateOpenAccount)({
|
|
44
|
+
debt: 2000000n,
|
|
45
|
+
creditManager: mockCreditManager,
|
|
46
|
+
desiredQuota: {},
|
|
47
|
+
quotaUpdate: []
|
|
48
|
+
});
|
|
49
|
+
(0, import_vitest.expect)(result).toEqual({
|
|
50
|
+
message: "debtGreaterMax",
|
|
51
|
+
amount: 1000000n
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
@@ -0,0 +1,49 @@
|
|
|
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 validate_quota_exports = {};
|
|
20
|
+
__export(validate_quota_exports, {
|
|
21
|
+
validateQuota: () => validateQuota
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(validate_quota_exports);
|
|
24
|
+
function validateQuota(props) {
|
|
25
|
+
const desiredQuotasList = Object.values(props.desiredQuota).filter(
|
|
26
|
+
(a) => a.balance > 0n
|
|
27
|
+
);
|
|
28
|
+
if (desiredQuotasList.length > props.creditManager.maxEnabledTokensLength)
|
|
29
|
+
return {
|
|
30
|
+
message: "maxQuotasLengthReached",
|
|
31
|
+
count: desiredQuotasList.length,
|
|
32
|
+
max: props.creditManager.maxEnabledTokensLength
|
|
33
|
+
};
|
|
34
|
+
if (props.quotaUpdate.length === 0 && props.throwOnZeroQuotaUpdate)
|
|
35
|
+
return { message: "quotaShouldBeUpdated" };
|
|
36
|
+
for (const { token, balance: updateBy } of props.quotaUpdate) {
|
|
37
|
+
const quota = props.creditManager.quotas[token];
|
|
38
|
+
if (updateBy > 0 && quota) {
|
|
39
|
+
const realLimit = quota.isActive ? quota.limit : 0n;
|
|
40
|
+
const quotaLeft = realLimit - quota.totalQuoted;
|
|
41
|
+
if (quotaLeft < updateBy) return { message: "insufficientQuota", token };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
47
|
+
0 && (module.exports = {
|
|
48
|
+
validateQuota
|
|
49
|
+
});
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var import_vitest = require("vitest");
|
|
3
|
+
var import_test_utils = require("../../test-utils/index.js");
|
|
4
|
+
var import_validate_quota = require("./validate-quota.js");
|
|
5
|
+
const mockCreditManager = (0, import_test_utils.buildCreditManager)({
|
|
6
|
+
minDebt: 1000n,
|
|
7
|
+
maxDebt: 1000000n,
|
|
8
|
+
totalDebtLimit: 5000000n,
|
|
9
|
+
totalDebt: 2000000n,
|
|
10
|
+
availableToBorrow: 3000000n,
|
|
11
|
+
quotas: {
|
|
12
|
+
[import_test_utils.mockToken1]: (0, import_test_utils.buildQuota)({
|
|
13
|
+
token: import_test_utils.mockToken1,
|
|
14
|
+
limit: 1000000n,
|
|
15
|
+
totalQuoted: 500000n,
|
|
16
|
+
rate: 0n
|
|
17
|
+
}),
|
|
18
|
+
[import_test_utils.mockToken2]: (0, import_test_utils.buildQuota)({
|
|
19
|
+
token: import_test_utils.mockToken2,
|
|
20
|
+
limit: 2000000n,
|
|
21
|
+
totalQuoted: 1000000n,
|
|
22
|
+
rate: 0n
|
|
23
|
+
})
|
|
24
|
+
},
|
|
25
|
+
maxEnabledTokensLength: 2
|
|
26
|
+
});
|
|
27
|
+
(0, import_vitest.describe)("validateQuota", () => {
|
|
28
|
+
(0, import_vitest.it)("returns null when all conditions are met", () => {
|
|
29
|
+
const result = (0, import_validate_quota.validateQuota)({
|
|
30
|
+
desiredQuota: {},
|
|
31
|
+
quotaUpdate: [],
|
|
32
|
+
creditManager: mockCreditManager,
|
|
33
|
+
throwOnZeroQuotaUpdate: false
|
|
34
|
+
});
|
|
35
|
+
(0, import_vitest.expect)(result).toBeNull();
|
|
36
|
+
});
|
|
37
|
+
(0, import_vitest.it)("returns error when max quotas length is reached", () => {
|
|
38
|
+
const result = (0, import_validate_quota.validateQuota)({
|
|
39
|
+
desiredQuota: {
|
|
40
|
+
[import_test_utils.mockToken1]: { token: import_test_utils.mockToken1, balance: 1000n },
|
|
41
|
+
[import_test_utils.mockToken2]: { token: import_test_utils.mockToken2, balance: 1000n }
|
|
42
|
+
},
|
|
43
|
+
quotaUpdate: [],
|
|
44
|
+
creditManager: (0, import_test_utils.buildCreditManager)({
|
|
45
|
+
...mockCreditManager,
|
|
46
|
+
maxEnabledTokensLength: 1
|
|
47
|
+
}),
|
|
48
|
+
throwOnZeroQuotaUpdate: false
|
|
49
|
+
});
|
|
50
|
+
(0, import_vitest.expect)(result).toEqual({
|
|
51
|
+
message: "maxQuotasLengthReached",
|
|
52
|
+
count: 2,
|
|
53
|
+
max: 1
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
(0, import_vitest.it)("returns error when quota update is empty and throwOnZeroQuotaUpdate is true", () => {
|
|
57
|
+
const result = (0, import_validate_quota.validateQuota)({
|
|
58
|
+
desiredQuota: {},
|
|
59
|
+
quotaUpdate: [],
|
|
60
|
+
creditManager: mockCreditManager,
|
|
61
|
+
throwOnZeroQuotaUpdate: true
|
|
62
|
+
});
|
|
63
|
+
(0, import_vitest.expect)(result).toEqual({
|
|
64
|
+
message: "quotaShouldBeUpdated"
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
(0, import_vitest.it)("returns error when quota is insufficient", () => {
|
|
68
|
+
const result = (0, import_validate_quota.validateQuota)({
|
|
69
|
+
desiredQuota: {},
|
|
70
|
+
quotaUpdate: [{ token: import_test_utils.mockToken1, balance: 600000n }],
|
|
71
|
+
creditManager: mockCreditManager,
|
|
72
|
+
throwOnZeroQuotaUpdate: false
|
|
73
|
+
});
|
|
74
|
+
(0, import_vitest.expect)(result).toEqual({
|
|
75
|
+
message: "insufficientQuota",
|
|
76
|
+
token: import_test_utils.mockToken1
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
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 validate_token_to_obtain_exports = {};
|
|
20
|
+
__export(validate_token_to_obtain_exports, {
|
|
21
|
+
validateTokenToObtain: () => validateTokenToObtain
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(validate_token_to_obtain_exports);
|
|
24
|
+
function validateTokenToObtain({
|
|
25
|
+
creditManager,
|
|
26
|
+
targetToken
|
|
27
|
+
}) {
|
|
28
|
+
if (Array.isArray(targetToken)) {
|
|
29
|
+
for (const asset of targetToken) {
|
|
30
|
+
if (creditManager.forbiddenTokens[asset.token])
|
|
31
|
+
return { message: "tokenIsForbidden", token: asset.token };
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
if (targetToken !== null && creditManager.forbiddenTokens[targetToken])
|
|
36
|
+
return { message: "tokenIsForbidden", token: targetToken };
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
40
|
+
0 && (module.exports = {
|
|
41
|
+
validateTokenToObtain
|
|
42
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var import_vitest = require("vitest");
|
|
3
|
+
var import_test_utils = require("../../test-utils/index.js");
|
|
4
|
+
var import_validate_token_to_obtain = require("./validate-token-to-obtain.js");
|
|
5
|
+
const mockCreditManager = (0, import_test_utils.buildCreditManager)({
|
|
6
|
+
forbiddenTokens: {}
|
|
7
|
+
});
|
|
8
|
+
(0, import_vitest.describe)("validateTokenToObtain", () => {
|
|
9
|
+
(0, import_vitest.it)("returns null when targetToken is null", () => {
|
|
10
|
+
const result = (0, import_validate_token_to_obtain.validateTokenToObtain)({
|
|
11
|
+
targetToken: null,
|
|
12
|
+
creditManager: mockCreditManager
|
|
13
|
+
});
|
|
14
|
+
(0, import_vitest.expect)(result).toBeNull();
|
|
15
|
+
});
|
|
16
|
+
(0, import_vitest.it)("returns null when targetToken is not forbidden", () => {
|
|
17
|
+
const result = (0, import_validate_token_to_obtain.validateTokenToObtain)({
|
|
18
|
+
targetToken: import_test_utils.mockToken1,
|
|
19
|
+
creditManager: mockCreditManager
|
|
20
|
+
});
|
|
21
|
+
(0, import_vitest.expect)(result).toBeNull();
|
|
22
|
+
});
|
|
23
|
+
(0, import_vitest.it)("returns error when targetToken is forbidden", () => {
|
|
24
|
+
const result = (0, import_validate_token_to_obtain.validateTokenToObtain)({
|
|
25
|
+
targetToken: import_test_utils.mockToken1,
|
|
26
|
+
creditManager: (0, import_test_utils.buildCreditManager)({
|
|
27
|
+
...mockCreditManager,
|
|
28
|
+
forbiddenTokens: {
|
|
29
|
+
[import_test_utils.mockToken1]: true
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
});
|
|
33
|
+
(0, import_vitest.expect)(result).toEqual({ message: "tokenIsForbidden", token: import_test_utils.mockToken1 });
|
|
34
|
+
});
|
|
35
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
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 __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var validation_types_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(validation_types_exports);
|
|
@@ -25,6 +25,7 @@ __export(math_exports, {
|
|
|
25
25
|
MIN_INT96: () => MIN_INT96,
|
|
26
26
|
PERCENTAGE_DECIMALS: () => PERCENTAGE_DECIMALS,
|
|
27
27
|
PERCENTAGE_FACTOR: () => PERCENTAGE_FACTOR,
|
|
28
|
+
PERCENTAGE_FACTOR_1KK: () => PERCENTAGE_FACTOR_1KK,
|
|
28
29
|
PRICE_DECIMALS: () => PRICE_DECIMALS,
|
|
29
30
|
PRICE_DECIMALS_POW: () => PRICE_DECIMALS_POW,
|
|
30
31
|
RAY: () => RAY,
|
|
@@ -52,6 +53,7 @@ const PRICE_DECIMALS = 10n ** BigInt(PRICE_DECIMALS_POW);
|
|
|
52
53
|
const SECONDS_PER_YEAR = 365 * 24 * 3600;
|
|
53
54
|
const PERCENTAGE_DECIMALS = 100n;
|
|
54
55
|
const PERCENTAGE_FACTOR = 10000n;
|
|
56
|
+
const PERCENTAGE_FACTOR_1KK = PERCENTAGE_FACTOR * PERCENTAGE_DECIMALS;
|
|
55
57
|
const LEVERAGE_DECIMALS = 100n;
|
|
56
58
|
const SLIPPAGE_DECIMALS = 100n;
|
|
57
59
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -63,6 +65,7 @@ const SLIPPAGE_DECIMALS = 100n;
|
|
|
63
65
|
MIN_INT96,
|
|
64
66
|
PERCENTAGE_DECIMALS,
|
|
65
67
|
PERCENTAGE_FACTOR,
|
|
68
|
+
PERCENTAGE_FACTOR_1KK,
|
|
66
69
|
PRICE_DECIMALS,
|
|
67
70
|
PRICE_DECIMALS_POW,
|
|
68
71
|
RAY,
|