@kamino-finance/klend-sdk 5.13.18-beta.0 → 5.14.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/classes/configItems.d.ts +137 -0
  2. package/dist/classes/configItems.d.ts.map +1 -0
  3. package/dist/classes/configItems.js +143 -0
  4. package/dist/classes/configItems.js.map +1 -0
  5. package/dist/classes/farm_utils.d.ts.map +1 -1
  6. package/dist/classes/farm_utils.js +3 -10
  7. package/dist/classes/farm_utils.js.map +1 -1
  8. package/dist/classes/manager.d.ts +4 -7
  9. package/dist/classes/manager.d.ts.map +1 -1
  10. package/dist/classes/manager.js +37 -292
  11. package/dist/classes/manager.js.map +1 -1
  12. package/dist/classes/obligation.d.ts +3 -1
  13. package/dist/classes/obligation.d.ts.map +1 -1
  14. package/dist/classes/obligation.js +4 -2
  15. package/dist/classes/obligation.js.map +1 -1
  16. package/dist/classes/obligationOrder.d.ts +1 -2
  17. package/dist/classes/obligationOrder.d.ts.map +1 -1
  18. package/dist/classes/obligationOrder.js +3 -16
  19. package/dist/classes/obligationOrder.js.map +1 -1
  20. package/dist/classes/reserve.d.ts +5 -14
  21. package/dist/classes/reserve.d.ts.map +1 -1
  22. package/dist/classes/reserve.js +91 -463
  23. package/dist/classes/reserve.js.map +1 -1
  24. package/dist/classes/utils.d.ts +1 -0
  25. package/dist/classes/utils.d.ts.map +1 -1
  26. package/dist/classes/utils.js +12 -0
  27. package/dist/classes/utils.js.map +1 -1
  28. package/dist/classes/vault.d.ts +1 -1
  29. package/dist/classes/vault.d.ts.map +1 -1
  30. package/dist/classes/vault.js +4 -5
  31. package/dist/classes/vault.js.map +1 -1
  32. package/dist/client_kamino_manager.d.ts.map +1 -1
  33. package/dist/client_kamino_manager.js +27 -26
  34. package/dist/client_kamino_manager.js.map +1 -1
  35. package/dist/idl.json +186 -9
  36. package/dist/idl_codegen/accounts/GlobalConfig.d.ts +40 -0
  37. package/dist/idl_codegen/accounts/GlobalConfig.d.ts.map +1 -0
  38. package/dist/idl_codegen/accounts/GlobalConfig.js +116 -0
  39. package/dist/idl_codegen/accounts/GlobalConfig.js.map +1 -0
  40. package/dist/idl_codegen/accounts/LendingMarket.d.ts +24 -3
  41. package/dist/idl_codegen/accounts/LendingMarket.d.ts.map +1 -1
  42. package/dist/idl_codegen/accounts/LendingMarket.js +25 -7
  43. package/dist/idl_codegen/accounts/LendingMarket.js.map +1 -1
  44. package/dist/idl_codegen/accounts/index.d.ts +2 -0
  45. package/dist/idl_codegen/accounts/index.d.ts.map +1 -1
  46. package/dist/idl_codegen/accounts/index.js +3 -1
  47. package/dist/idl_codegen/accounts/index.js.map +1 -1
  48. package/dist/idl_codegen/errors/custom.d.ts +25 -1
  49. package/dist/idl_codegen/errors/custom.d.ts.map +1 -1
  50. package/dist/idl_codegen/errors/custom.js +43 -1
  51. package/dist/idl_codegen/errors/custom.js.map +1 -1
  52. package/dist/idl_codegen/instructions/idlMissingTypes.d.ts +2 -1
  53. package/dist/idl_codegen/instructions/idlMissingTypes.d.ts.map +1 -1
  54. package/dist/idl_codegen/instructions/idlMissingTypes.js +2 -1
  55. package/dist/idl_codegen/instructions/idlMissingTypes.js.map +1 -1
  56. package/dist/idl_codegen/instructions/index.d.ts +6 -0
  57. package/dist/idl_codegen/instructions/index.d.ts.map +1 -1
  58. package/dist/idl_codegen/instructions/index.js +7 -1
  59. package/dist/idl_codegen/instructions/index.js.map +1 -1
  60. package/dist/idl_codegen/instructions/initGlobalConfig.d.ts +10 -0
  61. package/dist/idl_codegen/instructions/initGlobalConfig.d.ts.map +1 -0
  62. package/dist/idl_codegen/instructions/initGlobalConfig.js +19 -0
  63. package/dist/idl_codegen/instructions/initGlobalConfig.js.map +1 -0
  64. package/dist/idl_codegen/instructions/updateGlobalConfig.d.ts +13 -0
  65. package/dist/idl_codegen/instructions/updateGlobalConfig.d.ts.map +1 -0
  66. package/dist/idl_codegen/instructions/updateGlobalConfig.js +61 -0
  67. package/dist/idl_codegen/instructions/updateGlobalConfig.js.map +1 -0
  68. package/dist/idl_codegen/instructions/updateGlobalConfigAdmin.d.ts +7 -0
  69. package/dist/idl_codegen/instructions/updateGlobalConfigAdmin.d.ts.map +1 -0
  70. package/dist/idl_codegen/instructions/updateGlobalConfigAdmin.js +16 -0
  71. package/dist/idl_codegen/instructions/updateGlobalConfigAdmin.js.map +1 -0
  72. package/dist/idl_codegen/instructions/updateReserveConfig.d.ts +4 -3
  73. package/dist/idl_codegen/instructions/updateReserveConfig.d.ts.map +1 -1
  74. package/dist/idl_codegen/instructions/updateReserveConfig.js +5 -3
  75. package/dist/idl_codegen/instructions/updateReserveConfig.js.map +1 -1
  76. package/dist/idl_codegen/instructions/withdrawProtocolFee.d.ts +2 -2
  77. package/dist/idl_codegen/instructions/withdrawProtocolFee.d.ts.map +1 -1
  78. package/dist/idl_codegen/instructions/withdrawProtocolFee.js +2 -6
  79. package/dist/idl_codegen/instructions/withdrawProtocolFee.js.map +1 -1
  80. package/dist/idl_codegen/types/UpdateGlobalConfigMode.d.ts +32 -0
  81. package/dist/idl_codegen/types/UpdateGlobalConfigMode.d.ts.map +1 -0
  82. package/dist/idl_codegen/types/UpdateGlobalConfigMode.js +108 -0
  83. package/dist/idl_codegen/types/UpdateGlobalConfigMode.js.map +1 -0
  84. package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts +33 -7
  85. package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts.map +1 -1
  86. package/dist/idl_codegen/types/UpdateLendingMarketMode.js +60 -12
  87. package/dist/idl_codegen/types/UpdateLendingMarketMode.js.map +1 -1
  88. package/dist/idl_codegen/types/index.d.ts +6 -2
  89. package/dist/idl_codegen/types/index.d.ts.map +1 -1
  90. package/dist/idl_codegen/types/index.js +3 -1
  91. package/dist/idl_codegen/types/index.js.map +1 -1
  92. package/dist/lending_operations/repay_with_collateral_calcs.d.ts.map +1 -1
  93. package/dist/lending_operations/repay_with_collateral_calcs.js +2 -2
  94. package/dist/lending_operations/repay_with_collateral_calcs.js.map +1 -1
  95. package/dist/utils/lookupTable.d.ts.map +1 -1
  96. package/dist/utils/lookupTable.js +1 -6
  97. package/dist/utils/lookupTable.js.map +1 -1
  98. package/dist/utils/managerTypes.d.ts.map +1 -1
  99. package/dist/utils/managerTypes.js +10 -4
  100. package/dist/utils/managerTypes.js.map +1 -1
  101. package/dist/utils/seeds.d.ts +16 -0
  102. package/dist/utils/seeds.d.ts.map +1 -1
  103. package/dist/utils/seeds.js +23 -1
  104. package/dist/utils/seeds.js.map +1 -1
  105. package/package.json +1 -1
  106. package/src/classes/configItems.ts +229 -0
  107. package/src/classes/farm_utils.ts +3 -11
  108. package/src/classes/manager.ts +49 -392
  109. package/src/classes/obligation.ts +4 -9
  110. package/src/classes/obligationOrder.ts +3 -22
  111. package/src/classes/reserve.ts +119 -783
  112. package/src/classes/utils.ts +12 -0
  113. package/src/classes/vault.ts +6 -7
  114. package/src/client_kamino_manager.ts +42 -34
  115. package/src/idl.json +186 -9
  116. package/src/idl_codegen/accounts/GlobalConfig.ts +125 -0
  117. package/src/idl_codegen/accounts/LendingMarket.ts +41 -9
  118. package/src/idl_codegen/accounts/index.ts +2 -0
  119. package/src/idl_codegen/errors/custom.ts +45 -0
  120. package/src/idl_codegen/instructions/idlMissingTypes.ts +4 -2
  121. package/src/idl_codegen/instructions/index.ts +9 -0
  122. package/src/idl_codegen/instructions/initGlobalConfig.ts +30 -0
  123. package/src/idl_codegen/instructions/updateGlobalConfig.ts +47 -0
  124. package/src/idl_codegen/instructions/updateGlobalConfigAdmin.ts +24 -0
  125. package/src/idl_codegen/instructions/updateReserveConfig.ts +7 -5
  126. package/src/idl_codegen/instructions/withdrawProtocolFee.ts +4 -8
  127. package/src/idl_codegen/types/UpdateGlobalConfigMode.ts +90 -0
  128. package/src/idl_codegen/types/UpdateLendingMarketMode.ts +73 -13
  129. package/src/idl_codegen/types/index.ts +16 -2
  130. package/src/lending_operations/repay_with_collateral_calcs.ts +5 -2
  131. package/src/utils/lookupTable.ts +1 -7
  132. package/src/utils/managerTypes.ts +10 -4
  133. package/src/utils/seeds.ts +25 -0
@@ -1,48 +1,13 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
38
5
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.sortIxsByPriority = exports.modeMatches = exports.KaminoReserve = exports.DEFAULT_RECENT_SLOT_DURATION_MS = void 0;
6
+ exports.RESERVE_CONFIG_UPDATER = exports.KaminoReserve = exports.DEFAULT_RECENT_SLOT_DURATION_MS = void 0;
40
7
  exports.createReserveIxs = createReserveIxs;
41
8
  exports.updateReserveConfigIx = updateReserveConfigIx;
42
9
  exports.updateEntireReserveConfigIx = updateEntireReserveConfigIx;
43
10
  exports.parseForChangesReserveConfigAndGetIxs = parseForChangesReserveConfigAndGetIxs;
44
- exports.updateReserveConfigEncodedValue = updateReserveConfigEncodedValue;
45
- exports.serializeBorrowRateCurve = serializeBorrowRateCurve;
46
11
  /* eslint-disable max-classes-per-file */
47
12
  const web3_js_1 = require("@solana/web3.js");
48
13
  const decimal_js_1 = __importDefault(require("decimal.js"));
@@ -51,9 +16,9 @@ const shared_1 = require("./shared");
51
16
  const accounts_1 = require("../idl_codegen/accounts");
52
17
  const types_1 = require("../idl_codegen/types");
53
18
  const utils_2 = require("./utils");
19
+ const configItems_1 = require("./configItems");
54
20
  const fraction_1 = require("./fraction");
55
21
  const lib_1 = require("../lib");
56
- const anchor = __importStar(require("@coral-xyz/anchor"));
57
22
  const spl_token_1 = require("@solana/spl-token");
58
23
  const kliquidity_sdk_1 = require("@kamino-finance/kliquidity-sdk");
59
24
  const farms_sdk_1 = require("@kamino-finance/farms-sdk");
@@ -920,452 +885,115 @@ async function createReserveIxs(connection, owner, ownerLiquiditySource, lending
920
885
  const initReserveIx = (0, lib_1.initReserve)(accounts, programId);
921
886
  return [createReserveIx, initReserveIx];
922
887
  }
923
- function updateReserveConfigIx(marketWithAddress, reserveAddress, modeDiscriminator, value, programId, skipValidation = false) {
924
- value;
888
+ function updateReserveConfigIx(signer, marketAddress, reserveAddress, mode, value, programId, skipValidation = false) {
925
889
  const args = {
926
- mode: new anchor.BN(modeDiscriminator),
927
- value: value,
890
+ mode,
891
+ value,
928
892
  skipValidation,
929
893
  };
894
+ const [globalConfig] = (0, utils_1.globalConfigPda)(programId);
930
895
  const accounts = {
931
- lendingMarketOwner: marketWithAddress.state.lendingMarketOwner,
932
- lendingMarket: marketWithAddress.address,
896
+ signer,
897
+ lendingMarket: marketAddress,
933
898
  reserve: reserveAddress,
899
+ globalConfig,
934
900
  };
935
- const ix = (0, lib_1.updateReserveConfig)(args, accounts, programId);
936
- return ix;
937
- }
938
- const EXCLUDED_RESERVE_CONFIG_KEYS = ['reserved1', 'reserved2'];
939
- function isExcludedReserveConfigKey(value) {
940
- return EXCLUDED_RESERVE_CONFIG_KEYS.includes(value);
941
- }
942
- function handleConfigUpdate(key, reserve, reserveConfig, updateReserveIxsArgs) {
943
- switch (key) {
944
- case 'status':
945
- if (reserve === undefined || reserve.config.status !== reserveConfig.status) {
946
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateReserveStatus.discriminator, reserveConfig.status));
947
- }
948
- break;
949
- case 'assetTier':
950
- if (reserve === undefined || reserve.config.assetTier !== reserveConfig.assetTier) {
951
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateAssetTier.discriminator, reserveConfig.assetTier));
952
- }
953
- break;
954
- case 'hostFixedInterestRateBps':
955
- if (reserve === undefined || reserve.config.hostFixedInterestRateBps !== reserveConfig.hostFixedInterestRateBps) {
956
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateHostFixedInterestRateBps.discriminator, reserveConfig.hostFixedInterestRateBps));
957
- }
958
- break;
959
- case 'protocolTakeRatePct':
960
- if (reserve === undefined || reserve.config.protocolTakeRatePct !== reserveConfig.protocolTakeRatePct) {
961
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator, reserveConfig.protocolTakeRatePct));
962
- }
963
- break;
964
- case 'protocolLiquidationFeePct':
965
- if (reserve === undefined ||
966
- reserve.config.protocolLiquidationFeePct !== reserveConfig.protocolLiquidationFeePct) {
967
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator, reserveConfig.protocolLiquidationFeePct));
968
- }
969
- break;
970
- case 'protocolOrderExecutionFeePct':
971
- if (reserve === undefined ||
972
- reserve.config.protocolOrderExecutionFeePct !== reserveConfig.protocolOrderExecutionFeePct) {
973
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateProtocolOrderExecutionFee.discriminator, reserveConfig.protocolOrderExecutionFeePct));
974
- }
975
- break;
976
- case 'loanToValuePct':
977
- if (reserve === undefined || reserve.config.loanToValuePct !== reserveConfig.loanToValuePct) {
978
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator, reserveConfig.loanToValuePct));
979
- }
980
- break;
981
- case 'liquidationThresholdPct':
982
- if (reserve === undefined || reserve.config.liquidationThresholdPct !== reserveConfig.liquidationThresholdPct) {
983
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator, reserveConfig.liquidationThresholdPct));
984
- }
985
- break;
986
- case 'minLiquidationBonusBps':
987
- if (reserve === undefined || reserve.config.minLiquidationBonusBps !== reserveConfig.minLiquidationBonusBps) {
988
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator, reserveConfig.minLiquidationBonusBps));
989
- }
990
- break;
991
- case 'maxLiquidationBonusBps':
992
- if (reserve === undefined || reserve.config.maxLiquidationBonusBps !== reserveConfig.maxLiquidationBonusBps) {
993
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator, reserveConfig.maxLiquidationBonusBps));
994
- }
995
- break;
996
- case 'badDebtLiquidationBonusBps':
997
- if (reserve === undefined ||
998
- reserve.config.badDebtLiquidationBonusBps !== reserveConfig.badDebtLiquidationBonusBps) {
999
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator, reserveConfig.badDebtLiquidationBonusBps));
1000
- }
1001
- break;
1002
- case 'deleveragingMarginCallPeriodSecs':
1003
- if (reserve === undefined ||
1004
- !reserve.config.deleveragingMarginCallPeriodSecs.eq(reserveConfig.deleveragingMarginCallPeriodSecs)) {
1005
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator, reserveConfig.deleveragingMarginCallPeriodSecs.toNumber()));
1006
- }
1007
- break;
1008
- case 'deleveragingThresholdDecreaseBpsPerDay':
1009
- if (reserve === undefined ||
1010
- !reserve.config.deleveragingThresholdDecreaseBpsPerDay.eq(reserveConfig.deleveragingThresholdDecreaseBpsPerDay)) {
1011
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.discriminator, reserveConfig.deleveragingThresholdDecreaseBpsPerDay.toNumber()));
1012
- }
1013
- break;
1014
- case 'fees':
1015
- if (reserve === undefined || !reserve.config.fees.borrowFeeSf.eq(reserveConfig.fees.borrowFeeSf)) {
1016
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator, reserveConfig.fees.borrowFeeSf.toNumber()));
1017
- }
1018
- if (reserve === undefined || !reserve.config.fees.flashLoanFeeSf.eq(reserveConfig.fees.flashLoanFeeSf)) {
1019
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator, reserveConfig.fees.flashLoanFeeSf.toNumber()));
1020
- }
1021
- break;
1022
- case 'borrowRateCurve':
1023
- if (reserve === undefined) {
1024
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateBorrowRateCurve.discriminator, reserveConfig.borrowRateCurve));
1025
- }
1026
- else {
1027
- let shouldBorrowCurveBeUpdated = false;
1028
- for (let i = 0; i < reserveConfig.borrowRateCurve.points.length; i++) {
1029
- if (reserve.config.borrowRateCurve.points[i].utilizationRateBps !==
1030
- reserveConfig.borrowRateCurve.points[i].utilizationRateBps ||
1031
- reserve.config.borrowRateCurve.points[i].borrowRateBps !==
1032
- reserveConfig.borrowRateCurve.points[i].borrowRateBps) {
1033
- shouldBorrowCurveBeUpdated = true;
1034
- break;
1035
- }
1036
- }
1037
- if (shouldBorrowCurveBeUpdated) {
1038
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateBorrowRateCurve.discriminator, reserveConfig.borrowRateCurve));
1039
- break;
1040
- }
1041
- }
1042
- break;
1043
- case 'borrowFactorPct':
1044
- if (reserve === undefined || !reserve.config.borrowFactorPct.eq(reserveConfig.borrowFactorPct)) {
1045
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateBorrowFactor.discriminator, reserveConfig.borrowFactorPct.toNumber()));
1046
- }
1047
- break;
1048
- case 'depositLimit':
1049
- if (reserve === undefined || !reserve.config.depositLimit.eq(reserveConfig.depositLimit)) {
1050
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateDepositLimit.discriminator, BigInt(reserveConfig.depositLimit.toString())));
1051
- }
1052
- break;
1053
- case 'borrowLimit':
1054
- if (reserve === undefined || !reserve.config.borrowLimit.eq(reserveConfig.borrowLimit)) {
1055
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator, BigInt(reserveConfig.borrowLimit.toString())));
1056
- }
1057
- break;
1058
- case 'tokenInfo':
1059
- const tokenInfo = reserveConfig.tokenInfo;
1060
- if (reserve === undefined) {
1061
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoName.discriminator, tokenInfo.name));
1062
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator, tokenInfo.heuristic.lower.toNumber()));
1063
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator, tokenInfo.heuristic.upper.toNumber()));
1064
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator, tokenInfo.heuristic.exp.toNumber()));
1065
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator, tokenInfo.maxTwapDivergenceBps.toNumber()));
1066
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator, tokenInfo.maxAgePriceSeconds.toNumber()));
1067
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator, tokenInfo.maxAgeTwapSeconds.toNumber()));
1068
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator, tokenInfo.scopeConfiguration.priceChain));
1069
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator, tokenInfo.scopeConfiguration.twapChain));
1070
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateSwitchboardFeed.discriminator, tokenInfo.switchboardConfiguration.priceAggregator));
1071
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator, tokenInfo.switchboardConfiguration.twapAggregator));
1072
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdatePythPrice.discriminator, tokenInfo.pythConfiguration.price));
1073
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateBlockPriceUsage.discriminator, tokenInfo.blockPriceUsage));
1074
- }
1075
- else {
1076
- if (!(0, utils_2.sameLengthArrayEquals)(reserve.config.tokenInfo.name, tokenInfo.name)) {
1077
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoName.discriminator, tokenInfo.name));
1078
- }
1079
- if (!reserve.config.tokenInfo.heuristic.lower.eq(tokenInfo.heuristic.lower)) {
1080
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator, tokenInfo.heuristic.lower.toNumber()));
1081
- }
1082
- if (!reserve.config.tokenInfo.heuristic.upper.eq(tokenInfo.heuristic.upper)) {
1083
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator, tokenInfo.heuristic.upper.toNumber()));
1084
- }
1085
- if (!reserve.config.tokenInfo.heuristic.exp.eq(tokenInfo.heuristic.exp)) {
1086
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator, tokenInfo.heuristic.exp.toNumber()));
1087
- }
1088
- if (!reserve.config.tokenInfo.maxTwapDivergenceBps.eq(tokenInfo.maxTwapDivergenceBps)) {
1089
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator, tokenInfo.maxTwapDivergenceBps.toNumber()));
1090
- }
1091
- if (!reserve.config.tokenInfo.maxAgePriceSeconds.eq(tokenInfo.maxAgePriceSeconds)) {
1092
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator, tokenInfo.maxAgePriceSeconds.toNumber()));
1093
- }
1094
- if (!reserve.config.tokenInfo.maxAgeTwapSeconds.eq(tokenInfo.maxAgeTwapSeconds)) {
1095
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator, tokenInfo.maxAgeTwapSeconds.toNumber()));
1096
- }
1097
- if (!(0, utils_2.sameLengthArrayEquals)(reserve.config.tokenInfo.scopeConfiguration.priceChain, tokenInfo.scopeConfiguration.priceChain)) {
1098
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator, tokenInfo.scopeConfiguration.priceChain));
1099
- }
1100
- if (!(0, utils_2.sameLengthArrayEquals)(reserve.config.tokenInfo.scopeConfiguration.twapChain, tokenInfo.scopeConfiguration.twapChain)) {
1101
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator, tokenInfo.scopeConfiguration.twapChain));
1102
- }
1103
- if (!reserve.config.tokenInfo.switchboardConfiguration.priceAggregator.equals(tokenInfo.switchboardConfiguration.priceAggregator)) {
1104
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateSwitchboardFeed.discriminator, tokenInfo.switchboardConfiguration.priceAggregator));
1105
- }
1106
- if (!reserve.config.tokenInfo.switchboardConfiguration.twapAggregator.equals(tokenInfo.switchboardConfiguration.twapAggregator)) {
1107
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator, tokenInfo.switchboardConfiguration.twapAggregator));
1108
- }
1109
- if (!reserve.config.tokenInfo.pythConfiguration.price.equals(tokenInfo.pythConfiguration.price)) {
1110
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdatePythPrice.discriminator, tokenInfo.pythConfiguration.price));
1111
- }
1112
- if (reserve.config.tokenInfo.blockPriceUsage !== tokenInfo.blockPriceUsage) {
1113
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateBlockPriceUsage.discriminator, tokenInfo.blockPriceUsage));
1114
- }
1115
- if (!reserve.config.tokenInfo.scopeConfiguration.priceFeed.equals(tokenInfo.scopeConfiguration.priceFeed)) {
1116
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateScopePriceFeed.discriminator, tokenInfo.scopeConfiguration.priceFeed));
1117
- }
1118
- }
1119
- break;
1120
- case 'depositWithdrawalCap':
1121
- if (reserve === undefined ||
1122
- !reserve.config.depositWithdrawalCap.configCapacity.eq(reserveConfig.depositWithdrawalCap.configCapacity) ||
1123
- !reserve.config.depositWithdrawalCap.configIntervalLengthSeconds.eq(reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds)) {
1124
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, [
1125
- reserveConfig.depositWithdrawalCap.configCapacity.toNumber(),
1126
- reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1127
- ]));
1128
- }
1129
- break;
1130
- case 'debtWithdrawalCap':
1131
- if (reserve === undefined ||
1132
- !reserve.config.debtWithdrawalCap.configCapacity.eq(reserveConfig.debtWithdrawalCap.configCapacity) ||
1133
- !reserve.config.debtWithdrawalCap.configIntervalLengthSeconds.eq(reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds)) {
1134
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, [
1135
- reserveConfig.debtWithdrawalCap.configCapacity.toNumber(),
1136
- reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds.toNumber(),
1137
- ]));
1138
- }
1139
- break;
1140
- case 'elevationGroups':
1141
- if (reserve === undefined ||
1142
- !(0, utils_2.sameLengthArrayEquals)(reserve.config.elevationGroups, reserveConfig.elevationGroups)) {
1143
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateElevationGroup.discriminator, reserveConfig.elevationGroups));
1144
- }
1145
- break;
1146
- case 'disableUsageAsCollOutsideEmode':
1147
- if (reserve === undefined ||
1148
- reserve.config.disableUsageAsCollOutsideEmode !== reserveConfig.disableUsageAsCollOutsideEmode) {
1149
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator, reserveConfig.disableUsageAsCollOutsideEmode));
1150
- }
1151
- break;
1152
- case 'utilizationLimitBlockBorrowingAbovePct':
1153
- if (reserve === undefined ||
1154
- reserve.config.utilizationLimitBlockBorrowingAbovePct !== reserveConfig.utilizationLimitBlockBorrowingAbovePct) {
1155
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator, reserveConfig.utilizationLimitBlockBorrowingAbovePct));
1156
- }
1157
- break;
1158
- case 'autodeleverageEnabled':
1159
- if (reserve === undefined || reserve.config.autodeleverageEnabled !== reserveConfig.autodeleverageEnabled) {
1160
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator, reserveConfig.autodeleverageEnabled));
1161
- }
1162
- break;
1163
- case 'borrowLimitOutsideElevationGroup':
1164
- if (reserve === undefined ||
1165
- !reserve.config.borrowLimitOutsideElevationGroup.eq(reserveConfig.borrowLimitOutsideElevationGroup)) {
1166
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator, BigInt(reserveConfig.borrowLimitOutsideElevationGroup.toString())));
1167
- }
1168
- break;
1169
- case 'borrowLimitAgainstThisCollateralInElevationGroup':
1170
- if (reserve === undefined ||
1171
- !(0, utils_2.sameLengthArrayEquals)(reserve.config.borrowLimitAgainstThisCollateralInElevationGroup, reserveConfig.borrowLimitAgainstThisCollateralInElevationGroup)) {
1172
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateBorrowLimitsInElevationGroupAgainstThisReserve.discriminator, reserveConfig.borrowLimitAgainstThisCollateralInElevationGroup.map((borrowLimit) => borrowLimit.toNumber())));
1173
- }
1174
- break;
1175
- case 'deleveragingBonusIncreaseBpsPerDay':
1176
- if (reserve === undefined ||
1177
- !reserve.config.deleveragingBonusIncreaseBpsPerDay.eq(reserveConfig.deleveragingBonusIncreaseBpsPerDay)) {
1178
- updateReserveIxsArgs.push(createUpdateReserveIxsArg(types_1.UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator, reserveConfig.deleveragingBonusIncreaseBpsPerDay.toNumber()));
1179
- }
1180
- break;
1181
- default:
1182
- (0, utils_2.assertNever)(key); // Will cause compile error if any case is missing
1183
- }
1184
- }
1185
- function createUpdateReserveIxsArg(discriminator, value) {
1186
- return {
1187
- // Note: below we add 1 to the discriminator, because UpdateConfigMode in SC starts from 1, while the idl-codegen
1188
- // creates the TS counterparts starting from 0:
1189
- mode: discriminator + 1,
1190
- value: updateReserveConfigEncodedValue(discriminator, value),
1191
- };
901
+ return (0, lib_1.updateReserveConfig)(args, accounts, programId);
1192
902
  }
1193
- function updateEntireReserveConfigIx(marketWithAddress, reserveAddress, reserveConfig, programId) {
1194
- const layout = types_1.ReserveConfig.layout();
1195
- const data = Buffer.alloc(1000);
1196
- const len = layout.encode(reserveConfig.toEncodable(), data);
1197
- const value = Uint8Array.from([...data.subarray(0, len)]);
903
+ exports.RESERVE_CONFIG_UPDATER = new configItems_1.ConfigUpdater(types_1.UpdateConfigMode.fromDecoded, types_1.ReserveConfig, (config) => ({
904
+ [types_1.UpdateConfigMode.UpdateLoanToValuePct.kind]: config.loanToValuePct,
905
+ [types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.kind]: config.maxLiquidationBonusBps,
906
+ [types_1.UpdateConfigMode.UpdateLiquidationThresholdPct.kind]: config.liquidationThresholdPct,
907
+ [types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.kind]: config.protocolLiquidationFeePct,
908
+ [types_1.UpdateConfigMode.UpdateProtocolTakeRate.kind]: config.protocolTakeRatePct,
909
+ [types_1.UpdateConfigMode.UpdateFeesBorrowFee.kind]: config.fees.borrowFeeSf,
910
+ [types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.kind]: config.fees.flashLoanFeeSf,
911
+ [types_1.UpdateConfigMode.DeprecatedUpdateFeesReferralFeeBps.kind]: null, // deprecated
912
+ [types_1.UpdateConfigMode.UpdateDepositLimit.kind]: config.depositLimit,
913
+ [types_1.UpdateConfigMode.UpdateBorrowLimit.kind]: config.borrowLimit,
914
+ [types_1.UpdateConfigMode.UpdateTokenInfoLowerHeuristic.kind]: config.tokenInfo.heuristic.lower,
915
+ [types_1.UpdateConfigMode.UpdateTokenInfoUpperHeuristic.kind]: config.tokenInfo.heuristic.upper,
916
+ [types_1.UpdateConfigMode.UpdateTokenInfoExpHeuristic.kind]: config.tokenInfo.heuristic.exp,
917
+ [types_1.UpdateConfigMode.UpdateTokenInfoTwapDivergence.kind]: config.tokenInfo.maxTwapDivergenceBps,
918
+ [types_1.UpdateConfigMode.UpdateTokenInfoScopeTwap.kind]: config.tokenInfo.scopeConfiguration.twapChain,
919
+ [types_1.UpdateConfigMode.UpdateTokenInfoScopeChain.kind]: config.tokenInfo.scopeConfiguration.priceChain,
920
+ [types_1.UpdateConfigMode.UpdateTokenInfoName.kind]: config.tokenInfo.name,
921
+ [types_1.UpdateConfigMode.UpdateTokenInfoPriceMaxAge.kind]: config.tokenInfo.maxAgePriceSeconds,
922
+ [types_1.UpdateConfigMode.UpdateTokenInfoTwapMaxAge.kind]: config.tokenInfo.maxAgeTwapSeconds,
923
+ [types_1.UpdateConfigMode.UpdateScopePriceFeed.kind]: config.tokenInfo.scopeConfiguration.priceFeed,
924
+ [types_1.UpdateConfigMode.UpdatePythPrice.kind]: config.tokenInfo.pythConfiguration.price,
925
+ [types_1.UpdateConfigMode.UpdateSwitchboardFeed.kind]: config.tokenInfo.switchboardConfiguration.priceAggregator,
926
+ [types_1.UpdateConfigMode.UpdateSwitchboardTwapFeed.kind]: config.tokenInfo.switchboardConfiguration.twapAggregator,
927
+ [types_1.UpdateConfigMode.UpdateBorrowRateCurve.kind]: config.borrowRateCurve,
928
+ [types_1.UpdateConfigMode.UpdateEntireReserveConfig.kind]: null, // technically `config` would be a valid thing here, but we actually do NOT want entire config update among ixs produced for field-by-field updates
929
+ [types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.kind]: new configItems_1.CompositeConfigItem(config.debtWithdrawalCap.configCapacity, config.debtWithdrawalCap.configIntervalLengthSeconds),
930
+ [types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.kind]: new configItems_1.CompositeConfigItem(config.depositWithdrawalCap.configCapacity, config.depositWithdrawalCap.configIntervalLengthSeconds),
931
+ [types_1.UpdateConfigMode.DeprecatedUpdateDebtWithdrawalCapCurrentTotal.kind]: null, // deprecated
932
+ [types_1.UpdateConfigMode.DeprecatedUpdateDepositWithdrawalCapCurrentTotal.kind]: null, // deprecated
933
+ [types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.kind]: config.badDebtLiquidationBonusBps,
934
+ [types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.kind]: config.minLiquidationBonusBps,
935
+ [types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.kind]: config.deleveragingMarginCallPeriodSecs,
936
+ [types_1.UpdateConfigMode.UpdateBorrowFactor.kind]: config.borrowFactorPct,
937
+ [types_1.UpdateConfigMode.UpdateAssetTier.kind]: config.assetTier,
938
+ [types_1.UpdateConfigMode.UpdateElevationGroup.kind]: config.elevationGroups,
939
+ [types_1.UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.kind]: config.deleveragingThresholdDecreaseBpsPerDay,
940
+ [types_1.UpdateConfigMode.DeprecatedUpdateMultiplierSideBoost.kind]: null, // deprecated
941
+ [types_1.UpdateConfigMode.DeprecatedUpdateMultiplierTagBoost.kind]: null, // deprecated
942
+ [types_1.UpdateConfigMode.UpdateReserveStatus.kind]: config.status,
943
+ [types_1.UpdateConfigMode.UpdateFarmCollateral.kind]: null, // the farm fields live on the `Reserve` level...
944
+ [types_1.UpdateConfigMode.UpdateFarmDebt.kind]: null, // ...so we are not concerned with them in the `ReserveConfig`'s field-by-field update tx
945
+ [types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.kind]: config.disableUsageAsCollOutsideEmode,
946
+ [types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.kind]: config.utilizationLimitBlockBorrowingAbovePct,
947
+ [types_1.UpdateConfigMode.UpdateBlockPriceUsage.kind]: config.tokenInfo.blockPriceUsage,
948
+ [types_1.UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.kind]: config.borrowLimitOutsideElevationGroup,
949
+ [types_1.UpdateConfigMode.UpdateBorrowLimitsInElevationGroupAgainstThisReserve.kind]: config.borrowLimitAgainstThisCollateralInElevationGroup,
950
+ [types_1.UpdateConfigMode.UpdateHostFixedInterestRateBps.kind]: config.hostFixedInterestRateBps,
951
+ [types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.kind]: config.autodeleverageEnabled,
952
+ [types_1.UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.kind]: config.deleveragingBonusIncreaseBpsPerDay,
953
+ [types_1.UpdateConfigMode.UpdateProtocolOrderExecutionFee.kind]: config.protocolOrderExecutionFeePct,
954
+ }));
955
+ function updateEntireReserveConfigIx(signer, marketAddress, reserveAddress, reserveConfig, programId) {
1198
956
  const args = {
1199
- mode: new anchor.BN(25),
1200
- value: value,
957
+ mode: new types_1.UpdateConfigMode.UpdateEntireReserveConfig(),
958
+ value: (0, configItems_1.encodeUsingLayout)(types_1.ReserveConfig.layout(), reserveConfig),
1201
959
  skipValidation: false,
1202
960
  };
961
+ const [globalConfig] = (0, utils_1.globalConfigPda)(programId);
1203
962
  const accounts = {
1204
- lendingMarketOwner: marketWithAddress.state.lendingMarketOwner,
1205
- lendingMarket: marketWithAddress.address,
963
+ signer,
964
+ lendingMarket: marketAddress,
1206
965
  reserve: reserveAddress,
966
+ globalConfig,
1207
967
  };
1208
968
  const ix = (0, lib_1.updateReserveConfig)(args, accounts, programId);
1209
969
  return ix;
1210
970
  }
1211
971
  function parseForChangesReserveConfigAndGetIxs(marketWithAddress, reserve, reserveAddress, reserveConfig, programId) {
1212
- let updateReserveIxsArgs = [];
1213
- for (const key in reserveConfig.toEncodable()) {
1214
- if (isExcludedReserveConfigKey(key)) {
1215
- continue;
1216
- }
1217
- handleConfigUpdate(key, reserve, reserveConfig, updateReserveIxsArgs);
1218
- }
1219
- const ixs = [];
1220
- updateReserveIxsArgs = (0, exports.sortIxsByPriority)(updateReserveIxsArgs);
1221
- updateReserveIxsArgs.forEach((updateReserveConfigArgs) => {
1222
- let skipValidation = false;
1223
- if ((0, exports.modeMatches)(updateReserveConfigArgs.mode) && !reserve?.liquidity.availableAmount.gten(utils_1.MIN_INITIAL_DEPOSIT)) {
1224
- skipValidation = true;
1225
- }
1226
- ixs.push(updateReserveConfigIx(marketWithAddress, reserveAddress, updateReserveConfigArgs.mode, updateReserveConfigArgs.value, programId, skipValidation));
1227
- });
1228
- return ixs;
972
+ const encodedConfigUpdates = exports.RESERVE_CONFIG_UPDATER.encodeAllUpdates(reserve?.config, reserveConfig);
973
+ encodedConfigUpdates.sort((left, right) => priorityOf(left.mode) - priorityOf(right.mode));
974
+ return encodedConfigUpdates.map((encodedConfigUpdate) => updateReserveConfigIx(marketWithAddress.state.lendingMarketOwner, marketWithAddress.address, reserveAddress, encodedConfigUpdate.mode, encodedConfigUpdate.value, programId, shouldSkipValidation(encodedConfigUpdate.mode, reserve)));
1229
975
  }
1230
- function updateReserveConfigEncodedValue(discriminator, value) {
1231
- let buffer;
1232
- let valueArray = [];
1233
- switch (discriminator) {
1234
- case types_1.UpdateConfigMode.UpdateLoanToValuePct.discriminator:
1235
- case types_1.UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator:
1236
- case types_1.UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator:
1237
- case types_1.UpdateConfigMode.UpdateProtocolTakeRate.discriminator:
1238
- case types_1.UpdateConfigMode.UpdateAssetTier.discriminator:
1239
- case types_1.UpdateConfigMode.UpdateReserveStatus.discriminator:
1240
- case types_1.UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator:
1241
- case types_1.UpdateConfigMode.UpdateBlockBorrowingAboveUtilizationPct.discriminator:
1242
- case types_1.UpdateConfigMode.UpdateBlockPriceUsage.discriminator:
1243
- case types_1.UpdateConfigMode.UpdateAutodeleverageEnabled.discriminator:
1244
- buffer = Buffer.alloc(1);
1245
- buffer.writeUIntLE(value, 0, 1);
1246
- break;
1247
- case types_1.UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator:
1248
- case types_1.UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator:
1249
- case types_1.UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator:
1250
- buffer = Buffer.alloc(2);
1251
- buffer.writeUInt16LE(value, 0);
1252
- break;
1253
- case types_1.UpdateConfigMode.UpdateFeesBorrowFee.discriminator:
1254
- case types_1.UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator:
1255
- case types_1.UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator:
1256
- case types_1.UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator:
1257
- case types_1.UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator:
1258
- case types_1.UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator:
1259
- case types_1.UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator:
1260
- case types_1.UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator:
1261
- case types_1.UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.discriminator:
1262
- case types_1.UpdateConfigMode.UpdateBorrowFactor.discriminator:
1263
- case types_1.UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.discriminator:
1264
- case types_1.UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.discriminator:
1265
- value = value;
1266
- buffer = Buffer.alloc(8);
1267
- buffer.writeBigUint64LE(BigInt(value), 0);
1268
- break;
1269
- case types_1.UpdateConfigMode.UpdateDepositLimit.discriminator:
1270
- case types_1.UpdateConfigMode.UpdateBorrowLimit.discriminator:
1271
- case types_1.UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator:
1272
- buffer = Buffer.alloc(8);
1273
- // Convert value to BigInt if it's not already
1274
- const bigIntValue = typeof value === 'bigint' ? value : BigInt(value.toString());
1275
- // Split into two 32-bit values
1276
- const low = Number(bigIntValue & BigInt(0xffffffff));
1277
- const high = Number(bigIntValue >> BigInt(32));
1278
- buffer.writeUInt32LE(low, 0);
1279
- buffer.writeUInt32LE(high, 4);
1280
- break;
1281
- case types_1.UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator:
1282
- case types_1.UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator:
1283
- valueArray = value;
1284
- buffer = Buffer.alloc(8);
1285
- for (let i = 0; i < valueArray.length; i++) {
1286
- buffer.writeUInt16LE(valueArray[i], 2 * i);
1287
- }
1288
- break;
1289
- case types_1.UpdateConfigMode.UpdateTokenInfoName.discriminator:
1290
- valueArray = value;
1291
- buffer = Buffer.alloc(32);
1292
- for (let i = 0; i < valueArray.length; i++) {
1293
- buffer.writeUIntLE(valueArray[i], i, 1);
1294
- }
1295
- break;
976
+ const NON_VALIDATED_DISCRIMINATORS = [
977
+ types_1.UpdateConfigMode.UpdateScopePriceFeed.discriminator,
978
+ types_1.UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator,
979
+ types_1.UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator,
980
+ types_1.UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator,
981
+ types_1.UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator,
982
+ types_1.UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator,
983
+ types_1.UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator,
984
+ ];
985
+ function shouldSkipValidation(mode, reserve) {
986
+ return (NON_VALIDATED_DISCRIMINATORS.includes(mode.discriminator) &&
987
+ !reserve?.liquidity.availableAmount.gten(utils_1.MIN_INITIAL_DEPOSIT));
988
+ }
989
+ function priorityOf(mode) {
990
+ switch (mode.discriminator) {
1296
991
  case types_1.UpdateConfigMode.UpdateScopePriceFeed.discriminator:
1297
- case types_1.UpdateConfigMode.UpdatePythPrice.discriminator:
1298
- case types_1.UpdateConfigMode.UpdateSwitchboardFeed.discriminator:
1299
- case types_1.UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator:
1300
- case types_1.UpdateConfigMode.UpdateFarmCollateral.discriminator:
1301
- case types_1.UpdateConfigMode.UpdateFarmDebt.discriminator:
1302
- buffer = value.toBuffer();
1303
- break;
1304
- case types_1.UpdateConfigMode.UpdateBorrowRateCurve.discriminator:
1305
- buffer = serializeBorrowRateCurve(value);
1306
- break;
1307
- case types_1.UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator:
1308
- case types_1.UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator:
1309
- valueArray = value;
1310
- buffer = Buffer.alloc(16);
1311
- buffer.writeBigUint64LE(BigInt(valueArray[0]), 0);
1312
- buffer.writeBigUInt64LE(BigInt(valueArray[1]), 8);
1313
- break;
1314
- case types_1.UpdateConfigMode.UpdateElevationGroup.discriminator:
1315
- valueArray = value;
1316
- buffer = Buffer.alloc(20);
1317
- for (let i = 0; i < valueArray.length; i++) {
1318
- buffer.writeUIntLE(valueArray[i], i, 1);
1319
- }
1320
- break;
1321
- case types_1.UpdateConfigMode.UpdateBorrowLimitsInElevationGroupAgainstThisReserve.discriminator:
1322
- valueArray = value;
1323
- buffer = Buffer.alloc(32 * 8);
1324
- for (let i = 0; i < valueArray.length; i++) {
1325
- buffer.writeBigUint64LE(BigInt(valueArray[i]), i * 8);
1326
- }
1327
- break;
992
+ return 0;
993
+ case types_1.UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator:
994
+ return 0;
1328
995
  default:
1329
- buffer = Buffer.alloc(0);
1330
- }
1331
- return Uint8Array.from([...buffer]);
1332
- }
1333
- function serializeBorrowRateCurve(curve) {
1334
- const buffer = Buffer.alloc(8 * curve.points.length);
1335
- buffer.writeUInt32LE(curve.points.length, 0);
1336
- for (let i = 0; i < curve.points.length; i++) {
1337
- buffer.writeUInt32LE(curve.points[i].utilizationRateBps, 8 * i);
1338
- buffer.writeUInt32LE(curve.points[i].borrowRateBps, 4 + 8 * i);
996
+ return 1;
1339
997
  }
1340
- return buffer;
1341
998
  }
1342
- const modeMatches = (mode) => {
1343
- const validModes = [
1344
- types_1.UpdateConfigMode.UpdateScopePriceFeed.discriminator + 1,
1345
- types_1.UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator + 1,
1346
- types_1.UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator + 1,
1347
- types_1.UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator + 1,
1348
- types_1.UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator + 1,
1349
- types_1.UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator + 1,
1350
- types_1.UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator + 1,
1351
- ];
1352
- return validModes.includes(mode);
1353
- };
1354
- exports.modeMatches = modeMatches;
1355
- // Sort update reserve ixs, to first have the oracle config updates first
1356
- // In order to skip the validation for the scope config updates
1357
- const sortIxsByPriority = (updateReserveIxsArgs) => {
1358
- return updateReserveIxsArgs.sort((a, b) => {
1359
- const isPriorityA = a.mode === 20 || a.mode === 16;
1360
- const isPriorityB = b.mode === 20 || b.mode === 16;
1361
- if (isPriorityA && !isPriorityB) {
1362
- return -1;
1363
- }
1364
- if (isPriorityB && !isPriorityA) {
1365
- return 1;
1366
- }
1367
- return 0;
1368
- });
1369
- };
1370
- exports.sortIxsByPriority = sortIxsByPriority;
1371
999
  //# sourceMappingURL=reserve.js.map