@kamino-finance/klend-sdk 5.14.1-beta.0 → 5.14.1
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/farm_utils.d.ts.map +1 -1
- package/dist/classes/farm_utils.js +10 -3
- package/dist/classes/farm_utils.js.map +1 -1
- package/dist/classes/manager.d.ts +21 -6
- package/dist/classes/manager.d.ts.map +1 -1
- package/dist/classes/manager.js +311 -40
- package/dist/classes/manager.js.map +1 -1
- package/dist/classes/obligation.d.ts.map +1 -1
- package/dist/classes/obligation.js +0 -14
- package/dist/classes/obligation.js.map +1 -1
- package/dist/classes/reserve.d.ts +14 -5
- package/dist/classes/reserve.d.ts.map +1 -1
- package/dist/classes/reserve.js +463 -91
- 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/shared.js.map +1 -1
- package/dist/classes/utils.d.ts +0 -1
- package/dist/classes/utils.d.ts.map +1 -1
- package/dist/classes/utils.js +0 -12
- package/dist/classes/utils.js.map +1 -1
- package/dist/classes/vault.d.ts +11 -1
- package/dist/classes/vault.d.ts.map +1 -1
- package/dist/classes/vault.js +54 -6
- package/dist/classes/vault.js.map +1 -1
- package/dist/client_kamino_manager.d.ts.map +1 -1
- package/dist/client_kamino_manager.js +26 -27
- package/dist/client_kamino_manager.js.map +1 -1
- package/dist/idl.json +9 -186
- package/dist/idl_codegen/accounts/LendingMarket.d.ts +3 -24
- package/dist/idl_codegen/accounts/LendingMarket.d.ts.map +1 -1
- package/dist/idl_codegen/accounts/LendingMarket.js +7 -25
- package/dist/idl_codegen/accounts/LendingMarket.js.map +1 -1
- package/dist/idl_codegen/accounts/index.d.ts +0 -2
- package/dist/idl_codegen/accounts/index.d.ts.map +1 -1
- package/dist/idl_codegen/accounts/index.js +1 -3
- package/dist/idl_codegen/accounts/index.js.map +1 -1
- package/dist/idl_codegen/errors/custom.d.ts +1 -25
- package/dist/idl_codegen/errors/custom.d.ts.map +1 -1
- package/dist/idl_codegen/errors/custom.js +1 -43
- package/dist/idl_codegen/errors/custom.js.map +1 -1
- package/dist/idl_codegen/instructions/idlMissingTypes.d.ts +1 -2
- package/dist/idl_codegen/instructions/idlMissingTypes.d.ts.map +1 -1
- package/dist/idl_codegen/instructions/idlMissingTypes.js +1 -2
- package/dist/idl_codegen/instructions/idlMissingTypes.js.map +1 -1
- package/dist/idl_codegen/instructions/index.d.ts +0 -6
- package/dist/idl_codegen/instructions/index.d.ts.map +1 -1
- package/dist/idl_codegen/instructions/index.js +1 -7
- package/dist/idl_codegen/instructions/index.js.map +1 -1
- package/dist/idl_codegen/instructions/updateReserveConfig.d.ts +3 -4
- package/dist/idl_codegen/instructions/updateReserveConfig.d.ts.map +1 -1
- package/dist/idl_codegen/instructions/updateReserveConfig.js +3 -5
- package/dist/idl_codegen/instructions/updateReserveConfig.js.map +1 -1
- package/dist/idl_codegen/instructions/withdrawProtocolFee.d.ts +2 -2
- package/dist/idl_codegen/instructions/withdrawProtocolFee.d.ts.map +1 -1
- package/dist/idl_codegen/instructions/withdrawProtocolFee.js +6 -2
- package/dist/idl_codegen/instructions/withdrawProtocolFee.js.map +1 -1
- package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts +7 -33
- package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts.map +1 -1
- package/dist/idl_codegen/types/UpdateLendingMarketMode.js +12 -60
- package/dist/idl_codegen/types/UpdateLendingMarketMode.js.map +1 -1
- package/dist/idl_codegen/types/index.d.ts +2 -6
- package/dist/idl_codegen/types/index.d.ts.map +1 -1
- package/dist/idl_codegen/types/index.js +1 -3
- package/dist/idl_codegen/types/index.js.map +1 -1
- package/dist/utils/accountListing.d.ts +1 -1
- package/dist/utils/accountListing.d.ts.map +1 -1
- package/dist/utils/accountListing.js +2 -2
- package/dist/utils/accountListing.js.map +1 -1
- package/dist/utils/api.d.ts +5 -1
- package/dist/utils/api.d.ts.map +1 -1
- package/dist/utils/api.js +12 -6
- package/dist/utils/api.js.map +1 -1
- package/dist/utils/constants.d.ts +1 -1
- package/dist/utils/constants.js +1 -1
- package/dist/utils/lookupTable.d.ts.map +1 -1
- package/dist/utils/lookupTable.js +6 -1
- package/dist/utils/lookupTable.js.map +1 -1
- package/dist/utils/managerTypes.d.ts.map +1 -1
- package/dist/utils/managerTypes.js +4 -10
- package/dist/utils/managerTypes.js.map +1 -1
- package/dist/utils/seeds.d.ts +0 -16
- package/dist/utils/seeds.d.ts.map +1 -1
- package/dist/utils/seeds.js +1 -23
- package/dist/utils/seeds.js.map +1 -1
- package/package.json +1 -1
- package/src/classes/farm_utils.ts +11 -3
- package/src/classes/manager.ts +417 -52
- package/src/classes/obligation.ts +0 -16
- package/src/classes/reserve.ts +783 -119
- package/src/classes/shared.ts +1 -0
- package/src/classes/utils.ts +0 -12
- package/src/classes/vault.ts +75 -7
- package/src/client_kamino_manager.ts +34 -42
- package/src/idl.json +9 -186
- package/src/idl_codegen/accounts/LendingMarket.ts +9 -41
- package/src/idl_codegen/accounts/index.ts +0 -2
- package/src/idl_codegen/errors/custom.ts +0 -45
- package/src/idl_codegen/instructions/idlMissingTypes.ts +2 -4
- package/src/idl_codegen/instructions/index.ts +0 -9
- package/src/idl_codegen/instructions/updateReserveConfig.ts +5 -7
- package/src/idl_codegen/instructions/withdrawProtocolFee.ts +8 -4
- package/src/idl_codegen/types/UpdateLendingMarketMode.ts +13 -73
- package/src/idl_codegen/types/index.ts +2 -16
- package/src/utils/accountListing.ts +3 -2
- package/src/utils/api.ts +19 -7
- package/src/utils/constants.ts +1 -1
- package/src/utils/lookupTable.ts +7 -1
- package/src/utils/managerTypes.ts +4 -10
- package/src/utils/seeds.ts +0 -25
- package/dist/classes/configItems.d.ts +0 -166
- package/dist/classes/configItems.d.ts.map +0 -1
- package/dist/classes/configItems.js +0 -202
- package/dist/classes/configItems.js.map +0 -1
- package/dist/idl_codegen/accounts/GlobalConfig.d.ts +0 -40
- package/dist/idl_codegen/accounts/GlobalConfig.d.ts.map +0 -1
- package/dist/idl_codegen/accounts/GlobalConfig.js +0 -116
- package/dist/idl_codegen/accounts/GlobalConfig.js.map +0 -1
- package/dist/idl_codegen/instructions/initGlobalConfig.d.ts +0 -10
- package/dist/idl_codegen/instructions/initGlobalConfig.d.ts.map +0 -1
- package/dist/idl_codegen/instructions/initGlobalConfig.js +0 -19
- package/dist/idl_codegen/instructions/initGlobalConfig.js.map +0 -1
- package/dist/idl_codegen/instructions/updateGlobalConfig.d.ts +0 -13
- package/dist/idl_codegen/instructions/updateGlobalConfig.d.ts.map +0 -1
- package/dist/idl_codegen/instructions/updateGlobalConfig.js +0 -61
- package/dist/idl_codegen/instructions/updateGlobalConfig.js.map +0 -1
- package/dist/idl_codegen/instructions/updateGlobalConfigAdmin.d.ts +0 -7
- package/dist/idl_codegen/instructions/updateGlobalConfigAdmin.d.ts.map +0 -1
- package/dist/idl_codegen/instructions/updateGlobalConfigAdmin.js +0 -16
- package/dist/idl_codegen/instructions/updateGlobalConfigAdmin.js.map +0 -1
- package/dist/idl_codegen/types/UpdateGlobalConfigMode.d.ts +0 -32
- package/dist/idl_codegen/types/UpdateGlobalConfigMode.d.ts.map +0 -1
- package/dist/idl_codegen/types/UpdateGlobalConfigMode.js +0 -108
- package/dist/idl_codegen/types/UpdateGlobalConfigMode.js.map +0 -1
- package/src/classes/configItems.ts +0 -295
- package/src/idl_codegen/accounts/GlobalConfig.ts +0 -125
- package/src/idl_codegen/instructions/initGlobalConfig.ts +0 -30
- package/src/idl_codegen/instructions/updateGlobalConfig.ts +0 -47
- package/src/idl_codegen/instructions/updateGlobalConfigAdmin.ts +0 -24
- package/src/idl_codegen/types/UpdateGlobalConfigMode.ts +0 -90
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"farm_utils.d.ts","sourceRoot":"","sources":["../../src/classes/farm_utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"farm_utils.d.ts","sourceRoot":"","sources":["../../src/classes/farm_utils.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,SAAS,EAET,SAAS,EAKV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,OAAO,MAAM,oBAAoB,CAAC;AAEzC,eAAO,MAAM,2BAA2B,EAAE,SAAyE,CAAC;AAEpH,wBAAsB,eAAe,CACnC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,EACf,eAAe,EAAE,OAAO,EACxB,WAAW,EAAE,SAAS,EACtB,gBAAgB,CAAC,EAAE,SAAS,GAC3B,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAuBnC;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,SAAS,CAAC,CAGpB;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,EACf,iBAAiB,EAAE,OAAO,EAC1B,WAAW,EAAE,SAAS,EACtB,gBAAgB,CAAC,EAAE,SAAS,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAiBjC;AAGD,wBAAsB,gCAAgC,CACpD,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS,EACf,cAAc,EAAE,SAAS,GACxB,OAAO,CAAC,sBAAsB,CAAC,CAKjC;AAED,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,EACf,iBAAiB,EAAE,OAAO,EAC1B,WAAW,EAAE,SAAS,EACtB,gBAAgB,CAAC,EAAE,SAAS,GAC3B,OAAO,CAAC,6BAA6B,CAAC,CASxC;AAED,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,OAAO,EAClB,aAAa,EAAE,SAAS,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAK/B;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS,EACf,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,sBAAsB,CAAC,CAGjC;AAED,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAEhG;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,sBAAsB,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,SAAS,EAAE,sBAAsB,CAAC;IAClC,UAAU,EAAE,sBAAsB,CAAC;CACpC,CAAC"}
|
|
@@ -13,6 +13,7 @@ exports.getSetupFarmIxsWithFarm = getSetupFarmIxsWithFarm;
|
|
|
13
13
|
exports.getUserSharesInFarm = getUserSharesInFarm;
|
|
14
14
|
exports.setVaultIdForFarmIx = setVaultIdForFarmIx;
|
|
15
15
|
exports.getSharesInFarmUserPosition = getSharesInFarmUserPosition;
|
|
16
|
+
const anchor_1 = require("@coral-xyz/anchor");
|
|
16
17
|
const farms_sdk_1 = require("@kamino-finance/farms-sdk");
|
|
17
18
|
const web3_js_1 = require("@solana/web3.js");
|
|
18
19
|
const decimal_1 = __importDefault(require("decimal.js/decimal"));
|
|
@@ -54,9 +55,8 @@ async function getFarmUnstakeIx(connection, user, lamportsToUnstake, farmAddress
|
|
|
54
55
|
if (!userState) {
|
|
55
56
|
throw new Error(`User state not found for ${user}`);
|
|
56
57
|
}
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
return farmClient.unstakeIx(user, farmAddress, x.toString(), scopePricesArg);
|
|
58
|
+
const scaledLamportsToUnstake = new anchor_1.BN(lamportsToUnstake.floor().toString()).mul(new anchor_1.BN(farms_sdk_1.WAD.toString()));
|
|
59
|
+
return farmClient.unstakeIx(user, farmAddress, scaledLamportsToUnstake.toString(), scopePricesArg);
|
|
60
60
|
}
|
|
61
61
|
// withdrawing from a farm is a 2 step operation: first we unstake the tokens from the farm, then we withdraw them
|
|
62
62
|
async function getFarmWithdrawUnstakedDepositIx(connection, user, farm, stakeTokenMint) {
|
|
@@ -81,6 +81,13 @@ async function getSetupFarmIxsWithFarm(connection, farmAdmin, farmTokenMint) {
|
|
|
81
81
|
}
|
|
82
82
|
async function getUserSharesInFarm(connection, user, farm, farmTokenDecimals) {
|
|
83
83
|
const farmClient = new farms_sdk_1.Farms(connection);
|
|
84
|
+
const userStatePDA = (0, farms_sdk_1.getUserStatePDA)(farmClient.getProgramID(), farm, user);
|
|
85
|
+
// if the user state does not exist, return 0
|
|
86
|
+
const userState = await connection.getAccountInfo(userStatePDA);
|
|
87
|
+
if (!userState) {
|
|
88
|
+
return new decimal_1.default(0);
|
|
89
|
+
}
|
|
90
|
+
// if the user state exists, return the user shares
|
|
84
91
|
return farmClient.getUserTokensInUndelegatedFarm(user, farm, farmTokenDecimals);
|
|
85
92
|
}
|
|
86
93
|
async function setVaultIdForFarmIx(connection, farmAdmin, farm, vault) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"farm_utils.js","sourceRoot":"","sources":["../../src/classes/farm_utils.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"farm_utils.js","sourceRoot":"","sources":["../../src/classes/farm_utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { AccountInfo, Connection, Keypair, ParsedAccountData, PublicKey, TransactionInstruction } from '@solana/web3.js';
|
|
2
2
|
import { KaminoVault, KaminoVaultClient, KaminoVaultConfig, MarketOverview, ReserveAllocationConfig, ReserveOverview, SimulatedVaultHoldingsWithEarnedInterest, VaultFees, VaultFeesPct, VaultHolder, VaultHoldings, VaultHoldingsWithUSDValue, VaultOverview, VaultReserveTotalBorrowedAndInvested } from './vault';
|
|
3
|
-
import { AddAssetToMarketParams, CreateKaminoMarketParams, ENV, KaminoMarket, KaminoReserve, LendingMarket, MarketWithAddress, PubkeyHashMap, Reserve, ReserveWithAddress, ScopeOracleConfig } from '../lib';
|
|
4
|
-
import { ReserveConfig
|
|
3
|
+
import { AddAssetToMarketParams, CreateKaminoMarketParams, ENV, KaminoMarket, KaminoReserve, LendingMarket, LendingMarketFields, MarketWithAddress, PubkeyHashMap, Reserve, ReserveWithAddress, ScopeOracleConfig } from '../lib';
|
|
4
|
+
import { ReserveConfig } from '../idl_codegen/types';
|
|
5
5
|
import Decimal from 'decimal.js';
|
|
6
6
|
import { VaultState } from '../idl_codegen_kamino_vault/accounts';
|
|
7
7
|
import { VaultConfigFieldKind } from '../idl_codegen_kamino_vault/types';
|
|
8
8
|
import { AcceptVaultOwnershipIxs, APYs, DepositIxs, InitVaultIxs, ReserveAllocationOverview, SyncVaultLUTIxs, UpdateReserveAllocationIxs, UpdateVaultConfigIxs, UserSharesForVault, WithdrawAndBlockReserveIxs, WithdrawIxs } from './vault_types';
|
|
9
9
|
import { FarmState } from '@kamino-finance/farms-sdk/dist';
|
|
10
10
|
import { WalletType } from '../utils/multisig';
|
|
11
|
-
import { ConfigUpdater } from './configItems';
|
|
12
11
|
/**
|
|
13
12
|
* KaminoManager is a class that provides a high-level interface to interact with the Kamino Lend and Kamino Vault programs, in order to create and manage a market, as well as vaults
|
|
14
13
|
*/
|
|
@@ -258,7 +257,7 @@ export declare class KaminoManager {
|
|
|
258
257
|
* Get all lending markets
|
|
259
258
|
* @returns an array of all lending markets
|
|
260
259
|
*/
|
|
261
|
-
getAllMarkets(): Promise<KaminoMarket[]>;
|
|
260
|
+
getAllMarkets(programId?: PublicKey): Promise<KaminoMarket[]>;
|
|
262
261
|
/**
|
|
263
262
|
* Get all vaults for owner
|
|
264
263
|
* @param owner the pubkey of the vaults owner
|
|
@@ -321,7 +320,7 @@ export declare class KaminoManager {
|
|
|
321
320
|
*/
|
|
322
321
|
getVaultHoldingsWithPrice(vault: VaultState, price: Decimal, slot?: number, vaultReserves?: PubkeyHashMap<PublicKey, KaminoReserve>, currentSlot?: number): Promise<VaultHoldingsWithUSDValue>;
|
|
323
322
|
/**
|
|
324
|
-
* This will return an VaultOverview object that encapsulates all the information about the vault, including the holdings, reserves details, theoretical APY, utilization ratio and total borrowed amount
|
|
323
|
+
* This will return an VaultOverview object that encapsulates all the information about the vault, including the holdings, reserves details, theoretical APY, actual APY, utilization ratio and total borrowed amount
|
|
325
324
|
* @param vault - the kamino vault to get available liquidity to withdraw for
|
|
326
325
|
* @param price - the price of the token in the vault (e.g. USDC)
|
|
327
326
|
* @param [slot] - the slot for which to retrieve the vault overview for. Optional. If not provided the function will fetch the current slot
|
|
@@ -362,6 +361,14 @@ export declare class KaminoManager {
|
|
|
362
361
|
* @returns a struct containing estimated gross APY and net APY (gross - vault fees) for the vault
|
|
363
362
|
*/
|
|
364
363
|
getVaultTheoreticalAPY(vault: VaultState, slot: number, vaultReserves?: PubkeyHashMap<PublicKey, KaminoReserve>): Promise<APYs>;
|
|
364
|
+
/**
|
|
365
|
+
* This will return the APY of the vault based on the current invested amounts; for percentage it needs multiplication by 100
|
|
366
|
+
* @param vault - the kamino vault to get APY for
|
|
367
|
+
* @param slot - current slot
|
|
368
|
+
* @param [vaultReservesMap] - hashmap from each reserve pubkey to the reserve state. Optional. If provided the function will be significantly faster as it will not have to fetch the reserves
|
|
369
|
+
* @returns a struct containing estimated gross APY and net APY (gross - vault fees) for the vault
|
|
370
|
+
*/
|
|
371
|
+
getVaultActualAPY(vault: VaultState, slot: number, vaultReserves?: PubkeyHashMap<PublicKey, KaminoReserve>): Promise<APYs>;
|
|
365
372
|
/**
|
|
366
373
|
* Retrive the total amount of interest earned by the vault since its inception, up to the last interaction with the vault on chain, including what was charged as fees
|
|
367
374
|
* @param vaultState the kamino vault state to get total net yield for
|
|
@@ -394,6 +401,10 @@ export declare class KaminoManager {
|
|
|
394
401
|
* @returns a struct of simulated management and interest fees
|
|
395
402
|
*/
|
|
396
403
|
calculateSimulatedFees(vaultState: VaultState, simulatedCurrentHoldingsWithInterest?: SimulatedVaultHoldingsWithEarnedInterest, currentTimestamp?: Date): Promise<VaultFees>;
|
|
404
|
+
/**
|
|
405
|
+
* This will compute the PDA that is used as delegatee in Farms program to compute the user state PDA
|
|
406
|
+
*/
|
|
407
|
+
computeUserFarmStateForUserInVault(farmProgramID: PublicKey, vault: PublicKey, reserve: PublicKey, user: PublicKey): [PublicKey, number];
|
|
397
408
|
/**
|
|
398
409
|
* This will load the onchain state for all the reserves that the vault has allocations for
|
|
399
410
|
* @param vaultState - the vault state to load reserves for
|
|
@@ -499,5 +510,9 @@ export declare class KaminoManager {
|
|
|
499
510
|
*/
|
|
500
511
|
private static getWalletInfo;
|
|
501
512
|
}
|
|
502
|
-
export
|
|
513
|
+
export type BaseLendingMarketKey = keyof LendingMarketFields;
|
|
514
|
+
declare const EXCLUDED_LENDING_MARKET_KEYS: readonly ["version", "bumpSeed", "reserved0", "reserved1", "padding1", "padding2", "elevationGroupPadding", "quoteCurrency"];
|
|
515
|
+
export type ExcludedLendingMarketKey = (typeof EXCLUDED_LENDING_MARKET_KEYS)[number];
|
|
516
|
+
export type LendingMarketKey = Exclude<BaseLendingMarketKey, ExcludedLendingMarketKey>;
|
|
517
|
+
export {};
|
|
503
518
|
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/classes/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,UAAU,EAEV,OAAO,EACP,iBAAiB,EACjB,SAAS,EAGT,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EAEjB,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,wCAAwC,EACxC,SAAS,EACT,YAAY,EACZ,WAAW,EACX,aAAa,EACb,yBAAyB,EACzB,aAAa,EACb,oCAAoC,EACrC,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,sBAAsB,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/classes/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/classes/manager.js
CHANGED
|
@@ -36,7 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.
|
|
39
|
+
exports.KaminoManager = void 0;
|
|
40
40
|
const web3_js_1 = require("@solana/web3.js");
|
|
41
41
|
const vault_1 = require("./vault");
|
|
42
42
|
const lib_1 = require("../lib");
|
|
@@ -54,7 +54,6 @@ const types_2 = require("../idl_codegen_kamino_vault/types");
|
|
|
54
54
|
const sbv2_lite_1 = __importDefault(require("@switchboard-xyz/sbv2-lite"));
|
|
55
55
|
const multisig_1 = require("../utils/multisig");
|
|
56
56
|
const vault_2 = require("../utils/vault");
|
|
57
|
-
const configItems_1 = require("./configItems");
|
|
58
57
|
/**
|
|
59
58
|
* KaminoManager is a class that provides a high-level interface to interact with the Kamino Lend and Kamino Vault programs, in order to create and manage a market, as well as vaults
|
|
60
59
|
*/
|
|
@@ -255,7 +254,7 @@ class KaminoManager {
|
|
|
255
254
|
: (await lib_1.Reserve.fetch(this._connection, reserve, this._kaminoLendProgramId));
|
|
256
255
|
const ixs = [];
|
|
257
256
|
if (!reserveState || updateEntireConfig) {
|
|
258
|
-
ixs.push((0, lib_1.updateEntireReserveConfigIx)(marketWithAddress
|
|
257
|
+
ixs.push((0, lib_1.updateEntireReserveConfigIx)(marketWithAddress, reserve, config, this._kaminoLendProgramId));
|
|
259
258
|
}
|
|
260
259
|
else {
|
|
261
260
|
ixs.push(...(0, lib_1.parseForChangesReserveConfigAndGetIxs)(marketWithAddress, reserveState, reserve, config, this._kaminoLendProgramId));
|
|
@@ -444,9 +443,9 @@ class KaminoManager {
|
|
|
444
443
|
* Get all lending markets
|
|
445
444
|
* @returns an array of all lending markets
|
|
446
445
|
*/
|
|
447
|
-
async getAllMarkets() {
|
|
446
|
+
async getAllMarkets(programId = programId_1.PROGRAM_ID) {
|
|
448
447
|
// Get all lending markets
|
|
449
|
-
const marketGenerator = (0, lib_1.getAllLendingMarketAccounts)(this.getConnection());
|
|
448
|
+
const marketGenerator = (0, lib_1.getAllLendingMarketAccounts)(this.getConnection(), programId);
|
|
450
449
|
const slotDuration = await (0, lib_1.getMedianSlotDurationInMsFromLastEpochs)();
|
|
451
450
|
const lendingMarketPairs = [];
|
|
452
451
|
for await (const pair of marketGenerator) {
|
|
@@ -614,7 +613,7 @@ class KaminoManager {
|
|
|
614
613
|
return this._vaultClient.getVaultHoldingsWithPrice(vault, price, slot, vaultReserves, currentSlot);
|
|
615
614
|
}
|
|
616
615
|
/**
|
|
617
|
-
* This will return an VaultOverview object that encapsulates all the information about the vault, including the holdings, reserves details, theoretical APY, utilization ratio and total borrowed amount
|
|
616
|
+
* This will return an VaultOverview object that encapsulates all the information about the vault, including the holdings, reserves details, theoretical APY, actual APY, utilization ratio and total borrowed amount
|
|
618
617
|
* @param vault - the kamino vault to get available liquidity to withdraw for
|
|
619
618
|
* @param price - the price of the token in the vault (e.g. USDC)
|
|
620
619
|
* @param [slot] - the slot for which to retrieve the vault overview for. Optional. If not provided the function will fetch the current slot
|
|
@@ -665,6 +664,16 @@ class KaminoManager {
|
|
|
665
664
|
async getVaultTheoreticalAPY(vault, slot, vaultReserves) {
|
|
666
665
|
return this._vaultClient.getVaultTheoreticalAPY(vault, slot, vaultReserves);
|
|
667
666
|
}
|
|
667
|
+
/**
|
|
668
|
+
* This will return the APY of the vault based on the current invested amounts; for percentage it needs multiplication by 100
|
|
669
|
+
* @param vault - the kamino vault to get APY for
|
|
670
|
+
* @param slot - current slot
|
|
671
|
+
* @param [vaultReservesMap] - hashmap from each reserve pubkey to the reserve state. Optional. If provided the function will be significantly faster as it will not have to fetch the reserves
|
|
672
|
+
* @returns a struct containing estimated gross APY and net APY (gross - vault fees) for the vault
|
|
673
|
+
*/
|
|
674
|
+
async getVaultActualAPY(vault, slot, vaultReserves) {
|
|
675
|
+
return this._vaultClient.getVaultActualAPY(vault, slot, vaultReserves);
|
|
676
|
+
}
|
|
668
677
|
/**
|
|
669
678
|
* Retrive the total amount of interest earned by the vault since its inception, up to the last interaction with the vault on chain, including what was charged as fees
|
|
670
679
|
* @param vaultState the kamino vault state to get total net yield for
|
|
@@ -705,6 +714,12 @@ class KaminoManager {
|
|
|
705
714
|
async calculateSimulatedFees(vaultState, simulatedCurrentHoldingsWithInterest, currentTimestamp) {
|
|
706
715
|
return this._vaultClient.calculateSimulatedFees(vaultState, simulatedCurrentHoldingsWithInterest, currentTimestamp);
|
|
707
716
|
}
|
|
717
|
+
/**
|
|
718
|
+
* This will compute the PDA that is used as delegatee in Farms program to compute the user state PDA
|
|
719
|
+
*/
|
|
720
|
+
computeUserFarmStateForUserInVault(farmProgramID, vault, reserve, user) {
|
|
721
|
+
return this._vaultClient.computeUserFarmStateDelegateePDAForUserInVault(farmProgramID, reserve, vault, user);
|
|
722
|
+
}
|
|
708
723
|
/**
|
|
709
724
|
* This will load the onchain state for all the reserves that the vault has allocations for
|
|
710
725
|
* @param vaultState - the vault state to load reserves for
|
|
@@ -901,49 +916,305 @@ class KaminoManager {
|
|
|
901
916
|
}
|
|
902
917
|
} // KaminoManager
|
|
903
918
|
exports.KaminoManager = KaminoManager;
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
[
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
919
|
+
const EXCLUDED_LENDING_MARKET_KEYS = [
|
|
920
|
+
'version',
|
|
921
|
+
'bumpSeed',
|
|
922
|
+
'reserved0',
|
|
923
|
+
'reserved1',
|
|
924
|
+
'padding1',
|
|
925
|
+
'padding2',
|
|
926
|
+
'elevationGroupPadding',
|
|
927
|
+
'quoteCurrency',
|
|
928
|
+
];
|
|
929
|
+
function isExcludedLendingMarketKey(value) {
|
|
930
|
+
return EXCLUDED_LENDING_MARKET_KEYS.includes(value);
|
|
931
|
+
}
|
|
932
|
+
const updateLendingMarketConfig = (key, market, newMarket) => {
|
|
933
|
+
const updateLendingMarketIxsArgs = [];
|
|
934
|
+
switch (key) {
|
|
935
|
+
case 'lendingMarketOwner': {
|
|
936
|
+
if (!market.lendingMarketOwner.equals(newMarket.lendingMarketOwner)) {
|
|
937
|
+
updateLendingMarketIxsArgs.push({
|
|
938
|
+
mode: types_1.UpdateLendingMarketMode.UpdateOwner.discriminator,
|
|
939
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateOwner.discriminator, newMarket.lendingMarketOwner),
|
|
940
|
+
});
|
|
941
|
+
}
|
|
942
|
+
break;
|
|
943
|
+
}
|
|
944
|
+
case 'lendingMarketOwnerCached':
|
|
945
|
+
if (!market.lendingMarketOwnerCached.equals(newMarket.lendingMarketOwnerCached)) {
|
|
946
|
+
updateLendingMarketIxsArgs.push({
|
|
947
|
+
mode: types_1.UpdateLendingMarketMode.UpdateOwner.discriminator,
|
|
948
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateOwner.discriminator, newMarket.lendingMarketOwnerCached),
|
|
949
|
+
});
|
|
950
|
+
}
|
|
951
|
+
break;
|
|
952
|
+
case 'referralFeeBps':
|
|
953
|
+
if (market.referralFeeBps !== newMarket.referralFeeBps) {
|
|
954
|
+
updateLendingMarketIxsArgs.push({
|
|
955
|
+
mode: types_1.UpdateLendingMarketMode.UpdateReferralFeeBps.discriminator,
|
|
956
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateReferralFeeBps.discriminator, newMarket.referralFeeBps),
|
|
957
|
+
});
|
|
958
|
+
}
|
|
959
|
+
break;
|
|
960
|
+
case 'emergencyMode':
|
|
961
|
+
if (market.emergencyMode !== newMarket.emergencyMode) {
|
|
962
|
+
updateLendingMarketIxsArgs.push({
|
|
963
|
+
mode: types_1.UpdateLendingMarketMode.UpdateEmergencyMode.discriminator,
|
|
964
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateEmergencyMode.discriminator, newMarket.emergencyMode),
|
|
965
|
+
});
|
|
966
|
+
}
|
|
967
|
+
break;
|
|
968
|
+
case 'autodeleverageEnabled':
|
|
969
|
+
if (market.autodeleverageEnabled !== newMarket.autodeleverageEnabled) {
|
|
970
|
+
updateLendingMarketIxsArgs.push({
|
|
971
|
+
mode: types_1.UpdateLendingMarketMode.UpdateAutodeleverageEnabled.discriminator,
|
|
972
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateAutodeleverageEnabled.discriminator, newMarket.autodeleverageEnabled),
|
|
973
|
+
});
|
|
974
|
+
}
|
|
975
|
+
break;
|
|
976
|
+
case 'borrowDisabled':
|
|
977
|
+
if (market.borrowDisabled !== newMarket.borrowDisabled) {
|
|
978
|
+
updateLendingMarketIxsArgs.push({
|
|
979
|
+
mode: types_1.UpdateLendingMarketMode.UpdateBorrowingDisabled.discriminator,
|
|
980
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateBorrowingDisabled.discriminator, newMarket.borrowDisabled),
|
|
981
|
+
});
|
|
982
|
+
}
|
|
983
|
+
break;
|
|
984
|
+
case 'priceRefreshTriggerToMaxAgePct':
|
|
985
|
+
if (market.priceRefreshTriggerToMaxAgePct !== newMarket.priceRefreshTriggerToMaxAgePct) {
|
|
986
|
+
updateLendingMarketIxsArgs.push({
|
|
987
|
+
mode: types_1.UpdateLendingMarketMode.UpdatePriceRefreshTriggerToMaxAgePct.discriminator,
|
|
988
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdatePriceRefreshTriggerToMaxAgePct.discriminator, newMarket.priceRefreshTriggerToMaxAgePct),
|
|
989
|
+
});
|
|
990
|
+
}
|
|
991
|
+
break;
|
|
992
|
+
case 'liquidationMaxDebtCloseFactorPct':
|
|
993
|
+
if (market.liquidationMaxDebtCloseFactorPct !== newMarket.liquidationMaxDebtCloseFactorPct) {
|
|
994
|
+
updateLendingMarketIxsArgs.push({
|
|
995
|
+
mode: types_1.UpdateLendingMarketMode.UpdateLiquidationCloseFactor.discriminator,
|
|
996
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateLiquidationCloseFactor.discriminator, newMarket.liquidationMaxDebtCloseFactorPct),
|
|
997
|
+
});
|
|
998
|
+
}
|
|
999
|
+
break;
|
|
1000
|
+
case 'insolvencyRiskUnhealthyLtvPct':
|
|
1001
|
+
if (market.insolvencyRiskUnhealthyLtvPct !== newMarket.insolvencyRiskUnhealthyLtvPct) {
|
|
1002
|
+
updateLendingMarketIxsArgs.push({
|
|
1003
|
+
mode: types_1.UpdateLendingMarketMode.UpdateInsolvencyRiskLtv.discriminator,
|
|
1004
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateInsolvencyRiskLtv.discriminator, newMarket.insolvencyRiskUnhealthyLtvPct),
|
|
1005
|
+
});
|
|
1006
|
+
}
|
|
1007
|
+
break;
|
|
1008
|
+
case 'minFullLiquidationValueThreshold':
|
|
1009
|
+
if (!market.minFullLiquidationValueThreshold.eq(newMarket.minFullLiquidationValueThreshold)) {
|
|
1010
|
+
updateLendingMarketIxsArgs.push({
|
|
1011
|
+
mode: types_1.UpdateLendingMarketMode.UpdateMinFullLiquidationThreshold.discriminator,
|
|
1012
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateMinFullLiquidationThreshold.discriminator, newMarket.minFullLiquidationValueThreshold.toNumber()),
|
|
1013
|
+
});
|
|
1014
|
+
}
|
|
1015
|
+
break;
|
|
1016
|
+
case 'maxLiquidatableDebtMarketValueAtOnce':
|
|
1017
|
+
if (!market.maxLiquidatableDebtMarketValueAtOnce.eq(newMarket.maxLiquidatableDebtMarketValueAtOnce)) {
|
|
1018
|
+
updateLendingMarketIxsArgs.push({
|
|
1019
|
+
mode: types_1.UpdateLendingMarketMode.UpdateLiquidationMaxValue.discriminator,
|
|
1020
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateLiquidationMaxValue.discriminator, newMarket.maxLiquidatableDebtMarketValueAtOnce.toNumber()),
|
|
1021
|
+
});
|
|
1022
|
+
}
|
|
1023
|
+
break;
|
|
1024
|
+
case 'globalAllowedBorrowValue':
|
|
1025
|
+
if (!market.globalAllowedBorrowValue.eq(newMarket.globalAllowedBorrowValue)) {
|
|
1026
|
+
updateLendingMarketIxsArgs.push({
|
|
1027
|
+
mode: types_1.UpdateLendingMarketMode.UpdateGlobalAllowedBorrow.discriminator,
|
|
1028
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateGlobalAllowedBorrow.discriminator, newMarket.globalAllowedBorrowValue.toNumber()),
|
|
1029
|
+
});
|
|
1030
|
+
}
|
|
1031
|
+
break;
|
|
1032
|
+
case 'riskCouncil':
|
|
1033
|
+
if (!market.riskCouncil.equals(newMarket.riskCouncil)) {
|
|
1034
|
+
updateLendingMarketIxsArgs.push({
|
|
1035
|
+
mode: types_1.UpdateLendingMarketMode.UpdateRiskCouncil.discriminator,
|
|
1036
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateRiskCouncil.discriminator, newMarket.riskCouncil),
|
|
1037
|
+
});
|
|
1038
|
+
}
|
|
1039
|
+
break;
|
|
1040
|
+
case 'elevationGroups':
|
|
1041
|
+
let elevationGroupsDiffs = 0;
|
|
1042
|
+
for (let i = 0; i < market.elevationGroups.length; i++) {
|
|
1043
|
+
if (market.elevationGroups[i].id !== newMarket.elevationGroups[i].id ||
|
|
1044
|
+
market.elevationGroups[i].maxLiquidationBonusBps !== newMarket.elevationGroups[i].maxLiquidationBonusBps ||
|
|
1045
|
+
market.elevationGroups[i].ltvPct !== newMarket.elevationGroups[i].ltvPct ||
|
|
1046
|
+
market.elevationGroups[i].liquidationThresholdPct !== newMarket.elevationGroups[i].liquidationThresholdPct ||
|
|
1047
|
+
market.elevationGroups[i].allowNewLoans !== newMarket.elevationGroups[i].allowNewLoans ||
|
|
1048
|
+
market.elevationGroups[i].maxReservesAsCollateral !== newMarket.elevationGroups[i].maxReservesAsCollateral ||
|
|
1049
|
+
!market.elevationGroups[i].debtReserve.equals(newMarket.elevationGroups[i].debtReserve)) {
|
|
1050
|
+
updateLendingMarketIxsArgs.push({
|
|
1051
|
+
mode: types_1.UpdateLendingMarketMode.UpdateElevationGroup.discriminator,
|
|
1052
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateElevationGroup.discriminator, newMarket.elevationGroups[i]),
|
|
1053
|
+
});
|
|
1054
|
+
elevationGroupsDiffs++;
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
if (elevationGroupsDiffs > 1) {
|
|
1058
|
+
throw new Error('Can only update 1 elevation group at a time');
|
|
1059
|
+
}
|
|
1060
|
+
break;
|
|
1061
|
+
case 'minNetValueInObligationSf':
|
|
1062
|
+
if (!market.minNetValueInObligationSf.eq(newMarket.minNetValueInObligationSf)) {
|
|
1063
|
+
updateLendingMarketIxsArgs.push({
|
|
1064
|
+
mode: types_1.UpdateLendingMarketMode.UpdateMinNetValueObligationPostAction.discriminator,
|
|
1065
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateMinNetValueObligationPostAction.discriminator, newMarket.minNetValueInObligationSf.toString()),
|
|
1066
|
+
});
|
|
1067
|
+
}
|
|
1068
|
+
break;
|
|
1069
|
+
case 'minValueSkipLiquidationBfChecks':
|
|
1070
|
+
if (!market.minValueSkipLiquidationBfChecks.eq(newMarket.minValueSkipLiquidationBfChecks)) {
|
|
1071
|
+
updateLendingMarketIxsArgs.push({
|
|
1072
|
+
mode: types_1.UpdateLendingMarketMode.UpdateMinValueBfSkipPriorityLiqCheck.discriminator,
|
|
1073
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateMinValueBfSkipPriorityLiqCheck.discriminator, newMarket.minValueSkipLiquidationBfChecks.toNumber()),
|
|
1074
|
+
});
|
|
1075
|
+
}
|
|
1076
|
+
break;
|
|
1077
|
+
case 'minValueSkipLiquidationLtvChecks':
|
|
1078
|
+
if (!market.minValueSkipLiquidationLtvChecks.eq(newMarket.minValueSkipLiquidationLtvChecks)) {
|
|
1079
|
+
updateLendingMarketIxsArgs.push({
|
|
1080
|
+
mode: types_1.UpdateLendingMarketMode.UpdateMinValueLtvSkipPriorityLiqCheck.discriminator,
|
|
1081
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateMinValueLtvSkipPriorityLiqCheck.discriminator, newMarket.minValueSkipLiquidationLtvChecks.toNumber()),
|
|
1082
|
+
});
|
|
1083
|
+
}
|
|
1084
|
+
break;
|
|
1085
|
+
case 'individualAutodeleverageMarginCallPeriodSecs':
|
|
1086
|
+
if (market.individualAutodeleverageMarginCallPeriodSecs !== newMarket.individualAutodeleverageMarginCallPeriodSecs) {
|
|
1087
|
+
updateLendingMarketIxsArgs.push({
|
|
1088
|
+
mode: types_1.UpdateLendingMarketMode.UpdateIndividualAutodeleverageMarginCallPeriodSecs.discriminator,
|
|
1089
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateIndividualAutodeleverageMarginCallPeriodSecs.discriminator, newMarket.individualAutodeleverageMarginCallPeriodSecs.toNumber()),
|
|
1090
|
+
});
|
|
1091
|
+
}
|
|
1092
|
+
break;
|
|
1093
|
+
case 'name':
|
|
1094
|
+
if (!(0, lib_1.sameLengthArrayEquals)(market.name, newMarket.name)) {
|
|
1095
|
+
updateLendingMarketIxsArgs.push({
|
|
1096
|
+
mode: types_1.UpdateLendingMarketMode.UpdateName.discriminator,
|
|
1097
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateName.discriminator, newMarket.name),
|
|
1098
|
+
});
|
|
1099
|
+
}
|
|
1100
|
+
break;
|
|
1101
|
+
case 'minInitialDepositAmount':
|
|
1102
|
+
if (!market.minInitialDepositAmount.eq(newMarket.minInitialDepositAmount)) {
|
|
1103
|
+
updateLendingMarketIxsArgs.push({
|
|
1104
|
+
mode: types_1.UpdateLendingMarketMode.UpdateInitialDepositAmount.discriminator,
|
|
1105
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateInitialDepositAmount.discriminator, newMarket.minInitialDepositAmount.toNumber()),
|
|
1106
|
+
});
|
|
1107
|
+
}
|
|
1108
|
+
break;
|
|
1109
|
+
case 'obligationOrdersEnabled':
|
|
1110
|
+
if (market.obligationOrdersEnabled !== newMarket.obligationOrdersEnabled) {
|
|
1111
|
+
updateLendingMarketIxsArgs.push({
|
|
1112
|
+
mode: types_1.UpdateLendingMarketMode.UpdateObligationOrdersEnabled.discriminator,
|
|
1113
|
+
value: updateMarketConfigEncodedValue(types_1.UpdateLendingMarketMode.UpdateObligationOrdersEnabled.discriminator, newMarket.obligationOrdersEnabled),
|
|
1114
|
+
});
|
|
1115
|
+
}
|
|
1116
|
+
break;
|
|
1117
|
+
default:
|
|
1118
|
+
(0, lib_1.assertNever)(key);
|
|
1119
|
+
}
|
|
1120
|
+
return updateLendingMarketIxsArgs;
|
|
1121
|
+
};
|
|
931
1122
|
function parseForChangesMarketConfigAndGetIxs(marketWithAddress, newMarket, programId) {
|
|
932
|
-
const
|
|
933
|
-
|
|
1123
|
+
const market = marketWithAddress.state;
|
|
1124
|
+
const updateLendingMarketIxsArgs = [];
|
|
1125
|
+
for (const key in market.toJSON()) {
|
|
1126
|
+
if (isExcludedLendingMarketKey(key)) {
|
|
1127
|
+
continue;
|
|
1128
|
+
}
|
|
1129
|
+
updateLendingMarketIxsArgs.push(...updateLendingMarketConfig(key, market, newMarket));
|
|
1130
|
+
}
|
|
1131
|
+
const ixs = [];
|
|
1132
|
+
updateLendingMarketIxsArgs.forEach((updateLendingMarketConfigArgs) => {
|
|
1133
|
+
ixs.push(updateMarketConfigIx(marketWithAddress, updateLendingMarketConfigArgs.mode, updateLendingMarketConfigArgs.value, programId));
|
|
1134
|
+
});
|
|
1135
|
+
return ixs;
|
|
934
1136
|
}
|
|
935
|
-
function
|
|
1137
|
+
function updateMarketConfigEncodedValue(discriminator, value) {
|
|
1138
|
+
let buffer = Buffer.alloc(72);
|
|
1139
|
+
let pkBuffer;
|
|
1140
|
+
let valueBigInt;
|
|
1141
|
+
let valueArray;
|
|
1142
|
+
switch (discriminator) {
|
|
1143
|
+
case types_1.UpdateLendingMarketMode.UpdateEmergencyMode.discriminator:
|
|
1144
|
+
case types_1.UpdateLendingMarketMode.UpdateLiquidationCloseFactor.discriminator:
|
|
1145
|
+
case types_1.UpdateLendingMarketMode.UpdateInsolvencyRiskLtv.discriminator:
|
|
1146
|
+
case types_1.UpdateLendingMarketMode.UpdatePriceRefreshTriggerToMaxAgePct.discriminator:
|
|
1147
|
+
case types_1.UpdateLendingMarketMode.UpdateAutodeleverageEnabled.discriminator:
|
|
1148
|
+
case types_1.UpdateLendingMarketMode.UpdateObligationOrdersEnabled.discriminator:
|
|
1149
|
+
case types_1.UpdateLendingMarketMode.UpdateBorrowingDisabled.discriminator:
|
|
1150
|
+
buffer.writeUIntLE(value, 0, 1);
|
|
1151
|
+
break;
|
|
1152
|
+
case types_1.UpdateLendingMarketMode.UpdateReferralFeeBps.discriminator:
|
|
1153
|
+
buffer.writeUInt16LE(value, 0);
|
|
1154
|
+
break;
|
|
1155
|
+
case types_1.UpdateLendingMarketMode.UpdateLiquidationMaxValue.discriminator:
|
|
1156
|
+
case types_1.UpdateLendingMarketMode.UpdateGlobalAllowedBorrow.discriminator:
|
|
1157
|
+
case types_1.UpdateLendingMarketMode.UpdateMinFullLiquidationThreshold.discriminator:
|
|
1158
|
+
case types_1.UpdateLendingMarketMode.UpdateMinValueBfSkipPriorityLiqCheck.discriminator:
|
|
1159
|
+
case types_1.UpdateLendingMarketMode.UpdateMinValueLtvSkipPriorityLiqCheck.discriminator:
|
|
1160
|
+
case types_1.UpdateLendingMarketMode.UpdateIndividualAutodeleverageMarginCallPeriodSecs.discriminator:
|
|
1161
|
+
case types_1.UpdateLendingMarketMode.UpdateInitialDepositAmount.discriminator:
|
|
1162
|
+
value = value;
|
|
1163
|
+
buffer.writeBigUint64LE(BigInt(value), 0);
|
|
1164
|
+
break;
|
|
1165
|
+
case types_1.UpdateLendingMarketMode.UpdateOwner.discriminator:
|
|
1166
|
+
case types_1.UpdateLendingMarketMode.UpdateRiskCouncil.discriminator:
|
|
1167
|
+
pkBuffer = value.toBuffer();
|
|
1168
|
+
pkBuffer.copy(buffer, 0);
|
|
1169
|
+
break;
|
|
1170
|
+
case types_1.UpdateLendingMarketMode.UpdateElevationGroup.discriminator:
|
|
1171
|
+
buffer = serializeElevationGroup(value);
|
|
1172
|
+
break;
|
|
1173
|
+
case types_1.UpdateLendingMarketMode.UpdateMinNetValueObligationPostAction.discriminator:
|
|
1174
|
+
valueBigInt = BigInt(value);
|
|
1175
|
+
for (let i = 0; i < 16; i++) {
|
|
1176
|
+
buffer[15 - i] = Number((valueBigInt >> BigInt(i * 8)) & BigInt(0xff));
|
|
1177
|
+
}
|
|
1178
|
+
break;
|
|
1179
|
+
case types_1.UpdateLendingMarketMode.UpdateName.discriminator:
|
|
1180
|
+
valueArray = value;
|
|
1181
|
+
for (let i = 0; i < valueArray.length; i++) {
|
|
1182
|
+
buffer.writeUIntLE(valueArray[i], i, 1);
|
|
1183
|
+
}
|
|
1184
|
+
break;
|
|
1185
|
+
case types_1.UpdateLendingMarketMode.UpdatePaddingFields.discriminator:
|
|
1186
|
+
case types_1.UpdateLendingMarketMode.DeprecatedUpdateGlobalUnhealthyBorrow.discriminator:
|
|
1187
|
+
case types_1.UpdateLendingMarketMode.DeprecatedUpdateMultiplierPoints.discriminator:
|
|
1188
|
+
// Deliberately skipped - we are not updating padding or deprecated fields using this method
|
|
1189
|
+
break;
|
|
1190
|
+
default:
|
|
1191
|
+
(0, lib_1.assertNever)(discriminator);
|
|
1192
|
+
}
|
|
1193
|
+
return buffer;
|
|
1194
|
+
}
|
|
1195
|
+
function updateMarketConfigIx(marketWithAddress, modeDiscriminator, value, programId) {
|
|
936
1196
|
const accounts = {
|
|
937
1197
|
lendingMarketOwner: marketWithAddress.state.lendingMarketOwner,
|
|
938
1198
|
lendingMarket: marketWithAddress.address,
|
|
939
1199
|
};
|
|
940
1200
|
const args = {
|
|
941
|
-
mode: new anchor.BN(
|
|
942
|
-
|
|
943
|
-
// `Vec<u8>`). Hence, we need to add explicit padding here:
|
|
944
|
-
value: [...value, ...Array(72 - value.length).fill(0)],
|
|
1201
|
+
mode: new anchor.BN(modeDiscriminator),
|
|
1202
|
+
value: [...value],
|
|
945
1203
|
};
|
|
946
1204
|
const ix = (0, lib_1.updateLendingMarket)(args, accounts, programId);
|
|
947
1205
|
return ix;
|
|
948
1206
|
}
|
|
1207
|
+
function serializeElevationGroup(elevationGroup) {
|
|
1208
|
+
const buffer = Buffer.alloc(72);
|
|
1209
|
+
buffer.writeUInt16LE(elevationGroup.maxLiquidationBonusBps, 0);
|
|
1210
|
+
buffer.writeUIntLE(elevationGroup.id, 2, 1);
|
|
1211
|
+
buffer.writeUIntLE(elevationGroup.ltvPct, 3, 1);
|
|
1212
|
+
buffer.writeUIntLE(elevationGroup.liquidationThresholdPct, 4, 1);
|
|
1213
|
+
buffer.writeUIntLE(elevationGroup.allowNewLoans, 5, 1);
|
|
1214
|
+
buffer.writeUIntLE(elevationGroup.maxReservesAsCollateral, 6, 1);
|
|
1215
|
+
buffer.writeUIntLE(elevationGroup.padding0, 7, 1);
|
|
1216
|
+
const debtReserveBuffer = elevationGroup.debtReserve.toBuffer();
|
|
1217
|
+
debtReserveBuffer.copy(buffer, 8);
|
|
1218
|
+
return buffer;
|
|
1219
|
+
}
|
|
949
1220
|
//# sourceMappingURL=manager.js.map
|