@kamino-finance/klend-sdk 5.2.11 → 5.2.13

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.
Files changed (120) hide show
  1. package/dist/classes/manager.d.ts +38 -9
  2. package/dist/classes/manager.d.ts.map +1 -1
  3. package/dist/classes/manager.js +44 -10
  4. package/dist/classes/manager.js.map +1 -1
  5. package/dist/classes/types.d.ts +23 -0
  6. package/dist/classes/types.d.ts.map +1 -0
  7. package/dist/classes/types.js +3 -0
  8. package/dist/classes/types.js.map +1 -0
  9. package/dist/classes/utils.js +2 -2
  10. package/dist/classes/utils.js.map +1 -1
  11. package/dist/classes/vault.d.ts +47 -11
  12. package/dist/classes/vault.d.ts.map +1 -1
  13. package/dist/classes/vault.js +367 -49
  14. package/dist/classes/vault.js.map +1 -1
  15. package/dist/client_kamino_manager.d.ts.map +1 -1
  16. package/dist/client_kamino_manager.js +62 -12
  17. package/dist/client_kamino_manager.js.map +1 -1
  18. package/dist/idl_codegen_kamino_vault/accounts/Reserve.js +1 -1
  19. package/dist/idl_codegen_kamino_vault/accounts/VaultState.d.ts +18 -9
  20. package/dist/idl_codegen_kamino_vault/accounts/VaultState.d.ts.map +1 -1
  21. package/dist/idl_codegen_kamino_vault/accounts/VaultState.js +62 -42
  22. package/dist/idl_codegen_kamino_vault/accounts/VaultState.js.map +1 -1
  23. package/dist/idl_codegen_kamino_vault/errors/custom.d.ts +112 -80
  24. package/dist/idl_codegen_kamino_vault/errors/custom.d.ts.map +1 -1
  25. package/dist/idl_codegen_kamino_vault/errors/custom.js +214 -158
  26. package/dist/idl_codegen_kamino_vault/errors/custom.js.map +1 -1
  27. package/dist/idl_codegen_kamino_vault/instructions/deposit.d.ts +1 -1
  28. package/dist/idl_codegen_kamino_vault/instructions/deposit.d.ts.map +1 -1
  29. package/dist/idl_codegen_kamino_vault/instructions/deposit.js +1 -1
  30. package/dist/idl_codegen_kamino_vault/instructions/deposit.js.map +1 -1
  31. package/dist/idl_codegen_kamino_vault/instructions/index.d.ts +6 -0
  32. package/dist/idl_codegen_kamino_vault/instructions/index.d.ts.map +1 -1
  33. package/dist/idl_codegen_kamino_vault/instructions/index.js +7 -1
  34. package/dist/idl_codegen_kamino_vault/instructions/index.js.map +1 -1
  35. package/dist/idl_codegen_kamino_vault/instructions/initVault.d.ts +2 -2
  36. package/dist/idl_codegen_kamino_vault/instructions/initVault.d.ts.map +1 -1
  37. package/dist/idl_codegen_kamino_vault/instructions/initVault.js +2 -2
  38. package/dist/idl_codegen_kamino_vault/instructions/initVault.js.map +1 -1
  39. package/dist/idl_codegen_kamino_vault/instructions/initializeSharesMetadata.d.ts +19 -0
  40. package/dist/idl_codegen_kamino_vault/instructions/initializeSharesMetadata.d.ts.map +1 -0
  41. package/dist/idl_codegen_kamino_vault/instructions/initializeSharesMetadata.js +58 -0
  42. package/dist/idl_codegen_kamino_vault/instructions/initializeSharesMetadata.js.map +1 -0
  43. package/dist/idl_codegen_kamino_vault/instructions/invest.d.ts +3 -4
  44. package/dist/idl_codegen_kamino_vault/instructions/invest.d.ts.map +1 -1
  45. package/dist/idl_codegen_kamino_vault/instructions/invest.js +2 -3
  46. package/dist/idl_codegen_kamino_vault/instructions/invest.js.map +1 -1
  47. package/dist/idl_codegen_kamino_vault/instructions/updateSharesMetadata.d.ts +16 -0
  48. package/dist/idl_codegen_kamino_vault/instructions/updateSharesMetadata.d.ts.map +1 -0
  49. package/dist/idl_codegen_kamino_vault/instructions/updateSharesMetadata.js +55 -0
  50. package/dist/idl_codegen_kamino_vault/instructions/updateSharesMetadata.js.map +1 -0
  51. package/dist/idl_codegen_kamino_vault/instructions/updateVaultConfig.js +1 -1
  52. package/dist/idl_codegen_kamino_vault/instructions/updateVaultConfig.js.map +1 -1
  53. package/dist/idl_codegen_kamino_vault/instructions/withdraw.d.ts +24 -20
  54. package/dist/idl_codegen_kamino_vault/instructions/withdraw.d.ts.map +1 -1
  55. package/dist/idl_codegen_kamino_vault/instructions/withdraw.js +81 -20
  56. package/dist/idl_codegen_kamino_vault/instructions/withdraw.js.map +1 -1
  57. package/dist/idl_codegen_kamino_vault/instructions/withdrawFromAvailable.d.ts +21 -0
  58. package/dist/idl_codegen_kamino_vault/instructions/withdrawFromAvailable.d.ts.map +1 -0
  59. package/dist/idl_codegen_kamino_vault/instructions/withdrawFromAvailable.js +55 -0
  60. package/dist/idl_codegen_kamino_vault/instructions/withdrawFromAvailable.js.map +1 -0
  61. package/dist/idl_codegen_kamino_vault/instructions/withdrawPendingFees.d.ts +2 -3
  62. package/dist/idl_codegen_kamino_vault/instructions/withdrawPendingFees.d.ts.map +1 -1
  63. package/dist/idl_codegen_kamino_vault/instructions/withdrawPendingFees.js +3 -4
  64. package/dist/idl_codegen_kamino_vault/instructions/withdrawPendingFees.js.map +1 -1
  65. package/dist/idl_codegen_kamino_vault/types/ReserveConfig.d.ts +78 -20
  66. package/dist/idl_codegen_kamino_vault/types/ReserveConfig.d.ts.map +1 -1
  67. package/dist/idl_codegen_kamino_vault/types/ReserveConfig.js +45 -14
  68. package/dist/idl_codegen_kamino_vault/types/ReserveConfig.js.map +1 -1
  69. package/dist/idl_codegen_kamino_vault/types/ReserveLiquidity.d.ts +16 -16
  70. package/dist/idl_codegen_kamino_vault/types/ReserveLiquidity.d.ts.map +1 -1
  71. package/dist/idl_codegen_kamino_vault/types/ReserveLiquidity.js +16 -16
  72. package/dist/idl_codegen_kamino_vault/types/ReserveLiquidity.js.map +1 -1
  73. package/dist/idl_codegen_kamino_vault/types/VaultAllocation.d.ts +5 -5
  74. package/dist/idl_codegen_kamino_vault/types/VaultAllocation.js +7 -7
  75. package/dist/idl_codegen_kamino_vault/types/VaultConfigField.d.ts +46 -7
  76. package/dist/idl_codegen_kamino_vault/types/VaultConfigField.d.ts.map +1 -1
  77. package/dist/idl_codegen_kamino_vault/types/VaultConfigField.js +84 -12
  78. package/dist/idl_codegen_kamino_vault/types/VaultConfigField.js.map +1 -1
  79. package/dist/idl_codegen_kamino_vault/types/index.d.ts +2 -2
  80. package/dist/idl_codegen_kamino_vault/types/index.d.ts.map +1 -1
  81. package/dist/idl_codegen_kamino_vault/types/index.js.map +1 -1
  82. package/dist/lending_operations/repay_with_collateral_calcs.d.ts.map +1 -1
  83. package/dist/lending_operations/repay_with_collateral_calcs.js +10 -1
  84. package/dist/lending_operations/repay_with_collateral_calcs.js.map +1 -1
  85. package/dist/lending_operations/repay_with_collateral_operations.d.ts.map +1 -1
  86. package/dist/lending_operations/repay_with_collateral_operations.js +7 -6
  87. package/dist/lending_operations/repay_with_collateral_operations.js.map +1 -1
  88. package/dist/leverage/operations.d.ts.map +1 -1
  89. package/dist/leverage/operations.js +12 -8
  90. package/dist/leverage/operations.js.map +1 -1
  91. package/dist/leverage/types.d.ts +1 -0
  92. package/dist/leverage/types.d.ts.map +1 -1
  93. package/package.json +1 -1
  94. package/src/classes/manager.ts +60 -13
  95. package/src/classes/types.ts +28 -0
  96. package/src/classes/utils.ts +2 -2
  97. package/src/classes/vault.ts +527 -54
  98. package/src/client_kamino_manager.ts +119 -15
  99. package/src/idl_codegen_kamino_vault/accounts/Reserve.ts +1 -1
  100. package/src/idl_codegen_kamino_vault/accounts/VaultState.ts +215 -178
  101. package/src/idl_codegen_kamino_vault/errors/custom.ts +213 -157
  102. package/src/idl_codegen_kamino_vault/instructions/deposit.ts +2 -2
  103. package/src/idl_codegen_kamino_vault/instructions/index.ts +15 -0
  104. package/src/idl_codegen_kamino_vault/instructions/initVault.ts +4 -4
  105. package/src/idl_codegen_kamino_vault/instructions/initializeSharesMetadata.ts +58 -0
  106. package/src/idl_codegen_kamino_vault/instructions/invest.ts +5 -7
  107. package/src/idl_codegen_kamino_vault/instructions/updateSharesMetadata.ts +52 -0
  108. package/src/idl_codegen_kamino_vault/instructions/updateVaultConfig.ts +1 -1
  109. package/src/idl_codegen_kamino_vault/instructions/withdraw.ts +106 -40
  110. package/src/idl_codegen_kamino_vault/instructions/withdrawFromAvailable.ts +56 -0
  111. package/src/idl_codegen_kamino_vault/instructions/withdrawPendingFees.ts +5 -7
  112. package/src/idl_codegen_kamino_vault/types/ReserveConfig.ts +100 -28
  113. package/src/idl_codegen_kamino_vault/types/ReserveLiquidity.ts +25 -24
  114. package/src/idl_codegen_kamino_vault/types/VaultAllocation.ts +9 -9
  115. package/src/idl_codegen_kamino_vault/types/VaultConfigField.ts +103 -13
  116. package/src/idl_codegen_kamino_vault/types/index.ts +8 -2
  117. package/src/lending_operations/repay_with_collateral_calcs.ts +18 -1
  118. package/src/lending_operations/repay_with_collateral_operations.ts +9 -7
  119. package/src/leverage/operations.ts +69 -29
  120. package/src/leverage/types.ts +1 -0
@@ -26,6 +26,7 @@ import {
26
26
  ReserveAllocationConfig,
27
27
  ReserveWithAddress,
28
28
  signSendAndConfirmRawTransactionWithRetry,
29
+ sleep,
29
30
  Web3Client,
30
31
  } from './lib';
31
32
  import * as anchor from '@coral-xyz/anchor';
@@ -224,9 +225,10 @@ async function main() {
224
225
  `--mode <string>`,
225
226
  'simulate - to print txn simulation, inspect - to get txn simulation in explorer, execute - execute txn, multisig - to get bs58 txn for multisig usage'
226
227
  )
228
+ .option(`--name`, 'The onchain name of the strat')
227
229
  .option(`--staging`, 'If true, will use the staging programs')
228
230
  .option(`--multisig <string>`, 'If using multisig mode this is required, otherwise will be ignored')
229
- .action(async ({ mint, mode, staging, multisig }) => {
231
+ .action(async ({ mint, mode, name, staging, multisig }) => {
230
232
  const env = initializeClient(mode === 'multisig', staging);
231
233
  const tokenMint = new PublicKey(mint);
232
234
 
@@ -244,11 +246,14 @@ async function main() {
244
246
  tokenMintProgramId: tokenProgramID,
245
247
  performanceFeeRate: new Decimal(0.0),
246
248
  managementFeeRate: new Decimal(0.0),
249
+ name,
247
250
  });
248
251
 
249
- const { vault: vaultKp, ixns: instructions } = await kaminoManager.createVaultIxs(kaminoVaultConfig);
252
+ const { vault: vaultKp, initVaultIxs: instructions } = await kaminoManager.createVaultIxs(kaminoVaultConfig);
250
253
 
251
- const _createVaultSig = await processTxn(env.client, env.payer, instructions, mode, 2500, [vaultKp]);
254
+ const _createVaultSig = await processTxn(env.client, env.payer, instructions.initVaultIxs, mode, 2500, [vaultKp]);
255
+ await sleep(5000);
256
+ const _populateLUTSig = await processTxn(env.client, env.payer, instructions.populateLUTIxs, mode, 2500, []);
252
257
 
253
258
  mode === 'execute' && console.log('Vault created:', vaultKp.publicKey.toBase58());
254
259
  });
@@ -274,9 +279,16 @@ async function main() {
274
279
  const kaminoManager = new KaminoManager(env.connection, env.kLendProgramId, env.kVaultProgramId);
275
280
 
276
281
  const kaminoVault = new KaminoVault(vaultAddress, undefined, env.kVaultProgramId);
277
- const instruction = await kaminoManager.updateVaultConfigIx(kaminoVault, new PendingVaultAdmin(), newAdmin);
278
-
279
- const updateVaultPendingAdminSig = await processTxn(env.client, env.payer, [instruction], mode, 2500, []);
282
+ const instructions = await kaminoManager.updateVaultConfigIxs(kaminoVault, new PendingVaultAdmin(), newAdmin);
283
+
284
+ const updateVaultPendingAdminSig = await processTxn(
285
+ env.client,
286
+ env.payer,
287
+ [instructions.updateVaultConfigIx, ...instructions.updateLUTIxs],
288
+ mode,
289
+ 2500,
290
+ []
291
+ );
280
292
 
281
293
  mode === 'execute' && console.log('Pending admin updated:', updateVaultPendingAdminSig);
282
294
  });
@@ -302,13 +314,84 @@ async function main() {
302
314
  const kaminoManager = new KaminoManager(env.connection, env.kLendProgramId, env.kVaultProgramId);
303
315
 
304
316
  const kaminoVault = new KaminoVault(vaultAddress, undefined, env.kVaultProgramId);
305
- const instruction = await kaminoManager.updateVaultConfigIx(kaminoVault, new ManagementFeeBps(), feeBps);
317
+ const instructions = await kaminoManager.updateVaultConfigIxs(kaminoVault, new ManagementFeeBps(), feeBps);
318
+
319
+ const updateVaultConfigSig = await processTxn(
320
+ env.client,
321
+ env.payer,
322
+ [instructions.updateVaultConfigIx, ...instructions.updateLUTIxs],
323
+ mode,
324
+ 2500,
325
+ []
326
+ );
327
+
328
+ mode === 'execute' && console.log('Management fee updated:', updateVaultConfigSig);
329
+ });
330
+
331
+ commands
332
+ .command('insert-into-lut')
333
+ .requiredOption('--lut <string>', 'Lookup table address')
334
+ .requiredOption('--addresses <string>', 'The addresses to insert into the LUT, space separated')
335
+ .requiredOption(
336
+ `--mode <string>`,
337
+ 'simulate - to print txn simulation, inspect - to get txn simulation in explorer, execute - execute txn, multisig - to get bs58 txn for multisig usage'
338
+ )
339
+ .option(`--staging`, 'If true, will use the staging programs')
340
+ .option(`--multisig <string>`, 'If using multisig mode this is required, otherwise will be ignored')
341
+ .action(async ({ lut, addresses, mode, staging, multisig }) => {
342
+ const env = initializeClient(mode === 'multisig', staging);
343
+ const lutAddress = new PublicKey(lut);
306
344
 
307
- const updateVaultConfigSig = await processTxn(env.client, env.payer, [instruction], mode, 2500, []);
345
+ const addressesArr = addresses.split(' ').map((address: string) => new PublicKey(address));
346
+
347
+ if (mode === 'multisig' && !multisig) {
348
+ throw new Error('If using multisig mode, multisig is required');
349
+ }
350
+
351
+ const kaminoManager = new KaminoManager(env.connection, env.kLendProgramId, env.kVaultProgramId);
352
+
353
+ const instructions = await kaminoManager.insertIntoLUT(env.payer.publicKey, lutAddress, addressesArr);
354
+
355
+ const updateVaultConfigSig = await processTxn(env.client, env.payer, instructions, mode, 2500, []);
308
356
 
309
357
  mode === 'execute' && console.log('Management fee updated:', updateVaultConfigSig);
310
358
  });
311
359
 
360
+ commands
361
+ .command('sync-vault-lut')
362
+ .requiredOption('--vault <string>', 'The vault address to sync')
363
+ .requiredOption(
364
+ `--mode <string>`,
365
+ 'simulate - to print txn simulation, inspect - to get txn simulation in explorer, execute - execute txn, multisig - to get bs58 txn for multisig usage'
366
+ )
367
+ .option(`--staging`, 'If true, will use the staging programs')
368
+ .option(`--multisig <string>`, 'If using multisig mode this is required, otherwise will be ignored')
369
+ .action(async ({ vault, mode, staging, multisig }) => {
370
+ const env = initializeClient(mode === 'multisig', staging);
371
+ const vaultAddress = new PublicKey(vault);
372
+
373
+ if (mode === 'multisig' && !multisig) {
374
+ throw new Error('If using multisig mode, multisig is required');
375
+ }
376
+
377
+ const kaminoManager = new KaminoManager(env.connection, env.kLendProgramId, env.kVaultProgramId);
378
+
379
+ const kaminoVault = new KaminoVault(vaultAddress, undefined, env.kVaultProgramId);
380
+ const syncLUTIxs = await kaminoManager.syncVaultLUT(kaminoVault);
381
+
382
+ // if we need to create the LUT we have to do that in a separate tx and wait a little bit after
383
+ if (syncLUTIxs.setupLUTIfNeededIxs.length > 0) {
384
+ const setupLUTSig = await processTxn(env.client, env.payer, syncLUTIxs.setupLUTIfNeededIxs, mode, 2500, []);
385
+ await sleep(5000);
386
+ mode === 'execute' && console.log('LUT created and set to the vault:', setupLUTSig);
387
+ }
388
+ // if there are accounts to be added to the LUT we have to do that in a separate tx
389
+ for (const ix of syncLUTIxs.syncLUTIxs) {
390
+ const insertIntoLUTSig = await processTxn(env.client, env.payer, [ix], mode, 2500, []);
391
+ mode === 'execute' && console.log('Accounts added to the LUT:', insertIntoLUTSig);
392
+ }
393
+ });
394
+
312
395
  commands
313
396
  .command('update-vault-perf-fee')
314
397
  .requiredOption('--vault <string>', 'Vault address')
@@ -330,9 +413,16 @@ async function main() {
330
413
  const kaminoManager = new KaminoManager(env.connection, env.kLendProgramId, env.kVaultProgramId);
331
414
 
332
415
  const kaminoVault = new KaminoVault(vaultAddress, undefined, env.kVaultProgramId);
333
- const instruction = await kaminoManager.updateVaultConfigIx(kaminoVault, new PerformanceFeeBps(), feeBps);
334
-
335
- const updateVaultPerfFeeSig = await processTxn(env.client, env.payer, [instruction], mode, 2500, []);
416
+ const instructions = await kaminoManager.updateVaultConfigIxs(kaminoVault, new PerformanceFeeBps(), feeBps);
417
+
418
+ const updateVaultPerfFeeSig = await processTxn(
419
+ env.client,
420
+ env.payer,
421
+ [instructions.updateVaultConfigIx, ...instructions.updateLUTIxs],
422
+ mode,
423
+ 2500,
424
+ []
425
+ );
336
426
 
337
427
  mode === 'execute' && console.log('Performance fee updated:', updateVaultPerfFeeSig);
338
428
  });
@@ -357,9 +447,16 @@ async function main() {
357
447
  const kaminoManager = new KaminoManager(env.connection, env.kLendProgramId, env.kVaultProgramId);
358
448
 
359
449
  const kaminoVault = new KaminoVault(vaultAddress, undefined, env.kVaultProgramId);
360
- const instruction = await kaminoManager.acceptVaultOwnershipIx(kaminoVault);
361
-
362
- const acceptVaultOwnershipSig = await processTxn(env.client, env.payer, [instruction], mode, 2500, []);
450
+ const instructions = await kaminoManager.acceptVaultOwnershipIxs(kaminoVault);
451
+
452
+ const acceptVaultOwnershipSig = await processTxn(
453
+ env.client,
454
+ env.payer,
455
+ [instructions.acceptVaultOwnershipIx, ...instructions.updateLUTIxs],
456
+ mode,
457
+ 2500,
458
+ []
459
+ );
363
460
 
364
461
  mode === 'execute' && console.log('Vault ownership accepted:', acceptVaultOwnershipSig);
365
462
  });
@@ -466,7 +563,14 @@ async function main() {
466
563
  firstReserveAllocationConfig
467
564
  );
468
565
 
469
- const updateVaultAllocationSig = await processTxn(env.client, env.payer, [instructions], mode, 2500, []);
566
+ const updateVaultAllocationSig = await processTxn(
567
+ env.client,
568
+ env.payer,
569
+ [instructions.updateReserveAllocationIx, ...instructions.updateLUTIxs],
570
+ mode,
571
+ 2500,
572
+ []
573
+ );
470
574
 
471
575
  mode === 'execute' && console.log('Vault allocation updated:', updateVaultAllocationSig);
472
576
  });
@@ -99,7 +99,7 @@ export class Reserve {
99
99
  types.ReserveCollateral.layout("collateral"),
100
100
  borsh.array(borsh.u64(), 150, "reserveCollateralPadding"),
101
101
  types.ReserveConfig.layout("config"),
102
- borsh.array(borsh.u64(), 117, "configPadding"),
102
+ borsh.array(borsh.u64(), 116, "configPadding"),
103
103
  borsh.u64("borrowedAmountOutsideElevationGroup"),
104
104
  borsh.array(
105
105
  borsh.u64(),