@kamino-finance/klend-sdk 5.9.0 → 5.10.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.
Files changed (37) hide show
  1. package/dist/classes/farm_utils.d.ts +22 -0
  2. package/dist/classes/farm_utils.d.ts.map +1 -0
  3. package/dist/classes/farm_utils.js +93 -0
  4. package/dist/classes/farm_utils.js.map +1 -0
  5. package/dist/classes/lut_utils.d.ts +29 -0
  6. package/dist/classes/lut_utils.d.ts.map +1 -0
  7. package/dist/classes/lut_utils.js +62 -0
  8. package/dist/classes/lut_utils.js.map +1 -0
  9. package/dist/classes/manager.d.ts +47 -26
  10. package/dist/classes/manager.d.ts.map +1 -1
  11. package/dist/classes/manager.js +47 -23
  12. package/dist/classes/manager.js.map +1 -1
  13. package/dist/classes/types.d.ts +15 -0
  14. package/dist/classes/types.d.ts.map +1 -1
  15. package/dist/classes/utils.d.ts +6 -0
  16. package/dist/classes/utils.d.ts.map +1 -1
  17. package/dist/classes/utils.js +10 -0
  18. package/dist/classes/utils.js.map +1 -1
  19. package/dist/classes/vault.d.ts +81 -55
  20. package/dist/classes/vault.d.ts.map +1 -1
  21. package/dist/classes/vault.js +225 -132
  22. package/dist/classes/vault.js.map +1 -1
  23. package/dist/client_kamino_manager.d.ts.map +1 -1
  24. package/dist/client_kamino_manager.js +10 -26
  25. package/dist/client_kamino_manager.js.map +1 -1
  26. package/dist/utils/ata.d.ts.map +1 -1
  27. package/dist/utils/ata.js +1 -0
  28. package/dist/utils/ata.js.map +1 -1
  29. package/package.json +6 -88
  30. package/src/classes/farm_utils.ts +155 -0
  31. package/src/classes/lut_utils.ts +63 -0
  32. package/src/classes/manager.ts +67 -27
  33. package/src/classes/types.ts +18 -0
  34. package/src/classes/utils.ts +10 -0
  35. package/src/classes/vault.ts +309 -156
  36. package/src/client_kamino_manager.ts +19 -33
  37. package/src/utils/ata.ts +1 -0
@@ -53,7 +53,6 @@ import {
53
53
  PerformanceFeeBps,
54
54
  } from './idl_codegen_kamino_vault/types/VaultConfigField';
55
55
  import { getAccountOwner } from './utils/rpc';
56
- import { Farms, FarmState, getUserStatePDA } from '@kamino-finance/farms-sdk';
57
56
 
58
57
  dotenv.config({
59
58
  path: `.env${process.env.ENV ? '.' + process.env.ENV : ''}`,
@@ -351,7 +350,7 @@ async function main() {
351
350
 
352
351
  const kaminoManager = new KaminoManager(env.connection, env.kLendProgramId, env.kVaultProgramId);
353
352
 
354
- const instructions = await kaminoManager.insertIntoLUT(env.payer.publicKey, lutAddress, addressesArr);
353
+ const instructions = await kaminoManager.insertIntoLUTIxs(env.payer.publicKey, lutAddress, addressesArr);
355
354
 
356
355
  const updateVaultConfigSig = await processTxn(env.client, env.payer, instructions, mode, 2500, []);
357
356
 
@@ -378,7 +377,7 @@ async function main() {
378
377
  const kaminoManager = new KaminoManager(env.connection, env.kLendProgramId, env.kVaultProgramId);
379
378
 
380
379
  const kaminoVault = new KaminoVault(vaultAddress, undefined, env.kVaultProgramId);
381
- const syncLUTIxs = await kaminoManager.syncVaultLUT(kaminoVault);
380
+ const syncLUTIxs = await kaminoManager.syncVaultLUTIxs(kaminoVault);
382
381
 
383
382
  // if we need to create the LUT we have to do that in a separate tx and wait a little bit after
384
383
  if (syncLUTIxs.setupLUTIfNeededIxs.length > 0) {
@@ -523,51 +522,29 @@ async function main() {
523
522
  commands
524
523
  .command('stake')
525
524
  .requiredOption('--vault <string>', 'Vault address')
526
- .requiredOption('--farm <string>', 'Farm address')
527
- .requiredOption('--amount <string>', 'The number of kTokens to stake')
528
525
  .requiredOption(
529
526
  `--mode <string>`,
530
527
  'simulate - to print txn simulation, inspect - to get txn simulation in explorer, execute - execute txn, multisig - to get bs58 txn for multisig usage'
531
528
  )
532
529
  .option(`--staging`, 'If true, will use the staging programs')
533
530
  .option(`--multisig <string>`, 'If using multisig mode this is required, otherwise will be ignored')
534
- .action(async ({ vault, farm, amount, mode, staging, multisig }) => {
531
+ .action(async ({ vault, mode, staging, multisig }) => {
535
532
  const env = initializeClient(mode === 'multisig', staging);
536
533
  const vaultAddress = new PublicKey(vault);
537
- const farmAddress = new PublicKey(farm);
538
-
539
- const farmClient = new Farms(env.connection);
540
-
541
- const farmState = await FarmState.fetch(env.connection, farmAddress);
542
- const vaultState = await new KaminoVault(vaultAddress, undefined, env.kVaultProgramId).getState(env.connection);
543
534
 
544
- const scopePricesArg = farmState!.scopePrices.equals(PublicKey.default)
545
- ? farmClient.getProgramID()
546
- : farmState!.scopePrices;
547
-
548
- const ixns: TransactionInstruction[] = [];
549
- const userState = getUserStatePDA(farmClient.getProgramID(), farmAddress, env.provider.publicKey);
550
- if (!userState) {
551
- const createUserIx = await farmClient.createNewUserIx(env.provider.publicKey, farmAddress);
552
- ixns.push(createUserIx);
553
- }
535
+ const kaminoVault = new KaminoVault(vaultAddress, undefined, env.kVaultProgramId);
554
536
 
555
- // todo: fix in farms sdk to make this not async
556
- const stakeIx = await farmClient.stakeIx(
537
+ const stakeIxs = await new KaminoManager(env.connection, env.kLendProgramId, env.kVaultProgramId).stakeSharesIxs(
557
538
  env.payer.publicKey,
558
- farmAddress,
559
- new Decimal(amount),
560
- vaultState.sharesMint,
561
- scopePricesArg
539
+ kaminoVault
562
540
  );
563
- ixns.push(stakeIx);
564
541
 
565
542
  if (mode === 'multisig' && !multisig) {
566
543
  throw new Error('If using multisig mode, multisig is required');
567
544
  }
568
- const withdrawPendingFeesSig = await processTxn(env.client, env.payer, ixns, mode, 2500, []);
545
+ const withdrawPendingFeesSig = await processTxn(env.client, env.payer, stakeIxs, mode, 2500, []);
569
546
 
570
- mode === 'execute' && console.log('Pending fees withdrawn:', withdrawPendingFeesSig);
547
+ mode === 'execute' && console.log('Stake into vault farm:', withdrawPendingFeesSig);
571
548
  });
572
549
 
573
550
  commands
@@ -647,7 +624,8 @@ async function main() {
647
624
  const kaminoManager = new KaminoManager(env.connection, env.kLendProgramId, env.kVaultProgramId);
648
625
 
649
626
  const kaminoVault = new KaminoVault(vaultAddress, undefined, env.kVaultProgramId);
650
- const instructions = await kaminoManager.depositToVaultIxs(env.payer.publicKey, kaminoVault, amount);
627
+ const depositInstructions = await kaminoManager.depositToVaultIxs(env.payer.publicKey, kaminoVault, amount);
628
+ const instructions = [...depositInstructions.depositIxs, ...depositInstructions.stakeInFarmIfNeededIxs];
651
629
 
652
630
  const depositSig = await processTxn(env.client, env.payer, instructions, mode, 2500, [], 800_000);
653
631
 
@@ -682,7 +660,15 @@ async function main() {
682
660
  await env.connection.getSlot('confirmed')
683
661
  );
684
662
 
685
- const depositSig = await processTxn(env.client, env.payer, withdrawIxs, mode, 2500, [], 800_000);
663
+ const depositSig = await processTxn(
664
+ env.client,
665
+ env.payer,
666
+ [...withdrawIxs.unstakeFromFarmIfNeededIxs, ...withdrawIxs.withdrawIxs],
667
+ mode,
668
+ 2500,
669
+ [],
670
+ 800_000
671
+ );
686
672
 
687
673
  mode === 'execute' && console.log('User withdraw:', depositSig);
688
674
  });
package/src/utils/ata.ts CHANGED
@@ -150,6 +150,7 @@ export async function getTokenAccountBalance(provider: AnchorProvider, tokenAcco
150
150
  return Number(tokenAccountBalance.value.amount).valueOf();
151
151
  }
152
152
 
153
+ /// Get the balance of a token account in decimal format (tokens, not lamports)
153
154
  export async function getTokenAccountBalanceDecimal(
154
155
  connection: Connection,
155
156
  mint: PublicKey,