@kamino-finance/klend-sdk 7.4.0-beta.2 → 7.4.0-beta.3
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 +150 -3
- package/dist/@codegen/klend/accounts/LendingMarket.d.ts.map +1 -1
- package/dist/@codegen/klend/accounts/LendingMarket.js +91 -2
- package/dist/@codegen/klend/accounts/LendingMarket.js.map +1 -1
- package/dist/@codegen/klend/accounts/Reserve.d.ts +6 -0
- package/dist/@codegen/klend/accounts/Reserve.d.ts.map +1 -1
- package/dist/@codegen/klend/accounts/Reserve.js +8 -1
- package/dist/@codegen/klend/accounts/Reserve.js.map +1 -1
- package/dist/@codegen/klend/accounts/WithdrawTicket.d.ts +144 -0
- package/dist/@codegen/klend/accounts/WithdrawTicket.d.ts.map +1 -0
- package/dist/@codegen/klend/accounts/WithdrawTicket.js +205 -0
- package/dist/@codegen/klend/accounts/WithdrawTicket.js.map +1 -0
- package/dist/@codegen/klend/accounts/index.d.ts +2 -0
- package/dist/@codegen/klend/accounts/index.d.ts.map +1 -1
- package/dist/@codegen/klend/accounts/index.js +3 -1
- package/dist/@codegen/klend/accounts/index.js.map +1 -1
- package/dist/@codegen/klend/errors/custom.d.ts +81 -1
- package/dist/@codegen/klend/errors/custom.d.ts.map +1 -1
- package/dist/@codegen/klend/errors/custom.js +142 -1
- package/dist/@codegen/klend/errors/custom.js.map +1 -1
- package/dist/@codegen/klend/instructions/enqueueToWithdraw.d.ts +62 -0
- package/dist/@codegen/klend/instructions/enqueueToWithdraw.d.ts.map +1 -0
- package/dist/@codegen/klend/instructions/enqueueToWithdraw.js +79 -0
- package/dist/@codegen/klend/instructions/enqueueToWithdraw.js.map +1 -0
- package/dist/@codegen/klend/instructions/index.d.ts +6 -0
- package/dist/@codegen/klend/instructions/index.d.ts.map +1 -1
- package/dist/@codegen/klend/instructions/index.js +8 -2
- package/dist/@codegen/klend/instructions/index.js.map +1 -1
- package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.d.ts +54 -0
- package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.d.ts.map +1 -0
- package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.js +66 -0
- package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.js.map +1 -0
- package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.d.ts +66 -0
- package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.d.ts.map +1 -0
- package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.js +41 -0
- package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.js.map +1 -0
- package/dist/@codegen/klend/types/BorrowOrder.d.ts +3 -3
- package/dist/@codegen/klend/types/BorrowOrder.js +1 -1
- package/dist/@codegen/klend/types/FixedTermBorrowRolloverConfig.d.ts +145 -0
- package/dist/@codegen/klend/types/FixedTermBorrowRolloverConfig.d.ts.map +1 -0
- package/dist/@codegen/klend/types/FixedTermBorrowRolloverConfig.js +144 -0
- package/dist/@codegen/klend/types/FixedTermBorrowRolloverConfig.js.map +1 -0
- package/dist/@codegen/klend/types/ObligationLiquidity.d.ts +29 -0
- package/dist/@codegen/klend/types/ObligationLiquidity.d.ts.map +1 -1
- package/dist/@codegen/klend/types/ObligationLiquidity.js +15 -1
- package/dist/@codegen/klend/types/ObligationLiquidity.js.map +1 -1
- package/dist/@codegen/klend/types/ProgressCallbackType.d.ts +32 -0
- package/dist/@codegen/klend/types/ProgressCallbackType.d.ts.map +1 -0
- package/dist/@codegen/klend/types/ProgressCallbackType.js +108 -0
- package/dist/@codegen/klend/types/ProgressCallbackType.js.map +1 -0
- package/dist/@codegen/klend/types/ReserveLiquidity.d.ts +26 -8
- package/dist/@codegen/klend/types/ReserveLiquidity.d.ts.map +1 -1
- package/dist/@codegen/klend/types/ReserveLiquidity.js +14 -8
- package/dist/@codegen/klend/types/ReserveLiquidity.js.map +1 -1
- package/dist/@codegen/klend/types/UpdateConfigMode.d.ts +7 -7
- package/dist/@codegen/klend/types/UpdateConfigMode.d.ts.map +1 -1
- package/dist/@codegen/klend/types/UpdateConfigMode.js +12 -12
- package/dist/@codegen/klend/types/UpdateConfigMode.js.map +1 -1
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.d.ts +78 -0
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.d.ts.map +1 -1
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.js +145 -1
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.js.map +1 -1
- package/dist/@codegen/klend/types/WithdrawQueue.d.ts +64 -0
- package/dist/@codegen/klend/types/WithdrawQueue.d.ts.map +1 -0
- package/dist/@codegen/klend/types/WithdrawQueue.js +104 -0
- package/dist/@codegen/klend/types/WithdrawQueue.js.map +1 -0
- package/dist/@codegen/klend/types/index.d.ts +23 -4
- package/dist/@codegen/klend/types/index.d.ts.map +1 -1
- package/dist/@codegen/klend/types/index.js +7 -1
- package/dist/@codegen/klend/types/index.js.map +1 -1
- package/dist/classes/action.d.ts +11 -0
- package/dist/classes/action.d.ts.map +1 -1
- package/dist/classes/action.js +66 -0
- package/dist/classes/action.js.map +1 -1
- package/dist/classes/actionTypes.d.ts +29 -0
- package/dist/classes/actionTypes.d.ts.map +1 -1
- package/dist/classes/manager.d.ts +1 -1
- package/dist/classes/manager.d.ts.map +1 -1
- package/dist/classes/manager.js +9 -8
- package/dist/classes/manager.js.map +1 -1
- package/dist/classes/market.d.ts +7 -102
- package/dist/classes/market.d.ts.map +1 -1
- package/dist/classes/market.js +8 -153
- package/dist/classes/market.js.map +1 -1
- package/dist/classes/reserve.d.ts +3 -10
- package/dist/classes/reserve.d.ts.map +1 -1
- package/dist/classes/reserve.js +45 -51
- package/dist/classes/reserve.js.map +1 -1
- package/dist/idl/klend.json +860 -32
- package/dist/manager/client_kamino_manager.js +2 -3
- package/dist/manager/client_kamino_manager.js.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/seeds.d.ts +24 -0
- package/dist/utils/seeds.d.ts.map +1 -1
- package/dist/utils/seeds.js +41 -1
- package/dist/utils/seeds.js.map +1 -1
- package/package.json +1 -1
- package/src/@codegen/klend/accounts/LendingMarket.ts +205 -4
- package/src/@codegen/klend/accounts/Reserve.ts +12 -1
- package/src/@codegen/klend/accounts/WithdrawTicket.ts +280 -0
- package/src/@codegen/klend/accounts/index.ts +2 -0
- package/src/@codegen/klend/errors/custom.ts +161 -0
- package/src/@codegen/klend/instructions/enqueueToWithdraw.ts +120 -0
- package/src/@codegen/klend/instructions/index.ts +12 -0
- package/src/@codegen/klend/instructions/recoverInvalidTicketCollateral.ts +103 -0
- package/src/@codegen/klend/instructions/withdrawQueuedLiquidity.ts +118 -0
- package/src/@codegen/klend/types/BorrowOrder.ts +3 -3
- package/src/@codegen/klend/types/FixedTermBorrowRolloverConfig.ts +199 -0
- package/src/@codegen/klend/types/ObligationLiquidity.ts +37 -1
- package/src/@codegen/klend/types/ProgressCallbackType.ts +91 -0
- package/src/@codegen/klend/types/ReserveLiquidity.ts +30 -12
- package/src/@codegen/klend/types/UpdateConfigMode.ts +13 -13
- package/src/@codegen/klend/types/UpdateLendingMarketMode.ts +180 -0
- package/src/@codegen/klend/types/WithdrawQueue.ts +117 -0
- package/src/@codegen/klend/types/index.ts +42 -2
- package/src/classes/action.ts +115 -1
- package/src/classes/actionTypes.ts +31 -0
- package/src/classes/manager.ts +19 -27
- package/src/classes/market.ts +8 -183
- package/src/classes/reserve.ts +45 -68
- package/src/idl/klend.json +860 -32
- package/src/manager/client_kamino_manager.ts +2 -4
- package/src/utils/index.ts +0 -1
- package/src/utils/seeds.ts +49 -0
- package/dist/utils/ReserveKind.d.ts +0 -57
- package/dist/utils/ReserveKind.d.ts.map +0 -1
- package/dist/utils/ReserveKind.js +0 -76
- package/dist/utils/ReserveKind.js.map +0 -1
- package/src/utils/ReserveKind.ts +0 -94
|
@@ -218,9 +218,8 @@ async function main() {
|
|
|
218
218
|
`--mode <string>`,
|
|
219
219
|
'simulate|multisig|execute - simulate - to print txn simulation and to get tx simulation link in explorer, execute - execute tx, multisig - to get bs58 tx for multisig usage'
|
|
220
220
|
)
|
|
221
|
-
.option('--update-entire-config', 'If set, it will update entire reserve config in 1 instruction')
|
|
222
221
|
.option(`--staging`, 'If true, will use the staging programs')
|
|
223
|
-
.action(async ({ reserve, reserveConfigPath, mode,
|
|
222
|
+
.action(async ({ reserve, reserveConfigPath, mode, staging }) => {
|
|
224
223
|
const env = await initEnv(undefined, staging);
|
|
225
224
|
const reserveAddress = address(reserve);
|
|
226
225
|
const reserveState = await Reserve.fetch(env.c.rpc, reserveAddress, env.klendProgramId);
|
|
@@ -261,8 +260,7 @@ async function main() {
|
|
|
261
260
|
marketWithAddress,
|
|
262
261
|
reserveAddress,
|
|
263
262
|
reserveConfig,
|
|
264
|
-
reserveState
|
|
265
|
-
updateEntireConfig
|
|
263
|
+
reserveState
|
|
266
264
|
);
|
|
267
265
|
|
|
268
266
|
await processTx(
|
package/src/utils/index.ts
CHANGED
package/src/utils/seeds.ts
CHANGED
|
@@ -44,6 +44,14 @@ export const BASE_SEED_SHORT_URL = 'short_url';
|
|
|
44
44
|
* Short url seed
|
|
45
45
|
*/
|
|
46
46
|
export const BASE_SEED_GLOBAL_CONFIG_STATE = 'global_config';
|
|
47
|
+
/**
|
|
48
|
+
* Withdraw ticket seed
|
|
49
|
+
*/
|
|
50
|
+
export const WITHDRAW_TICKET_SEED = 'withdraw_ticket';
|
|
51
|
+
/**
|
|
52
|
+
* Owner queued collateral vault seed
|
|
53
|
+
*/
|
|
54
|
+
export const OWNER_QUEUED_COLLATERAL_VAULT_SEED = 'owner_queued_collateral_vault';
|
|
47
55
|
/**
|
|
48
56
|
* Farm user state seed
|
|
49
57
|
*/
|
|
@@ -286,3 +294,44 @@ export async function getKVaultSharesMetadataPda(mint: Address): Promise<Program
|
|
|
286
294
|
programAddress: METADATA_PROGRAM_ID,
|
|
287
295
|
});
|
|
288
296
|
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Returns the PDA for a withdraw ticket
|
|
300
|
+
* @param reserve
|
|
301
|
+
* @param sequenceNumber
|
|
302
|
+
* @param programId
|
|
303
|
+
* @returns pda
|
|
304
|
+
*/
|
|
305
|
+
export async function withdrawTicketPda(
|
|
306
|
+
reserve: Address,
|
|
307
|
+
sequenceNumber: bigint,
|
|
308
|
+
programId: Address = PROGRAM_ID
|
|
309
|
+
): Promise<Address> {
|
|
310
|
+
const sequenceNumberBuffer = Buffer.alloc(8);
|
|
311
|
+
sequenceNumberBuffer.writeBigUInt64LE(sequenceNumber);
|
|
312
|
+
|
|
313
|
+
const [address] = await getProgramDerivedAddress({
|
|
314
|
+
seeds: [Buffer.from(WITHDRAW_TICKET_SEED), addressEncoder.encode(reserve), sequenceNumberBuffer],
|
|
315
|
+
programAddress: programId,
|
|
316
|
+
});
|
|
317
|
+
return address;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Returns the PDA for the owner's queued collateral vault
|
|
322
|
+
* @param reserve
|
|
323
|
+
* @param owner
|
|
324
|
+
* @param programId
|
|
325
|
+
* @returns pda
|
|
326
|
+
*/
|
|
327
|
+
export async function ownerQueuedCollateralVaultPda(
|
|
328
|
+
reserve: Address,
|
|
329
|
+
owner: Address,
|
|
330
|
+
programId: Address = PROGRAM_ID
|
|
331
|
+
): Promise<Address> {
|
|
332
|
+
const [address] = await getProgramDerivedAddress({
|
|
333
|
+
seeds: [Buffer.from(OWNER_QUEUED_COLLATERAL_VAULT_SEED), addressEncoder.encode(reserve), addressEncoder.encode(owner)],
|
|
334
|
+
programAddress: programId,
|
|
335
|
+
});
|
|
336
|
+
return address;
|
|
337
|
+
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import BN from 'bn.js';
|
|
2
|
-
import { KaminoReserve } from '../classes/reserve';
|
|
3
|
-
/**
|
|
4
|
-
* Base class for reserve kind identification.
|
|
5
|
-
* Since a market can have multiple reserves for the same mint (with different terms),
|
|
6
|
-
* this kind specifies which reserve to select.
|
|
7
|
-
*/
|
|
8
|
-
export declare abstract class ReserveKind {
|
|
9
|
-
/**
|
|
10
|
-
* Checks if a reserve matches this reserve kind's criteria
|
|
11
|
-
*/
|
|
12
|
-
abstract matches(reserve: KaminoReserve): boolean;
|
|
13
|
-
/**
|
|
14
|
-
* Returns a human-readable string representation
|
|
15
|
-
*/
|
|
16
|
-
abstract toString(): string;
|
|
17
|
-
/**
|
|
18
|
-
* Type check: returns true if this is an open-term reserve
|
|
19
|
-
*/
|
|
20
|
-
abstract isFloatRate(): boolean;
|
|
21
|
-
/**
|
|
22
|
-
* Type check: returns true if this is a fixed-term reserve
|
|
23
|
-
*/
|
|
24
|
-
abstract isFixedRate(): boolean;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Represents an open-term reserve with no fixed maturity.
|
|
28
|
-
*/
|
|
29
|
-
export declare class FloatRateReserveKind extends ReserveKind {
|
|
30
|
-
/**
|
|
31
|
-
* Checks if a reserve matches this open-term reserve kind (debtTermSeconds == 0)
|
|
32
|
-
*/
|
|
33
|
-
matches(reserve: KaminoReserve): boolean;
|
|
34
|
-
toString(): string;
|
|
35
|
-
isFloatRate(): boolean;
|
|
36
|
-
isFixedRate(): boolean;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Represents a fixed-term reserve with specific loan parameters.
|
|
40
|
-
*/
|
|
41
|
-
export declare class FixedRateReserveKind extends ReserveKind {
|
|
42
|
-
readonly debtTermSeconds: BN;
|
|
43
|
-
readonly borrowRateBps: number;
|
|
44
|
-
/**
|
|
45
|
-
* @param debtTermSeconds The debt term in seconds (e.g., new BN(30 * 24 * 60 * 60) for 30 days)
|
|
46
|
-
* @param borrowRateBps The maximum borrow rate in basis points (e.g., 500 for 5%)
|
|
47
|
-
*/
|
|
48
|
-
constructor(debtTermSeconds: BN, borrowRateBps: number);
|
|
49
|
-
/**
|
|
50
|
-
* Checks if a reserve matches this fixed-term reserve kind
|
|
51
|
-
*/
|
|
52
|
-
matches(reserve: KaminoReserve): boolean;
|
|
53
|
-
toString(): string;
|
|
54
|
-
isFloatRate(): boolean;
|
|
55
|
-
isFixedRate(): boolean;
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=ReserveKind.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReserveKind.d.ts","sourceRoot":"","sources":["../../src/utils/ReserveKind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;GAIG;AACH,8BAAsB,WAAW;IAC/B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAEjD;;OAEG;IACH,QAAQ,CAAC,QAAQ,IAAI,MAAM;IAE3B;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO;IAE/B;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO;CAChC;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;IACnD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAIxC,QAAQ,IAAI,MAAM;IAIlB,WAAW,IAAI,OAAO;IAItB,WAAW,IAAI,OAAO;CAGvB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;aAKvB,eAAe,EAAE,EAAE;aAAkB,aAAa,EAAE,MAAM;IAJtF;;;OAGG;gBACyB,eAAe,EAAE,EAAE,EAAkB,aAAa,EAAE,MAAM;IAItF;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAaxC,QAAQ,IAAI,MAAM;IAIlB,WAAW,IAAI,OAAO;IAItB,WAAW,IAAI,OAAO;CAGvB"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.FixedRateReserveKind = exports.FloatRateReserveKind = exports.ReserveKind = void 0;
|
|
7
|
-
const bn_js_1 = __importDefault(require("bn.js"));
|
|
8
|
-
/**
|
|
9
|
-
* Base class for reserve kind identification.
|
|
10
|
-
* Since a market can have multiple reserves for the same mint (with different terms),
|
|
11
|
-
* this kind specifies which reserve to select.
|
|
12
|
-
*/
|
|
13
|
-
class ReserveKind {
|
|
14
|
-
}
|
|
15
|
-
exports.ReserveKind = ReserveKind;
|
|
16
|
-
/**
|
|
17
|
-
* Represents an open-term reserve with no fixed maturity.
|
|
18
|
-
*/
|
|
19
|
-
class FloatRateReserveKind extends ReserveKind {
|
|
20
|
-
/**
|
|
21
|
-
* Checks if a reserve matches this open-term reserve kind (debtTermSeconds == 0)
|
|
22
|
-
*/
|
|
23
|
-
matches(reserve) {
|
|
24
|
-
return reserve.state.config.debtTermSeconds.eq(new bn_js_1.default(0));
|
|
25
|
-
}
|
|
26
|
-
toString() {
|
|
27
|
-
return 'FloatRate';
|
|
28
|
-
}
|
|
29
|
-
isFloatRate() {
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
isFixedRate() {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
exports.FloatRateReserveKind = FloatRateReserveKind;
|
|
37
|
-
/**
|
|
38
|
-
* Represents a fixed-term reserve with specific loan parameters.
|
|
39
|
-
*/
|
|
40
|
-
class FixedRateReserveKind extends ReserveKind {
|
|
41
|
-
debtTermSeconds;
|
|
42
|
-
borrowRateBps;
|
|
43
|
-
/**
|
|
44
|
-
* @param debtTermSeconds The debt term in seconds (e.g., new BN(30 * 24 * 60 * 60) for 30 days)
|
|
45
|
-
* @param borrowRateBps The maximum borrow rate in basis points (e.g., 500 for 5%)
|
|
46
|
-
*/
|
|
47
|
-
constructor(debtTermSeconds, borrowRateBps) {
|
|
48
|
-
super();
|
|
49
|
-
this.debtTermSeconds = debtTermSeconds;
|
|
50
|
-
this.borrowRateBps = borrowRateBps;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Checks if a reserve matches this fixed-term reserve kind
|
|
54
|
-
*/
|
|
55
|
-
matches(reserve) {
|
|
56
|
-
// Check debt term matches
|
|
57
|
-
if (!reserve.state.config.debtTermSeconds.eq(this.debtTermSeconds)) {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
// For fixed-term reserves, all points on the borrow rate curve should have the same rate
|
|
61
|
-
const curvePoints = reserve.state.config.borrowRateCurve.points;
|
|
62
|
-
// Check if all points have the expected borrow rate
|
|
63
|
-
return curvePoints.every((point) => point.borrowRateBps === this.borrowRateBps);
|
|
64
|
-
}
|
|
65
|
-
toString() {
|
|
66
|
-
return `FixedRate(term=${this.debtTermSeconds.toString()}s, rate=${this.borrowRateBps}bps)`;
|
|
67
|
-
}
|
|
68
|
-
isFloatRate() {
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
isFixedRate() {
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
exports.FixedRateReserveKind = FixedRateReserveKind;
|
|
76
|
-
//# sourceMappingURL=ReserveKind.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReserveKind.js","sourceRoot":"","sources":["../../src/utils/ReserveKind.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAuB;AAGvB;;;;GAIG;AACH,MAAsB,WAAW;CAoBhC;AApBD,kCAoBC;AAED;;GAEG;AACH,MAAa,oBAAqB,SAAQ,WAAW;IACnD;;OAEG;IACH,OAAO,CAAC,OAAsB;QAC5B,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,eAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,QAAQ;QACN,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAnBD,oDAmBC;AAED;;GAEG;AACH,MAAa,oBAAqB,SAAQ,WAAW;IAKvB;IAAqC;IAJjE;;;OAGG;IACH,YAA4B,eAAmB,EAAkB,aAAqB;QACpF,KAAK,EAAE,CAAC;QADkB,oBAAe,GAAf,eAAe,CAAI;QAAkB,kBAAa,GAAb,aAAa,CAAQ;IAEtF,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,OAAsB;QAC5B,0BAA0B;QAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YACnE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,yFAAyF;QACzF,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;QAEhE,oDAAoD;QACpD,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC;IAClF,CAAC;IAED,QAAQ;QACN,OAAO,kBAAkB,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC,aAAa,MAAM,CAAC;IAC9F,CAAC;IAED,WAAW;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AApCD,oDAoCC"}
|
package/src/utils/ReserveKind.ts
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
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
|
-
}
|