@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.
Files changed (116) hide show
  1. package/dist/classes/action.d.ts +74 -49
  2. package/dist/classes/action.d.ts.map +1 -1
  3. package/dist/classes/action.js +167 -115
  4. package/dist/classes/action.js.map +1 -1
  5. package/dist/classes/fraction.d.ts +2 -0
  6. package/dist/classes/fraction.d.ts.map +1 -1
  7. package/dist/classes/fraction.js +6 -0
  8. package/dist/classes/fraction.js.map +1 -1
  9. package/dist/classes/index.d.ts +3 -2
  10. package/dist/classes/index.d.ts.map +1 -1
  11. package/dist/classes/index.js +3 -2
  12. package/dist/classes/index.js.map +1 -1
  13. package/dist/classes/manager.d.ts +7 -7
  14. package/dist/classes/manager.d.ts.map +1 -1
  15. package/dist/classes/manager.js +46 -46
  16. package/dist/classes/manager.js.map +1 -1
  17. package/dist/classes/obligation.d.ts.map +1 -1
  18. package/dist/classes/obligation.js +1 -6
  19. package/dist/classes/obligation.js.map +1 -1
  20. package/dist/classes/obligationOrder.d.ts +1 -1
  21. package/dist/classes/obligationOrder.d.ts.map +1 -1
  22. package/dist/classes/reserve.d.ts +2 -2
  23. package/dist/classes/reserve.d.ts.map +1 -1
  24. package/dist/classes/reserve.js +71 -74
  25. package/dist/classes/reserve.js.map +1 -1
  26. package/dist/classes/shared.d.ts +13 -0
  27. package/dist/classes/shared.d.ts.map +1 -1
  28. package/dist/classes/utils.d.ts +1 -9
  29. package/dist/classes/utils.d.ts.map +1 -1
  30. package/dist/classes/utils.js +4 -51
  31. package/dist/classes/utils.js.map +1 -1
  32. package/dist/classes/vault.d.ts +5 -3
  33. package/dist/classes/vault.d.ts.map +1 -1
  34. package/dist/classes/vault.js +53 -41
  35. package/dist/classes/vault.js.map +1 -1
  36. package/dist/classes/{types.d.ts → vault_types.d.ts} +2 -15
  37. package/dist/classes/vault_types.d.ts.map +1 -0
  38. package/dist/classes/{types.js → vault_types.js} +1 -1
  39. package/dist/classes/vault_types.js.map +1 -0
  40. package/dist/client_kamino_manager.d.ts.map +1 -1
  41. package/dist/client_kamino_manager.js +25 -26
  42. package/dist/client_kamino_manager.js.map +1 -1
  43. package/dist/lending_operations/repay_with_collateral_operations.d.ts.map +1 -1
  44. package/dist/lending_operations/repay_with_collateral_operations.js +8 -8
  45. package/dist/lending_operations/repay_with_collateral_operations.js.map +1 -1
  46. package/dist/lending_operations/swap_collateral_operations.d.ts +6 -6
  47. package/dist/lending_operations/swap_collateral_operations.d.ts.map +1 -1
  48. package/dist/lending_operations/swap_collateral_operations.js +63 -65
  49. package/dist/lending_operations/swap_collateral_operations.js.map +1 -1
  50. package/dist/leverage/calcs.d.ts +0 -1
  51. package/dist/leverage/calcs.d.ts.map +1 -1
  52. package/dist/leverage/calcs.js +5 -8
  53. package/dist/leverage/calcs.js.map +1 -1
  54. package/dist/leverage/operations.d.ts +5 -5
  55. package/dist/leverage/operations.d.ts.map +1 -1
  56. package/dist/leverage/operations.js +80 -87
  57. package/dist/leverage/operations.js.map +1 -1
  58. package/dist/leverage/types.d.ts +1 -1
  59. package/dist/leverage/types.d.ts.map +1 -1
  60. package/dist/leverage/utils.d.ts +2 -2
  61. package/dist/leverage/utils.d.ts.map +1 -1
  62. package/dist/leverage/utils.js +5 -5
  63. package/dist/leverage/utils.js.map +1 -1
  64. package/dist/referrals/instructions.d.ts +3 -3
  65. package/dist/referrals/instructions.d.ts.map +1 -1
  66. package/dist/referrals/instructions.js +10 -10
  67. package/dist/referrals/instructions.js.map +1 -1
  68. package/dist/referrals/operations.js +6 -6
  69. package/dist/referrals/operations.js.map +1 -1
  70. package/dist/utils/ata.d.ts +3 -3
  71. package/dist/utils/ata.d.ts.map +1 -1
  72. package/dist/utils/ata.js +22 -22
  73. package/dist/utils/ata.js.map +1 -1
  74. package/dist/utils/instruction.d.ts +2 -2
  75. package/dist/utils/instruction.d.ts.map +1 -1
  76. package/dist/utils/instruction.js +12 -12
  77. package/dist/utils/instruction.js.map +1 -1
  78. package/dist/utils/lookupTable.js +6 -6
  79. package/dist/utils/lookupTable.js.map +1 -1
  80. package/dist/utils/userMetadata.d.ts +1 -1
  81. package/dist/utils/userMetadata.d.ts.map +1 -1
  82. package/dist/utils/userMetadata.js +3 -3
  83. package/dist/utils/userMetadata.js.map +1 -1
  84. package/package.json +1 -1
  85. package/src/classes/action.ts +198 -150
  86. package/src/classes/fraction.ts +7 -0
  87. package/src/classes/index.ts +5 -2
  88. package/src/classes/manager.ts +54 -51
  89. package/src/classes/obligation.ts +2 -7
  90. package/src/classes/obligationOrder.ts +1 -1
  91. package/src/classes/reserve.ts +128 -137
  92. package/src/classes/shared.ts +15 -0
  93. package/src/classes/utils.ts +3 -52
  94. package/src/classes/vault.ts +56 -42
  95. package/src/classes/{types.ts → vault_types.ts} +1 -16
  96. package/src/client.ts +16 -16
  97. package/src/client_kamino_manager.ts +25 -25
  98. package/src/lending_operations/repay_with_collateral_operations.ts +13 -15
  99. package/src/lending_operations/swap_collateral_operations.ts +87 -89
  100. package/src/leverage/calcs.ts +2 -6
  101. package/src/leverage/operations.ts +91 -97
  102. package/src/leverage/types.ts +1 -1
  103. package/src/leverage/utils.ts +5 -5
  104. package/src/referrals/instructions.ts +6 -6
  105. package/src/referrals/operations.ts +9 -9
  106. package/src/utils/ata.ts +18 -18
  107. package/src/utils/instruction.ts +10 -10
  108. package/src/utils/lookupTable.ts +6 -6
  109. package/src/utils/userMetadata.ts +1 -1
  110. package/dist/classes/types.d.ts.map +0 -1
  111. package/dist/classes/types.js.map +0 -1
  112. package/dist/classes/types_utils.d.ts +0 -14
  113. package/dist/classes/types_utils.d.ts.map +0 -1
  114. package/dist/classes/types_utils.js +0 -50
  115. package/dist/classes/types_utils.js.map +0 -1
  116. package/src/classes/types_utils.ts +0 -49
@@ -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
- const cumulativeBorrowRateBsf = this.state.liquidity.cumulativeBorrowRateBsf.value;
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
- updateReserveIxnsArgs: UpdateReserveIxnsArg[]
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
- updateReserveIxnsArgs.push(
1237
- createUpdateReserveIxnsArg(UpdateConfigMode.UpdateReserveStatus.discriminator, reserveConfig.status)
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
- updateReserveIxnsArgs.push(
1244
- createUpdateReserveIxnsArg(UpdateConfigMode.UpdateAssetTier.discriminator, reserveConfig.assetTier)
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
- updateReserveIxnsArgs.push(
1251
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1261
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1274
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1287
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1297
- createUpdateReserveIxnsArg(UpdateConfigMode.UpdateLoanToValuePct.discriminator, reserveConfig.loanToValuePct)
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
- updateReserveIxnsArgs.push(
1304
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1314
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1324
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1337
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1350
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1363
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1373
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1381
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1391
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1412
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1424
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1434
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1444
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1455
- createUpdateReserveIxnsArg(UpdateConfigMode.UpdateTokenInfoName.discriminator, tokenInfo.name)
1448
+ updateReserveIxsArgs.push(
1449
+ createUpdateReserveIxsArg(UpdateConfigMode.UpdateTokenInfoName.discriminator, tokenInfo.name)
1456
1450
  );
1457
- updateReserveIxnsArgs.push(
1458
- createUpdateReserveIxnsArg(
1451
+ updateReserveIxsArgs.push(
1452
+ createUpdateReserveIxsArg(
1459
1453
  UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator,
1460
1454
  tokenInfo.heuristic.lower.toNumber()
1461
1455
  )
1462
1456
  );
1463
- updateReserveIxnsArgs.push(
1464
- createUpdateReserveIxnsArg(
1457
+ updateReserveIxsArgs.push(
1458
+ createUpdateReserveIxsArg(
1465
1459
  UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator,
1466
1460
  tokenInfo.heuristic.upper.toNumber()
1467
1461
  )
1468
1462
  );
1469
- updateReserveIxnsArgs.push(
1470
- createUpdateReserveIxnsArg(
1463
+ updateReserveIxsArgs.push(
1464
+ createUpdateReserveIxsArg(
1471
1465
  UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator,
1472
1466
  tokenInfo.heuristic.exp.toNumber()
1473
1467
  )
1474
1468
  );
1475
- updateReserveIxnsArgs.push(
1476
- createUpdateReserveIxnsArg(
1469
+ updateReserveIxsArgs.push(
1470
+ createUpdateReserveIxsArg(
1477
1471
  UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator,
1478
1472
  tokenInfo.maxTwapDivergenceBps.toNumber()
1479
1473
  )
1480
1474
  );
1481
- updateReserveIxnsArgs.push(
1482
- createUpdateReserveIxnsArg(
1475
+ updateReserveIxsArgs.push(
1476
+ createUpdateReserveIxsArg(
1483
1477
  UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator,
1484
1478
  tokenInfo.maxAgePriceSeconds.toNumber()
1485
1479
  )
1486
1480
  );
1487
- updateReserveIxnsArgs.push(
1488
- createUpdateReserveIxnsArg(
1481
+ updateReserveIxsArgs.push(
1482
+ createUpdateReserveIxsArg(
1489
1483
  UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator,
1490
1484
  tokenInfo.maxAgeTwapSeconds.toNumber()
1491
1485
  )
1492
1486
  );
1493
- updateReserveIxnsArgs.push(
1494
- createUpdateReserveIxnsArg(
1487
+ updateReserveIxsArgs.push(
1488
+ createUpdateReserveIxsArg(
1495
1489
  UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator,
1496
1490
  tokenInfo.scopeConfiguration.priceChain
1497
1491
  )
1498
1492
  );
1499
- updateReserveIxnsArgs.push(
1500
- createUpdateReserveIxnsArg(
1493
+ updateReserveIxsArgs.push(
1494
+ createUpdateReserveIxsArg(
1501
1495
  UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator,
1502
1496
  tokenInfo.scopeConfiguration.twapChain
1503
1497
  )
1504
1498
  );
1505
- updateReserveIxnsArgs.push(
1506
- createUpdateReserveIxnsArg(
1499
+ updateReserveIxsArgs.push(
1500
+ createUpdateReserveIxsArg(
1507
1501
  UpdateConfigMode.UpdateSwitchboardFeed.discriminator,
1508
1502
  tokenInfo.switchboardConfiguration.priceAggregator
1509
1503
  )
1510
1504
  );
1511
- updateReserveIxnsArgs.push(
1512
- createUpdateReserveIxnsArg(
1505
+ updateReserveIxsArgs.push(
1506
+ createUpdateReserveIxsArg(
1513
1507
  UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator,
1514
1508
  tokenInfo.switchboardConfiguration.twapAggregator
1515
1509
  )
1516
1510
  );
1517
- updateReserveIxnsArgs.push(
1518
- createUpdateReserveIxnsArg(UpdateConfigMode.UpdatePythPrice.discriminator, tokenInfo.pythConfiguration.price)
1511
+ updateReserveIxsArgs.push(
1512
+ createUpdateReserveIxsArg(UpdateConfigMode.UpdatePythPrice.discriminator, tokenInfo.pythConfiguration.price)
1519
1513
  );
1520
- updateReserveIxnsArgs.push(
1521
- createUpdateReserveIxnsArg(UpdateConfigMode.UpdateBlockPriceUsage.discriminator, tokenInfo.blockPriceUsage)
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
- updateReserveIxnsArgs.push(
1526
- createUpdateReserveIxnsArg(UpdateConfigMode.UpdateTokenInfoName.discriminator, tokenInfo.name)
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
- updateReserveIxnsArgs.push(
1531
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1539
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1547
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1555
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1563
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1571
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1584
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1597
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1609
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1621
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1629
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1637
- createUpdateReserveIxnsArg(UpdateConfigMode.UpdateBlockPriceUsage.discriminator, tokenInfo.blockPriceUsage)
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
- updateReserveIxnsArgs.push(
1642
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1659
- createUpdateReserveIxnsArg(UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, [
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
- updateReserveIxnsArgs.push(
1675
- createUpdateReserveIxnsArg(UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, [
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
- updateReserveIxnsArgs.push(
1688
- createUpdateReserveIxnsArg(UpdateConfigMode.UpdateElevationGroup.discriminator, reserveConfig.elevationGroups)
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
- updateReserveIxnsArgs.push(
1698
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1711
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1721
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1734
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1750
- createUpdateReserveIxnsArg(
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
- updateReserveIxnsArgs.push(
1763
- createUpdateReserveIxnsArg(
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 createUpdateReserveIxnsArg(
1766
+ function createUpdateReserveIxsArg(
1776
1767
  discriminator: UpdateConfigModeKind['discriminator'],
1777
1768
  value: number | number[] | bigint | BorrowRateCurve | PublicKey
1778
- ): UpdateReserveIxnsArg {
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 updateReserveIxnsArgs: UpdateReserveIxnsArg[] = [];
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, updateReserveIxnsArgs);
1818
+ handleConfigUpdate(key as ReserveConfigKey, reserve, reserveConfig, updateReserveIxsArgs);
1828
1819
  }
1829
1820
 
1830
- const ixns: TransactionInstruction[] = [];
1821
+ const ixs: TransactionInstruction[] = [];
1831
1822
 
1832
- updateReserveIxnsArgs = sortIxnsByPriority(updateReserveIxnsArgs);
1823
+ updateReserveIxsArgs = sortIxsByPriority(updateReserveIxsArgs);
1833
1824
 
1834
- updateReserveIxnsArgs.forEach((updateReserveConfigArgs) => {
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
- ixns.push(
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 ixns;
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 UpdateReserveIxnsArg = {
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 ixns, to first have the oracle config updates first
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 sortIxnsByPriority = (updateReserveIxnsArgs: UpdateReserveIxnsArg[]) => {
1999
- return updateReserveIxnsArgs.sort((a, b) => {
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) {
@@ -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
+ };