@kamino-finance/klend-sdk 7.1.4-beta.0 → 7.1.4
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/@codegen/klend/accounts/LendingMarket.d.ts +3 -144
- package/dist/@codegen/klend/accounts/LendingMarket.d.ts.map +1 -1
- package/dist/@codegen/klend/accounts/LendingMarket.js +3 -105
- package/dist/@codegen/klend/accounts/LendingMarket.js.map +1 -1
- package/dist/@codegen/klend/accounts/Obligation.d.ts +15 -30
- package/dist/@codegen/klend/accounts/Obligation.d.ts.map +1 -1
- package/dist/@codegen/klend/accounts/Obligation.js +21 -31
- package/dist/@codegen/klend/accounts/Obligation.js.map +1 -1
- package/dist/@codegen/klend/accounts/Reserve.d.ts +0 -6
- package/dist/@codegen/klend/accounts/Reserve.d.ts.map +1 -1
- package/dist/@codegen/klend/accounts/Reserve.js +2 -9
- package/dist/@codegen/klend/accounts/Reserve.js.map +1 -1
- package/dist/@codegen/klend/accounts/UserState.d.ts +75 -0
- package/dist/@codegen/klend/accounts/UserState.d.ts.map +1 -1
- package/dist/@codegen/klend/accounts/UserState.js +25 -0
- package/dist/@codegen/klend/accounts/UserState.js.map +1 -1
- package/dist/@codegen/klend/accounts/index.d.ts +0 -6
- package/dist/@codegen/klend/accounts/index.d.ts.map +1 -1
- package/dist/@codegen/klend/accounts/index.js +1 -7
- package/dist/@codegen/klend/accounts/index.js.map +1 -1
- package/dist/@codegen/klend/errors/custom.d.ts +2 -226
- package/dist/@codegen/klend/errors/custom.d.ts.map +1 -1
- package/dist/@codegen/klend/errors/custom.js +3 -396
- package/dist/@codegen/klend/errors/custom.js.map +1 -1
- package/dist/@codegen/klend/instructions/idlMissingTypes.d.ts +2 -1
- package/dist/@codegen/klend/instructions/idlMissingTypes.d.ts.map +1 -1
- package/dist/@codegen/klend/instructions/idlMissingTypes.js +2 -6
- package/dist/@codegen/klend/instructions/idlMissingTypes.js.map +1 -1
- package/dist/@codegen/klend/instructions/index.d.ts +0 -16
- package/dist/@codegen/klend/instructions/index.d.ts.map +1 -1
- package/dist/@codegen/klend/instructions/index.js +1 -18
- package/dist/@codegen/klend/instructions/index.js.map +1 -1
- package/dist/@codegen/klend/instructions/initReserve.d.ts +1 -1
- package/dist/@codegen/klend/instructions/initReserve.d.ts.map +1 -1
- package/dist/@codegen/klend/instructions/initReserve.js +5 -1
- package/dist/@codegen/klend/instructions/initReserve.js.map +1 -1
- package/dist/@codegen/klend/instructions/liquidateObligationAndRedeemReserveCollateral.js +1 -1
- package/dist/@codegen/klend/instructions/updateGlobalConfig.d.ts +1 -1
- package/dist/@codegen/klend/instructions/updateGlobalConfig.d.ts.map +1 -1
- package/dist/@codegen/klend/instructions/updateGlobalConfig.js +0 -1
- package/dist/@codegen/klend/instructions/updateGlobalConfig.js.map +1 -1
- package/dist/@codegen/klend/instructions/updateReserveConfig.d.ts +1 -1
- package/dist/@codegen/klend/instructions/updateReserveConfig.d.ts.map +1 -1
- package/dist/@codegen/klend/instructions/updateReserveConfig.js +0 -1
- package/dist/@codegen/klend/instructions/updateReserveConfig.js.map +1 -1
- package/dist/@codegen/klend/instructions/withdrawObligationCollateral.js +1 -1
- package/dist/@codegen/klend/instructions/withdrawObligationCollateralV2.js +1 -1
- package/dist/@codegen/klend/types/AssetTier.d.ts +45 -0
- package/dist/@codegen/klend/types/AssetTier.d.ts.map +1 -0
- package/dist/@codegen/klend/types/AssetTier.js +132 -0
- package/dist/@codegen/klend/types/AssetTier.js.map +1 -0
- package/dist/@codegen/klend/types/ObligationLiquidity.d.ts +5 -35
- package/dist/@codegen/klend/types/ObligationLiquidity.d.ts.map +1 -1
- package/dist/@codegen/klend/types/ObligationLiquidity.js +7 -17
- package/dist/@codegen/klend/types/ObligationLiquidity.js.map +1 -1
- package/dist/@codegen/klend/types/ObligationOrder.d.ts +4 -4
- package/dist/@codegen/klend/types/ObligationOrder.js +2 -2
- package/dist/@codegen/klend/types/ReserveConfig.d.ts +29 -141
- package/dist/@codegen/klend/types/ReserveConfig.d.ts.map +1 -1
- package/dist/@codegen/klend/types/ReserveConfig.js +25 -89
- package/dist/@codegen/klend/types/ReserveConfig.js.map +1 -1
- package/dist/@codegen/klend/types/ReserveFees.d.ts +8 -8
- package/dist/@codegen/klend/types/ReserveFees.d.ts.map +1 -1
- package/dist/@codegen/klend/types/ReserveFees.js +8 -8
- package/dist/@codegen/klend/types/ReserveFees.js.map +1 -1
- package/dist/@codegen/klend/types/ReserveLiquidity.d.ts +8 -26
- package/dist/@codegen/klend/types/ReserveLiquidity.d.ts.map +1 -1
- package/dist/@codegen/klend/types/ReserveLiquidity.js +8 -14
- package/dist/@codegen/klend/types/ReserveLiquidity.js.map +1 -1
- package/dist/@codegen/klend/types/UpdateConfigMode.d.ts +14 -92
- package/dist/@codegen/klend/types/UpdateConfigMode.d.ts.map +1 -1
- package/dist/@codegen/klend/types/UpdateConfigMode.js +23 -168
- package/dist/@codegen/klend/types/UpdateConfigMode.js.map +1 -1
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.d.ts +0 -130
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.d.ts.map +1 -1
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.js +1 -241
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.js.map +1 -1
- package/dist/@codegen/klend/types/index.d.ts +8 -10
- package/dist/@codegen/klend/types/index.d.ts.map +1 -1
- package/dist/@codegen/klend/types/index.js +3 -7
- package/dist/@codegen/klend/types/index.js.map +1 -1
- package/dist/@codegen/klend/zero_padding/ObligationZP.d.ts +4 -9
- package/dist/@codegen/klend/zero_padding/ObligationZP.d.ts.map +1 -1
- package/dist/@codegen/klend/zero_padding/ObligationZP.js +13 -22
- package/dist/@codegen/klend/zero_padding/ObligationZP.js.map +1 -1
- package/dist/classes/action.d.ts +3 -30
- package/dist/classes/action.d.ts.map +1 -1
- package/dist/classes/action.js +10 -364
- package/dist/classes/action.js.map +1 -1
- package/dist/classes/manager.d.ts.map +1 -1
- package/dist/classes/manager.js +0 -10
- package/dist/classes/manager.js.map +1 -1
- package/dist/classes/market.d.ts +2 -6
- package/dist/classes/market.d.ts.map +1 -1
- package/dist/classes/market.js +6 -26
- package/dist/classes/market.js.map +1 -1
- package/dist/classes/obligation.js +1 -1
- package/dist/classes/obligation.js.map +1 -1
- package/dist/classes/reserve.d.ts.map +1 -1
- package/dist/classes/reserve.js +7 -13
- package/dist/classes/reserve.js.map +1 -1
- package/dist/classes/unstakingPool.d.ts +3 -20
- package/dist/classes/unstakingPool.d.ts.map +1 -1
- package/dist/classes/unstakingPool.js +8 -62
- package/dist/classes/unstakingPool.js.map +1 -1
- package/dist/classes/vault.d.ts +1 -1
- package/dist/classes/vault.d.ts.map +1 -1
- package/dist/classes/vault.js +46 -28
- package/dist/classes/vault.js.map +1 -1
- package/dist/idl/klend.json +293 -2186
- package/dist/lending_operations/index.d.ts +0 -1
- package/dist/lending_operations/index.d.ts.map +1 -1
- package/dist/lending_operations/index.js +0 -1
- package/dist/lending_operations/index.js.map +1 -1
- package/dist/manager/client_kamino_manager.js +9 -12
- package/dist/manager/client_kamino_manager.js.map +1 -1
- package/dist/utils/ata.d.ts +10 -1
- package/dist/utils/ata.d.ts.map +1 -1
- package/dist/utils/ata.js +47 -0
- package/dist/utils/ata.js.map +1 -1
- package/dist/utils/managerTypes.d.ts.map +1 -1
- package/dist/utils/managerTypes.js +4 -9
- package/dist/utils/managerTypes.js.map +1 -1
- package/dist/utils/seeds.d.ts +14 -10
- package/dist/utils/seeds.d.ts.map +1 -1
- package/dist/utils/seeds.js +22 -25
- package/dist/utils/seeds.js.map +1 -1
- package/package.json +1 -1
- package/src/@codegen/klend/accounts/LendingMarket.ts +5 -210
- package/src/@codegen/klend/accounts/Obligation.ts +31 -53
- package/src/@codegen/klend/accounts/Reserve.ts +2 -13
- package/src/@codegen/klend/accounts/UserState.ts +75 -0
- package/src/@codegen/klend/accounts/index.ts +0 -6
- package/src/@codegen/klend/errors/custom.ts +2 -427
- package/src/@codegen/klend/instructions/idlMissingTypes.ts +4 -7
- package/src/@codegen/klend/instructions/index.ts +0 -34
- package/src/@codegen/klend/instructions/initReserve.ts +6 -2
- package/src/@codegen/klend/instructions/liquidateObligationAndRedeemReserveCollateral.ts +1 -1
- package/src/@codegen/klend/instructions/updateGlobalConfig.ts +1 -2
- package/src/@codegen/klend/instructions/updateReserveConfig.ts +1 -2
- package/src/@codegen/klend/instructions/withdrawObligationCollateral.ts +1 -1
- package/src/@codegen/klend/instructions/withdrawObligationCollateralV2.ts +1 -1
- package/src/@codegen/klend/types/AssetTier.ts +119 -0
- package/src/@codegen/klend/types/ObligationLiquidity.ts +9 -39
- package/src/@codegen/klend/types/ObligationOrder.ts +4 -4
- package/src/@codegen/klend/types/ReserveConfig.ts +39 -171
- package/src/@codegen/klend/types/ReserveFees.ts +12 -12
- package/src/@codegen/klend/types/ReserveLiquidity.ts +12 -30
- package/src/@codegen/klend/types/UpdateConfigMode.ts +26 -206
- package/src/@codegen/klend/types/UpdateLendingMarketMode.ts +0 -300
- package/src/@codegen/klend/types/index.ts +16 -45
- package/src/@codegen/klend/zero_padding/ObligationZP.ts +13 -22
- package/src/classes/action.ts +8 -577
- package/src/classes/manager.ts +0 -11
- package/src/classes/market.ts +5 -36
- package/src/classes/obligation.ts +1 -1
- package/src/classes/reserve.ts +8 -13
- package/src/classes/unstakingPool.ts +6 -83
- package/src/classes/vault.ts +57 -38
- package/src/idl/klend.json +294 -2187
- package/src/lending_operations/index.ts +0 -1
- package/src/manager/client_kamino_manager.ts +9 -13
- package/src/utils/ata.ts +79 -0
- package/src/utils/managerTypes.ts +4 -9
- package/src/utils/seeds.ts +26 -28
- package/dist/@codegen/klend/accounts/PoolState.d.ts +0 -53
- package/dist/@codegen/klend/accounts/PoolState.d.ts.map +0 -1
- package/dist/@codegen/klend/accounts/PoolState.js +0 -167
- package/dist/@codegen/klend/accounts/PoolState.js.map +0 -1
- package/dist/@codegen/klend/accounts/UnstakeTicket.d.ts +0 -41
- package/dist/@codegen/klend/accounts/UnstakeTicket.d.ts.map +0 -1
- package/dist/@codegen/klend/accounts/UnstakeTicket.js +0 -143
- package/dist/@codegen/klend/accounts/UnstakeTicket.js.map +0 -1
- package/dist/@codegen/klend/accounts/WithdrawTicket.d.ts +0 -132
- package/dist/@codegen/klend/accounts/WithdrawTicket.d.ts.map +0 -1
- package/dist/@codegen/klend/accounts/WithdrawTicket.js +0 -191
- package/dist/@codegen/klend/accounts/WithdrawTicket.js.map +0 -1
- package/dist/@codegen/klend/instructions/enqueueToWithdraw.d.ts +0 -39
- package/dist/@codegen/klend/instructions/enqueueToWithdraw.d.ts.map +0 -1
- package/dist/@codegen/klend/instructions/enqueueToWithdraw.js +0 -67
- package/dist/@codegen/klend/instructions/enqueueToWithdraw.js.map +0 -1
- package/dist/@codegen/klend/instructions/fillBorrowOrder.d.ts +0 -36
- package/dist/@codegen/klend/instructions/fillBorrowOrder.d.ts.map +0 -1
- package/dist/@codegen/klend/instructions/fillBorrowOrder.js +0 -49
- package/dist/@codegen/klend/instructions/fillBorrowOrder.js.map +0 -1
- package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.d.ts +0 -47
- package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.d.ts.map +0 -1
- package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.js +0 -66
- package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.js.map +0 -1
- package/dist/@codegen/klend/instructions/setBorrowOrder.d.ts +0 -31
- package/dist/@codegen/klend/instructions/setBorrowOrder.d.ts.map +0 -1
- package/dist/@codegen/klend/instructions/setBorrowOrder.js +0 -64
- package/dist/@codegen/klend/instructions/setBorrowOrder.js.map +0 -1
- package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.d.ts +0 -53
- package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.d.ts.map +0 -1
- package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.js +0 -190
- package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.js.map +0 -1
- package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.d.ts +0 -70
- package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.d.ts.map +0 -1
- package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.js +0 -261
- package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.js.map +0 -1
- package/dist/@codegen/klend/instructions/withdrawObligationUsol.d.ts +0 -41
- package/dist/@codegen/klend/instructions/withdrawObligationUsol.d.ts.map +0 -1
- package/dist/@codegen/klend/instructions/withdrawObligationUsol.js +0 -135
- package/dist/@codegen/klend/instructions/withdrawObligationUsol.js.map +0 -1
- package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.d.ts +0 -51
- package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.d.ts.map +0 -1
- package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.js +0 -28
- package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.js.map +0 -1
- package/dist/@codegen/klend/types/BorrowOrder.d.ts +0 -192
- package/dist/@codegen/klend/types/BorrowOrder.d.ts.map +0 -1
- package/dist/@codegen/klend/types/BorrowOrder.js +0 -194
- package/dist/@codegen/klend/types/BorrowOrder.js.map +0 -1
- package/dist/@codegen/klend/types/BorrowOrderConfigArgs.d.ts +0 -39
- package/dist/@codegen/klend/types/BorrowOrderConfigArgs.d.ts.map +0 -1
- package/dist/@codegen/klend/types/BorrowOrderConfigArgs.js +0 -100
- package/dist/@codegen/klend/types/BorrowOrderConfigArgs.js.map +0 -1
- package/dist/@codegen/klend/types/WithdrawQueue.d.ts +0 -64
- package/dist/@codegen/klend/types/WithdrawQueue.d.ts.map +0 -1
- package/dist/@codegen/klend/types/WithdrawQueue.js +0 -104
- package/dist/@codegen/klend/types/WithdrawQueue.js.map +0 -1
- package/dist/lending_operations/unstake_lst_collateral.d.ts +0 -12
- package/dist/lending_operations/unstake_lst_collateral.d.ts.map +0 -1
- package/dist/lending_operations/unstake_lst_collateral.js +0 -104
- package/dist/lending_operations/unstake_lst_collateral.js.map +0 -1
- package/src/@codegen/klend/accounts/PoolState.ts +0 -192
- package/src/@codegen/klend/accounts/UnstakeTicket.ts +0 -160
- package/src/@codegen/klend/accounts/WithdrawTicket.ts +0 -256
- package/src/@codegen/klend/instructions/enqueueToWithdraw.ts +0 -89
- package/src/@codegen/klend/instructions/fillBorrowOrder.ts +0 -96
- package/src/@codegen/klend/instructions/recoverInvalidTicketCollateral.ts +0 -96
- package/src/@codegen/klend/instructions/setBorrowOrder.ts +0 -77
- package/src/@codegen/klend/instructions/unstakeLstCollateralEnd.ts +0 -251
- package/src/@codegen/klend/instructions/unstakeLstCollateralStart.ts +0 -353
- package/src/@codegen/klend/instructions/withdrawObligationUsol.ts +0 -168
- package/src/@codegen/klend/instructions/withdrawQueuedLiquidity.ts +0 -92
- package/src/@codegen/klend/types/BorrowOrder.ts +0 -267
- package/src/@codegen/klend/types/BorrowOrderConfigArgs.ts +0 -87
- package/src/@codegen/klend/types/WithdrawQueue.ts +0 -117
- package/src/lending_operations/unstake_lst_collateral.ts +0 -174
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { address, Address } from "@solana/kit" // 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 types from "../types" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
4
|
-
import * as borsh from "@coral-xyz/borsh"
|
|
5
|
-
import { borshAddress } from "../utils"
|
|
6
|
-
|
|
7
|
-
export interface WithdrawQueueFields {
|
|
8
|
-
/** The part of [ReserveLiquidity::total_available_amount] locked for ticketed withdrawals. */
|
|
9
|
-
queuedCollateralAmount: BN
|
|
10
|
-
/**
|
|
11
|
-
* The sequence number of the next ticket to be issued when enqueueing to withdraw.
|
|
12
|
-
* Note: it is also a number of tickets issued so far.
|
|
13
|
-
*/
|
|
14
|
-
nextIssuedTicketSequenceNumber: BN
|
|
15
|
-
/**
|
|
16
|
-
* The sequence number of the next ticket to be used for actually transferring the withdrawn
|
|
17
|
-
* liquidity (assuming it is available in the reserve).
|
|
18
|
-
* Note: it is also a number of fully-consumed tickets so far.
|
|
19
|
-
*/
|
|
20
|
-
nextWithdrawableTicketSequenceNumber: BN
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface WithdrawQueueJSON {
|
|
24
|
-
/** The part of [ReserveLiquidity::total_available_amount] locked for ticketed withdrawals. */
|
|
25
|
-
queuedCollateralAmount: string
|
|
26
|
-
/**
|
|
27
|
-
* The sequence number of the next ticket to be issued when enqueueing to withdraw.
|
|
28
|
-
* Note: it is also a number of tickets issued so far.
|
|
29
|
-
*/
|
|
30
|
-
nextIssuedTicketSequenceNumber: string
|
|
31
|
-
/**
|
|
32
|
-
* The sequence number of the next ticket to be used for actually transferring the withdrawn
|
|
33
|
-
* liquidity (assuming it is available in the reserve).
|
|
34
|
-
* Note: it is also a number of fully-consumed tickets so far.
|
|
35
|
-
*/
|
|
36
|
-
nextWithdrawableTicketSequenceNumber: string
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/** A tracker of ticket-based withdrawals. */
|
|
40
|
-
export class WithdrawQueue {
|
|
41
|
-
/** The part of [ReserveLiquidity::total_available_amount] locked for ticketed withdrawals. */
|
|
42
|
-
readonly queuedCollateralAmount: BN
|
|
43
|
-
/**
|
|
44
|
-
* The sequence number of the next ticket to be issued when enqueueing to withdraw.
|
|
45
|
-
* Note: it is also a number of tickets issued so far.
|
|
46
|
-
*/
|
|
47
|
-
readonly nextIssuedTicketSequenceNumber: BN
|
|
48
|
-
/**
|
|
49
|
-
* The sequence number of the next ticket to be used for actually transferring the withdrawn
|
|
50
|
-
* liquidity (assuming it is available in the reserve).
|
|
51
|
-
* Note: it is also a number of fully-consumed tickets so far.
|
|
52
|
-
*/
|
|
53
|
-
readonly nextWithdrawableTicketSequenceNumber: BN
|
|
54
|
-
|
|
55
|
-
constructor(fields: WithdrawQueueFields) {
|
|
56
|
-
this.queuedCollateralAmount = fields.queuedCollateralAmount
|
|
57
|
-
this.nextIssuedTicketSequenceNumber = fields.nextIssuedTicketSequenceNumber
|
|
58
|
-
this.nextWithdrawableTicketSequenceNumber =
|
|
59
|
-
fields.nextWithdrawableTicketSequenceNumber
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
static layout(property?: string) {
|
|
63
|
-
return borsh.struct(
|
|
64
|
-
[
|
|
65
|
-
borsh.u64("queuedCollateralAmount"),
|
|
66
|
-
borsh.u64("nextIssuedTicketSequenceNumber"),
|
|
67
|
-
borsh.u64("nextWithdrawableTicketSequenceNumber"),
|
|
68
|
-
],
|
|
69
|
-
property
|
|
70
|
-
)
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
74
|
-
static fromDecoded(obj: any) {
|
|
75
|
-
return new WithdrawQueue({
|
|
76
|
-
queuedCollateralAmount: obj.queuedCollateralAmount,
|
|
77
|
-
nextIssuedTicketSequenceNumber: obj.nextIssuedTicketSequenceNumber,
|
|
78
|
-
nextWithdrawableTicketSequenceNumber:
|
|
79
|
-
obj.nextWithdrawableTicketSequenceNumber,
|
|
80
|
-
})
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
static toEncodable(fields: WithdrawQueueFields) {
|
|
84
|
-
return {
|
|
85
|
-
queuedCollateralAmount: fields.queuedCollateralAmount,
|
|
86
|
-
nextIssuedTicketSequenceNumber: fields.nextIssuedTicketSequenceNumber,
|
|
87
|
-
nextWithdrawableTicketSequenceNumber:
|
|
88
|
-
fields.nextWithdrawableTicketSequenceNumber,
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
toJSON(): WithdrawQueueJSON {
|
|
93
|
-
return {
|
|
94
|
-
queuedCollateralAmount: this.queuedCollateralAmount.toString(),
|
|
95
|
-
nextIssuedTicketSequenceNumber:
|
|
96
|
-
this.nextIssuedTicketSequenceNumber.toString(),
|
|
97
|
-
nextWithdrawableTicketSequenceNumber:
|
|
98
|
-
this.nextWithdrawableTicketSequenceNumber.toString(),
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
static fromJSON(obj: WithdrawQueueJSON): WithdrawQueue {
|
|
103
|
-
return new WithdrawQueue({
|
|
104
|
-
queuedCollateralAmount: new BN(obj.queuedCollateralAmount),
|
|
105
|
-
nextIssuedTicketSequenceNumber: new BN(
|
|
106
|
-
obj.nextIssuedTicketSequenceNumber
|
|
107
|
-
),
|
|
108
|
-
nextWithdrawableTicketSequenceNumber: new BN(
|
|
109
|
-
obj.nextWithdrawableTicketSequenceNumber
|
|
110
|
-
),
|
|
111
|
-
})
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
toEncodable() {
|
|
115
|
-
return WithdrawQueue.toEncodable(this)
|
|
116
|
-
}
|
|
117
|
-
}
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Fraction,
|
|
3
|
-
getStandardPoolMintRemainingAccounts,
|
|
4
|
-
KaminoAction,
|
|
5
|
-
KaminoMarket,
|
|
6
|
-
KaminoObligation,
|
|
7
|
-
KaminoReserve,
|
|
8
|
-
maybeGetStakedPoolByMint,
|
|
9
|
-
} from '../classes';
|
|
10
|
-
import { getFlashLoanInstructions, getScopeRefreshIx } from '../leverage';
|
|
11
|
-
import {
|
|
12
|
-
createAtasIdempotent,
|
|
13
|
-
getComputeBudgetAndPriorityFeeIxs,
|
|
14
|
-
ScopePriceRefreshConfig,
|
|
15
|
-
SLOTS_PER_DAY,
|
|
16
|
-
} from '../utils';
|
|
17
|
-
import Decimal from 'decimal.js';
|
|
18
|
-
import BN from 'bn.js';
|
|
19
|
-
import { Address, IInstruction, none, Option, Slot, TransactionSigner } from '@solana/kit';
|
|
20
|
-
|
|
21
|
-
const LST_CONVERSION_MARGIN_BPS = new Decimal(100);
|
|
22
|
-
const FULL_BPS = new Decimal(10_000);
|
|
23
|
-
|
|
24
|
-
export async function buildUnstakeLstCollateralStartIxs(
|
|
25
|
-
market: KaminoMarket,
|
|
26
|
-
obligation: KaminoObligation,
|
|
27
|
-
owner: TransactionSigner,
|
|
28
|
-
lstMint: Address,
|
|
29
|
-
referrer: Option<Address>,
|
|
30
|
-
currentSlot: Slot,
|
|
31
|
-
budgetAndPriorityFeeIxs: IInstruction[] | undefined,
|
|
32
|
-
scopeRefreshConfig: ScopePriceRefreshConfig | undefined
|
|
33
|
-
): Promise<{ instructions: IInstruction[]; remainingSigners: TransactionSigner[] }> {
|
|
34
|
-
// Get reserves based on obligation
|
|
35
|
-
const usolMint = await market.getUsolPoolMint();
|
|
36
|
-
const usolReserve = market.getReserveByMint(usolMint);
|
|
37
|
-
const lstReserve = market.getReserveByMint(lstMint);
|
|
38
|
-
const debtReserve = market.reserves.get(obligation.state.borrows[0].borrowReserve);
|
|
39
|
-
if (!usolReserve) {
|
|
40
|
-
throw new Error(`Cannot fetch usol reserve for mint ${usolMint}`);
|
|
41
|
-
}
|
|
42
|
-
if (!lstReserve) {
|
|
43
|
-
throw new Error(`Cannot fetch lst reserve for mint ${obligation.state.deposits[0].depositReserve}`);
|
|
44
|
-
}
|
|
45
|
-
if (!debtReserve) {
|
|
46
|
-
throw new Error(`Cannot fetch debt reserve for mint ${obligation.state.borrows[0].borrowReserve}`);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// 0. Compute sol to repay + lst to flash borrow + additional accounts
|
|
50
|
-
const stakePool = await maybeGetStakedPoolByMint(market.getRpc(), lstReserve.getLiquidityMint());
|
|
51
|
-
if (!stakePool) {
|
|
52
|
-
throw new Error(`Cannot fetch stake pool for mint ${lstReserve.getLiquidityMint()}`);
|
|
53
|
-
}
|
|
54
|
-
const { lstToConvert } = getUnstakeLstCollateralApproximateInputs(
|
|
55
|
-
market,
|
|
56
|
-
debtReserve,
|
|
57
|
-
lstReserve,
|
|
58
|
-
obligation,
|
|
59
|
-
currentSlot
|
|
60
|
-
);
|
|
61
|
-
const [depositStakedSolRemainingAccounts, remainingSigners] = await getStandardPoolMintRemainingAccounts(
|
|
62
|
-
market.getRpc(),
|
|
63
|
-
stakePool[0],
|
|
64
|
-
stakePool[1],
|
|
65
|
-
new BN(lstToConvert.toString())
|
|
66
|
-
);
|
|
67
|
-
// 1. Create atas & budget txns
|
|
68
|
-
const budgetIxs = budgetAndPriorityFeeIxs || getComputeBudgetAndPriorityFeeIxs(1_400_000);
|
|
69
|
-
|
|
70
|
-
const atas = [
|
|
71
|
-
{ mint: usolReserve.getLiquidityMint(), tokenProgram: usolReserve.getLiquidityTokenProgram() },
|
|
72
|
-
{ mint: lstReserve.getLiquidityMint(), tokenProgram: lstReserve.getLiquidityTokenProgram() },
|
|
73
|
-
];
|
|
74
|
-
|
|
75
|
-
const atasAndIxs = await createAtasIdempotent(owner, atas);
|
|
76
|
-
const [, { ata: lstAta }] = atasAndIxs;
|
|
77
|
-
const scopeRefreshIx = await getScopeRefreshIx(market, lstReserve, debtReserve, obligation, scopeRefreshConfig);
|
|
78
|
-
|
|
79
|
-
// 2. Flash borrow & repay the debt to repay amount needed
|
|
80
|
-
const { flashBorrowIx, flashRepayIx } = getFlashLoanInstructions({
|
|
81
|
-
borrowIxIndex: budgetIxs.length + atasAndIxs.length + (scopeRefreshIx.length > 0 ? 1 : 0),
|
|
82
|
-
userTransferAuthority: owner,
|
|
83
|
-
lendingMarketAuthority: await market.getLendingMarketAuthority(),
|
|
84
|
-
lendingMarketAddress: market.getAddress(),
|
|
85
|
-
reserve: lstReserve,
|
|
86
|
-
amountLamports: lstToConvert,
|
|
87
|
-
destinationAta: lstAta,
|
|
88
|
-
// TODO(referrals): once we support referrals, we will have to replace the placeholder args below:
|
|
89
|
-
referrerAccount: none(),
|
|
90
|
-
referrerTokenState: none(),
|
|
91
|
-
programId: market.programId,
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
// 3. Repay using the flash borrowed funds & withdraw collateral to swap and pay the flash loan
|
|
95
|
-
const unstakeLstCollateralStartAction = await KaminoAction.buildUnstakeLstCollateralStartTxns(
|
|
96
|
-
market,
|
|
97
|
-
lstToConvert.toString(),
|
|
98
|
-
usolReserve.getLiquidityMint(),
|
|
99
|
-
lstReserve.getLiquidityMint(),
|
|
100
|
-
owner,
|
|
101
|
-
currentSlot,
|
|
102
|
-
obligation,
|
|
103
|
-
depositStakedSolRemainingAccounts,
|
|
104
|
-
undefined,
|
|
105
|
-
0,
|
|
106
|
-
false,
|
|
107
|
-
undefined,
|
|
108
|
-
referrer
|
|
109
|
-
);
|
|
110
|
-
|
|
111
|
-
const instructions = [
|
|
112
|
-
...scopeRefreshIx,
|
|
113
|
-
...budgetIxs,
|
|
114
|
-
...atasAndIxs.map((x) => x.createAtaIx),
|
|
115
|
-
flashBorrowIx,
|
|
116
|
-
...KaminoAction.actionToIxs(unstakeLstCollateralStartAction),
|
|
117
|
-
flashRepayIx,
|
|
118
|
-
];
|
|
119
|
-
return {
|
|
120
|
-
instructions,
|
|
121
|
-
remainingSigners,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
export function getUnstakeLstCollateralApproximateInputs(
|
|
126
|
-
market: KaminoMarket,
|
|
127
|
-
debtReserve: KaminoReserve,
|
|
128
|
-
lstReserve: KaminoReserve,
|
|
129
|
-
obligation: KaminoObligation,
|
|
130
|
-
currentSlot: Slot
|
|
131
|
-
): {
|
|
132
|
-
lstToConvert: Decimal;
|
|
133
|
-
} {
|
|
134
|
-
// Compute the interest rate / curve after 4 days (~2 epochs)
|
|
135
|
-
const laterSlot = currentSlot + BigInt(SLOTS_PER_DAY * 4);
|
|
136
|
-
const borrow = obligation.state.borrows.find(
|
|
137
|
-
(borrow) => borrow.borrowReserve.toString() === debtReserve.address.toString()
|
|
138
|
-
);
|
|
139
|
-
const lstDeposit = obligation.state.deposits.find(
|
|
140
|
-
(deposit) => deposit.depositReserve.toString() === lstReserve.address.toString()
|
|
141
|
-
);
|
|
142
|
-
if (!borrow) {
|
|
143
|
-
throw new Error(
|
|
144
|
-
`Could not find borrow ${debtReserve.address.toString()} in obligation ${obligation.obligationAddress.toString()}`
|
|
145
|
-
);
|
|
146
|
-
}
|
|
147
|
-
if (!lstDeposit) {
|
|
148
|
-
throw new Error(
|
|
149
|
-
`Could not find deposit ${lstReserve.address.toString()} in obligation ${obligation.obligationAddress.toString()}`
|
|
150
|
-
);
|
|
151
|
-
}
|
|
152
|
-
const newInterestRate = obligation.estimateObligationInterestRate(market, debtReserve, borrow, laterSlot);
|
|
153
|
-
const debtToRepay = new Fraction(borrow.borrowedAmountSf).toDecimal().mul(newInterestRate);
|
|
154
|
-
|
|
155
|
-
// To compute the staked sol to convert we convert the sol to repay
|
|
156
|
-
// using the pool ratio, but we cap it at the total amount of deposited
|
|
157
|
-
// staked sol in the obligation (converted from collateral -> liquidity)
|
|
158
|
-
const lstPrice = lstReserve.getOracleMarketPrice();
|
|
159
|
-
const debtPrice = debtReserve.getOracleMarketPrice();
|
|
160
|
-
const equivalentLst = debtToRepay.mul(debtPrice).div(lstPrice);
|
|
161
|
-
const equivalentLstWithMargin = equivalentLst.mul(FULL_BPS.add(LST_CONVERSION_MARGIN_BPS)).div(FULL_BPS);
|
|
162
|
-
|
|
163
|
-
const newCollateralExchangeRate = debtReserve.getEstimatedCollateralExchangeRate(
|
|
164
|
-
laterSlot,
|
|
165
|
-
market.state.referralFeeBps
|
|
166
|
-
);
|
|
167
|
-
const lstCollateralAmount = new Decimal(equivalentLstWithMargin.toString()).mul(newCollateralExchangeRate);
|
|
168
|
-
const lstCollateralToConvert = Decimal.min(new Decimal(lstDeposit.depositedAmount.toString()), lstCollateralAmount);
|
|
169
|
-
|
|
170
|
-
const lstToConvert = lstCollateralToConvert.div(newCollateralExchangeRate).ceil();
|
|
171
|
-
return {
|
|
172
|
-
lstToConvert,
|
|
173
|
-
};
|
|
174
|
-
}
|