@kamino-finance/klend-sdk 5.11.12-beta.0 → 5.11.12

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 (60) hide show
  1. package/README_KAMINO_MANAGER.md +2 -2
  2. package/dist/classes/reserve.d.ts +1 -7
  3. package/dist/classes/reserve.d.ts.map +1 -1
  4. package/dist/classes/reserve.js +255 -145
  5. package/dist/classes/reserve.js.map +1 -1
  6. package/dist/classes/utils.d.ts +1 -1
  7. package/dist/classes/utils.d.ts.map +1 -1
  8. package/dist/classes/utils.js +2 -8
  9. package/dist/classes/utils.js.map +1 -1
  10. package/dist/classes/vault.js +2 -2
  11. package/dist/client_kamino_manager.d.ts.map +1 -1
  12. package/dist/client_kamino_manager.js +130 -57
  13. package/dist/client_kamino_manager.js.map +1 -1
  14. package/dist/idl_codegen_kamino_vault/accounts/VaultState.d.ts +9 -6
  15. package/dist/idl_codegen_kamino_vault/accounts/VaultState.d.ts.map +1 -1
  16. package/dist/idl_codegen_kamino_vault/accounts/VaultState.js +19 -13
  17. package/dist/idl_codegen_kamino_vault/accounts/VaultState.js.map +1 -1
  18. package/dist/idl_codegen_kamino_vault/errors/custom.d.ts +9 -1
  19. package/dist/idl_codegen_kamino_vault/errors/custom.d.ts.map +1 -1
  20. package/dist/idl_codegen_kamino_vault/errors/custom.js +15 -1
  21. package/dist/idl_codegen_kamino_vault/errors/custom.js.map +1 -1
  22. package/dist/idl_codegen_kamino_vault/instructions/index.d.ts +2 -0
  23. package/dist/idl_codegen_kamino_vault/instructions/index.d.ts.map +1 -1
  24. package/dist/idl_codegen_kamino_vault/instructions/index.js +3 -1
  25. package/dist/idl_codegen_kamino_vault/instructions/index.js.map +1 -1
  26. package/dist/idl_codegen_kamino_vault/instructions/removeAllocation.d.ts +8 -0
  27. package/dist/idl_codegen_kamino_vault/instructions/removeAllocation.d.ts.map +1 -0
  28. package/dist/idl_codegen_kamino_vault/instructions/removeAllocation.js +17 -0
  29. package/dist/idl_codegen_kamino_vault/instructions/removeAllocation.js.map +1 -0
  30. package/dist/idl_codegen_kamino_vault/programId.d.ts.map +1 -1
  31. package/dist/idl_codegen_kamino_vault/programId.js +1 -1
  32. package/dist/idl_codegen_kamino_vault/programId.js.map +1 -1
  33. package/dist/lending_operations/repay_with_collateral_operations.d.ts +3 -1
  34. package/dist/lending_operations/repay_with_collateral_operations.d.ts.map +1 -1
  35. package/dist/lending_operations/repay_with_collateral_operations.js +13 -3
  36. package/dist/lending_operations/repay_with_collateral_operations.js.map +1 -1
  37. package/dist/lending_operations/swap_collateral_operations.d.ts.map +1 -1
  38. package/dist/lending_operations/swap_collateral_operations.js +4 -0
  39. package/dist/lending_operations/swap_collateral_operations.js.map +1 -1
  40. package/dist/leverage/operations.d.ts +5 -2
  41. package/dist/leverage/operations.d.ts.map +1 -1
  42. package/dist/leverage/operations.js +83 -44
  43. package/dist/leverage/operations.js.map +1 -1
  44. package/dist/leverage/types.d.ts +11 -0
  45. package/dist/leverage/types.d.ts.map +1 -1
  46. package/package.json +2 -2
  47. package/src/classes/reserve.ts +319 -177
  48. package/src/classes/utils.ts +3 -9
  49. package/src/classes/vault.ts +2 -2
  50. package/src/client_kamino_manager.ts +164 -57
  51. package/src/idl_codegen_kamino_vault/accounts/VaultState.ts +25 -17
  52. package/src/idl_codegen_kamino_vault/errors/custom.ts +17 -0
  53. package/src/idl_codegen_kamino_vault/instructions/index.ts +2 -0
  54. package/src/idl_codegen_kamino_vault/instructions/removeAllocation.ts +26 -0
  55. package/src/idl_codegen_kamino_vault/programId.ts +1 -2
  56. package/src/idl_kamino_vault.json +38 -3
  57. package/src/lending_operations/repay_with_collateral_operations.ts +22 -6
  58. package/src/lending_operations/swap_collateral_operations.ts +12 -1
  59. package/src/leverage/operations.ts +101 -55
  60. package/src/leverage/types.ts +13 -0
@@ -36,7 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.sortIxnsByPriority = exports.modeMatches = exports.KaminoReserve = exports.DEFAULT_RECENT_SLOT_DURATION_MS = void 0;
39
+ exports.KaminoReserve = exports.DEFAULT_RECENT_SLOT_DURATION_MS = void 0;
40
40
  exports.createReserveIxs = createReserveIxs;
41
41
  exports.updateReserveConfigIx = updateReserveConfigIx;
42
42
  exports.updateEntireReserveConfigIx = updateEntireReserveConfigIx;
@@ -919,12 +919,12 @@ async function createReserveIxs(connection, owner, ownerLiquiditySource, lending
919
919
  const initReserveIx = (0, lib_1.initReserve)(accounts, programId);
920
920
  return [createReserveIx, initReserveIx];
921
921
  }
922
- function updateReserveConfigIx(marketWithAddress, reserveAddress, modeDiscriminator, value, programId, skipValidation = false) {
922
+ function updateReserveConfigIx(marketWithAddress, reserveAddress, modeDiscriminator, value, programId) {
923
923
  value;
924
924
  const args = {
925
925
  mode: new anchor.BN(modeDiscriminator),
926
926
  value: value,
927
- skipValidation,
927
+ skipValidation: false,
928
928
  };
929
929
  const accounts = {
930
930
  lendingMarketOwner: marketWithAddress.state.lendingMarketOwner,
@@ -939,119 +939,195 @@ function isExcludedReserveConfigKey(value) {
939
939
  return EXCLUDED_RESERVE_CONFIG_KEYS.includes(value);
940
940
  }
941
941
  function handleConfigUpdate(key, reserve, reserveConfig, updateReserveIxnsArgs) {
942
- // We add 1 to the discriminator, to account for the fact that the UpdateConfigMode
943
- // inside the SC starts incrementing from 1
944
942
  switch (key) {
945
943
  case 'status':
946
- if (reserve === undefined || reserve.config.status !== reserveConfig.status) {
944
+ if (reserve === undefined) {
947
945
  updateReserveIxnsArgs.push({
948
- mode: types_1.UpdateConfigMode.UpdateReserveStatus.discriminator + 1,
946
+ mode: types_1.UpdateConfigMode.UpdateReserveStatus.discriminator,
947
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateReserveStatus.discriminator, reserveConfig.status),
948
+ });
949
+ }
950
+ else if (reserve.config.status !== reserveConfig.status) {
951
+ updateReserveIxnsArgs.push({
952
+ mode: types_1.UpdateConfigMode.UpdateReserveStatus.discriminator,
949
953
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateReserveStatus.discriminator, reserveConfig.status),
950
954
  });
951
955
  }
952
956
  break;
953
957
  case 'assetTier':
954
- if (reserve === undefined || reserve.config.assetTier !== reserveConfig.assetTier) {
958
+ if (reserve === undefined) {
955
959
  updateReserveIxnsArgs.push({
956
- mode: types_1.UpdateConfigMode.UpdateAssetTier.discriminator + 1,
960
+ mode: types_1.UpdateConfigMode.UpdateAssetTier.discriminator,
961
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateAssetTier.discriminator, reserveConfig.assetTier),
962
+ });
963
+ }
964
+ else if (reserve.config.assetTier !== reserveConfig.assetTier) {
965
+ updateReserveIxnsArgs.push({
966
+ mode: types_1.UpdateConfigMode.UpdateAssetTier.discriminator,
957
967
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateAssetTier.discriminator, reserveConfig.assetTier),
958
968
  });
959
969
  }
960
970
  break;
961
971
  case 'hostFixedInterestRateBps':
962
- if (reserve === undefined || reserve.config.hostFixedInterestRateBps !== reserveConfig.hostFixedInterestRateBps) {
972
+ if (reserve === undefined) {
973
+ updateReserveIxnsArgs.push({
974
+ mode: types_1.UpdateConfigMode.UpdateHostFixedInterestRateBps.discriminator,
975
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateHostFixedInterestRateBps.discriminator, reserveConfig.hostFixedInterestRateBps),
976
+ });
977
+ }
978
+ else if (reserve.config.hostFixedInterestRateBps !== reserveConfig.hostFixedInterestRateBps) {
963
979
  updateReserveIxnsArgs.push({
964
- mode: types_1.UpdateConfigMode.UpdateHostFixedInterestRateBps.discriminator + 1,
980
+ mode: types_1.UpdateConfigMode.UpdateHostFixedInterestRateBps.discriminator,
965
981
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateHostFixedInterestRateBps.discriminator, reserveConfig.hostFixedInterestRateBps),
966
982
  });
967
983
  }
968
984
  break;
969
985
  case 'protocolTakeRatePct':
970
- if (reserve === undefined || reserve.config.protocolTakeRatePct !== reserveConfig.protocolTakeRatePct) {
986
+ if (reserve === undefined) {
971
987
  updateReserveIxnsArgs.push({
972
- mode: types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator + 1,
988
+ mode: types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator,
989
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator, reserveConfig.protocolTakeRatePct),
990
+ });
991
+ }
992
+ else if (reserve.config.protocolTakeRatePct !== reserveConfig.protocolTakeRatePct) {
993
+ updateReserveIxnsArgs.push({
994
+ mode: types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator,
973
995
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator, reserveConfig.protocolTakeRatePct),
974
996
  });
975
997
  }
976
998
  break;
977
999
  case 'protocolLiquidationFeePct':
978
- if (reserve === undefined ||
979
- reserve.config.protocolLiquidationFeePct !== reserveConfig.protocolLiquidationFeePct) {
1000
+ if (reserve === undefined) {
1001
+ updateReserveIxnsArgs.push({
1002
+ mode: types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator,
1003
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator, reserveConfig.protocolLiquidationFeePct),
1004
+ });
1005
+ }
1006
+ else if (reserve.config.protocolLiquidationFeePct !== reserveConfig.protocolLiquidationFeePct) {
980
1007
  updateReserveIxnsArgs.push({
981
- mode: types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator + 1,
1008
+ mode: types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator,
982
1009
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator, reserveConfig.protocolLiquidationFeePct),
983
1010
  });
984
1011
  }
985
1012
  break;
986
1013
  case 'loanToValuePct':
987
- if (reserve === undefined || reserve.config.loanToValuePct !== reserveConfig.loanToValuePct) {
1014
+ if (reserve === undefined) {
1015
+ updateReserveIxnsArgs.push({
1016
+ mode: types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator,
1017
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator, reserveConfig.loanToValuePct),
1018
+ });
1019
+ }
1020
+ else if (reserve.config.loanToValuePct !== reserveConfig.loanToValuePct) {
988
1021
  updateReserveIxnsArgs.push({
989
- mode: types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator + 1,
1022
+ mode: types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator,
990
1023
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator, reserveConfig.loanToValuePct),
991
1024
  });
992
1025
  }
993
1026
  break;
994
1027
  case 'liquidationThresholdPct':
995
- if (reserve === undefined || reserve.config.liquidationThresholdPct !== reserveConfig.liquidationThresholdPct) {
1028
+ if (reserve === undefined) {
996
1029
  updateReserveIxnsArgs.push({
997
- mode: types_1.UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator + 1,
1030
+ mode: types_1.UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator,
1031
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator, reserveConfig.liquidationThresholdPct),
1032
+ });
1033
+ }
1034
+ else if (reserve.config.liquidationThresholdPct !== reserveConfig.liquidationThresholdPct) {
1035
+ updateReserveIxnsArgs.push({
1036
+ mode: types_1.UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator,
998
1037
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator, reserveConfig.liquidationThresholdPct),
999
1038
  });
1000
1039
  }
1001
1040
  break;
1002
1041
  case 'minLiquidationBonusBps':
1003
- if (reserve === undefined || reserve.config.minLiquidationBonusBps !== reserveConfig.minLiquidationBonusBps) {
1042
+ if (reserve === undefined) {
1004
1043
  updateReserveIxnsArgs.push({
1005
- mode: types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator + 1,
1044
+ mode: types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator,
1045
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator, reserveConfig.minLiquidationBonusBps),
1046
+ });
1047
+ }
1048
+ else if (reserve.config.minLiquidationBonusBps !== reserveConfig.minLiquidationBonusBps) {
1049
+ updateReserveIxnsArgs.push({
1050
+ mode: types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator,
1006
1051
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator, reserveConfig.minLiquidationBonusBps),
1007
1052
  });
1008
1053
  }
1009
1054
  break;
1010
1055
  case 'maxLiquidationBonusBps':
1011
- if (reserve === undefined || reserve.config.maxLiquidationBonusBps !== reserveConfig.maxLiquidationBonusBps) {
1056
+ if (reserve === undefined) {
1012
1057
  updateReserveIxnsArgs.push({
1013
- mode: types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator + 1,
1058
+ mode: types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator,
1059
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator, reserveConfig.maxLiquidationBonusBps),
1060
+ });
1061
+ }
1062
+ else if (reserve.config.maxLiquidationBonusBps !== reserveConfig.maxLiquidationBonusBps) {
1063
+ updateReserveIxnsArgs.push({
1064
+ mode: types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator,
1014
1065
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator, reserveConfig.maxLiquidationBonusBps),
1015
1066
  });
1016
1067
  }
1017
1068
  break;
1018
1069
  case 'badDebtLiquidationBonusBps':
1019
- if (reserve === undefined ||
1020
- reserve.config.badDebtLiquidationBonusBps !== reserveConfig.badDebtLiquidationBonusBps) {
1070
+ if (reserve === undefined) {
1071
+ updateReserveIxnsArgs.push({
1072
+ mode: types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator,
1073
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator, reserveConfig.badDebtLiquidationBonusBps),
1074
+ });
1075
+ }
1076
+ else if (reserve.config.badDebtLiquidationBonusBps !== reserveConfig.badDebtLiquidationBonusBps) {
1021
1077
  updateReserveIxnsArgs.push({
1022
- mode: types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator + 1,
1078
+ mode: types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator,
1023
1079
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator, reserveConfig.badDebtLiquidationBonusBps),
1024
1080
  });
1025
1081
  }
1026
1082
  break;
1027
1083
  case 'deleveragingMarginCallPeriodSecs':
1028
- if (reserve === undefined ||
1029
- !reserve.config.deleveragingMarginCallPeriodSecs.eq(reserveConfig.deleveragingMarginCallPeriodSecs)) {
1084
+ if (reserve === undefined) {
1085
+ updateReserveIxnsArgs.push({
1086
+ mode: types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator,
1087
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator, reserveConfig.deleveragingMarginCallPeriodSecs.toNumber()),
1088
+ });
1089
+ }
1090
+ else if (!reserve.config.deleveragingMarginCallPeriodSecs.eq(reserveConfig.deleveragingMarginCallPeriodSecs)) {
1030
1091
  updateReserveIxnsArgs.push({
1031
- mode: types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator + 1,
1092
+ mode: types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator,
1032
1093
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator, reserveConfig.deleveragingMarginCallPeriodSecs.toNumber()),
1033
1094
  });
1034
1095
  }
1035
1096
  break;
1036
1097
  case 'deleveragingThresholdDecreaseBpsPerDay':
1037
- if (reserve === undefined ||
1038
- !reserve.config.deleveragingThresholdDecreaseBpsPerDay.eq(reserveConfig.deleveragingThresholdDecreaseBpsPerDay)) {
1098
+ if (reserve === undefined) {
1099
+ updateReserveIxnsArgs.push({
1100
+ mode: types_1.UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.discriminator,
1101
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.discriminator, reserveConfig.deleveragingThresholdDecreaseBpsPerDay.toNumber()),
1102
+ });
1103
+ }
1104
+ else if (!reserve.config.deleveragingThresholdDecreaseBpsPerDay.eq(reserveConfig.deleveragingThresholdDecreaseBpsPerDay)) {
1039
1105
  updateReserveIxnsArgs.push({
1040
- mode: types_1.UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.discriminator + 1,
1106
+ mode: types_1.UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.discriminator,
1041
1107
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.discriminator, reserveConfig.deleveragingThresholdDecreaseBpsPerDay.toNumber()),
1042
1108
  });
1043
1109
  }
1044
1110
  break;
1045
1111
  case 'fees':
1046
- if (reserve === undefined || !reserve.config.fees.borrowFeeSf.eq(reserveConfig.fees.borrowFeeSf)) {
1112
+ if (reserve === undefined) {
1113
+ updateReserveIxnsArgs.push({
1114
+ mode: types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator,
1115
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator, reserveConfig.fees.borrowFeeSf.toNumber()),
1116
+ });
1117
+ updateReserveIxnsArgs.push({
1118
+ mode: types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator,
1119
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator, reserveConfig.fees.flashLoanFeeSf.toNumber()),
1120
+ });
1121
+ }
1122
+ else if (!reserve.config.fees.borrowFeeSf.eq(reserveConfig.fees.borrowFeeSf)) {
1047
1123
  updateReserveIxnsArgs.push({
1048
- mode: types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator + 1,
1124
+ mode: types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator,
1049
1125
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator, reserveConfig.fees.borrowFeeSf.toNumber()),
1050
1126
  });
1051
1127
  }
1052
- if (reserve === undefined || !reserve.config.fees.flashLoanFeeSf.eq(reserveConfig.fees.flashLoanFeeSf)) {
1128
+ else if (!reserve.config.fees.flashLoanFeeSf.eq(reserveConfig.fees.flashLoanFeeSf)) {
1053
1129
  updateReserveIxnsArgs.push({
1054
- mode: types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator + 1,
1130
+ mode: types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator,
1055
1131
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator, reserveConfig.fees.flashLoanFeeSf.toNumber()),
1056
1132
  });
1057
1133
  }
@@ -1059,50 +1135,63 @@ function handleConfigUpdate(key, reserve, reserveConfig, updateReserveIxnsArgs)
1059
1135
  case 'borrowRateCurve':
1060
1136
  if (reserve === undefined) {
1061
1137
  updateReserveIxnsArgs.push({
1062
- mode: UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator + 1,
1138
+ mode: UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator,
1063
1139
  value: updateReserveConfigEncodedValue(UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator, reserveConfig.borrowRateCurve),
1064
1140
  });
1065
1141
  }
1066
1142
  else {
1067
- let shouldBorrowCurveBeUpdated = false;
1068
1143
  for (let i = 0; i < reserveConfig.borrowRateCurve.points.length; i++) {
1069
1144
  if (reserve.config.borrowRateCurve.points[i].utilizationRateBps !==
1070
1145
  reserveConfig.borrowRateCurve.points[i].utilizationRateBps ||
1071
1146
  reserve.config.borrowRateCurve.points[i].borrowRateBps !==
1072
1147
  reserveConfig.borrowRateCurve.points[i].borrowRateBps) {
1073
- shouldBorrowCurveBeUpdated = true;
1148
+ updateReserveIxnsArgs.push({
1149
+ mode: UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator,
1150
+ value: updateReserveConfigEncodedValue(UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator, reserveConfig.borrowRateCurve),
1151
+ });
1074
1152
  break;
1075
1153
  }
1076
1154
  }
1077
- if (shouldBorrowCurveBeUpdated) {
1078
- updateReserveIxnsArgs.push({
1079
- mode: UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator + 1,
1080
- value: updateReserveConfigEncodedValue(UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator, reserveConfig.borrowRateCurve),
1081
- });
1082
- break;
1083
- }
1084
1155
  }
1085
1156
  break;
1086
1157
  case 'borrowFactorPct':
1087
- if (reserve === undefined || !reserve.config.borrowFactorPct.eq(reserveConfig.borrowFactorPct)) {
1158
+ if (reserve === undefined) {
1088
1159
  updateReserveIxnsArgs.push({
1089
- mode: types_1.UpdateConfigMode.UpdateBorrowFactor.discriminator + 1,
1160
+ mode: types_1.UpdateConfigMode.UpdateBorrowFactor.discriminator,
1161
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowFactor.discriminator, reserveConfig.borrowFactorPct.toNumber()),
1162
+ });
1163
+ }
1164
+ else if (!reserve.config.borrowFactorPct.eq(reserveConfig.borrowFactorPct)) {
1165
+ updateReserveIxnsArgs.push({
1166
+ mode: types_1.UpdateConfigMode.UpdateBorrowFactor.discriminator,
1090
1167
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowFactor.discriminator, reserveConfig.borrowFactorPct.toNumber()),
1091
1168
  });
1092
1169
  }
1093
1170
  break;
1094
1171
  case 'depositLimit':
1095
- if (reserve === undefined || !reserve.config.depositLimit.eq(reserveConfig.depositLimit)) {
1172
+ if (reserve === undefined) {
1173
+ updateReserveIxnsArgs.push({
1174
+ mode: types_1.UpdateConfigMode.UpdateDepositLimit.discriminator,
1175
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositLimit.discriminator, BigInt(reserveConfig.depositLimit.toString())),
1176
+ });
1177
+ }
1178
+ else if (!reserve.config.depositLimit.eq(reserveConfig.depositLimit)) {
1096
1179
  updateReserveIxnsArgs.push({
1097
- mode: types_1.UpdateConfigMode.UpdateDepositLimit.discriminator + 1,
1180
+ mode: types_1.UpdateConfigMode.UpdateDepositLimit.discriminator,
1098
1181
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositLimit.discriminator, BigInt(reserveConfig.depositLimit.toString())),
1099
1182
  });
1100
1183
  }
1101
1184
  break;
1102
1185
  case 'borrowLimit':
1103
- if (reserve === undefined || !reserve.config.borrowLimit.eq(reserveConfig.borrowLimit)) {
1186
+ if (reserve === undefined) {
1187
+ updateReserveIxnsArgs.push({
1188
+ mode: types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator,
1189
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator, BigInt(reserveConfig.borrowLimit.toString())),
1190
+ });
1191
+ }
1192
+ else if (!reserve.config.borrowLimit.eq(reserveConfig.borrowLimit)) {
1104
1193
  updateReserveIxnsArgs.push({
1105
- mode: types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator + 1,
1194
+ mode: types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator,
1106
1195
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator, BigInt(reserveConfig.borrowLimit.toString())),
1107
1196
  });
1108
1197
  }
@@ -1111,140 +1200,140 @@ function handleConfigUpdate(key, reserve, reserveConfig, updateReserveIxnsArgs)
1111
1200
  const tokenInfo = reserveConfig.tokenInfo;
1112
1201
  if (reserve === undefined) {
1113
1202
  updateReserveIxnsArgs.push({
1114
- mode: types_1.UpdateConfigMode.UpdateTokenInfoName.discriminator + 1,
1203
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoName.discriminator,
1115
1204
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoName.discriminator, tokenInfo.name),
1116
1205
  });
1117
1206
  updateReserveIxnsArgs.push({
1118
- mode: types_1.UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator + 1,
1207
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator,
1119
1208
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator, tokenInfo.heuristic.lower.toNumber()),
1120
1209
  });
1121
1210
  updateReserveIxnsArgs.push({
1122
- mode: types_1.UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator + 1,
1211
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator,
1123
1212
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator, tokenInfo.heuristic.upper.toNumber()),
1124
1213
  });
1125
1214
  updateReserveIxnsArgs.push({
1126
- mode: types_1.UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator + 1,
1215
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator,
1127
1216
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator, tokenInfo.heuristic.exp.toNumber()),
1128
1217
  });
1129
1218
  updateReserveIxnsArgs.push({
1130
- mode: types_1.UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator + 1,
1219
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator,
1131
1220
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator, tokenInfo.maxTwapDivergenceBps.toNumber()),
1132
1221
  });
1133
1222
  updateReserveIxnsArgs.push({
1134
- mode: types_1.UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator + 1,
1223
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator,
1135
1224
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator, tokenInfo.maxAgePriceSeconds.toNumber()),
1136
1225
  });
1137
1226
  updateReserveIxnsArgs.push({
1138
- mode: types_1.UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator + 1,
1227
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator,
1139
1228
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator, tokenInfo.maxAgeTwapSeconds.toNumber()),
1140
1229
  });
1141
1230
  updateReserveIxnsArgs.push({
1142
- mode: types_1.UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator + 1,
1231
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator,
1143
1232
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator, tokenInfo.scopeConfiguration.priceChain),
1144
1233
  });
1145
1234
  updateReserveIxnsArgs.push({
1146
- mode: types_1.UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator + 1,
1235
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator,
1147
1236
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator, tokenInfo.scopeConfiguration.twapChain),
1148
1237
  });
1149
1238
  updateReserveIxnsArgs.push({
1150
- mode: types_1.UpdateConfigMode.UpdateSwitchboardFeed.discriminator + 1,
1239
+ mode: types_1.UpdateConfigMode.UpdateSwitchboardFeed.discriminator,
1151
1240
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateSwitchboardFeed.discriminator, tokenInfo.switchboardConfiguration.priceAggregator),
1152
1241
  });
1153
1242
  updateReserveIxnsArgs.push({
1154
- mode: types_1.UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator + 1,
1243
+ mode: types_1.UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator,
1155
1244
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator, tokenInfo.switchboardConfiguration.twapAggregator),
1156
1245
  });
1157
1246
  updateReserveIxnsArgs.push({
1158
- mode: types_1.UpdateConfigMode.UpdatePythPrice.discriminator + 1,
1247
+ mode: types_1.UpdateConfigMode.UpdatePythPrice.discriminator,
1159
1248
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdatePythPrice.discriminator, tokenInfo.pythConfiguration.price),
1160
1249
  });
1161
1250
  updateReserveIxnsArgs.push({
1162
- mode: types_1.UpdateConfigMode.UpdateBlockPriceUsage.discriminator + 1,
1251
+ mode: types_1.UpdateConfigMode.UpdateBlockPriceUsage.discriminator,
1163
1252
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBlockPriceUsage.discriminator, tokenInfo.blockPriceUsage),
1164
1253
  });
1165
1254
  }
1166
1255
  else {
1167
1256
  if (!(0, utils_2.sameLengthArrayEquals)(reserve.config.tokenInfo.name, tokenInfo.name)) {
1168
1257
  updateReserveIxnsArgs.push({
1169
- mode: types_1.UpdateConfigMode.UpdateTokenInfoName.discriminator + 1,
1258
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoName.discriminator,
1170
1259
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoName.discriminator, tokenInfo.name),
1171
1260
  });
1172
1261
  }
1173
1262
  if (!reserve.config.tokenInfo.heuristic.lower.eq(tokenInfo.heuristic.lower)) {
1174
1263
  updateReserveIxnsArgs.push({
1175
- mode: types_1.UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator + 1,
1264
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator,
1176
1265
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator, tokenInfo.heuristic.lower.toNumber()),
1177
1266
  });
1178
1267
  }
1179
1268
  if (!reserve.config.tokenInfo.heuristic.upper.eq(tokenInfo.heuristic.upper)) {
1180
1269
  updateReserveIxnsArgs.push({
1181
- mode: types_1.UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator + 1,
1270
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator,
1182
1271
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator, tokenInfo.heuristic.upper.toNumber()),
1183
1272
  });
1184
1273
  }
1185
1274
  if (!reserve.config.tokenInfo.heuristic.exp.eq(tokenInfo.heuristic.exp)) {
1186
1275
  updateReserveIxnsArgs.push({
1187
- mode: types_1.UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator + 1,
1276
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator,
1188
1277
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator, tokenInfo.heuristic.exp.toNumber()),
1189
1278
  });
1190
1279
  }
1191
1280
  if (!reserve.config.tokenInfo.maxTwapDivergenceBps.eq(tokenInfo.maxTwapDivergenceBps)) {
1192
1281
  updateReserveIxnsArgs.push({
1193
- mode: types_1.UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator + 1,
1282
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator,
1194
1283
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator, tokenInfo.maxTwapDivergenceBps.toNumber()),
1195
1284
  });
1196
1285
  }
1197
1286
  if (!reserve.config.tokenInfo.maxAgePriceSeconds.eq(tokenInfo.maxAgePriceSeconds)) {
1198
1287
  updateReserveIxnsArgs.push({
1199
- mode: types_1.UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator + 1,
1288
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator,
1200
1289
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator, tokenInfo.maxAgePriceSeconds.toNumber()),
1201
1290
  });
1202
1291
  }
1203
1292
  if (!reserve.config.tokenInfo.maxAgeTwapSeconds.eq(tokenInfo.maxAgeTwapSeconds)) {
1204
1293
  updateReserveIxnsArgs.push({
1205
- mode: types_1.UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator + 1,
1294
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator,
1206
1295
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator, tokenInfo.maxAgeTwapSeconds.toNumber()),
1207
1296
  });
1208
1297
  }
1209
1298
  if (!(0, utils_2.sameLengthArrayEquals)(reserve.config.tokenInfo.scopeConfiguration.priceChain, tokenInfo.scopeConfiguration.priceChain)) {
1210
1299
  updateReserveIxnsArgs.push({
1211
- mode: types_1.UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator + 1,
1300
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator,
1212
1301
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator, tokenInfo.scopeConfiguration.priceChain),
1213
1302
  });
1214
1303
  }
1215
1304
  if (!(0, utils_2.sameLengthArrayEquals)(reserve.config.tokenInfo.scopeConfiguration.twapChain, tokenInfo.scopeConfiguration.twapChain)) {
1216
1305
  updateReserveIxnsArgs.push({
1217
- mode: types_1.UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator + 1,
1306
+ mode: types_1.UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator,
1218
1307
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator, tokenInfo.scopeConfiguration.twapChain),
1219
1308
  });
1220
1309
  }
1221
1310
  if (!reserve.config.tokenInfo.switchboardConfiguration.priceAggregator.equals(tokenInfo.switchboardConfiguration.priceAggregator)) {
1222
1311
  updateReserveIxnsArgs.push({
1223
- mode: types_1.UpdateConfigMode.UpdateSwitchboardFeed.discriminator + 1,
1312
+ mode: types_1.UpdateConfigMode.UpdateSwitchboardFeed.discriminator,
1224
1313
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateSwitchboardFeed.discriminator, tokenInfo.switchboardConfiguration.priceAggregator),
1225
1314
  });
1226
1315
  }
1227
1316
  if (!reserve.config.tokenInfo.switchboardConfiguration.twapAggregator.equals(tokenInfo.switchboardConfiguration.twapAggregator)) {
1228
1317
  updateReserveIxnsArgs.push({
1229
- mode: types_1.UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator + 1,
1318
+ mode: types_1.UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator,
1230
1319
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator, tokenInfo.switchboardConfiguration.twapAggregator),
1231
1320
  });
1232
1321
  }
1233
1322
  if (!reserve.config.tokenInfo.pythConfiguration.price.equals(tokenInfo.pythConfiguration.price)) {
1234
1323
  updateReserveIxnsArgs.push({
1235
- mode: types_1.UpdateConfigMode.UpdatePythPrice.discriminator + 1,
1324
+ mode: types_1.UpdateConfigMode.UpdatePythPrice.discriminator,
1236
1325
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdatePythPrice.discriminator, tokenInfo.pythConfiguration.price),
1237
1326
  });
1238
1327
  }
1239
1328
  if (reserve.config.tokenInfo.blockPriceUsage !== tokenInfo.blockPriceUsage) {
1240
1329
  updateReserveIxnsArgs.push({
1241
- mode: types_1.UpdateConfigMode.UpdateBlockPriceUsage.discriminator + 1,
1330
+ mode: types_1.UpdateConfigMode.UpdateBlockPriceUsage.discriminator,
1242
1331
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBlockPriceUsage.discriminator, tokenInfo.blockPriceUsage),
1243
1332
  });
1244
1333
  }
1245
1334
  if (!reserve.config.tokenInfo.scopeConfiguration.priceFeed.equals(tokenInfo.scopeConfiguration.priceFeed)) {
1246
1335
  updateReserveIxnsArgs.push({
1247
- mode: types_1.UpdateConfigMode.UpdateScopePriceFeed.discriminator + 1,
1336
+ mode: types_1.UpdateConfigMode.UpdateScopePriceFeed.discriminator,
1248
1337
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateScopePriceFeed.discriminator, tokenInfo.scopeConfiguration.priceFeed),
1249
1338
  });
1250
1339
  }
@@ -1253,17 +1342,21 @@ function handleConfigUpdate(key, reserve, reserveConfig, updateReserveIxnsArgs)
1253
1342
  case 'depositWithdrawalCap':
1254
1343
  if (reserve === undefined) {
1255
1344
  updateReserveIxnsArgs.push({
1256
- mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator + 1,
1345
+ mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator,
1257
1346
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, [
1258
1347
  reserveConfig.depositWithdrawalCap.configCapacity.toNumber(),
1259
1348
  reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1260
1349
  ]),
1261
1350
  });
1351
+ updateReserveIxnsArgs.push({
1352
+ mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCapCurrentTotal.discriminator,
1353
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, reserveConfig.depositWithdrawalCap.currentTotal.toNumber()),
1354
+ });
1262
1355
  }
1263
1356
  else if (!reserve.config.depositWithdrawalCap.configCapacity.eq(reserveConfig.depositWithdrawalCap.configCapacity) ||
1264
1357
  !reserve.config.depositWithdrawalCap.configIntervalLengthSeconds.eq(reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds)) {
1265
1358
  updateReserveIxnsArgs.push({
1266
- mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator + 1,
1359
+ mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator,
1267
1360
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, [
1268
1361
  reserveConfig.depositWithdrawalCap.configCapacity.toNumber(),
1269
1362
  reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds.toNumber(),
@@ -1272,7 +1365,7 @@ function handleConfigUpdate(key, reserve, reserveConfig, updateReserveIxnsArgs)
1272
1365
  }
1273
1366
  else if (!reserve.config.depositWithdrawalCap.currentTotal.eq(reserveConfig.depositWithdrawalCap.currentTotal)) {
1274
1367
  updateReserveIxnsArgs.push({
1275
- mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCapCurrentTotal.discriminator + 1,
1368
+ mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCapCurrentTotal.discriminator,
1276
1369
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, reserveConfig.depositWithdrawalCap.currentTotal.toNumber()),
1277
1370
  });
1278
1371
  }
@@ -1280,17 +1373,21 @@ function handleConfigUpdate(key, reserve, reserveConfig, updateReserveIxnsArgs)
1280
1373
  case 'debtWithdrawalCap':
1281
1374
  if (reserve === undefined) {
1282
1375
  updateReserveIxnsArgs.push({
1283
- mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator + 1,
1376
+ mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator,
1284
1377
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, [
1285
1378
  reserveConfig.debtWithdrawalCap.configCapacity.toNumber(),
1286
1379
  reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1287
1380
  ]),
1288
1381
  });
1382
+ updateReserveIxnsArgs.push({
1383
+ mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCapCurrentTotal.discriminator,
1384
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, reserveConfig.debtWithdrawalCap.currentTotal.toNumber()),
1385
+ });
1289
1386
  }
1290
1387
  else if (!reserve.config.debtWithdrawalCap.configCapacity.eq(reserveConfig.debtWithdrawalCap.configCapacity) ||
1291
1388
  !reserve.config.debtWithdrawalCap.configIntervalLengthSeconds.eq(reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds)) {
1292
1389
  updateReserveIxnsArgs.push({
1293
- mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator + 1,
1390
+ mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator,
1294
1391
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, [
1295
1392
  reserveConfig.debtWithdrawalCap.configCapacity.toNumber(),
1296
1393
  reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds.toNumber(),
@@ -1299,69 +1396,116 @@ function handleConfigUpdate(key, reserve, reserveConfig, updateReserveIxnsArgs)
1299
1396
  }
1300
1397
  else if (!reserve.config.debtWithdrawalCap.currentTotal.eq(reserveConfig.debtWithdrawalCap.currentTotal)) {
1301
1398
  updateReserveIxnsArgs.push({
1302
- mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCapCurrentTotal.discriminator + 1,
1399
+ mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCapCurrentTotal.discriminator,
1303
1400
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, reserveConfig.debtWithdrawalCap.currentTotal.toNumber()),
1304
1401
  });
1305
1402
  }
1306
1403
  break;
1307
1404
  case 'elevationGroups':
1308
- if (reserve === undefined ||
1309
- !(0, utils_2.sameLengthArrayEquals)(reserve.config.elevationGroups, reserveConfig.elevationGroups)) {
1405
+ if (reserve === undefined) {
1310
1406
  updateReserveIxnsArgs.push({
1311
- mode: types_1.UpdateConfigMode.UpdateElevationGroup.discriminator + 1,
1407
+ mode: types_1.UpdateConfigMode.UpdateElevationGroup.discriminator,
1312
1408
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateElevationGroup.discriminator, reserveConfig.elevationGroups),
1313
1409
  });
1314
1410
  }
1411
+ else {
1412
+ for (let i = 0; i < reserveConfig.elevationGroups.length; i++) {
1413
+ if (reserve.config.elevationGroups[i] !== reserveConfig.elevationGroups[i]) {
1414
+ updateReserveIxnsArgs.push({
1415
+ mode: types_1.UpdateConfigMode.UpdateElevationGroup.discriminator,
1416
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateElevationGroup.discriminator, reserveConfig.elevationGroups),
1417
+ });
1418
+ break;
1419
+ }
1420
+ }
1421
+ }
1315
1422
  break;
1316
1423
  case 'disableUsageAsCollOutsideEmode':
1317
- if (reserve === undefined ||
1318
- reserve.config.disableUsageAsCollOutsideEmode !== reserveConfig.disableUsageAsCollOutsideEmode) {
1424
+ if (reserve === undefined) {
1319
1425
  updateReserveIxnsArgs.push({
1320
- mode: types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator + 1,
1426
+ mode: types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator,
1427
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator, reserveConfig.disableUsageAsCollOutsideEmode),
1428
+ });
1429
+ }
1430
+ else if (reserve.config.disableUsageAsCollOutsideEmode !== reserveConfig.disableUsageAsCollOutsideEmode) {
1431
+ updateReserveIxnsArgs.push({
1432
+ mode: types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator,
1321
1433
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator, reserveConfig.disableUsageAsCollOutsideEmode),
1322
1434
  });
1323
1435
  }
1324
1436
  break;
1325
1437
  case 'utilizationLimitBlockBorrowingAbovePct':
1326
- if (reserve === undefined ||
1327
- reserve.config.utilizationLimitBlockBorrowingAbovePct !== reserveConfig.utilizationLimitBlockBorrowingAbovePct) {
1438
+ if (reserve === undefined) {
1328
1439
  updateReserveIxnsArgs.push({
1329
- mode: types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator + 1,
1440
+ mode: types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator,
1441
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator, reserveConfig.utilizationLimitBlockBorrowingAbovePct),
1442
+ });
1443
+ }
1444
+ else if (reserve.config.utilizationLimitBlockBorrowingAbovePct !== reserveConfig.utilizationLimitBlockBorrowingAbovePct) {
1445
+ updateReserveIxnsArgs.push({
1446
+ mode: types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator,
1330
1447
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator, reserveConfig.utilizationLimitBlockBorrowingAbovePct),
1331
1448
  });
1332
1449
  }
1333
1450
  break;
1334
1451
  case 'autodeleverageEnabled':
1335
- if (reserve === undefined || reserve.config.autodeleverageEnabled !== reserveConfig.autodeleverageEnabled) {
1452
+ if (reserve === undefined) {
1336
1453
  updateReserveIxnsArgs.push({
1337
- mode: types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator + 1,
1454
+ mode: types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator,
1455
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator, reserveConfig.autodeleverageEnabled),
1456
+ });
1457
+ }
1458
+ else if (reserve.config.autodeleverageEnabled !== reserveConfig.autodeleverageEnabled) {
1459
+ updateReserveIxnsArgs.push({
1460
+ mode: types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator,
1338
1461
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator, reserveConfig.autodeleverageEnabled),
1339
1462
  });
1340
1463
  }
1341
1464
  break;
1342
1465
  case 'borrowLimitOutsideElevationGroup':
1343
- if (reserve === undefined ||
1344
- !reserve.config.borrowLimitOutsideElevationGroup.eq(reserveConfig.borrowLimitOutsideElevationGroup)) {
1466
+ if (reserve === undefined) {
1345
1467
  updateReserveIxnsArgs.push({
1346
- mode: types_1.UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator + 1,
1468
+ mode: types_1.UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator,
1347
1469
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator, reserveConfig.borrowLimitOutsideElevationGroup.toNumber()),
1348
1470
  });
1349
1471
  }
1472
+ else if (!reserve.config.borrowLimitOutsideElevationGroup.eq(reserveConfig.borrowLimitOutsideElevationGroup)) {
1473
+ updateReserveIxnsArgs.push({
1474
+ mode: types_1.UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator,
1475
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator, BigInt(reserveConfig.borrowLimitOutsideElevationGroup.toString())),
1476
+ });
1477
+ }
1350
1478
  break;
1351
1479
  case 'borrowLimitAgainstThisCollateralInElevationGroup':
1352
- if (reserve === undefined ||
1353
- !(0, utils_2.sameLengthArrayEquals)(reserve.config.borrowLimitAgainstThisCollateralInElevationGroup, reserveConfig.borrowLimitAgainstThisCollateralInElevationGroup)) {
1480
+ if (reserve === undefined) {
1354
1481
  updateReserveIxnsArgs.push({
1355
- mode: types_1.UpdateConfigMode.UpdateBorrowLimitsInElevationGroupAgainstThisReserve.discriminator + 1,
1482
+ mode: types_1.UpdateConfigMode.UpdateBorrowLimitsInElevationGroupAgainstThisReserve.discriminator,
1356
1483
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowLimitsInElevationGroupAgainstThisReserve.discriminator, reserveConfig.borrowLimitAgainstThisCollateralInElevationGroup.map((borrowLimit) => borrowLimit.toNumber())),
1357
1484
  });
1358
1485
  }
1486
+ else {
1487
+ for (let i = 0; i < reserveConfig.borrowLimitAgainstThisCollateralInElevationGroup.length; i++) {
1488
+ if (reserve.config.borrowLimitAgainstThisCollateralInElevationGroup[i] !==
1489
+ reserveConfig.borrowLimitAgainstThisCollateralInElevationGroup[i]) {
1490
+ updateReserveIxnsArgs.push({
1491
+ mode: types_1.UpdateConfigMode.UpdateBorrowLimitsInElevationGroupAgainstThisReserve.discriminator,
1492
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowLimitsInElevationGroupAgainstThisReserve.discriminator, reserveConfig.borrowLimitAgainstThisCollateralInElevationGroup.map((borrowLimit) => borrowLimit.toNumber())),
1493
+ });
1494
+ }
1495
+ }
1496
+ }
1359
1497
  break;
1360
1498
  case 'deleveragingBonusIncreaseBpsPerDay':
1361
- if (reserve === undefined ||
1362
- !reserve.config.deleveragingBonusIncreaseBpsPerDay.eq(reserveConfig.deleveragingBonusIncreaseBpsPerDay)) {
1499
+ if (reserve === undefined) {
1500
+ updateReserveIxnsArgs.push({
1501
+ mode: types_1.UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator,
1502
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator, reserveConfig.deleveragingBonusIncreaseBpsPerDay.toNumber()),
1503
+ });
1504
+ }
1505
+ else if (reserve.config.deleveragingBonusIncreaseBpsPerDay.toNumber() !==
1506
+ reserveConfig.deleveragingBonusIncreaseBpsPerDay.toNumber()) {
1363
1507
  updateReserveIxnsArgs.push({
1364
- mode: types_1.UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator + 1,
1508
+ mode: types_1.UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator,
1365
1509
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator, reserveConfig.deleveragingBonusIncreaseBpsPerDay.toNumber()),
1366
1510
  });
1367
1511
  }
@@ -1389,7 +1533,7 @@ function updateEntireReserveConfigIx(marketWithAddress, reserveAddress, reserveC
1389
1533
  return ix;
1390
1534
  }
1391
1535
  function parseForChangesReserveConfigAndGetIxs(marketWithAddress, reserve, reserveAddress, reserveConfig, programId) {
1392
- let updateReserveIxnsArgs = [];
1536
+ const updateReserveIxnsArgs = [];
1393
1537
  for (const key in reserveConfig.toEncodable()) {
1394
1538
  if (isExcludedReserveConfigKey(key)) {
1395
1539
  continue;
@@ -1397,13 +1541,8 @@ function parseForChangesReserveConfigAndGetIxs(marketWithAddress, reserve, reser
1397
1541
  handleConfigUpdate(key, reserve, reserveConfig, updateReserveIxnsArgs);
1398
1542
  }
1399
1543
  const ixns = [];
1400
- updateReserveIxnsArgs = (0, exports.sortIxnsByPriority)(updateReserveIxnsArgs);
1401
1544
  updateReserveIxnsArgs.forEach((updateReserveConfigArgs) => {
1402
- let skipValidation = false;
1403
- if ((0, exports.modeMatches)(updateReserveConfigArgs.mode)) {
1404
- skipValidation = true;
1405
- }
1406
- ixns.push(updateReserveConfigIx(marketWithAddress, reserveAddress, updateReserveConfigArgs.mode, updateReserveConfigArgs.value, programId, skipValidation));
1545
+ ixns.push(updateReserveConfigIx(marketWithAddress, reserveAddress, updateReserveConfigArgs.mode + 1, updateReserveConfigArgs.value, programId));
1407
1546
  });
1408
1547
  return ixns;
1409
1548
  }
@@ -1513,41 +1652,12 @@ function updateReserveConfigEncodedValue(discriminator, value) {
1513
1652
  return Uint8Array.from([...buffer]);
1514
1653
  }
1515
1654
  function serializeBorrowRateCurve(curve) {
1516
- const buffer = Buffer.alloc(8 * curve.points.length);
1655
+ const buffer = Buffer.alloc(4 + 8 * curve.points.length);
1517
1656
  buffer.writeUInt32LE(curve.points.length, 0);
1518
1657
  for (let i = 0; i < curve.points.length; i++) {
1519
- buffer.writeUInt32LE(curve.points[i].utilizationRateBps, 8 * i);
1520
- buffer.writeUInt32LE(curve.points[i].borrowRateBps, 4 + 8 * i);
1658
+ buffer.writeUInt32LE(curve.points[i].utilizationRateBps, 4 + 8 * i);
1659
+ buffer.writeUInt32LE(curve.points[i].borrowRateBps, 8 + 8 * i);
1521
1660
  }
1522
1661
  return buffer;
1523
1662
  }
1524
- const modeMatches = (mode) => {
1525
- const validModes = [
1526
- types_1.UpdateConfigMode.UpdateScopePriceFeed.discriminator + 1,
1527
- types_1.UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator + 1,
1528
- types_1.UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator + 1,
1529
- types_1.UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator + 1,
1530
- types_1.UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator + 1,
1531
- types_1.UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator + 1,
1532
- types_1.UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator + 1,
1533
- ];
1534
- return validModes.includes(mode);
1535
- };
1536
- exports.modeMatches = modeMatches;
1537
- // Sort update reserve ixns, to first have the oracle config updates first
1538
- // In order to skip the validation for the scope config updates
1539
- const sortIxnsByPriority = (updateReserveIxnsArgs) => {
1540
- return updateReserveIxnsArgs.sort((a, b) => {
1541
- const isPriorityA = a.mode === 20 || a.mode === 16;
1542
- const isPriorityB = b.mode === 20 || b.mode === 16;
1543
- if (isPriorityA && !isPriorityB) {
1544
- return -1;
1545
- }
1546
- if (isPriorityB && !isPriorityA) {
1547
- return 1;
1548
- }
1549
- return 0;
1550
- });
1551
- };
1552
- exports.sortIxnsByPriority = sortIxnsByPriority;
1553
1663
  //# sourceMappingURL=reserve.js.map