@kamino-finance/klend-sdk 5.10.20 → 5.10.21

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.
@@ -933,144 +933,97 @@ function updateReserveConfigIx(marketWithAddress, reserveAddress, modeDiscrimina
933
933
  const ix = (0, lib_1.updateReserveConfig)(args, accounts, programId);
934
934
  return ix;
935
935
  }
936
- function updateEntireReserveConfigIx(marketWithAddress, reserveAddress, reserveConfig, programId) {
937
- const layout = types_1.ReserveConfig.layout();
938
- const data = Buffer.alloc(1000);
939
- const len = layout.encode(reserveConfig.toEncodable(), data);
940
- const value = Uint8Array.from([...data.subarray(0, len)]);
941
- const args = {
942
- mode: new anchor.BN(25),
943
- value: value,
944
- skipValidation: false,
945
- };
946
- const accounts = {
947
- lendingMarketOwner: marketWithAddress.state.lendingMarketOwner,
948
- lendingMarket: marketWithAddress.address,
949
- reserve: reserveAddress,
950
- };
951
- const ix = (0, lib_1.updateReserveConfig)(args, accounts, programId);
952
- return ix;
936
+ const EXCLUDED_RESERVE_CONFIG_KEYS = ['reserved1', 'reserved2', 'reserved3'];
937
+ function isExcludedReserveConfigKey(value) {
938
+ return EXCLUDED_RESERVE_CONFIG_KEYS.includes(value);
953
939
  }
954
- function parseForChangesReserveConfigAndGetIxs(marketWithAddress, reserve, reserveAddress, reserveConfig, programId) {
955
- const updateReserveIxnsArgs = [];
956
- for (const key in reserveConfig.toEncodable()) {
957
- if (key === 'borrowRateCurve') {
958
- if (reserve === undefined) {
959
- updateReserveIxnsArgs.push({
960
- mode: UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator,
961
- value: updateReserveConfigEncodedValue(UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator, reserveConfig.borrowRateCurve),
962
- });
963
- }
964
- else {
965
- for (let i = 0; i < reserveConfig.borrowRateCurve.points.length; i++) {
966
- if (reserve.config.borrowRateCurve.points[i].utilizationRateBps !==
967
- reserveConfig.borrowRateCurve.points[i].utilizationRateBps ||
968
- reserve.config.borrowRateCurve.points[i].borrowRateBps !==
969
- reserveConfig.borrowRateCurve.points[i].borrowRateBps) {
970
- updateReserveIxnsArgs.push({
971
- mode: UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator,
972
- value: updateReserveConfigEncodedValue(UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator, reserveConfig.borrowRateCurve),
973
- });
974
- break;
975
- }
976
- }
977
- }
978
- }
979
- else if (key === 'fees') {
940
+ function handleConfigUpdate(key, reserve, reserveConfig, updateReserveIxnsArgs) {
941
+ switch (key) {
942
+ case 'status':
980
943
  if (reserve === undefined) {
981
944
  updateReserveIxnsArgs.push({
982
- mode: types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator,
983
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator, reserveConfig.fees.borrowFeeSf.toNumber()),
984
- });
985
- updateReserveIxnsArgs.push({
986
- mode: types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator,
987
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator, reserveConfig.fees.flashLoanFeeSf.toNumber()),
988
- });
989
- }
990
- else if (!reserve.config.fees.borrowFeeSf.eq(reserveConfig.fees.borrowFeeSf)) {
991
- updateReserveIxnsArgs.push({
992
- mode: types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator,
993
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator, reserveConfig.fees.borrowFeeSf.toNumber()),
945
+ mode: types_1.UpdateConfigMode.UpdateReserveStatus.discriminator,
946
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateReserveStatus.discriminator, reserveConfig.status),
994
947
  });
995
948
  }
996
- else if (!reserve.config.fees.flashLoanFeeSf.eq(reserveConfig.fees.flashLoanFeeSf)) {
949
+ else if (reserve.config.status !== reserveConfig.status) {
997
950
  updateReserveIxnsArgs.push({
998
- mode: types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator,
999
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator, reserveConfig.fees.flashLoanFeeSf.toNumber()),
951
+ mode: types_1.UpdateConfigMode.UpdateReserveStatus.discriminator,
952
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateReserveStatus.discriminator, reserveConfig.status),
1000
953
  });
1001
954
  }
1002
- }
1003
- else if (key === 'depositLimit') {
955
+ break;
956
+ case 'assetTier':
1004
957
  if (reserve === undefined) {
1005
958
  updateReserveIxnsArgs.push({
1006
- mode: types_1.UpdateConfigMode.UpdateDepositLimit.discriminator,
1007
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositLimit.discriminator, reserveConfig.depositLimit.toNumber()),
959
+ mode: types_1.UpdateConfigMode.UpdateAssetTier.discriminator,
960
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateAssetTier.discriminator, reserveConfig.assetTier),
1008
961
  });
1009
962
  }
1010
- else if (!reserve.config.depositLimit.eq(reserveConfig.depositLimit)) {
963
+ else if (reserve.config.assetTier !== reserveConfig.assetTier) {
1011
964
  updateReserveIxnsArgs.push({
1012
- mode: types_1.UpdateConfigMode.UpdateDepositLimit.discriminator,
1013
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositLimit.discriminator, reserveConfig.depositLimit.toNumber()),
965
+ mode: types_1.UpdateConfigMode.UpdateAssetTier.discriminator,
966
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateAssetTier.discriminator, reserveConfig.assetTier),
1014
967
  });
1015
968
  }
1016
- }
1017
- else if (key === 'borrowLimit') {
969
+ break;
970
+ case 'hostFixedInterestRateBps':
1018
971
  if (reserve === undefined) {
1019
972
  updateReserveIxnsArgs.push({
1020
- mode: types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator,
1021
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator, reserveConfig.borrowLimit.toNumber()),
973
+ mode: types_1.UpdateConfigMode.UpdateHostFixedInterestRateBps.discriminator,
974
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateHostFixedInterestRateBps.discriminator, reserveConfig.hostFixedInterestRateBps),
1022
975
  });
1023
976
  }
1024
- else if (!reserve.config.borrowLimit.eq(reserveConfig.borrowLimit)) {
977
+ else if (reserve.config.hostFixedInterestRateBps !== reserveConfig.hostFixedInterestRateBps) {
1025
978
  updateReserveIxnsArgs.push({
1026
- mode: types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator,
1027
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator, reserveConfig.borrowLimit.toNumber()),
979
+ mode: types_1.UpdateConfigMode.UpdateHostFixedInterestRateBps.discriminator,
980
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateHostFixedInterestRateBps.discriminator, reserveConfig.hostFixedInterestRateBps),
1028
981
  });
1029
982
  }
1030
- }
1031
- else if (key === 'maxLiquidationBonusBps') {
983
+ break;
984
+ case 'protocolTakeRatePct':
1032
985
  if (reserve === undefined) {
1033
986
  updateReserveIxnsArgs.push({
1034
- mode: types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator,
1035
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator, reserveConfig.maxLiquidationBonusBps),
987
+ mode: types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator,
988
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator, reserveConfig.protocolTakeRatePct),
1036
989
  });
1037
990
  }
1038
- else if (reserve.config.maxLiquidationBonusBps !== reserveConfig.maxLiquidationBonusBps) {
991
+ else if (reserve.config.protocolTakeRatePct !== reserveConfig.protocolTakeRatePct) {
1039
992
  updateReserveIxnsArgs.push({
1040
- mode: types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator,
1041
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator, reserveConfig.maxLiquidationBonusBps),
993
+ mode: types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator,
994
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator, reserveConfig.protocolTakeRatePct),
1042
995
  });
1043
996
  }
1044
- }
1045
- else if (key === 'minLiquidationBonusBps') {
997
+ break;
998
+ case 'protocolLiquidationFeePct':
1046
999
  if (reserve === undefined) {
1047
1000
  updateReserveIxnsArgs.push({
1048
- mode: types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator,
1049
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator, reserveConfig.minLiquidationBonusBps),
1001
+ mode: types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator,
1002
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator, reserveConfig.protocolLiquidationFeePct),
1050
1003
  });
1051
1004
  }
1052
- else if (reserve.config.minLiquidationBonusBps !== reserveConfig.minLiquidationBonusBps) {
1005
+ else if (reserve.config.protocolLiquidationFeePct !== reserveConfig.protocolLiquidationFeePct) {
1053
1006
  updateReserveIxnsArgs.push({
1054
- mode: types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator,
1055
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator, reserveConfig.minLiquidationBonusBps),
1007
+ mode: types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator,
1008
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator, reserveConfig.protocolLiquidationFeePct),
1056
1009
  });
1057
1010
  }
1058
- }
1059
- else if (key === 'badDebtLiquidationBonusBps') {
1011
+ break;
1012
+ case 'loanToValuePct':
1060
1013
  if (reserve === undefined) {
1061
1014
  updateReserveIxnsArgs.push({
1062
- mode: types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator,
1063
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator, reserveConfig.badDebtLiquidationBonusBps),
1015
+ mode: types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator,
1016
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator, reserveConfig.loanToValuePct),
1064
1017
  });
1065
1018
  }
1066
- else if (reserve.config.badDebtLiquidationBonusBps !== reserveConfig.badDebtLiquidationBonusBps) {
1019
+ else if (reserve.config.loanToValuePct !== reserveConfig.loanToValuePct) {
1067
1020
  updateReserveIxnsArgs.push({
1068
- mode: types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator,
1069
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator, reserveConfig.badDebtLiquidationBonusBps),
1021
+ mode: types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator,
1022
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator, reserveConfig.loanToValuePct),
1070
1023
  });
1071
1024
  }
1072
- }
1073
- else if (key === 'liquidationThresholdPct') {
1025
+ break;
1026
+ case 'liquidationThresholdPct':
1074
1027
  if (reserve === undefined) {
1075
1028
  updateReserveIxnsArgs.push({
1076
1029
  mode: types_1.UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator,
@@ -1083,64 +1036,64 @@ function parseForChangesReserveConfigAndGetIxs(marketWithAddress, reserve, reser
1083
1036
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator, reserveConfig.liquidationThresholdPct),
1084
1037
  });
1085
1038
  }
1086
- }
1087
- else if (key === 'protocolTakeRatePct') {
1039
+ break;
1040
+ case 'minLiquidationBonusBps':
1088
1041
  if (reserve === undefined) {
1089
1042
  updateReserveIxnsArgs.push({
1090
- mode: types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator,
1091
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator, reserveConfig.protocolTakeRatePct),
1043
+ mode: types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator,
1044
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator, reserveConfig.minLiquidationBonusBps),
1092
1045
  });
1093
1046
  }
1094
- else if (reserve.config.protocolTakeRatePct !== reserveConfig.protocolTakeRatePct) {
1047
+ else if (reserve.config.minLiquidationBonusBps !== reserveConfig.minLiquidationBonusBps) {
1095
1048
  updateReserveIxnsArgs.push({
1096
- mode: types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator,
1097
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator, reserveConfig.protocolTakeRatePct),
1049
+ mode: types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator,
1050
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator, reserveConfig.minLiquidationBonusBps),
1098
1051
  });
1099
1052
  }
1100
- }
1101
- else if (key === 'status') {
1053
+ break;
1054
+ case 'maxLiquidationBonusBps':
1102
1055
  if (reserve === undefined) {
1103
1056
  updateReserveIxnsArgs.push({
1104
- mode: types_1.UpdateConfigMode.UpdateReserveStatus.discriminator,
1105
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateReserveStatus.discriminator, reserveConfig.status),
1057
+ mode: types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator,
1058
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator, reserveConfig.maxLiquidationBonusBps),
1106
1059
  });
1107
1060
  }
1108
- else if (reserve.config.status !== reserveConfig.status) {
1061
+ else if (reserve.config.maxLiquidationBonusBps !== reserveConfig.maxLiquidationBonusBps) {
1109
1062
  updateReserveIxnsArgs.push({
1110
- mode: types_1.UpdateConfigMode.UpdateReserveStatus.discriminator,
1111
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateReserveStatus.discriminator, reserveConfig.status),
1063
+ mode: types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator,
1064
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator, reserveConfig.maxLiquidationBonusBps),
1112
1065
  });
1113
1066
  }
1114
- }
1115
- else if (key === 'disableUsageAsCollOutsideEmode') {
1067
+ break;
1068
+ case 'badDebtLiquidationBonusBps':
1116
1069
  if (reserve === undefined) {
1117
1070
  updateReserveIxnsArgs.push({
1118
- mode: types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator,
1119
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator, reserveConfig.disableUsageAsCollOutsideEmode),
1071
+ mode: types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator,
1072
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator, reserveConfig.badDebtLiquidationBonusBps),
1120
1073
  });
1121
1074
  }
1122
- else if (reserve.config.disableUsageAsCollOutsideEmode !== reserveConfig.disableUsageAsCollOutsideEmode) {
1075
+ else if (reserve.config.badDebtLiquidationBonusBps !== reserveConfig.badDebtLiquidationBonusBps) {
1123
1076
  updateReserveIxnsArgs.push({
1124
- mode: types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator,
1125
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator, reserveConfig.disableUsageAsCollOutsideEmode),
1077
+ mode: types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator,
1078
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator, reserveConfig.badDebtLiquidationBonusBps),
1126
1079
  });
1127
1080
  }
1128
- }
1129
- else if (key === 'utilizationLimitBlockBorrowingAbovePct') {
1081
+ break;
1082
+ case 'deleveragingMarginCallPeriodSecs':
1130
1083
  if (reserve === undefined) {
1131
1084
  updateReserveIxnsArgs.push({
1132
- mode: types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator,
1133
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator, reserveConfig.utilizationLimitBlockBorrowingAbovePct),
1085
+ mode: types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator,
1086
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator, reserveConfig.deleveragingMarginCallPeriodSecs.toNumber()),
1134
1087
  });
1135
1088
  }
1136
- else if (reserve.config.utilizationLimitBlockBorrowingAbovePct !== reserveConfig.utilizationLimitBlockBorrowingAbovePct) {
1089
+ else if (!reserve.config.deleveragingMarginCallPeriodSecs.eq(reserveConfig.deleveragingMarginCallPeriodSecs)) {
1137
1090
  updateReserveIxnsArgs.push({
1138
- mode: types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator,
1139
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator, reserveConfig.utilizationLimitBlockBorrowingAbovePct),
1091
+ mode: types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator,
1092
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator, reserveConfig.deleveragingMarginCallPeriodSecs.toNumber()),
1140
1093
  });
1141
1094
  }
1142
- }
1143
- else if (key === 'deleveragingThresholdDecreaseBpsPerDay') {
1095
+ break;
1096
+ case 'deleveragingThresholdDecreaseBpsPerDay':
1144
1097
  if (reserve === undefined) {
1145
1098
  updateReserveIxnsArgs.push({
1146
1099
  mode: types_1.UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.discriminator,
@@ -1153,117 +1106,54 @@ function parseForChangesReserveConfigAndGetIxs(marketWithAddress, reserve, reser
1153
1106
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.discriminator, reserveConfig.deleveragingThresholdDecreaseBpsPerDay.toNumber()),
1154
1107
  });
1155
1108
  }
1156
- }
1157
- else if (key === 'deleveragingBonusIncreaseBpsPerDay') {
1158
- if (reserve === undefined) {
1159
- updateReserveIxnsArgs.push({
1160
- mode: types_1.UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator,
1161
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator, reserveConfig.deleveragingBonusIncreaseBpsPerDay.toNumber()),
1162
- });
1163
- }
1164
- else if (!reserve.config.deleveragingBonusIncreaseBpsPerDay.eq(reserveConfig.deleveragingBonusIncreaseBpsPerDay)) {
1165
- updateReserveIxnsArgs.push({
1166
- mode: types_1.UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator,
1167
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator, reserveConfig.deleveragingBonusIncreaseBpsPerDay.toNumber()),
1168
- });
1169
- }
1170
- }
1171
- else if (key === 'autodeleverageEnabled') {
1172
- if (reserve === undefined) {
1173
- updateReserveIxnsArgs.push({
1174
- mode: types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator,
1175
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator, reserveConfig.autodeleverageEnabled),
1176
- });
1177
- }
1178
- else if (reserve.config.autodeleverageEnabled != reserveConfig.autodeleverageEnabled) {
1179
- updateReserveIxnsArgs.push({
1180
- mode: types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator,
1181
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator, reserveConfig.autodeleverageEnabled),
1182
- });
1183
- }
1184
- }
1185
- else if (key === 'depositWithdrawalCap') {
1186
- if (reserve === undefined) {
1187
- updateReserveIxnsArgs.push({
1188
- mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator,
1189
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, [
1190
- reserveConfig.depositWithdrawalCap.configCapacity.toNumber(),
1191
- reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1192
- ]),
1193
- });
1194
- updateReserveIxnsArgs.push({
1195
- mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCapCurrentTotal.discriminator,
1196
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, reserveConfig.depositWithdrawalCap.currentTotal.toNumber()),
1197
- });
1198
- }
1199
- else if (!reserve.config.depositWithdrawalCap.configCapacity.eq(reserveConfig.depositWithdrawalCap.configCapacity) ||
1200
- !reserve.config.depositWithdrawalCap.configIntervalLengthSeconds.eq(reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds)) {
1201
- updateReserveIxnsArgs.push({
1202
- mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator,
1203
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, [
1204
- reserveConfig.depositWithdrawalCap.configCapacity.toNumber(),
1205
- reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1206
- ]),
1207
- });
1208
- }
1209
- else if (!reserve.config.depositWithdrawalCap.currentTotal.eq(reserveConfig.depositWithdrawalCap.currentTotal)) {
1210
- updateReserveIxnsArgs.push({
1211
- mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCapCurrentTotal.discriminator,
1212
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, reserveConfig.depositWithdrawalCap.currentTotal.toNumber()),
1213
- });
1214
- }
1215
- }
1216
- else if (key === 'debtWithdrawalCap') {
1109
+ break;
1110
+ case 'fees':
1217
1111
  if (reserve === undefined) {
1218
1112
  updateReserveIxnsArgs.push({
1219
- mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator,
1220
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, [
1221
- reserveConfig.debtWithdrawalCap.configCapacity.toNumber(),
1222
- reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1223
- ]),
1113
+ mode: types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator,
1114
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator, reserveConfig.fees.borrowFeeSf.toNumber()),
1224
1115
  });
1225
1116
  updateReserveIxnsArgs.push({
1226
- mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCapCurrentTotal.discriminator,
1227
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, reserveConfig.debtWithdrawalCap.currentTotal.toNumber()),
1117
+ mode: types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator,
1118
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator, reserveConfig.fees.flashLoanFeeSf.toNumber()),
1228
1119
  });
1229
1120
  }
1230
- else if (!reserve.config.debtWithdrawalCap.configCapacity.eq(reserveConfig.debtWithdrawalCap.configCapacity) ||
1231
- !reserve.config.debtWithdrawalCap.configIntervalLengthSeconds.eq(reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds)) {
1121
+ else if (!reserve.config.fees.borrowFeeSf.eq(reserveConfig.fees.borrowFeeSf)) {
1232
1122
  updateReserveIxnsArgs.push({
1233
- mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator,
1234
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, [
1235
- reserveConfig.debtWithdrawalCap.configCapacity.toNumber(),
1236
- reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1237
- ]),
1123
+ mode: types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator,
1124
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator, reserveConfig.fees.borrowFeeSf.toNumber()),
1238
1125
  });
1239
1126
  }
1240
- else if (!reserve.config.debtWithdrawalCap.currentTotal.eq(reserveConfig.debtWithdrawalCap.currentTotal)) {
1127
+ else if (!reserve.config.fees.flashLoanFeeSf.eq(reserveConfig.fees.flashLoanFeeSf)) {
1241
1128
  updateReserveIxnsArgs.push({
1242
- mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCapCurrentTotal.discriminator,
1243
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, reserveConfig.debtWithdrawalCap.currentTotal.toNumber()),
1129
+ mode: types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator,
1130
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator, reserveConfig.fees.flashLoanFeeSf.toNumber()),
1244
1131
  });
1245
1132
  }
1246
- }
1247
- else if (key === 'elevationGroups') {
1133
+ break;
1134
+ case 'borrowRateCurve':
1248
1135
  if (reserve === undefined) {
1249
1136
  updateReserveIxnsArgs.push({
1250
- mode: types_1.UpdateConfigMode.UpdateElevationGroup.discriminator,
1251
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateElevationGroup.discriminator, reserveConfig.elevationGroups),
1137
+ mode: UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator,
1138
+ value: updateReserveConfigEncodedValue(UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator, reserveConfig.borrowRateCurve),
1252
1139
  });
1253
1140
  }
1254
1141
  else {
1255
- for (let i = 0; i < reserveConfig.elevationGroups.length; i++) {
1256
- if (reserve.config.elevationGroups[i] !== reserveConfig.elevationGroups[i]) {
1142
+ for (let i = 0; i < reserveConfig.borrowRateCurve.points.length; i++) {
1143
+ if (reserve.config.borrowRateCurve.points[i].utilizationRateBps !==
1144
+ reserveConfig.borrowRateCurve.points[i].utilizationRateBps ||
1145
+ reserve.config.borrowRateCurve.points[i].borrowRateBps !==
1146
+ reserveConfig.borrowRateCurve.points[i].borrowRateBps) {
1257
1147
  updateReserveIxnsArgs.push({
1258
- mode: types_1.UpdateConfigMode.UpdateElevationGroup.discriminator,
1259
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateElevationGroup.discriminator, reserveConfig.elevationGroups),
1148
+ mode: UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator,
1149
+ value: updateReserveConfigEncodedValue(UpdateConfigMode_1.UpdateBorrowRateCurve.discriminator, reserveConfig.borrowRateCurve),
1260
1150
  });
1261
1151
  break;
1262
1152
  }
1263
1153
  }
1264
1154
  }
1265
- }
1266
- else if (key === 'borrowFactorPct') {
1155
+ break;
1156
+ case 'borrowFactorPct':
1267
1157
  if (reserve === undefined) {
1268
1158
  updateReserveIxnsArgs.push({
1269
1159
  mode: types_1.UpdateConfigMode.UpdateBorrowFactor.discriminator,
@@ -1276,64 +1166,36 @@ function parseForChangesReserveConfigAndGetIxs(marketWithAddress, reserve, reser
1276
1166
  value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowFactor.discriminator, reserveConfig.borrowFactorPct.toNumber()),
1277
1167
  });
1278
1168
  }
1279
- }
1280
- else if (key === 'loanToValuePct') {
1281
- if (reserve === undefined) {
1282
- updateReserveIxnsArgs.push({
1283
- mode: types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator,
1284
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator, reserveConfig.loanToValuePct),
1285
- });
1286
- }
1287
- else if (reserve.config.loanToValuePct !== reserveConfig.loanToValuePct) {
1288
- updateReserveIxnsArgs.push({
1289
- mode: types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator,
1290
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator, reserveConfig.loanToValuePct),
1291
- });
1292
- }
1293
- }
1294
- else if (key === 'protocolLiquidationFeePct') {
1295
- if (reserve === undefined) {
1296
- updateReserveIxnsArgs.push({
1297
- mode: types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator,
1298
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator, reserveConfig.protocolLiquidationFeePct),
1299
- });
1300
- }
1301
- else if (reserve.config.protocolLiquidationFeePct !== reserveConfig.protocolLiquidationFeePct) {
1302
- updateReserveIxnsArgs.push({
1303
- mode: types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator,
1304
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator, reserveConfig.protocolLiquidationFeePct),
1305
- });
1306
- }
1307
- }
1308
- else if (key === 'deleveragingMarginCallPeriodSecs') {
1169
+ break;
1170
+ case 'depositLimit':
1309
1171
  if (reserve === undefined) {
1310
1172
  updateReserveIxnsArgs.push({
1311
- mode: types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator,
1312
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator, reserveConfig.deleveragingMarginCallPeriodSecs.toNumber()),
1173
+ mode: types_1.UpdateConfigMode.UpdateDepositLimit.discriminator,
1174
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositLimit.discriminator, reserveConfig.depositLimit.toNumber()),
1313
1175
  });
1314
1176
  }
1315
- else if (!reserve.config.deleveragingMarginCallPeriodSecs.eq(reserveConfig.deleveragingMarginCallPeriodSecs)) {
1177
+ else if (!reserve.config.depositLimit.eq(reserveConfig.depositLimit)) {
1316
1178
  updateReserveIxnsArgs.push({
1317
- mode: types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator,
1318
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator, reserveConfig.deleveragingMarginCallPeriodSecs.toNumber()),
1179
+ mode: types_1.UpdateConfigMode.UpdateDepositLimit.discriminator,
1180
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositLimit.discriminator, reserveConfig.depositLimit.toNumber()),
1319
1181
  });
1320
1182
  }
1321
- }
1322
- else if (key === 'assetTier') {
1183
+ break;
1184
+ case 'borrowLimit':
1323
1185
  if (reserve === undefined) {
1324
1186
  updateReserveIxnsArgs.push({
1325
- mode: types_1.UpdateConfigMode.UpdateAssetTier.discriminator,
1326
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateAssetTier.discriminator, reserveConfig.assetTier),
1187
+ mode: types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator,
1188
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator, reserveConfig.borrowLimit.toNumber()),
1327
1189
  });
1328
1190
  }
1329
- else if (reserve.config.assetTier !== reserveConfig.assetTier) {
1191
+ else if (!reserve.config.borrowLimit.eq(reserveConfig.borrowLimit)) {
1330
1192
  updateReserveIxnsArgs.push({
1331
- mode: types_1.UpdateConfigMode.UpdateAssetTier.discriminator,
1332
- value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateAssetTier.discriminator, reserveConfig.assetTier),
1193
+ mode: types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator,
1194
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator, reserveConfig.borrowLimit.toNumber()),
1333
1195
  });
1334
1196
  }
1335
- }
1336
- else if (key === 'tokenInfo') {
1197
+ break;
1198
+ case 'tokenInfo':
1337
1199
  const tokenInfo = reserveConfig.tokenInfo;
1338
1200
  if (reserve === undefined) {
1339
1201
  updateReserveIxnsArgs.push({
@@ -1475,8 +1337,209 @@ function parseForChangesReserveConfigAndGetIxs(marketWithAddress, reserve, reser
1475
1337
  });
1476
1338
  }
1477
1339
  }
1340
+ break;
1341
+ case 'depositWithdrawalCap':
1342
+ if (reserve === undefined) {
1343
+ updateReserveIxnsArgs.push({
1344
+ mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator,
1345
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, [
1346
+ reserveConfig.depositWithdrawalCap.configCapacity.toNumber(),
1347
+ reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1348
+ ]),
1349
+ });
1350
+ updateReserveIxnsArgs.push({
1351
+ mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCapCurrentTotal.discriminator,
1352
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, reserveConfig.depositWithdrawalCap.currentTotal.toNumber()),
1353
+ });
1354
+ }
1355
+ else if (!reserve.config.depositWithdrawalCap.configCapacity.eq(reserveConfig.depositWithdrawalCap.configCapacity) ||
1356
+ !reserve.config.depositWithdrawalCap.configIntervalLengthSeconds.eq(reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds)) {
1357
+ updateReserveIxnsArgs.push({
1358
+ mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator,
1359
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, [
1360
+ reserveConfig.depositWithdrawalCap.configCapacity.toNumber(),
1361
+ reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1362
+ ]),
1363
+ });
1364
+ }
1365
+ else if (!reserve.config.depositWithdrawalCap.currentTotal.eq(reserveConfig.depositWithdrawalCap.currentTotal)) {
1366
+ updateReserveIxnsArgs.push({
1367
+ mode: types_1.UpdateConfigMode.UpdateDepositWithdrawalCapCurrentTotal.discriminator,
1368
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, reserveConfig.depositWithdrawalCap.currentTotal.toNumber()),
1369
+ });
1370
+ }
1371
+ break;
1372
+ case 'debtWithdrawalCap':
1373
+ if (reserve === undefined) {
1374
+ updateReserveIxnsArgs.push({
1375
+ mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator,
1376
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, [
1377
+ reserveConfig.debtWithdrawalCap.configCapacity.toNumber(),
1378
+ reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1379
+ ]),
1380
+ });
1381
+ updateReserveIxnsArgs.push({
1382
+ mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCapCurrentTotal.discriminator,
1383
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, reserveConfig.debtWithdrawalCap.currentTotal.toNumber()),
1384
+ });
1385
+ }
1386
+ else if (!reserve.config.debtWithdrawalCap.configCapacity.eq(reserveConfig.debtWithdrawalCap.configCapacity) ||
1387
+ !reserve.config.debtWithdrawalCap.configIntervalLengthSeconds.eq(reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds)) {
1388
+ updateReserveIxnsArgs.push({
1389
+ mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator,
1390
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, [
1391
+ reserveConfig.debtWithdrawalCap.configCapacity.toNumber(),
1392
+ reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1393
+ ]),
1394
+ });
1395
+ }
1396
+ else if (!reserve.config.debtWithdrawalCap.currentTotal.eq(reserveConfig.debtWithdrawalCap.currentTotal)) {
1397
+ updateReserveIxnsArgs.push({
1398
+ mode: types_1.UpdateConfigMode.UpdateDebtWithdrawalCapCurrentTotal.discriminator,
1399
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, reserveConfig.debtWithdrawalCap.currentTotal.toNumber()),
1400
+ });
1401
+ }
1402
+ break;
1403
+ case 'elevationGroups':
1404
+ if (reserve === undefined) {
1405
+ updateReserveIxnsArgs.push({
1406
+ mode: types_1.UpdateConfigMode.UpdateElevationGroup.discriminator,
1407
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateElevationGroup.discriminator, reserveConfig.elevationGroups),
1408
+ });
1409
+ }
1410
+ else {
1411
+ for (let i = 0; i < reserveConfig.elevationGroups.length; i++) {
1412
+ if (reserve.config.elevationGroups[i] !== reserveConfig.elevationGroups[i]) {
1413
+ updateReserveIxnsArgs.push({
1414
+ mode: types_1.UpdateConfigMode.UpdateElevationGroup.discriminator,
1415
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateElevationGroup.discriminator, reserveConfig.elevationGroups),
1416
+ });
1417
+ break;
1418
+ }
1419
+ }
1420
+ }
1421
+ break;
1422
+ case 'disableUsageAsCollOutsideEmode':
1423
+ if (reserve === undefined) {
1424
+ updateReserveIxnsArgs.push({
1425
+ mode: types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator,
1426
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator, reserveConfig.disableUsageAsCollOutsideEmode),
1427
+ });
1428
+ }
1429
+ else if (reserve.config.disableUsageAsCollOutsideEmode !== reserveConfig.disableUsageAsCollOutsideEmode) {
1430
+ updateReserveIxnsArgs.push({
1431
+ mode: types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator,
1432
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator, reserveConfig.disableUsageAsCollOutsideEmode),
1433
+ });
1434
+ }
1435
+ break;
1436
+ case 'utilizationLimitBlockBorrowingAbovePct':
1437
+ if (reserve === undefined) {
1438
+ updateReserveIxnsArgs.push({
1439
+ mode: types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator,
1440
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator, reserveConfig.utilizationLimitBlockBorrowingAbovePct),
1441
+ });
1442
+ }
1443
+ else if (reserve.config.utilizationLimitBlockBorrowingAbovePct !== reserveConfig.utilizationLimitBlockBorrowingAbovePct) {
1444
+ updateReserveIxnsArgs.push({
1445
+ mode: types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator,
1446
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator, reserveConfig.utilizationLimitBlockBorrowingAbovePct),
1447
+ });
1448
+ }
1449
+ break;
1450
+ case 'autodeleverageEnabled':
1451
+ if (reserve === undefined) {
1452
+ updateReserveIxnsArgs.push({
1453
+ mode: types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator,
1454
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator, reserveConfig.autodeleverageEnabled),
1455
+ });
1456
+ }
1457
+ else if (reserve.config.autodeleverageEnabled !== reserveConfig.autodeleverageEnabled) {
1458
+ updateReserveIxnsArgs.push({
1459
+ mode: types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator,
1460
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator, reserveConfig.autodeleverageEnabled),
1461
+ });
1462
+ }
1463
+ break;
1464
+ case 'borrowLimitOutsideElevationGroup':
1465
+ if (reserve === undefined) {
1466
+ updateReserveIxnsArgs.push({
1467
+ mode: types_1.UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator,
1468
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator, reserveConfig.borrowLimitOutsideElevationGroup.toNumber()),
1469
+ });
1470
+ }
1471
+ else if (reserve.config.borrowLimitOutsideElevationGroup.toNumber() !==
1472
+ reserveConfig.borrowLimitOutsideElevationGroup.toNumber()) {
1473
+ updateReserveIxnsArgs.push({
1474
+ mode: types_1.UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator,
1475
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator, reserveConfig.borrowLimitOutsideElevationGroup.toNumber()),
1476
+ });
1477
+ }
1478
+ break;
1479
+ case 'borrowLimitAgainstThisCollateralInElevationGroup':
1480
+ if (reserve === undefined) {
1481
+ updateReserveIxnsArgs.push({
1482
+ mode: types_1.UpdateConfigMode.UpdateBorrowLimitsInElevationGroupAgainstThisReserve.discriminator,
1483
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateBorrowLimitsInElevationGroupAgainstThisReserve.discriminator, reserveConfig.borrowLimitAgainstThisCollateralInElevationGroup.map((borrowLimit) => borrowLimit.toNumber())),
1484
+ });
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
+ }
1497
+ break;
1498
+ case '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()) {
1507
+ updateReserveIxnsArgs.push({
1508
+ mode: types_1.UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator,
1509
+ value: updateReserveConfigEncodedValue(types_1.UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator, reserveConfig.deleveragingBonusIncreaseBpsPerDay.toNumber()),
1510
+ });
1511
+ }
1512
+ break;
1513
+ default:
1514
+ (0, utils_2.assertNever)(key); // Will cause compile error if any case is missing
1515
+ }
1516
+ }
1517
+ function updateEntireReserveConfigIx(marketWithAddress, reserveAddress, reserveConfig, programId) {
1518
+ const layout = types_1.ReserveConfig.layout();
1519
+ const data = Buffer.alloc(1000);
1520
+ const len = layout.encode(reserveConfig.toEncodable(), data);
1521
+ const value = Uint8Array.from([...data.subarray(0, len)]);
1522
+ const args = {
1523
+ mode: new anchor.BN(25),
1524
+ value: value,
1525
+ skipValidation: false,
1526
+ };
1527
+ const accounts = {
1528
+ lendingMarketOwner: marketWithAddress.state.lendingMarketOwner,
1529
+ lendingMarket: marketWithAddress.address,
1530
+ reserve: reserveAddress,
1531
+ };
1532
+ const ix = (0, lib_1.updateReserveConfig)(args, accounts, programId);
1533
+ return ix;
1534
+ }
1535
+ function parseForChangesReserveConfigAndGetIxs(marketWithAddress, reserve, reserveAddress, reserveConfig, programId) {
1536
+ const updateReserveIxnsArgs = [];
1537
+ for (const key in reserveConfig.toEncodable()) {
1538
+ if (isExcludedReserveConfigKey(key)) {
1539
+ continue;
1478
1540
  }
1479
- } // for loop
1541
+ handleConfigUpdate(key, reserve, reserveConfig, updateReserveIxnsArgs);
1542
+ }
1480
1543
  const ixns = [];
1481
1544
  updateReserveIxnsArgs.forEach((updateReserveConfigArgs) => {
1482
1545
  ixns.push(updateReserveConfigIx(marketWithAddress, reserveAddress, updateReserveConfigArgs.mode + 1, updateReserveConfigArgs.value, programId));