@kamino-finance/klend-sdk 5.13.1 → 5.13.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/classes/action.d.ts +32 -31
- package/dist/classes/action.d.ts.map +1 -1
- package/dist/classes/action.js +126 -95
- package/dist/classes/action.js.map +1 -1
- package/dist/classes/index.d.ts +3 -2
- package/dist/classes/index.d.ts.map +1 -1
- package/dist/classes/index.js +3 -2
- package/dist/classes/index.js.map +1 -1
- package/dist/classes/manager.d.ts +15 -7
- package/dist/classes/manager.d.ts.map +1 -1
- package/dist/classes/manager.js +57 -46
- package/dist/classes/manager.js.map +1 -1
- package/dist/classes/obligationOrder.d.ts +1 -1
- package/dist/classes/obligationOrder.d.ts.map +1 -1
- package/dist/classes/reserve.d.ts +2 -2
- package/dist/classes/reserve.d.ts.map +1 -1
- package/dist/classes/reserve.js +70 -70
- package/dist/classes/reserve.js.map +1 -1
- package/dist/classes/shared.d.ts +13 -0
- package/dist/classes/shared.d.ts.map +1 -1
- package/dist/classes/utils.d.ts +1 -9
- package/dist/classes/utils.d.ts.map +1 -1
- package/dist/classes/utils.js +4 -51
- package/dist/classes/utils.js.map +1 -1
- package/dist/classes/vault.d.ts +22 -4
- package/dist/classes/vault.d.ts.map +1 -1
- package/dist/classes/vault.js +78 -43
- package/dist/classes/vault.js.map +1 -1
- package/dist/classes/{types.d.ts → vault_types.d.ts} +3 -15
- package/dist/classes/vault_types.d.ts.map +1 -0
- package/dist/classes/{types.js → vault_types.js} +1 -1
- package/dist/classes/vault_types.js.map +1 -0
- package/dist/client_kamino_manager.d.ts.map +1 -1
- package/dist/client_kamino_manager.js +44 -28
- package/dist/client_kamino_manager.js.map +1 -1
- package/dist/lending_operations/repay_with_collateral_operations.js +6 -6
- package/dist/lending_operations/repay_with_collateral_operations.js.map +1 -1
- package/dist/lending_operations/swap_collateral_operations.d.ts +6 -6
- package/dist/lending_operations/swap_collateral_operations.d.ts.map +1 -1
- package/dist/lending_operations/swap_collateral_operations.js +61 -61
- package/dist/lending_operations/swap_collateral_operations.js.map +1 -1
- package/dist/leverage/calcs.d.ts +0 -1
- package/dist/leverage/calcs.d.ts.map +1 -1
- package/dist/leverage/calcs.js +5 -8
- package/dist/leverage/calcs.js.map +1 -1
- package/dist/leverage/operations.d.ts +5 -5
- package/dist/leverage/operations.d.ts.map +1 -1
- package/dist/leverage/operations.js +73 -73
- package/dist/leverage/operations.js.map +1 -1
- package/dist/leverage/types.d.ts +1 -1
- package/dist/leverage/types.d.ts.map +1 -1
- package/dist/leverage/utils.d.ts +2 -2
- package/dist/leverage/utils.d.ts.map +1 -1
- package/dist/leverage/utils.js +5 -5
- package/dist/leverage/utils.js.map +1 -1
- package/dist/referrals/instructions.d.ts +3 -3
- package/dist/referrals/instructions.d.ts.map +1 -1
- package/dist/referrals/instructions.js +10 -10
- package/dist/referrals/instructions.js.map +1 -1
- package/dist/referrals/operations.js +6 -6
- package/dist/referrals/operations.js.map +1 -1
- package/dist/utils/ata.d.ts +3 -3
- package/dist/utils/ata.d.ts.map +1 -1
- package/dist/utils/ata.js +22 -22
- package/dist/utils/ata.js.map +1 -1
- package/dist/utils/instruction.d.ts +2 -2
- package/dist/utils/instruction.d.ts.map +1 -1
- package/dist/utils/instruction.js +12 -12
- package/dist/utils/instruction.js.map +1 -1
- package/dist/utils/lookupTable.js +6 -6
- package/dist/utils/lookupTable.js.map +1 -1
- package/dist/utils/metadata.d.ts +14 -0
- package/dist/utils/metadata.d.ts.map +1 -0
- package/dist/utils/metadata.js +78 -0
- package/dist/utils/metadata.js.map +1 -0
- package/dist/utils/seeds.d.ts +6 -0
- package/dist/utils/seeds.d.ts.map +1 -1
- package/dist/utils/seeds.js +10 -0
- package/dist/utils/seeds.js.map +1 -1
- package/dist/utils/userMetadata.d.ts +1 -1
- package/dist/utils/userMetadata.d.ts.map +1 -1
- package/dist/utils/userMetadata.js +3 -3
- package/dist/utils/userMetadata.js.map +1 -1
- package/package.json +1 -1
- package/src/classes/action.ts +143 -102
- package/src/classes/index.ts +5 -2
- package/src/classes/manager.ts +74 -51
- package/src/classes/obligationOrder.ts +1 -1
- package/src/classes/reserve.ts +126 -132
- package/src/classes/shared.ts +15 -0
- package/src/classes/utils.ts +3 -52
- package/src/classes/vault.ts +125 -44
- package/src/classes/{types.ts → vault_types.ts} +2 -16
- package/src/client.ts +16 -16
- package/src/client_kamino_manager.ts +59 -27
- package/src/lending_operations/repay_with_collateral_operations.ts +13 -13
- package/src/lending_operations/swap_collateral_operations.ts +85 -85
- package/src/leverage/calcs.ts +2 -6
- package/src/leverage/operations.ts +84 -84
- package/src/leverage/types.ts +1 -1
- package/src/leverage/utils.ts +5 -5
- package/src/referrals/instructions.ts +6 -6
- package/src/referrals/operations.ts +9 -9
- package/src/utils/ata.ts +18 -18
- package/src/utils/instruction.ts +10 -10
- package/src/utils/lookupTable.ts +6 -6
- package/src/utils/metadata.ts +115 -0
- package/src/utils/seeds.ts +13 -0
- package/src/utils/userMetadata.ts +1 -1
- package/dist/classes/types.d.ts.map +0 -1
- package/dist/classes/types.js.map +0 -1
- package/dist/classes/types_utils.d.ts +0 -14
- package/dist/classes/types_utils.d.ts.map +0 -1
- package/dist/classes/types_utils.js +0 -50
- package/dist/classes/types_utils.js.map +0 -1
- package/src/classes/types_utils.ts +0 -49
package/src/classes/index.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
export * from './action';
|
|
2
2
|
export * from './curve';
|
|
3
|
+
export * from './fraction';
|
|
3
4
|
export * from './market';
|
|
4
5
|
export * from './obligation';
|
|
6
|
+
export * from './obligationOrder';
|
|
5
7
|
export * from './reserve';
|
|
6
8
|
export * from './shared';
|
|
7
9
|
export * from './utils';
|
|
10
|
+
|
|
8
11
|
export * from './jupiterPerps';
|
|
12
|
+
|
|
9
13
|
export * from './manager';
|
|
10
14
|
export * from './vault';
|
|
11
|
-
export * from './
|
|
12
|
-
export * from './types';
|
|
15
|
+
export * from './vault_types';
|
package/src/classes/manager.ts
CHANGED
|
@@ -90,7 +90,7 @@ import {
|
|
|
90
90
|
UpdateVaultConfigIxs,
|
|
91
91
|
UserSharesForVault,
|
|
92
92
|
WithdrawIxs,
|
|
93
|
-
} from './
|
|
93
|
+
} from './vault_types';
|
|
94
94
|
import { FarmState } from '@kamino-finance/farms-sdk/dist';
|
|
95
95
|
import SwitchboardProgram from '@switchboard-xyz/sbv2-lite';
|
|
96
96
|
|
|
@@ -134,17 +134,15 @@ export class KaminoManager {
|
|
|
134
134
|
* This is a function that helps quickly setting up a reserve for an asset with a default config. The config can be modified later on.
|
|
135
135
|
* @param params.admin - the admin of the market
|
|
136
136
|
* @returns market keypair - keypair used for market account creation -> to be signed with when executing the transaction
|
|
137
|
-
* @returns
|
|
137
|
+
* @returns ixs - an array of ixs for creating and initializing the market account
|
|
138
138
|
*/
|
|
139
|
-
async createMarketIxs(
|
|
140
|
-
params: CreateKaminoMarketParams
|
|
141
|
-
): Promise<{ market: Keypair; ixns: TransactionInstruction[] }> {
|
|
139
|
+
async createMarketIxs(params: CreateKaminoMarketParams): Promise<{ market: Keypair; ixs: TransactionInstruction[] }> {
|
|
142
140
|
const marketAccount = Keypair.generate();
|
|
143
141
|
const size = LendingMarket.layout.span + 8;
|
|
144
142
|
const [lendingMarketAuthority, _] = lendingMarketAuthPda(marketAccount.publicKey, this._kaminoLendProgramId);
|
|
145
|
-
const
|
|
143
|
+
const createMarketIxs: TransactionInstruction[] = [];
|
|
146
144
|
|
|
147
|
-
|
|
145
|
+
createMarketIxs.push(
|
|
148
146
|
SystemProgram.createAccount({
|
|
149
147
|
fromPubkey: params.admin,
|
|
150
148
|
newAccountPubkey: marketAccount.publicKey,
|
|
@@ -166,9 +164,9 @@ export class KaminoManager {
|
|
|
166
164
|
quoteCurrency: Array(32).fill(0),
|
|
167
165
|
};
|
|
168
166
|
|
|
169
|
-
|
|
167
|
+
createMarketIxs.push(initLendingMarket(args, accounts, this._kaminoLendProgramId));
|
|
170
168
|
|
|
171
|
-
return { market: marketAccount,
|
|
169
|
+
return { market: marketAccount, ixs: createMarketIxs };
|
|
172
170
|
}
|
|
173
171
|
|
|
174
172
|
/**
|
|
@@ -177,11 +175,11 @@ export class KaminoManager {
|
|
|
177
175
|
* @param params.marketAddress - the market to create a reserve for, only the market admin can create a reserve for the market
|
|
178
176
|
* @param params.assetConfig - an object that helps generate a default reserve config with some inputs which have to be configured before calling this function
|
|
179
177
|
* @returns reserve - keypair used for reserve creation -> to be signed with when executing the transaction
|
|
180
|
-
* @returns
|
|
178
|
+
* @returns txnIxs - an array of arrays of ixs -> first array for reserve creation, second for updating it with correct params
|
|
181
179
|
*/
|
|
182
180
|
async addAssetToMarketIxs(
|
|
183
181
|
params: AddAssetToMarketParams
|
|
184
|
-
): Promise<{ reserve: Keypair;
|
|
182
|
+
): Promise<{ reserve: Keypair; txnIxs: TransactionInstruction[][] }> {
|
|
185
183
|
const market = await LendingMarket.fetch(this._connection, params.marketAddress, this._kaminoLendProgramId);
|
|
186
184
|
if (!market) {
|
|
187
185
|
throw new Error('Market not found');
|
|
@@ -208,11 +206,11 @@ export class KaminoManager {
|
|
|
208
206
|
false
|
|
209
207
|
);
|
|
210
208
|
|
|
211
|
-
const
|
|
212
|
-
|
|
213
|
-
|
|
209
|
+
const txnIxs: TransactionInstruction[][] = [];
|
|
210
|
+
txnIxs.push(createReserveInstructions);
|
|
211
|
+
txnIxs.push(updateReserveInstructions);
|
|
214
212
|
|
|
215
|
-
return { reserve: reserveAccount,
|
|
213
|
+
return { reserve: reserveAccount, txnIxs };
|
|
216
214
|
}
|
|
217
215
|
|
|
218
216
|
/**
|
|
@@ -224,6 +222,26 @@ export class KaminoManager {
|
|
|
224
222
|
return this._vaultClient.createVaultIxs(vaultConfig);
|
|
225
223
|
}
|
|
226
224
|
|
|
225
|
+
/**
|
|
226
|
+
* This method creates an instruction to set the shares metadata for a vault
|
|
227
|
+
* @param vault - the vault to set the shares metadata for
|
|
228
|
+
* @param tokenName - the name of the token in the vault (symbol; e.g. "USDC" which becomes "kVUSDC")
|
|
229
|
+
* @param extraName - the extra string appended to the prefix("Kamino Vault USDC <extraName>")
|
|
230
|
+
* @returns - an instruction to set the shares metadata for the vault
|
|
231
|
+
*/
|
|
232
|
+
async getSetSharesMetadataIx(vault: KaminoVault, tokenName: string, extraName: string) {
|
|
233
|
+
const vaultState = await vault.getState(this._connection);
|
|
234
|
+
return this._vaultClient.getSetSharesMetadataIx(
|
|
235
|
+
this._connection,
|
|
236
|
+
vaultState.vaultAdminAuthority,
|
|
237
|
+
vault.address,
|
|
238
|
+
vaultState.sharesMint,
|
|
239
|
+
vaultState.baseVaultAuthority,
|
|
240
|
+
tokenName,
|
|
241
|
+
extraName
|
|
242
|
+
);
|
|
243
|
+
}
|
|
244
|
+
|
|
227
245
|
/**
|
|
228
246
|
* This method updates the vault reserve allocation cofnig for an exiting vault reserve, or adds a new reserve to the vault if it does not exist.
|
|
229
247
|
* @param vault - vault to be updated
|
|
@@ -325,7 +343,7 @@ export class KaminoManager {
|
|
|
325
343
|
* @param config - the new reserve configuration to be used for the update
|
|
326
344
|
* @param reserveStateOverride - the reserve state, useful to provide, if already fetched outside this method, in order to avoid an extra rpc call to fetch it. Make sure the reserveConfig has not been updated since fetching the reserveState that you pass in.
|
|
327
345
|
* @param updateEntireConfig - when set to false, it will only update fields that are different between @param config and reserveState.config, set to true it will always update entire reserve config. An entire reserveConfig update might be too large for a multisig transaction
|
|
328
|
-
* @returns - an array of multiple update
|
|
346
|
+
* @returns - an array of multiple update ixs. If there are many fields that are being updated without the updateEntireConfig=true, multiple transactions might be required to fit all ixs.
|
|
329
347
|
*/
|
|
330
348
|
async updateReserveIxs(
|
|
331
349
|
marketWithAddress: MarketWithAddress,
|
|
@@ -337,12 +355,12 @@ export class KaminoManager {
|
|
|
337
355
|
const reserveState = reserveStateOverride
|
|
338
356
|
? reserveStateOverride
|
|
339
357
|
: (await Reserve.fetch(this._connection, reserve, this._kaminoLendProgramId))!;
|
|
340
|
-
const
|
|
358
|
+
const ixs: TransactionInstruction[] = [];
|
|
341
359
|
|
|
342
360
|
if (!reserveState || updateEntireConfig) {
|
|
343
|
-
|
|
361
|
+
ixs.push(updateEntireReserveConfigIx(marketWithAddress, reserve, config, this._kaminoLendProgramId));
|
|
344
362
|
} else {
|
|
345
|
-
|
|
363
|
+
ixs.push(
|
|
346
364
|
...parseForChangesReserveConfigAndGetIxs(
|
|
347
365
|
marketWithAddress,
|
|
348
366
|
reserveState,
|
|
@@ -353,7 +371,7 @@ export class KaminoManager {
|
|
|
353
371
|
);
|
|
354
372
|
}
|
|
355
373
|
|
|
356
|
-
return
|
|
374
|
+
return ixs;
|
|
357
375
|
}
|
|
358
376
|
|
|
359
377
|
/**
|
|
@@ -986,8 +1004,13 @@ export class KaminoManager {
|
|
|
986
1004
|
*
|
|
987
1005
|
* @returns a hashmap from each reserve pubkey to the market overview of the collaterals that can be used and the min and max loan to value ratio in that market
|
|
988
1006
|
*/
|
|
989
|
-
async getVaultCollaterals(
|
|
990
|
-
|
|
1007
|
+
async getVaultCollaterals(
|
|
1008
|
+
vaultState: VaultState,
|
|
1009
|
+
slot: number,
|
|
1010
|
+
vaultReservesMap?: PubkeyHashMap<PublicKey, KaminoReserve>,
|
|
1011
|
+
kaminoMarkets?: KaminoMarket[]
|
|
1012
|
+
): Promise<PubkeyHashMap<PublicKey, MarketOverview>> {
|
|
1013
|
+
return this._vaultClient.getVaultCollaterals(vaultState, slot, vaultReservesMap, kaminoMarkets);
|
|
991
1014
|
}
|
|
992
1015
|
|
|
993
1016
|
/**
|
|
@@ -1140,11 +1163,11 @@ const updateLendingMarketConfig = (
|
|
|
1140
1163
|
market: LendingMarket,
|
|
1141
1164
|
newMarket: LendingMarket
|
|
1142
1165
|
): { mode: number; value: Buffer }[] => {
|
|
1143
|
-
const
|
|
1166
|
+
const updateLendingMarketIxsArgs: { mode: number; value: Buffer }[] = [];
|
|
1144
1167
|
switch (key) {
|
|
1145
1168
|
case 'lendingMarketOwner': {
|
|
1146
1169
|
if (!market.lendingMarketOwner.equals(newMarket.lendingMarketOwner)) {
|
|
1147
|
-
|
|
1170
|
+
updateLendingMarketIxsArgs.push({
|
|
1148
1171
|
mode: UpdateLendingMarketMode.UpdateOwner.discriminator,
|
|
1149
1172
|
value: updateMarketConfigEncodedValue(
|
|
1150
1173
|
UpdateLendingMarketMode.UpdateOwner.discriminator,
|
|
@@ -1156,7 +1179,7 @@ const updateLendingMarketConfig = (
|
|
|
1156
1179
|
}
|
|
1157
1180
|
case 'lendingMarketOwnerCached':
|
|
1158
1181
|
if (!market.lendingMarketOwnerCached.equals(newMarket.lendingMarketOwnerCached)) {
|
|
1159
|
-
|
|
1182
|
+
updateLendingMarketIxsArgs.push({
|
|
1160
1183
|
mode: UpdateLendingMarketMode.UpdateOwner.discriminator,
|
|
1161
1184
|
value: updateMarketConfigEncodedValue(
|
|
1162
1185
|
UpdateLendingMarketMode.UpdateOwner.discriminator,
|
|
@@ -1167,7 +1190,7 @@ const updateLendingMarketConfig = (
|
|
|
1167
1190
|
break;
|
|
1168
1191
|
case 'referralFeeBps':
|
|
1169
1192
|
if (market.referralFeeBps !== newMarket.referralFeeBps) {
|
|
1170
|
-
|
|
1193
|
+
updateLendingMarketIxsArgs.push({
|
|
1171
1194
|
mode: UpdateLendingMarketMode.UpdateReferralFeeBps.discriminator,
|
|
1172
1195
|
value: updateMarketConfigEncodedValue(
|
|
1173
1196
|
UpdateLendingMarketMode.UpdateReferralFeeBps.discriminator,
|
|
@@ -1178,7 +1201,7 @@ const updateLendingMarketConfig = (
|
|
|
1178
1201
|
break;
|
|
1179
1202
|
case 'emergencyMode':
|
|
1180
1203
|
if (market.emergencyMode !== newMarket.emergencyMode) {
|
|
1181
|
-
|
|
1204
|
+
updateLendingMarketIxsArgs.push({
|
|
1182
1205
|
mode: UpdateLendingMarketMode.UpdateEmergencyMode.discriminator,
|
|
1183
1206
|
value: updateMarketConfigEncodedValue(
|
|
1184
1207
|
UpdateLendingMarketMode.UpdateEmergencyMode.discriminator,
|
|
@@ -1189,7 +1212,7 @@ const updateLendingMarketConfig = (
|
|
|
1189
1212
|
break;
|
|
1190
1213
|
case 'autodeleverageEnabled':
|
|
1191
1214
|
if (market.autodeleverageEnabled !== newMarket.autodeleverageEnabled) {
|
|
1192
|
-
|
|
1215
|
+
updateLendingMarketIxsArgs.push({
|
|
1193
1216
|
mode: UpdateLendingMarketMode.UpdateAutodeleverageEnabled.discriminator,
|
|
1194
1217
|
value: updateMarketConfigEncodedValue(
|
|
1195
1218
|
UpdateLendingMarketMode.UpdateAutodeleverageEnabled.discriminator,
|
|
@@ -1200,7 +1223,7 @@ const updateLendingMarketConfig = (
|
|
|
1200
1223
|
break;
|
|
1201
1224
|
case 'borrowDisabled':
|
|
1202
1225
|
if (market.borrowDisabled !== newMarket.borrowDisabled) {
|
|
1203
|
-
|
|
1226
|
+
updateLendingMarketIxsArgs.push({
|
|
1204
1227
|
mode: UpdateLendingMarketMode.UpdateBorrowingDisabled.discriminator,
|
|
1205
1228
|
value: updateMarketConfigEncodedValue(
|
|
1206
1229
|
UpdateLendingMarketMode.UpdateBorrowingDisabled.discriminator,
|
|
@@ -1211,7 +1234,7 @@ const updateLendingMarketConfig = (
|
|
|
1211
1234
|
break;
|
|
1212
1235
|
case 'priceRefreshTriggerToMaxAgePct':
|
|
1213
1236
|
if (market.priceRefreshTriggerToMaxAgePct !== newMarket.priceRefreshTriggerToMaxAgePct) {
|
|
1214
|
-
|
|
1237
|
+
updateLendingMarketIxsArgs.push({
|
|
1215
1238
|
mode: UpdateLendingMarketMode.UpdatePriceRefreshTriggerToMaxAgePct.discriminator,
|
|
1216
1239
|
value: updateMarketConfigEncodedValue(
|
|
1217
1240
|
UpdateLendingMarketMode.UpdatePriceRefreshTriggerToMaxAgePct.discriminator,
|
|
@@ -1222,7 +1245,7 @@ const updateLendingMarketConfig = (
|
|
|
1222
1245
|
break;
|
|
1223
1246
|
case 'liquidationMaxDebtCloseFactorPct':
|
|
1224
1247
|
if (market.liquidationMaxDebtCloseFactorPct !== newMarket.liquidationMaxDebtCloseFactorPct) {
|
|
1225
|
-
|
|
1248
|
+
updateLendingMarketIxsArgs.push({
|
|
1226
1249
|
mode: UpdateLendingMarketMode.UpdateLiquidationCloseFactor.discriminator,
|
|
1227
1250
|
value: updateMarketConfigEncodedValue(
|
|
1228
1251
|
UpdateLendingMarketMode.UpdateLiquidationCloseFactor.discriminator,
|
|
@@ -1233,7 +1256,7 @@ const updateLendingMarketConfig = (
|
|
|
1233
1256
|
break;
|
|
1234
1257
|
case 'insolvencyRiskUnhealthyLtvPct':
|
|
1235
1258
|
if (market.insolvencyRiskUnhealthyLtvPct !== newMarket.insolvencyRiskUnhealthyLtvPct) {
|
|
1236
|
-
|
|
1259
|
+
updateLendingMarketIxsArgs.push({
|
|
1237
1260
|
mode: UpdateLendingMarketMode.UpdateInsolvencyRiskLtv.discriminator,
|
|
1238
1261
|
value: updateMarketConfigEncodedValue(
|
|
1239
1262
|
UpdateLendingMarketMode.UpdateInsolvencyRiskLtv.discriminator,
|
|
@@ -1244,7 +1267,7 @@ const updateLendingMarketConfig = (
|
|
|
1244
1267
|
break;
|
|
1245
1268
|
case 'minFullLiquidationValueThreshold':
|
|
1246
1269
|
if (!market.minFullLiquidationValueThreshold.eq(newMarket.minFullLiquidationValueThreshold)) {
|
|
1247
|
-
|
|
1270
|
+
updateLendingMarketIxsArgs.push({
|
|
1248
1271
|
mode: UpdateLendingMarketMode.UpdateMinFullLiquidationThreshold.discriminator,
|
|
1249
1272
|
value: updateMarketConfigEncodedValue(
|
|
1250
1273
|
UpdateLendingMarketMode.UpdateMinFullLiquidationThreshold.discriminator,
|
|
@@ -1255,7 +1278,7 @@ const updateLendingMarketConfig = (
|
|
|
1255
1278
|
break;
|
|
1256
1279
|
case 'maxLiquidatableDebtMarketValueAtOnce':
|
|
1257
1280
|
if (!market.maxLiquidatableDebtMarketValueAtOnce.eq(newMarket.maxLiquidatableDebtMarketValueAtOnce)) {
|
|
1258
|
-
|
|
1281
|
+
updateLendingMarketIxsArgs.push({
|
|
1259
1282
|
mode: UpdateLendingMarketMode.UpdateLiquidationMaxValue.discriminator,
|
|
1260
1283
|
value: updateMarketConfigEncodedValue(
|
|
1261
1284
|
UpdateLendingMarketMode.UpdateLiquidationMaxValue.discriminator,
|
|
@@ -1266,7 +1289,7 @@ const updateLendingMarketConfig = (
|
|
|
1266
1289
|
break;
|
|
1267
1290
|
case 'globalAllowedBorrowValue':
|
|
1268
1291
|
if (!market.globalAllowedBorrowValue.eq(newMarket.globalAllowedBorrowValue)) {
|
|
1269
|
-
|
|
1292
|
+
updateLendingMarketIxsArgs.push({
|
|
1270
1293
|
mode: UpdateLendingMarketMode.UpdateGlobalAllowedBorrow.discriminator,
|
|
1271
1294
|
value: updateMarketConfigEncodedValue(
|
|
1272
1295
|
UpdateLendingMarketMode.UpdateGlobalAllowedBorrow.discriminator,
|
|
@@ -1277,7 +1300,7 @@ const updateLendingMarketConfig = (
|
|
|
1277
1300
|
break;
|
|
1278
1301
|
case 'riskCouncil':
|
|
1279
1302
|
if (!market.riskCouncil.equals(newMarket.riskCouncil)) {
|
|
1280
|
-
|
|
1303
|
+
updateLendingMarketIxsArgs.push({
|
|
1281
1304
|
mode: UpdateLendingMarketMode.UpdateRiskCouncil.discriminator,
|
|
1282
1305
|
value: updateMarketConfigEncodedValue(
|
|
1283
1306
|
UpdateLendingMarketMode.UpdateRiskCouncil.discriminator,
|
|
@@ -1298,7 +1321,7 @@ const updateLendingMarketConfig = (
|
|
|
1298
1321
|
market.elevationGroups[i].maxReservesAsCollateral !== newMarket.elevationGroups[i].maxReservesAsCollateral ||
|
|
1299
1322
|
!market.elevationGroups[i].debtReserve.equals(newMarket.elevationGroups[i].debtReserve)
|
|
1300
1323
|
) {
|
|
1301
|
-
|
|
1324
|
+
updateLendingMarketIxsArgs.push({
|
|
1302
1325
|
mode: UpdateLendingMarketMode.UpdateElevationGroup.discriminator,
|
|
1303
1326
|
value: updateMarketConfigEncodedValue(
|
|
1304
1327
|
UpdateLendingMarketMode.UpdateElevationGroup.discriminator,
|
|
@@ -1314,7 +1337,7 @@ const updateLendingMarketConfig = (
|
|
|
1314
1337
|
break;
|
|
1315
1338
|
case 'minNetValueInObligationSf':
|
|
1316
1339
|
if (!market.minNetValueInObligationSf.eq(newMarket.minNetValueInObligationSf)) {
|
|
1317
|
-
|
|
1340
|
+
updateLendingMarketIxsArgs.push({
|
|
1318
1341
|
mode: UpdateLendingMarketMode.UpdateMinNetValueObligationPostAction.discriminator,
|
|
1319
1342
|
value: updateMarketConfigEncodedValue(
|
|
1320
1343
|
UpdateLendingMarketMode.UpdateMinNetValueObligationPostAction.discriminator,
|
|
@@ -1325,7 +1348,7 @@ const updateLendingMarketConfig = (
|
|
|
1325
1348
|
break;
|
|
1326
1349
|
case 'minValueSkipLiquidationBfChecks':
|
|
1327
1350
|
if (!market.minValueSkipLiquidationBfChecks.eq(newMarket.minValueSkipLiquidationBfChecks)) {
|
|
1328
|
-
|
|
1351
|
+
updateLendingMarketIxsArgs.push({
|
|
1329
1352
|
mode: UpdateLendingMarketMode.UpdateMinValueBfSkipPriorityLiqCheck.discriminator,
|
|
1330
1353
|
value: updateMarketConfigEncodedValue(
|
|
1331
1354
|
UpdateLendingMarketMode.UpdateMinValueBfSkipPriorityLiqCheck.discriminator,
|
|
@@ -1336,7 +1359,7 @@ const updateLendingMarketConfig = (
|
|
|
1336
1359
|
break;
|
|
1337
1360
|
case 'minValueSkipLiquidationLtvChecks':
|
|
1338
1361
|
if (!market.minValueSkipLiquidationLtvChecks.eq(newMarket.minValueSkipLiquidationLtvChecks)) {
|
|
1339
|
-
|
|
1362
|
+
updateLendingMarketIxsArgs.push({
|
|
1340
1363
|
mode: UpdateLendingMarketMode.UpdateMinValueLtvSkipPriorityLiqCheck.discriminator,
|
|
1341
1364
|
value: updateMarketConfigEncodedValue(
|
|
1342
1365
|
UpdateLendingMarketMode.UpdateMinValueLtvSkipPriorityLiqCheck.discriminator,
|
|
@@ -1349,7 +1372,7 @@ const updateLendingMarketConfig = (
|
|
|
1349
1372
|
if (
|
|
1350
1373
|
market.individualAutodeleverageMarginCallPeriodSecs !== newMarket.individualAutodeleverageMarginCallPeriodSecs
|
|
1351
1374
|
) {
|
|
1352
|
-
|
|
1375
|
+
updateLendingMarketIxsArgs.push({
|
|
1353
1376
|
mode: UpdateLendingMarketMode.UpdateIndividualAutodeleverageMarginCallPeriodSecs.discriminator,
|
|
1354
1377
|
value: updateMarketConfigEncodedValue(
|
|
1355
1378
|
UpdateLendingMarketMode.UpdateIndividualAutodeleverageMarginCallPeriodSecs.discriminator,
|
|
@@ -1360,7 +1383,7 @@ const updateLendingMarketConfig = (
|
|
|
1360
1383
|
break;
|
|
1361
1384
|
case 'name':
|
|
1362
1385
|
if (!sameLengthArrayEquals(market.name, newMarket.name)) {
|
|
1363
|
-
|
|
1386
|
+
updateLendingMarketIxsArgs.push({
|
|
1364
1387
|
mode: UpdateLendingMarketMode.UpdateName.discriminator,
|
|
1365
1388
|
value: updateMarketConfigEncodedValue(UpdateLendingMarketMode.UpdateName.discriminator, newMarket.name),
|
|
1366
1389
|
});
|
|
@@ -1368,7 +1391,7 @@ const updateLendingMarketConfig = (
|
|
|
1368
1391
|
break;
|
|
1369
1392
|
case 'minInitialDepositAmount':
|
|
1370
1393
|
if (!market.minInitialDepositAmount.eq(newMarket.minInitialDepositAmount)) {
|
|
1371
|
-
|
|
1394
|
+
updateLendingMarketIxsArgs.push({
|
|
1372
1395
|
mode: UpdateLendingMarketMode.UpdateInitialDepositAmount.discriminator,
|
|
1373
1396
|
value: updateMarketConfigEncodedValue(
|
|
1374
1397
|
UpdateLendingMarketMode.UpdateInitialDepositAmount.discriminator,
|
|
@@ -1379,7 +1402,7 @@ const updateLendingMarketConfig = (
|
|
|
1379
1402
|
break;
|
|
1380
1403
|
case 'obligationOrdersEnabled':
|
|
1381
1404
|
if (market.obligationOrdersEnabled !== newMarket.obligationOrdersEnabled) {
|
|
1382
|
-
|
|
1405
|
+
updateLendingMarketIxsArgs.push({
|
|
1383
1406
|
mode: UpdateLendingMarketMode.UpdateObligationOrdersEnabled.discriminator,
|
|
1384
1407
|
value: updateMarketConfigEncodedValue(
|
|
1385
1408
|
UpdateLendingMarketMode.UpdateObligationOrdersEnabled.discriminator,
|
|
@@ -1391,7 +1414,7 @@ const updateLendingMarketConfig = (
|
|
|
1391
1414
|
default:
|
|
1392
1415
|
assertNever(key);
|
|
1393
1416
|
}
|
|
1394
|
-
return
|
|
1417
|
+
return updateLendingMarketIxsArgs;
|
|
1395
1418
|
};
|
|
1396
1419
|
|
|
1397
1420
|
function parseForChangesMarketConfigAndGetIxs(
|
|
@@ -1400,19 +1423,19 @@ function parseForChangesMarketConfigAndGetIxs(
|
|
|
1400
1423
|
programId: PublicKey
|
|
1401
1424
|
): TransactionInstruction[] {
|
|
1402
1425
|
const market = marketWithAddress.state;
|
|
1403
|
-
const
|
|
1426
|
+
const updateLendingMarketIxsArgs: { mode: number; value: Buffer }[] = [];
|
|
1404
1427
|
|
|
1405
1428
|
for (const key in market.toJSON()) {
|
|
1406
1429
|
if (isExcludedLendingMarketKey(key)) {
|
|
1407
1430
|
continue;
|
|
1408
1431
|
}
|
|
1409
|
-
|
|
1432
|
+
updateLendingMarketIxsArgs.push(...updateLendingMarketConfig(key as LendingMarketKey, market, newMarket));
|
|
1410
1433
|
}
|
|
1411
1434
|
|
|
1412
|
-
const
|
|
1435
|
+
const ixs: TransactionInstruction[] = [];
|
|
1413
1436
|
|
|
1414
|
-
|
|
1415
|
-
|
|
1437
|
+
updateLendingMarketIxsArgs.forEach((updateLendingMarketConfigArgs) => {
|
|
1438
|
+
ixs.push(
|
|
1416
1439
|
updateMarketConfigIx(
|
|
1417
1440
|
marketWithAddress,
|
|
1418
1441
|
updateLendingMarketConfigArgs.mode,
|
|
@@ -1422,7 +1445,7 @@ function parseForChangesMarketConfigAndGetIxs(
|
|
|
1422
1445
|
);
|
|
1423
1446
|
});
|
|
1424
1447
|
|
|
1425
|
-
return
|
|
1448
|
+
return ixs;
|
|
1426
1449
|
}
|
|
1427
1450
|
|
|
1428
1451
|
function updateMarketConfigEncodedValue(
|
|
@@ -5,7 +5,7 @@ import { orThrow, roundNearest } from './utils';
|
|
|
5
5
|
import Decimal from 'decimal.js';
|
|
6
6
|
import BN from 'bn.js';
|
|
7
7
|
import { KaminoObligation, Position } from './obligation';
|
|
8
|
-
import { TokenAmount } from './
|
|
8
|
+
import { TokenAmount } from './shared';
|
|
9
9
|
import { ONE_HUNDRED_PCT_IN_BPS } from '../utils';
|
|
10
10
|
import { getSingleElement } from '../utils/validations';
|
|
11
11
|
|