@kamino-finance/klend-sdk 5.2.14 → 5.3.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.
- package/dist/classes/action.d.ts.map +1 -1
- package/dist/classes/action.js +1 -2
- package/dist/classes/action.js.map +1 -1
- package/dist/classes/manager.js +22 -5
- package/dist/classes/manager.js.map +1 -1
- package/dist/classes/reserve.js +14 -14
- package/dist/classes/reserve.js.map +1 -1
- package/dist/classes/shared.d.ts +2 -2
- package/dist/classes/shared.d.ts.map +1 -1
- package/dist/client_kamino_manager.js +6 -2
- package/dist/client_kamino_manager.js.map +1 -1
- package/dist/idl.json +310 -48
- package/dist/idl_codegen/accounts/LendingMarket.d.ts +48 -3
- package/dist/idl_codegen/accounts/LendingMarket.d.ts.map +1 -1
- package/dist/idl_codegen/accounts/LendingMarket.js +35 -8
- package/dist/idl_codegen/accounts/LendingMarket.js.map +1 -1
- package/dist/idl_codegen/accounts/Obligation.d.ts +30 -0
- package/dist/idl_codegen/accounts/Obligation.d.ts.map +1 -1
- package/dist/idl_codegen/accounts/Obligation.js +23 -2
- package/dist/idl_codegen/accounts/Obligation.js.map +1 -1
- package/dist/idl_codegen/accounts/Reserve.js +1 -1
- package/dist/idl_codegen/errors/custom.d.ts +33 -1
- package/dist/idl_codegen/errors/custom.d.ts.map +1 -1
- package/dist/idl_codegen/errors/custom.js +57 -1
- package/dist/idl_codegen/errors/custom.js.map +1 -1
- package/dist/idl_codegen/instructions/index.d.ts +7 -3
- package/dist/idl_codegen/instructions/index.d.ts.map +1 -1
- package/dist/idl_codegen/instructions/index.js +7 -3
- package/dist/idl_codegen/instructions/index.js.map +1 -1
- package/dist/idl_codegen/instructions/initReferrerTokenState.d.ts +2 -5
- package/dist/idl_codegen/instructions/initReferrerTokenState.d.ts.map +1 -1
- package/dist/idl_codegen/instructions/initReferrerTokenState.js +3 -32
- package/dist/idl_codegen/instructions/initReferrerTokenState.js.map +1 -1
- package/dist/idl_codegen/instructions/markObligationForDeleveraging.d.ts +12 -0
- package/dist/idl_codegen/instructions/markObligationForDeleveraging.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/markObligationForDeleveraging.js +47 -0
- package/dist/idl_codegen/instructions/markObligationForDeleveraging.js.map +1 -0
- package/dist/idl_codegen/instructions/repayAndWithdrawAndRedeem.d.ts +38 -0
- package/dist/idl_codegen/instructions/repayAndWithdrawAndRedeem.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/repayAndWithdrawAndRedeem.js +159 -0
- package/dist/idl_codegen/instructions/repayAndWithdrawAndRedeem.js.map +1 -0
- package/dist/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.js +1 -1
- package/dist/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.js.map +1 -1
- package/dist/idl_codegen/types/ReserveConfig.d.ts +78 -20
- package/dist/idl_codegen/types/ReserveConfig.d.ts.map +1 -1
- package/dist/idl_codegen/types/ReserveConfig.js +45 -14
- package/dist/idl_codegen/types/ReserveConfig.js.map +1 -1
- package/dist/idl_codegen/types/ReserveLiquidity.d.ts +16 -16
- package/dist/idl_codegen/types/ReserveLiquidity.d.ts.map +1 -1
- package/dist/idl_codegen/types/ReserveLiquidity.js +16 -16
- package/dist/idl_codegen/types/ReserveLiquidity.js.map +1 -1
- package/dist/idl_codegen/types/UpdateConfigMode.d.ts +40 -14
- package/dist/idl_codegen/types/UpdateConfigMode.d.ts.map +1 -1
- package/dist/idl_codegen/types/UpdateConfigMode.js +71 -23
- package/dist/idl_codegen/types/UpdateConfigMode.js.map +1 -1
- package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts +37 -11
- package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts.map +1 -1
- package/dist/idl_codegen/types/UpdateLendingMarketMode.js +64 -16
- package/dist/idl_codegen/types/UpdateLendingMarketMode.js.map +1 -1
- package/dist/idl_codegen/types/index.d.ts +4 -4
- package/dist/idl_codegen/types/index.d.ts.map +1 -1
- package/dist/idl_codegen/types/index.js.map +1 -1
- package/dist/idl_codegen/zero_padding/ObligationZP.d.ts +4 -0
- package/dist/idl_codegen/zero_padding/ObligationZP.d.ts.map +1 -1
- package/dist/idl_codegen/zero_padding/ObligationZP.js +10 -0
- package/dist/idl_codegen/zero_padding/ObligationZP.js.map +1 -1
- package/dist/pyth/accounts/PriceUpdateV2.d.ts +30 -0
- package/dist/pyth/accounts/PriceUpdateV2.d.ts.map +1 -0
- package/dist/pyth/accounts/PriceUpdateV2.js +104 -0
- package/dist/pyth/accounts/PriceUpdateV2.js.map +1 -0
- package/dist/pyth/accounts/index.d.ts +3 -0
- package/dist/pyth/accounts/index.d.ts.map +1 -0
- package/dist/pyth/accounts/index.js +6 -0
- package/dist/pyth/accounts/index.js.map +1 -0
- package/dist/pyth/types/PriceFeedMessage.d.ts +58 -0
- package/dist/pyth/types/PriceFeedMessage.d.ts.map +1 -0
- package/dist/pyth/types/PriceFeedMessage.js +118 -0
- package/dist/pyth/types/PriceFeedMessage.js.map +1 -0
- package/dist/pyth/types/VerificationLevel.d.ts +45 -0
- package/dist/pyth/types/VerificationLevel.d.ts.map +1 -0
- package/dist/pyth/types/VerificationLevel.js +105 -0
- package/dist/pyth/types/VerificationLevel.js.map +1 -0
- package/dist/pyth/types/index.d.ts +7 -0
- package/dist/pyth/types/index.d.ts.map +1 -0
- package/dist/pyth/types/index.js +31 -0
- package/dist/pyth/types/index.js.map +1 -0
- package/dist/referrals/instructions.d.ts.map +1 -1
- package/dist/referrals/instructions.js +1 -2
- package/dist/referrals/instructions.js.map +1 -1
- package/dist/utils/managerTypes.d.ts.map +1 -1
- package/dist/utils/managerTypes.js +5 -4
- package/dist/utils/managerTypes.js.map +1 -1
- package/dist/utils/oracle.d.ts.map +1 -1
- package/dist/utils/oracle.js +9 -14
- package/dist/utils/oracle.js.map +1 -1
- package/package.json +3 -4
- package/src/classes/action.ts +1 -3
- package/src/classes/manager.ts +29 -6
- package/src/classes/reserve.ts +16 -16
- package/src/classes/shared.ts +2 -2
- package/src/client_kamino_manager.ts +6 -2
- package/src/idl_codegen/accounts/LendingMarket.ts +76 -13
- package/src/idl_codegen/accounts/Obligation.ts +47 -2
- package/src/idl_codegen/accounts/Reserve.ts +1 -1
- package/src/idl_codegen/errors/custom.ts +56 -0
- package/src/idl_codegen/instructions/index.ts +13 -6
- package/src/idl_codegen/instructions/initReferrerTokenState.ts +3 -15
- package/src/idl_codegen/instructions/markObligationForDeleveraging.ts +40 -0
- package/src/idl_codegen/instructions/repayAndWithdrawAndRedeem.ts +177 -0
- package/src/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.ts +1 -1
- package/src/idl_codegen/programId.ts +1 -1
- package/src/idl_codegen/types/ReserveConfig.ts +100 -28
- package/src/idl_codegen/types/ReserveLiquidity.ts +25 -24
- package/src/idl_codegen/types/UpdateConfigMode.ts +86 -26
- package/src/idl_codegen/types/UpdateLendingMarketMode.ts +77 -17
- package/src/idl_codegen/types/index.ts +14 -6
- package/src/idl_codegen/zero_padding/ObligationZP.ts +10 -0
- package/src/pyth/accounts/PriceUpdateV2.ts +110 -0
- package/src/pyth/accounts/index.ts +2 -0
- package/src/pyth/types/PriceFeedMessage.ts +120 -0
- package/src/pyth/types/VerificationLevel.ts +98 -0
- package/src/pyth/types/index.ts +9 -0
- package/src/referrals/instructions.ts +1 -3
- package/src/utils/managerTypes.ts +5 -5
- package/src/utils/oracle.ts +9 -15
|
@@ -1284,12 +1284,14 @@ function parseReserveConfigFromFile(farmConfigFromFile: any): ReserveConfig {
|
|
|
1284
1284
|
deleveragingMarginCallPeriodSecs: new BN(farmConfigFromFile.deleveragingMarginCallPeriodSecs),
|
|
1285
1285
|
borrowFactorPct: new BN(farmConfigFromFile.borrowFactorPct),
|
|
1286
1286
|
elevationGroups: farmConfigFromFile.elevationGroups,
|
|
1287
|
-
|
|
1287
|
+
deleveragingThresholdSecsPerBps: new BN(farmConfigFromFile.deleveragingThresholdSecsPerBps),
|
|
1288
1288
|
disableUsageAsCollOutsideEmode: farmConfigFromFile.disableUsageAsCollOutsideEmode,
|
|
1289
1289
|
utilizationLimitBlockBorrowingAbove: farmConfigFromFile.utilizationLimitBlockBorrowingAbove,
|
|
1290
1290
|
hostFixedInterestRateBps: farmConfigFromFile.hostFixedInterestRateBps,
|
|
1291
|
+
autodeleverageEnabled: farmConfigFromFile.autodeleverageEnabled,
|
|
1291
1292
|
borrowLimitOutsideElevationGroup: new BN(farmConfigFromFile.borrowLimitOutsideElevationGroup),
|
|
1292
1293
|
borrowLimitAgainstThisCollateralInElevationGroup: parseReserveBorrowLimitAgainstCollInEmode(farmConfigFromFile),
|
|
1294
|
+
deleveragingBonusIncreaseBpsPerDay: new BN(farmConfigFromFile.deleveragingBonusIncreaseBpsPerDay),
|
|
1293
1295
|
reserved1: Array(2).fill(0),
|
|
1294
1296
|
reserved2: Array(2).fill(0),
|
|
1295
1297
|
reserved3: Array(8).fill(0),
|
|
@@ -1402,13 +1404,15 @@ function parseReserveConfigToFile(reserveConfig: ReserveConfig) {
|
|
|
1402
1404
|
deleveragingMarginCallPeriodSecs: reserveConfig.deleveragingMarginCallPeriodSecs.toString(),
|
|
1403
1405
|
borrowFactorPct: reserveConfig.borrowFactorPct.toString(),
|
|
1404
1406
|
elevationGroups: reserveConfig.elevationGroups,
|
|
1405
|
-
|
|
1407
|
+
deleveragingThresholdSecsPerBps: reserveConfig.deleveragingThresholdSecsPerBps.toString(),
|
|
1406
1408
|
disableUsageAsCollOutsideEmode: reserveConfig.disableUsageAsCollOutsideEmode,
|
|
1407
1409
|
utilizationLimitBlockBorrowingAbove: reserveConfig.utilizationLimitBlockBorrowingAbove,
|
|
1408
1410
|
hostFixedInterestRateBps: reserveConfig.hostFixedInterestRateBps,
|
|
1411
|
+
autodeleverageEnabled: reserveConfig.autodeleverageEnabled,
|
|
1409
1412
|
borrowLimitOutsideElevationGroup: reserveConfig.borrowLimitOutsideElevationGroup.toString(),
|
|
1410
1413
|
borrowLimitAgainstThisCollateralInElevationGroup:
|
|
1411
1414
|
reserveConfig.borrowLimitAgainstThisCollateralInElevationGroup.map((entry) => entry.toString()),
|
|
1415
|
+
deleveragingBonusIncreaseBpsPerDay: reserveConfig.deleveragingBonusIncreaseBpsPerDay.toString(),
|
|
1412
1416
|
reserved1: Array(2).fill(0),
|
|
1413
1417
|
reserved2: Array(2).fill(0),
|
|
1414
1418
|
reserved3: Array(8).fill(0),
|
|
@@ -21,6 +21,13 @@ export interface LendingMarketFields {
|
|
|
21
21
|
/** Referral fee for the lending market, as bps out of the total protocol fee */
|
|
22
22
|
referralFeeBps: number
|
|
23
23
|
emergencyMode: number
|
|
24
|
+
/**
|
|
25
|
+
* Whether the obligations on this market should be subject to auto-deleveraging after deposit
|
|
26
|
+
* or borrow limit is crossed.
|
|
27
|
+
* Besides this flag, the particular reserve's flag also needs to be enabled (logical `AND`).
|
|
28
|
+
* **NOTE:** the manual "target LTV" deleveraging (enabled by the risk council for individual
|
|
29
|
+
* obligations) is NOT affected by this flag.
|
|
30
|
+
*/
|
|
24
31
|
autodeleverageEnabled: number
|
|
25
32
|
borrowDisabled: number
|
|
26
33
|
/**
|
|
@@ -50,9 +57,17 @@ export interface LendingMarketFields {
|
|
|
50
57
|
elevationGroupPadding: Array<BN>
|
|
51
58
|
/** Min net value accepted to be found in a position after any lending action in an obligation (scaled by quote currency decimals) */
|
|
52
59
|
minNetValueInObligationSf: BN
|
|
53
|
-
|
|
60
|
+
/** Minimum value to enforce smallest ltv priority checks on the collateral reserves on liquidation */
|
|
61
|
+
minValueSkipLiquidationLtvChecks: BN
|
|
54
62
|
/** Market name, zero-padded. */
|
|
55
63
|
name: Array<number>
|
|
64
|
+
/** Minimum value to enforce highest borrow factor priority checks on the debt reserves on liquidation */
|
|
65
|
+
minValueSkipLiquidationBfChecks: BN
|
|
66
|
+
/**
|
|
67
|
+
* Time (in seconds) that must pass before liquidation is allowed on an obligation that has
|
|
68
|
+
* been individually marked for auto-deleveraging (by the risk council).
|
|
69
|
+
*/
|
|
70
|
+
individualAutodeleverageMarginCallPeriodSecs: BN
|
|
56
71
|
padding1: Array<BN>
|
|
57
72
|
}
|
|
58
73
|
|
|
@@ -73,6 +88,13 @@ export interface LendingMarketJSON {
|
|
|
73
88
|
/** Referral fee for the lending market, as bps out of the total protocol fee */
|
|
74
89
|
referralFeeBps: number
|
|
75
90
|
emergencyMode: number
|
|
91
|
+
/**
|
|
92
|
+
* Whether the obligations on this market should be subject to auto-deleveraging after deposit
|
|
93
|
+
* or borrow limit is crossed.
|
|
94
|
+
* Besides this flag, the particular reserve's flag also needs to be enabled (logical `AND`).
|
|
95
|
+
* **NOTE:** the manual "target LTV" deleveraging (enabled by the risk council for individual
|
|
96
|
+
* obligations) is NOT affected by this flag.
|
|
97
|
+
*/
|
|
76
98
|
autodeleverageEnabled: number
|
|
77
99
|
borrowDisabled: number
|
|
78
100
|
/**
|
|
@@ -102,9 +124,17 @@ export interface LendingMarketJSON {
|
|
|
102
124
|
elevationGroupPadding: Array<string>
|
|
103
125
|
/** Min net value accepted to be found in a position after any lending action in an obligation (scaled by quote currency decimals) */
|
|
104
126
|
minNetValueInObligationSf: string
|
|
105
|
-
|
|
127
|
+
/** Minimum value to enforce smallest ltv priority checks on the collateral reserves on liquidation */
|
|
128
|
+
minValueSkipLiquidationLtvChecks: string
|
|
106
129
|
/** Market name, zero-padded. */
|
|
107
130
|
name: Array<number>
|
|
131
|
+
/** Minimum value to enforce highest borrow factor priority checks on the debt reserves on liquidation */
|
|
132
|
+
minValueSkipLiquidationBfChecks: string
|
|
133
|
+
/**
|
|
134
|
+
* Time (in seconds) that must pass before liquidation is allowed on an obligation that has
|
|
135
|
+
* been individually marked for auto-deleveraging (by the risk council).
|
|
136
|
+
*/
|
|
137
|
+
individualAutodeleverageMarginCallPeriodSecs: string
|
|
108
138
|
padding1: Array<string>
|
|
109
139
|
}
|
|
110
140
|
|
|
@@ -125,6 +155,13 @@ export class LendingMarket {
|
|
|
125
155
|
/** Referral fee for the lending market, as bps out of the total protocol fee */
|
|
126
156
|
readonly referralFeeBps: number
|
|
127
157
|
readonly emergencyMode: number
|
|
158
|
+
/**
|
|
159
|
+
* Whether the obligations on this market should be subject to auto-deleveraging after deposit
|
|
160
|
+
* or borrow limit is crossed.
|
|
161
|
+
* Besides this flag, the particular reserve's flag also needs to be enabled (logical `AND`).
|
|
162
|
+
* **NOTE:** the manual "target LTV" deleveraging (enabled by the risk council for individual
|
|
163
|
+
* obligations) is NOT affected by this flag.
|
|
164
|
+
*/
|
|
128
165
|
readonly autodeleverageEnabled: number
|
|
129
166
|
readonly borrowDisabled: number
|
|
130
167
|
/**
|
|
@@ -154,9 +191,17 @@ export class LendingMarket {
|
|
|
154
191
|
readonly elevationGroupPadding: Array<BN>
|
|
155
192
|
/** Min net value accepted to be found in a position after any lending action in an obligation (scaled by quote currency decimals) */
|
|
156
193
|
readonly minNetValueInObligationSf: BN
|
|
157
|
-
|
|
194
|
+
/** Minimum value to enforce smallest ltv priority checks on the collateral reserves on liquidation */
|
|
195
|
+
readonly minValueSkipLiquidationLtvChecks: BN
|
|
158
196
|
/** Market name, zero-padded. */
|
|
159
197
|
readonly name: Array<number>
|
|
198
|
+
/** Minimum value to enforce highest borrow factor priority checks on the debt reserves on liquidation */
|
|
199
|
+
readonly minValueSkipLiquidationBfChecks: BN
|
|
200
|
+
/**
|
|
201
|
+
* Time (in seconds) that must pass before liquidation is allowed on an obligation that has
|
|
202
|
+
* been individually marked for auto-deleveraging (by the risk council).
|
|
203
|
+
*/
|
|
204
|
+
readonly individualAutodeleverageMarginCallPeriodSecs: BN
|
|
160
205
|
readonly padding1: Array<BN>
|
|
161
206
|
|
|
162
207
|
static readonly discriminator = Buffer.from([
|
|
@@ -185,9 +230,11 @@ export class LendingMarket {
|
|
|
185
230
|
borsh.array(types.ElevationGroup.layout(), 32, "elevationGroups"),
|
|
186
231
|
borsh.array(borsh.u64(), 90, "elevationGroupPadding"),
|
|
187
232
|
borsh.u128("minNetValueInObligationSf"),
|
|
188
|
-
borsh.u64("
|
|
233
|
+
borsh.u64("minValueSkipLiquidationLtvChecks"),
|
|
189
234
|
borsh.array(borsh.u8(), 32, "name"),
|
|
190
|
-
borsh.
|
|
235
|
+
borsh.u64("minValueSkipLiquidationBfChecks"),
|
|
236
|
+
borsh.u64("individualAutodeleverageMarginCallPeriodSecs"),
|
|
237
|
+
borsh.array(borsh.u64(), 171, "padding1"),
|
|
191
238
|
])
|
|
192
239
|
|
|
193
240
|
constructor(fields: LendingMarketFields) {
|
|
@@ -217,9 +264,13 @@ export class LendingMarket {
|
|
|
217
264
|
)
|
|
218
265
|
this.elevationGroupPadding = fields.elevationGroupPadding
|
|
219
266
|
this.minNetValueInObligationSf = fields.minNetValueInObligationSf
|
|
220
|
-
this.
|
|
221
|
-
fields.
|
|
267
|
+
this.minValueSkipLiquidationLtvChecks =
|
|
268
|
+
fields.minValueSkipLiquidationLtvChecks
|
|
222
269
|
this.name = fields.name
|
|
270
|
+
this.minValueSkipLiquidationBfChecks =
|
|
271
|
+
fields.minValueSkipLiquidationBfChecks
|
|
272
|
+
this.individualAutodeleverageMarginCallPeriodSecs =
|
|
273
|
+
fields.individualAutodeleverageMarginCallPeriodSecs
|
|
223
274
|
this.padding1 = fields.padding1
|
|
224
275
|
}
|
|
225
276
|
|
|
@@ -293,9 +344,11 @@ export class LendingMarket {
|
|
|
293
344
|
),
|
|
294
345
|
elevationGroupPadding: dec.elevationGroupPadding,
|
|
295
346
|
minNetValueInObligationSf: dec.minNetValueInObligationSf,
|
|
296
|
-
|
|
297
|
-
dec.minValueSkipLiquidationLtvBfChecks,
|
|
347
|
+
minValueSkipLiquidationLtvChecks: dec.minValueSkipLiquidationLtvChecks,
|
|
298
348
|
name: dec.name,
|
|
349
|
+
minValueSkipLiquidationBfChecks: dec.minValueSkipLiquidationBfChecks,
|
|
350
|
+
individualAutodeleverageMarginCallPeriodSecs:
|
|
351
|
+
dec.individualAutodeleverageMarginCallPeriodSecs,
|
|
299
352
|
padding1: dec.padding1,
|
|
300
353
|
})
|
|
301
354
|
}
|
|
@@ -327,9 +380,13 @@ export class LendingMarket {
|
|
|
327
380
|
item.toString()
|
|
328
381
|
),
|
|
329
382
|
minNetValueInObligationSf: this.minNetValueInObligationSf.toString(),
|
|
330
|
-
|
|
331
|
-
this.
|
|
383
|
+
minValueSkipLiquidationLtvChecks:
|
|
384
|
+
this.minValueSkipLiquidationLtvChecks.toString(),
|
|
332
385
|
name: this.name,
|
|
386
|
+
minValueSkipLiquidationBfChecks:
|
|
387
|
+
this.minValueSkipLiquidationBfChecks.toString(),
|
|
388
|
+
individualAutodeleverageMarginCallPeriodSecs:
|
|
389
|
+
this.individualAutodeleverageMarginCallPeriodSecs.toString(),
|
|
333
390
|
padding1: this.padding1.map((item) => item.toString()),
|
|
334
391
|
}
|
|
335
392
|
}
|
|
@@ -365,10 +422,16 @@ export class LendingMarket {
|
|
|
365
422
|
(item) => new BN(item)
|
|
366
423
|
),
|
|
367
424
|
minNetValueInObligationSf: new BN(obj.minNetValueInObligationSf),
|
|
368
|
-
|
|
369
|
-
obj.
|
|
425
|
+
minValueSkipLiquidationLtvChecks: new BN(
|
|
426
|
+
obj.minValueSkipLiquidationLtvChecks
|
|
370
427
|
),
|
|
371
428
|
name: obj.name,
|
|
429
|
+
minValueSkipLiquidationBfChecks: new BN(
|
|
430
|
+
obj.minValueSkipLiquidationBfChecks
|
|
431
|
+
),
|
|
432
|
+
individualAutodeleverageMarginCallPeriodSecs: new BN(
|
|
433
|
+
obj.individualAutodeleverageMarginCallPeriodSecs
|
|
434
|
+
),
|
|
372
435
|
padding1: obj.padding1.map((item) => new BN(item)),
|
|
373
436
|
})
|
|
374
437
|
}
|
|
@@ -43,8 +43,18 @@ export interface ObligationFields {
|
|
|
43
43
|
referrer: PublicKey
|
|
44
44
|
/** Marked = 1 if borrowing disabled, 0 = borrowing enabled */
|
|
45
45
|
borrowingDisabled: number
|
|
46
|
+
/**
|
|
47
|
+
* A target LTV set by the risk council when marking this obligation for deleveraging.
|
|
48
|
+
* Only effective when `deleveraging_margin_call_started_slot != 0`.
|
|
49
|
+
*/
|
|
50
|
+
autodeleverageTargetLtvPct: number
|
|
46
51
|
reserved: Array<number>
|
|
47
52
|
highestBorrowFactorPct: BN
|
|
53
|
+
/**
|
|
54
|
+
* A timestamp at which the risk council most-recently marked this obligation for deleveraging.
|
|
55
|
+
* Zero if not currently subject to deleveraging.
|
|
56
|
+
*/
|
|
57
|
+
autodeleverageMarginCallStartedTimestamp: BN
|
|
48
58
|
padding3: Array<BN>
|
|
49
59
|
}
|
|
50
60
|
|
|
@@ -87,8 +97,18 @@ export interface ObligationJSON {
|
|
|
87
97
|
referrer: string
|
|
88
98
|
/** Marked = 1 if borrowing disabled, 0 = borrowing enabled */
|
|
89
99
|
borrowingDisabled: number
|
|
100
|
+
/**
|
|
101
|
+
* A target LTV set by the risk council when marking this obligation for deleveraging.
|
|
102
|
+
* Only effective when `deleveraging_margin_call_started_slot != 0`.
|
|
103
|
+
*/
|
|
104
|
+
autodeleverageTargetLtvPct: number
|
|
90
105
|
reserved: Array<number>
|
|
91
106
|
highestBorrowFactorPct: string
|
|
107
|
+
/**
|
|
108
|
+
* A timestamp at which the risk council most-recently marked this obligation for deleveraging.
|
|
109
|
+
* Zero if not currently subject to deleveraging.
|
|
110
|
+
*/
|
|
111
|
+
autodeleverageMarginCallStartedTimestamp: string
|
|
92
112
|
padding3: Array<string>
|
|
93
113
|
}
|
|
94
114
|
|
|
@@ -132,8 +152,18 @@ export class Obligation {
|
|
|
132
152
|
readonly referrer: PublicKey
|
|
133
153
|
/** Marked = 1 if borrowing disabled, 0 = borrowing enabled */
|
|
134
154
|
readonly borrowingDisabled: number
|
|
155
|
+
/**
|
|
156
|
+
* A target LTV set by the risk council when marking this obligation for deleveraging.
|
|
157
|
+
* Only effective when `deleveraging_margin_call_started_slot != 0`.
|
|
158
|
+
*/
|
|
159
|
+
readonly autodeleverageTargetLtvPct: number
|
|
135
160
|
readonly reserved: Array<number>
|
|
136
161
|
readonly highestBorrowFactorPct: BN
|
|
162
|
+
/**
|
|
163
|
+
* A timestamp at which the risk council most-recently marked this obligation for deleveraging.
|
|
164
|
+
* Zero if not currently subject to deleveraging.
|
|
165
|
+
*/
|
|
166
|
+
readonly autodeleverageMarginCallStartedTimestamp: BN
|
|
137
167
|
readonly padding3: Array<BN>
|
|
138
168
|
|
|
139
169
|
static readonly discriminator = Buffer.from([
|
|
@@ -160,9 +190,11 @@ export class Obligation {
|
|
|
160
190
|
borsh.u8("hasDebt"),
|
|
161
191
|
borsh.publicKey("referrer"),
|
|
162
192
|
borsh.u8("borrowingDisabled"),
|
|
163
|
-
borsh.
|
|
193
|
+
borsh.u8("autodeleverageTargetLtvPct"),
|
|
194
|
+
borsh.array(borsh.u8(), 6, "reserved"),
|
|
164
195
|
borsh.u64("highestBorrowFactorPct"),
|
|
165
|
-
borsh.
|
|
196
|
+
borsh.u64("autodeleverageMarginCallStartedTimestamp"),
|
|
197
|
+
borsh.array(borsh.u64(), 125, "padding3"),
|
|
166
198
|
])
|
|
167
199
|
|
|
168
200
|
constructor(fields: ObligationFields) {
|
|
@@ -191,8 +223,11 @@ export class Obligation {
|
|
|
191
223
|
this.hasDebt = fields.hasDebt
|
|
192
224
|
this.referrer = fields.referrer
|
|
193
225
|
this.borrowingDisabled = fields.borrowingDisabled
|
|
226
|
+
this.autodeleverageTargetLtvPct = fields.autodeleverageTargetLtvPct
|
|
194
227
|
this.reserved = fields.reserved
|
|
195
228
|
this.highestBorrowFactorPct = fields.highestBorrowFactorPct
|
|
229
|
+
this.autodeleverageMarginCallStartedTimestamp =
|
|
230
|
+
fields.autodeleverageMarginCallStartedTimestamp
|
|
196
231
|
this.padding3 = fields.padding3
|
|
197
232
|
}
|
|
198
233
|
|
|
@@ -268,8 +303,11 @@ export class Obligation {
|
|
|
268
303
|
hasDebt: dec.hasDebt,
|
|
269
304
|
referrer: dec.referrer,
|
|
270
305
|
borrowingDisabled: dec.borrowingDisabled,
|
|
306
|
+
autodeleverageTargetLtvPct: dec.autodeleverageTargetLtvPct,
|
|
271
307
|
reserved: dec.reserved,
|
|
272
308
|
highestBorrowFactorPct: dec.highestBorrowFactorPct,
|
|
309
|
+
autodeleverageMarginCallStartedTimestamp:
|
|
310
|
+
dec.autodeleverageMarginCallStartedTimestamp,
|
|
273
311
|
padding3: dec.padding3,
|
|
274
312
|
})
|
|
275
313
|
}
|
|
@@ -297,8 +335,11 @@ export class Obligation {
|
|
|
297
335
|
hasDebt: this.hasDebt,
|
|
298
336
|
referrer: this.referrer.toString(),
|
|
299
337
|
borrowingDisabled: this.borrowingDisabled,
|
|
338
|
+
autodeleverageTargetLtvPct: this.autodeleverageTargetLtvPct,
|
|
300
339
|
reserved: this.reserved,
|
|
301
340
|
highestBorrowFactorPct: this.highestBorrowFactorPct.toString(),
|
|
341
|
+
autodeleverageMarginCallStartedTimestamp:
|
|
342
|
+
this.autodeleverageMarginCallStartedTimestamp.toString(),
|
|
302
343
|
padding3: this.padding3.map((item) => item.toString()),
|
|
303
344
|
}
|
|
304
345
|
}
|
|
@@ -332,8 +373,12 @@ export class Obligation {
|
|
|
332
373
|
hasDebt: obj.hasDebt,
|
|
333
374
|
referrer: new PublicKey(obj.referrer),
|
|
334
375
|
borrowingDisabled: obj.borrowingDisabled,
|
|
376
|
+
autodeleverageTargetLtvPct: obj.autodeleverageTargetLtvPct,
|
|
335
377
|
reserved: obj.reserved,
|
|
336
378
|
highestBorrowFactorPct: new BN(obj.highestBorrowFactorPct),
|
|
379
|
+
autodeleverageMarginCallStartedTimestamp: new BN(
|
|
380
|
+
obj.autodeleverageMarginCallStartedTimestamp
|
|
381
|
+
),
|
|
337
382
|
padding3: obj.padding3.map((item) => new BN(item)),
|
|
338
383
|
})
|
|
339
384
|
}
|
|
@@ -99,7 +99,7 @@ export class Reserve {
|
|
|
99
99
|
types.ReserveCollateral.layout("collateral"),
|
|
100
100
|
borsh.array(borsh.u64(), 150, "reserveCollateralPadding"),
|
|
101
101
|
types.ReserveConfig.layout("config"),
|
|
102
|
-
borsh.array(borsh.u64(),
|
|
102
|
+
borsh.array(borsh.u64(), 116, "configPadding"),
|
|
103
103
|
borsh.u64("borrowedAmountOutsideElevationGroup"),
|
|
104
104
|
borsh.array(
|
|
105
105
|
borsh.u64(),
|
|
@@ -111,6 +111,10 @@ export type CustomError =
|
|
|
111
111
|
| InvalidTokenAccount
|
|
112
112
|
| DepositDisabledOutsideElevationGroup
|
|
113
113
|
| CannotCalculateReferralAmountDueToSlotsMismatch
|
|
114
|
+
| ObligationOwnersMustMatch
|
|
115
|
+
| ObligationsMustMatch
|
|
116
|
+
| LendingMarketsMustMatch
|
|
117
|
+
| ObligationAlreadyMarkedForDeleveraging
|
|
114
118
|
|
|
115
119
|
export class InvalidMarketAuthority extends Error {
|
|
116
120
|
static readonly code = 6000
|
|
@@ -1401,6 +1405,50 @@ export class CannotCalculateReferralAmountDueToSlotsMismatch extends Error {
|
|
|
1401
1405
|
}
|
|
1402
1406
|
}
|
|
1403
1407
|
|
|
1408
|
+
export class ObligationOwnersMustMatch extends Error {
|
|
1409
|
+
static readonly code = 6112
|
|
1410
|
+
readonly code = 6112
|
|
1411
|
+
readonly name = "ObligationOwnersMustMatch"
|
|
1412
|
+
readonly msg = "Obligation owners must match"
|
|
1413
|
+
|
|
1414
|
+
constructor(readonly logs?: string[]) {
|
|
1415
|
+
super("6112: Obligation owners must match")
|
|
1416
|
+
}
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
export class ObligationsMustMatch extends Error {
|
|
1420
|
+
static readonly code = 6113
|
|
1421
|
+
readonly code = 6113
|
|
1422
|
+
readonly name = "ObligationsMustMatch"
|
|
1423
|
+
readonly msg = "Obligations must match"
|
|
1424
|
+
|
|
1425
|
+
constructor(readonly logs?: string[]) {
|
|
1426
|
+
super("6113: Obligations must match")
|
|
1427
|
+
}
|
|
1428
|
+
}
|
|
1429
|
+
|
|
1430
|
+
export class LendingMarketsMustMatch extends Error {
|
|
1431
|
+
static readonly code = 6114
|
|
1432
|
+
readonly code = 6114
|
|
1433
|
+
readonly name = "LendingMarketsMustMatch"
|
|
1434
|
+
readonly msg = "Lending markets must match"
|
|
1435
|
+
|
|
1436
|
+
constructor(readonly logs?: string[]) {
|
|
1437
|
+
super("6114: Lending markets must match")
|
|
1438
|
+
}
|
|
1439
|
+
}
|
|
1440
|
+
|
|
1441
|
+
export class ObligationAlreadyMarkedForDeleveraging extends Error {
|
|
1442
|
+
static readonly code = 6115
|
|
1443
|
+
readonly code = 6115
|
|
1444
|
+
readonly name = "ObligationAlreadyMarkedForDeleveraging"
|
|
1445
|
+
readonly msg = "Obligation is already marked for deleveraging"
|
|
1446
|
+
|
|
1447
|
+
constructor(readonly logs?: string[]) {
|
|
1448
|
+
super("6115: Obligation is already marked for deleveraging")
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
|
|
1404
1452
|
export function fromCode(code: number, logs?: string[]): CustomError | null {
|
|
1405
1453
|
switch (code) {
|
|
1406
1454
|
case 6000:
|
|
@@ -1627,6 +1675,14 @@ export function fromCode(code: number, logs?: string[]): CustomError | null {
|
|
|
1627
1675
|
return new DepositDisabledOutsideElevationGroup(logs)
|
|
1628
1676
|
case 6111:
|
|
1629
1677
|
return new CannotCalculateReferralAmountDueToSlotsMismatch(logs)
|
|
1678
|
+
case 6112:
|
|
1679
|
+
return new ObligationOwnersMustMatch(logs)
|
|
1680
|
+
case 6113:
|
|
1681
|
+
return new ObligationsMustMatch(logs)
|
|
1682
|
+
case 6114:
|
|
1683
|
+
return new LendingMarketsMustMatch(logs)
|
|
1684
|
+
case 6115:
|
|
1685
|
+
return new ObligationAlreadyMarkedForDeleveraging(logs)
|
|
1630
1686
|
}
|
|
1631
1687
|
|
|
1632
1688
|
return null
|
|
@@ -24,13 +24,18 @@ export type {
|
|
|
24
24
|
} from "./updateReserveConfig"
|
|
25
25
|
export { redeemFees } from "./redeemFees"
|
|
26
26
|
export type { RedeemFeesAccounts } from "./redeemFees"
|
|
27
|
-
export { socializeLoss } from "./socializeLoss"
|
|
28
|
-
export type { SocializeLossArgs, SocializeLossAccounts } from "./socializeLoss"
|
|
29
27
|
export { withdrawProtocolFee } from "./withdrawProtocolFee"
|
|
30
28
|
export type {
|
|
31
29
|
WithdrawProtocolFeeArgs,
|
|
32
30
|
WithdrawProtocolFeeAccounts,
|
|
33
31
|
} from "./withdrawProtocolFee"
|
|
32
|
+
export { socializeLoss } from "./socializeLoss"
|
|
33
|
+
export type { SocializeLossArgs, SocializeLossAccounts } from "./socializeLoss"
|
|
34
|
+
export { markObligationForDeleveraging } from "./markObligationForDeleveraging"
|
|
35
|
+
export type {
|
|
36
|
+
MarkObligationForDeleveragingArgs,
|
|
37
|
+
MarkObligationForDeleveragingAccounts,
|
|
38
|
+
} from "./markObligationForDeleveraging"
|
|
34
39
|
export { refreshReserve } from "./refreshReserve"
|
|
35
40
|
export type { RefreshReserveAccounts } from "./refreshReserve"
|
|
36
41
|
export { refreshReservesBatch } from "./refreshReservesBatch"
|
|
@@ -82,6 +87,11 @@ export type {
|
|
|
82
87
|
RepayObligationLiquidityArgs,
|
|
83
88
|
RepayObligationLiquidityAccounts,
|
|
84
89
|
} from "./repayObligationLiquidity"
|
|
90
|
+
export { repayAndWithdrawAndRedeem } from "./repayAndWithdrawAndRedeem"
|
|
91
|
+
export type {
|
|
92
|
+
RepayAndWithdrawAndRedeemArgs,
|
|
93
|
+
RepayAndWithdrawAndRedeemAccounts,
|
|
94
|
+
} from "./repayAndWithdrawAndRedeem"
|
|
85
95
|
export { depositReserveLiquidityAndObligationCollateral } from "./depositReserveLiquidityAndObligationCollateral"
|
|
86
96
|
export type {
|
|
87
97
|
DepositReserveLiquidityAndObligationCollateralArgs,
|
|
@@ -113,10 +123,7 @@ export type {
|
|
|
113
123
|
RequestElevationGroupAccounts,
|
|
114
124
|
} from "./requestElevationGroup"
|
|
115
125
|
export { initReferrerTokenState } from "./initReferrerTokenState"
|
|
116
|
-
export type {
|
|
117
|
-
InitReferrerTokenStateArgs,
|
|
118
|
-
InitReferrerTokenStateAccounts,
|
|
119
|
-
} from "./initReferrerTokenState"
|
|
126
|
+
export type { InitReferrerTokenStateAccounts } from "./initReferrerTokenState"
|
|
120
127
|
export { initUserMetadata } from "./initUserMetadata"
|
|
121
128
|
export type {
|
|
122
129
|
InitUserMetadataArgs,
|
|
@@ -4,23 +4,17 @@ import * as borsh from "@coral-xyz/borsh" // eslint-disable-line @typescript-esl
|
|
|
4
4
|
import * as types from "../types" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
5
5
|
import { PROGRAM_ID } from "../programId"
|
|
6
6
|
|
|
7
|
-
export interface InitReferrerTokenStateArgs {
|
|
8
|
-
referrer: PublicKey
|
|
9
|
-
}
|
|
10
|
-
|
|
11
7
|
export interface InitReferrerTokenStateAccounts {
|
|
12
8
|
payer: PublicKey
|
|
13
9
|
lendingMarket: PublicKey
|
|
14
10
|
reserve: PublicKey
|
|
11
|
+
referrer: PublicKey
|
|
15
12
|
referrerTokenState: PublicKey
|
|
16
13
|
rent: PublicKey
|
|
17
14
|
systemProgram: PublicKey
|
|
18
15
|
}
|
|
19
16
|
|
|
20
|
-
export const layout = borsh.struct([borsh.publicKey("referrer")])
|
|
21
|
-
|
|
22
17
|
export function initReferrerTokenState(
|
|
23
|
-
args: InitReferrerTokenStateArgs,
|
|
24
18
|
accounts: InitReferrerTokenStateAccounts,
|
|
25
19
|
programId: PublicKey = PROGRAM_ID
|
|
26
20
|
) {
|
|
@@ -28,19 +22,13 @@ export function initReferrerTokenState(
|
|
|
28
22
|
{ pubkey: accounts.payer, isSigner: true, isWritable: true },
|
|
29
23
|
{ pubkey: accounts.lendingMarket, isSigner: false, isWritable: false },
|
|
30
24
|
{ pubkey: accounts.reserve, isSigner: false, isWritable: false },
|
|
25
|
+
{ pubkey: accounts.referrer, isSigner: false, isWritable: false },
|
|
31
26
|
{ pubkey: accounts.referrerTokenState, isSigner: false, isWritable: true },
|
|
32
27
|
{ pubkey: accounts.rent, isSigner: false, isWritable: false },
|
|
33
28
|
{ pubkey: accounts.systemProgram, isSigner: false, isWritable: false },
|
|
34
29
|
]
|
|
35
30
|
const identifier = Buffer.from([116, 45, 66, 148, 58, 13, 218, 115])
|
|
36
|
-
const
|
|
37
|
-
const len = layout.encode(
|
|
38
|
-
{
|
|
39
|
-
referrer: args.referrer,
|
|
40
|
-
},
|
|
41
|
-
buffer
|
|
42
|
-
)
|
|
43
|
-
const data = Buffer.concat([identifier, buffer]).slice(0, 8 + len)
|
|
31
|
+
const data = identifier
|
|
44
32
|
const ix = new TransactionInstruction({ keys, programId, data })
|
|
45
33
|
return ix
|
|
46
34
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { TransactionInstruction, PublicKey, AccountMeta } from "@solana/web3.js" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
2
|
+
import BN from "bn.js" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
3
|
+
import * as borsh from "@coral-xyz/borsh" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
4
|
+
import * as types from "../types" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
5
|
+
import { PROGRAM_ID } from "../programId"
|
|
6
|
+
|
|
7
|
+
export interface MarkObligationForDeleveragingArgs {
|
|
8
|
+
autodeleverageTargetLtvPct: number
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface MarkObligationForDeleveragingAccounts {
|
|
12
|
+
riskCouncil: PublicKey
|
|
13
|
+
obligation: PublicKey
|
|
14
|
+
lendingMarket: PublicKey
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const layout = borsh.struct([borsh.u8("autodeleverageTargetLtvPct")])
|
|
18
|
+
|
|
19
|
+
export function markObligationForDeleveraging(
|
|
20
|
+
args: MarkObligationForDeleveragingArgs,
|
|
21
|
+
accounts: MarkObligationForDeleveragingAccounts,
|
|
22
|
+
programId: PublicKey = PROGRAM_ID
|
|
23
|
+
) {
|
|
24
|
+
const keys: Array<AccountMeta> = [
|
|
25
|
+
{ pubkey: accounts.riskCouncil, isSigner: true, isWritable: false },
|
|
26
|
+
{ pubkey: accounts.obligation, isSigner: false, isWritable: true },
|
|
27
|
+
{ pubkey: accounts.lendingMarket, isSigner: false, isWritable: false },
|
|
28
|
+
]
|
|
29
|
+
const identifier = Buffer.from([164, 35, 182, 19, 0, 116, 243, 127])
|
|
30
|
+
const buffer = Buffer.alloc(1000)
|
|
31
|
+
const len = layout.encode(
|
|
32
|
+
{
|
|
33
|
+
autodeleverageTargetLtvPct: args.autodeleverageTargetLtvPct,
|
|
34
|
+
},
|
|
35
|
+
buffer
|
|
36
|
+
)
|
|
37
|
+
const data = Buffer.concat([identifier, buffer]).slice(0, 8 + len)
|
|
38
|
+
const ix = new TransactionInstruction({ keys, programId, data })
|
|
39
|
+
return ix
|
|
40
|
+
}
|