@kamino-finance/klend-sdk 5.11.18 → 5.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/classes/action.d.ts +9 -1
  2. package/dist/classes/action.d.ts.map +1 -1
  3. package/dist/classes/action.js +15 -1
  4. package/dist/classes/action.js.map +1 -1
  5. package/dist/classes/fraction.d.ts +6 -5
  6. package/dist/classes/fraction.d.ts.map +1 -1
  7. package/dist/classes/fraction.js +13 -8
  8. package/dist/classes/fraction.js.map +1 -1
  9. package/dist/classes/manager.d.ts +1 -1
  10. package/dist/classes/manager.d.ts.map +1 -1
  11. package/dist/classes/manager.js +10 -0
  12. package/dist/classes/manager.js.map +1 -1
  13. package/dist/classes/obligation.d.ts +54 -1
  14. package/dist/classes/obligation.d.ts.map +1 -1
  15. package/dist/classes/obligation.js +47 -1
  16. package/dist/classes/obligation.js.map +1 -1
  17. package/dist/classes/obligationOrder.d.ts +206 -0
  18. package/dist/classes/obligationOrder.d.ts.map +1 -0
  19. package/dist/classes/obligationOrder.js +359 -0
  20. package/dist/classes/obligationOrder.js.map +1 -0
  21. package/dist/classes/reserve.d.ts +5 -5
  22. package/dist/classes/reserve.d.ts.map +1 -1
  23. package/dist/classes/reserve.js +80 -264
  24. package/dist/classes/reserve.js.map +1 -1
  25. package/dist/classes/types.d.ts +14 -1
  26. package/dist/classes/types.d.ts.map +1 -1
  27. package/dist/classes/utils.d.ts +9 -0
  28. package/dist/classes/utils.d.ts.map +1 -1
  29. package/dist/classes/utils.js +21 -0
  30. package/dist/classes/utils.js.map +1 -1
  31. package/dist/client_kamino_manager.js +6 -6
  32. package/dist/client_kamino_manager.js.map +1 -1
  33. package/dist/idl.json +244 -23
  34. package/dist/idl_codegen/accounts/LendingMarket.d.ts +12 -6
  35. package/dist/idl_codegen/accounts/LendingMarket.d.ts.map +1 -1
  36. package/dist/idl_codegen/accounts/LendingMarket.js +15 -3
  37. package/dist/idl_codegen/accounts/LendingMarket.js.map +1 -1
  38. package/dist/idl_codegen/accounts/Obligation.d.ts +27 -6
  39. package/dist/idl_codegen/accounts/Obligation.d.ts.map +1 -1
  40. package/dist/idl_codegen/accounts/Obligation.js +26 -9
  41. package/dist/idl_codegen/accounts/Obligation.js.map +1 -1
  42. package/dist/idl_codegen/errors/custom.d.ts +36 -4
  43. package/dist/idl_codegen/errors/custom.d.ts.map +1 -1
  44. package/dist/idl_codegen/errors/custom.js +64 -8
  45. package/dist/idl_codegen/errors/custom.js.map +1 -1
  46. package/dist/idl_codegen/instructions/index.d.ts +2 -0
  47. package/dist/idl_codegen/instructions/index.d.ts.map +1 -1
  48. package/dist/idl_codegen/instructions/index.js +3 -1
  49. package/dist/idl_codegen/instructions/index.js.map +1 -1
  50. package/dist/idl_codegen/instructions/setObligationOrder.d.ts +14 -0
  51. package/dist/idl_codegen/instructions/setObligationOrder.d.ts.map +1 -0
  52. package/dist/idl_codegen/instructions/setObligationOrder.js +62 -0
  53. package/dist/idl_codegen/instructions/setObligationOrder.js.map +1 -0
  54. package/dist/idl_codegen/types/ObligationOrder.d.ts +284 -0
  55. package/dist/idl_codegen/types/ObligationOrder.d.ts.map +1 -0
  56. package/dist/idl_codegen/types/ObligationOrder.js +205 -0
  57. package/dist/idl_codegen/types/ObligationOrder.js.map +1 -0
  58. package/dist/idl_codegen/types/ReserveConfig.d.ts +26 -11
  59. package/dist/idl_codegen/types/ReserveConfig.d.ts.map +1 -1
  60. package/dist/idl_codegen/types/ReserveConfig.js +15 -10
  61. package/dist/idl_codegen/types/ReserveConfig.js.map +1 -1
  62. package/dist/idl_codegen/types/UpdateConfigMode.d.ts +34 -21
  63. package/dist/idl_codegen/types/UpdateConfigMode.d.ts.map +1 -1
  64. package/dist/idl_codegen/types/UpdateConfigMode.js +58 -34
  65. package/dist/idl_codegen/types/UpdateConfigMode.js.map +1 -1
  66. package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts +13 -0
  67. package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts.map +1 -1
  68. package/dist/idl_codegen/types/UpdateLendingMarketMode.js +25 -1
  69. package/dist/idl_codegen/types/UpdateLendingMarketMode.js.map +1 -1
  70. package/dist/idl_codegen/types/index.d.ts +6 -4
  71. package/dist/idl_codegen/types/index.d.ts.map +1 -1
  72. package/dist/idl_codegen/types/index.js +3 -1
  73. package/dist/idl_codegen/types/index.js.map +1 -1
  74. package/dist/idl_codegen/zero_padding/ObligationZP.d.ts +13 -6
  75. package/dist/idl_codegen/zero_padding/ObligationZP.d.ts.map +1 -1
  76. package/dist/idl_codegen/zero_padding/ObligationZP.js +25 -11
  77. package/dist/idl_codegen/zero_padding/ObligationZP.js.map +1 -1
  78. package/dist/utils/instruction.d.ts +1 -1
  79. package/dist/utils/instruction.d.ts.map +1 -1
  80. package/dist/utils/instruction.js +5 -1
  81. package/dist/utils/instruction.js.map +1 -1
  82. package/dist/utils/managerTypes.js +2 -2
  83. package/dist/utils/managerTypes.js.map +1 -1
  84. package/package.json +1 -1
  85. package/src/classes/action.ts +26 -1
  86. package/src/classes/fraction.ts +16 -12
  87. package/src/classes/manager.ts +13 -0
  88. package/src/classes/obligation.ts +77 -1
  89. package/src/classes/obligationOrder.ts +514 -0
  90. package/src/classes/reserve.ts +257 -336
  91. package/src/classes/types.ts +15 -1
  92. package/src/classes/utils.ts +21 -0
  93. package/src/client_kamino_manager.ts +6 -6
  94. package/src/idl.json +244 -23
  95. package/src/idl_codegen/accounts/LendingMarket.ts +23 -7
  96. package/src/idl_codegen/accounts/Obligation.ts +50 -13
  97. package/src/idl_codegen/errors/custom.ts +68 -6
  98. package/src/idl_codegen/instructions/index.ts +5 -0
  99. package/src/idl_codegen/instructions/setObligationOrder.ts +45 -0
  100. package/src/idl_codegen/types/ObligationOrder.ts +347 -0
  101. package/src/idl_codegen/types/ReserveConfig.ts +31 -16
  102. package/src/idl_codegen/types/UpdateConfigMode.ts +69 -39
  103. package/src/idl_codegen/types/UpdateLendingMarketMode.ts +30 -0
  104. package/src/idl_codegen/types/index.ts +15 -6
  105. package/src/idl_codegen/zero_padding/ObligationZP.ts +37 -15
  106. package/src/utils/instruction.ts +5 -1
  107. package/src/utils/managerTypes.ts +2 -2
@@ -0,0 +1,359 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.KaminoObligationOrder = exports.DeleverageAllDebt = exports.DeleverageDebtAmount = exports.DebtCollPriceRatioBelow = exports.DebtCollPriceRatioAbove = exports.UserLtvBelow = exports.UserLtvAbove = void 0;
7
+ /* eslint-disable max-classes-per-file */
8
+ const fraction_1 = require("./fraction");
9
+ const types_1 = require("../idl_codegen/types");
10
+ const utils_1 = require("./utils");
11
+ const decimal_js_1 = __importDefault(require("decimal.js"));
12
+ const bn_js_1 = __importDefault(require("bn.js"));
13
+ const utils_2 = require("../utils");
14
+ // All condition types:
15
+ /**
16
+ * A condition met when obligation's overall "User LTV" is strictly higher than the given threshold.
17
+ */
18
+ class UserLtvAbove {
19
+ minUserLtvExclusive;
20
+ constructor(minUserLtvExclusive) {
21
+ this.minUserLtvExclusive = new decimal_js_1.default(minUserLtvExclusive);
22
+ }
23
+ threshold() {
24
+ return this.minUserLtvExclusive;
25
+ }
26
+ evaluate(obligation) {
27
+ // Note: below we deliberately use the LTV-related methods of `KaminoObligation` (instead of the precomputed fields
28
+ // of the `ObligationStats`), since we care about using the same LTV computation as the KLend smart contract.
29
+ // Please see their docs for details.
30
+ return evaluateStopLoss(obligation.loanToValue(), this.minUserLtvExclusive, obligation.liquidationLtv());
31
+ }
32
+ }
33
+ exports.UserLtvAbove = UserLtvAbove;
34
+ /**
35
+ * A condition met when obligation's overall "User LTV" is strictly lower than the given threshold.
36
+ */
37
+ class UserLtvBelow {
38
+ maxUserLtvExclusive;
39
+ constructor(maxUserLtvExclusive) {
40
+ this.maxUserLtvExclusive = new decimal_js_1.default(maxUserLtvExclusive);
41
+ }
42
+ threshold() {
43
+ return this.maxUserLtvExclusive;
44
+ }
45
+ evaluate(obligation) {
46
+ // Note: below we deliberately use the `KaminoObligation.loanToValue()` method (instead of the precomputed field
47
+ // `ObligationStats.loanToValue`), since we care about using the same LTV computation as the KLend smart contract.
48
+ // Please see the method's docs for details.
49
+ return evaluateTakeProfit(obligation.loanToValue(), this.maxUserLtvExclusive);
50
+ }
51
+ }
52
+ exports.UserLtvBelow = UserLtvBelow;
53
+ /**
54
+ * A condition met when the obligation's collateral token price (expressed in the debt token) is strictly higher than
55
+ * the given threshold.
56
+ *
57
+ * May only be applied to single-collateral, single-debt obligations.
58
+ */
59
+ class DebtCollPriceRatioAbove {
60
+ minDebtCollPriceRatioExclusive;
61
+ constructor(minDebtCollPriceRatioExclusive) {
62
+ this.minDebtCollPriceRatioExclusive = new decimal_js_1.default(minDebtCollPriceRatioExclusive);
63
+ }
64
+ threshold() {
65
+ return this.minDebtCollPriceRatioExclusive;
66
+ }
67
+ evaluate(obligation) {
68
+ const priceRatio = calculateDebtCollPriceRatio(obligation);
69
+ return evaluateStopLoss(priceRatio, this.minDebtCollPriceRatioExclusive,
70
+ // For single-debt-single-coll obligations, the price ratio is directly proportional
71
+ // to LTV - so we can calculate the "liquidation price ratio" simply by scaling the
72
+ // current value by the ratio of unhealthy/current LTV:
73
+ priceRatio.mul(obligation.refreshedStats.liquidationLtv).div(obligation.refreshedStats.loanToValue));
74
+ }
75
+ }
76
+ exports.DebtCollPriceRatioAbove = DebtCollPriceRatioAbove;
77
+ /**
78
+ * A condition met when the obligation's collateral token price (expressed in the debt token) is strictly higher than
79
+ * the given threshold.
80
+ *
81
+ * May only be applied to single-collateral, single-debt obligations.
82
+ */
83
+ class DebtCollPriceRatioBelow {
84
+ maxDebtCollPriceRatioExclusive;
85
+ constructor(maxDebtCollPriceRatioExclusive) {
86
+ this.maxDebtCollPriceRatioExclusive = new decimal_js_1.default(maxDebtCollPriceRatioExclusive);
87
+ }
88
+ threshold() {
89
+ return this.maxDebtCollPriceRatioExclusive;
90
+ }
91
+ evaluate(obligation) {
92
+ return evaluateTakeProfit(calculateDebtCollPriceRatio(obligation), this.maxDebtCollPriceRatioExclusive);
93
+ }
94
+ }
95
+ exports.DebtCollPriceRatioBelow = DebtCollPriceRatioBelow;
96
+ // All opportunity types:
97
+ /**
98
+ * An opportunity for repaying the given amount of the obligation's debt token.
99
+ *
100
+ * May only be applied to single-debt obligations.
101
+ */
102
+ class DeleverageDebtAmount {
103
+ amount;
104
+ constructor(amount) {
105
+ this.amount = new decimal_js_1.default(amount);
106
+ }
107
+ parameter() {
108
+ return this.amount;
109
+ }
110
+ getMaxRepay(borrows) {
111
+ const singleBorrow = (0, utils_1.getSingleElement)(borrows, 'Opportunity type requires a single borrow');
112
+ return {
113
+ mint: singleBorrow.mintAddress,
114
+ amount: decimal_js_1.default.min(singleBorrow.amount, this.amount),
115
+ };
116
+ }
117
+ }
118
+ exports.DeleverageDebtAmount = DeleverageDebtAmount;
119
+ /**
120
+ * An opportunity for repaying all debt(s) of an obligation.
121
+ */
122
+ class DeleverageAllDebt {
123
+ /**
124
+ * The only legal value for the {@link parameter()} of this opportunity type.
125
+ */
126
+ static FRACTION_MAX = new fraction_1.Fraction(fraction_1.Fraction.MAX_F_BN).toDecimal();
127
+ constructor(fixed_parameter) {
128
+ if (fixed_parameter !== undefined && !new decimal_js_1.default(fixed_parameter).eq(DeleverageAllDebt.FRACTION_MAX)) {
129
+ throw new Error(`invalid DeleverageAllDebt parameter: ${fixed_parameter} (if given, must be FRACTION_MAX = ${DeleverageAllDebt.FRACTION_MAX})`);
130
+ }
131
+ }
132
+ parameter() {
133
+ return DeleverageAllDebt.FRACTION_MAX;
134
+ }
135
+ getMaxRepay(borrows) {
136
+ if (borrows.length === 0) {
137
+ throw new Error(`Opportunity type not valid on obligation with no borrows`);
138
+ }
139
+ const highestValueBorrow = borrows
140
+ .sort((left, right) => left.marketValueRefreshed.comparedTo(right.marketValueRefreshed))
141
+ .at(-1);
142
+ return {
143
+ mint: highestValueBorrow.mintAddress,
144
+ amount: highestValueBorrow.amount,
145
+ };
146
+ }
147
+ }
148
+ exports.DeleverageAllDebt = DeleverageAllDebt;
149
+ // Internal type ID mappings:
150
+ const CONDITION_TO_TYPE_ID = new Map([
151
+ // Note: the special value of 0 (Never) is represented in the SDK by `KaminoObligationOrder === null`.
152
+ [UserLtvAbove, 1],
153
+ [UserLtvBelow, 2],
154
+ [DebtCollPriceRatioAbove, 3],
155
+ [DebtCollPriceRatioBelow, 4],
156
+ ]);
157
+ const OPPORTUNITY_TO_TYPE_ID = new Map([
158
+ [DeleverageDebtAmount, 0],
159
+ [DeleverageAllDebt, 1],
160
+ ]);
161
+ const TYPE_ID_TO_CONDITION = new Map([...CONDITION_TO_TYPE_ID].map(([type, id]) => [id, type]));
162
+ const TYPE_ID_TO_OPPORTUNITY = new Map([...OPPORTUNITY_TO_TYPE_ID].map(([type, id]) => [id, type]));
163
+ // Core types:
164
+ /**
165
+ * A business wrapper around the on-chain {@link ObligationOrder} account data.
166
+ */
167
+ class KaminoObligationOrder {
168
+ /**
169
+ * An on-chain data representing a `null` order.
170
+ */
171
+ static NULL_STATE = new types_1.ObligationOrder({
172
+ conditionType: 0,
173
+ conditionThresholdSf: new bn_js_1.default(0),
174
+ opportunityType: 0,
175
+ opportunityParameterSf: new bn_js_1.default(0),
176
+ minExecutionBonusBps: 0,
177
+ maxExecutionBonusBps: 0,
178
+ padding1: Array(10).fill(0),
179
+ padding2: Array(5).fill(new bn_js_1.default(0)),
180
+ });
181
+ /**
182
+ * The order's condition.
183
+ */
184
+ condition;
185
+ /**
186
+ * The order's opportunity.
187
+ */
188
+ opportunity;
189
+ /**
190
+ * The minimum bonus rate (e.g. `0.01` meaning "1%") offered to a liquidator executing this order when its condition
191
+ * threshold has been barely crossed.
192
+ */
193
+ minExecutionBonusRate;
194
+ /**
195
+ * The maximum bonus rate (e.g. `0.04` meaning "4%") offered to a liquidator executing this order when its condition
196
+ * threshold has already been exceeded by a very large margin (to be specific: maximum possible margin - e.g. for
197
+ * LTV-based stop-loss order, that would be when the obligation's LTV is approaching its liquidation LTV).
198
+ */
199
+ maxExecutionBonusRate;
200
+ /**
201
+ * Direct constructor.
202
+ *
203
+ * Please see {@link fromState()} if you are constructing an instance representing existing on-chain data.
204
+ */
205
+ constructor(condition, opportunity, minExecutionBonusRate, maxExecutionBonusRate = minExecutionBonusRate) {
206
+ this.condition = condition;
207
+ this.opportunity = opportunity;
208
+ this.minExecutionBonusRate = minExecutionBonusRate;
209
+ this.maxExecutionBonusRate = maxExecutionBonusRate;
210
+ }
211
+ /**
212
+ * Returns the highest-valued {@link AvailableOrderExecution} currently offered by this order.
213
+ *
214
+ * May return `undefined` when the order's condition is not met.
215
+ */
216
+ findMaxAvailableExecution(obligation) {
217
+ const conditionHit = this.condition.evaluate(obligation);
218
+ if (conditionHit === null) {
219
+ return undefined; // condition not met - cannot execute
220
+ }
221
+ const maxRepay = this.opportunity.getMaxRepay(obligation.getBorrows());
222
+ const repayBorrow = obligation.getBorrowByMint(maxRepay.mint);
223
+ const maxRepayValue = tokenAmountToValue(maxRepay, repayBorrow);
224
+ const executionBonusRate = this.calculateExecutionBonusRate(conditionHit, obligation);
225
+ const executionBonusFactor = new decimal_js_1.default(1).add(executionBonusRate);
226
+ const maxWithdrawValue = maxRepayValue.mul(executionBonusFactor);
227
+ const [actualWithdrawValue, withdrawDeposit] = obligation
228
+ .getDeposits()
229
+ .map((deposit) => {
230
+ const availableWithdrawValue = decimal_js_1.default.min(deposit.marketValueRefreshed, maxWithdrawValue);
231
+ return [availableWithdrawValue, deposit];
232
+ })
233
+ .sort(([leftValue, leftDeposit], [rightValue, rightDeposit]) => {
234
+ const valueComparison = leftValue.comparedTo(rightValue);
235
+ if (valueComparison !== 0) {
236
+ return valueComparison;
237
+ }
238
+ // Just for deterministic selection in case of multiple equally-good deposits: pick the one with lower mint pubkey (mostly for test stability purposes)
239
+ return leftDeposit.mintAddress.toBase58().localeCompare(rightDeposit.mintAddress.toBase58());
240
+ })
241
+ .at(-1);
242
+ const actualRepayValue = actualWithdrawValue.div(executionBonusFactor);
243
+ return {
244
+ repay: valueToTokenAmount(actualRepayValue, repayBorrow),
245
+ withdraw: valueToTokenAmount(actualWithdrawValue, withdrawDeposit),
246
+ bonusRate: executionBonusRate,
247
+ };
248
+ }
249
+ /**
250
+ * Constructs an instance based on the given on-chain data.
251
+ *
252
+ * Returns `null` if the input represents just an empty slot in the orders' array.
253
+ */
254
+ static fromState(state) {
255
+ if (state.conditionType === KaminoObligationOrder.NULL_STATE.conditionType) {
256
+ return null; // In practice an entire null order is zeroed, but technically the "condition == never" is enough to consider the order "not active"
257
+ }
258
+ const conditionConstructor = TYPE_ID_TO_CONDITION.get(state.conditionType) ?? (0, utils_1.orThrow)(`Unknown condition type ${state.conditionType}`);
259
+ const condition = new conditionConstructor(new fraction_1.Fraction(state.conditionThresholdSf).toDecimal());
260
+ const opportunityConstructor = TYPE_ID_TO_OPPORTUNITY.get(state.opportunityType) ?? (0, utils_1.orThrow)(`Unknown opportunity type ${state.opportunityType}`);
261
+ const opportunity = new opportunityConstructor(new fraction_1.Fraction(state.opportunityParameterSf).toDecimal());
262
+ const minExecutionBonusRate = fraction_1.Fraction.fromBps(state.minExecutionBonusBps).toDecimal();
263
+ const maxExecutionBonusRate = fraction_1.Fraction.fromBps(state.maxExecutionBonusBps).toDecimal();
264
+ return new KaminoObligationOrder(condition, opportunity, minExecutionBonusRate, maxExecutionBonusRate);
265
+ }
266
+ /**
267
+ * Returns the on-chain state represented by this instance.
268
+ *
269
+ * See {@link NULL_STATE} for the state of a `null` order.
270
+ */
271
+ toState() {
272
+ return new types_1.ObligationOrder({
273
+ ...KaminoObligationOrder.NULL_STATE.toEncodable(),
274
+ conditionType: CONDITION_TO_TYPE_ID.get(Object.getPrototypeOf(this.condition).constructor) ??
275
+ (0, utils_1.orThrow)(`Unknown condition ${this.condition.constructor}`),
276
+ conditionThresholdSf: fraction_1.Fraction.fromDecimal(this.condition.threshold()).getValue(),
277
+ opportunityType: OPPORTUNITY_TO_TYPE_ID.get(Object.getPrototypeOf(this.opportunity).constructor) ??
278
+ (0, utils_1.orThrow)(`Unknown opportunity ${this.opportunity.constructor}`),
279
+ opportunityParameterSf: fraction_1.Fraction.fromDecimal(this.opportunity.parameter()).getValue(),
280
+ minExecutionBonusBps: (0, utils_1.roundNearest)(this.minExecutionBonusRate.mul(utils_2.ONE_HUNDRED_PCT_IN_BPS)).toNumber(),
281
+ maxExecutionBonusBps: (0, utils_1.roundNearest)(this.maxExecutionBonusRate.mul(utils_2.ONE_HUNDRED_PCT_IN_BPS)).toNumber(),
282
+ });
283
+ }
284
+ /**
285
+ * Calculates the given order's actual execution bonus rate.
286
+ *
287
+ * The min-max bonus range is configured by the user on a per-order basis, and the actual value is interpolated based
288
+ * on the given obligation's state at the moment of order execution.
289
+ * In short: the minimum bonus applies if the order is executed precisely at the point when the condition is met.
290
+ * Then, as the distance from condition's threshold grows, the bonus approaches the configured maximum.
291
+ *
292
+ * On top of that, similar to regular liquidation, the bonus cannot exceed the ceiled limit of `1.0 - user_no_bf_ltv`
293
+ * (which ensures that order execution improves LTV).
294
+ */
295
+ calculateExecutionBonusRate(conditionHit, obligation) {
296
+ const interpolatedBonusRate = interpolateBonusRate(conditionHit.normalizedDistanceFromThreshold, this.minExecutionBonusRate, this.maxExecutionBonusRate);
297
+ // Note: instead of the existing `obligation.noBfLoanToValue()`, here we use a formula consistent with the
298
+ // `obligation.refreshedStats.loanToValue` (that we use in other parts of obligation orders' SDK logic):
299
+ const userNoBfLtv = obligation.refreshedStats.userTotalBorrow.div(obligation.refreshedStats.userTotalCollateralDeposit);
300
+ // In order to ensure that LTV improves on order execution, we apply the same heuristic formula as for the regular
301
+ // liquidations:
302
+ const diffToBadDebt = new decimal_js_1.default(1).sub(userNoBfLtv);
303
+ return decimal_js_1.default.min(interpolatedBonusRate, diffToBadDebt);
304
+ }
305
+ }
306
+ exports.KaminoObligationOrder = KaminoObligationOrder;
307
+ // Internal calculation functions:
308
+ function tokenAmountToValue(tokenAmount, position) {
309
+ if (tokenAmount.mint !== position.mintAddress) {
310
+ throw new Error(`Value of token amount ${tokenAmount} cannot be computed using data from ${position}`);
311
+ }
312
+ return tokenAmount.amount.mul(position.marketValueRefreshed).div(position.amount);
313
+ }
314
+ function valueToTokenAmount(value, position) {
315
+ const fractionalAmount = value.mul(position.amount).div(position.marketValueRefreshed);
316
+ return {
317
+ amount: (0, utils_1.roundNearest)(fractionalAmount),
318
+ mint: position.mintAddress,
319
+ };
320
+ }
321
+ function evaluateStopLoss(current_value, conditionThreshold, liquidationThreshold) {
322
+ if (current_value.lte(conditionThreshold)) {
323
+ return null; // SL not hit
324
+ }
325
+ let normalizedDistanceFromThreshold;
326
+ if (conditionThreshold.gt(liquidationThreshold)) {
327
+ // A theoretically-impossible case (the user may of course set his order's condition
328
+ // threshold that high, but then the current value is above liquidation threshold, so
329
+ // liquidation logic should kick in and never reach this function). Anyway, let's
330
+ // interpret it as maximum distance from threshold:
331
+ normalizedDistanceFromThreshold = new decimal_js_1.default(1);
332
+ }
333
+ else {
334
+ // By now we know they are both > 0:
335
+ const currentDistance = current_value.sub(conditionThreshold);
336
+ const maximumDistance = liquidationThreshold.sub(conditionThreshold);
337
+ normalizedDistanceFromThreshold = currentDistance.div(maximumDistance);
338
+ }
339
+ return { normalizedDistanceFromThreshold };
340
+ }
341
+ function evaluateTakeProfit(currentValue, conditionThreshold) {
342
+ if (currentValue.gte(conditionThreshold)) {
343
+ return null; // TP not hit
344
+ }
345
+ const distanceTowards0 = conditionThreshold.sub(currentValue); // by now we know it is > 0
346
+ return { normalizedDistanceFromThreshold: distanceTowards0.div(conditionThreshold) };
347
+ }
348
+ function calculateDebtCollPriceRatio(obligation) {
349
+ const singleBorrow = (0, utils_1.getSingleElement)(obligation.getBorrows(), 'Condition type requires a single borrow');
350
+ const singleDeposit = (0, utils_1.getSingleElement)(obligation.getDeposits(), 'Condition type requires a single deposit');
351
+ return calculateTokenPrice(singleBorrow).div(calculateTokenPrice(singleDeposit));
352
+ }
353
+ function calculateTokenPrice(position) {
354
+ return position.marketValueRefreshed.mul(position.mintFactor).div(position.amount);
355
+ }
356
+ function interpolateBonusRate(normalizedDistanceFromThreshold, minBonusRate, maxBonusRate) {
357
+ return minBonusRate.add(normalizedDistanceFromThreshold.mul(maxBonusRate.sub(minBonusRate)));
358
+ }
359
+ //# sourceMappingURL=obligationOrder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obligationOrder.js","sourceRoot":"","sources":["../../src/classes/obligationOrder.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import Decimal from 'decimal.js';
3
3
  import { MarketWithAddress, TokenOracleData } from '../utils';
4
4
  import { FeeCalculation, Fees, ReserveDataType, ReserveRewardYield } from './shared';
5
5
  import { Reserve } from '../idl_codegen/accounts';
6
- import { BorrowRateCurve, ReserveConfig } from '../idl_codegen/types';
6
+ import { BorrowRateCurve, ReserveConfig, UpdateConfigModeKind } from '../idl_codegen/types';
7
7
  import { ActionType } from './action';
8
8
  import { BorrowCapsAndCounters, KaminoMarket } from './market';
9
9
  import { KaminoPrices } from '@kamino-finance/kliquidity-sdk';
@@ -229,21 +229,21 @@ export declare class KaminoReserve {
229
229
  }
230
230
  export declare function createReserveIxs(connection: Connection, owner: PublicKey, ownerLiquiditySource: PublicKey, lendingMarket: PublicKey, liquidityMint: PublicKey, reserveAddress: PublicKey, programId: PublicKey): Promise<TransactionInstruction[]>;
231
231
  export declare function updateReserveConfigIx(marketWithAddress: MarketWithAddress, reserveAddress: PublicKey, modeDiscriminator: number, value: Uint8Array, programId: PublicKey, skipValidation?: boolean): TransactionInstruction;
232
- declare const EXCLUDED_RESERVE_CONFIG_KEYS: readonly ["reserved1", "reserved2", "reserved3"];
232
+ declare const EXCLUDED_RESERVE_CONFIG_KEYS: readonly ["reserved1", "reserved2"];
233
233
  export type ExcludedReserveConfigKey = (typeof EXCLUDED_RESERVE_CONFIG_KEYS)[number];
234
234
  export declare function updateEntireReserveConfigIx(marketWithAddress: MarketWithAddress, reserveAddress: PublicKey, reserveConfig: ReserveConfig, programId: PublicKey): TransactionInstruction;
235
235
  export declare function parseForChangesReserveConfigAndGetIxs(marketWithAddress: MarketWithAddress, reserve: Reserve | undefined, reserveAddress: PublicKey, reserveConfig: ReserveConfig, programId: PublicKey): TransactionInstruction[];
236
- export declare function updateReserveConfigEncodedValue(discriminator: number, value: number | number[] | bigint | BorrowRateCurve | PublicKey): Uint8Array;
236
+ export declare function updateReserveConfigEncodedValue(discriminator: UpdateConfigModeKind['discriminator'], value: number | number[] | bigint | BorrowRateCurve | PublicKey): Uint8Array;
237
237
  export declare function serializeBorrowRateCurve(curve: BorrowRateCurve): Buffer;
238
238
  export type ReserveWithAddress = {
239
239
  address: PublicKey;
240
240
  state: Reserve;
241
241
  };
242
- export type UpdateReserveIxnsArgs = {
242
+ export type UpdateReserveIxnsArg = {
243
243
  mode: number;
244
244
  value: Uint8Array;
245
245
  };
246
246
  export declare const modeMatches: (mode: number) => boolean;
247
- export declare const sortIxnsByPriority: (updateReserveIxnsArgs: UpdateReserveIxnsArgs[]) => UpdateReserveIxnsArgs[];
247
+ export declare const sortIxnsByPriority: (updateReserveIxnsArgs: UpdateReserveIxnsArg[]) => UpdateReserveIxnsArg[];
248
248
  export {};
249
249
  //# sourceMappingURL=reserve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reserve.d.ts","sourceRoot":"","sources":["../../src/classes/reserve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reserve.d.ts","sourceRoot":"","sources":["../../src/classes/reserve.ts"],"names":[],"mappings":"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"}