@kamino-finance/klend-sdk 7.4.0-beta.0 → 7.4.0-beta.2
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/kvault/accounts/LendingMarket.d.ts +480 -0
- package/dist/@codegen/kvault/accounts/LendingMarket.d.ts.map +1 -0
- package/dist/@codegen/kvault/accounts/LendingMarket.js +480 -0
- package/dist/@codegen/kvault/accounts/LendingMarket.js.map +1 -0
- package/dist/@codegen/kvault/accounts/Obligation.d.ts +208 -0
- package/dist/@codegen/kvault/accounts/Obligation.d.ts.map +1 -0
- package/dist/@codegen/kvault/accounts/Obligation.js +298 -0
- package/dist/@codegen/kvault/accounts/Obligation.js.map +1 -0
- package/dist/@codegen/kvault/accounts/ReferrerTokenState.d.ts +51 -0
- package/dist/@codegen/kvault/accounts/ReferrerTokenState.d.ts.map +1 -0
- package/dist/@codegen/kvault/accounts/ReferrerTokenState.js +137 -0
- package/dist/@codegen/kvault/accounts/ReferrerTokenState.js.map +1 -0
- package/dist/@codegen/kvault/accounts/Reserve.d.ts +6 -0
- package/dist/@codegen/kvault/accounts/Reserve.d.ts.map +1 -1
- package/dist/@codegen/kvault/accounts/Reserve.js +9 -2
- package/dist/@codegen/kvault/accounts/Reserve.js.map +1 -1
- package/dist/@codegen/kvault/accounts/VaultState.d.ts +45 -3
- package/dist/@codegen/kvault/accounts/VaultState.d.ts.map +1 -1
- package/dist/@codegen/kvault/accounts/VaultState.js +28 -4
- package/dist/@codegen/kvault/accounts/VaultState.js.map +1 -1
- package/dist/@codegen/kvault/accounts/WithdrawTicket.d.ts +144 -0
- package/dist/@codegen/kvault/accounts/WithdrawTicket.d.ts.map +1 -0
- package/dist/@codegen/kvault/accounts/WithdrawTicket.js +205 -0
- package/dist/@codegen/kvault/accounts/WithdrawTicket.js.map +1 -0
- package/dist/@codegen/kvault/accounts/index.d.ts +8 -0
- package/dist/@codegen/kvault/accounts/index.d.ts.map +1 -1
- package/dist/@codegen/kvault/accounts/index.js +9 -1
- package/dist/@codegen/kvault/accounts/index.js.map +1 -1
- package/dist/@codegen/kvault/errors/custom.d.ts +81 -1
- package/dist/@codegen/kvault/errors/custom.d.ts.map +1 -1
- package/dist/@codegen/kvault/errors/custom.js +141 -1
- package/dist/@codegen/kvault/errors/custom.js.map +1 -1
- package/dist/@codegen/kvault/instructions/index.d.ts +4 -0
- package/dist/@codegen/kvault/instructions/index.d.ts.map +1 -1
- package/dist/@codegen/kvault/instructions/index.js +5 -1
- package/dist/@codegen/kvault/instructions/index.js.map +1 -1
- package/dist/@codegen/kvault/instructions/invest.d.ts +9 -0
- package/dist/@codegen/kvault/instructions/invest.d.ts.map +1 -1
- package/dist/@codegen/kvault/instructions/invest.js +7 -0
- package/dist/@codegen/kvault/instructions/invest.js.map +1 -1
- package/dist/@codegen/kvault/instructions/investInVirtualReserveAndFillOrder.d.ts +51 -0
- package/dist/@codegen/kvault/instructions/investInVirtualReserveAndFillOrder.d.ts.map +1 -0
- package/dist/@codegen/kvault/instructions/investInVirtualReserveAndFillOrder.js +154 -0
- package/dist/@codegen/kvault/instructions/investInVirtualReserveAndFillOrder.js.map +1 -0
- package/dist/@codegen/kvault/instructions/investInVirtualReserveAndFillWithdrawalTicket.d.ts +54 -0
- package/dist/@codegen/kvault/instructions/investInVirtualReserveAndFillWithdrawalTicket.d.ts.map +1 -0
- package/dist/@codegen/kvault/instructions/investInVirtualReserveAndFillWithdrawalTicket.js +166 -0
- package/dist/@codegen/kvault/instructions/investInVirtualReserveAndFillWithdrawalTicket.js.map +1 -0
- package/dist/@codegen/kvault/instructions/updateKlendQueueAccounting.d.ts +1 -0
- package/dist/@codegen/kvault/instructions/updateKlendQueueAccounting.d.ts.map +1 -0
- package/dist/@codegen/kvault/instructions/updateKlendQueueAccounting.js +72 -0
- package/dist/@codegen/kvault/instructions/updateKlendQueueAccounting.js.map +1 -0
- package/dist/@codegen/kvault/instructions/updateReserveAllocation.d.ts +3 -1
- package/dist/@codegen/kvault/instructions/updateReserveAllocation.d.ts.map +1 -1
- package/dist/@codegen/kvault/instructions/updateReserveAllocation.js +3 -0
- package/dist/@codegen/kvault/instructions/updateReserveAllocation.js.map +1 -1
- package/dist/@codegen/kvault/types/BorrowOrder.d.ts +192 -0
- package/dist/@codegen/kvault/types/BorrowOrder.d.ts.map +1 -0
- package/dist/@codegen/kvault/types/BorrowOrder.js +194 -0
- package/dist/@codegen/kvault/types/BorrowOrder.js.map +1 -0
- package/dist/@codegen/kvault/types/ElevationGroup.d.ts +67 -0
- package/dist/@codegen/kvault/types/ElevationGroup.d.ts.map +1 -0
- package/dist/@codegen/kvault/types/ElevationGroup.js +137 -0
- package/dist/@codegen/kvault/types/ElevationGroup.js.map +1 -0
- package/dist/@codegen/kvault/types/FixedTermBorrowRolloverConfig.d.ts +145 -0
- package/dist/@codegen/kvault/types/FixedTermBorrowRolloverConfig.d.ts.map +1 -0
- package/dist/@codegen/kvault/types/FixedTermBorrowRolloverConfig.js +144 -0
- package/dist/@codegen/kvault/types/FixedTermBorrowRolloverConfig.js.map +1 -0
- package/dist/@codegen/kvault/types/ObligationCollateral.d.ts +72 -0
- package/dist/@codegen/kvault/types/ObligationCollateral.d.ts.map +1 -0
- package/dist/@codegen/kvault/types/ObligationCollateral.js +119 -0
- package/dist/@codegen/kvault/types/ObligationCollateral.js.map +1 -0
- package/dist/@codegen/kvault/types/ObligationLiquidity.d.ts +143 -0
- package/dist/@codegen/kvault/types/ObligationLiquidity.d.ts.map +1 -0
- package/dist/@codegen/kvault/types/ObligationLiquidity.js +165 -0
- package/dist/@codegen/kvault/types/ObligationLiquidity.js.map +1 -0
- package/dist/@codegen/kvault/types/ObligationOrder.d.ts +284 -0
- package/dist/@codegen/kvault/types/ObligationOrder.d.ts.map +1 -0
- package/dist/@codegen/kvault/types/ObligationOrder.js +205 -0
- package/dist/@codegen/kvault/types/ObligationOrder.js.map +1 -0
- package/dist/@codegen/kvault/types/ReserveConfig.d.ts +60 -5
- package/dist/@codegen/kvault/types/ReserveConfig.d.ts.map +1 -1
- package/dist/@codegen/kvault/types/ReserveConfig.js +36 -7
- package/dist/@codegen/kvault/types/ReserveConfig.js.map +1 -1
- package/dist/@codegen/kvault/types/ReserveLiquidity.d.ts +26 -8
- package/dist/@codegen/kvault/types/ReserveLiquidity.d.ts.map +1 -1
- package/dist/@codegen/kvault/types/ReserveLiquidity.js +14 -8
- package/dist/@codegen/kvault/types/ReserveLiquidity.js.map +1 -1
- package/dist/@codegen/kvault/types/ReserveType.d.ts +32 -0
- package/dist/@codegen/kvault/types/ReserveType.d.ts.map +1 -0
- package/dist/@codegen/kvault/types/ReserveType.js +108 -0
- package/dist/@codegen/kvault/types/ReserveType.js.map +1 -0
- package/dist/@codegen/kvault/types/VaultAllocation.d.ts +60 -0
- package/dist/@codegen/kvault/types/VaultAllocation.d.ts.map +1 -1
- package/dist/@codegen/kvault/types/VaultAllocation.js +38 -2
- package/dist/@codegen/kvault/types/VaultAllocation.js.map +1 -1
- package/dist/@codegen/kvault/types/WithdrawQueue.d.ts +64 -0
- package/dist/@codegen/kvault/types/WithdrawQueue.d.ts.map +1 -0
- package/dist/@codegen/kvault/types/WithdrawQueue.js +104 -0
- package/dist/@codegen/kvault/types/WithdrawQueue.js.map +1 -0
- package/dist/@codegen/kvault/types/WithdrawTicketProgressEvent.d.ts +19 -0
- package/dist/@codegen/kvault/types/WithdrawTicketProgressEvent.d.ts.map +1 -0
- package/dist/@codegen/kvault/types/WithdrawTicketProgressEvent.js +82 -0
- package/dist/@codegen/kvault/types/WithdrawTicketProgressEvent.js.map +1 -0
- package/dist/@codegen/kvault/types/index.d.ts +34 -0
- package/dist/@codegen/kvault/types/index.d.ts.map +1 -1
- package/dist/@codegen/kvault/types/index.js +19 -1
- package/dist/@codegen/kvault/types/index.js.map +1 -1
- package/dist/classes/action.d.ts +21 -91
- package/dist/classes/action.d.ts.map +1 -1
- package/dist/classes/action.js +141 -119
- package/dist/classes/action.js.map +1 -1
- package/dist/classes/actionTypes.d.ts +310 -0
- package/dist/classes/actionTypes.d.ts.map +1 -0
- package/dist/classes/actionTypes.js +3 -0
- package/dist/classes/actionTypes.js.map +1 -0
- package/dist/classes/market.d.ts +109 -15
- package/dist/classes/market.d.ts.map +1 -1
- package/dist/classes/market.js +186 -26
- package/dist/classes/market.js.map +1 -1
- package/dist/classes/obligation.d.ts +11 -11
- package/dist/classes/obligation.d.ts.map +1 -1
- package/dist/classes/obligation.js +56 -56
- package/dist/classes/obligation.js.map +1 -1
- package/dist/classes/obligationOrder.d.ts.map +1 -1
- package/dist/classes/obligationOrder.js +6 -3
- package/dist/classes/obligationOrder.js.map +1 -1
- package/dist/classes/reserve.d.ts +9 -1
- package/dist/classes/reserve.d.ts.map +1 -1
- package/dist/classes/reserve.js +20 -0
- package/dist/classes/reserve.js.map +1 -1
- package/dist/classes/shared.d.ts +1 -0
- package/dist/classes/shared.d.ts.map +1 -1
- package/dist/classes/utils.d.ts +2 -0
- package/dist/classes/utils.d.ts.map +1 -1
- package/dist/classes/utils.js +12 -1
- package/dist/classes/utils.js.map +1 -1
- package/dist/classes/vault.d.ts +4 -2
- package/dist/classes/vault.d.ts.map +1 -1
- package/dist/classes/vault.js +12 -2
- package/dist/classes/vault.js.map +1 -1
- package/dist/client/commands/borrow.d.ts +1 -1
- package/dist/client/commands/borrow.d.ts.map +1 -1
- package/dist/client/commands/borrow.js +11 -2
- package/dist/client/commands/borrow.js.map +1 -1
- package/dist/client/commands/deposit.d.ts +1 -1
- package/dist/client/commands/deposit.d.ts.map +1 -1
- package/dist/client/commands/deposit.js +11 -2
- package/dist/client/commands/deposit.js.map +1 -1
- package/dist/client/commands/printReserve.d.ts +1 -1
- package/dist/client/commands/printReserve.d.ts.map +1 -1
- package/dist/client/commands/printReserve.js +2 -4
- package/dist/client/commands/printReserve.js.map +1 -1
- package/dist/client/commands/repay.d.ts +1 -1
- package/dist/client/commands/repay.d.ts.map +1 -1
- package/dist/client/commands/repay.js +12 -2
- package/dist/client/commands/repay.js.map +1 -1
- package/dist/client/commands/withdraw.d.ts +1 -1
- package/dist/client/commands/withdraw.d.ts.map +1 -1
- package/dist/client/commands/withdraw.js +11 -2
- package/dist/client/commands/withdraw.js.map +1 -1
- package/dist/lending_operations/repay_with_collateral_calcs.d.ts +1 -1
- package/dist/lending_operations/repay_with_collateral_calcs.d.ts.map +1 -1
- package/dist/lending_operations/repay_with_collateral_calcs.js +2 -2
- package/dist/lending_operations/repay_with_collateral_calcs.js.map +1 -1
- package/dist/lending_operations/repay_with_collateral_operations.d.ts +4 -4
- package/dist/lending_operations/repay_with_collateral_operations.d.ts.map +1 -1
- package/dist/lending_operations/repay_with_collateral_operations.js +43 -10
- package/dist/lending_operations/repay_with_collateral_operations.js.map +1 -1
- package/dist/lending_operations/swap_collateral_operations.d.ts +4 -4
- package/dist/lending_operations/swap_collateral_operations.d.ts.map +1 -1
- package/dist/lending_operations/swap_collateral_operations.js +40 -21
- package/dist/lending_operations/swap_collateral_operations.js.map +1 -1
- package/dist/leverage/operations.d.ts +6 -6
- package/dist/leverage/operations.d.ts.map +1 -1
- package/dist/leverage/operations.js +167 -52
- package/dist/leverage/operations.js.map +1 -1
- package/dist/leverage/types.d.ts +2 -2
- package/dist/leverage/types.d.ts.map +1 -1
- package/dist/manager/client_kamino_manager.js +0 -2
- package/dist/manager/client_kamino_manager.js.map +1 -1
- package/dist/obligation_orders/price_based.js +5 -3
- package/dist/obligation_orders/price_based.js.map +1 -1
- package/dist/utils/ObligationType.d.ts +33 -1
- package/dist/utils/ObligationType.d.ts.map +1 -1
- package/dist/utils/ObligationType.js +81 -2
- package/dist/utils/ObligationType.js.map +1 -1
- package/dist/utils/ReserveKind.d.ts +57 -0
- package/dist/utils/ReserveKind.d.ts.map +1 -0
- package/dist/utils/ReserveKind.js +76 -0
- package/dist/utils/ReserveKind.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/userMetadata.d.ts +2 -2
- package/dist/utils/userMetadata.d.ts.map +1 -1
- package/dist/utils/userMetadata.js +49 -25
- package/dist/utils/userMetadata.js.map +1 -1
- package/dist/utils/validations.d.ts +1 -0
- package/dist/utils/validations.d.ts.map +1 -1
- package/dist/utils/validations.js +5 -0
- package/dist/utils/validations.js.map +1 -1
- package/dist/utils/vault.d.ts.map +1 -1
- package/dist/utils/vault.js +2 -0
- package/dist/utils/vault.js.map +1 -1
- package/package.json +1 -1
- package/src/@codegen/kvault/accounts/LendingMarket.ts +837 -0
- package/src/@codegen/kvault/accounts/Obligation.ts +459 -0
- package/src/@codegen/kvault/accounts/ReferrerTokenState.ts +160 -0
- package/src/@codegen/kvault/accounts/Reserve.ts +13 -2
- package/src/@codegen/kvault/accounts/VaultState.ts +59 -7
- package/src/@codegen/kvault/accounts/WithdrawTicket.ts +280 -0
- package/src/@codegen/kvault/accounts/index.ts +11 -0
- package/src/@codegen/kvault/errors/custom.ts +152 -0
- package/src/@codegen/kvault/instructions/index.ts +10 -0
- package/src/@codegen/kvault/instructions/invest.ts +16 -0
- package/src/@codegen/kvault/instructions/investInVirtualReserveAndFillOrder.ts +189 -0
- package/src/@codegen/kvault/instructions/investInVirtualReserveAndFillWithdrawalTicket.ts +205 -0
- package/src/@codegen/kvault/instructions/updateKlendQueueAccounting.ts +76 -0
- package/src/@codegen/kvault/instructions/updateReserveAllocation.ts +4 -1
- package/src/@codegen/kvault/types/BorrowOrder.ts +267 -0
- package/src/@codegen/kvault/types/ElevationGroup.ts +134 -0
- package/src/@codegen/kvault/types/FixedTermBorrowRolloverConfig.ts +199 -0
- package/src/@codegen/kvault/types/ObligationCollateral.ts +129 -0
- package/src/@codegen/kvault/types/ObligationLiquidity.ts +226 -0
- package/src/@codegen/kvault/types/ObligationOrder.ts +348 -0
- package/src/@codegen/kvault/types/ReserveConfig.ts +72 -9
- package/src/@codegen/kvault/types/ReserveLiquidity.ts +30 -12
- package/src/@codegen/kvault/types/ReserveType.ts +89 -0
- package/src/@codegen/kvault/types/VaultAllocation.ts +74 -2
- package/src/@codegen/kvault/types/WithdrawQueue.ts +117 -0
- package/src/@codegen/kvault/types/WithdrawTicketProgressEvent.ts +59 -0
- package/src/@codegen/kvault/types/index.ts +52 -0
- package/src/classes/action.ts +321 -347
- package/src/classes/actionTypes.ts +295 -0
- package/src/classes/manager.ts +1 -1
- package/src/classes/market.ts +232 -30
- package/src/classes/obligation.ts +62 -59
- package/src/classes/obligationOrder.ts +6 -3
- package/src/classes/reserve.ts +24 -0
- package/src/classes/shared.ts +2 -0
- package/src/classes/utils.ts +8 -0
- package/src/classes/vault.ts +35 -4
- package/src/client/client.ts +17 -18
- package/src/client/commands/borrow.ts +10 -9
- package/src/client/commands/deposit.ts +10 -9
- package/src/client/commands/printReserve.ts +2 -4
- package/src/client/commands/repay.ts +11 -10
- package/src/client/commands/withdraw.ts +15 -9
- package/src/idl/kvault.json +2336 -299
- package/src/lending_operations/repay_with_collateral_calcs.ts +3 -4
- package/src/lending_operations/repay_with_collateral_operations.ts +40 -38
- package/src/lending_operations/swap_collateral_operations.ts +47 -41
- package/src/leverage/operations.ts +168 -129
- package/src/leverage/types.ts +2 -2
- package/src/manager/client_kamino_manager.ts +0 -2
- package/src/obligation_orders/price_based.ts +7 -5
- package/src/utils/ObligationType.ts +92 -1
- package/src/utils/ReserveKind.ts +94 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/userMetadata.ts +64 -30
- package/src/utils/validations.ts +5 -0
- package/src/utils/vault.ts +2 -0
|
@@ -11,6 +11,9 @@ export enum ObligationTypeTag {
|
|
|
11
11
|
Multiply = 1,
|
|
12
12
|
Lending = 2,
|
|
13
13
|
Leverage = 3,
|
|
14
|
+
MultiplyFixedRate = 4,
|
|
15
|
+
LendingFixedRate = 5,
|
|
16
|
+
LeverageFixedRate = 6,
|
|
14
17
|
}
|
|
15
18
|
|
|
16
19
|
export type InitObligationArgsModel = {
|
|
@@ -76,6 +79,36 @@ export class MultiplyObligation {
|
|
|
76
79
|
}
|
|
77
80
|
}
|
|
78
81
|
|
|
82
|
+
export class MultiplyObligationFixedRate {
|
|
83
|
+
readonly collReserveAddress: Address;
|
|
84
|
+
readonly debtReserveAddress: Address;
|
|
85
|
+
readonly programId: Address;
|
|
86
|
+
readonly id: number;
|
|
87
|
+
static tag = 4;
|
|
88
|
+
|
|
89
|
+
constructor(collReserveAddress: Address, debtReserveAddress: Address, programId: Address, id?: number) {
|
|
90
|
+
this.collReserveAddress = collReserveAddress;
|
|
91
|
+
this.debtReserveAddress = debtReserveAddress;
|
|
92
|
+
this.programId = programId;
|
|
93
|
+
this.id = id ?? 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
toArgs() {
|
|
97
|
+
const initObligationArgs: InitObligationArgsModel = {
|
|
98
|
+
tag: MultiplyObligationFixedRate.tag,
|
|
99
|
+
id: this.id,
|
|
100
|
+
seed1: this.collReserveAddress,
|
|
101
|
+
seed2: this.debtReserveAddress,
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
return initObligationArgs;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
toPda(market: Address, user: Address) {
|
|
108
|
+
return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
79
112
|
export class LeverageObligation {
|
|
80
113
|
readonly collToken: Address;
|
|
81
114
|
readonly debtToken: Address;
|
|
@@ -106,6 +139,36 @@ export class LeverageObligation {
|
|
|
106
139
|
}
|
|
107
140
|
}
|
|
108
141
|
|
|
142
|
+
export class LeverageObligationFixedRate {
|
|
143
|
+
readonly collReserveAddress: Address;
|
|
144
|
+
readonly debtReserveAddress: Address;
|
|
145
|
+
readonly programId: Address;
|
|
146
|
+
readonly id: number;
|
|
147
|
+
static tag = 6;
|
|
148
|
+
|
|
149
|
+
constructor(collReserveAddress: Address, debtReserveAddress: Address, programId: Address, id?: number) {
|
|
150
|
+
this.collReserveAddress = collReserveAddress;
|
|
151
|
+
this.debtReserveAddress = debtReserveAddress;
|
|
152
|
+
this.programId = programId;
|
|
153
|
+
this.id = id ?? 0;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
toArgs() {
|
|
157
|
+
const initObligationArgs: InitObligationArgsModel = {
|
|
158
|
+
tag: LeverageObligationFixedRate.tag,
|
|
159
|
+
id: this.id,
|
|
160
|
+
seed1: this.collReserveAddress,
|
|
161
|
+
seed2: this.debtReserveAddress,
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
return initObligationArgs;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
toPda(market: Address, user: Address) {
|
|
168
|
+
return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
109
172
|
export class LendingObligation {
|
|
110
173
|
readonly token: Address;
|
|
111
174
|
readonly programId: Address;
|
|
@@ -121,7 +184,7 @@ export class LendingObligation {
|
|
|
121
184
|
toArgs() {
|
|
122
185
|
const initObligationArgs: InitObligationArgsModel = {
|
|
123
186
|
tag: LendingObligation.tag,
|
|
124
|
-
id:
|
|
187
|
+
id: this.id,
|
|
125
188
|
seed1: this.token,
|
|
126
189
|
seed2: this.token,
|
|
127
190
|
};
|
|
@@ -134,6 +197,34 @@ export class LendingObligation {
|
|
|
134
197
|
}
|
|
135
198
|
}
|
|
136
199
|
|
|
200
|
+
export class LendingObligationFixedRate {
|
|
201
|
+
readonly reserveAddress: Address;
|
|
202
|
+
readonly programId: Address;
|
|
203
|
+
readonly id: number;
|
|
204
|
+
static tag = 5;
|
|
205
|
+
|
|
206
|
+
constructor(reserveAddress: Address, programId: Address, id?: number) {
|
|
207
|
+
this.reserveAddress = reserveAddress;
|
|
208
|
+
this.programId = programId;
|
|
209
|
+
this.id = id ?? 0;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
toArgs() {
|
|
213
|
+
const initObligationArgs: InitObligationArgsModel = {
|
|
214
|
+
tag: LendingObligationFixedRate.tag,
|
|
215
|
+
id: this.id,
|
|
216
|
+
seed1: this.reserveAddress,
|
|
217
|
+
seed2: this.reserveAddress,
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
return initObligationArgs;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
toPda(market: Address, user: Address) {
|
|
224
|
+
return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
137
228
|
export async function getObligationPdaWithArgs(
|
|
138
229
|
market: Address,
|
|
139
230
|
user: Address,
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import BN from 'bn.js';
|
|
2
|
+
import { KaminoReserve } from '../classes/reserve';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Base class for reserve kind identification.
|
|
6
|
+
* Since a market can have multiple reserves for the same mint (with different terms),
|
|
7
|
+
* this kind specifies which reserve to select.
|
|
8
|
+
*/
|
|
9
|
+
export abstract class ReserveKind {
|
|
10
|
+
/**
|
|
11
|
+
* Checks if a reserve matches this reserve kind's criteria
|
|
12
|
+
*/
|
|
13
|
+
abstract matches(reserve: KaminoReserve): boolean;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Returns a human-readable string representation
|
|
17
|
+
*/
|
|
18
|
+
abstract toString(): string;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Type check: returns true if this is an open-term reserve
|
|
22
|
+
*/
|
|
23
|
+
abstract isFloatRate(): boolean;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Type check: returns true if this is a fixed-term reserve
|
|
27
|
+
*/
|
|
28
|
+
abstract isFixedRate(): boolean;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Represents an open-term reserve with no fixed maturity.
|
|
33
|
+
*/
|
|
34
|
+
export class FloatRateReserveKind extends ReserveKind {
|
|
35
|
+
/**
|
|
36
|
+
* Checks if a reserve matches this open-term reserve kind (debtTermSeconds == 0)
|
|
37
|
+
*/
|
|
38
|
+
matches(reserve: KaminoReserve): boolean {
|
|
39
|
+
return reserve.state.config.debtTermSeconds.eq(new BN(0));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
toString(): string {
|
|
43
|
+
return 'FloatRate';
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
isFloatRate(): boolean {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
isFixedRate(): boolean {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Represents a fixed-term reserve with specific loan parameters.
|
|
57
|
+
*/
|
|
58
|
+
export class FixedRateReserveKind extends ReserveKind {
|
|
59
|
+
/**
|
|
60
|
+
* @param debtTermSeconds The debt term in seconds (e.g., new BN(30 * 24 * 60 * 60) for 30 days)
|
|
61
|
+
* @param borrowRateBps The maximum borrow rate in basis points (e.g., 500 for 5%)
|
|
62
|
+
*/
|
|
63
|
+
constructor(public readonly debtTermSeconds: BN, public readonly borrowRateBps: number) {
|
|
64
|
+
super();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Checks if a reserve matches this fixed-term reserve kind
|
|
69
|
+
*/
|
|
70
|
+
matches(reserve: KaminoReserve): boolean {
|
|
71
|
+
// Check debt term matches
|
|
72
|
+
if (!reserve.state.config.debtTermSeconds.eq(this.debtTermSeconds)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// For fixed-term reserves, all points on the borrow rate curve should have the same rate
|
|
77
|
+
const curvePoints = reserve.state.config.borrowRateCurve.points;
|
|
78
|
+
|
|
79
|
+
// Check if all points have the expected borrow rate
|
|
80
|
+
return curvePoints.every((point) => point.borrowRateBps === this.borrowRateBps);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
toString(): string {
|
|
84
|
+
return `FixedRate(term=${this.debtTermSeconds.toString()}s, rate=${this.borrowRateBps}bps)`;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
isFloatRate(): boolean {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
isFixedRate(): boolean {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
}
|
package/src/utils/index.ts
CHANGED
|
@@ -25,6 +25,8 @@ import {
|
|
|
25
25
|
UserMetadata,
|
|
26
26
|
obligationFarmStatePda,
|
|
27
27
|
DEFAULT_PUBLIC_KEY,
|
|
28
|
+
MultiplyObligationFixedRate,
|
|
29
|
+
LeverageObligationFixedRate,
|
|
28
30
|
} from '../lib';
|
|
29
31
|
import { KaminoReserve } from '../classes/reserve';
|
|
30
32
|
import { Buffer } from 'buffer';
|
|
@@ -42,8 +44,8 @@ export const getUserLutAddressAndSetupIxs = async (
|
|
|
42
44
|
user: TransactionSigner,
|
|
43
45
|
referrer: Option<Address> = none(),
|
|
44
46
|
withExtendLut: boolean = true,
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
multiplyReserveAddresses: { coll: Address; debt: Address }[] = [],
|
|
48
|
+
leverageReserveAddresses: { coll: Address; debt: Address }[] = [],
|
|
47
49
|
repayWithCollObligation: KaminoObligation | undefined = undefined,
|
|
48
50
|
payer: TransactionSigner = user
|
|
49
51
|
): Promise<[Address, Instruction[][]]> => {
|
|
@@ -89,8 +91,8 @@ export const getUserLutAddressAndSetupIxs = async (
|
|
|
89
91
|
userLookupTableAddress,
|
|
90
92
|
user.address,
|
|
91
93
|
referrer,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
+
multiplyReserveAddresses,
|
|
95
|
+
leverageReserveAddresses,
|
|
94
96
|
userMetadataState !== null,
|
|
95
97
|
repayWithCollObligation
|
|
96
98
|
);
|
|
@@ -110,8 +112,8 @@ const getDedupUserLookupTableAddresses = async (
|
|
|
110
112
|
tableAddress: Address,
|
|
111
113
|
user: Address,
|
|
112
114
|
referrer: Option<Address>,
|
|
113
|
-
|
|
114
|
-
|
|
115
|
+
multiplyReserveAddresses: { coll: Address; debt: Address }[] = [],
|
|
116
|
+
leverageReserveAddresses: { coll: Address; debt: Address }[] = [],
|
|
115
117
|
tableExists: boolean,
|
|
116
118
|
repayWithCollObligation: KaminoObligation | undefined = undefined
|
|
117
119
|
): Promise<Address[]> => {
|
|
@@ -119,8 +121,8 @@ const getDedupUserLookupTableAddresses = async (
|
|
|
119
121
|
kaminoMarket,
|
|
120
122
|
user,
|
|
121
123
|
referrer,
|
|
122
|
-
|
|
123
|
-
|
|
124
|
+
multiplyReserveAddresses,
|
|
125
|
+
leverageReserveAddresses,
|
|
124
126
|
repayWithCollObligation
|
|
125
127
|
);
|
|
126
128
|
|
|
@@ -148,8 +150,8 @@ const getUserLookupTableAddresses = async (
|
|
|
148
150
|
kaminoMarket: KaminoMarket,
|
|
149
151
|
user: Address,
|
|
150
152
|
referrer: Option<Address>,
|
|
151
|
-
|
|
152
|
-
|
|
153
|
+
multiplyReserveAddresses: { coll: Address; debt: Address }[] = [],
|
|
154
|
+
leverageReserveAddresses: { coll: Address; debt: Address }[] = [],
|
|
153
155
|
repayWithCollObligation: KaminoObligation | undefined = undefined
|
|
154
156
|
): Promise<{ address: Address; log: string }[]> => {
|
|
155
157
|
const addresses: { address: Address; log: string }[] = [];
|
|
@@ -158,13 +160,22 @@ const getUserLookupTableAddresses = async (
|
|
|
158
160
|
addresses.push({ address: userMetadataAddress, log: 'userMetadata address' });
|
|
159
161
|
|
|
160
162
|
const allMints: Address[] = [];
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
163
|
+
const allReserves: Address[] = [];
|
|
164
|
+
multiplyReserveAddresses.forEach(({ coll: collReserveAddress, debt: debtReserveAddress }) => {
|
|
165
|
+
const collReserveMint = kaminoMarket.getExistingReserveByAddress(collReserveAddress)!.getLiquidityMint();
|
|
166
|
+
const debtReserveMint = kaminoMarket.getExistingReserveByAddress(debtReserveAddress)!.getLiquidityMint();
|
|
167
|
+
allMints.push(collReserveMint);
|
|
168
|
+
allMints.push(debtReserveMint);
|
|
169
|
+
allReserves.push(collReserveAddress);
|
|
170
|
+
allReserves.push(debtReserveAddress);
|
|
164
171
|
});
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
172
|
+
leverageReserveAddresses.forEach(({ coll: collReserveAddress, debt: debtReserveAddress }) => {
|
|
173
|
+
const collReserveMint = kaminoMarket.getExistingReserveByAddress(collReserveAddress)!.getLiquidityMint();
|
|
174
|
+
const debtReserveMint = kaminoMarket.getExistingReserveByAddress(debtReserveAddress)!.getLiquidityMint();
|
|
175
|
+
allMints.push(collReserveMint);
|
|
176
|
+
allMints.push(debtReserveMint);
|
|
177
|
+
allReserves.push(collReserveAddress);
|
|
178
|
+
allReserves.push(debtReserveAddress);
|
|
168
179
|
});
|
|
169
180
|
|
|
170
181
|
if (repayWithCollObligation) {
|
|
@@ -178,9 +189,10 @@ const getUserLookupTableAddresses = async (
|
|
|
178
189
|
}
|
|
179
190
|
|
|
180
191
|
const dedupMints = [...new Set(allMints)];
|
|
192
|
+
const dedupReserveAddresses = [...new Set(allReserves)];
|
|
181
193
|
const reserves: KaminoReserve[] = [];
|
|
182
|
-
|
|
183
|
-
const kaminoReserve = kaminoMarket.
|
|
194
|
+
dedupReserveAddresses.forEach((reserveAddress) => {
|
|
195
|
+
const kaminoReserve = kaminoMarket.getReserveByAddress(reserveAddress);
|
|
184
196
|
if (kaminoReserve) {
|
|
185
197
|
reserves.push(kaminoReserve);
|
|
186
198
|
}
|
|
@@ -226,13 +238,13 @@ const getUserLookupTableAddresses = async (
|
|
|
226
238
|
}
|
|
227
239
|
|
|
228
240
|
const [multiplyObligations, multiplyObligationsFarmUserStates] =
|
|
229
|
-
await getMultiplyObligationAndObligationFarmStateAddresses(kaminoMarket, user,
|
|
241
|
+
await getMultiplyObligationAndObligationFarmStateAddresses(kaminoMarket, user, multiplyReserveAddresses);
|
|
230
242
|
|
|
231
243
|
addresses.push(...multiplyObligations);
|
|
232
244
|
addresses.push(...multiplyObligationsFarmUserStates);
|
|
233
245
|
|
|
234
246
|
const [leverageObligations, leverageObligationsFarmUserStates] =
|
|
235
|
-
await getLeverageObligationAndObligationFarmStateAddresses(kaminoMarket, user,
|
|
247
|
+
await getLeverageObligationAndObligationFarmStateAddresses(kaminoMarket, user, leverageReserveAddresses);
|
|
236
248
|
|
|
237
249
|
addresses.push(...leverageObligations);
|
|
238
250
|
addresses.push(...leverageObligationsFarmUserStates);
|
|
@@ -252,14 +264,16 @@ const getUserLookupTableAddresses = async (
|
|
|
252
264
|
async function getMultiplyObligationAndObligationFarmStateAddresses(
|
|
253
265
|
kaminoMarket: KaminoMarket,
|
|
254
266
|
user: Address,
|
|
255
|
-
|
|
267
|
+
reserveAddresses: { coll: Address; debt: Address }[]
|
|
256
268
|
): Promise<[{ address: Address; log: string }[], { address: Address; log: string }[]]> {
|
|
257
269
|
const obligationPdas: { address: Address; log: string }[] = [];
|
|
258
270
|
const farmUserStates: { address: Address; log: string }[] = [];
|
|
259
271
|
|
|
260
|
-
for (const { coll:
|
|
261
|
-
const collReserve = kaminoMarket.
|
|
262
|
-
const debtReserve = kaminoMarket.
|
|
272
|
+
for (const { coll: collReserveAddress, debt: debtReserveAddress } of reserveAddresses) {
|
|
273
|
+
const collReserve = kaminoMarket.getReserveByAddress(collReserveAddress);
|
|
274
|
+
const debtReserve = kaminoMarket.getReserveByAddress(debtReserveAddress);
|
|
275
|
+
const collMint = collReserve!.getLiquidityMint();
|
|
276
|
+
const debtMint = debtReserve!.getLiquidityMint();
|
|
263
277
|
const collMintString = collMint.toString();
|
|
264
278
|
const debtMintString = debtMint.toString();
|
|
265
279
|
if (collReserve && debtReserve) {
|
|
@@ -268,6 +282,15 @@ async function getMultiplyObligationAndObligationFarmStateAddresses(
|
|
|
268
282
|
address: await multiplyObligation.toPda(kaminoMarket.getAddress(), user),
|
|
269
283
|
log: 'multiply obligation coll: ' + collMintString + ' debt: ' + debtMintString,
|
|
270
284
|
});
|
|
285
|
+
const multiplyObligationFixedRate = new MultiplyObligationFixedRate(
|
|
286
|
+
collReserveAddress,
|
|
287
|
+
debtReserveAddress,
|
|
288
|
+
kaminoMarket.programId
|
|
289
|
+
);
|
|
290
|
+
obligationPdas.push({
|
|
291
|
+
address: await multiplyObligationFixedRate.toPda(kaminoMarket.getAddress(), user),
|
|
292
|
+
log: 'multiply obligation fixed rate coll: ' + collReserveAddress + ' debt: ' + debtReserveAddress,
|
|
293
|
+
});
|
|
271
294
|
if (collReserve.state.farmCollateral !== DEFAULT_PUBLIC_KEY) {
|
|
272
295
|
farmUserStates.push({
|
|
273
296
|
address: await obligationFarmStatePda(
|
|
@@ -295,14 +318,16 @@ async function getMultiplyObligationAndObligationFarmStateAddresses(
|
|
|
295
318
|
async function getLeverageObligationAndObligationFarmStateAddresses(
|
|
296
319
|
kaminoMarket: KaminoMarket,
|
|
297
320
|
user: Address,
|
|
298
|
-
|
|
321
|
+
reserveAddresses: { coll: Address; debt: Address }[]
|
|
299
322
|
): Promise<[{ address: Address; log: string }[], { address: Address; log: string }[]]> {
|
|
300
323
|
const obligationPdas: { address: Address; log: string }[] = [];
|
|
301
324
|
const farmUserStates: { address: Address; log: string }[] = [];
|
|
302
325
|
|
|
303
|
-
for (const { coll:
|
|
304
|
-
const collReserve = kaminoMarket.
|
|
305
|
-
const debtReserve = kaminoMarket.
|
|
326
|
+
for (const { coll: collReserveAddress, debt: debtReserveAddress } of reserveAddresses) {
|
|
327
|
+
const collReserve = kaminoMarket.getReserveByAddress(collReserveAddress);
|
|
328
|
+
const debtReserve = kaminoMarket.getReserveByAddress(debtReserveAddress);
|
|
329
|
+
const collMint = collReserve!.getLiquidityMint();
|
|
330
|
+
const debtMint = debtReserve!.getLiquidityMint();
|
|
306
331
|
const collMintString = collMint.toString();
|
|
307
332
|
const debtMintString = debtMint.toString();
|
|
308
333
|
if (collReserve && debtReserve) {
|
|
@@ -311,6 +336,15 @@ async function getLeverageObligationAndObligationFarmStateAddresses(
|
|
|
311
336
|
address: await leverageObligation.toPda(kaminoMarket.getAddress(), user),
|
|
312
337
|
log: 'leverage obligation coll: ' + collMintString + ' debt: ' + debtMintString,
|
|
313
338
|
});
|
|
339
|
+
const leverageObligationFixedRate = new LeverageObligationFixedRate(
|
|
340
|
+
collReserveAddress,
|
|
341
|
+
debtReserveAddress,
|
|
342
|
+
kaminoMarket.programId
|
|
343
|
+
);
|
|
344
|
+
obligationPdas.push({
|
|
345
|
+
address: await leverageObligationFixedRate.toPda(kaminoMarket.getAddress(), user),
|
|
346
|
+
log: 'leverage obligation fixed rate coll: ' + collReserveAddress + ' debt: ' + debtReserveAddress,
|
|
347
|
+
});
|
|
314
348
|
if (collReserve.state.farmCollateral !== DEFAULT_PUBLIC_KEY) {
|
|
315
349
|
farmUserStates.push({
|
|
316
350
|
address: await obligationFarmStatePda(
|
|
@@ -343,7 +377,7 @@ async function getRepayWithCollObligationFarmStateAddresses(
|
|
|
343
377
|
const obligationString = obligation.obligationAddress.toString();
|
|
344
378
|
|
|
345
379
|
for (const borrow of obligation.getBorrows()) {
|
|
346
|
-
const borrowReserve = kaminoMarket.
|
|
380
|
+
const borrowReserve = kaminoMarket.getReserveByAddress(borrow.reserveAddress)!;
|
|
347
381
|
if (borrowReserve.state.farmDebt !== DEFAULT_PUBLIC_KEY) {
|
|
348
382
|
farmUserStates.push({
|
|
349
383
|
address: await obligationFarmStatePda(borrowReserve.state.farmDebt!, obligation.obligationAddress),
|
|
@@ -353,7 +387,7 @@ async function getRepayWithCollObligationFarmStateAddresses(
|
|
|
353
387
|
}
|
|
354
388
|
|
|
355
389
|
for (const deposit of obligation.getDeposits()) {
|
|
356
|
-
const depositReserve = kaminoMarket.
|
|
390
|
+
const depositReserve = kaminoMarket.getReserveByAddress(deposit.reserveAddress)!;
|
|
357
391
|
if (depositReserve.state.farmCollateral !== DEFAULT_PUBLIC_KEY) {
|
|
358
392
|
farmUserStates.push({
|
|
359
393
|
address: await obligationFarmStatePda(depositReserve.state.farmCollateral!, obligation.obligationAddress),
|
package/src/utils/validations.ts
CHANGED
|
@@ -14,6 +14,11 @@ export function checkNotNull<T>(value: T | null, message: string = 'value null')
|
|
|
14
14
|
return value as T;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
export function checkArrayNotEmpty<T>(array: T[], message: string = 'array is empty'): T[] {
|
|
18
|
+
checkThat(array.length > 0, message);
|
|
19
|
+
return array;
|
|
20
|
+
}
|
|
21
|
+
|
|
17
22
|
export function getSingleElement<T>(iterable: Iterable<T>, nameWithinMessage: string = 'element'): T {
|
|
18
23
|
const nothingReturnedMarker = {};
|
|
19
24
|
let single: T | {} = nothingReturnedMarker;
|
package/src/utils/vault.ts
CHANGED
|
@@ -53,5 +53,7 @@ export function decodeVaultState(data: Buffer): VaultState {
|
|
|
53
53
|
allowAllocationsInWhitelistedReservesOnly: dec.allowAllocationsInWhitelistedReservesOnly,
|
|
54
54
|
allowInvestInWhitelistedReservesOnly: dec.allowInvestInWhitelistedReservesOnly,
|
|
55
55
|
padding4: dec.padding4,
|
|
56
|
+
padding2: dec.padding2,
|
|
57
|
+
withdrawTicketRentBudget: dec.withdrawTicketRentBudget,
|
|
56
58
|
});
|
|
57
59
|
}
|