@kamino-finance/klend-sdk 5.11.17 → 5.12.0

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 (110) hide show
  1. package/dist/classes/action.d.ts +9 -1
  2. package/dist/classes/action.d.ts.map +1 -1
  3. package/dist/classes/action.js +15 -1
  4. package/dist/classes/action.js.map +1 -1
  5. package/dist/classes/fraction.d.ts +6 -5
  6. package/dist/classes/fraction.d.ts.map +1 -1
  7. package/dist/classes/fraction.js +13 -8
  8. package/dist/classes/fraction.js.map +1 -1
  9. package/dist/classes/manager.d.ts +1 -1
  10. package/dist/classes/manager.d.ts.map +1 -1
  11. package/dist/classes/manager.js +10 -0
  12. package/dist/classes/manager.js.map +1 -1
  13. package/dist/classes/obligation.d.ts +54 -1
  14. package/dist/classes/obligation.d.ts.map +1 -1
  15. package/dist/classes/obligation.js +47 -1
  16. package/dist/classes/obligation.js.map +1 -1
  17. package/dist/classes/obligationOrder.d.ts +206 -0
  18. package/dist/classes/obligationOrder.d.ts.map +1 -0
  19. package/dist/classes/obligationOrder.js +359 -0
  20. package/dist/classes/obligationOrder.js.map +1 -0
  21. package/dist/classes/reserve.d.ts +5 -5
  22. package/dist/classes/reserve.d.ts.map +1 -1
  23. package/dist/classes/reserve.js +80 -264
  24. package/dist/classes/reserve.js.map +1 -1
  25. package/dist/classes/types.d.ts +14 -1
  26. package/dist/classes/types.d.ts.map +1 -1
  27. package/dist/classes/utils.d.ts +9 -0
  28. package/dist/classes/utils.d.ts.map +1 -1
  29. package/dist/classes/utils.js +21 -0
  30. package/dist/classes/utils.js.map +1 -1
  31. package/dist/classes/vault.js +1 -1
  32. package/dist/classes/vault.js.map +1 -1
  33. package/dist/client_kamino_manager.js +6 -6
  34. package/dist/client_kamino_manager.js.map +1 -1
  35. package/dist/idl.json +244 -23
  36. package/dist/idl_codegen/accounts/LendingMarket.d.ts +12 -6
  37. package/dist/idl_codegen/accounts/LendingMarket.d.ts.map +1 -1
  38. package/dist/idl_codegen/accounts/LendingMarket.js +15 -3
  39. package/dist/idl_codegen/accounts/LendingMarket.js.map +1 -1
  40. package/dist/idl_codegen/accounts/Obligation.d.ts +27 -6
  41. package/dist/idl_codegen/accounts/Obligation.d.ts.map +1 -1
  42. package/dist/idl_codegen/accounts/Obligation.js +26 -9
  43. package/dist/idl_codegen/accounts/Obligation.js.map +1 -1
  44. package/dist/idl_codegen/errors/custom.d.ts +36 -4
  45. package/dist/idl_codegen/errors/custom.d.ts.map +1 -1
  46. package/dist/idl_codegen/errors/custom.js +64 -8
  47. package/dist/idl_codegen/errors/custom.js.map +1 -1
  48. package/dist/idl_codegen/instructions/index.d.ts +2 -0
  49. package/dist/idl_codegen/instructions/index.d.ts.map +1 -1
  50. package/dist/idl_codegen/instructions/index.js +3 -1
  51. package/dist/idl_codegen/instructions/index.js.map +1 -1
  52. package/dist/idl_codegen/instructions/setObligationOrder.d.ts +14 -0
  53. package/dist/idl_codegen/instructions/setObligationOrder.d.ts.map +1 -0
  54. package/dist/idl_codegen/instructions/setObligationOrder.js +62 -0
  55. package/dist/idl_codegen/instructions/setObligationOrder.js.map +1 -0
  56. package/dist/idl_codegen/types/ObligationOrder.d.ts +284 -0
  57. package/dist/idl_codegen/types/ObligationOrder.d.ts.map +1 -0
  58. package/dist/idl_codegen/types/ObligationOrder.js +205 -0
  59. package/dist/idl_codegen/types/ObligationOrder.js.map +1 -0
  60. package/dist/idl_codegen/types/ReserveConfig.d.ts +26 -11
  61. package/dist/idl_codegen/types/ReserveConfig.d.ts.map +1 -1
  62. package/dist/idl_codegen/types/ReserveConfig.js +15 -10
  63. package/dist/idl_codegen/types/ReserveConfig.js.map +1 -1
  64. package/dist/idl_codegen/types/UpdateConfigMode.d.ts +34 -21
  65. package/dist/idl_codegen/types/UpdateConfigMode.d.ts.map +1 -1
  66. package/dist/idl_codegen/types/UpdateConfigMode.js +58 -34
  67. package/dist/idl_codegen/types/UpdateConfigMode.js.map +1 -1
  68. package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts +13 -0
  69. package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts.map +1 -1
  70. package/dist/idl_codegen/types/UpdateLendingMarketMode.js +25 -1
  71. package/dist/idl_codegen/types/UpdateLendingMarketMode.js.map +1 -1
  72. package/dist/idl_codegen/types/index.d.ts +6 -4
  73. package/dist/idl_codegen/types/index.d.ts.map +1 -1
  74. package/dist/idl_codegen/types/index.js +3 -1
  75. package/dist/idl_codegen/types/index.js.map +1 -1
  76. package/dist/idl_codegen/zero_padding/ObligationZP.d.ts +13 -6
  77. package/dist/idl_codegen/zero_padding/ObligationZP.d.ts.map +1 -1
  78. package/dist/idl_codegen/zero_padding/ObligationZP.js +25 -11
  79. package/dist/idl_codegen/zero_padding/ObligationZP.js.map +1 -1
  80. package/dist/utils/instruction.d.ts +1 -1
  81. package/dist/utils/instruction.d.ts.map +1 -1
  82. package/dist/utils/instruction.js +5 -1
  83. package/dist/utils/instruction.js.map +1 -1
  84. package/dist/utils/managerTypes.js +2 -2
  85. package/dist/utils/managerTypes.js.map +1 -1
  86. package/package.json +1 -1
  87. package/src/classes/action.ts +26 -1
  88. package/src/classes/fraction.ts +16 -12
  89. package/src/classes/manager.ts +13 -0
  90. package/src/classes/obligation.ts +77 -1
  91. package/src/classes/obligationOrder.ts +514 -0
  92. package/src/classes/reserve.ts +257 -336
  93. package/src/classes/types.ts +15 -1
  94. package/src/classes/utils.ts +21 -0
  95. package/src/classes/vault.ts +1 -1
  96. package/src/client_kamino_manager.ts +6 -6
  97. package/src/idl.json +244 -23
  98. package/src/idl_codegen/accounts/LendingMarket.ts +23 -7
  99. package/src/idl_codegen/accounts/Obligation.ts +50 -13
  100. package/src/idl_codegen/errors/custom.ts +68 -6
  101. package/src/idl_codegen/instructions/index.ts +5 -0
  102. package/src/idl_codegen/instructions/setObligationOrder.ts +45 -0
  103. package/src/idl_codegen/types/ObligationOrder.ts +347 -0
  104. package/src/idl_codegen/types/ReserveConfig.ts +31 -16
  105. package/src/idl_codegen/types/UpdateConfigMode.ts +69 -39
  106. package/src/idl_codegen/types/UpdateLendingMarketMode.ts +30 -0
  107. package/src/idl_codegen/types/index.ts +15 -6
  108. package/src/idl_codegen/zero_padding/ObligationZP.ts +37 -15
  109. package/src/utils/instruction.ts +5 -1
  110. package/src/utils/managerTypes.ts +2 -2
@@ -23,7 +23,13 @@ import {
23
23
  } from '../utils';
24
24
  import { FeeCalculation, Fees, ReserveDataType, ReserveFarmInfo, ReserveRewardYield, ReserveStatus } from './shared';
25
25
  import { Reserve, ReserveFields } from '../idl_codegen/accounts';
26
- import { BorrowRateCurve, CurvePointFields, ReserveConfig, UpdateConfigMode } from '../idl_codegen/types';
26
+ import {
27
+ BorrowRateCurve,
28
+ CurvePointFields,
29
+ ReserveConfig,
30
+ UpdateConfigMode,
31
+ UpdateConfigModeKind,
32
+ } from '../idl_codegen/types';
27
33
  import {
28
34
  assertNever,
29
35
  calculateAPYFromAPR,
@@ -46,7 +52,6 @@ import {
46
52
  } from '../lib';
47
53
  import * as anchor from '@coral-xyz/anchor';
48
54
  import { TOKEN_PROGRAM_ID } from '@solana/spl-token';
49
- import { UpdateBorrowRateCurve } from '../idl_codegen/types/UpdateConfigMode';
50
55
  import { aprToApy, KaminoPrices } from '@kamino-finance/kliquidity-sdk';
51
56
  import { FarmState, RewardInfo } from '@kamino-finance/farms-sdk';
52
57
 
@@ -1211,7 +1216,7 @@ type BaseReserveConfigKey = keyof ReturnType<typeof ReserveConfig.toEncodable>;
1211
1216
  // Type that excludes reserved and padding fields
1212
1217
  type ReserveConfigKey = Exclude<BaseReserveConfigKey, ExcludedReserveConfigKey>;
1213
1218
 
1214
- const EXCLUDED_RESERVE_CONFIG_KEYS = ['reserved1', 'reserved2', 'reserved3'] as const;
1219
+ const EXCLUDED_RESERVE_CONFIG_KEYS = ['reserved1', 'reserved2'] as const;
1215
1220
 
1216
1221
  export type ExcludedReserveConfigKey = (typeof EXCLUDED_RESERVE_CONFIG_KEYS)[number];
1217
1222
 
@@ -1223,53 +1228,41 @@ function handleConfigUpdate(
1223
1228
  key: ReserveConfigKey,
1224
1229
  reserve: Reserve | undefined,
1225
1230
  reserveConfig: ReserveConfig,
1226
- updateReserveIxnsArgs: UpdateReserveIxnsArgs[]
1231
+ updateReserveIxnsArgs: UpdateReserveIxnsArg[]
1227
1232
  ): void {
1228
- // We add 1 to the discriminator, to account for the fact that the UpdateConfigMode
1229
- // inside the SC starts incrementing from 1
1230
1233
  switch (key) {
1231
1234
  case 'status':
1232
1235
  if (reserve === undefined || reserve.config.status !== reserveConfig.status) {
1233
- updateReserveIxnsArgs.push({
1234
- mode: UpdateConfigMode.UpdateReserveStatus.discriminator + 1,
1235
- value: updateReserveConfigEncodedValue(
1236
- UpdateConfigMode.UpdateReserveStatus.discriminator,
1237
- reserveConfig.status
1238
- ),
1239
- });
1236
+ updateReserveIxnsArgs.push(
1237
+ createUpdateReserveIxnsArg(UpdateConfigMode.UpdateReserveStatus.discriminator, reserveConfig.status)
1238
+ );
1240
1239
  }
1241
1240
  break;
1242
1241
  case 'assetTier':
1243
1242
  if (reserve === undefined || reserve.config.assetTier !== reserveConfig.assetTier) {
1244
- updateReserveIxnsArgs.push({
1245
- mode: UpdateConfigMode.UpdateAssetTier.discriminator + 1,
1246
- value: updateReserveConfigEncodedValue(
1247
- UpdateConfigMode.UpdateAssetTier.discriminator,
1248
- reserveConfig.assetTier
1249
- ),
1250
- });
1243
+ updateReserveIxnsArgs.push(
1244
+ createUpdateReserveIxnsArg(UpdateConfigMode.UpdateAssetTier.discriminator, reserveConfig.assetTier)
1245
+ );
1251
1246
  }
1252
1247
  break;
1253
1248
  case 'hostFixedInterestRateBps':
1254
1249
  if (reserve === undefined || reserve.config.hostFixedInterestRateBps !== reserveConfig.hostFixedInterestRateBps) {
1255
- updateReserveIxnsArgs.push({
1256
- mode: UpdateConfigMode.UpdateHostFixedInterestRateBps.discriminator + 1,
1257
- value: updateReserveConfigEncodedValue(
1250
+ updateReserveIxnsArgs.push(
1251
+ createUpdateReserveIxnsArg(
1258
1252
  UpdateConfigMode.UpdateHostFixedInterestRateBps.discriminator,
1259
1253
  reserveConfig.hostFixedInterestRateBps
1260
- ),
1261
- });
1254
+ )
1255
+ );
1262
1256
  }
1263
1257
  break;
1264
1258
  case 'protocolTakeRatePct':
1265
1259
  if (reserve === undefined || reserve.config.protocolTakeRatePct !== reserveConfig.protocolTakeRatePct) {
1266
- updateReserveIxnsArgs.push({
1267
- mode: UpdateConfigMode.UpdateProtocolTakeRate.discriminator + 1,
1268
- value: updateReserveConfigEncodedValue(
1260
+ updateReserveIxnsArgs.push(
1261
+ createUpdateReserveIxnsArg(
1269
1262
  UpdateConfigMode.UpdateProtocolTakeRate.discriminator,
1270
1263
  reserveConfig.protocolTakeRatePct
1271
- ),
1272
- });
1264
+ )
1265
+ );
1273
1266
  }
1274
1267
  break;
1275
1268
  case 'protocolLiquidationFeePct':
@@ -1277,57 +1270,62 @@ function handleConfigUpdate(
1277
1270
  reserve === undefined ||
1278
1271
  reserve.config.protocolLiquidationFeePct !== reserveConfig.protocolLiquidationFeePct
1279
1272
  ) {
1280
- updateReserveIxnsArgs.push({
1281
- mode: UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator + 1,
1282
- value: updateReserveConfigEncodedValue(
1273
+ updateReserveIxnsArgs.push(
1274
+ createUpdateReserveIxnsArg(
1283
1275
  UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator,
1284
1276
  reserveConfig.protocolLiquidationFeePct
1285
- ),
1286
- });
1277
+ )
1278
+ );
1279
+ }
1280
+ break;
1281
+ case 'protocolOrderExecutionFeePct':
1282
+ if (
1283
+ reserve === undefined ||
1284
+ reserve.config.protocolOrderExecutionFeePct !== reserveConfig.protocolOrderExecutionFeePct
1285
+ ) {
1286
+ updateReserveIxnsArgs.push(
1287
+ createUpdateReserveIxnsArg(
1288
+ UpdateConfigMode.UpdateProtocolOrderExecutionFee.discriminator,
1289
+ reserveConfig.protocolOrderExecutionFeePct
1290
+ )
1291
+ );
1287
1292
  }
1288
1293
  break;
1289
1294
  case 'loanToValuePct':
1290
1295
  if (reserve === undefined || reserve.config.loanToValuePct !== reserveConfig.loanToValuePct) {
1291
- updateReserveIxnsArgs.push({
1292
- mode: UpdateConfigMode.UpdateLoanToValuePct.discriminator + 1,
1293
- value: updateReserveConfigEncodedValue(
1294
- UpdateConfigMode.UpdateLoanToValuePct.discriminator,
1295
- reserveConfig.loanToValuePct
1296
- ),
1297
- });
1296
+ updateReserveIxnsArgs.push(
1297
+ createUpdateReserveIxnsArg(UpdateConfigMode.UpdateLoanToValuePct.discriminator, reserveConfig.loanToValuePct)
1298
+ );
1298
1299
  }
1299
1300
  break;
1300
1301
  case 'liquidationThresholdPct':
1301
1302
  if (reserve === undefined || reserve.config.liquidationThresholdPct !== reserveConfig.liquidationThresholdPct) {
1302
- updateReserveIxnsArgs.push({
1303
- mode: UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator + 1,
1304
- value: updateReserveConfigEncodedValue(
1303
+ updateReserveIxnsArgs.push(
1304
+ createUpdateReserveIxnsArg(
1305
1305
  UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator,
1306
1306
  reserveConfig.liquidationThresholdPct
1307
- ),
1308
- });
1307
+ )
1308
+ );
1309
1309
  }
1310
1310
  break;
1311
1311
  case 'minLiquidationBonusBps':
1312
1312
  if (reserve === undefined || reserve.config.minLiquidationBonusBps !== reserveConfig.minLiquidationBonusBps) {
1313
- updateReserveIxnsArgs.push({
1314
- mode: UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator + 1,
1315
- value: updateReserveConfigEncodedValue(
1313
+ updateReserveIxnsArgs.push(
1314
+ createUpdateReserveIxnsArg(
1316
1315
  UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator,
1317
1316
  reserveConfig.minLiquidationBonusBps
1318
- ),
1319
- });
1317
+ )
1318
+ );
1320
1319
  }
1321
1320
  break;
1322
1321
  case 'maxLiquidationBonusBps':
1323
1322
  if (reserve === undefined || reserve.config.maxLiquidationBonusBps !== reserveConfig.maxLiquidationBonusBps) {
1324
- updateReserveIxnsArgs.push({
1325
- mode: UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator + 1,
1326
- value: updateReserveConfigEncodedValue(
1323
+ updateReserveIxnsArgs.push(
1324
+ createUpdateReserveIxnsArg(
1327
1325
  UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator,
1328
1326
  reserveConfig.maxLiquidationBonusBps
1329
- ),
1330
- });
1327
+ )
1328
+ );
1331
1329
  }
1332
1330
  break;
1333
1331
  case 'badDebtLiquidationBonusBps':
@@ -1335,13 +1333,12 @@ function handleConfigUpdate(
1335
1333
  reserve === undefined ||
1336
1334
  reserve.config.badDebtLiquidationBonusBps !== reserveConfig.badDebtLiquidationBonusBps
1337
1335
  ) {
1338
- updateReserveIxnsArgs.push({
1339
- mode: UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator + 1,
1340
- value: updateReserveConfigEncodedValue(
1336
+ updateReserveIxnsArgs.push(
1337
+ createUpdateReserveIxnsArg(
1341
1338
  UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator,
1342
1339
  reserveConfig.badDebtLiquidationBonusBps
1343
- ),
1344
- });
1340
+ )
1341
+ );
1345
1342
  }
1346
1343
  break;
1347
1344
  case 'deleveragingMarginCallPeriodSecs':
@@ -1349,13 +1346,12 @@ function handleConfigUpdate(
1349
1346
  reserve === undefined ||
1350
1347
  !reserve.config.deleveragingMarginCallPeriodSecs.eq(reserveConfig.deleveragingMarginCallPeriodSecs)
1351
1348
  ) {
1352
- updateReserveIxnsArgs.push({
1353
- mode: UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator + 1,
1354
- value: updateReserveConfigEncodedValue(
1349
+ updateReserveIxnsArgs.push(
1350
+ createUpdateReserveIxnsArg(
1355
1351
  UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator,
1356
1352
  reserveConfig.deleveragingMarginCallPeriodSecs.toNumber()
1357
- ),
1358
- });
1353
+ )
1354
+ );
1359
1355
  }
1360
1356
  break;
1361
1357
  case 'deleveragingThresholdDecreaseBpsPerDay':
@@ -1363,43 +1359,40 @@ function handleConfigUpdate(
1363
1359
  reserve === undefined ||
1364
1360
  !reserve.config.deleveragingThresholdDecreaseBpsPerDay.eq(reserveConfig.deleveragingThresholdDecreaseBpsPerDay)
1365
1361
  ) {
1366
- updateReserveIxnsArgs.push({
1367
- mode: UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.discriminator + 1,
1368
- value: updateReserveConfigEncodedValue(
1362
+ updateReserveIxnsArgs.push(
1363
+ createUpdateReserveIxnsArg(
1369
1364
  UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.discriminator,
1370
1365
  reserveConfig.deleveragingThresholdDecreaseBpsPerDay.toNumber()
1371
- ),
1372
- });
1366
+ )
1367
+ );
1373
1368
  }
1374
1369
  break;
1375
1370
  case 'fees':
1376
1371
  if (reserve === undefined || !reserve.config.fees.borrowFeeSf.eq(reserveConfig.fees.borrowFeeSf)) {
1377
- updateReserveIxnsArgs.push({
1378
- mode: UpdateConfigMode.UpdateFeesBorrowFee.discriminator + 1,
1379
- value: updateReserveConfigEncodedValue(
1372
+ updateReserveIxnsArgs.push(
1373
+ createUpdateReserveIxnsArg(
1380
1374
  UpdateConfigMode.UpdateFeesBorrowFee.discriminator,
1381
1375
  reserveConfig.fees.borrowFeeSf.toNumber()
1382
- ),
1383
- });
1376
+ )
1377
+ );
1384
1378
  }
1385
-
1386
1379
  if (reserve === undefined || !reserve.config.fees.flashLoanFeeSf.eq(reserveConfig.fees.flashLoanFeeSf)) {
1387
- updateReserveIxnsArgs.push({
1388
- mode: UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator + 1,
1389
- value: updateReserveConfigEncodedValue(
1380
+ updateReserveIxnsArgs.push(
1381
+ createUpdateReserveIxnsArg(
1390
1382
  UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator,
1391
1383
  reserveConfig.fees.flashLoanFeeSf.toNumber()
1392
- ),
1393
- });
1384
+ )
1385
+ );
1394
1386
  }
1395
-
1396
1387
  break;
1397
1388
  case 'borrowRateCurve':
1398
1389
  if (reserve === undefined) {
1399
- updateReserveIxnsArgs.push({
1400
- mode: UpdateBorrowRateCurve.discriminator + 1,
1401
- value: updateReserveConfigEncodedValue(UpdateBorrowRateCurve.discriminator, reserveConfig.borrowRateCurve),
1402
- });
1390
+ updateReserveIxnsArgs.push(
1391
+ createUpdateReserveIxnsArg(
1392
+ UpdateConfigMode.UpdateBorrowRateCurve.discriminator,
1393
+ reserveConfig.borrowRateCurve
1394
+ )
1395
+ );
1403
1396
  } else {
1404
1397
  let shouldBorrowCurveBeUpdated = false;
1405
1398
  for (let i = 0; i < reserveConfig.borrowRateCurve.points.length; i++) {
@@ -1415,198 +1408,171 @@ function handleConfigUpdate(
1415
1408
  }
1416
1409
 
1417
1410
  if (shouldBorrowCurveBeUpdated) {
1418
- updateReserveIxnsArgs.push({
1419
- mode: UpdateBorrowRateCurve.discriminator + 1,
1420
- value: updateReserveConfigEncodedValue(UpdateBorrowRateCurve.discriminator, reserveConfig.borrowRateCurve),
1421
- });
1411
+ updateReserveIxnsArgs.push(
1412
+ createUpdateReserveIxnsArg(
1413
+ UpdateConfigMode.UpdateBorrowRateCurve.discriminator,
1414
+ reserveConfig.borrowRateCurve
1415
+ )
1416
+ );
1422
1417
  break;
1423
1418
  }
1424
1419
  }
1425
1420
  break;
1426
1421
  case 'borrowFactorPct':
1427
1422
  if (reserve === undefined || !reserve.config.borrowFactorPct.eq(reserveConfig.borrowFactorPct)) {
1428
- updateReserveIxnsArgs.push({
1429
- mode: UpdateConfigMode.UpdateBorrowFactor.discriminator + 1,
1430
- value: updateReserveConfigEncodedValue(
1423
+ updateReserveIxnsArgs.push(
1424
+ createUpdateReserveIxnsArg(
1431
1425
  UpdateConfigMode.UpdateBorrowFactor.discriminator,
1432
1426
  reserveConfig.borrowFactorPct.toNumber()
1433
- ),
1434
- });
1427
+ )
1428
+ );
1435
1429
  }
1436
1430
  break;
1437
1431
  case 'depositLimit':
1438
1432
  if (reserve === undefined || !reserve.config.depositLimit.eq(reserveConfig.depositLimit)) {
1439
- updateReserveIxnsArgs.push({
1440
- mode: UpdateConfigMode.UpdateDepositLimit.discriminator + 1,
1441
- value: updateReserveConfigEncodedValue(
1433
+ updateReserveIxnsArgs.push(
1434
+ createUpdateReserveIxnsArg(
1442
1435
  UpdateConfigMode.UpdateDepositLimit.discriminator,
1443
1436
  BigInt(reserveConfig.depositLimit.toString())
1444
- ),
1445
- });
1437
+ )
1438
+ );
1446
1439
  }
1447
1440
  break;
1448
1441
  case 'borrowLimit':
1449
1442
  if (reserve === undefined || !reserve.config.borrowLimit.eq(reserveConfig.borrowLimit)) {
1450
- updateReserveIxnsArgs.push({
1451
- mode: UpdateConfigMode.UpdateBorrowLimit.discriminator + 1,
1452
- value: updateReserveConfigEncodedValue(
1443
+ updateReserveIxnsArgs.push(
1444
+ createUpdateReserveIxnsArg(
1453
1445
  UpdateConfigMode.UpdateBorrowLimit.discriminator,
1454
1446
  BigInt(reserveConfig.borrowLimit.toString())
1455
- ),
1456
- });
1447
+ )
1448
+ );
1457
1449
  }
1458
1450
  break;
1459
1451
  case 'tokenInfo':
1460
1452
  const tokenInfo = reserveConfig.tokenInfo;
1461
1453
  if (reserve === undefined) {
1462
- updateReserveIxnsArgs.push({
1463
- mode: UpdateConfigMode.UpdateTokenInfoName.discriminator + 1,
1464
- value: updateReserveConfigEncodedValue(UpdateConfigMode.UpdateTokenInfoName.discriminator, tokenInfo.name),
1465
- });
1466
- updateReserveIxnsArgs.push({
1467
- mode: UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator + 1,
1468
- value: updateReserveConfigEncodedValue(
1454
+ updateReserveIxnsArgs.push(
1455
+ createUpdateReserveIxnsArg(UpdateConfigMode.UpdateTokenInfoName.discriminator, tokenInfo.name)
1456
+ );
1457
+ updateReserveIxnsArgs.push(
1458
+ createUpdateReserveIxnsArg(
1469
1459
  UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator,
1470
1460
  tokenInfo.heuristic.lower.toNumber()
1471
- ),
1472
- });
1473
- updateReserveIxnsArgs.push({
1474
- mode: UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator + 1,
1475
- value: updateReserveConfigEncodedValue(
1461
+ )
1462
+ );
1463
+ updateReserveIxnsArgs.push(
1464
+ createUpdateReserveIxnsArg(
1476
1465
  UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator,
1477
1466
  tokenInfo.heuristic.upper.toNumber()
1478
- ),
1479
- });
1480
- updateReserveIxnsArgs.push({
1481
- mode: UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator + 1,
1482
- value: updateReserveConfigEncodedValue(
1467
+ )
1468
+ );
1469
+ updateReserveIxnsArgs.push(
1470
+ createUpdateReserveIxnsArg(
1483
1471
  UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator,
1484
1472
  tokenInfo.heuristic.exp.toNumber()
1485
- ),
1486
- });
1487
- updateReserveIxnsArgs.push({
1488
- mode: UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator + 1,
1489
- value: updateReserveConfigEncodedValue(
1473
+ )
1474
+ );
1475
+ updateReserveIxnsArgs.push(
1476
+ createUpdateReserveIxnsArg(
1490
1477
  UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator,
1491
1478
  tokenInfo.maxTwapDivergenceBps.toNumber()
1492
- ),
1493
- });
1494
- updateReserveIxnsArgs.push({
1495
- mode: UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator + 1,
1496
- value: updateReserveConfigEncodedValue(
1479
+ )
1480
+ );
1481
+ updateReserveIxnsArgs.push(
1482
+ createUpdateReserveIxnsArg(
1497
1483
  UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator,
1498
1484
  tokenInfo.maxAgePriceSeconds.toNumber()
1499
- ),
1500
- });
1501
- updateReserveIxnsArgs.push({
1502
- mode: UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator + 1,
1503
- value: updateReserveConfigEncodedValue(
1485
+ )
1486
+ );
1487
+ updateReserveIxnsArgs.push(
1488
+ createUpdateReserveIxnsArg(
1504
1489
  UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator,
1505
1490
  tokenInfo.maxAgeTwapSeconds.toNumber()
1506
- ),
1507
- });
1508
- updateReserveIxnsArgs.push({
1509
- mode: UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator + 1,
1510
- value: updateReserveConfigEncodedValue(
1491
+ )
1492
+ );
1493
+ updateReserveIxnsArgs.push(
1494
+ createUpdateReserveIxnsArg(
1511
1495
  UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator,
1512
1496
  tokenInfo.scopeConfiguration.priceChain
1513
- ),
1514
- });
1515
- updateReserveIxnsArgs.push({
1516
- mode: UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator + 1,
1517
- value: updateReserveConfigEncodedValue(
1497
+ )
1498
+ );
1499
+ updateReserveIxnsArgs.push(
1500
+ createUpdateReserveIxnsArg(
1518
1501
  UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator,
1519
1502
  tokenInfo.scopeConfiguration.twapChain
1520
- ),
1521
- });
1522
- updateReserveIxnsArgs.push({
1523
- mode: UpdateConfigMode.UpdateSwitchboardFeed.discriminator + 1,
1524
- value: updateReserveConfigEncodedValue(
1503
+ )
1504
+ );
1505
+ updateReserveIxnsArgs.push(
1506
+ createUpdateReserveIxnsArg(
1525
1507
  UpdateConfigMode.UpdateSwitchboardFeed.discriminator,
1526
1508
  tokenInfo.switchboardConfiguration.priceAggregator
1527
- ),
1528
- });
1529
- updateReserveIxnsArgs.push({
1530
- mode: UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator + 1,
1531
- value: updateReserveConfigEncodedValue(
1509
+ )
1510
+ );
1511
+ updateReserveIxnsArgs.push(
1512
+ createUpdateReserveIxnsArg(
1532
1513
  UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator,
1533
1514
  tokenInfo.switchboardConfiguration.twapAggregator
1534
- ),
1535
- });
1536
- updateReserveIxnsArgs.push({
1537
- mode: UpdateConfigMode.UpdatePythPrice.discriminator + 1,
1538
- value: updateReserveConfigEncodedValue(
1539
- UpdateConfigMode.UpdatePythPrice.discriminator,
1540
- tokenInfo.pythConfiguration.price
1541
- ),
1542
- });
1543
- updateReserveIxnsArgs.push({
1544
- mode: UpdateConfigMode.UpdateBlockPriceUsage.discriminator + 1,
1545
- value: updateReserveConfigEncodedValue(
1546
- UpdateConfigMode.UpdateBlockPriceUsage.discriminator,
1547
- tokenInfo.blockPriceUsage
1548
- ),
1549
- });
1515
+ )
1516
+ );
1517
+ updateReserveIxnsArgs.push(
1518
+ createUpdateReserveIxnsArg(UpdateConfigMode.UpdatePythPrice.discriminator, tokenInfo.pythConfiguration.price)
1519
+ );
1520
+ updateReserveIxnsArgs.push(
1521
+ createUpdateReserveIxnsArg(UpdateConfigMode.UpdateBlockPriceUsage.discriminator, tokenInfo.blockPriceUsage)
1522
+ );
1550
1523
  } else {
1551
1524
  if (!sameLengthArrayEquals(reserve.config.tokenInfo.name, tokenInfo.name)) {
1552
- updateReserveIxnsArgs.push({
1553
- mode: UpdateConfigMode.UpdateTokenInfoName.discriminator + 1,
1554
- value: updateReserveConfigEncodedValue(UpdateConfigMode.UpdateTokenInfoName.discriminator, tokenInfo.name),
1555
- });
1525
+ updateReserveIxnsArgs.push(
1526
+ createUpdateReserveIxnsArg(UpdateConfigMode.UpdateTokenInfoName.discriminator, tokenInfo.name)
1527
+ );
1556
1528
  }
1557
1529
  if (!reserve.config.tokenInfo.heuristic.lower.eq(tokenInfo.heuristic.lower)) {
1558
- updateReserveIxnsArgs.push({
1559
- mode: UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator + 1,
1560
- value: updateReserveConfigEncodedValue(
1530
+ updateReserveIxnsArgs.push(
1531
+ createUpdateReserveIxnsArg(
1561
1532
  UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator,
1562
1533
  tokenInfo.heuristic.lower.toNumber()
1563
- ),
1564
- });
1534
+ )
1535
+ );
1565
1536
  }
1566
1537
  if (!reserve.config.tokenInfo.heuristic.upper.eq(tokenInfo.heuristic.upper)) {
1567
- updateReserveIxnsArgs.push({
1568
- mode: UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator + 1,
1569
- value: updateReserveConfigEncodedValue(
1538
+ updateReserveIxnsArgs.push(
1539
+ createUpdateReserveIxnsArg(
1570
1540
  UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator,
1571
1541
  tokenInfo.heuristic.upper.toNumber()
1572
- ),
1573
- });
1542
+ )
1543
+ );
1574
1544
  }
1575
1545
  if (!reserve.config.tokenInfo.heuristic.exp.eq(tokenInfo.heuristic.exp)) {
1576
- updateReserveIxnsArgs.push({
1577
- mode: UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator + 1,
1578
- value: updateReserveConfigEncodedValue(
1546
+ updateReserveIxnsArgs.push(
1547
+ createUpdateReserveIxnsArg(
1579
1548
  UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator,
1580
1549
  tokenInfo.heuristic.exp.toNumber()
1581
- ),
1582
- });
1550
+ )
1551
+ );
1583
1552
  }
1584
1553
  if (!reserve.config.tokenInfo.maxTwapDivergenceBps.eq(tokenInfo.maxTwapDivergenceBps)) {
1585
- updateReserveIxnsArgs.push({
1586
- mode: UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator + 1,
1587
- value: updateReserveConfigEncodedValue(
1554
+ updateReserveIxnsArgs.push(
1555
+ createUpdateReserveIxnsArg(
1588
1556
  UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator,
1589
1557
  tokenInfo.maxTwapDivergenceBps.toNumber()
1590
- ),
1591
- });
1558
+ )
1559
+ );
1592
1560
  }
1593
1561
  if (!reserve.config.tokenInfo.maxAgePriceSeconds.eq(tokenInfo.maxAgePriceSeconds)) {
1594
- updateReserveIxnsArgs.push({
1595
- mode: UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator + 1,
1596
- value: updateReserveConfigEncodedValue(
1562
+ updateReserveIxnsArgs.push(
1563
+ createUpdateReserveIxnsArg(
1597
1564
  UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator,
1598
1565
  tokenInfo.maxAgePriceSeconds.toNumber()
1599
- ),
1600
- });
1566
+ )
1567
+ );
1601
1568
  }
1602
1569
  if (!reserve.config.tokenInfo.maxAgeTwapSeconds.eq(tokenInfo.maxAgeTwapSeconds)) {
1603
- updateReserveIxnsArgs.push({
1604
- mode: UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator + 1,
1605
- value: updateReserveConfigEncodedValue(
1570
+ updateReserveIxnsArgs.push(
1571
+ createUpdateReserveIxnsArg(
1606
1572
  UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator,
1607
1573
  tokenInfo.maxAgeTwapSeconds.toNumber()
1608
- ),
1609
- });
1574
+ )
1575
+ );
1610
1576
  }
1611
1577
  if (
1612
1578
  !sameLengthArrayEquals(
@@ -1614,13 +1580,12 @@ function handleConfigUpdate(
1614
1580
  tokenInfo.scopeConfiguration.priceChain
1615
1581
  )
1616
1582
  ) {
1617
- updateReserveIxnsArgs.push({
1618
- mode: UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator + 1,
1619
- value: updateReserveConfigEncodedValue(
1583
+ updateReserveIxnsArgs.push(
1584
+ createUpdateReserveIxnsArg(
1620
1585
  UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator,
1621
1586
  tokenInfo.scopeConfiguration.priceChain
1622
- ),
1623
- });
1587
+ )
1588
+ );
1624
1589
  }
1625
1590
  if (
1626
1591
  !sameLengthArrayEquals(
@@ -1628,133 +1593,90 @@ function handleConfigUpdate(
1628
1593
  tokenInfo.scopeConfiguration.twapChain
1629
1594
  )
1630
1595
  ) {
1631
- updateReserveIxnsArgs.push({
1632
- mode: UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator + 1,
1633
- value: updateReserveConfigEncodedValue(
1596
+ updateReserveIxnsArgs.push(
1597
+ createUpdateReserveIxnsArg(
1634
1598
  UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator,
1635
1599
  tokenInfo.scopeConfiguration.twapChain
1636
- ),
1637
- });
1600
+ )
1601
+ );
1638
1602
  }
1639
1603
  if (
1640
1604
  !reserve.config.tokenInfo.switchboardConfiguration.priceAggregator.equals(
1641
1605
  tokenInfo.switchboardConfiguration.priceAggregator
1642
1606
  )
1643
1607
  ) {
1644
- updateReserveIxnsArgs.push({
1645
- mode: UpdateConfigMode.UpdateSwitchboardFeed.discriminator + 1,
1646
- value: updateReserveConfigEncodedValue(
1608
+ updateReserveIxnsArgs.push(
1609
+ createUpdateReserveIxnsArg(
1647
1610
  UpdateConfigMode.UpdateSwitchboardFeed.discriminator,
1648
1611
  tokenInfo.switchboardConfiguration.priceAggregator
1649
- ),
1650
- });
1612
+ )
1613
+ );
1651
1614
  }
1652
1615
  if (
1653
1616
  !reserve.config.tokenInfo.switchboardConfiguration.twapAggregator.equals(
1654
1617
  tokenInfo.switchboardConfiguration.twapAggregator
1655
1618
  )
1656
1619
  ) {
1657
- updateReserveIxnsArgs.push({
1658
- mode: UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator + 1,
1659
- value: updateReserveConfigEncodedValue(
1620
+ updateReserveIxnsArgs.push(
1621
+ createUpdateReserveIxnsArg(
1660
1622
  UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator,
1661
1623
  tokenInfo.switchboardConfiguration.twapAggregator
1662
- ),
1663
- });
1624
+ )
1625
+ );
1664
1626
  }
1665
1627
  if (!reserve.config.tokenInfo.pythConfiguration.price.equals(tokenInfo.pythConfiguration.price)) {
1666
- updateReserveIxnsArgs.push({
1667
- mode: UpdateConfigMode.UpdatePythPrice.discriminator + 1,
1668
- value: updateReserveConfigEncodedValue(
1628
+ updateReserveIxnsArgs.push(
1629
+ createUpdateReserveIxnsArg(
1669
1630
  UpdateConfigMode.UpdatePythPrice.discriminator,
1670
1631
  tokenInfo.pythConfiguration.price
1671
- ),
1672
- });
1632
+ )
1633
+ );
1673
1634
  }
1674
1635
  if (reserve.config.tokenInfo.blockPriceUsage !== tokenInfo.blockPriceUsage) {
1675
- updateReserveIxnsArgs.push({
1676
- mode: UpdateConfigMode.UpdateBlockPriceUsage.discriminator + 1,
1677
- value: updateReserveConfigEncodedValue(
1678
- UpdateConfigMode.UpdateBlockPriceUsage.discriminator,
1679
- tokenInfo.blockPriceUsage
1680
- ),
1681
- });
1636
+ updateReserveIxnsArgs.push(
1637
+ createUpdateReserveIxnsArg(UpdateConfigMode.UpdateBlockPriceUsage.discriminator, tokenInfo.blockPriceUsage)
1638
+ );
1682
1639
  }
1683
1640
  if (!reserve.config.tokenInfo.scopeConfiguration.priceFeed.equals(tokenInfo.scopeConfiguration.priceFeed)) {
1684
- updateReserveIxnsArgs.push({
1685
- mode: UpdateConfigMode.UpdateScopePriceFeed.discriminator + 1,
1686
- value: updateReserveConfigEncodedValue(
1641
+ updateReserveIxnsArgs.push(
1642
+ createUpdateReserveIxnsArg(
1687
1643
  UpdateConfigMode.UpdateScopePriceFeed.discriminator,
1688
1644
  tokenInfo.scopeConfiguration.priceFeed
1689
- ),
1690
- });
1645
+ )
1646
+ );
1691
1647
  }
1692
1648
  }
1693
1649
  break;
1694
1650
  case 'depositWithdrawalCap':
1695
- if (reserve === undefined) {
1696
- updateReserveIxnsArgs.push({
1697
- mode: UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator + 1,
1698
- value: updateReserveConfigEncodedValue(UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, [
1699
- reserveConfig.depositWithdrawalCap.configCapacity.toNumber(),
1700
- reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1701
- ]),
1702
- });
1703
- } else if (
1651
+ if (
1652
+ reserve === undefined ||
1704
1653
  !reserve.config.depositWithdrawalCap.configCapacity.eq(reserveConfig.depositWithdrawalCap.configCapacity) ||
1705
1654
  !reserve.config.depositWithdrawalCap.configIntervalLengthSeconds.eq(
1706
1655
  reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds
1707
1656
  )
1708
1657
  ) {
1709
- updateReserveIxnsArgs.push({
1710
- mode: UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator + 1,
1711
- value: updateReserveConfigEncodedValue(UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, [
1658
+ updateReserveIxnsArgs.push(
1659
+ createUpdateReserveIxnsArg(UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, [
1712
1660
  reserveConfig.depositWithdrawalCap.configCapacity.toNumber(),
1713
1661
  reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1714
- ]),
1715
- });
1716
- } else if (
1717
- !reserve.config.depositWithdrawalCap.currentTotal.eq(reserveConfig.depositWithdrawalCap.currentTotal)
1718
- ) {
1719
- updateReserveIxnsArgs.push({
1720
- mode: UpdateConfigMode.UpdateDepositWithdrawalCapCurrentTotal.discriminator + 1,
1721
- value: updateReserveConfigEncodedValue(
1722
- UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator,
1723
- reserveConfig.depositWithdrawalCap.currentTotal.toNumber()
1724
- ),
1725
- });
1662
+ ])
1663
+ );
1726
1664
  }
1727
1665
  break;
1728
1666
  case 'debtWithdrawalCap':
1729
- if (reserve === undefined) {
1730
- updateReserveIxnsArgs.push({
1731
- mode: UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator + 1,
1732
- value: updateReserveConfigEncodedValue(UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, [
1733
- reserveConfig.debtWithdrawalCap.configCapacity.toNumber(),
1734
- reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1735
- ]),
1736
- });
1737
- } else if (
1667
+ if (
1668
+ reserve === undefined ||
1738
1669
  !reserve.config.debtWithdrawalCap.configCapacity.eq(reserveConfig.debtWithdrawalCap.configCapacity) ||
1739
1670
  !reserve.config.debtWithdrawalCap.configIntervalLengthSeconds.eq(
1740
1671
  reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds
1741
1672
  )
1742
1673
  ) {
1743
- updateReserveIxnsArgs.push({
1744
- mode: UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator + 1,
1745
- value: updateReserveConfigEncodedValue(UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, [
1674
+ updateReserveIxnsArgs.push(
1675
+ createUpdateReserveIxnsArg(UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, [
1746
1676
  reserveConfig.debtWithdrawalCap.configCapacity.toNumber(),
1747
1677
  reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1748
- ]),
1749
- });
1750
- } else if (!reserve.config.debtWithdrawalCap.currentTotal.eq(reserveConfig.debtWithdrawalCap.currentTotal)) {
1751
- updateReserveIxnsArgs.push({
1752
- mode: UpdateConfigMode.UpdateDebtWithdrawalCapCurrentTotal.discriminator + 1,
1753
- value: updateReserveConfigEncodedValue(
1754
- UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator,
1755
- reserveConfig.debtWithdrawalCap.currentTotal.toNumber()
1756
- ),
1757
- });
1678
+ ])
1679
+ );
1758
1680
  }
1759
1681
  break;
1760
1682
  case 'elevationGroups':
@@ -1762,13 +1684,9 @@ function handleConfigUpdate(
1762
1684
  reserve === undefined ||
1763
1685
  !sameLengthArrayEquals(reserve.config.elevationGroups, reserveConfig.elevationGroups)
1764
1686
  ) {
1765
- updateReserveIxnsArgs.push({
1766
- mode: UpdateConfigMode.UpdateElevationGroup.discriminator + 1,
1767
- value: updateReserveConfigEncodedValue(
1768
- UpdateConfigMode.UpdateElevationGroup.discriminator,
1769
- reserveConfig.elevationGroups
1770
- ),
1771
- });
1687
+ updateReserveIxnsArgs.push(
1688
+ createUpdateReserveIxnsArg(UpdateConfigMode.UpdateElevationGroup.discriminator, reserveConfig.elevationGroups)
1689
+ );
1772
1690
  }
1773
1691
  break;
1774
1692
  case 'disableUsageAsCollOutsideEmode':
@@ -1776,13 +1694,12 @@ function handleConfigUpdate(
1776
1694
  reserve === undefined ||
1777
1695
  reserve.config.disableUsageAsCollOutsideEmode !== reserveConfig.disableUsageAsCollOutsideEmode
1778
1696
  ) {
1779
- updateReserveIxnsArgs.push({
1780
- mode: UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator + 1,
1781
- value: updateReserveConfigEncodedValue(
1697
+ updateReserveIxnsArgs.push(
1698
+ createUpdateReserveIxnsArg(
1782
1699
  UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator,
1783
1700
  reserveConfig.disableUsageAsCollOutsideEmode
1784
- ),
1785
- });
1701
+ )
1702
+ );
1786
1703
  }
1787
1704
  break;
1788
1705
  case 'utilizationLimitBlockBorrowingAbovePct':
@@ -1790,24 +1707,22 @@ function handleConfigUpdate(
1790
1707
  reserve === undefined ||
1791
1708
  reserve.config.utilizationLimitBlockBorrowingAbovePct !== reserveConfig.utilizationLimitBlockBorrowingAbovePct
1792
1709
  ) {
1793
- updateReserveIxnsArgs.push({
1794
- mode: UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator + 1,
1795
- value: updateReserveConfigEncodedValue(
1710
+ updateReserveIxnsArgs.push(
1711
+ createUpdateReserveIxnsArg(
1796
1712
  UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator,
1797
1713
  reserveConfig.utilizationLimitBlockBorrowingAbovePct
1798
- ),
1799
- });
1714
+ )
1715
+ );
1800
1716
  }
1801
1717
  break;
1802
1718
  case 'autodeleverageEnabled':
1803
1719
  if (reserve === undefined || reserve.config.autodeleverageEnabled !== reserveConfig.autodeleverageEnabled) {
1804
- updateReserveIxnsArgs.push({
1805
- mode: UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator + 1,
1806
- value: updateReserveConfigEncodedValue(
1720
+ updateReserveIxnsArgs.push(
1721
+ createUpdateReserveIxnsArg(
1807
1722
  UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator,
1808
1723
  reserveConfig.autodeleverageEnabled
1809
- ),
1810
- });
1724
+ )
1725
+ );
1811
1726
  }
1812
1727
  break;
1813
1728
  case 'borrowLimitOutsideElevationGroup':
@@ -1815,13 +1730,12 @@ function handleConfigUpdate(
1815
1730
  reserve === undefined ||
1816
1731
  !reserve.config.borrowLimitOutsideElevationGroup.eq(reserveConfig.borrowLimitOutsideElevationGroup)
1817
1732
  ) {
1818
- updateReserveIxnsArgs.push({
1819
- mode: UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator + 1,
1820
- value: updateReserveConfigEncodedValue(
1733
+ updateReserveIxnsArgs.push(
1734
+ createUpdateReserveIxnsArg(
1821
1735
  UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator,
1822
1736
  reserveConfig.borrowLimitOutsideElevationGroup.toNumber()
1823
- ),
1824
- });
1737
+ )
1738
+ );
1825
1739
  }
1826
1740
  break;
1827
1741
  case 'borrowLimitAgainstThisCollateralInElevationGroup':
@@ -1832,28 +1746,25 @@ function handleConfigUpdate(
1832
1746
  reserveConfig.borrowLimitAgainstThisCollateralInElevationGroup
1833
1747
  )
1834
1748
  ) {
1835
- updateReserveIxnsArgs.push({
1836
- mode: UpdateConfigMode.UpdateBorrowLimitsInElevationGroupAgainstThisReserve.discriminator + 1,
1837
- value: updateReserveConfigEncodedValue(
1749
+ updateReserveIxnsArgs.push(
1750
+ createUpdateReserveIxnsArg(
1838
1751
  UpdateConfigMode.UpdateBorrowLimitsInElevationGroupAgainstThisReserve.discriminator,
1839
1752
  reserveConfig.borrowLimitAgainstThisCollateralInElevationGroup.map((borrowLimit) => borrowLimit.toNumber())
1840
- ),
1841
- });
1753
+ )
1754
+ );
1842
1755
  }
1843
-
1844
1756
  break;
1845
1757
  case 'deleveragingBonusIncreaseBpsPerDay':
1846
1758
  if (
1847
1759
  reserve === undefined ||
1848
1760
  !reserve.config.deleveragingBonusIncreaseBpsPerDay.eq(reserveConfig.deleveragingBonusIncreaseBpsPerDay)
1849
1761
  ) {
1850
- updateReserveIxnsArgs.push({
1851
- mode: UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator + 1,
1852
- value: updateReserveConfigEncodedValue(
1762
+ updateReserveIxnsArgs.push(
1763
+ createUpdateReserveIxnsArg(
1853
1764
  UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator,
1854
1765
  reserveConfig.deleveragingBonusIncreaseBpsPerDay.toNumber()
1855
- ),
1856
- });
1766
+ )
1767
+ );
1857
1768
  }
1858
1769
  break;
1859
1770
  default:
@@ -1861,6 +1772,18 @@ function handleConfigUpdate(
1861
1772
  }
1862
1773
  }
1863
1774
 
1775
+ function createUpdateReserveIxnsArg(
1776
+ discriminator: UpdateConfigModeKind['discriminator'],
1777
+ value: number | number[] | bigint | BorrowRateCurve | PublicKey
1778
+ ): UpdateReserveIxnsArg {
1779
+ return {
1780
+ // Note: below we add 1 to the discriminator, because UpdateConfigMode in SC starts from 1, while the idl-codegen
1781
+ // creates the TS counterparts starting from 0:
1782
+ mode: discriminator + 1,
1783
+ value: updateReserveConfigEncodedValue(discriminator, value),
1784
+ };
1785
+ }
1786
+
1864
1787
  export function updateEntireReserveConfigIx(
1865
1788
  marketWithAddress: MarketWithAddress,
1866
1789
  reserveAddress: PublicKey,
@@ -1896,7 +1819,7 @@ export function parseForChangesReserveConfigAndGetIxs(
1896
1819
  reserveConfig: ReserveConfig,
1897
1820
  programId: PublicKey
1898
1821
  ) {
1899
- let updateReserveIxnsArgs: UpdateReserveIxnsArgs[] = [];
1822
+ let updateReserveIxnsArgs: UpdateReserveIxnsArg[] = [];
1900
1823
  for (const key in reserveConfig.toEncodable()) {
1901
1824
  if (isExcludedReserveConfigKey(key)) {
1902
1825
  continue;
@@ -1929,7 +1852,7 @@ export function parseForChangesReserveConfigAndGetIxs(
1929
1852
  }
1930
1853
 
1931
1854
  export function updateReserveConfigEncodedValue(
1932
- discriminator: number,
1855
+ discriminator: UpdateConfigModeKind['discriminator'],
1933
1856
  value: number | number[] | bigint | BorrowRateCurve | PublicKey
1934
1857
  ): Uint8Array {
1935
1858
  let buffer: Buffer;
@@ -1963,8 +1886,6 @@ export function updateReserveConfigEncodedValue(
1963
1886
  case UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator:
1964
1887
  case UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator:
1965
1888
  case UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator:
1966
- case UpdateConfigMode.UpdateDebtWithdrawalCapCurrentTotal.discriminator:
1967
- case UpdateConfigMode.UpdateDepositWithdrawalCapCurrentTotal.discriminator:
1968
1889
  case UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator:
1969
1890
  case UpdateConfigMode.UpdateBorrowFactor.discriminator:
1970
1891
  case UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.discriminator:
@@ -2054,7 +1975,7 @@ export type ReserveWithAddress = {
2054
1975
  state: Reserve;
2055
1976
  };
2056
1977
 
2057
- export type UpdateReserveIxnsArgs = {
1978
+ export type UpdateReserveIxnsArg = {
2058
1979
  mode: number;
2059
1980
  value: Uint8Array;
2060
1981
  };
@@ -2074,7 +1995,7 @@ export const modeMatches = (mode: number): boolean => {
2074
1995
 
2075
1996
  // Sort update reserve ixns, to first have the oracle config updates first
2076
1997
  // In order to skip the validation for the scope config updates
2077
- export const sortIxnsByPriority = (updateReserveIxnsArgs: UpdateReserveIxnsArgs[]) => {
1998
+ export const sortIxnsByPriority = (updateReserveIxnsArgs: UpdateReserveIxnsArg[]) => {
2078
1999
  return updateReserveIxnsArgs.sort((a, b) => {
2079
2000
  const isPriorityA = a.mode === 20 || a.mode === 16;
2080
2001
  const isPriorityB = b.mode === 20 || b.mode === 16;