@gearbox-protocol/sdk 3.0.0-next.152 → 3.0.0-next.154
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/lib/core/creditAccount.d.ts +3 -0
- package/lib/core/creditAccount.js +41 -20
- package/lib/core/creditAccount.spec.js +232 -102
- package/lib/core/pool.d.ts +2 -0
- package/lib/core/pool.js +16 -9
- package/lib/utils/math.d.ts +1 -0
- package/lib/utils/math.js +1 -0
- package/package.json +1 -1
|
@@ -3,6 +3,8 @@ import { CaTokenBalance, CreditAccountDataPayload } from "../payload/creditAccou
|
|
|
3
3
|
import { QuotaInfo } from "../payload/creditManager";
|
|
4
4
|
import { TokenData } from "../tokens/tokenData";
|
|
5
5
|
import { Asset, AssetWithAmountInTarget } from "./assets";
|
|
6
|
+
export declare const MIN_INT96 = -39614081257132168796771975168n;
|
|
7
|
+
export declare const MAX_UINT256 = 115792089237316195423570985008687907853269984665640564039457584007913129639935n;
|
|
6
8
|
export interface CalcOverallAPYProps {
|
|
7
9
|
caAssets: Array<Asset>;
|
|
8
10
|
lpAPY: LpTokensAPY | undefined;
|
|
@@ -119,6 +121,7 @@ export declare class CreditAccountData {
|
|
|
119
121
|
hash(): string;
|
|
120
122
|
static hash(creditManager: string, borrower: string): string;
|
|
121
123
|
static calcHealthFactor({ assets, quotas, quotasInfo, liquidationThresholds, underlyingToken, debt, prices, }: CalcHealthFactorProps): number;
|
|
124
|
+
static roundUpQuota(quotaChange: bigint): bigint;
|
|
122
125
|
static calcRecommendedQuota({ amount, debt, lt, quotaReserve, }: CalcRecommendedQuotaProps): bigint;
|
|
123
126
|
static calcDefaultQuota({ amount, lt, quotaReserve }: CalcDefaultQuotaProps): bigint;
|
|
124
127
|
static calcQuotaUpdate(props: CalcQuotaUpdateProps): CalcQuotaUpdateReturnType;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CreditAccountData = void 0;
|
|
3
|
+
exports.CreditAccountData = exports.MAX_UINT256 = exports.MIN_INT96 = void 0;
|
|
4
4
|
const sdk_gov_1 = require("@gearbox-protocol/sdk-gov");
|
|
5
5
|
const formatter_1 = require("../utils/formatter");
|
|
6
6
|
const math_1 = require("../utils/math");
|
|
7
7
|
const price_1 = require("../utils/price");
|
|
8
|
+
exports.MIN_INT96 = -39614081257132168796771975168n;
|
|
9
|
+
exports.MAX_UINT256 = 115792089237316195423570985008687907853269984665640564039457584007913129639935n;
|
|
8
10
|
const MAX_UINT16 = 65535;
|
|
9
11
|
class CreditAccountData {
|
|
10
12
|
isSuccessful;
|
|
@@ -112,10 +114,10 @@ class CreditAccountData {
|
|
|
112
114
|
const totalPrice2 = price_1.PriceUtils.calcTotalPrice(price2, amount2, token2?.decimals);
|
|
113
115
|
if (totalPrice1 === totalPrice2) {
|
|
114
116
|
return amount1 === amount2
|
|
115
|
-
?
|
|
116
|
-
:
|
|
117
|
+
? this.tokensAbcComparator(token1, token2)
|
|
118
|
+
: this.amountAbcComparator(amount1, amount2);
|
|
117
119
|
}
|
|
118
|
-
return
|
|
120
|
+
return this.amountAbcComparator(totalPrice1, totalPrice2);
|
|
119
121
|
});
|
|
120
122
|
}
|
|
121
123
|
static sortAssets(balances, prices, tokens) {
|
|
@@ -130,10 +132,10 @@ class CreditAccountData {
|
|
|
130
132
|
const totalPrice2 = price_1.PriceUtils.calcTotalPrice(price2, amount2, token2?.decimals);
|
|
131
133
|
if (totalPrice1 === totalPrice2) {
|
|
132
134
|
return amount1 === amount2
|
|
133
|
-
?
|
|
134
|
-
:
|
|
135
|
+
? this.tokensAbcComparator(token1, token2)
|
|
136
|
+
: this.amountAbcComparator(amount1, amount2);
|
|
135
137
|
}
|
|
136
|
-
return
|
|
138
|
+
return this.amountAbcComparator(totalPrice1, totalPrice2);
|
|
137
139
|
});
|
|
138
140
|
}
|
|
139
141
|
static tokensAbcComparator(t1, t2) {
|
|
@@ -227,32 +229,43 @@ class CreditAccountData {
|
|
|
227
229
|
: 0n;
|
|
228
230
|
return Number(hfInPercent);
|
|
229
231
|
}
|
|
232
|
+
static roundUpQuota(quotaChange) {
|
|
233
|
+
return quotaChange !== exports.MIN_INT96
|
|
234
|
+
? (quotaChange / sdk_gov_1.PERCENTAGE_FACTOR) * sdk_gov_1.PERCENTAGE_FACTOR
|
|
235
|
+
: quotaChange;
|
|
236
|
+
}
|
|
230
237
|
static calcRecommendedQuota({ amount, debt, lt, quotaReserve, }) {
|
|
231
238
|
const recommendedBaseQuota = math_1.BigIntMath.min(debt, (amount * lt) / sdk_gov_1.PERCENTAGE_FACTOR);
|
|
232
239
|
const recommendedQuota = (recommendedBaseQuota * (sdk_gov_1.PERCENTAGE_FACTOR + quotaReserve)) /
|
|
233
240
|
sdk_gov_1.PERCENTAGE_FACTOR;
|
|
234
|
-
return recommendedQuota;
|
|
241
|
+
return this.roundUpQuota(recommendedQuota);
|
|
235
242
|
}
|
|
236
243
|
static calcDefaultQuota({ amount, lt, quotaReserve }) {
|
|
237
244
|
const recommendedBaseQuota = (amount * lt) / sdk_gov_1.PERCENTAGE_FACTOR;
|
|
238
245
|
const recommendedQuota = (recommendedBaseQuota * (sdk_gov_1.PERCENTAGE_FACTOR + quotaReserve)) /
|
|
239
246
|
sdk_gov_1.PERCENTAGE_FACTOR;
|
|
240
|
-
return recommendedQuota;
|
|
247
|
+
return this.roundUpQuota(recommendedQuota);
|
|
241
248
|
}
|
|
242
249
|
static calcQuotaUpdate(props) {
|
|
243
250
|
const { quotas, initialQuotas, maxDebt, allowedToSpend, allowedToObtain } = props;
|
|
244
251
|
const quotaDecrease = Object.keys(allowedToSpend).reduce((acc, token) => {
|
|
245
|
-
const ch =
|
|
252
|
+
const ch = this.getSingleQuotaChange(token, 0n, props);
|
|
246
253
|
if (ch)
|
|
247
254
|
acc[ch.token] = ch;
|
|
248
255
|
return acc;
|
|
249
256
|
}, {});
|
|
250
|
-
const quotaCap = maxDebt * 2n;
|
|
251
|
-
const quotaBought = Object.values(initialQuotas).reduce((sum, q) => sum + (q?.quota || 0n), 0n);
|
|
252
|
-
const quotaReduced = Object.values(quotaDecrease).reduce((sum, q) =>
|
|
253
|
-
|
|
257
|
+
const quotaCap = this.roundUpQuota(maxDebt * 2n);
|
|
258
|
+
const quotaBought = Object.values(initialQuotas).reduce((sum, q) => sum + this.roundUpQuota(q?.quota || 0n), 0n);
|
|
259
|
+
const quotaReduced = Object.values(quotaDecrease).reduce((sum, q) => {
|
|
260
|
+
const quotaBalance = q.balance || 0n;
|
|
261
|
+
const safeBalance = quotaBalance === exports.MIN_INT96
|
|
262
|
+
? math_1.BigIntMath.neg(this.roundUpQuota(initialQuotas[q.token]?.quota || 0n))
|
|
263
|
+
: quotaBalance;
|
|
264
|
+
return sum + safeBalance;
|
|
265
|
+
}, 0n);
|
|
266
|
+
const maxQuotaIncrease = this.roundUpQuota(math_1.BigIntMath.max(quotaCap - (quotaBought + quotaReduced), 0n));
|
|
254
267
|
const quotaIncrease = Object.keys(allowedToObtain).reduce((acc, token) => {
|
|
255
|
-
const ch =
|
|
268
|
+
const ch = this.getSingleQuotaChange(token, maxQuotaIncrease, props);
|
|
256
269
|
if (ch)
|
|
257
270
|
acc[ch.token] = ch;
|
|
258
271
|
return acc;
|
|
@@ -271,7 +284,10 @@ class CreditAccountData {
|
|
|
271
284
|
};
|
|
272
285
|
}
|
|
273
286
|
else {
|
|
274
|
-
const
|
|
287
|
+
const unsafeChange = quotaChange[token]?.balance || 0n;
|
|
288
|
+
const change = unsafeChange === exports.MIN_INT96
|
|
289
|
+
? math_1.BigIntMath.neg(this.roundUpQuota(initialQuotas[cmQuota.token]?.quota || 0n))
|
|
290
|
+
: unsafeChange;
|
|
275
291
|
const quotaAfter = initialQuota + change;
|
|
276
292
|
acc[token] = {
|
|
277
293
|
balance: quotaAfter,
|
|
@@ -286,9 +302,9 @@ class CreditAccountData {
|
|
|
286
302
|
quotaIncrease: Object.values(quotaIncrease),
|
|
287
303
|
};
|
|
288
304
|
}
|
|
289
|
-
static getSingleQuotaChange(token,
|
|
305
|
+
static getSingleQuotaChange(token, unsafeMaxQuotaIncrease, props) {
|
|
290
306
|
const { isActive = false } = props.quotas[token] || {};
|
|
291
|
-
const { quota:
|
|
307
|
+
const { quota: unsafeInitialQuota = 0n } = props.initialQuotas[token] || {};
|
|
292
308
|
if (!isActive) {
|
|
293
309
|
return undefined;
|
|
294
310
|
}
|
|
@@ -296,15 +312,20 @@ class CreditAccountData {
|
|
|
296
312
|
const assetAfter = props.assetsAfterUpdate[token];
|
|
297
313
|
const { amountInTarget = 0n } = assetAfter || {};
|
|
298
314
|
const lt = props.liquidationThresholds[token] || 0n;
|
|
315
|
+
const maxQuotaIncrease = this.roundUpQuota(unsafeMaxQuotaIncrease);
|
|
316
|
+
const initialQuota = this.roundUpQuota(unsafeInitialQuota);
|
|
299
317
|
const defaultQuota = this.calcDefaultQuota({
|
|
300
318
|
lt,
|
|
301
319
|
quotaReserve: props.quotaReserve,
|
|
302
320
|
amount: amountInTarget,
|
|
303
321
|
});
|
|
304
|
-
const unsafeQuotaChange = defaultQuota - initialQuota;
|
|
322
|
+
const unsafeQuotaChange = this.roundUpQuota(defaultQuota - initialQuota);
|
|
305
323
|
const quotaChange = unsafeQuotaChange > 0
|
|
306
324
|
? math_1.BigIntMath.min(maxQuotaIncrease, unsafeQuotaChange)
|
|
307
|
-
:
|
|
325
|
+
: initialQuota !== 0n &&
|
|
326
|
+
math_1.BigIntMath.abs(unsafeQuotaChange) >= initialQuota
|
|
327
|
+
? exports.MIN_INT96
|
|
328
|
+
: unsafeQuotaChange;
|
|
308
329
|
const correctIncrease = assetAfter && props.allowedToObtain[token] && quotaChange > 0;
|
|
309
330
|
const correctDecrease = assetAfter && props.allowedToSpend[token] && quotaChange < 0;
|
|
310
331
|
if (correctIncrease || correctDecrease) {
|
|
@@ -410,10 +410,10 @@ const cmQuotas = {
|
|
|
410
410
|
};
|
|
411
411
|
const caQuota = {
|
|
412
412
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
413
|
-
quota: 5n,
|
|
413
|
+
quota: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
414
414
|
},
|
|
415
415
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
416
|
-
quota: 10n,
|
|
416
|
+
quota: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
417
417
|
},
|
|
418
418
|
};
|
|
419
419
|
const QUOTA_RESERVE = 100n;
|
|
@@ -422,7 +422,7 @@ const DEFAULT_LT = {
|
|
|
422
422
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: sdk_gov_1.PERCENTAGE_FACTOR,
|
|
423
423
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: sdk_gov_1.PERCENTAGE_FACTOR,
|
|
424
424
|
};
|
|
425
|
-
const HUGE_MAX_DEBT = 20n;
|
|
425
|
+
const HUGE_MAX_DEBT = 20n * sdk_gov_1.PERCENTAGE_FACTOR;
|
|
426
426
|
describe("CreditAccount calcQuotaUpdate test", () => {
|
|
427
427
|
it("open account should buy quota", () => {
|
|
428
428
|
const result = creditAccount_1.CreditAccountData.calcQuotaUpdate({
|
|
@@ -432,12 +432,12 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
432
432
|
initialQuotas: {},
|
|
433
433
|
assetsAfterUpdate: {
|
|
434
434
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
435
|
-
amountInTarget: 10n,
|
|
435
|
+
amountInTarget: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
436
436
|
balance: 0n,
|
|
437
437
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
438
438
|
},
|
|
439
439
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
440
|
-
amountInTarget: 20n,
|
|
440
|
+
amountInTarget: 20n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
441
441
|
balance: 0n,
|
|
442
442
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
443
443
|
},
|
|
@@ -451,26 +451,26 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
451
451
|
});
|
|
452
452
|
(0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([
|
|
453
453
|
{
|
|
454
|
-
balance: 10n,
|
|
454
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
455
455
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
456
456
|
},
|
|
457
457
|
{
|
|
458
|
-
balance: 20n,
|
|
458
|
+
balance: 20n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
459
459
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
460
460
|
},
|
|
461
461
|
]);
|
|
462
462
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([]);
|
|
463
463
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
464
464
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
465
|
-
balance: 10n,
|
|
465
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
466
466
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
467
467
|
},
|
|
468
468
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
469
|
-
balance: 20n,
|
|
469
|
+
balance: 20n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
470
470
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
471
471
|
},
|
|
472
472
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
473
|
-
balance: 0n,
|
|
473
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
474
474
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
475
475
|
},
|
|
476
476
|
});
|
|
@@ -483,7 +483,7 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
483
483
|
initialQuotas: caQuota,
|
|
484
484
|
assetsAfterUpdate: {
|
|
485
485
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
486
|
-
amountInTarget: 10n,
|
|
486
|
+
amountInTarget: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
487
487
|
balance: 0n,
|
|
488
488
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
489
489
|
},
|
|
@@ -496,22 +496,22 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
496
496
|
});
|
|
497
497
|
(0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([
|
|
498
498
|
{
|
|
499
|
-
balance: 10n,
|
|
499
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
500
500
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
501
501
|
},
|
|
502
502
|
]);
|
|
503
503
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([]);
|
|
504
504
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
505
505
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
506
|
-
balance: 5n,
|
|
506
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
507
507
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
508
508
|
},
|
|
509
509
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
510
|
-
balance: 10n,
|
|
510
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
511
511
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
512
512
|
},
|
|
513
513
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
514
|
-
balance: 10n,
|
|
514
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
515
515
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
516
516
|
},
|
|
517
517
|
});
|
|
@@ -524,7 +524,7 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
524
524
|
initialQuotas: caQuota,
|
|
525
525
|
assetsAfterUpdate: {
|
|
526
526
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
527
|
-
amountInTarget: 10n,
|
|
527
|
+
amountInTarget: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
528
528
|
balance: 0n,
|
|
529
529
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
530
530
|
},
|
|
@@ -537,22 +537,22 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
537
537
|
});
|
|
538
538
|
(0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([
|
|
539
539
|
{
|
|
540
|
-
balance: 5n,
|
|
540
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
541
541
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
542
542
|
},
|
|
543
543
|
]);
|
|
544
544
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([]);
|
|
545
545
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
546
546
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
547
|
-
balance: 10n,
|
|
547
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
548
548
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
549
549
|
},
|
|
550
550
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
551
|
-
balance: 10n,
|
|
551
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
552
552
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
553
553
|
},
|
|
554
554
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
555
|
-
balance: 0n,
|
|
555
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
556
556
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
557
557
|
},
|
|
558
558
|
});
|
|
@@ -565,7 +565,7 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
565
565
|
initialQuotas: caQuota,
|
|
566
566
|
assetsAfterUpdate: {
|
|
567
567
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
568
|
-
amountInTarget: 10n,
|
|
568
|
+
amountInTarget: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
569
569
|
balance: 0n,
|
|
570
570
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
571
571
|
},
|
|
@@ -580,15 +580,15 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
580
580
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([]);
|
|
581
581
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
582
582
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
583
|
-
balance: 5n,
|
|
583
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
584
584
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
585
585
|
},
|
|
586
586
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
587
|
-
balance: 10n,
|
|
587
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
588
588
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
589
589
|
},
|
|
590
590
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
591
|
-
balance: 0n,
|
|
591
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
592
592
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
593
593
|
},
|
|
594
594
|
});
|
|
@@ -601,12 +601,12 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
601
601
|
initialQuotas: caQuota,
|
|
602
602
|
assetsAfterUpdate: {
|
|
603
603
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
604
|
-
amountInTarget: 10n,
|
|
604
|
+
amountInTarget: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
605
605
|
balance: 0n,
|
|
606
606
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
607
607
|
},
|
|
608
608
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
609
|
-
amountInTarget: 0n,
|
|
609
|
+
amountInTarget: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
610
610
|
balance: 0n,
|
|
611
611
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
612
612
|
},
|
|
@@ -619,24 +619,27 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
619
619
|
});
|
|
620
620
|
(0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([
|
|
621
621
|
{
|
|
622
|
-
balance: 10n,
|
|
622
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
623
623
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
624
624
|
},
|
|
625
625
|
]);
|
|
626
626
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([
|
|
627
|
-
{
|
|
627
|
+
{
|
|
628
|
+
balance: creditAccount_1.MIN_INT96,
|
|
629
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
630
|
+
},
|
|
628
631
|
]);
|
|
629
632
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
630
633
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
631
|
-
balance: 5n,
|
|
634
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
632
635
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
633
636
|
},
|
|
634
637
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
635
|
-
balance: 0n,
|
|
638
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
636
639
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
637
640
|
},
|
|
638
641
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
639
|
-
balance: 10n,
|
|
642
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
640
643
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
641
644
|
},
|
|
642
645
|
});
|
|
@@ -649,12 +652,12 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
649
652
|
initialQuotas: caQuota,
|
|
650
653
|
assetsAfterUpdate: {
|
|
651
654
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
652
|
-
amountInTarget: 10n,
|
|
655
|
+
amountInTarget: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
653
656
|
balance: 0n,
|
|
654
657
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
655
658
|
},
|
|
656
659
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
657
|
-
amountInTarget: 0n,
|
|
660
|
+
amountInTarget: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
658
661
|
balance: 0n,
|
|
659
662
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
660
663
|
},
|
|
@@ -669,27 +672,27 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
669
672
|
});
|
|
670
673
|
(0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([
|
|
671
674
|
{
|
|
672
|
-
balance: 5n,
|
|
675
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
673
676
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
674
677
|
},
|
|
675
678
|
]);
|
|
676
679
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([
|
|
677
680
|
{
|
|
678
|
-
balance:
|
|
681
|
+
balance: creditAccount_1.MIN_INT96,
|
|
679
682
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
680
683
|
},
|
|
681
684
|
]);
|
|
682
685
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
683
686
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
684
|
-
balance: 10n,
|
|
687
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
685
688
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
686
689
|
},
|
|
687
690
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
688
|
-
balance: 0n,
|
|
691
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
689
692
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
690
693
|
},
|
|
691
694
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
692
|
-
balance: 0n,
|
|
695
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
693
696
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
694
697
|
},
|
|
695
698
|
});
|
|
@@ -702,12 +705,12 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
702
705
|
initialQuotas: caQuota,
|
|
703
706
|
assetsAfterUpdate: {
|
|
704
707
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
705
|
-
amountInTarget: 10n,
|
|
708
|
+
amountInTarget: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
706
709
|
balance: 0n,
|
|
707
710
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
708
711
|
},
|
|
709
712
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
710
|
-
amountInTarget: 0n,
|
|
713
|
+
amountInTarget: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
711
714
|
balance: 0n,
|
|
712
715
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
713
716
|
},
|
|
@@ -721,21 +724,21 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
721
724
|
(0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([]);
|
|
722
725
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([
|
|
723
726
|
{
|
|
724
|
-
balance:
|
|
727
|
+
balance: creditAccount_1.MIN_INT96,
|
|
725
728
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
726
729
|
},
|
|
727
730
|
]);
|
|
728
731
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
729
732
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
730
|
-
balance: 0n,
|
|
733
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
731
734
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
732
735
|
},
|
|
733
736
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
734
|
-
balance: 10n,
|
|
737
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
735
738
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
736
739
|
},
|
|
737
740
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
738
|
-
balance: 0n,
|
|
741
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
739
742
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
740
743
|
},
|
|
741
744
|
});
|
|
@@ -748,12 +751,12 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
748
751
|
initialQuotas: caQuota,
|
|
749
752
|
assetsAfterUpdate: {
|
|
750
753
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
751
|
-
amountInTarget: 10n,
|
|
754
|
+
amountInTarget: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
752
755
|
balance: 0n,
|
|
753
756
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
754
757
|
},
|
|
755
758
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
756
|
-
amountInTarget: 0n,
|
|
759
|
+
amountInTarget: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
757
760
|
balance: 0n,
|
|
758
761
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
759
762
|
},
|
|
@@ -766,15 +769,15 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
766
769
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([]);
|
|
767
770
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
768
771
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
769
|
-
balance: 5n,
|
|
772
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
770
773
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
771
774
|
},
|
|
772
775
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
773
|
-
balance: 10n,
|
|
776
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
774
777
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
775
778
|
},
|
|
776
779
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
777
|
-
balance: 0n,
|
|
780
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
778
781
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
779
782
|
},
|
|
780
783
|
});
|
|
@@ -800,12 +803,12 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
800
803
|
initialQuotas: caQuota,
|
|
801
804
|
assetsAfterUpdate: {
|
|
802
805
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
803
|
-
amountInTarget: 10n,
|
|
806
|
+
amountInTarget: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
804
807
|
balance: 0n,
|
|
805
808
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
806
809
|
},
|
|
807
810
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
808
|
-
amountInTarget: 0n,
|
|
811
|
+
amountInTarget: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
809
812
|
balance: 0n,
|
|
810
813
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
811
814
|
},
|
|
@@ -822,15 +825,15 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
822
825
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([]);
|
|
823
826
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
824
827
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
825
|
-
balance: 5n,
|
|
828
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
826
829
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
827
830
|
},
|
|
828
831
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
829
|
-
balance: 10n,
|
|
832
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
830
833
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
831
834
|
},
|
|
832
835
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
833
|
-
balance: 0n,
|
|
836
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
834
837
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
835
838
|
},
|
|
836
839
|
});
|
|
@@ -843,17 +846,17 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
843
846
|
initialQuotas: {
|
|
844
847
|
...caQuota,
|
|
845
848
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
846
|
-
quota: 5n,
|
|
849
|
+
quota: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
847
850
|
},
|
|
848
851
|
},
|
|
849
852
|
assetsAfterUpdate: {
|
|
850
853
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
851
|
-
amountInTarget: 10n,
|
|
854
|
+
amountInTarget: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
852
855
|
balance: 0n,
|
|
853
856
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
854
857
|
},
|
|
855
858
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
856
|
-
amountInTarget: 5n,
|
|
859
|
+
amountInTarget: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
857
860
|
balance: 0n,
|
|
858
861
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
859
862
|
},
|
|
@@ -866,19 +869,22 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
866
869
|
});
|
|
867
870
|
(0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([]);
|
|
868
871
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([
|
|
869
|
-
{
|
|
872
|
+
{
|
|
873
|
+
balance: creditAccount_1.MIN_INT96,
|
|
874
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
875
|
+
},
|
|
870
876
|
]);
|
|
871
877
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
872
878
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
873
|
-
balance: 5n,
|
|
879
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
874
880
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
875
881
|
},
|
|
876
882
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
877
|
-
balance: 0n,
|
|
883
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
878
884
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
879
885
|
},
|
|
880
886
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
881
|
-
balance: 5n,
|
|
887
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
882
888
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
883
889
|
},
|
|
884
890
|
});
|
|
@@ -890,16 +896,16 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
890
896
|
quotas: cmQuotas,
|
|
891
897
|
initialQuotas: {
|
|
892
898
|
...caQuota,
|
|
893
|
-
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: { quota: 5n },
|
|
899
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: { quota: 5n * sdk_gov_1.PERCENTAGE_FACTOR },
|
|
894
900
|
},
|
|
895
901
|
assetsAfterUpdate: {
|
|
896
902
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
897
|
-
amountInTarget: 20n,
|
|
903
|
+
amountInTarget: 20n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
898
904
|
balance: 0n,
|
|
899
905
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
900
906
|
},
|
|
901
907
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
902
|
-
amountInTarget: 5n,
|
|
908
|
+
amountInTarget: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
903
909
|
balance: 0n,
|
|
904
910
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
905
911
|
},
|
|
@@ -915,24 +921,27 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
915
921
|
});
|
|
916
922
|
(0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([
|
|
917
923
|
{
|
|
918
|
-
balance: 5n,
|
|
924
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
919
925
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
920
926
|
},
|
|
921
927
|
]);
|
|
922
928
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([
|
|
923
|
-
{
|
|
929
|
+
{
|
|
930
|
+
balance: -5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
931
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
932
|
+
},
|
|
924
933
|
]);
|
|
925
934
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
926
935
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
927
|
-
balance: 5n,
|
|
936
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
928
937
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
929
938
|
},
|
|
930
939
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
931
|
-
balance: 5n,
|
|
940
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
932
941
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
933
942
|
},
|
|
934
943
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
935
|
-
balance: 10n,
|
|
944
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
936
945
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
937
946
|
},
|
|
938
947
|
});
|
|
@@ -944,16 +953,16 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
944
953
|
quotas: cmQuotas,
|
|
945
954
|
initialQuotas: {
|
|
946
955
|
...caQuota,
|
|
947
|
-
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: { quota: 5n },
|
|
956
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: { quota: 5n * sdk_gov_1.PERCENTAGE_FACTOR },
|
|
948
957
|
},
|
|
949
958
|
assetsAfterUpdate: {
|
|
950
959
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
951
|
-
amountInTarget: 10n,
|
|
960
|
+
amountInTarget: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
952
961
|
balance: 0n,
|
|
953
962
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
954
963
|
},
|
|
955
964
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
956
|
-
amountInTarget: 5n,
|
|
965
|
+
amountInTarget: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
957
966
|
balance: 0n,
|
|
958
967
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
959
968
|
},
|
|
@@ -969,42 +978,45 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
969
978
|
});
|
|
970
979
|
(0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([]);
|
|
971
980
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([
|
|
972
|
-
{
|
|
981
|
+
{
|
|
982
|
+
balance: -5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
983
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
984
|
+
},
|
|
973
985
|
]);
|
|
974
986
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
975
987
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
976
|
-
balance: 5n,
|
|
988
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
977
989
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
978
990
|
},
|
|
979
991
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
980
|
-
balance: 5n,
|
|
992
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
981
993
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
982
994
|
},
|
|
983
995
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
984
|
-
balance: 5n,
|
|
996
|
+
balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
985
997
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
986
998
|
},
|
|
987
999
|
});
|
|
988
1000
|
});
|
|
989
1001
|
it("swap should buy additional quota after limit was increased", () => {
|
|
990
1002
|
const result = creditAccount_1.CreditAccountData.calcQuotaUpdate({
|
|
991
|
-
maxDebt: 10n,
|
|
1003
|
+
maxDebt: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
992
1004
|
quotaReserve: QUOTA_RESERVE,
|
|
993
1005
|
quotas: cmQuotas,
|
|
994
1006
|
initialQuotas: {
|
|
995
1007
|
...caQuota,
|
|
996
1008
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
997
|
-
quota: 10n,
|
|
1009
|
+
quota: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
998
1010
|
},
|
|
999
1011
|
},
|
|
1000
1012
|
assetsAfterUpdate: {
|
|
1001
1013
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
1002
|
-
amountInTarget: 20n,
|
|
1014
|
+
amountInTarget: 20n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1003
1015
|
balance: 0n,
|
|
1004
1016
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
1005
1017
|
},
|
|
1006
1018
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
1007
|
-
amountInTarget: 0n,
|
|
1019
|
+
amountInTarget: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1008
1020
|
balance: 0n,
|
|
1009
1021
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
1010
1022
|
},
|
|
@@ -1019,50 +1031,50 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
1019
1031
|
});
|
|
1020
1032
|
(0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([
|
|
1021
1033
|
{
|
|
1022
|
-
balance: 10n,
|
|
1034
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1023
1035
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
1024
1036
|
},
|
|
1025
1037
|
]);
|
|
1026
1038
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([
|
|
1027
1039
|
{
|
|
1028
|
-
balance:
|
|
1040
|
+
balance: creditAccount_1.MIN_INT96,
|
|
1029
1041
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
1030
1042
|
},
|
|
1031
1043
|
]);
|
|
1032
1044
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
1033
1045
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
1034
|
-
balance: 20n,
|
|
1046
|
+
balance: 20n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1035
1047
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
1036
1048
|
},
|
|
1037
1049
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
1038
|
-
balance: 0n,
|
|
1050
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1039
1051
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
1040
1052
|
},
|
|
1041
1053
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
1042
|
-
balance: 0n,
|
|
1054
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1043
1055
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
1044
1056
|
},
|
|
1045
1057
|
});
|
|
1046
1058
|
});
|
|
1047
1059
|
it("swap should buy additional quota with respect to debt limit", () => {
|
|
1048
1060
|
const result = creditAccount_1.CreditAccountData.calcQuotaUpdate({
|
|
1049
|
-
maxDebt: 9n,
|
|
1061
|
+
maxDebt: 9n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1050
1062
|
quotaReserve: QUOTA_RESERVE,
|
|
1051
1063
|
quotas: cmQuotas,
|
|
1052
1064
|
initialQuotas: {
|
|
1053
1065
|
...caQuota,
|
|
1054
1066
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
1055
|
-
quota: 10n,
|
|
1067
|
+
quota: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1056
1068
|
},
|
|
1057
1069
|
},
|
|
1058
1070
|
assetsAfterUpdate: {
|
|
1059
1071
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
1060
|
-
amountInTarget: 20n,
|
|
1072
|
+
amountInTarget: 20n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1061
1073
|
balance: 0n,
|
|
1062
1074
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
1063
1075
|
},
|
|
1064
1076
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
1065
|
-
amountInTarget: 0n,
|
|
1077
|
+
amountInTarget: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1066
1078
|
balance: 0n,
|
|
1067
1079
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
1068
1080
|
},
|
|
@@ -1077,50 +1089,50 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
1077
1089
|
});
|
|
1078
1090
|
(0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([
|
|
1079
1091
|
{
|
|
1080
|
-
balance: 8n,
|
|
1092
|
+
balance: 8n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1081
1093
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
1082
1094
|
},
|
|
1083
1095
|
]);
|
|
1084
1096
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([
|
|
1085
1097
|
{
|
|
1086
|
-
balance:
|
|
1098
|
+
balance: creditAccount_1.MIN_INT96,
|
|
1087
1099
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
1088
1100
|
},
|
|
1089
1101
|
]);
|
|
1090
1102
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
1091
1103
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
1092
|
-
balance: 18n,
|
|
1104
|
+
balance: 18n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1093
1105
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
1094
1106
|
},
|
|
1095
1107
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
1096
|
-
balance: 0n,
|
|
1108
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1097
1109
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
1098
1110
|
},
|
|
1099
1111
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
1100
|
-
balance: 0n,
|
|
1112
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1101
1113
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
1102
1114
|
},
|
|
1103
1115
|
});
|
|
1104
1116
|
});
|
|
1105
1117
|
it("swap shouldn't buy additional quota if debt limit more then current quota", () => {
|
|
1106
1118
|
const result = creditAccount_1.CreditAccountData.calcQuotaUpdate({
|
|
1107
|
-
maxDebt: 5n,
|
|
1119
|
+
maxDebt: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1108
1120
|
quotaReserve: QUOTA_RESERVE,
|
|
1109
1121
|
quotas: cmQuotas,
|
|
1110
1122
|
initialQuotas: {
|
|
1111
1123
|
...caQuota,
|
|
1112
1124
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
1113
|
-
quota: 10n,
|
|
1125
|
+
quota: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1114
1126
|
},
|
|
1115
1127
|
},
|
|
1116
1128
|
assetsAfterUpdate: {
|
|
1117
1129
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
1118
|
-
amountInTarget: 20n,
|
|
1130
|
+
amountInTarget: 20n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1119
1131
|
balance: 0n,
|
|
1120
1132
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
1121
1133
|
},
|
|
1122
1134
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
1123
|
-
amountInTarget: 0n,
|
|
1135
|
+
amountInTarget: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1124
1136
|
balance: 0n,
|
|
1125
1137
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
1126
1138
|
},
|
|
@@ -1136,21 +1148,139 @@ describe("CreditAccount calcQuotaUpdate test", () => {
|
|
|
1136
1148
|
(0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([]);
|
|
1137
1149
|
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([
|
|
1138
1150
|
{
|
|
1139
|
-
balance:
|
|
1151
|
+
balance: creditAccount_1.MIN_INT96,
|
|
1152
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
1153
|
+
},
|
|
1154
|
+
]);
|
|
1155
|
+
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
1156
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
1157
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1158
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
1159
|
+
},
|
|
1160
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
1161
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1162
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
1163
|
+
},
|
|
1164
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
1165
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1166
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
1167
|
+
},
|
|
1168
|
+
});
|
|
1169
|
+
});
|
|
1170
|
+
it("swap on old accounts should work correctly", () => {
|
|
1171
|
+
const result = creditAccount_1.CreditAccountData.calcQuotaUpdate({
|
|
1172
|
+
maxDebt: HUGE_MAX_DEBT,
|
|
1173
|
+
quotaReserve: QUOTA_RESERVE,
|
|
1174
|
+
quotas: cmQuotas,
|
|
1175
|
+
initialQuotas: {
|
|
1176
|
+
...caQuota,
|
|
1177
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
1178
|
+
quota: 52345n,
|
|
1179
|
+
},
|
|
1180
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
1181
|
+
quota: 107458n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1182
|
+
},
|
|
1183
|
+
},
|
|
1184
|
+
assetsAfterUpdate: {
|
|
1185
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
1186
|
+
amountInTarget: 101345n,
|
|
1187
|
+
balance: 0n,
|
|
1188
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
1189
|
+
},
|
|
1190
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
1191
|
+
amountInTarget: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1192
|
+
balance: 0n,
|
|
1193
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
1194
|
+
},
|
|
1195
|
+
},
|
|
1196
|
+
allowedToObtain: {
|
|
1197
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {},
|
|
1198
|
+
},
|
|
1199
|
+
allowedToSpend: { [sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {} },
|
|
1200
|
+
liquidationThresholds: DEFAULT_LT,
|
|
1201
|
+
});
|
|
1202
|
+
(0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([
|
|
1203
|
+
{
|
|
1204
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1205
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
1206
|
+
},
|
|
1207
|
+
]);
|
|
1208
|
+
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([
|
|
1209
|
+
{
|
|
1210
|
+
balance: creditAccount_1.MIN_INT96,
|
|
1211
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
1212
|
+
},
|
|
1213
|
+
]);
|
|
1214
|
+
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
1215
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
1216
|
+
balance: 52345n,
|
|
1217
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
1218
|
+
},
|
|
1219
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
1220
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1221
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
1222
|
+
},
|
|
1223
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
1224
|
+
balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1225
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
1226
|
+
},
|
|
1227
|
+
});
|
|
1228
|
+
});
|
|
1229
|
+
it("swap on old accounts should work correctly and respect maxQuotaIncrease", () => {
|
|
1230
|
+
const result = creditAccount_1.CreditAccountData.calcQuotaUpdate({
|
|
1231
|
+
maxDebt: 6n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1232
|
+
quotaReserve: QUOTA_RESERVE,
|
|
1233
|
+
quotas: cmQuotas,
|
|
1234
|
+
initialQuotas: {
|
|
1235
|
+
...caQuota,
|
|
1236
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
1237
|
+
quota: 52345n,
|
|
1238
|
+
},
|
|
1239
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
1240
|
+
quota: 107458n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1241
|
+
},
|
|
1242
|
+
},
|
|
1243
|
+
assetsAfterUpdate: {
|
|
1244
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
1245
|
+
amountInTarget: 101345n,
|
|
1246
|
+
balance: 0n,
|
|
1247
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
1248
|
+
},
|
|
1249
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
1250
|
+
amountInTarget: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1251
|
+
balance: 0n,
|
|
1252
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
1253
|
+
},
|
|
1254
|
+
},
|
|
1255
|
+
allowedToObtain: {
|
|
1256
|
+
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {},
|
|
1257
|
+
},
|
|
1258
|
+
allowedToSpend: { [sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {} },
|
|
1259
|
+
liquidationThresholds: DEFAULT_LT,
|
|
1260
|
+
});
|
|
1261
|
+
(0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([
|
|
1262
|
+
{
|
|
1263
|
+
balance: 7n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1264
|
+
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
1265
|
+
},
|
|
1266
|
+
]);
|
|
1267
|
+
(0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([
|
|
1268
|
+
{
|
|
1269
|
+
balance: creditAccount_1.MIN_INT96,
|
|
1140
1270
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
1141
1271
|
},
|
|
1142
1272
|
]);
|
|
1143
1273
|
(0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
|
|
1144
1274
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
|
|
1145
|
-
balance:
|
|
1275
|
+
balance: 52345n,
|
|
1146
1276
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
|
|
1147
1277
|
},
|
|
1148
1278
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
|
|
1149
|
-
balance: 0n,
|
|
1279
|
+
balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1150
1280
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
|
|
1151
1281
|
},
|
|
1152
1282
|
[sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
|
|
1153
|
-
balance:
|
|
1283
|
+
balance: 7n * sdk_gov_1.PERCENTAGE_FACTOR,
|
|
1154
1284
|
token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
|
|
1155
1285
|
},
|
|
1156
1286
|
});
|
package/lib/core/pool.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export declare class PoolData {
|
|
|
19
19
|
readonly expectedLiquidityLimit: bigint;
|
|
20
20
|
readonly availableLiquidity: bigint;
|
|
21
21
|
readonly baseInterestIndex: bigint;
|
|
22
|
+
readonly utilization: number;
|
|
22
23
|
readonly totalBorrowed: bigint;
|
|
23
24
|
readonly totalDebtLimit: bigint;
|
|
24
25
|
readonly creditManagerDebtParams: Record<string, CreditManagerDebtParams>;
|
|
@@ -39,6 +40,7 @@ export declare class PoolData {
|
|
|
39
40
|
getPoolContractV3(signer: Signer): IPoolV3;
|
|
40
41
|
calculateBorrowRate({ provider, expectedLiquidity, availableLiquidity, }: CalculateBorrowRateProps): Promise<import("ethers").BigNumber>;
|
|
41
42
|
static getPoolType(name: string): PoolType;
|
|
43
|
+
static calculateUtilization(expected: bigint, available: bigint): number;
|
|
42
44
|
}
|
|
43
45
|
interface CalculateBorrowRateProps {
|
|
44
46
|
provider: providers.Provider;
|
package/lib/core/pool.js
CHANGED
|
@@ -21,6 +21,7 @@ class PoolData {
|
|
|
21
21
|
expectedLiquidityLimit;
|
|
22
22
|
availableLiquidity;
|
|
23
23
|
baseInterestIndex;
|
|
24
|
+
utilization;
|
|
24
25
|
totalBorrowed;
|
|
25
26
|
totalDebtLimit;
|
|
26
27
|
creditManagerDebtParams;
|
|
@@ -48,11 +49,14 @@ class PoolData {
|
|
|
48
49
|
this.gauge = payload.gauge.toLowerCase();
|
|
49
50
|
this.name = payload.name;
|
|
50
51
|
this.symbol = payload.symbol;
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
const expected = (0, sdk_gov_1.toBigInt)(payload.expectedLiquidity);
|
|
53
|
+
const available = (0, sdk_gov_1.toBigInt)(payload.availableLiquidity);
|
|
54
|
+
this.expectedLiquidity = expected;
|
|
55
|
+
this.availableLiquidity = available;
|
|
53
56
|
this.expectedLiquidityLimit =
|
|
54
57
|
this.expectedLiquidity + this.availableLiquidity;
|
|
55
58
|
this.baseInterestIndex = (0, sdk_gov_1.toBigInt)(payload.baseInterestIndex);
|
|
59
|
+
this.utilization = PoolData.calculateUtilization(expected, available);
|
|
56
60
|
this.totalBorrowed = (0, sdk_gov_1.toBigInt)(payload.totalBorrowed);
|
|
57
61
|
this.totalDebtLimit = (0, sdk_gov_1.toBigInt)(payload.totalDebtLimit);
|
|
58
62
|
this.creditManagerDebtParams = Object.fromEntries(payload.creditManagerDebtParams.map(p => {
|
|
@@ -134,6 +138,12 @@ class PoolData {
|
|
|
134
138
|
return "trade";
|
|
135
139
|
return "universal";
|
|
136
140
|
}
|
|
141
|
+
static calculateUtilization(expected, available) {
|
|
142
|
+
return expected > 0
|
|
143
|
+
? Number(((expected - available) * sdk_gov_1.PERCENTAGE_FACTOR) / expected) /
|
|
144
|
+
Number(sdk_gov_1.PERCENTAGE_DECIMALS)
|
|
145
|
+
: 0;
|
|
146
|
+
}
|
|
137
147
|
}
|
|
138
148
|
exports.PoolData = PoolData;
|
|
139
149
|
class ChartsPoolData {
|
|
@@ -197,12 +207,6 @@ class ChartsPoolData {
|
|
|
197
207
|
this.name = payload.name || "";
|
|
198
208
|
this.earned7D = payload.earned7D || 0;
|
|
199
209
|
this.earned7DInUSD = payload.earned7DInUSD || 0;
|
|
200
|
-
const expected = (0, sdk_gov_1.toBigInt)(payload.expectedLiquidity || 0);
|
|
201
|
-
this.utilization =
|
|
202
|
-
expected > 0
|
|
203
|
-
? Number(((0, sdk_gov_1.toBigInt)(payload.totalBorrowed || 0) * sdk_gov_1.PERCENTAGE_FACTOR) /
|
|
204
|
-
expected) / Number(sdk_gov_1.PERCENTAGE_DECIMALS)
|
|
205
|
-
: 0;
|
|
206
210
|
this.dieselRate = (0, formatter_1.rayToNumber)(payload.dieselRate_RAY || 0);
|
|
207
211
|
this.dieselRateRay = (0, sdk_gov_1.toBigInt)(payload.dieselRate_RAY || 0);
|
|
208
212
|
this.depositAPY =
|
|
@@ -212,11 +216,14 @@ class ChartsPoolData {
|
|
|
212
216
|
(0, formatter_1.rayToNumber)(payload.borrowAPY_RAY || 0) * Number(sdk_gov_1.PERCENTAGE_DECIMALS);
|
|
213
217
|
this.borrowAPYRay = (0, sdk_gov_1.toBigInt)(payload.borrowAPY_RAY || 0);
|
|
214
218
|
this.lmAPY = (payload.lmAPY || 0) / Number(sdk_gov_1.PERCENTAGE_DECIMALS);
|
|
215
|
-
|
|
219
|
+
const expected = (0, sdk_gov_1.toBigInt)(payload.expectedLiquidity || 0);
|
|
220
|
+
const available = (0, sdk_gov_1.toBigInt)(payload.availableLiquidity || 0);
|
|
221
|
+
this.availableLiquidity = available;
|
|
216
222
|
this.oldAvailableLiquidity = (0, sdk_gov_1.toBigInt)(payload.availableLiquidityOld || 0);
|
|
217
223
|
this.availableLiquidityChange =
|
|
218
224
|
(payload.availableLiquidity10kBasis || 0) * Number(sdk_gov_1.PERCENTAGE_DECIMALS);
|
|
219
225
|
this.availableLiquidityInUSD = payload.availableLiquidityInUSD || 0;
|
|
226
|
+
this.utilization = PoolData.calculateUtilization(expected, available);
|
|
220
227
|
this.caLockedValue = payload.caLockedValue || 0;
|
|
221
228
|
this.oldCALockedValue = payload.caLockedValueOld || 0;
|
|
222
229
|
this.caLockedValueChange =
|
package/lib/utils/math.d.ts
CHANGED
package/lib/utils/math.js
CHANGED