@kamino-finance/klend-sdk 7.1.1 → 7.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/dist/@codegen/unstaking_pool/accounts/PoolState.d.ts +53 -0
  2. package/dist/@codegen/unstaking_pool/accounts/PoolState.d.ts.map +1 -0
  3. package/dist/@codegen/unstaking_pool/accounts/PoolState.js +167 -0
  4. package/dist/@codegen/unstaking_pool/accounts/PoolState.js.map +1 -0
  5. package/dist/@codegen/unstaking_pool/accounts/UnstakeTicket.d.ts +41 -0
  6. package/dist/@codegen/unstaking_pool/accounts/UnstakeTicket.d.ts.map +1 -0
  7. package/dist/@codegen/unstaking_pool/accounts/UnstakeTicket.js +143 -0
  8. package/dist/@codegen/unstaking_pool/accounts/UnstakeTicket.js.map +1 -0
  9. package/dist/@codegen/unstaking_pool/accounts/index.d.ts +5 -0
  10. package/dist/@codegen/unstaking_pool/accounts/index.d.ts.map +1 -0
  11. package/dist/@codegen/unstaking_pool/accounts/index.js +8 -0
  12. package/dist/@codegen/unstaking_pool/accounts/index.js.map +1 -0
  13. package/dist/@codegen/unstaking_pool/errors/anchor.d.ts +435 -0
  14. package/dist/@codegen/unstaking_pool/errors/anchor.d.ts.map +1 -0
  15. package/dist/@codegen/unstaking_pool/errors/anchor.js +767 -0
  16. package/dist/@codegen/unstaking_pool/errors/anchor.js.map +1 -0
  17. package/dist/@codegen/unstaking_pool/errors/custom.d.ts +259 -0
  18. package/dist/@codegen/unstaking_pool/errors/custom.d.ts.map +1 -0
  19. package/dist/@codegen/unstaking_pool/errors/custom.js +458 -0
  20. package/dist/@codegen/unstaking_pool/errors/custom.js.map +1 -0
  21. package/dist/@codegen/unstaking_pool/errors/index.d.ts +6 -0
  22. package/dist/@codegen/unstaking_pool/errors/index.d.ts.map +1 -0
  23. package/dist/@codegen/unstaking_pool/errors/index.js +86 -0
  24. package/dist/@codegen/unstaking_pool/errors/index.js.map +1 -0
  25. package/dist/@codegen/unstaking_pool/instructions/burn.d.ts +21 -0
  26. package/dist/@codegen/unstaking_pool/instructions/burn.d.ts.map +1 -0
  27. package/dist/@codegen/unstaking_pool/instructions/burn.js +67 -0
  28. package/dist/@codegen/unstaking_pool/instructions/burn.js.map +1 -0
  29. package/dist/@codegen/unstaking_pool/instructions/changeTicketAuthority.d.ts +8 -0
  30. package/dist/@codegen/unstaking_pool/instructions/changeTicketAuthority.d.ts.map +1 -0
  31. package/dist/@codegen/unstaking_pool/instructions/changeTicketAuthority.js +16 -0
  32. package/dist/@codegen/unstaking_pool/instructions/changeTicketAuthority.js.map +1 -0
  33. package/dist/@codegen/unstaking_pool/instructions/collect.d.ts +16 -0
  34. package/dist/@codegen/unstaking_pool/instructions/collect.d.ts.map +1 -0
  35. package/dist/@codegen/unstaking_pool/instructions/collect.js +24 -0
  36. package/dist/@codegen/unstaking_pool/instructions/collect.js.map +1 -0
  37. package/dist/@codegen/unstaking_pool/instructions/index.d.ts +17 -0
  38. package/dist/@codegen/unstaking_pool/instructions/index.d.ts.map +1 -0
  39. package/dist/@codegen/unstaking_pool/instructions/index.js +20 -0
  40. package/dist/@codegen/unstaking_pool/instructions/index.js.map +1 -0
  41. package/dist/@codegen/unstaking_pool/instructions/initializePool.d.ts +14 -0
  42. package/dist/@codegen/unstaking_pool/instructions/initializePool.d.ts.map +1 -0
  43. package/dist/@codegen/unstaking_pool/instructions/initializePool.js +22 -0
  44. package/dist/@codegen/unstaking_pool/instructions/initializePool.js.map +1 -0
  45. package/dist/@codegen/unstaking_pool/instructions/mint.d.ts +24 -0
  46. package/dist/@codegen/unstaking_pool/instructions/mint.d.ts.map +1 -0
  47. package/dist/@codegen/unstaking_pool/instructions/mint.js +74 -0
  48. package/dist/@codegen/unstaking_pool/instructions/mint.js.map +1 -0
  49. package/dist/@codegen/unstaking_pool/instructions/splitTicket.d.ts +15 -0
  50. package/dist/@codegen/unstaking_pool/instructions/splitTicket.d.ts.map +1 -0
  51. package/dist/@codegen/unstaking_pool/instructions/splitTicket.js +62 -0
  52. package/dist/@codegen/unstaking_pool/instructions/splitTicket.js.map +1 -0
  53. package/dist/@codegen/unstaking_pool/instructions/updateAdmin.d.ts +7 -0
  54. package/dist/@codegen/unstaking_pool/instructions/updateAdmin.d.ts.map +1 -0
  55. package/dist/@codegen/unstaking_pool/instructions/updateAdmin.js +19 -0
  56. package/dist/@codegen/unstaking_pool/instructions/updateAdmin.js.map +1 -0
  57. package/dist/@codegen/unstaking_pool/instructions/updatePoolConfig.d.ts +13 -0
  58. package/dist/@codegen/unstaking_pool/instructions/updatePoolConfig.d.ts.map +1 -0
  59. package/dist/@codegen/unstaking_pool/instructions/updatePoolConfig.js +60 -0
  60. package/dist/@codegen/unstaking_pool/instructions/updatePoolConfig.js.map +1 -0
  61. package/dist/@codegen/unstaking_pool/programId.d.ts +4 -0
  62. package/dist/@codegen/unstaking_pool/programId.d.ts.map +1 -0
  63. package/dist/@codegen/unstaking_pool/programId.js +9 -0
  64. package/dist/@codegen/unstaking_pool/programId.js.map +1 -0
  65. package/dist/@codegen/unstaking_pool/types/PoolConfigField.d.ts +45 -0
  66. package/dist/@codegen/unstaking_pool/types/PoolConfigField.d.ts.map +1 -0
  67. package/dist/@codegen/unstaking_pool/types/PoolConfigField.js +132 -0
  68. package/dist/@codegen/unstaking_pool/types/PoolConfigField.js.map +1 -0
  69. package/dist/@codegen/unstaking_pool/types/index.d.ts +5 -0
  70. package/dist/@codegen/unstaking_pool/types/index.d.ts.map +1 -0
  71. package/dist/@codegen/unstaking_pool/types/index.js +39 -0
  72. package/dist/@codegen/unstaking_pool/types/index.js.map +1 -0
  73. package/dist/@codegen/unstaking_pool/utils/borshAddress.d.ts +4 -0
  74. package/dist/@codegen/unstaking_pool/utils/borshAddress.d.ts.map +1 -0
  75. package/dist/@codegen/unstaking_pool/utils/borshAddress.js +30 -0
  76. package/dist/@codegen/unstaking_pool/utils/borshAddress.js.map +1 -0
  77. package/dist/@codegen/unstaking_pool/utils/index.d.ts +2 -0
  78. package/dist/@codegen/unstaking_pool/utils/index.d.ts.map +1 -0
  79. package/dist/@codegen/unstaking_pool/utils/index.js +18 -0
  80. package/dist/@codegen/unstaking_pool/utils/index.js.map +1 -0
  81. package/dist/classes/action.d.ts.map +1 -1
  82. package/dist/classes/action.js +5 -5
  83. package/dist/classes/action.js.map +1 -1
  84. package/dist/classes/index.d.ts +5 -0
  85. package/dist/classes/index.d.ts.map +1 -1
  86. package/dist/classes/index.js +5 -0
  87. package/dist/classes/index.js.map +1 -1
  88. package/dist/classes/manager.d.ts.map +1 -1
  89. package/dist/classes/manager.js +2 -3
  90. package/dist/classes/manager.js.map +1 -1
  91. package/dist/classes/stakePool.d.ts +8 -0
  92. package/dist/classes/stakePool.d.ts.map +1 -0
  93. package/dist/classes/stakePool.js +18 -0
  94. package/dist/classes/stakePool.js.map +1 -0
  95. package/dist/classes/standardStakePool.d.ts +76 -0
  96. package/dist/classes/standardStakePool.d.ts.map +1 -0
  97. package/dist/classes/standardStakePool.js +400 -0
  98. package/dist/classes/standardStakePool.js.map +1 -0
  99. package/dist/classes/unstakingPool.d.ts +115 -0
  100. package/dist/classes/unstakingPool.d.ts.map +1 -0
  101. package/dist/classes/unstakingPool.js +372 -0
  102. package/dist/classes/unstakingPool.js.map +1 -0
  103. package/dist/classes/unstakingPoolTypes.d.ts +10 -0
  104. package/dist/classes/unstakingPoolTypes.d.ts.map +1 -0
  105. package/dist/classes/unstakingPoolTypes.js +3 -0
  106. package/dist/classes/unstakingPoolTypes.js.map +1 -0
  107. package/dist/classes/vault.d.ts +0 -9
  108. package/dist/classes/vault.d.ts.map +1 -1
  109. package/dist/classes/vault.js +6 -41
  110. package/dist/classes/vault.js.map +1 -1
  111. package/dist/lending_operations/repay_with_collateral_operations.d.ts.map +1 -1
  112. package/dist/lending_operations/repay_with_collateral_operations.js +0 -2
  113. package/dist/lending_operations/repay_with_collateral_operations.js.map +1 -1
  114. package/dist/lending_operations/swap_collateral_operations.js +0 -1
  115. package/dist/lending_operations/swap_collateral_operations.js.map +1 -1
  116. package/dist/leverage/calcs.d.ts +2 -27
  117. package/dist/leverage/calcs.d.ts.map +1 -1
  118. package/dist/leverage/calcs.js +6 -136
  119. package/dist/leverage/calcs.js.map +1 -1
  120. package/dist/leverage/operations.d.ts +8 -9
  121. package/dist/leverage/operations.d.ts.map +1 -1
  122. package/dist/leverage/operations.js +72 -228
  123. package/dist/leverage/operations.js.map +1 -1
  124. package/dist/leverage/types.d.ts +0 -19
  125. package/dist/leverage/types.d.ts.map +1 -1
  126. package/dist/leverage/utils.d.ts +2 -19
  127. package/dist/leverage/utils.d.ts.map +1 -1
  128. package/dist/leverage/utils.js +0 -164
  129. package/dist/leverage/utils.js.map +1 -1
  130. package/dist/lib.d.ts +1 -0
  131. package/dist/lib.d.ts.map +1 -1
  132. package/dist/lib.js +3 -1
  133. package/dist/lib.js.map +1 -1
  134. package/dist/utils/lookupTable.d.ts +9 -0
  135. package/dist/utils/lookupTable.d.ts.map +1 -1
  136. package/dist/utils/lookupTable.js +37 -0
  137. package/dist/utils/lookupTable.js.map +1 -1
  138. package/package.json +4 -2
  139. package/src/@codegen/unstaking_pool/accounts/PoolState.ts +188 -0
  140. package/src/@codegen/unstaking_pool/accounts/UnstakeTicket.ts +156 -0
  141. package/src/@codegen/unstaking_pool/accounts/index.ts +4 -0
  142. package/src/@codegen/unstaking_pool/errors/anchor.ts +773 -0
  143. package/src/@codegen/unstaking_pool/errors/custom.ts +477 -0
  144. package/src/@codegen/unstaking_pool/errors/index.ts +68 -0
  145. package/src/@codegen/unstaking_pool/instructions/burn.ts +70 -0
  146. package/src/@codegen/unstaking_pool/instructions/changeTicketAuthority.ts +37 -0
  147. package/src/@codegen/unstaking_pool/instructions/collect.ts +53 -0
  148. package/src/@codegen/unstaking_pool/instructions/index.ts +19 -0
  149. package/src/@codegen/unstaking_pool/instructions/initializePool.ts +49 -0
  150. package/src/@codegen/unstaking_pool/instructions/mint.ts +80 -0
  151. package/src/@codegen/unstaking_pool/instructions/splitTicket.ts +59 -0
  152. package/src/@codegen/unstaking_pool/instructions/updateAdmin.ts +39 -0
  153. package/src/@codegen/unstaking_pool/instructions/updatePoolConfig.ts +58 -0
  154. package/src/@codegen/unstaking_pool/programId.ts +9 -0
  155. package/src/@codegen/unstaking_pool/types/PoolConfigField.ts +121 -0
  156. package/src/@codegen/unstaking_pool/types/index.ts +12 -0
  157. package/src/@codegen/unstaking_pool/utils/borshAddress.ts +43 -0
  158. package/src/@codegen/unstaking_pool/utils/index.ts +1 -0
  159. package/src/classes/action.ts +10 -5
  160. package/src/classes/index.ts +5 -0
  161. package/src/classes/manager.ts +3 -4
  162. package/src/classes/stakePool.ts +21 -0
  163. package/src/classes/standardStakePool.ts +487 -0
  164. package/src/classes/unstakingPool.ts +504 -0
  165. package/src/classes/unstakingPoolTypes.ts +12 -0
  166. package/src/classes/vault.ts +43 -56
  167. package/src/idl/unstaking_pool.json +662 -0
  168. package/src/lending_operations/repay_with_collateral_operations.ts +0 -2
  169. package/src/lending_operations/swap_collateral_operations.ts +0 -1
  170. package/src/leverage/calcs.ts +2 -201
  171. package/src/leverage/operations.ts +45 -377
  172. package/src/leverage/types.ts +0 -20
  173. package/src/leverage/utils.ts +3 -320
  174. package/src/lib.ts +1 -0
  175. package/src/utils/lookupTable.ts +48 -0
@@ -18,23 +18,27 @@ const instructions_1 = require("./instructions");
18
18
  const classes_2 = require("../classes");
19
19
  const utils_1 = require("../utils");
20
20
  const calcs_1 = require("./calcs");
21
- const utils_2 = require("./utils");
22
21
  const CreationParameters_1 = require("@kamino-finance/kliquidity-sdk/dist/utils/CreationParameters");
23
22
  const token_1 = require("@solana-program/token");
24
23
  const token_2022_1 = require("@solana-program/token-2022");
25
24
  const consts_1 = require("../utils/consts");
26
- const address_lookup_table_1 = require("@solana-program/address-lookup-table");
27
25
  exports.WITHDRAW_SLOT_OFFSET = 150; // Offset for the withdraw slot to underestimate the exchange rate
28
- async function getDepositWithLeverageSwapInputs({ owner, kaminoMarket, debtTokenMint, collTokenMint, depositAmount, priceDebtToColl, slippagePct, obligation, referrer, currentSlot, targetLeverage, selectedTokenMint, kamino, obligationTypeTagOverride, scopeRefreshConfig, budgetAndPriorityFeeIxs, quoteBufferBps, priceAinB, isKtoken, quoter, useV2Ixs, elevationGroupOverride, }) {
26
+ async function getDepositWithLeverageSwapInputs({ owner, kaminoMarket, debtTokenMint, collTokenMint, depositAmount, priceDebtToColl, slippagePct, obligation, referrer, currentSlot, targetLeverage, selectedTokenMint, obligationTypeTagOverride, scopeRefreshConfig, budgetAndPriorityFeeIxs, quoteBufferBps, quoter, useV2Ixs, elevationGroupOverride, }) {
29
27
  const collReserve = kaminoMarket.getExistingReserveByMint(collTokenMint);
30
28
  const debtReserve = kaminoMarket.getExistingReserveByMint(debtTokenMint);
31
29
  const solTokenReserve = kaminoMarket.getReserveByMint(utils_1.WRAPPED_SOL_MINT);
32
30
  const flashLoanFee = collReserve.getFlashLoanFee() || new decimal_js_1.default(0);
33
31
  const selectedTokenIsCollToken = selectedTokenMint === collTokenMint;
34
32
  const depositTokenIsSol = !solTokenReserve ? false : selectedTokenMint === solTokenReserve.getLiquidityMint();
35
- const collIsKtoken = await isKtoken(collTokenMint);
36
- const strategy = collIsKtoken ? (await kamino.getStrategyByKTokenMint(collTokenMint)) : undefined;
37
- const calcs = await getDepositWithLeverageCalcs(depositAmount, selectedTokenIsCollToken, collIsKtoken, depositTokenIsSol, priceDebtToColl, targetLeverage, slippagePct, flashLoanFee, kamino, strategy, debtTokenMint, priceAinB, debtReserve);
33
+ const calcs = (0, calcs_1.depositLeverageCalcs)({
34
+ depositAmount: depositAmount,
35
+ depositTokenIsCollToken: selectedTokenIsCollToken,
36
+ depositTokenIsSol,
37
+ priceDebtToColl,
38
+ targetLeverage,
39
+ slippagePct,
40
+ flashLoanFee,
41
+ });
38
42
  console.log('Ops Calcs', (0, classes_1.toJson)(calcs));
39
43
  const obligationType = checkObligationType(obligationTypeTagOverride, collTokenMint, debtTokenMint, kaminoMarket);
40
44
  // Build the repay & withdraw collateral tx to get the number of accounts
@@ -48,82 +52,43 @@ async function getDepositWithLeverageSwapInputs({ owner, kaminoMarket, debtToken
48
52
  quoteResponse: undefined,
49
53
  },
50
54
  },
51
- ], strategy, collIsKtoken, useV2Ixs, elevationGroupOverride))[0];
55
+ ], useV2Ixs, elevationGroupOverride))[0];
52
56
  const uniqueKlendAccounts = (0, utils_1.uniqueAccountsWithProgramIds)(klendIxs.instructions);
53
- const swapInputAmount = (0, classes_2.numberToLamportsDecimal)(!collIsKtoken ? calcs.swapDebtTokenIn : calcs.singleSidedDepositKtokenOnly, debtReserve.stats.decimals).ceil();
57
+ const swapInputAmount = (0, classes_2.numberToLamportsDecimal)(calcs.swapDebtTokenIn, debtReserve.stats.decimals).ceil();
54
58
  const swapInputsForQuote = {
55
59
  inputAmountLamports: swapInputAmount.mul(new decimal_js_1.default(1).add(quoteBufferBps.div(CreationParameters_1.FullBPS))),
56
60
  inputMint: debtTokenMint,
57
61
  outputMint: collTokenMint,
58
- amountDebtAtaBalance: new decimal_js_1.default(0), // Only needed for ktokens swaps
59
62
  };
60
63
  const swapQuote = await quoter(swapInputsForQuote, uniqueKlendAccounts);
61
- const quotePriceCalcs = await getDepositWithLeverageCalcs(depositAmount, selectedTokenIsCollToken, collIsKtoken, depositTokenIsSol, swapQuote.priceAInB, targetLeverage, slippagePct, flashLoanFee, kamino, strategy, debtTokenMint, priceAinB, debtReserve);
62
- const swapInputAmountQuotePrice = (0, classes_2.numberToLamportsDecimal)(!collIsKtoken ? quotePriceCalcs.swapDebtTokenIn : quotePriceCalcs.singleSidedDepositKtokenOnly, debtReserve.stats.decimals).ceil();
63
- let expectedDebtTokenAtaBalance = new decimal_js_1.default(0);
64
- if (collIsKtoken) {
65
- let futureBalanceInAta = new decimal_js_1.default(0);
66
- if (debtTokenMint === utils_1.WRAPPED_SOL_MINT) {
67
- futureBalanceInAta = futureBalanceInAta.add(!collIsKtoken ? quotePriceCalcs.initDepositInSol : quotePriceCalcs.initDepositInSol);
68
- }
69
- futureBalanceInAta = futureBalanceInAta.add(!collIsKtoken ? quotePriceCalcs.debtTokenToBorrow : quotePriceCalcs.flashBorrowInDebtTokenKtokenOnly);
70
- expectedDebtTokenAtaBalance = await (0, utils_2.getExpectedTokenBalanceAfterBorrow)(kaminoMarket.getRpc(), debtTokenMint, owner.address, (0, classes_2.numberToLamportsDecimal)(futureBalanceInAta.toDecimalPlaces(debtReserve.stats.decimals), debtReserve.stats.decimals), debtReserve.state.liquidity.mintDecimals.toNumber());
71
- }
64
+ const quotePriceCalcs = (0, calcs_1.depositLeverageCalcs)({
65
+ depositAmount: depositAmount,
66
+ depositTokenIsCollToken: selectedTokenIsCollToken,
67
+ depositTokenIsSol,
68
+ priceDebtToColl: swapQuote.priceAInB,
69
+ targetLeverage,
70
+ slippagePct,
71
+ flashLoanFee,
72
+ });
73
+ const swapInputAmountQuotePrice = (0, classes_2.numberToLamportsDecimal)(quotePriceCalcs.swapDebtTokenIn, debtReserve.stats.decimals).ceil();
72
74
  return {
73
75
  swapInputs: {
74
76
  inputAmountLamports: swapInputAmountQuotePrice,
75
- minOutAmountLamports: (0, classes_2.numberToLamportsDecimal)(!collIsKtoken ? quotePriceCalcs.flashBorrowInCollToken : quotePriceCalcs.flashBorrowInDebtTokenKtokenOnly, !collIsKtoken ? collReserve.stats.decimals : debtReserve.stats.decimals),
77
+ minOutAmountLamports: (0, classes_2.numberToLamportsDecimal)(quotePriceCalcs.flashBorrowInCollToken, collReserve.stats.decimals),
76
78
  inputMint: debtTokenMint,
77
79
  outputMint: collTokenMint,
78
- amountDebtAtaBalance: expectedDebtTokenAtaBalance,
79
80
  },
80
81
  flashLoanInfo: klendIxs.flashLoanInfo,
81
82
  initialInputs: {
82
83
  calcs: quotePriceCalcs,
83
84
  swapQuote,
84
85
  currentSlot,
85
- collIsKtoken,
86
- strategy,
87
86
  obligation: obligation ? obligation : obligationType,
88
87
  klendAccounts: uniqueKlendAccounts,
89
88
  },
90
89
  };
91
90
  }
92
- async function getDepositWithLeverageCalcs(depositAmount, selectedTokenIsCollToken, collIsKtoken, depositTokenIsSol, priceDebtToColl, targetLeverage, slippagePct, flashLoanFee, kamino, strategy, debtTokenMint, priceAinB, debtReserve) {
93
- let calcs;
94
- if (!collIsKtoken) {
95
- calcs = (0, calcs_1.depositLeverageCalcs)({
96
- depositAmount: depositAmount,
97
- depositTokenIsCollToken: selectedTokenIsCollToken,
98
- depositTokenIsSol,
99
- priceDebtToColl,
100
- targetLeverage,
101
- slippagePct,
102
- flashLoanFee,
103
- });
104
- }
105
- else {
106
- calcs = await (0, calcs_1.depositLeverageKtokenCalcs)({
107
- kamino: kamino,
108
- strategy: strategy,
109
- debtTokenMint,
110
- depositAmount: depositAmount,
111
- depositTokenIsCollToken: selectedTokenIsCollToken,
112
- depositTokenIsSol,
113
- priceDebtToColl,
114
- targetLeverage,
115
- slippagePct,
116
- flashLoanFee,
117
- priceAinB,
118
- });
119
- // Rounding to exact number of decimals so this value is passed through in all calcs without rounding inconsistencies
120
- calcs.flashBorrowInDebtTokenKtokenOnly = calcs.flashBorrowInDebtTokenKtokenOnly.toDecimalPlaces(debtReserve.state.liquidity.mintDecimals.toNumber(), decimal_js_1.default.ROUND_CEIL);
121
- calcs.debtTokenToBorrow = calcs.debtTokenToBorrow.toDecimalPlaces(debtReserve.state.liquidity.mintDecimals.toNumber(), decimal_js_1.default.ROUND_CEIL);
122
- calcs.singleSidedDepositKtokenOnly = calcs.singleSidedDepositKtokenOnly.toDecimalPlaces(debtReserve.state.liquidity.mintDecimals.toNumber(), decimal_js_1.default.ROUND_CEIL);
123
- }
124
- return calcs;
125
- }
126
- async function getDepositWithLeverageIxs({ owner, kaminoMarket, debtTokenMint, collTokenMint, depositAmount, priceDebtToColl, slippagePct, obligation, referrer, currentSlot, targetLeverage, selectedTokenMint, kamino, obligationTypeTagOverride, scopeRefreshConfig, budgetAndPriorityFeeIxs, quoteBufferBps, priceAinB, isKtoken, quoter, swapper, elevationGroupOverride, useV2Ixs, }) {
91
+ async function getDepositWithLeverageIxs({ owner, kaminoMarket, debtTokenMint, collTokenMint, depositAmount, priceDebtToColl, slippagePct, obligation, referrer, currentSlot, targetLeverage, selectedTokenMint, obligationTypeTagOverride, scopeRefreshConfig, budgetAndPriorityFeeIxs, quoteBufferBps, quoter, swapper, elevationGroupOverride, useV2Ixs, }) {
127
92
  const { swapInputs, initialInputs } = await getDepositWithLeverageSwapInputs({
128
93
  owner,
129
94
  kaminoMarket,
@@ -137,38 +102,16 @@ async function getDepositWithLeverageIxs({ owner, kaminoMarket, debtTokenMint, c
137
102
  currentSlot,
138
103
  targetLeverage,
139
104
  selectedTokenMint,
140
- kamino,
141
105
  obligationTypeTagOverride,
142
106
  scopeRefreshConfig,
143
107
  budgetAndPriorityFeeIxs,
144
108
  quoteBufferBps,
145
- priceAinB,
146
- isKtoken,
147
109
  quoter,
148
110
  useV2Ixs,
149
111
  });
150
- let depositSwapper;
151
- if (!initialInputs.collIsKtoken) {
152
- depositSwapper = swapper;
153
- }
154
- else {
155
- if (kamino === undefined) {
156
- throw Error('Ktoken use as collateral for leverage without Kamino instance');
157
- }
158
- depositSwapper = await (0, utils_2.getTokenToKtokenSwapper)(kaminoMarket, kamino, owner, slippagePct, swapper, priceAinB, false);
159
- }
112
+ const depositSwapper = swapper;
160
113
  const swapsArray = await depositSwapper(swapInputs, initialInputs.klendAccounts, initialInputs.swapQuote);
161
- if (initialInputs.collIsKtoken) {
162
- if (initialInputs.strategy && initialInputs.strategy.strategy.strategyLookupTable !== utils_1.DEFAULT_PUBLIC_KEY) {
163
- const strategyLut = await (0, address_lookup_table_1.fetchAddressLookupTable)(kaminoMarket.getRpc(), initialInputs.strategy.strategy.strategyLookupTable);
164
- swapsArray.forEach((swap) => {
165
- swap.lookupTables.push(strategyLut);
166
- });
167
- }
168
- else {
169
- console.log('Strategy lookup table not found');
170
- }
171
- }
114
+ // Strategy lookup table logic removed
172
115
  const collReserve = kaminoMarket.getReserveByMint(collTokenMint);
173
116
  const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);
174
117
  const solTokenReserve = kaminoMarket.getReserveByMint(utils_1.WRAPPED_SOL_MINT);
@@ -180,7 +123,7 @@ async function getDepositWithLeverageIxs({ owner, kaminoMarket, debtTokenMint, c
180
123
  lookupTables: swap.lookupTables,
181
124
  quote: swap.quote,
182
125
  };
183
- }), initialInputs.strategy, initialInputs.collIsKtoken, useV2Ixs, elevationGroupOverride);
126
+ }), useV2Ixs, elevationGroupOverride);
184
127
  return depositWithLeverageIxs.map((depositWithLeverageIxs, index) => {
185
128
  return {
186
129
  ixs: depositWithLeverageIxs.instructions,
@@ -192,23 +135,18 @@ async function getDepositWithLeverageIxs({ owner, kaminoMarket, debtTokenMint, c
192
135
  };
193
136
  });
194
137
  }
195
- async function buildDepositWithLeverageIxs(market, debtReserve, collReserve, owner, obligation, referrer, currentSlot, depositTokenIsSol, scopeRefreshConfig, calcs, budgetAndPriorityFeeIxs, swapQuoteIxsArray, strategy, collIsKtoken, useV2Ixs, elevationGroupOverride) {
138
+ async function buildDepositWithLeverageIxs(market, debtReserve, collReserve, owner, obligation, referrer, currentSlot, depositTokenIsSol, scopeRefreshConfig, calcs, budgetAndPriorityFeeIxs, swapQuoteIxsArray, useV2Ixs, elevationGroupOverride) {
196
139
  const collTokenMint = collReserve.getLiquidityMint();
197
140
  const debtTokenMint = debtReserve.getLiquidityMint();
198
- const [[collTokenAta], [debtTokenAta]] = await Promise.all([
141
+ const [[collTokenAta]] = await Promise.all([
199
142
  (0, token_2022_1.findAssociatedTokenPda)({
200
143
  owner: owner.address,
201
144
  mint: collTokenMint,
202
145
  tokenProgram: collReserve.getLiquidityTokenProgram(),
203
146
  }),
204
- (0, token_2022_1.findAssociatedTokenPda)({
205
- owner: owner.address,
206
- mint: debtTokenMint,
207
- tokenProgram: debtReserve.getLiquidityTokenProgram(),
208
- }),
209
147
  ]);
210
148
  // 1. Create atas & budget ixs
211
- const { budgetIxs, createAtasIxs, scopeRefreshIx } = await (0, exports.getSetupIxs)(owner, market, obligation, collTokenMint, collReserve, collIsKtoken, debtTokenMint, debtReserve, strategy, scopeRefreshConfig, budgetAndPriorityFeeIxs);
149
+ const { budgetIxs, createAtasIxs, scopeRefreshIx } = await (0, exports.getSetupIxs)(owner, market, obligation, collTokenMint, collReserve, debtTokenMint, debtReserve, scopeRefreshConfig, budgetAndPriorityFeeIxs);
212
150
  const fillWsolAtaIxs = [];
213
151
  if (depositTokenIsSol) {
214
152
  fillWsolAtaIxs.push(...(0, utils_1.getTransferWsolIxs)(owner, await (0, utils_1.getAssociatedTokenAddress)(utils_1.WRAPPED_SOL_MINT, owner.address), (0, kit_1.lamports)(BigInt((0, classes_2.numberToLamportsDecimal)(calcs.initDepositInSol, utils_1.SOL_DECIMALS).ceil().toString()))));
@@ -220,27 +158,23 @@ async function buildDepositWithLeverageIxs(market, debtReserve, collReserve, own
220
158
  userTransferAuthority: owner,
221
159
  lendingMarketAuthority: await market.getLendingMarketAuthority(),
222
160
  lendingMarketAddress: market.getAddress(),
223
- reserve: !collIsKtoken ? collReserve : debtReserve,
224
- amountLamports: (0, classes_2.numberToLamportsDecimal)(!collIsKtoken ? calcs.flashBorrowInCollToken : calcs.flashBorrowInDebtTokenKtokenOnly, !collIsKtoken ? collReserve.stats.decimals : debtReserve.stats.decimals),
225
- destinationAta: !collIsKtoken ? collTokenAta : debtTokenAta,
161
+ reserve: collReserve,
162
+ amountLamports: (0, classes_2.numberToLamportsDecimal)(calcs.flashBorrowInCollToken, collReserve.stats.decimals),
163
+ destinationAta: collTokenAta,
226
164
  // TODO(referrals): once we support referrals, we will have to replace the placeholder args below:
227
165
  referrerAccount: (0, kit_1.none)(),
228
166
  referrerTokenState: (0, kit_1.none)(),
229
167
  programId: market.programId,
230
168
  });
231
169
  // 3. Deposit initial tokens + borrowed tokens into reserve
232
- const kaminoDepositAndBorrowAction = await classes_1.KaminoAction.buildDepositAndBorrowTxns(market, (0, classes_2.numberToLamportsDecimal)(!collIsKtoken ? calcs.collTokenToDeposit : calcs.collTokenToDeposit, collReserve.stats.decimals)
233
- .floor()
234
- .toString(), collTokenMint, (0, classes_2.numberToLamportsDecimal)(!collIsKtoken ? calcs.debtTokenToBorrow : calcs.debtTokenToBorrow, debtReserve.stats.decimals)
235
- .ceil()
236
- .toString(), debtTokenMint, owner, obligation, useV2Ixs, undefined, 0, false, elevationGroupOverride === 0 ? false : true, // emode
170
+ const kaminoDepositAndBorrowAction = await classes_1.KaminoAction.buildDepositAndBorrowTxns(market, (0, classes_2.numberToLamportsDecimal)(calcs.collTokenToDeposit, collReserve.stats.decimals).floor().toString(), collTokenMint, (0, classes_2.numberToLamportsDecimal)(calcs.debtTokenToBorrow, debtReserve.stats.decimals).ceil().toString(), debtTokenMint, owner, obligation, useV2Ixs, undefined, 0, false, elevationGroupOverride === 0 ? false : true, // emode
237
171
  { skipInitialization: true, skipLutCreation: true }, // to be checked and created in a setup tx in the UI
238
172
  referrer, currentSlot);
239
173
  return swapQuoteIxsArray.map((swapQuoteIxs) => {
240
174
  // 4. Swap
241
175
  const { swapIxs } = swapQuoteIxs;
242
176
  const swapInstructions = (0, utils_1.removeBudgetIxs)(swapIxs);
243
- const flashBorrowReserve = !collIsKtoken ? collReserve : debtReserve;
177
+ const flashBorrowReserve = collReserve;
244
178
  const flashLoanInfo = {
245
179
  flashBorrowReserve: flashBorrowReserve.address,
246
180
  flashLoanFee: flashBorrowReserve.getFlashLoanFee(),
@@ -253,21 +187,18 @@ async function buildDepositWithLeverageIxs(market, debtReserve, collReserve, own
253
187
  ...createAtasIxs,
254
188
  ...fillWsolAtaIxs,
255
189
  ...[flashBorrowIx],
256
- ...(collIsKtoken ? swapInstructions : []),
257
190
  ...classes_1.KaminoAction.actionToIxs(kaminoDepositAndBorrowAction),
258
- ...(collIsKtoken ? [] : swapInstructions),
191
+ ...swapInstructions,
259
192
  ...[flashRepayIx],
260
193
  ],
261
194
  };
262
195
  });
263
196
  }
264
- async function getWithdrawWithLeverageSwapInputs({ owner, kaminoMarket, debtTokenMint, collTokenMint, deposited, borrowed, obligation, referrer, currentSlot, withdrawAmount, priceCollToDebt, slippagePct, isClosingPosition, selectedTokenMint, budgetAndPriorityFeeIxs, kamino, scopeRefreshConfig, quoteBufferBps, isKtoken, quoter, useV2Ixs, }) {
197
+ async function getWithdrawWithLeverageSwapInputs({ owner, kaminoMarket, debtTokenMint, collTokenMint, deposited, borrowed, obligation, referrer, currentSlot, withdrawAmount, priceCollToDebt, slippagePct, isClosingPosition, selectedTokenMint, budgetAndPriorityFeeIxs, scopeRefreshConfig, quoteBufferBps, quoter, useV2Ixs, }) {
265
198
  const collReserve = kaminoMarket.getReserveByMint(collTokenMint);
266
199
  const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);
267
200
  const flashLoanFee = debtReserve.getFlashLoanFee() || new decimal_js_1.default(0);
268
201
  const selectedTokenIsCollToken = selectedTokenMint === collTokenMint;
269
- const collIsKtoken = await isKtoken(collTokenMint);
270
- const strategy = collIsKtoken ? (await kamino.getStrategyByKTokenMint(collTokenMint)) : undefined;
271
202
  const inputTokenIsSol = selectedTokenMint === utils_1.WRAPPED_SOL_MINT;
272
203
  const calcs = (0, calcs_1.withdrawLeverageCalcs)(kaminoMarket, collReserve, debtReserve, priceCollToDebt, withdrawAmount, deposited, borrowed, currentSlot, isClosingPosition, selectedTokenIsCollToken, selectedTokenMint, obligation, flashLoanFee, slippagePct);
273
204
  const klendIxs = (await buildWithdrawWithLeverageIxs(kaminoMarket, debtReserve, collReserve, owner, obligation, referrer, currentSlot, isClosingPosition, inputTokenIsSol, scopeRefreshConfig, calcs, budgetAndPriorityFeeIxs, [
@@ -280,17 +211,16 @@ async function getWithdrawWithLeverageSwapInputs({ owner, kaminoMarket, debtToke
280
211
  quoteResponse: undefined,
281
212
  },
282
213
  },
283
- ], strategy, collIsKtoken, useV2Ixs))[0];
214
+ ], useV2Ixs))[0];
284
215
  const uniqueKlendAccounts = (0, utils_1.uniqueAccountsWithProgramIds)(klendIxs.instructions);
285
216
  const swapInputAmount = (0, classes_2.numberToLamportsDecimal)(calcs.collTokenSwapIn, collReserve.getMintDecimals()).ceil();
286
217
  const swapInputsForQuote = {
287
218
  inputAmountLamports: swapInputAmount.mul(new decimal_js_1.default(1).add(quoteBufferBps.div(CreationParameters_1.FullBPS))),
288
219
  inputMint: collTokenMint,
289
220
  outputMint: debtTokenMint,
290
- amountDebtAtaBalance: undefined, // Only needed for ktokens deposits
291
221
  };
292
222
  const swapQuote = await quoter(swapInputsForQuote, uniqueKlendAccounts);
293
- const calcsQuotePrice = (0, calcs_1.withdrawLeverageCalcs)(kaminoMarket, collReserve, debtReserve, !collIsKtoken ? swapQuote.priceAInB : priceCollToDebt, withdrawAmount, deposited, borrowed, currentSlot, isClosingPosition, selectedTokenIsCollToken, selectedTokenMint, obligation, flashLoanFee, slippagePct);
223
+ const calcsQuotePrice = (0, calcs_1.withdrawLeverageCalcs)(kaminoMarket, collReserve, debtReserve, swapQuote.priceAInB, withdrawAmount, deposited, borrowed, currentSlot, isClosingPosition, selectedTokenIsCollToken, selectedTokenMint, obligation, flashLoanFee, slippagePct);
294
224
  const swapInputAmountQuotePrice = (0, classes_2.numberToLamportsDecimal)(calcsQuotePrice.collTokenSwapIn, collReserve.getMintDecimals()).ceil();
295
225
  return {
296
226
  swapInputs: {
@@ -298,21 +228,18 @@ async function getWithdrawWithLeverageSwapInputs({ owner, kaminoMarket, debtToke
298
228
  minOutAmountLamports: calcsQuotePrice.repayAmount,
299
229
  inputMint: collTokenMint,
300
230
  outputMint: debtTokenMint,
301
- amountDebtAtaBalance: new decimal_js_1.default(0), // Only needed for ktokens deposits
302
231
  },
303
232
  flashLoanInfo: klendIxs.flashLoanInfo,
304
233
  initialInputs: {
305
234
  calcs: calcsQuotePrice,
306
235
  swapQuote,
307
236
  currentSlot,
308
- collIsKtoken,
309
- strategy,
310
237
  obligation,
311
238
  klendAccounts: uniqueKlendAccounts,
312
239
  },
313
240
  };
314
241
  }
315
- async function getWithdrawWithLeverageIxs({ owner, kaminoMarket, debtTokenMint, collTokenMint, obligation, deposited, borrowed, referrer, currentSlot, withdrawAmount, priceCollToDebt, slippagePct, isClosingPosition, selectedTokenMint, budgetAndPriorityFeeIxs, kamino, scopeRefreshConfig, quoteBufferBps, isKtoken, quoter, swapper, useV2Ixs, }) {
242
+ async function getWithdrawWithLeverageIxs({ owner, kaminoMarket, debtTokenMint, collTokenMint, obligation, deposited, borrowed, referrer, currentSlot, withdrawAmount, priceCollToDebt, slippagePct, isClosingPosition, selectedTokenMint, budgetAndPriorityFeeIxs, scopeRefreshConfig, quoteBufferBps, quoter, swapper, useV2Ixs, }) {
316
243
  const collReserve = kaminoMarket.getReserveByMint(collTokenMint);
317
244
  const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);
318
245
  const inputTokenIsSol = selectedTokenMint === utils_1.WRAPPED_SOL_MINT;
@@ -332,35 +259,14 @@ async function getWithdrawWithLeverageIxs({ owner, kaminoMarket, debtTokenMint,
332
259
  isClosingPosition,
333
260
  selectedTokenMint,
334
261
  budgetAndPriorityFeeIxs,
335
- kamino,
336
262
  scopeRefreshConfig,
337
263
  quoteBufferBps,
338
- isKtoken,
339
264
  quoter,
340
265
  useV2Ixs,
341
266
  });
342
- let withdrawSwapper;
343
- if (initialInputs.collIsKtoken) {
344
- if (kamino === undefined) {
345
- throw Error('Ktoken use as collateral for leverage without Kamino instance');
346
- }
347
- withdrawSwapper = await (0, utils_2.getKtokenToTokenSwapper)(kaminoMarket, kamino, owner, swapper);
348
- }
349
- else {
350
- withdrawSwapper = swapper;
351
- }
267
+ const withdrawSwapper = swapper;
352
268
  const swapsArray = await withdrawSwapper(swapInputs, initialInputs.klendAccounts, initialInputs.swapQuote);
353
- if (initialInputs.collIsKtoken) {
354
- if (initialInputs.strategy?.strategy.strategyLookupTable) {
355
- const strategyLut = await (0, address_lookup_table_1.fetchAddressLookupTable)(kaminoMarket.getRpc(), initialInputs.strategy.strategy.strategyLookupTable);
356
- swapsArray.forEach((swap) => {
357
- swap.lookupTables.push(strategyLut);
358
- });
359
- }
360
- else {
361
- console.log('Strategy lookup table not found');
362
- }
363
- }
269
+ // Strategy lookup table logic removed
364
270
  const withdrawWithLeverageIxs = await buildWithdrawWithLeverageIxs(kaminoMarket, debtReserve, collReserve, owner, obligation, referrer, currentSlot, isClosingPosition, inputTokenIsSol, scopeRefreshConfig, initialInputs.calcs, budgetAndPriorityFeeIxs, swapsArray.map((swap) => {
365
271
  return {
366
272
  preActionIxs: [],
@@ -368,7 +274,7 @@ async function getWithdrawWithLeverageIxs({ owner, kaminoMarket, debtTokenMint,
368
274
  lookupTables: swap.lookupTables,
369
275
  quote: swap.quote,
370
276
  };
371
- }), initialInputs.strategy, initialInputs.collIsKtoken, useV2Ixs);
277
+ }), useV2Ixs);
372
278
  // Send ixs and lookup tables
373
279
  return withdrawWithLeverageIxs.map((ixs, index) => {
374
280
  return {
@@ -381,12 +287,12 @@ async function getWithdrawWithLeverageIxs({ owner, kaminoMarket, debtTokenMint,
381
287
  };
382
288
  });
383
289
  }
384
- async function buildWithdrawWithLeverageIxs(market, debtReserve, collReserve, owner, obligation, referrer, currentSlot, isClosingPosition, depositTokenIsSol, scopeRefreshConfig, calcs, budgetAndPriorityFeeIxs, swapQuoteIxsArray, strategy, collIsKtoken, useV2Ixs) {
290
+ async function buildWithdrawWithLeverageIxs(market, debtReserve, collReserve, owner, obligation, referrer, currentSlot, isClosingPosition, depositTokenIsSol, scopeRefreshConfig, calcs, budgetAndPriorityFeeIxs, swapQuoteIxsArray, useV2Ixs) {
385
291
  const collTokenMint = collReserve.getLiquidityMint();
386
292
  const debtTokenMint = debtReserve.getLiquidityMint();
387
293
  const debtTokenAta = await (0, utils_1.getAssociatedTokenAddress)(debtTokenMint, owner.address, debtReserve.getLiquidityTokenProgram());
388
294
  // 1. Create atas & budget txns & user metadata
389
- const { budgetIxs, createAtasIxs, scopeRefreshIx } = await (0, exports.getSetupIxs)(owner, market, obligation, collTokenMint, collReserve, collIsKtoken, debtTokenMint, debtReserve, strategy, scopeRefreshConfig, budgetAndPriorityFeeIxs);
295
+ const { budgetIxs, createAtasIxs, scopeRefreshIx } = await (0, exports.getSetupIxs)(owner, market, obligation, collTokenMint, collReserve, debtTokenMint, debtReserve, scopeRefreshConfig, budgetAndPriorityFeeIxs);
390
296
  const closeWsolAtaIxs = [];
391
297
  if (depositTokenIsSol || debtTokenMint === utils_1.WRAPPED_SOL_MINT) {
392
298
  const wsolAta = await (0, utils_1.getAssociatedTokenAddress)(utils_1.WRAPPED_SOL_MINT, owner.address);
@@ -446,13 +352,11 @@ async function buildWithdrawWithLeverageIxs(market, debtReserve, collReserve, ow
446
352
  };
447
353
  });
448
354
  }
449
- async function getAdjustLeverageSwapInputs({ owner, kaminoMarket, debtTokenMint, collTokenMint, obligation, depositedLamports, borrowedLamports, referrer, currentSlot, targetLeverage, priceCollToDebt, priceDebtToColl, slippagePct, budgetAndPriorityFeeIxs, kamino, scopeRefreshConfig, quoteBufferBps, isKtoken, quoter, useV2Ixs, withdrawSlotOffset, }) {
355
+ async function getAdjustLeverageSwapInputs({ owner, kaminoMarket, debtTokenMint, collTokenMint, obligation, depositedLamports, borrowedLamports, referrer, currentSlot, targetLeverage, priceCollToDebt, priceDebtToColl, slippagePct, budgetAndPriorityFeeIxs, scopeRefreshConfig, quoteBufferBps, quoter, useV2Ixs, withdrawSlotOffset, }) {
450
356
  const collReserve = kaminoMarket.getReserveByMint(collTokenMint);
451
357
  const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);
452
358
  const deposited = (0, classes_1.lamportsToNumberDecimal)(depositedLamports, collReserve.stats.decimals);
453
359
  const borrowed = (0, classes_1.lamportsToNumberDecimal)(borrowedLamports, debtReserve.stats.decimals);
454
- const collIsKtoken = await isKtoken(collTokenMint);
455
- const strategy = collIsKtoken ? (await kamino.getStrategyByKTokenMint(collTokenMint)) : undefined;
456
360
  // Getting current flash loan fee
457
361
  const currentLeverage = obligation.refreshedStats.leverage;
458
362
  const isDepositViaLeverage = targetLeverage.gte(new decimal_js_1.default(currentLeverage));
@@ -475,9 +379,9 @@ async function getAdjustLeverageSwapInputs({ owner, kaminoMarket, debtTokenMint,
475
379
  throw new Error('Invalid target leverage');
476
380
  }
477
381
  if (isDeposit) {
478
- const calcs = await (0, calcs_1.adjustDepositLeverageCalcs)(kaminoMarket, owner.address, debtReserve, adjustDepositPosition, adjustBorrowPosition, priceDebtToColl, flashLoanFee, slippagePct, collIsKtoken);
382
+ const calcs = await (0, calcs_1.adjustDepositLeverageCalcs)(debtReserve, adjustDepositPosition, adjustBorrowPosition, priceDebtToColl, flashLoanFee, slippagePct);
479
383
  // Build the repay & withdraw collateral tx to get the number of accounts
480
- const klendIxs = (await buildIncreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debtTokenMint, obligation, referrer, currentSlot, calcs, strategy, scopeRefreshConfig, collIsKtoken, [
384
+ const klendIxs = (await buildIncreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debtTokenMint, obligation, referrer, currentSlot, calcs, scopeRefreshConfig, [
481
385
  {
482
386
  preActionIxs: [],
483
387
  swapIxs: [],
@@ -489,12 +393,11 @@ async function getAdjustLeverageSwapInputs({ owner, kaminoMarket, debtTokenMint,
489
393
  },
490
394
  ], budgetAndPriorityFeeIxs, useV2Ixs))[0];
491
395
  const uniqueKlendAccounts = (0, utils_1.uniqueAccountsWithProgramIds)(klendIxs.instructions);
492
- const swapInputAmount = (0, classes_2.numberToLamportsDecimal)(!collIsKtoken ? calcs.borrowAmount : calcs.amountToFlashBorrowDebt, debtReserve.stats.decimals).ceil();
396
+ const swapInputAmount = (0, classes_2.numberToLamportsDecimal)(calcs.borrowAmount, debtReserve.stats.decimals).ceil();
493
397
  const swapInputsForQuote = {
494
398
  inputAmountLamports: swapInputAmount.mul(new decimal_js_1.default(1).add(quoteBufferBps.div(CreationParameters_1.FullBPS))),
495
399
  inputMint: debtTokenMint,
496
400
  outputMint: collTokenMint,
497
- amountDebtAtaBalance: new decimal_js_1.default(0), // Only needed for ktokens swaps
498
401
  };
499
402
  const swapQuote = await quoter(swapInputsForQuote, uniqueKlendAccounts);
500
403
  const { adjustDepositPosition: adjustDepositPositionQuotePrice, adjustBorrowPosition: adjustBorrowPositionQuotePrice, } = (0, calcs_1.calcAdjustAmounts)({
@@ -504,27 +407,20 @@ async function getAdjustLeverageSwapInputs({ owner, kaminoMarket, debtTokenMint,
504
407
  priceCollToDebt: new decimal_js_1.default(1).div(swapQuote.priceAInB),
505
408
  flashLoanFee: new decimal_js_1.default(flashLoanFee),
506
409
  });
507
- const calcsQuotePrice = await (0, calcs_1.adjustDepositLeverageCalcs)(kaminoMarket, owner.address, debtReserve, adjustDepositPositionQuotePrice, adjustBorrowPositionQuotePrice, swapQuote.priceAInB, flashLoanFee, slippagePct, collIsKtoken);
508
- const swapInputAmountQuotePrice = (0, classes_2.numberToLamportsDecimal)(!collIsKtoken ? calcsQuotePrice.borrowAmount : calcsQuotePrice.amountToFlashBorrowDebt, debtReserve.getMintDecimals()).ceil();
509
- let expectedDebtTokenAtaBalance = new decimal_js_1.default(0);
510
- if (collIsKtoken) {
511
- expectedDebtTokenAtaBalance = await (0, utils_2.getExpectedTokenBalanceAfterBorrow)(kaminoMarket.getRpc(), debtTokenMint, owner.address, (0, classes_2.numberToLamportsDecimal)(!collIsKtoken ? calcsQuotePrice.borrowAmount : calcsQuotePrice.amountToFlashBorrowDebt, debtReserve.stats.decimals).floor(), debtReserve.getMintDecimals());
512
- }
410
+ const calcsQuotePrice = await (0, calcs_1.adjustDepositLeverageCalcs)(debtReserve, adjustDepositPositionQuotePrice, adjustBorrowPositionQuotePrice, swapQuote.priceAInB, flashLoanFee, slippagePct);
411
+ const swapInputAmountQuotePrice = (0, classes_2.numberToLamportsDecimal)(calcsQuotePrice.borrowAmount, debtReserve.getMintDecimals()).ceil();
513
412
  return {
514
413
  swapInputs: {
515
414
  inputAmountLamports: swapInputAmountQuotePrice,
516
- minOutAmountLamports: (0, classes_2.numberToLamportsDecimal)(!collIsKtoken ? calcsQuotePrice.adjustDepositPosition : calcsQuotePrice.amountToFlashBorrowDebt, !collIsKtoken ? collReserve.stats.decimals : debtReserve.stats.decimals),
415
+ minOutAmountLamports: (0, classes_2.numberToLamportsDecimal)(calcsQuotePrice.adjustDepositPosition, collReserve.stats.decimals),
517
416
  inputMint: debtTokenMint,
518
417
  outputMint: collTokenMint,
519
- amountDebtAtaBalance: expectedDebtTokenAtaBalance,
520
418
  },
521
419
  flashLoanInfo: klendIxs.flashLoanInfo,
522
420
  initialInputs: {
523
421
  calcs: calcsQuotePrice,
524
422
  swapQuote,
525
423
  currentSlot,
526
- collIsKtoken,
527
- strategy,
528
424
  obligation: obligation,
529
425
  klendAccounts: uniqueKlendAccounts,
530
426
  isDeposit: isDeposit,
@@ -533,7 +429,7 @@ async function getAdjustLeverageSwapInputs({ owner, kaminoMarket, debtTokenMint,
533
429
  }
534
430
  else {
535
431
  const calcs = (0, calcs_1.adjustWithdrawLeverageCalcs)(adjustDepositPosition, adjustBorrowPosition, flashLoanFee, slippagePct);
536
- const klendIxs = (await buildDecreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debtTokenMint, obligation, referrer, currentSlot, calcs, strategy, scopeRefreshConfig, collIsKtoken, [
432
+ const klendIxs = (await buildDecreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debtTokenMint, obligation, referrer, currentSlot, calcs, scopeRefreshConfig, [
537
433
  {
538
434
  preActionIxs: [],
539
435
  swapIxs: [],
@@ -550,7 +446,6 @@ async function getAdjustLeverageSwapInputs({ owner, kaminoMarket, debtTokenMint,
550
446
  inputAmountLamports: swapInputAmount.mul(new decimal_js_1.default(1).add(quoteBufferBps.div(CreationParameters_1.FullBPS))),
551
447
  inputMint: collTokenMint,
552
448
  outputMint: debtTokenMint,
553
- amountDebtAtaBalance: undefined, // Only needed for ktokens deposits
554
449
  };
555
450
  const swapQuote = await quoter(swapInputsForQuote, uniqueKlendAccounts);
556
451
  const { adjustDepositPosition: adjustDepositPositionQuotePrice, adjustBorrowPosition: adjustBorrowPositionQuotePrice, } = (0, calcs_1.calcAdjustAmounts)({
@@ -568,15 +463,12 @@ async function getAdjustLeverageSwapInputs({ owner, kaminoMarket, debtTokenMint,
568
463
  minOutAmountLamports: (0, classes_2.numberToLamportsDecimal)(calcsQuotePrice.adjustBorrowPosition.abs(), debtReserve.stats.decimals),
569
464
  inputMint: collTokenMint,
570
465
  outputMint: debtTokenMint,
571
- amountDebtAtaBalance: undefined, // Only needed for ktokens deposits
572
466
  },
573
467
  flashLoanInfo: klendIxs.flashLoanInfo,
574
468
  initialInputs: {
575
469
  calcs: calcsQuotePrice,
576
470
  swapQuote,
577
471
  currentSlot,
578
- collIsKtoken,
579
- strategy,
580
472
  obligation,
581
473
  klendAccounts: uniqueKlendAccounts,
582
474
  isDeposit,
@@ -584,7 +476,7 @@ async function getAdjustLeverageSwapInputs({ owner, kaminoMarket, debtTokenMint,
584
476
  };
585
477
  }
586
478
  }
587
- async function getAdjustLeverageIxs({ owner, kaminoMarket, debtTokenMint, collTokenMint, obligation, depositedLamports, borrowedLamports, referrer, currentSlot, targetLeverage, priceCollToDebt, priceDebtToColl, slippagePct, budgetAndPriorityFeeIxs, kamino, scopeRefreshConfig, quoteBufferBps, priceAinB, isKtoken, quoter, swapper, useV2Ixs, withdrawSlotOffset, }) {
479
+ async function getAdjustLeverageIxs({ owner, kaminoMarket, debtTokenMint, collTokenMint, obligation, depositedLamports, borrowedLamports, referrer, currentSlot, targetLeverage, priceCollToDebt, priceDebtToColl, slippagePct, budgetAndPriorityFeeIxs, scopeRefreshConfig, quoteBufferBps, quoter, swapper, useV2Ixs, withdrawSlotOffset, }) {
588
480
  const { swapInputs, initialInputs } = await getAdjustLeverageSwapInputs({
589
481
  owner,
590
482
  kaminoMarket,
@@ -600,28 +492,16 @@ async function getAdjustLeverageIxs({ owner, kaminoMarket, debtTokenMint, collTo
600
492
  priceDebtToColl,
601
493
  slippagePct,
602
494
  budgetAndPriorityFeeIxs,
603
- kamino,
604
495
  scopeRefreshConfig,
605
496
  quoteBufferBps,
606
- priceAinB,
607
- isKtoken,
608
497
  quoter,
609
498
  useV2Ixs,
610
499
  });
611
500
  // leverage increased so we need to deposit and borrow more
612
501
  if (initialInputs.isDeposit) {
613
- let depositSwapper;
614
- if (initialInputs.collIsKtoken) {
615
- if (kamino === undefined) {
616
- throw Error('Ktoken use as collateral for leverage without Kamino instance');
617
- }
618
- depositSwapper = await (0, utils_2.getTokenToKtokenSwapper)(kaminoMarket, kamino, owner, slippagePct, swapper, priceAinB, false);
619
- }
620
- else {
621
- depositSwapper = swapper;
622
- }
502
+ const depositSwapper = swapper;
623
503
  const swapsArray = await depositSwapper(swapInputs, initialInputs.klendAccounts, initialInputs.swapQuote);
624
- const increaseLeverageIxs = await buildIncreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debtTokenMint, obligation, referrer, currentSlot, initialInputs.calcs, initialInputs.strategy, scopeRefreshConfig, initialInputs.collIsKtoken, swapsArray.map((swap) => {
504
+ const increaseLeverageIxs = await buildIncreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debtTokenMint, obligation, referrer, currentSlot, initialInputs.calcs, scopeRefreshConfig, swapsArray.map((swap) => {
625
505
  return {
626
506
  preActionIxs: [],
627
507
  swapIxs: swap.swapIxs,
@@ -642,19 +522,10 @@ async function getAdjustLeverageIxs({ owner, kaminoMarket, debtTokenMint, collTo
642
522
  }
643
523
  else {
644
524
  console.log('Decreasing leverage');
645
- let withdrawSwapper;
646
- if (initialInputs.collIsKtoken) {
647
- if (kamino === undefined) {
648
- throw Error('Ktoken use as collateral for leverage without Kamino instance');
649
- }
650
- withdrawSwapper = await (0, utils_2.getKtokenToTokenSwapper)(kaminoMarket, kamino, owner, swapper);
651
- }
652
- else {
653
- withdrawSwapper = swapper;
654
- }
525
+ const withdrawSwapper = swapper;
655
526
  // 5. Get swap ixs
656
527
  const swapsArray = await withdrawSwapper(swapInputs, initialInputs.klendAccounts, initialInputs.swapQuote);
657
- const decreaseLeverageIxs = await buildDecreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debtTokenMint, obligation, referrer, currentSlot, initialInputs.calcs, initialInputs.strategy, scopeRefreshConfig, initialInputs.collIsKtoken, swapsArray.map((swap) => {
528
+ const decreaseLeverageIxs = await buildDecreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debtTokenMint, obligation, referrer, currentSlot, initialInputs.calcs, scopeRefreshConfig, swapsArray.map((swap) => {
658
529
  return {
659
530
  preActionIxs: [],
660
531
  swapIxs: swap.swapIxs,
@@ -677,24 +548,21 @@ async function getAdjustLeverageIxs({ owner, kaminoMarket, debtTokenMint, collTo
677
548
  /**
678
549
  * Deposit and borrow tokens if leverage increased
679
550
  */
680
- async function buildIncreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debtTokenMint, obligation, referrer, currentSlot, calcs, strategy, scopeRefreshConfig, collIsKtoken, swapQuoteIxsArray, budgetAndPriorityFeeIxs, useV2Ixs) {
551
+ async function buildIncreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debtTokenMint, obligation, referrer, currentSlot, calcs, scopeRefreshConfig, swapQuoteIxsArray, budgetAndPriorityFeeIxs, useV2Ixs) {
681
552
  const collReserve = kaminoMarket.getExistingReserveByMint(collTokenMint);
682
553
  const debtReserve = kaminoMarket.getExistingReserveByMint(debtTokenMint);
683
- const [debtTokenAta, collTokenAta] = await Promise.all([
684
- (0, utils_1.getAssociatedTokenAddress)(debtTokenMint, owner.address, debtReserve.getLiquidityTokenProgram()),
685
- (0, utils_1.getAssociatedTokenAddress)(collTokenMint, owner.address, collReserve.getLiquidityTokenProgram()),
686
- ]);
554
+ const collTokenAta = await (0, utils_1.getAssociatedTokenAddress)(collTokenMint, owner.address, collReserve.getLiquidityTokenProgram());
687
555
  // 1. Create atas & budget txns
688
- const { budgetIxs, createAtasIxs, scopeRefreshIx } = await (0, exports.getSetupIxs)(owner, kaminoMarket, obligation, collTokenMint, collReserve, collIsKtoken, debtTokenMint, debtReserve, strategy, scopeRefreshConfig, budgetAndPriorityFeeIxs);
556
+ const { budgetIxs, createAtasIxs, scopeRefreshIx } = await (0, exports.getSetupIxs)(owner, kaminoMarket, obligation, collTokenMint, collReserve, debtTokenMint, debtReserve, scopeRefreshConfig, budgetAndPriorityFeeIxs);
689
557
  // 2. Create borrow flash loan instruction
690
558
  const { flashBorrowIx, flashRepayIx } = (0, instructions_1.getFlashLoanInstructions)({
691
559
  borrowIxIndex: budgetIxs.length + createAtasIxs.length + (scopeRefreshIx.length > 0 ? 1 : 0), // TODO: how about user metadata ixs
692
560
  userTransferAuthority: owner,
693
561
  lendingMarketAuthority: await kaminoMarket.getLendingMarketAuthority(),
694
562
  lendingMarketAddress: kaminoMarket.getAddress(),
695
- reserve: !collIsKtoken ? collReserve : debtReserve,
696
- amountLamports: (0, classes_2.numberToLamportsDecimal)(!collIsKtoken ? calcs.adjustDepositPosition : calcs.amountToFlashBorrowDebt, !collIsKtoken ? collReserve.stats.decimals : debtReserve.stats.decimals),
697
- destinationAta: !collIsKtoken ? collTokenAta : debtTokenAta,
563
+ reserve: collReserve,
564
+ amountLamports: (0, classes_2.numberToLamportsDecimal)(calcs.adjustDepositPosition, collReserve.stats.decimals),
565
+ destinationAta: collTokenAta,
698
566
  // TODO(referrals): once we support referrals, we will have to replace the placeholder args below:
699
567
  referrerAccount: (0, kit_1.none)(),
700
568
  referrerTokenState: (0, kit_1.none)(),
@@ -711,13 +579,12 @@ async function buildIncreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debt
711
579
  ...budgetIxs,
712
580
  ...createAtasIxs,
713
581
  ...[flashBorrowIx],
714
- ...(collIsKtoken ? swapInstructions : []),
715
582
  ...classes_1.KaminoAction.actionToIxs(depositAction),
716
583
  ...classes_1.KaminoAction.actionToIxs(borrowAction),
717
- ...(collIsKtoken ? [] : swapInstructions),
584
+ ...swapInstructions,
718
585
  ...[flashRepayIx],
719
586
  ];
720
- const flashBorrowReserve = !collIsKtoken ? collReserve : debtReserve;
587
+ const flashBorrowReserve = collReserve;
721
588
  const res = {
722
589
  flashLoanInfo: {
723
590
  flashBorrowReserve: flashBorrowReserve.address,
@@ -731,7 +598,7 @@ async function buildIncreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debt
731
598
  /**
732
599
  * Withdraw and repay tokens if leverage decreased
733
600
  */
734
- async function buildDecreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debtTokenMint, obligation, referrer, currentSlot, calcs, strategy, scopeRefreshConfig, collIsKtoken, swapQuoteIxsArray, budgetAndPriorityFeeIxs, useV2Ixs, withdrawSlotOffset = exports.WITHDRAW_SLOT_OFFSET) {
601
+ async function buildDecreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debtTokenMint, obligation, referrer, currentSlot, calcs, scopeRefreshConfig, swapQuoteIxsArray, budgetAndPriorityFeeIxs, useV2Ixs, withdrawSlotOffset = exports.WITHDRAW_SLOT_OFFSET) {
735
602
  const collReserve = kaminoMarket.getExistingReserveByMint(collTokenMint);
736
603
  const debtReserve = kaminoMarket.getExistingReserveByMint(debtTokenMint);
737
604
  const [debtTokenAta] = await (0, token_2022_1.findAssociatedTokenPda)({
@@ -740,7 +607,7 @@ async function buildDecreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debt
740
607
  tokenProgram: debtReserve.getLiquidityTokenProgram(),
741
608
  });
742
609
  // 1. Create atas & budget txns
743
- const { budgetIxs, createAtasIxs, scopeRefreshIx } = await (0, exports.getSetupIxs)(owner, kaminoMarket, obligation, collTokenMint, collReserve, collIsKtoken, debtTokenMint, debtReserve, strategy, scopeRefreshConfig, budgetAndPriorityFeeIxs);
610
+ const { budgetIxs, createAtasIxs, scopeRefreshIx } = await (0, exports.getSetupIxs)(owner, kaminoMarket, obligation, collTokenMint, collReserve, debtTokenMint, debtReserve, scopeRefreshConfig, budgetAndPriorityFeeIxs);
744
611
  // TODO: Mihai/Marius check if we can improve this logic and not convert any SOL
745
612
  // This is here so that we have enough wsol to repay in case the kAB swapped to sol after estimates is not enough
746
613
  const closeWsolAtaIxs = [];
@@ -803,9 +670,9 @@ async function buildDecreaseLeverageIxs(owner, kaminoMarket, collTokenMint, debt
803
670
  return res;
804
671
  });
805
672
  }
806
- const getSetupIxs = async (owner, kaminoMarket, obligation, collTokenMint, collReserve, collIsKtoken, debtTokenMint, debtReserve, strategy, scopeRefreshConfig, budgetAndPriorityFeeIxs) => {
673
+ const getSetupIxs = async (owner, kaminoMarket, obligation, collTokenMint, collReserve, debtTokenMint, debtReserve, scopeRefreshConfig, budgetAndPriorityFeeIxs) => {
807
674
  const budgetIxs = budgetAndPriorityFeeIxs || (0, utils_1.getComputeBudgetAndPriorityFeeIxs)(3000000);
808
- const mintsWithTokenPrograms = getTokenMintsWithTokenPrograms(collTokenMint, collReserve, debtTokenMint, debtReserve, collIsKtoken, strategy);
675
+ const mintsWithTokenPrograms = getTokenMintsWithTokenPrograms(collTokenMint, collReserve, debtTokenMint, debtReserve);
809
676
  const createAtasIxs = (await (0, utils_1.createAtasIdempotent)(owner, mintsWithTokenPrograms)).map((x) => x.createAtaIx);
810
677
  const scopeRefreshIx = await (0, exports.getScopeRefreshIx)(kaminoMarket, collReserve, debtReserve, obligation, scopeRefreshConfig);
811
678
  return {
@@ -857,8 +724,8 @@ const checkObligationType = (obligationTypeTag, collTokenMint, debtTokenMint, ka
857
724
  }
858
725
  return obligationType;
859
726
  };
860
- const getTokenMintsWithTokenPrograms = (collTokenMint, collReserve, debtTokenMint, debtReserve, collIsKtoken, strategy) => {
861
- const mintsWithTokenPrograms = [
727
+ const getTokenMintsWithTokenPrograms = (collTokenMint, collReserve, debtTokenMint, debtReserve) => {
728
+ return [
862
729
  {
863
730
  mint: collTokenMint,
864
731
  tokenProgram: collReserve.getLiquidityTokenProgram(),
@@ -872,28 +739,5 @@ const getTokenMintsWithTokenPrograms = (collTokenMint, collReserve, debtTokenMin
872
739
  tokenProgram: token_1.TOKEN_PROGRAM_ADDRESS,
873
740
  },
874
741
  ];
875
- if (collIsKtoken) {
876
- let kTokenAta;
877
- let kTokenTokenProgram;
878
- if (strategy.strategy.tokenAMint === debtTokenMint) {
879
- kTokenAta = strategy.strategy.tokenBMint;
880
- kTokenTokenProgram =
881
- strategy.strategy.tokenBTokenProgram === utils_1.DEFAULT_PUBLIC_KEY
882
- ? token_1.TOKEN_PROGRAM_ADDRESS
883
- : strategy.strategy.tokenBTokenProgram;
884
- }
885
- else {
886
- kTokenAta = strategy.strategy.tokenAMint;
887
- kTokenTokenProgram =
888
- strategy.strategy.tokenATokenProgram === utils_1.DEFAULT_PUBLIC_KEY
889
- ? token_1.TOKEN_PROGRAM_ADDRESS
890
- : strategy.strategy.tokenATokenProgram;
891
- }
892
- mintsWithTokenPrograms.push({
893
- mint: kTokenAta,
894
- tokenProgram: kTokenTokenProgram,
895
- });
896
- }
897
- return mintsWithTokenPrograms;
898
742
  };
899
743
  //# sourceMappingURL=operations.js.map