@kamino-finance/klend-sdk 5.13.0 → 5.13.2
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/classes/action.d.ts +74 -49
- package/dist/classes/action.d.ts.map +1 -1
- package/dist/classes/action.js +167 -115
- package/dist/classes/action.js.map +1 -1
- package/dist/classes/fraction.d.ts +2 -0
- package/dist/classes/fraction.d.ts.map +1 -1
- package/dist/classes/fraction.js +6 -0
- package/dist/classes/fraction.js.map +1 -1
- package/dist/classes/index.d.ts +3 -2
- package/dist/classes/index.d.ts.map +1 -1
- package/dist/classes/index.js +3 -2
- package/dist/classes/index.js.map +1 -1
- package/dist/classes/manager.d.ts +7 -7
- package/dist/classes/manager.d.ts.map +1 -1
- package/dist/classes/manager.js +46 -46
- package/dist/classes/manager.js.map +1 -1
- package/dist/classes/obligation.d.ts.map +1 -1
- package/dist/classes/obligation.js +1 -6
- package/dist/classes/obligation.js.map +1 -1
- package/dist/classes/obligationOrder.d.ts +1 -1
- package/dist/classes/obligationOrder.d.ts.map +1 -1
- package/dist/classes/reserve.d.ts +2 -2
- package/dist/classes/reserve.d.ts.map +1 -1
- package/dist/classes/reserve.js +71 -74
- package/dist/classes/reserve.js.map +1 -1
- package/dist/classes/shared.d.ts +13 -0
- package/dist/classes/shared.d.ts.map +1 -1
- package/dist/classes/utils.d.ts +1 -9
- package/dist/classes/utils.d.ts.map +1 -1
- package/dist/classes/utils.js +4 -51
- package/dist/classes/utils.js.map +1 -1
- package/dist/classes/vault.d.ts +5 -3
- package/dist/classes/vault.d.ts.map +1 -1
- package/dist/classes/vault.js +53 -41
- package/dist/classes/vault.js.map +1 -1
- package/dist/classes/{types.d.ts → vault_types.d.ts} +2 -15
- package/dist/classes/vault_types.d.ts.map +1 -0
- package/dist/classes/{types.js → vault_types.js} +1 -1
- package/dist/classes/vault_types.js.map +1 -0
- package/dist/client_kamino_manager.d.ts.map +1 -1
- package/dist/client_kamino_manager.js +25 -26
- package/dist/client_kamino_manager.js.map +1 -1
- package/dist/lending_operations/repay_with_collateral_operations.d.ts.map +1 -1
- package/dist/lending_operations/repay_with_collateral_operations.js +8 -8
- package/dist/lending_operations/repay_with_collateral_operations.js.map +1 -1
- package/dist/lending_operations/swap_collateral_operations.d.ts +6 -6
- package/dist/lending_operations/swap_collateral_operations.d.ts.map +1 -1
- package/dist/lending_operations/swap_collateral_operations.js +63 -65
- package/dist/lending_operations/swap_collateral_operations.js.map +1 -1
- package/dist/leverage/calcs.d.ts +0 -1
- package/dist/leverage/calcs.d.ts.map +1 -1
- package/dist/leverage/calcs.js +5 -8
- package/dist/leverage/calcs.js.map +1 -1
- package/dist/leverage/operations.d.ts +5 -5
- package/dist/leverage/operations.d.ts.map +1 -1
- package/dist/leverage/operations.js +80 -87
- package/dist/leverage/operations.js.map +1 -1
- package/dist/leverage/types.d.ts +1 -1
- package/dist/leverage/types.d.ts.map +1 -1
- package/dist/leverage/utils.d.ts +2 -2
- package/dist/leverage/utils.d.ts.map +1 -1
- package/dist/leverage/utils.js +5 -5
- package/dist/leverage/utils.js.map +1 -1
- package/dist/referrals/instructions.d.ts +3 -3
- package/dist/referrals/instructions.d.ts.map +1 -1
- package/dist/referrals/instructions.js +10 -10
- package/dist/referrals/instructions.js.map +1 -1
- package/dist/referrals/operations.js +6 -6
- package/dist/referrals/operations.js.map +1 -1
- package/dist/utils/ata.d.ts +3 -3
- package/dist/utils/ata.d.ts.map +1 -1
- package/dist/utils/ata.js +22 -22
- package/dist/utils/ata.js.map +1 -1
- package/dist/utils/instruction.d.ts +2 -2
- package/dist/utils/instruction.d.ts.map +1 -1
- package/dist/utils/instruction.js +12 -12
- package/dist/utils/instruction.js.map +1 -1
- package/dist/utils/lookupTable.js +6 -6
- package/dist/utils/lookupTable.js.map +1 -1
- package/dist/utils/userMetadata.d.ts +1 -1
- package/dist/utils/userMetadata.d.ts.map +1 -1
- package/dist/utils/userMetadata.js +3 -3
- package/dist/utils/userMetadata.js.map +1 -1
- package/package.json +1 -1
- package/src/classes/action.ts +198 -150
- package/src/classes/fraction.ts +7 -0
- package/src/classes/index.ts +5 -2
- package/src/classes/manager.ts +54 -51
- package/src/classes/obligation.ts +2 -7
- package/src/classes/obligationOrder.ts +1 -1
- package/src/classes/reserve.ts +128 -137
- package/src/classes/shared.ts +15 -0
- package/src/classes/utils.ts +3 -52
- package/src/classes/vault.ts +56 -42
- package/src/classes/{types.ts → vault_types.ts} +1 -16
- package/src/client.ts +16 -16
- package/src/client_kamino_manager.ts +25 -25
- package/src/lending_operations/repay_with_collateral_operations.ts +13 -15
- package/src/lending_operations/swap_collateral_operations.ts +87 -89
- package/src/leverage/calcs.ts +2 -6
- package/src/leverage/operations.ts +91 -97
- package/src/leverage/types.ts +1 -1
- package/src/leverage/utils.ts +5 -5
- package/src/referrals/instructions.ts +6 -6
- package/src/referrals/operations.ts +9 -9
- package/src/utils/ata.ts +18 -18
- package/src/utils/instruction.ts +10 -10
- package/src/utils/lookupTable.ts +6 -6
- package/src/utils/userMetadata.ts +1 -1
- package/dist/classes/types.d.ts.map +0 -1
- package/dist/classes/types.js.map +0 -1
- package/dist/classes/types_utils.d.ts +0 -14
- package/dist/classes/types_utils.d.ts.map +0 -1
- package/dist/classes/types_utils.js +0 -50
- package/dist/classes/types_utils.js.map +0 -1
- package/src/classes/types_utils.ts +0 -49
package/src/classes/reserve.ts
CHANGED
|
@@ -39,8 +39,7 @@ import {
|
|
|
39
39
|
positiveOrZero,
|
|
40
40
|
sameLengthArrayEquals,
|
|
41
41
|
} from './utils';
|
|
42
|
-
import { Fraction } from './fraction';
|
|
43
|
-
import BN from 'bn.js';
|
|
42
|
+
import { bfToDecimal, Fraction } from './fraction';
|
|
44
43
|
import { ActionType } from './action';
|
|
45
44
|
import { BorrowCapsAndCounters, ElevationGroupDescription, KaminoMarket } from './market';
|
|
46
45
|
import {
|
|
@@ -212,9 +211,7 @@ export class KaminoReserve {
|
|
|
212
211
|
* @returns the stale cumulative borrow rate of the reserve from the last refresh
|
|
213
212
|
*/
|
|
214
213
|
getCumulativeBorrowRate(): Decimal {
|
|
215
|
-
|
|
216
|
-
const accSf = cumulativeBorrowRateBsf.reduce((prev, curr, i) => prev.add(curr.shln(i * 64)), new BN(0));
|
|
217
|
-
return new Fraction(accSf).toDecimal();
|
|
214
|
+
return bfToDecimal(this.state.liquidity.cumulativeBorrowRateBsf);
|
|
218
215
|
}
|
|
219
216
|
|
|
220
217
|
/**
|
|
@@ -1228,27 +1225,27 @@ function handleConfigUpdate(
|
|
|
1228
1225
|
key: ReserveConfigKey,
|
|
1229
1226
|
reserve: Reserve | undefined,
|
|
1230
1227
|
reserveConfig: ReserveConfig,
|
|
1231
|
-
|
|
1228
|
+
updateReserveIxsArgs: UpdateReserveIxsArg[]
|
|
1232
1229
|
): void {
|
|
1233
1230
|
switch (key) {
|
|
1234
1231
|
case 'status':
|
|
1235
1232
|
if (reserve === undefined || reserve.config.status !== reserveConfig.status) {
|
|
1236
|
-
|
|
1237
|
-
|
|
1233
|
+
updateReserveIxsArgs.push(
|
|
1234
|
+
createUpdateReserveIxsArg(UpdateConfigMode.UpdateReserveStatus.discriminator, reserveConfig.status)
|
|
1238
1235
|
);
|
|
1239
1236
|
}
|
|
1240
1237
|
break;
|
|
1241
1238
|
case 'assetTier':
|
|
1242
1239
|
if (reserve === undefined || reserve.config.assetTier !== reserveConfig.assetTier) {
|
|
1243
|
-
|
|
1244
|
-
|
|
1240
|
+
updateReserveIxsArgs.push(
|
|
1241
|
+
createUpdateReserveIxsArg(UpdateConfigMode.UpdateAssetTier.discriminator, reserveConfig.assetTier)
|
|
1245
1242
|
);
|
|
1246
1243
|
}
|
|
1247
1244
|
break;
|
|
1248
1245
|
case 'hostFixedInterestRateBps':
|
|
1249
1246
|
if (reserve === undefined || reserve.config.hostFixedInterestRateBps !== reserveConfig.hostFixedInterestRateBps) {
|
|
1250
|
-
|
|
1251
|
-
|
|
1247
|
+
updateReserveIxsArgs.push(
|
|
1248
|
+
createUpdateReserveIxsArg(
|
|
1252
1249
|
UpdateConfigMode.UpdateHostFixedInterestRateBps.discriminator,
|
|
1253
1250
|
reserveConfig.hostFixedInterestRateBps
|
|
1254
1251
|
)
|
|
@@ -1257,8 +1254,8 @@ function handleConfigUpdate(
|
|
|
1257
1254
|
break;
|
|
1258
1255
|
case 'protocolTakeRatePct':
|
|
1259
1256
|
if (reserve === undefined || reserve.config.protocolTakeRatePct !== reserveConfig.protocolTakeRatePct) {
|
|
1260
|
-
|
|
1261
|
-
|
|
1257
|
+
updateReserveIxsArgs.push(
|
|
1258
|
+
createUpdateReserveIxsArg(
|
|
1262
1259
|
UpdateConfigMode.UpdateProtocolTakeRate.discriminator,
|
|
1263
1260
|
reserveConfig.protocolTakeRatePct
|
|
1264
1261
|
)
|
|
@@ -1270,8 +1267,8 @@ function handleConfigUpdate(
|
|
|
1270
1267
|
reserve === undefined ||
|
|
1271
1268
|
reserve.config.protocolLiquidationFeePct !== reserveConfig.protocolLiquidationFeePct
|
|
1272
1269
|
) {
|
|
1273
|
-
|
|
1274
|
-
|
|
1270
|
+
updateReserveIxsArgs.push(
|
|
1271
|
+
createUpdateReserveIxsArg(
|
|
1275
1272
|
UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator,
|
|
1276
1273
|
reserveConfig.protocolLiquidationFeePct
|
|
1277
1274
|
)
|
|
@@ -1283,8 +1280,8 @@ function handleConfigUpdate(
|
|
|
1283
1280
|
reserve === undefined ||
|
|
1284
1281
|
reserve.config.protocolOrderExecutionFeePct !== reserveConfig.protocolOrderExecutionFeePct
|
|
1285
1282
|
) {
|
|
1286
|
-
|
|
1287
|
-
|
|
1283
|
+
updateReserveIxsArgs.push(
|
|
1284
|
+
createUpdateReserveIxsArg(
|
|
1288
1285
|
UpdateConfigMode.UpdateProtocolOrderExecutionFee.discriminator,
|
|
1289
1286
|
reserveConfig.protocolOrderExecutionFeePct
|
|
1290
1287
|
)
|
|
@@ -1293,15 +1290,15 @@ function handleConfigUpdate(
|
|
|
1293
1290
|
break;
|
|
1294
1291
|
case 'loanToValuePct':
|
|
1295
1292
|
if (reserve === undefined || reserve.config.loanToValuePct !== reserveConfig.loanToValuePct) {
|
|
1296
|
-
|
|
1297
|
-
|
|
1293
|
+
updateReserveIxsArgs.push(
|
|
1294
|
+
createUpdateReserveIxsArg(UpdateConfigMode.UpdateLoanToValuePct.discriminator, reserveConfig.loanToValuePct)
|
|
1298
1295
|
);
|
|
1299
1296
|
}
|
|
1300
1297
|
break;
|
|
1301
1298
|
case 'liquidationThresholdPct':
|
|
1302
1299
|
if (reserve === undefined || reserve.config.liquidationThresholdPct !== reserveConfig.liquidationThresholdPct) {
|
|
1303
|
-
|
|
1304
|
-
|
|
1300
|
+
updateReserveIxsArgs.push(
|
|
1301
|
+
createUpdateReserveIxsArg(
|
|
1305
1302
|
UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator,
|
|
1306
1303
|
reserveConfig.liquidationThresholdPct
|
|
1307
1304
|
)
|
|
@@ -1310,8 +1307,8 @@ function handleConfigUpdate(
|
|
|
1310
1307
|
break;
|
|
1311
1308
|
case 'minLiquidationBonusBps':
|
|
1312
1309
|
if (reserve === undefined || reserve.config.minLiquidationBonusBps !== reserveConfig.minLiquidationBonusBps) {
|
|
1313
|
-
|
|
1314
|
-
|
|
1310
|
+
updateReserveIxsArgs.push(
|
|
1311
|
+
createUpdateReserveIxsArg(
|
|
1315
1312
|
UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator,
|
|
1316
1313
|
reserveConfig.minLiquidationBonusBps
|
|
1317
1314
|
)
|
|
@@ -1320,8 +1317,8 @@ function handleConfigUpdate(
|
|
|
1320
1317
|
break;
|
|
1321
1318
|
case 'maxLiquidationBonusBps':
|
|
1322
1319
|
if (reserve === undefined || reserve.config.maxLiquidationBonusBps !== reserveConfig.maxLiquidationBonusBps) {
|
|
1323
|
-
|
|
1324
|
-
|
|
1320
|
+
updateReserveIxsArgs.push(
|
|
1321
|
+
createUpdateReserveIxsArg(
|
|
1325
1322
|
UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator,
|
|
1326
1323
|
reserveConfig.maxLiquidationBonusBps
|
|
1327
1324
|
)
|
|
@@ -1333,8 +1330,8 @@ function handleConfigUpdate(
|
|
|
1333
1330
|
reserve === undefined ||
|
|
1334
1331
|
reserve.config.badDebtLiquidationBonusBps !== reserveConfig.badDebtLiquidationBonusBps
|
|
1335
1332
|
) {
|
|
1336
|
-
|
|
1337
|
-
|
|
1333
|
+
updateReserveIxsArgs.push(
|
|
1334
|
+
createUpdateReserveIxsArg(
|
|
1338
1335
|
UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator,
|
|
1339
1336
|
reserveConfig.badDebtLiquidationBonusBps
|
|
1340
1337
|
)
|
|
@@ -1346,8 +1343,8 @@ function handleConfigUpdate(
|
|
|
1346
1343
|
reserve === undefined ||
|
|
1347
1344
|
!reserve.config.deleveragingMarginCallPeriodSecs.eq(reserveConfig.deleveragingMarginCallPeriodSecs)
|
|
1348
1345
|
) {
|
|
1349
|
-
|
|
1350
|
-
|
|
1346
|
+
updateReserveIxsArgs.push(
|
|
1347
|
+
createUpdateReserveIxsArg(
|
|
1351
1348
|
UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator,
|
|
1352
1349
|
reserveConfig.deleveragingMarginCallPeriodSecs.toNumber()
|
|
1353
1350
|
)
|
|
@@ -1359,8 +1356,8 @@ function handleConfigUpdate(
|
|
|
1359
1356
|
reserve === undefined ||
|
|
1360
1357
|
!reserve.config.deleveragingThresholdDecreaseBpsPerDay.eq(reserveConfig.deleveragingThresholdDecreaseBpsPerDay)
|
|
1361
1358
|
) {
|
|
1362
|
-
|
|
1363
|
-
|
|
1359
|
+
updateReserveIxsArgs.push(
|
|
1360
|
+
createUpdateReserveIxsArg(
|
|
1364
1361
|
UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.discriminator,
|
|
1365
1362
|
reserveConfig.deleveragingThresholdDecreaseBpsPerDay.toNumber()
|
|
1366
1363
|
)
|
|
@@ -1369,16 +1366,16 @@ function handleConfigUpdate(
|
|
|
1369
1366
|
break;
|
|
1370
1367
|
case 'fees':
|
|
1371
1368
|
if (reserve === undefined || !reserve.config.fees.borrowFeeSf.eq(reserveConfig.fees.borrowFeeSf)) {
|
|
1372
|
-
|
|
1373
|
-
|
|
1369
|
+
updateReserveIxsArgs.push(
|
|
1370
|
+
createUpdateReserveIxsArg(
|
|
1374
1371
|
UpdateConfigMode.UpdateFeesBorrowFee.discriminator,
|
|
1375
1372
|
reserveConfig.fees.borrowFeeSf.toNumber()
|
|
1376
1373
|
)
|
|
1377
1374
|
);
|
|
1378
1375
|
}
|
|
1379
1376
|
if (reserve === undefined || !reserve.config.fees.flashLoanFeeSf.eq(reserveConfig.fees.flashLoanFeeSf)) {
|
|
1380
|
-
|
|
1381
|
-
|
|
1377
|
+
updateReserveIxsArgs.push(
|
|
1378
|
+
createUpdateReserveIxsArg(
|
|
1382
1379
|
UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator,
|
|
1383
1380
|
reserveConfig.fees.flashLoanFeeSf.toNumber()
|
|
1384
1381
|
)
|
|
@@ -1387,11 +1384,8 @@ function handleConfigUpdate(
|
|
|
1387
1384
|
break;
|
|
1388
1385
|
case 'borrowRateCurve':
|
|
1389
1386
|
if (reserve === undefined) {
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
UpdateConfigMode.UpdateBorrowRateCurve.discriminator,
|
|
1393
|
-
reserveConfig.borrowRateCurve
|
|
1394
|
-
)
|
|
1387
|
+
updateReserveIxsArgs.push(
|
|
1388
|
+
createUpdateReserveIxsArg(UpdateConfigMode.UpdateBorrowRateCurve.discriminator, reserveConfig.borrowRateCurve)
|
|
1395
1389
|
);
|
|
1396
1390
|
} else {
|
|
1397
1391
|
let shouldBorrowCurveBeUpdated = false;
|
|
@@ -1408,8 +1402,8 @@ function handleConfigUpdate(
|
|
|
1408
1402
|
}
|
|
1409
1403
|
|
|
1410
1404
|
if (shouldBorrowCurveBeUpdated) {
|
|
1411
|
-
|
|
1412
|
-
|
|
1405
|
+
updateReserveIxsArgs.push(
|
|
1406
|
+
createUpdateReserveIxsArg(
|
|
1413
1407
|
UpdateConfigMode.UpdateBorrowRateCurve.discriminator,
|
|
1414
1408
|
reserveConfig.borrowRateCurve
|
|
1415
1409
|
)
|
|
@@ -1420,8 +1414,8 @@ function handleConfigUpdate(
|
|
|
1420
1414
|
break;
|
|
1421
1415
|
case 'borrowFactorPct':
|
|
1422
1416
|
if (reserve === undefined || !reserve.config.borrowFactorPct.eq(reserveConfig.borrowFactorPct)) {
|
|
1423
|
-
|
|
1424
|
-
|
|
1417
|
+
updateReserveIxsArgs.push(
|
|
1418
|
+
createUpdateReserveIxsArg(
|
|
1425
1419
|
UpdateConfigMode.UpdateBorrowFactor.discriminator,
|
|
1426
1420
|
reserveConfig.borrowFactorPct.toNumber()
|
|
1427
1421
|
)
|
|
@@ -1430,8 +1424,8 @@ function handleConfigUpdate(
|
|
|
1430
1424
|
break;
|
|
1431
1425
|
case 'depositLimit':
|
|
1432
1426
|
if (reserve === undefined || !reserve.config.depositLimit.eq(reserveConfig.depositLimit)) {
|
|
1433
|
-
|
|
1434
|
-
|
|
1427
|
+
updateReserveIxsArgs.push(
|
|
1428
|
+
createUpdateReserveIxsArg(
|
|
1435
1429
|
UpdateConfigMode.UpdateDepositLimit.discriminator,
|
|
1436
1430
|
BigInt(reserveConfig.depositLimit.toString())
|
|
1437
1431
|
)
|
|
@@ -1440,8 +1434,8 @@ function handleConfigUpdate(
|
|
|
1440
1434
|
break;
|
|
1441
1435
|
case 'borrowLimit':
|
|
1442
1436
|
if (reserve === undefined || !reserve.config.borrowLimit.eq(reserveConfig.borrowLimit)) {
|
|
1443
|
-
|
|
1444
|
-
|
|
1437
|
+
updateReserveIxsArgs.push(
|
|
1438
|
+
createUpdateReserveIxsArg(
|
|
1445
1439
|
UpdateConfigMode.UpdateBorrowLimit.discriminator,
|
|
1446
1440
|
BigInt(reserveConfig.borrowLimit.toString())
|
|
1447
1441
|
)
|
|
@@ -1451,124 +1445,124 @@ function handleConfigUpdate(
|
|
|
1451
1445
|
case 'tokenInfo':
|
|
1452
1446
|
const tokenInfo = reserveConfig.tokenInfo;
|
|
1453
1447
|
if (reserve === undefined) {
|
|
1454
|
-
|
|
1455
|
-
|
|
1448
|
+
updateReserveIxsArgs.push(
|
|
1449
|
+
createUpdateReserveIxsArg(UpdateConfigMode.UpdateTokenInfoName.discriminator, tokenInfo.name)
|
|
1456
1450
|
);
|
|
1457
|
-
|
|
1458
|
-
|
|
1451
|
+
updateReserveIxsArgs.push(
|
|
1452
|
+
createUpdateReserveIxsArg(
|
|
1459
1453
|
UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator,
|
|
1460
1454
|
tokenInfo.heuristic.lower.toNumber()
|
|
1461
1455
|
)
|
|
1462
1456
|
);
|
|
1463
|
-
|
|
1464
|
-
|
|
1457
|
+
updateReserveIxsArgs.push(
|
|
1458
|
+
createUpdateReserveIxsArg(
|
|
1465
1459
|
UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator,
|
|
1466
1460
|
tokenInfo.heuristic.upper.toNumber()
|
|
1467
1461
|
)
|
|
1468
1462
|
);
|
|
1469
|
-
|
|
1470
|
-
|
|
1463
|
+
updateReserveIxsArgs.push(
|
|
1464
|
+
createUpdateReserveIxsArg(
|
|
1471
1465
|
UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator,
|
|
1472
1466
|
tokenInfo.heuristic.exp.toNumber()
|
|
1473
1467
|
)
|
|
1474
1468
|
);
|
|
1475
|
-
|
|
1476
|
-
|
|
1469
|
+
updateReserveIxsArgs.push(
|
|
1470
|
+
createUpdateReserveIxsArg(
|
|
1477
1471
|
UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator,
|
|
1478
1472
|
tokenInfo.maxTwapDivergenceBps.toNumber()
|
|
1479
1473
|
)
|
|
1480
1474
|
);
|
|
1481
|
-
|
|
1482
|
-
|
|
1475
|
+
updateReserveIxsArgs.push(
|
|
1476
|
+
createUpdateReserveIxsArg(
|
|
1483
1477
|
UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator,
|
|
1484
1478
|
tokenInfo.maxAgePriceSeconds.toNumber()
|
|
1485
1479
|
)
|
|
1486
1480
|
);
|
|
1487
|
-
|
|
1488
|
-
|
|
1481
|
+
updateReserveIxsArgs.push(
|
|
1482
|
+
createUpdateReserveIxsArg(
|
|
1489
1483
|
UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator,
|
|
1490
1484
|
tokenInfo.maxAgeTwapSeconds.toNumber()
|
|
1491
1485
|
)
|
|
1492
1486
|
);
|
|
1493
|
-
|
|
1494
|
-
|
|
1487
|
+
updateReserveIxsArgs.push(
|
|
1488
|
+
createUpdateReserveIxsArg(
|
|
1495
1489
|
UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator,
|
|
1496
1490
|
tokenInfo.scopeConfiguration.priceChain
|
|
1497
1491
|
)
|
|
1498
1492
|
);
|
|
1499
|
-
|
|
1500
|
-
|
|
1493
|
+
updateReserveIxsArgs.push(
|
|
1494
|
+
createUpdateReserveIxsArg(
|
|
1501
1495
|
UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator,
|
|
1502
1496
|
tokenInfo.scopeConfiguration.twapChain
|
|
1503
1497
|
)
|
|
1504
1498
|
);
|
|
1505
|
-
|
|
1506
|
-
|
|
1499
|
+
updateReserveIxsArgs.push(
|
|
1500
|
+
createUpdateReserveIxsArg(
|
|
1507
1501
|
UpdateConfigMode.UpdateSwitchboardFeed.discriminator,
|
|
1508
1502
|
tokenInfo.switchboardConfiguration.priceAggregator
|
|
1509
1503
|
)
|
|
1510
1504
|
);
|
|
1511
|
-
|
|
1512
|
-
|
|
1505
|
+
updateReserveIxsArgs.push(
|
|
1506
|
+
createUpdateReserveIxsArg(
|
|
1513
1507
|
UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator,
|
|
1514
1508
|
tokenInfo.switchboardConfiguration.twapAggregator
|
|
1515
1509
|
)
|
|
1516
1510
|
);
|
|
1517
|
-
|
|
1518
|
-
|
|
1511
|
+
updateReserveIxsArgs.push(
|
|
1512
|
+
createUpdateReserveIxsArg(UpdateConfigMode.UpdatePythPrice.discriminator, tokenInfo.pythConfiguration.price)
|
|
1519
1513
|
);
|
|
1520
|
-
|
|
1521
|
-
|
|
1514
|
+
updateReserveIxsArgs.push(
|
|
1515
|
+
createUpdateReserveIxsArg(UpdateConfigMode.UpdateBlockPriceUsage.discriminator, tokenInfo.blockPriceUsage)
|
|
1522
1516
|
);
|
|
1523
1517
|
} else {
|
|
1524
1518
|
if (!sameLengthArrayEquals(reserve.config.tokenInfo.name, tokenInfo.name)) {
|
|
1525
|
-
|
|
1526
|
-
|
|
1519
|
+
updateReserveIxsArgs.push(
|
|
1520
|
+
createUpdateReserveIxsArg(UpdateConfigMode.UpdateTokenInfoName.discriminator, tokenInfo.name)
|
|
1527
1521
|
);
|
|
1528
1522
|
}
|
|
1529
1523
|
if (!reserve.config.tokenInfo.heuristic.lower.eq(tokenInfo.heuristic.lower)) {
|
|
1530
|
-
|
|
1531
|
-
|
|
1524
|
+
updateReserveIxsArgs.push(
|
|
1525
|
+
createUpdateReserveIxsArg(
|
|
1532
1526
|
UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator,
|
|
1533
1527
|
tokenInfo.heuristic.lower.toNumber()
|
|
1534
1528
|
)
|
|
1535
1529
|
);
|
|
1536
1530
|
}
|
|
1537
1531
|
if (!reserve.config.tokenInfo.heuristic.upper.eq(tokenInfo.heuristic.upper)) {
|
|
1538
|
-
|
|
1539
|
-
|
|
1532
|
+
updateReserveIxsArgs.push(
|
|
1533
|
+
createUpdateReserveIxsArg(
|
|
1540
1534
|
UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator,
|
|
1541
1535
|
tokenInfo.heuristic.upper.toNumber()
|
|
1542
1536
|
)
|
|
1543
1537
|
);
|
|
1544
1538
|
}
|
|
1545
1539
|
if (!reserve.config.tokenInfo.heuristic.exp.eq(tokenInfo.heuristic.exp)) {
|
|
1546
|
-
|
|
1547
|
-
|
|
1540
|
+
updateReserveIxsArgs.push(
|
|
1541
|
+
createUpdateReserveIxsArg(
|
|
1548
1542
|
UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator,
|
|
1549
1543
|
tokenInfo.heuristic.exp.toNumber()
|
|
1550
1544
|
)
|
|
1551
1545
|
);
|
|
1552
1546
|
}
|
|
1553
1547
|
if (!reserve.config.tokenInfo.maxTwapDivergenceBps.eq(tokenInfo.maxTwapDivergenceBps)) {
|
|
1554
|
-
|
|
1555
|
-
|
|
1548
|
+
updateReserveIxsArgs.push(
|
|
1549
|
+
createUpdateReserveIxsArg(
|
|
1556
1550
|
UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator,
|
|
1557
1551
|
tokenInfo.maxTwapDivergenceBps.toNumber()
|
|
1558
1552
|
)
|
|
1559
1553
|
);
|
|
1560
1554
|
}
|
|
1561
1555
|
if (!reserve.config.tokenInfo.maxAgePriceSeconds.eq(tokenInfo.maxAgePriceSeconds)) {
|
|
1562
|
-
|
|
1563
|
-
|
|
1556
|
+
updateReserveIxsArgs.push(
|
|
1557
|
+
createUpdateReserveIxsArg(
|
|
1564
1558
|
UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator,
|
|
1565
1559
|
tokenInfo.maxAgePriceSeconds.toNumber()
|
|
1566
1560
|
)
|
|
1567
1561
|
);
|
|
1568
1562
|
}
|
|
1569
1563
|
if (!reserve.config.tokenInfo.maxAgeTwapSeconds.eq(tokenInfo.maxAgeTwapSeconds)) {
|
|
1570
|
-
|
|
1571
|
-
|
|
1564
|
+
updateReserveIxsArgs.push(
|
|
1565
|
+
createUpdateReserveIxsArg(
|
|
1572
1566
|
UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator,
|
|
1573
1567
|
tokenInfo.maxAgeTwapSeconds.toNumber()
|
|
1574
1568
|
)
|
|
@@ -1580,8 +1574,8 @@ function handleConfigUpdate(
|
|
|
1580
1574
|
tokenInfo.scopeConfiguration.priceChain
|
|
1581
1575
|
)
|
|
1582
1576
|
) {
|
|
1583
|
-
|
|
1584
|
-
|
|
1577
|
+
updateReserveIxsArgs.push(
|
|
1578
|
+
createUpdateReserveIxsArg(
|
|
1585
1579
|
UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator,
|
|
1586
1580
|
tokenInfo.scopeConfiguration.priceChain
|
|
1587
1581
|
)
|
|
@@ -1593,8 +1587,8 @@ function handleConfigUpdate(
|
|
|
1593
1587
|
tokenInfo.scopeConfiguration.twapChain
|
|
1594
1588
|
)
|
|
1595
1589
|
) {
|
|
1596
|
-
|
|
1597
|
-
|
|
1590
|
+
updateReserveIxsArgs.push(
|
|
1591
|
+
createUpdateReserveIxsArg(
|
|
1598
1592
|
UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator,
|
|
1599
1593
|
tokenInfo.scopeConfiguration.twapChain
|
|
1600
1594
|
)
|
|
@@ -1605,8 +1599,8 @@ function handleConfigUpdate(
|
|
|
1605
1599
|
tokenInfo.switchboardConfiguration.priceAggregator
|
|
1606
1600
|
)
|
|
1607
1601
|
) {
|
|
1608
|
-
|
|
1609
|
-
|
|
1602
|
+
updateReserveIxsArgs.push(
|
|
1603
|
+
createUpdateReserveIxsArg(
|
|
1610
1604
|
UpdateConfigMode.UpdateSwitchboardFeed.discriminator,
|
|
1611
1605
|
tokenInfo.switchboardConfiguration.priceAggregator
|
|
1612
1606
|
)
|
|
@@ -1617,29 +1611,26 @@ function handleConfigUpdate(
|
|
|
1617
1611
|
tokenInfo.switchboardConfiguration.twapAggregator
|
|
1618
1612
|
)
|
|
1619
1613
|
) {
|
|
1620
|
-
|
|
1621
|
-
|
|
1614
|
+
updateReserveIxsArgs.push(
|
|
1615
|
+
createUpdateReserveIxsArg(
|
|
1622
1616
|
UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator,
|
|
1623
1617
|
tokenInfo.switchboardConfiguration.twapAggregator
|
|
1624
1618
|
)
|
|
1625
1619
|
);
|
|
1626
1620
|
}
|
|
1627
1621
|
if (!reserve.config.tokenInfo.pythConfiguration.price.equals(tokenInfo.pythConfiguration.price)) {
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
UpdateConfigMode.UpdatePythPrice.discriminator,
|
|
1631
|
-
tokenInfo.pythConfiguration.price
|
|
1632
|
-
)
|
|
1622
|
+
updateReserveIxsArgs.push(
|
|
1623
|
+
createUpdateReserveIxsArg(UpdateConfigMode.UpdatePythPrice.discriminator, tokenInfo.pythConfiguration.price)
|
|
1633
1624
|
);
|
|
1634
1625
|
}
|
|
1635
1626
|
if (reserve.config.tokenInfo.blockPriceUsage !== tokenInfo.blockPriceUsage) {
|
|
1636
|
-
|
|
1637
|
-
|
|
1627
|
+
updateReserveIxsArgs.push(
|
|
1628
|
+
createUpdateReserveIxsArg(UpdateConfigMode.UpdateBlockPriceUsage.discriminator, tokenInfo.blockPriceUsage)
|
|
1638
1629
|
);
|
|
1639
1630
|
}
|
|
1640
1631
|
if (!reserve.config.tokenInfo.scopeConfiguration.priceFeed.equals(tokenInfo.scopeConfiguration.priceFeed)) {
|
|
1641
|
-
|
|
1642
|
-
|
|
1632
|
+
updateReserveIxsArgs.push(
|
|
1633
|
+
createUpdateReserveIxsArg(
|
|
1643
1634
|
UpdateConfigMode.UpdateScopePriceFeed.discriminator,
|
|
1644
1635
|
tokenInfo.scopeConfiguration.priceFeed
|
|
1645
1636
|
)
|
|
@@ -1655,8 +1646,8 @@ function handleConfigUpdate(
|
|
|
1655
1646
|
reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds
|
|
1656
1647
|
)
|
|
1657
1648
|
) {
|
|
1658
|
-
|
|
1659
|
-
|
|
1649
|
+
updateReserveIxsArgs.push(
|
|
1650
|
+
createUpdateReserveIxsArg(UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, [
|
|
1660
1651
|
reserveConfig.depositWithdrawalCap.configCapacity.toNumber(),
|
|
1661
1652
|
reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds.toNumber(),
|
|
1662
1653
|
])
|
|
@@ -1671,8 +1662,8 @@ function handleConfigUpdate(
|
|
|
1671
1662
|
reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds
|
|
1672
1663
|
)
|
|
1673
1664
|
) {
|
|
1674
|
-
|
|
1675
|
-
|
|
1665
|
+
updateReserveIxsArgs.push(
|
|
1666
|
+
createUpdateReserveIxsArg(UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, [
|
|
1676
1667
|
reserveConfig.debtWithdrawalCap.configCapacity.toNumber(),
|
|
1677
1668
|
reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds.toNumber(),
|
|
1678
1669
|
])
|
|
@@ -1684,8 +1675,8 @@ function handleConfigUpdate(
|
|
|
1684
1675
|
reserve === undefined ||
|
|
1685
1676
|
!sameLengthArrayEquals(reserve.config.elevationGroups, reserveConfig.elevationGroups)
|
|
1686
1677
|
) {
|
|
1687
|
-
|
|
1688
|
-
|
|
1678
|
+
updateReserveIxsArgs.push(
|
|
1679
|
+
createUpdateReserveIxsArg(UpdateConfigMode.UpdateElevationGroup.discriminator, reserveConfig.elevationGroups)
|
|
1689
1680
|
);
|
|
1690
1681
|
}
|
|
1691
1682
|
break;
|
|
@@ -1694,8 +1685,8 @@ function handleConfigUpdate(
|
|
|
1694
1685
|
reserve === undefined ||
|
|
1695
1686
|
reserve.config.disableUsageAsCollOutsideEmode !== reserveConfig.disableUsageAsCollOutsideEmode
|
|
1696
1687
|
) {
|
|
1697
|
-
|
|
1698
|
-
|
|
1688
|
+
updateReserveIxsArgs.push(
|
|
1689
|
+
createUpdateReserveIxsArg(
|
|
1699
1690
|
UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator,
|
|
1700
1691
|
reserveConfig.disableUsageAsCollOutsideEmode
|
|
1701
1692
|
)
|
|
@@ -1707,8 +1698,8 @@ function handleConfigUpdate(
|
|
|
1707
1698
|
reserve === undefined ||
|
|
1708
1699
|
reserve.config.utilizationLimitBlockBorrowingAbovePct !== reserveConfig.utilizationLimitBlockBorrowingAbovePct
|
|
1709
1700
|
) {
|
|
1710
|
-
|
|
1711
|
-
|
|
1701
|
+
updateReserveIxsArgs.push(
|
|
1702
|
+
createUpdateReserveIxsArg(
|
|
1712
1703
|
UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator,
|
|
1713
1704
|
reserveConfig.utilizationLimitBlockBorrowingAbovePct
|
|
1714
1705
|
)
|
|
@@ -1717,8 +1708,8 @@ function handleConfigUpdate(
|
|
|
1717
1708
|
break;
|
|
1718
1709
|
case 'autodeleverageEnabled':
|
|
1719
1710
|
if (reserve === undefined || reserve.config.autodeleverageEnabled !== reserveConfig.autodeleverageEnabled) {
|
|
1720
|
-
|
|
1721
|
-
|
|
1711
|
+
updateReserveIxsArgs.push(
|
|
1712
|
+
createUpdateReserveIxsArg(
|
|
1722
1713
|
UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator,
|
|
1723
1714
|
reserveConfig.autodeleverageEnabled
|
|
1724
1715
|
)
|
|
@@ -1730,8 +1721,8 @@ function handleConfigUpdate(
|
|
|
1730
1721
|
reserve === undefined ||
|
|
1731
1722
|
!reserve.config.borrowLimitOutsideElevationGroup.eq(reserveConfig.borrowLimitOutsideElevationGroup)
|
|
1732
1723
|
) {
|
|
1733
|
-
|
|
1734
|
-
|
|
1724
|
+
updateReserveIxsArgs.push(
|
|
1725
|
+
createUpdateReserveIxsArg(
|
|
1735
1726
|
UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator,
|
|
1736
1727
|
reserveConfig.borrowLimitOutsideElevationGroup.toNumber()
|
|
1737
1728
|
)
|
|
@@ -1746,8 +1737,8 @@ function handleConfigUpdate(
|
|
|
1746
1737
|
reserveConfig.borrowLimitAgainstThisCollateralInElevationGroup
|
|
1747
1738
|
)
|
|
1748
1739
|
) {
|
|
1749
|
-
|
|
1750
|
-
|
|
1740
|
+
updateReserveIxsArgs.push(
|
|
1741
|
+
createUpdateReserveIxsArg(
|
|
1751
1742
|
UpdateConfigMode.UpdateBorrowLimitsInElevationGroupAgainstThisReserve.discriminator,
|
|
1752
1743
|
reserveConfig.borrowLimitAgainstThisCollateralInElevationGroup.map((borrowLimit) => borrowLimit.toNumber())
|
|
1753
1744
|
)
|
|
@@ -1759,8 +1750,8 @@ function handleConfigUpdate(
|
|
|
1759
1750
|
reserve === undefined ||
|
|
1760
1751
|
!reserve.config.deleveragingBonusIncreaseBpsPerDay.eq(reserveConfig.deleveragingBonusIncreaseBpsPerDay)
|
|
1761
1752
|
) {
|
|
1762
|
-
|
|
1763
|
-
|
|
1753
|
+
updateReserveIxsArgs.push(
|
|
1754
|
+
createUpdateReserveIxsArg(
|
|
1764
1755
|
UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator,
|
|
1765
1756
|
reserveConfig.deleveragingBonusIncreaseBpsPerDay.toNumber()
|
|
1766
1757
|
)
|
|
@@ -1772,10 +1763,10 @@ function handleConfigUpdate(
|
|
|
1772
1763
|
}
|
|
1773
1764
|
}
|
|
1774
1765
|
|
|
1775
|
-
function
|
|
1766
|
+
function createUpdateReserveIxsArg(
|
|
1776
1767
|
discriminator: UpdateConfigModeKind['discriminator'],
|
|
1777
1768
|
value: number | number[] | bigint | BorrowRateCurve | PublicKey
|
|
1778
|
-
):
|
|
1769
|
+
): UpdateReserveIxsArg {
|
|
1779
1770
|
return {
|
|
1780
1771
|
// Note: below we add 1 to the discriminator, because UpdateConfigMode in SC starts from 1, while the idl-codegen
|
|
1781
1772
|
// creates the TS counterparts starting from 0:
|
|
@@ -1819,24 +1810,24 @@ export function parseForChangesReserveConfigAndGetIxs(
|
|
|
1819
1810
|
reserveConfig: ReserveConfig,
|
|
1820
1811
|
programId: PublicKey
|
|
1821
1812
|
) {
|
|
1822
|
-
let
|
|
1813
|
+
let updateReserveIxsArgs: UpdateReserveIxsArg[] = [];
|
|
1823
1814
|
for (const key in reserveConfig.toEncodable()) {
|
|
1824
1815
|
if (isExcludedReserveConfigKey(key)) {
|
|
1825
1816
|
continue;
|
|
1826
1817
|
}
|
|
1827
|
-
handleConfigUpdate(key as ReserveConfigKey, reserve, reserveConfig,
|
|
1818
|
+
handleConfigUpdate(key as ReserveConfigKey, reserve, reserveConfig, updateReserveIxsArgs);
|
|
1828
1819
|
}
|
|
1829
1820
|
|
|
1830
|
-
const
|
|
1821
|
+
const ixs: TransactionInstruction[] = [];
|
|
1831
1822
|
|
|
1832
|
-
|
|
1823
|
+
updateReserveIxsArgs = sortIxsByPriority(updateReserveIxsArgs);
|
|
1833
1824
|
|
|
1834
|
-
|
|
1825
|
+
updateReserveIxsArgs.forEach((updateReserveConfigArgs) => {
|
|
1835
1826
|
let skipValidation = false;
|
|
1836
1827
|
if (modeMatches(updateReserveConfigArgs.mode) && !reserve?.liquidity.availableAmount.gten(MIN_INITIAL_DEPOSIT)) {
|
|
1837
1828
|
skipValidation = true;
|
|
1838
1829
|
}
|
|
1839
|
-
|
|
1830
|
+
ixs.push(
|
|
1840
1831
|
updateReserveConfigIx(
|
|
1841
1832
|
marketWithAddress,
|
|
1842
1833
|
reserveAddress,
|
|
@@ -1848,7 +1839,7 @@ export function parseForChangesReserveConfigAndGetIxs(
|
|
|
1848
1839
|
);
|
|
1849
1840
|
});
|
|
1850
1841
|
|
|
1851
|
-
return
|
|
1842
|
+
return ixs;
|
|
1852
1843
|
}
|
|
1853
1844
|
|
|
1854
1845
|
export function updateReserveConfigEncodedValue(
|
|
@@ -1975,7 +1966,7 @@ export type ReserveWithAddress = {
|
|
|
1975
1966
|
state: Reserve;
|
|
1976
1967
|
};
|
|
1977
1968
|
|
|
1978
|
-
export type
|
|
1969
|
+
export type UpdateReserveIxsArg = {
|
|
1979
1970
|
mode: number;
|
|
1980
1971
|
value: Uint8Array;
|
|
1981
1972
|
};
|
|
@@ -1993,10 +1984,10 @@ export const modeMatches = (mode: number): boolean => {
|
|
|
1993
1984
|
return validModes.includes(mode);
|
|
1994
1985
|
};
|
|
1995
1986
|
|
|
1996
|
-
// Sort update reserve
|
|
1987
|
+
// Sort update reserve ixs, to first have the oracle config updates first
|
|
1997
1988
|
// In order to skip the validation for the scope config updates
|
|
1998
|
-
export const
|
|
1999
|
-
return
|
|
1989
|
+
export const sortIxsByPriority = (updateReserveIxsArgs: UpdateReserveIxsArg[]) => {
|
|
1990
|
+
return updateReserveIxsArgs.sort((a, b) => {
|
|
2000
1991
|
const isPriorityA = a.mode === 20 || a.mode === 16;
|
|
2001
1992
|
const isPriorityB = b.mode === 20 || b.mode === 16;
|
|
2002
1993
|
if (isPriorityA && !isPriorityB) {
|
package/src/classes/shared.ts
CHANGED
|
@@ -65,3 +65,18 @@ export type Fees = {
|
|
|
65
65
|
protocolFees: Decimal;
|
|
66
66
|
referrerFees: Decimal;
|
|
67
67
|
};
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Some amount of a specific token type.
|
|
71
|
+
*/
|
|
72
|
+
export type TokenAmount = {
|
|
73
|
+
/**
|
|
74
|
+
* Token's mint key.
|
|
75
|
+
*/
|
|
76
|
+
mint: PublicKey;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Amount, in lamports.
|
|
80
|
+
*/
|
|
81
|
+
amount: Decimal;
|
|
82
|
+
};
|