@gearbox-protocol/sdk 3.0.0-next.274 → 3.0.0-next.276

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.
@@ -264,7 +264,7 @@ class CreditAccountData {
264
264
  const { quotas, initialQuotas, maxDebt, allowedToSpend, allowedToObtain } = props;
265
265
  const quotaDecrease = Object.keys(allowedToSpend).reduce((acc, token) => {
266
266
  const ch = this.getSingleQuotaChange(token, 0n, props);
267
- if (ch)
267
+ if (ch && ch.balance < 0)
268
268
  acc[ch.token] = ch;
269
269
  return acc;
270
270
  }, {});
@@ -280,7 +280,7 @@ class CreditAccountData {
280
280
  const maxQuotaIncrease = this.roundUpQuota(math_1.BigIntMath.max(quotaCap - (quotaBought + quotaReduced), 0n));
281
281
  const quotaIncrease = Object.keys(allowedToObtain).reduce((acc, token) => {
282
282
  const ch = this.getSingleQuotaChange(token, maxQuotaIncrease, props);
283
- if (ch)
283
+ if (ch && ch.balance > 0)
284
284
  acc[ch.token] = ch;
285
285
  return acc;
286
286
  }, {});
@@ -341,7 +341,7 @@ class CreditAccountData {
341
341
  const unsafeQuotaChange = this.roundUpQuota(defaultQuota - initialQuota);
342
342
  const quotaChange = unsafeQuotaChange > 0
343
343
  ? math_1.BigIntMath.min(maxQuotaIncrease, unsafeQuotaChange)
344
- : initialQuota !== 0n &&
344
+ : unsafeQuotaChange < 0 &&
345
345
  math_1.BigIntMath.abs(unsafeQuotaChange) >= initialQuota
346
346
  ? exports.MIN_INT96
347
347
  : unsafeQuotaChange;
@@ -1390,12 +1390,12 @@ describe("CreditAccount calcQuotaUpdate test", () => {
1390
1390
  [sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
1391
1391
  amountInTarget: 101345n,
1392
1392
  balance: 0n,
1393
- token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
1393
+ token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
1394
1394
  },
1395
1395
  [sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
1396
1396
  amountInTarget: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
1397
1397
  balance: 0n,
1398
- token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
1398
+ token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
1399
1399
  },
1400
1400
  },
1401
1401
  allowedToObtain: {
@@ -1449,12 +1449,12 @@ describe("CreditAccount calcQuotaUpdate test", () => {
1449
1449
  [sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
1450
1450
  amountInTarget: 101345n,
1451
1451
  balance: 0n,
1452
- token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
1452
+ token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
1453
1453
  },
1454
1454
  [sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
1455
1455
  amountInTarget: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
1456
1456
  balance: 0n,
1457
- token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
1457
+ token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
1458
1458
  },
1459
1459
  },
1460
1460
  allowedToObtain: {
@@ -1490,6 +1490,80 @@ describe("CreditAccount calcQuotaUpdate test", () => {
1490
1490
  },
1491
1491
  });
1492
1492
  });
1493
+ it("should buy quota correctly when all assets listed in both buy and spend", () => {
1494
+ const result = creditAccount_1.CreditAccountData.calcQuotaUpdate({
1495
+ maxDebt: HUGE_MAX_DEBT,
1496
+ quotaReserve: QUOTA_RESERVE,
1497
+ quotas: cmQuotas,
1498
+ initialQuotas: {
1499
+ ...caQuota,
1500
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
1501
+ quota: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
1502
+ },
1503
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
1504
+ quota: 15n * sdk_gov_1.PERCENTAGE_FACTOR,
1505
+ },
1506
+ },
1507
+ assetsAfterUpdate: {
1508
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
1509
+ amountInTarget: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
1510
+ balance: 0n,
1511
+ token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
1512
+ },
1513
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
1514
+ amountInTarget: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
1515
+ balance: 0n,
1516
+ token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
1517
+ },
1518
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
1519
+ amountInTarget: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
1520
+ balance: 0n,
1521
+ token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
1522
+ },
1523
+ },
1524
+ allowedToObtain: {
1525
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {},
1526
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {},
1527
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {},
1528
+ },
1529
+ allowedToSpend: {
1530
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {},
1531
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {},
1532
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {},
1533
+ },
1534
+ liquidationThresholds: DEFAULT_LT,
1535
+ });
1536
+ (0, chai_1.expect)(result.quotaIncrease).to.be.deep.eq([
1537
+ {
1538
+ balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
1539
+ token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
1540
+ },
1541
+ ]);
1542
+ (0, chai_1.expect)(result.quotaDecrease).to.be.deep.eq([
1543
+ {
1544
+ balance: creditAccount_1.MIN_INT96,
1545
+ token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
1546
+ },
1547
+ {
1548
+ balance: -5n * sdk_gov_1.PERCENTAGE_FACTOR,
1549
+ token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
1550
+ },
1551
+ ]);
1552
+ (0, chai_1.expect)(result.desiredQuota).to.be.deep.eq({
1553
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.DAI]: {
1554
+ balance: 10n * sdk_gov_1.PERCENTAGE_FACTOR,
1555
+ token: sdk_gov_1.tokenDataByNetwork.Mainnet.DAI,
1556
+ },
1557
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.WETH]: {
1558
+ balance: 5n * sdk_gov_1.PERCENTAGE_FACTOR,
1559
+ token: sdk_gov_1.tokenDataByNetwork.Mainnet.WETH,
1560
+ },
1561
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.STETH]: {
1562
+ balance: 0n * sdk_gov_1.PERCENTAGE_FACTOR,
1563
+ token: sdk_gov_1.tokenDataByNetwork.Mainnet.STETH,
1564
+ },
1565
+ });
1566
+ });
1493
1567
  });
1494
1568
  describe("CreditAccount calcAvgQuotaBorrowRate test", () => {
1495
1569
  it("should calculate quota rate (same amounts, different rates)", () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "3.0.0-next.274",
3
+ "version": "3.0.0-next.276",
4
4
  "description": "Gearbox SDK",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -28,7 +28,7 @@
28
28
  "test": "npx mocha -r ts-node/register -r dotenv/config 'src/**/*.spec.ts'"
29
29
  },
30
30
  "dependencies": {
31
- "@gearbox-protocol/sdk-gov": "v2.34.0-next.20",
31
+ "@gearbox-protocol/sdk-gov": "v2.34.0-next.21",
32
32
  "@wagmi/cli": "^2.1.13",
33
33
  "axios": "^1.2.6",
34
34
  "decimal.js-light": "^2.5.1",