@kamino-finance/klend-sdk 5.10.6 → 5.10.7

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 (56) hide show
  1. package/dist/classes/action.d.ts +7 -3
  2. package/dist/classes/action.d.ts.map +1 -1
  3. package/dist/classes/action.js +28 -13
  4. package/dist/classes/action.js.map +1 -1
  5. package/dist/classes/market.d.ts +11 -0
  6. package/dist/classes/market.d.ts.map +1 -1
  7. package/dist/classes/market.js +26 -0
  8. package/dist/classes/market.js.map +1 -1
  9. package/dist/classes/obligation.d.ts +14 -0
  10. package/dist/classes/obligation.d.ts.map +1 -1
  11. package/dist/classes/obligation.js +25 -0
  12. package/dist/classes/obligation.js.map +1 -1
  13. package/dist/lending_operations/index.d.ts +1 -0
  14. package/dist/lending_operations/index.d.ts.map +1 -1
  15. package/dist/lending_operations/index.js +1 -0
  16. package/dist/lending_operations/index.js.map +1 -1
  17. package/dist/lending_operations/repay_with_collateral_operations.d.ts +5 -5
  18. package/dist/lending_operations/repay_with_collateral_operations.d.ts.map +1 -1
  19. package/dist/lending_operations/repay_with_collateral_operations.js +3 -2
  20. package/dist/lending_operations/repay_with_collateral_operations.js.map +1 -1
  21. package/dist/lending_operations/swap_collateral_operations.d.ts +102 -0
  22. package/dist/lending_operations/swap_collateral_operations.d.ts.map +1 -0
  23. package/dist/lending_operations/swap_collateral_operations.js +306 -0
  24. package/dist/lending_operations/swap_collateral_operations.js.map +1 -0
  25. package/dist/leverage/operations.d.ts +2 -2
  26. package/dist/leverage/operations.d.ts.map +1 -1
  27. package/dist/leverage/operations.js +4 -0
  28. package/dist/leverage/operations.js.map +1 -1
  29. package/dist/leverage/types.d.ts +5 -5
  30. package/dist/leverage/types.d.ts.map +1 -1
  31. package/dist/leverage/utils.d.ts +5 -5
  32. package/dist/leverage/utils.d.ts.map +1 -1
  33. package/dist/leverage/utils.js.map +1 -1
  34. package/dist/utils/constants.d.ts +1 -0
  35. package/dist/utils/constants.d.ts.map +1 -1
  36. package/dist/utils/constants.js +2 -1
  37. package/dist/utils/constants.js.map +1 -1
  38. package/dist/utils/pubkey.d.ts +3 -0
  39. package/dist/utils/pubkey.d.ts.map +1 -1
  40. package/dist/utils/pubkey.js +16 -2
  41. package/dist/utils/pubkey.js.map +1 -1
  42. package/dist/utils/seeds.d.ts +1 -1
  43. package/dist/utils/seeds.js +1 -1
  44. package/package.json +4 -4
  45. package/src/classes/action.ts +37 -19
  46. package/src/classes/market.ts +35 -1
  47. package/src/classes/obligation.ts +75 -0
  48. package/src/lending_operations/index.ts +1 -0
  49. package/src/lending_operations/repay_with_collateral_operations.ts +10 -9
  50. package/src/lending_operations/swap_collateral_operations.ts +586 -0
  51. package/src/leverage/operations.ts +14 -10
  52. package/src/leverage/types.ts +6 -6
  53. package/src/leverage/utils.ts +8 -8
  54. package/src/utils/constants.ts +2 -0
  55. package/src/utils/pubkey.ts +19 -2
  56. package/src/utils/seeds.ts +1 -1
@@ -14,10 +14,10 @@ async function getRepayWithCollSwapInputs({ collTokenMint, currentSlot, debtToke
14
14
  const collReserve = kaminoMarket.getReserveByMint(collTokenMint);
15
15
  const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);
16
16
  if (!collReserve) {
17
- throw new Error(`Collateral reserve with mint ${collReserve} not found in market ${kaminoMarket.getAddress()}`);
17
+ throw new Error(`Collateral reserve with mint ${collTokenMint} not found in market ${kaminoMarket.getAddress()}`);
18
18
  }
19
19
  if (!debtReserve) {
20
- throw new Error(`Debt reserve with mint ${debtReserve} not found in market ${kaminoMarket.getAddress()}`);
20
+ throw new Error(`Debt reserve with mint ${debtTokenMint} not found in market ${kaminoMarket.getAddress()}`);
21
21
  }
22
22
  const { repayAmountLamports, flashRepayAmountLamports, repayAmount: finalRepayAmount, } = (0, repay_with_collateral_calcs_1.calcRepayAmountWithSlippage)(kaminoMarket, debtReserve, currentSlot, obligation, repayAmount, referrer);
23
23
  const debtPosition = obligation.getBorrowByReserve(debtReserve.address);
@@ -130,6 +130,7 @@ async function buildRepayWithCollateralIxs(market, debtReserve, collReserve, obl
130
130
  reserve: debtReserve,
131
131
  amountLamports: debtRepayAmountLamports,
132
132
  destinationAta: debtTokenAta,
133
+ // TODO(referrals): once we support referrals, we will have to replace the placeholder args below:
133
134
  referrerAccount: market.programId,
134
135
  referrerTokenState: market.programId,
135
136
  programId: market.programId,
@@ -1 +1 @@
1
- {"version":3,"file":"repay_with_collateral_operations.js","sourceRoot":"","sources":["../../src/lending_operations/repay_with_collateral_operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repay_with_collateral_operations.js","sourceRoot":"","sources":["../../src/lending_operations/repay_with_collateral_operations.ts"],"names":[],"mappings":";;;;;AAyDA,gEAkHC;AAOD,kDA4EC;AA9PD,wCAAyF;AACzF,0CAOqB;AACrB,oCAOkB;AAElB,4DAAiC;AACjC,+EAAuG;AAsChG,KAAK,UAAU,0BAA0B,CAAgB,EAC9D,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAY,EACZ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,GACgC;IAI5C,MAAM,WAAW,GAAG,YAAY,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,YAAY,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACjE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,aAAa,wBAAwB,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,aAAa,wBAAwB,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC9G,CAAC;IAED,MAAM,EACJ,mBAAmB,EACnB,wBAAwB,EACxB,WAAW,EAAE,gBAAgB,GAC9B,GAAG,IAAA,yDAA2B,EAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE3G,MAAM,YAAY,GAAG,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,UAAU,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACzE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,+BAA+B,WAAW,CAAC,KAAK,CAAC,MAAM,YAAY,WAAW,CAAC,OAAO,kBAAkB,UAAU,CAAC,iBAAiB,EAAE,CACvI,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,qCAAqC,WAAW,CAAC,KAAK,CAAC,MAAM,YAAY,WAAW,CAAC,OAAO,kBAAkB,UAAU,CAAC,iBAAiB,EAAE,CAC7I,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,wBAAwB,EAAE,GAAG,IAAA,uDAAyB,EAC5D,YAAY,EACZ,UAAU,EACV,WAAW,CAAC,OAAO,EACnB,WAAW,CAAC,OAAO,EACnB,mBAAmB,CACpB,CAAC;IAEF,iIAAiI;IACjI,MAAM,uBAAuB,GAAG,gBAAgB;SAC7C,GAAG,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;SACvC,GAAG,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;SACvC,GAAG,CAAC,KAAK,CAAC;SACV,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;SAChC,IAAI,EAAE,CAAC;IACV,MAAM,mBAAmB,GAAG,oBAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,uBAAuB,CAAC,CAAC;IAE3F,yEAAyE;IACzE,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAChD,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,uBAAuB,EACvB,YAAY,EACZ;QACE,YAAY,EAAE,EAAE;QAChB,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;KACjB,EACD,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,CACpB,CAAC;IACF,MAAM,mBAAmB,GAAG,IAAA,sBAAc,EAAC,QAAQ,CAAC,CAAC;IAErD,MAAM,eAAe,GAAe;QAClC,mBAAmB;QACnB,SAAS,EAAE,aAAa;QACxB,UAAU,EAAE,aAAa;QACzB,oBAAoB,EAAE,IAAI,oBAAO,CAAC,CAAC,CAAC,EAAE,wBAAwB;KAC/D,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAErE,MAAM,qBAAqB,GAAG,SAAS,CAAC,SAAS,CAAC;IAClD,MAAM,kBAAkB,GAAG,wBAAwB;SAChD,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;SAChC,GAAG,CAAC,qBAAqB,CAAC;SAC1B,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;SAChC,IAAI,EAAE,CAAC;IAEV,OAAO;QACL,UAAU,EAAE;YACV,mBAAmB,EAAE,kBAAkB;YACvC,oBAAoB,EAAE,wBAAwB;YAC9C,SAAS,EAAE,aAAa;YACxB,UAAU,EAAE,aAAa;YACzB,oBAAoB,EAAE,IAAI,oBAAO,CAAC,CAAC,CAAC,EAAE,wBAAwB;SAC/D;QACD,aAAa,EAAE;YACb,uBAAuB,EAAE,mBAAmB;YAC5C,wBAAwB;YACxB,6BAA6B,EAAE,wBAAwB;YACvD,SAAS;YACT,WAAW;YACX,aAAa,EAAE,mBAAmB;SACnC;KACF,CAAC;AACJ,CAAC;AAOM,KAAK,UAAU,mBAAmB,CAAgB,EACvD,WAAW,EACX,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAY,EACZ,UAAU,EACV,MAAM,EACN,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,MAAM,GAAG,OAAO,CAAC,GAAG,GACiB;IACrC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,0BAA0B,CAAC;QACrE,aAAa;QACb,WAAW;QACX,aAAa;QACb,YAAY;QACZ,UAAU;QACV,MAAM;QACN,QAAQ;QACR,WAAW;QACX,iBAAiB;QACjB,uBAAuB;QACvB,YAAY;KACb,CAAC,CAAC;IACH,MAAM,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;IACtH,MAAM,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,GAAG,UAAU,CAAC;IAE/D,MAAM,WAAW,GAAG,YAAY,CAAC,gBAAgB,CAAC,aAAa,CAAE,CAAC;IAClE,MAAM,WAAW,GAAG,YAAY,CAAC,gBAAgB,CAAC,aAAa,CAAE,CAAC;IAElE,6GAA6G;IAC7G,6GAA6G;IAC7G,IAAI,kBAAkB,CAAC,WAAW,CAAC,6BAA6B,CAAC,EAAE,CAAC;QAClE,MAAM,CACJ,6BAA6B,kBAAkB,wCAAwC,6BAA6B,6BAA6B,CAClJ,CAAC;QACF,UAAU,CAAC,mBAAmB,GAAG,6BAA6B,CAAC;IACjE,CAAC;IAED,MAAM,oBAAoB,GAAG,oBAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,CAAC;IAC5F,MAAM,CACJ,wBAAwB,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,IAC3E,WAAW,CAAC,MACd,UAAU,wBAAwB,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,IAAI,WAAW,CAAC,MAAM,gBACvF,SAAS,CAAC,SACZ,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,kBAAkB,wBAAwB;SACnF,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;SAChC,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,CAC5G,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACvF,MAAM,GAAG,GAAG,MAAM,2BAA2B,CAC3C,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,uBAAuB,EACvB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,EACvB,UAAU,CAAC,mBAAmB,CAC/B,CAAC;IAEF,OAAO;QACL,GAAG;QACH,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,UAAU;QACV,aAAa;KACd,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,MAAoB,EACpB,WAA0B,EAC1B,WAA0B,EAC1B,UAA4B,EAC5B,QAAmB,EACnB,WAAmB,EACnB,uBAA6D,EAC7D,YAAsC,EACtC,YAAqB,EACrB,iBAA0B,EAC1B,uBAAgC,EAChC,oBAA6B;IAE7B,+BAA+B;IAC/B,MAAM,UAAU,GAAG,uBAAuB,IAAI,IAAA,0CAAkC,EAAC,SAAS,CAAC,CAAC;IAE5F,MAAM,IAAI,GAAG;QACX,EAAE,IAAI,EAAE,WAAW,CAAC,gBAAgB,EAAE,EAAE,YAAY,EAAE,WAAW,CAAC,wBAAwB,EAAE,EAAE;QAC9F,EAAE,IAAI,EAAE,WAAW,CAAC,gBAAgB,EAAE,EAAE,YAAY,EAAE,WAAW,CAAC,wBAAwB,EAAE,EAAE;KAC/F,CAAC;IAEF,MAAM,UAAU,GAAG,IAAA,4BAAoB,EAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC;IAE7C,0DAA0D;IAC1D,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,IAAA,mCAAwB,EAAC;QACjE,cAAc,EAAE,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;QACrD,eAAe,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK;QACvC,sBAAsB,EAAE,MAAM,CAAC,yBAAyB,EAAE;QAC1D,oBAAoB,EAAE,MAAM,CAAC,UAAU,EAAE;QACzC,OAAO,EAAE,WAAW;QACpB,cAAc,EAAE,uBAAuB;QACvC,cAAc,EAAE,YAAY;QAC5B,kGAAkG;QAClG,eAAe,EAAE,MAAM,CAAC,SAAS;QACjC,kBAAkB,EAAE,MAAM,CAAC,SAAS;QACpC,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;IAEH,MAAM,qBAAqB,GAAG,CAAC,iBAAiB,IAAI,UAAU,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,CAAC;IAE1F,+FAA+F;IAC/F,MAAM,sBAAsB,GAAG,MAAM,sBAAY,CAAC,yBAAyB,CACzE,MAAM,EACN,iBAAiB,CAAC,CAAC,CAAC,eAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,QAAQ,EAAE,EAChE,WAAW,CAAC,gBAAgB,EAAE,EAC9B,iBAAiB,CAAC,CAAC,CAAC,eAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,EAC7D,WAAW,CAAC,gBAAgB,EAAE,EAC9B,UAAU,CAAC,KAAK,CAAC,KAAK,EACtB,WAAW,EACX,UAAU,EACV,CAAC,EACD,KAAK,EACL,qBAAqB,EACrB,SAAS,EACT,QAAQ,EACR,YAAY,CACb,CAAC;IAEF,iDAAiD;IACjD,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;IAC/C,MAAM,gBAAgB,GAAG,IAAA,8BAAsB,EAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAE7D,OAAO;QACL,GAAG,UAAU;QACb,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QACvC,cAAc;QACd,GAAG,YAAY;QACf,GAAG,sBAAY,CAAC,WAAW,CAAC,sBAAsB,CAAC;QACnD,GAAG,gBAAgB;QACnB,aAAa;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,102 @@
1
+ import { KaminoMarket, KaminoObligation } from '../classes';
2
+ import { SwapIxsProvider, SwapQuoteProvider } from '../leverage';
3
+ import { ScopeRefresh } from '../utils';
4
+ import { AddressLookupTableAccount, PublicKey, TransactionInstruction } from '@solana/web3.js';
5
+ import Decimal from 'decimal.js';
6
+ /**
7
+ * Inputs to the `getSwapCollIxns()` operation.
8
+ */
9
+ export interface SwapCollIxnsInputs<QuoteResponse> {
10
+ /**
11
+ * The amount of source collateral to be swapped-in for the target collateral.
12
+ * This value will be treated exactly (i.e. slippage is not applied here) and thus must not exceed the collateral's
13
+ * total amount.
14
+ */
15
+ sourceCollSwapAmount: Decimal;
16
+ /**
17
+ * If true, the source collateral will be closed - whatever amount is left after withdrawing `sourceCollSwapAmount`
18
+ * will be transferred to the user.
19
+ */
20
+ isClosingSourceColl: boolean;
21
+ /**
22
+ * The mint of the source collateral token (i.e. the current one).
23
+ */
24
+ sourceCollTokenMint: PublicKey;
25
+ /**
26
+ * The mint of the target collateral token (i.e. the new one).
27
+ */
28
+ targetCollTokenMint: PublicKey;
29
+ /**
30
+ * An elevation group ID that the obligation should end up with after the collateral swap - it will be requested by
31
+ * this operation (if different from the obligation's current elevation group).
32
+ */
33
+ newElevationGroup: number;
34
+ market: KaminoMarket;
35
+ obligation: KaminoObligation;
36
+ referrer: PublicKey;
37
+ currentSlot: number;
38
+ budgetAndPriorityFeeIxns?: TransactionInstruction[];
39
+ scopeRefresh?: ScopeRefresh;
40
+ quoter: SwapQuoteProvider<QuoteResponse>;
41
+ swapper: SwapIxsProvider<QuoteResponse>;
42
+ logger?: (msg: string, ...extra: any[]) => void;
43
+ }
44
+ /**
45
+ * Outputs from the `getSwapCollIxns()` operation.
46
+ */
47
+ export interface SwapCollIxnsOutputs<QuoteResponse> {
48
+ /**
49
+ * Instructions for on-chain execution.
50
+ */
51
+ ixs: TransactionInstruction[];
52
+ /**
53
+ * Required LUTs.
54
+ */
55
+ lookupTables: AddressLookupTableAccount[];
56
+ /**
57
+ * Informational-only details of the token amounts/fees/rates that were used during construction of `ixs`.
58
+ */
59
+ simulationDetails: {
60
+ /**
61
+ * Details related to the flash-loan operation needed during collateral swap.
62
+ */
63
+ flashLoan: {
64
+ /**
65
+ * The amount of flash-borrowed target collateral.
66
+ * It is also *exactly the amount of target collateral that gets added to the obligation*.
67
+ */
68
+ targetCollFlashBorrowedAmount: Decimal;
69
+ /**
70
+ * The flash-repaid amount.
71
+ * Simply a `targetCollFlashBorrowedAmount` + any flash-loan fees.
72
+ */
73
+ targetCollFlashRepaidAmount: Decimal;
74
+ };
75
+ /**
76
+ * Details related to the external DEX's swap operation (i.e. `swapper` input) needed during collateral swap.
77
+ */
78
+ externalSwap: {
79
+ /**
80
+ * The amount swapped-in to an external DEX.
81
+ * It is also *exactly the amount of source collateral that gets removed from the obligation* (i.e. echoed back
82
+ * `sourceCollSwapAmount` input).
83
+ */
84
+ sourceCollSwapInAmount: Decimal;
85
+ /**
86
+ * The amount swapped-out from an external DEX.
87
+ * Please note that this field will be equal to the `flashBorrow.targetCollFlashRepaidAmount`, but an actual
88
+ * on-chain swap-out is subject to slippage.
89
+ */
90
+ targetCollSwapOutAmount: Decimal;
91
+ /**
92
+ * The verbatim response coming from the input `quoter`.
93
+ */
94
+ quoteResponse?: QuoteResponse;
95
+ };
96
+ };
97
+ }
98
+ /**
99
+ * Constructs instructions needed to partially/fully swap the given source collateral for some other collateral type.
100
+ */
101
+ export declare function getSwapCollIxns<QuoteResponse>(inputs: SwapCollIxnsInputs<QuoteResponse>): Promise<SwapCollIxnsOutputs<QuoteResponse>>;
102
+ //# sourceMappingURL=swap_collateral_operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap_collateral_operations.d.ts","sourceRoot":"","sources":["../../src/lending_operations/swap_collateral_operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EACZ,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAA4B,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAML,YAAY,EAIb,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC/F,OAAO,OAAO,MAAM,YAAY,CAAC;AAGjC;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,aAAa;IAC/C;;;;OAIG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,mBAAmB,EAAE,SAAS,CAAC;IAE/B;;OAEG;IACH,mBAAmB,EAAE,SAAS,CAAC;IAE/B;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAI1B,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACpD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,MAAM,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACzC,OAAO,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,aAAa;IAChD;;OAEG;IACH,GAAG,EAAE,sBAAsB,EAAE,CAAC;IAE9B;;OAEG;IACH,YAAY,EAAE,yBAAyB,EAAE,CAAC;IAE1C;;OAEG;IACH,iBAAiB,EAAE;QACjB;;WAEG;QACH,SAAS,EAAE;YACT;;;eAGG;YACH,6BAA6B,EAAE,OAAO,CAAC;YAEvC;;;eAGG;YACH,2BAA2B,EAAE,OAAO,CAAC;SACtC,CAAC;QAEF;;WAEG;QACH,YAAY,EAAE;YACZ;;;;eAIG;YACH,sBAAsB,EAAE,OAAO,CAAC;YAEhC;;;;eAIG;YACH,uBAAuB,EAAE,OAAO,CAAC;YAEjC;;eAEG;YACH,aAAa,CAAC,EAAE,aAAa,CAAC;SAC/B,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,aAAa,EACjD,MAAM,EAAE,kBAAkB,CAAC,aAAa,CAAC,GACxC,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CA8C7C"}
@@ -0,0 +1,306 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getSwapCollIxns = getSwapCollIxns;
7
+ const classes_1 = require("../classes");
8
+ const leverage_1 = require("../leverage");
9
+ const utils_1 = require("../utils");
10
+ const web3_js_1 = require("@solana/web3.js");
11
+ const decimal_js_1 = __importDefault(require("decimal.js"));
12
+ const spl_token_1 = require("@solana/spl-token");
13
+ /**
14
+ * Constructs instructions needed to partially/fully swap the given source collateral for some other collateral type.
15
+ */
16
+ async function getSwapCollIxns(inputs) {
17
+ const [args, context] = extractArgsAndContext(inputs);
18
+ // Conceptually, we need to construct the following ixns:
19
+ // 0. any set-up, like budgeting and ATAs
20
+ // 1. `flash-borrowed target coll = targetCollReserve.flashBorrow()`
21
+ // 2. `targetCollReserve.deposit(flash-borrowed target coll)`
22
+ // 3. `sourceCollReserve.withdraw(requested amount to be coll-swapped)`
23
+ // 4. `externally-swapped target coll = externalDex.swap(withdrawn current coll)`
24
+ // 5. `flashRepay(externally-swapped target coll)`
25
+ // However, there is a cyclic dependency:
26
+ // - To construct 4. (specifically, to query the external swap quote), we need to know all accounts used by Kamino's
27
+ // own ixns.
28
+ // - To construct 1. (i.e. flash-borrow), we need to know the target collateral swap-out from 4.
29
+ // Construct the Klend's own ixns with a fake swap-out (only to learn the klend accounts used):
30
+ const fakeKlendIxns = await getKlendIxns(args, FAKE_TARGET_COLL_SWAP_OUT_AMOUNT, context);
31
+ const klendAccounts = (0, utils_1.uniqueAccounts)(listIxns(fakeKlendIxns));
32
+ // Construct the external swap ixns (and learn the actual swap-out amount):
33
+ const externalSwapIxns = await getExternalSwapIxns(args, klendAccounts, context);
34
+ // We now have the full information needed to simulate the end-state, so let's check that the operation is legal:
35
+ context.logger(`Expected to swap ${args.sourceCollSwapAmount} ${context.sourceCollReserve.symbol} collateral into ${externalSwapIxns.swapOutAmount} ${context.targetCollReserve.symbol} collateral`);
36
+ checkResultingObligationValid(args, externalSwapIxns.swapOutAmount, context);
37
+ // Construct the Klend's own ixns with an actual swap-out amount:
38
+ const klendIxns = await getKlendIxns(args, externalSwapIxns.swapOutAmount, context);
39
+ return {
40
+ ixs: listIxns(klendIxns, externalSwapIxns.ixns),
41
+ lookupTables: externalSwapIxns.luts,
42
+ simulationDetails: {
43
+ flashLoan: {
44
+ targetCollFlashBorrowedAmount: klendIxns.simulationDetails.targetCollFlashBorrowedAmount,
45
+ targetCollFlashRepaidAmount: externalSwapIxns.swapOutAmount,
46
+ },
47
+ externalSwap: {
48
+ sourceCollSwapInAmount: args.sourceCollSwapAmount, // repeated `/inputs.sourceCollSwapAmount`, only for clarity
49
+ targetCollSwapOutAmount: externalSwapIxns.swapOutAmount, // repeated `../flashLoan.targetCollFlashRepaidAmount`, only for clarity
50
+ quoteResponse: externalSwapIxns.simulationDetails.quoteResponse,
51
+ },
52
+ },
53
+ };
54
+ }
55
+ function extractArgsAndContext(inputs) {
56
+ if (inputs.sourceCollTokenMint.equals(inputs.targetCollTokenMint)) {
57
+ throw new Error(`Cannot swap from/to the same collateral`);
58
+ }
59
+ if (inputs.sourceCollSwapAmount.lte(0)) {
60
+ throw new Error(`Cannot swap a negative amount`);
61
+ }
62
+ return [
63
+ {
64
+ sourceCollSwapAmount: inputs.sourceCollSwapAmount,
65
+ isClosingSourceColl: inputs.isClosingSourceColl,
66
+ newElevationGroup: inputs.market.getExistingElevationGroup(inputs.newElevationGroup, 'Newly-requested'),
67
+ },
68
+ {
69
+ budgetAndPriorityFeeIxns: inputs.budgetAndPriorityFeeIxns || (0, utils_1.getComputeBudgetAndPriorityFeeIxns)(utils_1.DEFAULT_MAX_COMPUTE_UNITS),
70
+ sourceCollReserve: inputs.market.getExistingReserveByMint(inputs.sourceCollTokenMint, 'Current collateral'),
71
+ targetCollReserve: inputs.market.getExistingReserveByMint(inputs.targetCollTokenMint, 'Target collateral'),
72
+ logger: console.log,
73
+ market: inputs.market,
74
+ obligation: inputs.obligation,
75
+ quoter: inputs.quoter,
76
+ swapper: inputs.swapper,
77
+ referrer: inputs.referrer,
78
+ scopeRefresh: inputs.scopeRefresh,
79
+ currentSlot: inputs.currentSlot,
80
+ },
81
+ ];
82
+ }
83
+ const FAKE_TARGET_COLL_SWAP_OUT_AMOUNT = new decimal_js_1.default(1); // see the lengthy `getSwapCollIxns()` impl comment
84
+ async function getKlendIxns(args, targetCollSwapOutAmount, context) {
85
+ const { ataCreationIxns, targetCollAta } = getAtaCreationIxns(context);
86
+ const setupIxns = [...context.budgetAndPriorityFeeIxns, ...ataCreationIxns];
87
+ const targetCollFlashBorrowedAmount = calculateTargetCollFlashBorrowedAmount(targetCollSwapOutAmount, context);
88
+ const { targetCollFlashBorrowIxn, targetCollFlashRepayIxn } = getTargetCollFlashLoanIxns(targetCollFlashBorrowedAmount, setupIxns.length, targetCollAta, context);
89
+ const depositTargetCollIxns = await getDepositTargetCollIxns(targetCollFlashBorrowedAmount, context);
90
+ const withdrawSourceCollIxns = await getWithdrawSourceCollIxns(args, depositTargetCollIxns.removesElevationGroup, context);
91
+ const cleanupIxns = getAtaCloseIxns(context);
92
+ return {
93
+ setupIxns,
94
+ targetCollFlashBorrowIxn,
95
+ depositTargetCollIxns: depositTargetCollIxns.ixns,
96
+ withdrawSourceCollIxns,
97
+ targetCollFlashRepayIxn,
98
+ cleanupIxns,
99
+ simulationDetails: {
100
+ targetCollFlashBorrowedAmount,
101
+ },
102
+ };
103
+ }
104
+ function calculateTargetCollFlashBorrowedAmount(targetCollFlashRepaidAmount, context) {
105
+ const { protocolFees, referrerFees } = context.targetCollReserve.calculateFees(targetCollFlashRepaidAmount.mul(context.targetCollReserve.getMintFactor()), context.targetCollReserve.getFlashLoanFee(), classes_1.FeeCalculation.Inclusive, // denotes that the amount parameter above means "to be repaid" (not "borrowed")
106
+ context.market.state.referralFeeBps, !context.referrer.equals(web3_js_1.PublicKey.default));
107
+ const targetCollFlashLoanFee = protocolFees.add(referrerFees).div(context.targetCollReserve.getMintFactor());
108
+ return targetCollFlashRepaidAmount.sub(targetCollFlashLoanFee);
109
+ }
110
+ function getAtaCreationIxns(context) {
111
+ const atasAndAtaCreationIxns = (0, utils_1.createAtasIdempotent)(context.obligation.state.owner, [
112
+ {
113
+ mint: context.sourceCollReserve.getLiquidityMint(),
114
+ tokenProgram: context.sourceCollReserve.getLiquidityTokenProgram(),
115
+ },
116
+ {
117
+ mint: context.targetCollReserve.getLiquidityMint(),
118
+ tokenProgram: context.targetCollReserve.getLiquidityTokenProgram(),
119
+ },
120
+ ]);
121
+ return {
122
+ ataCreationIxns: atasAndAtaCreationIxns.map((tuple) => tuple.createAtaIx),
123
+ targetCollAta: atasAndAtaCreationIxns[1].ata,
124
+ };
125
+ }
126
+ function getAtaCloseIxns(context) {
127
+ const ataCloseIxns = [];
128
+ if (context.sourceCollReserve.getLiquidityMint().equals(utils_1.WRAPPED_SOL_MINT) ||
129
+ context.targetCollReserve.getLiquidityMint().equals(utils_1.WRAPPED_SOL_MINT)) {
130
+ const owner = context.obligation.state.owner;
131
+ const wsolAta = (0, utils_1.getAssociatedTokenAddress)(utils_1.WRAPPED_SOL_MINT, owner, false);
132
+ ataCloseIxns.push((0, spl_token_1.createCloseAccountInstruction)(wsolAta, owner, owner, [], spl_token_1.TOKEN_PROGRAM_ID));
133
+ }
134
+ return ataCloseIxns;
135
+ }
136
+ function getTargetCollFlashLoanIxns(targetCollAmount, flashBorrowIxnIndex, destinationAta, context) {
137
+ const { flashBorrowIxn: targetCollFlashBorrowIxn, flashRepayIxn: targetCollFlashRepayIxn } = (0, leverage_1.getFlashLoanInstructions)({
138
+ borrowIxnIndex: flashBorrowIxnIndex,
139
+ walletPublicKey: context.obligation.state.owner,
140
+ lendingMarketAuthority: context.market.getLendingMarketAuthority(),
141
+ lendingMarketAddress: context.market.getAddress(),
142
+ reserve: context.targetCollReserve,
143
+ amountLamports: targetCollAmount.mul(context.targetCollReserve.getMintFactor()),
144
+ destinationAta,
145
+ // TODO(referrals): once we support referrals, we will have to replace the placeholder args below:
146
+ referrerAccount: context.market.programId,
147
+ referrerTokenState: context.market.programId,
148
+ programId: context.market.programId,
149
+ });
150
+ return { targetCollFlashBorrowIxn, targetCollFlashRepayIxn };
151
+ }
152
+ async function getDepositTargetCollIxns(targetCollAmount, context) {
153
+ const removesElevationGroup = mustRemoveElevationGroupBeforeDeposit(context);
154
+ const depositCollAction = await classes_1.KaminoAction.buildDepositTxns(context.market, targetCollAmount.mul(context.targetCollReserve.getMintFactor()).toString(), // in lamports
155
+ context.targetCollReserve.getLiquidityMint(), context.obligation.state.owner, context.obligation, 0, // no extra compute budget
156
+ false, // we do not need ATA ixns here (we construct and close them ourselves)
157
+ removesElevationGroup, // we may need to (temporarily) remove the elevation group; the same or a different one will be set on withdraw, if requested
158
+ false, // we are dealing with an existing obligation, no need to create user metadata
159
+ context.referrer, context.currentSlot, context.scopeRefresh, removesElevationGroup ? 0 : undefined // only applicable when removing the group
160
+ );
161
+ return {
162
+ ixns: classes_1.KaminoAction.actionToIxs(depositCollAction),
163
+ removesElevationGroup,
164
+ };
165
+ }
166
+ function mustRemoveElevationGroupBeforeDeposit(context) {
167
+ if (context.obligation.deposits.has(context.targetCollReserve.address)) {
168
+ return false; // the target collateral already was a reserve in the obligation, so we do not affect any potential elevation group
169
+ }
170
+ const currentElevationGroupId = context.obligation.state.elevationGroup;
171
+ if (currentElevationGroupId == 0) {
172
+ return false; // simply nothing to remove
173
+ }
174
+ if (!context.targetCollReserve.state.config.elevationGroups.includes(currentElevationGroupId)) {
175
+ return true; // the target collateral reserve is NOT in the obligation's group - must remove the group
176
+ }
177
+ const currentElevationGroup = context.market.getElevationGroup(currentElevationGroupId);
178
+ if (context.obligation.deposits.size >= currentElevationGroup.maxReservesAsCollateral) {
179
+ return true; // the obligation is already at its elevation group's deposits count limit - must remove the group
180
+ }
181
+ return false; // the obligation has some elevation group and the new collateral can be added to it
182
+ }
183
+ async function getWithdrawSourceCollIxns(args, depositRemovedElevationGroup, context) {
184
+ const withdrawnSourceCollLamports = args.isClosingSourceColl
185
+ ? utils_1.U64_MAX
186
+ : args.sourceCollSwapAmount.mul(context.sourceCollReserve.getMintFactor()).toString();
187
+ const requestedElevationGroup = elevationGroupIdToRequestAfterWithdraw(args, depositRemovedElevationGroup, context);
188
+ const withdrawCollAction = await classes_1.KaminoAction.buildWithdrawTxns(context.market, withdrawnSourceCollLamports, context.sourceCollReserve.getLiquidityMint(), context.obligation.state.owner, context.obligation, 0, // no extra compute budget
189
+ false, // we do not need ATA ixns here (we construct and close them ourselves)
190
+ requestedElevationGroup !== undefined, // the `elevationGroupIdToRequestAfterWithdraw()` has already decided on this
191
+ false, // we are dealing with an existing obligation, no need to create user metadata
192
+ context.referrer, context.currentSlot, undefined, // we have refreshed scope already, during depositing
193
+ requestedElevationGroup, context.obligation.deposits.has(context.targetCollReserve.address) // if our obligation already had the target coll...
194
+ ? undefined // ... then we need no customizations here, but otherwise...
195
+ : {
196
+ addedDepositReserves: [context.targetCollReserve.address], // ... we need to inform our infra that the obligation now has one more reserve that needs refreshing.
197
+ });
198
+ return classes_1.KaminoAction.actionToIxs(withdrawCollAction);
199
+ }
200
+ function elevationGroupIdToRequestAfterWithdraw(args, depositRemovedElevationGroup, context) {
201
+ const obligationInitialElevationGroup = context.obligation.state.elevationGroup;
202
+ const requestedElevationGroupId = args.newElevationGroup?.elevationGroup ?? 0;
203
+ if (requestedElevationGroupId === 0) {
204
+ // the user doesn't want any elevation group, and...
205
+ if (obligationInitialElevationGroup === 0) {
206
+ return undefined; // ... he already didn't have it - fine!
207
+ }
208
+ if (depositRemovedElevationGroup) {
209
+ return undefined; // ... our deposit already forced us to remove it - fine!
210
+ }
211
+ return 0; // ... but he *did have one*, and our deposit didn't need to remove it - so we remove it now, just to satisfy him
212
+ }
213
+ else {
214
+ // the user wants some elevation group, and...
215
+ if (depositRemovedElevationGroup) {
216
+ return requestedElevationGroupId; // ...our deposit forced us to remove it - so we now request the new one, whatever it is
217
+ }
218
+ if (obligationInitialElevationGroup === requestedElevationGroupId) {
219
+ return undefined; // ...and he already had exactly this one - fine!
220
+ }
221
+ return requestedElevationGroupId; // ...and he had some different one - so we request the new one
222
+ }
223
+ }
224
+ async function getExternalSwapIxns(args, klendAccounts, context) {
225
+ const externalSwapInputs = {
226
+ inputAmountLamports: args.sourceCollSwapAmount.mul(context.sourceCollReserve.getMintFactor()),
227
+ inputMint: context.sourceCollReserve.getLiquidityMint(),
228
+ outputMint: context.targetCollReserve.getLiquidityMint(),
229
+ amountDebtAtaBalance: undefined, // only used for kTokens
230
+ };
231
+ const externalSwapQuote = await context.quoter(externalSwapInputs, klendAccounts);
232
+ const swapOutAmount = externalSwapQuote.priceAInB.mul(args.sourceCollSwapAmount);
233
+ const externalSwapIxnsAndLuts = await context.swapper(externalSwapInputs, klendAccounts, externalSwapQuote);
234
+ // Note: we can ignore the returned `preActionIxs` field - we do not request any of them from the swapper.
235
+ return {
236
+ swapOutAmount,
237
+ ixns: externalSwapIxnsAndLuts.swapIxs,
238
+ luts: externalSwapIxnsAndLuts.lookupTables,
239
+ simulationDetails: {
240
+ quoteResponse: externalSwapQuote.quoteResponse,
241
+ },
242
+ };
243
+ }
244
+ function checkResultingObligationValid(args, targetCollAmount, context) {
245
+ // The newly-requested elevation group must have its conditions satisfied:
246
+ if (args.newElevationGroup !== null) {
247
+ // Note: we cannot use the existing `isLoanEligibleForElevationGroup()`, since it operates on a `KaminoObligation`,
248
+ // and our instance is stale (we want to assert on the state *after* potential changes).
249
+ // Let's start with the (simpler) debt reserve - it cannot change during a coll-swap:
250
+ const debtReserveAddresses = [...context.obligation.borrows.keys()];
251
+ if (debtReserveAddresses.length > 1) {
252
+ throw new Error(`The obligation with ${debtReserveAddresses.length} debt reserves cannot request any elevation group`);
253
+ }
254
+ if (debtReserveAddresses.length == 1) {
255
+ const debtReserveAddress = debtReserveAddresses[0];
256
+ if (!args.newElevationGroup.debtReserve.equals(debtReserveAddress)) {
257
+ throw new Error(`The obligation with debt reserve ${debtReserveAddress.toBase58()} cannot request elevation group ${args.newElevationGroup.elevationGroup}`);
258
+ }
259
+ }
260
+ // Now the coll reserves: this requires first finding out the resulting set of deposits:
261
+ const collReserveAddresses = new utils_1.PublicKeySet([
262
+ ...context.obligation.deposits.keys(),
263
+ context.targetCollReserve.address,
264
+ ]);
265
+ if (args.isClosingSourceColl) {
266
+ collReserveAddresses.remove(context.sourceCollReserve.address);
267
+ }
268
+ if (collReserveAddresses.size() > args.newElevationGroup.maxReservesAsCollateral) {
269
+ throw new Error(`The obligation with ${collReserveAddresses.size()} collateral reserves cannot request elevation group ${args.newElevationGroup.elevationGroup}`);
270
+ }
271
+ for (const collReserveAddress of collReserveAddresses.toArray()) {
272
+ if (!args.newElevationGroup.collateralReserves.contains(collReserveAddress)) {
273
+ throw new Error(`The obligation with collateral reserve ${collReserveAddress.toBase58()} cannot request elevation group ${args.newElevationGroup.elevationGroup}`);
274
+ }
275
+ }
276
+ }
277
+ // The LTV cannot be exceeded:
278
+ const effectiveWithdrawAmount = args.isClosingSourceColl
279
+ ? context.obligation.getDepositAmountByReserve(context.sourceCollReserve)
280
+ : args.sourceCollSwapAmount;
281
+ const resultingStats = context.obligation.getPostSwapCollObligationStats({
282
+ withdrawAmountLamports: effectiveWithdrawAmount.mul(context.sourceCollReserve.getMintFactor()),
283
+ withdrawReserveAddress: context.sourceCollReserve.address,
284
+ depositAmountLamports: targetCollAmount.mul(context.targetCollReserve.getMintFactor()),
285
+ depositReserveAddress: context.targetCollReserve.address,
286
+ market: context.market,
287
+ newElevationGroup: args.newElevationGroup?.elevationGroup ?? 0,
288
+ slot: context.currentSlot,
289
+ });
290
+ const maxLtv = resultingStats.borrowLimit.div(resultingStats.userTotalCollateralDeposit);
291
+ if (resultingStats.loanToValue > maxLtv) {
292
+ throw new Error(`Swapping collateral ${effectiveWithdrawAmount} ${context.sourceCollReserve.symbol} into ${targetCollAmount} ${context.targetCollReserve.symbol} would result in the obligation's LTV ${resultingStats.loanToValue} exceeding its max LTV ${maxLtv}`);
293
+ }
294
+ }
295
+ function listIxns(klendIxns, externalSwapIxns) {
296
+ return [
297
+ ...klendIxns.setupIxns,
298
+ klendIxns.targetCollFlashBorrowIxn,
299
+ ...klendIxns.depositTargetCollIxns,
300
+ ...klendIxns.withdrawSourceCollIxns,
301
+ ...(externalSwapIxns || []),
302
+ klendIxns.targetCollFlashRepayIxn,
303
+ ...klendIxns.cleanupIxns,
304
+ ];
305
+ }
306
+ //# sourceMappingURL=swap_collateral_operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap_collateral_operations.js","sourceRoot":"","sources":["../../src/lending_operations/swap_collateral_operations.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { PublicKey, TransactionInstruction } from '@solana/web3.js';
2
2
  import { KaminoMarket, KaminoObligation, KaminoReserve } from '../classes';
3
3
  import { StrategyWithAddress } from '@kamino-finance/kliquidity-sdk';
4
- import { AdjustLeverageInitialInputs, AdjustLeverageIxsResponse, AdjustLeverageProps, AdjustLeverageSwapInputsProps, DepositLeverageInitialInputs, DepositWithLeverageProps, DepositWithLeverageSwapInputsProps, DepsoitLeverageIxsResponse, SwapInputs, SwapQuoteIxs, WithdrawLeverageCalcsResult, WithdrawLeverageInitialInputs, WithdrawLeverageIxsResponse, WithdrawWithLeverageProps, WithdrawWithLeverageSwapInputsProps } from './types';
4
+ import { AdjustLeverageInitialInputs, AdjustLeverageIxsResponse, AdjustLeverageProps, AdjustLeverageSwapInputsProps, DepositLeverageInitialInputs, DepositWithLeverageProps, DepositWithLeverageSwapInputsProps, DepsoitLeverageIxsResponse, SwapInputs, SwapIxs, WithdrawLeverageCalcsResult, WithdrawLeverageInitialInputs, WithdrawLeverageIxsResponse, WithdrawWithLeverageProps, WithdrawWithLeverageSwapInputsProps } from './types';
5
5
  export declare function getDepositWithLeverageSwapInputs<QuoteResponse>({ owner, kaminoMarket, debtTokenMint, collTokenMint, depositAmount, priceDebtToColl, slippagePct, obligation, referrer, currentSlot, targetLeverage, selectedTokenMint, kamino, obligationTypeTagOverride, scopeFeed, budgetAndPriorityFeeIxs, quoteBufferBps, priceAinB, isKtoken, quoter, elevationGroupOverride, }: DepositWithLeverageSwapInputsProps<QuoteResponse>): Promise<{
6
6
  swapInputs: SwapInputs;
7
7
  initialInputs: DepositLeverageInitialInputs<QuoteResponse>;
@@ -12,7 +12,7 @@ export declare function getWithdrawWithLeverageSwapInputs<QuoteResponse>({ owner
12
12
  initialInputs: WithdrawLeverageInitialInputs<QuoteResponse>;
13
13
  }>;
14
14
  export declare function getWithdrawWithLeverageIxns<QuoteResponse>({ owner, kaminoMarket, debtTokenMint, collTokenMint, obligation, deposited, borrowed, referrer, currentSlot, withdrawAmount, priceCollToDebt, slippagePct, isClosingPosition, selectedTokenMint, budgetAndPriorityFeeIxs, kamino, scopeFeed, quoteBufferBps, isKtoken, quoter, swapper, }: WithdrawWithLeverageProps<QuoteResponse>): Promise<WithdrawLeverageIxsResponse<QuoteResponse>>;
15
- export declare function buildWithdrawWithLeverageIxns(market: KaminoMarket, debtReserve: KaminoReserve, collReserve: KaminoReserve, owner: PublicKey, obligation: KaminoObligation, referrer: PublicKey, currentSlot: number, isClosingPosition: boolean, depositTokenIsSol: boolean, scopeFeed: string | undefined, calcs: WithdrawLeverageCalcsResult, budgetAndPriorityFeeIxs: TransactionInstruction[] | undefined, swapQuoteIxs: SwapQuoteIxs, strategy: StrategyWithAddress | undefined, collIsKtoken: boolean): Promise<TransactionInstruction[]>;
15
+ export declare function buildWithdrawWithLeverageIxns(market: KaminoMarket, debtReserve: KaminoReserve, collReserve: KaminoReserve, owner: PublicKey, obligation: KaminoObligation, referrer: PublicKey, currentSlot: number, isClosingPosition: boolean, depositTokenIsSol: boolean, scopeFeed: string | undefined, calcs: WithdrawLeverageCalcsResult, budgetAndPriorityFeeIxs: TransactionInstruction[] | undefined, swapQuoteIxs: SwapIxs, strategy: StrategyWithAddress | undefined, collIsKtoken: boolean): Promise<TransactionInstruction[]>;
16
16
  export declare function getAdjustLeverageSwapInputs<QuoteResponse>({ owner, kaminoMarket, debtTokenMint, collTokenMint, obligation, depositedLamports, borrowedLamports, referrer, currentSlot, targetLeverage, priceCollToDebt, priceDebtToColl, slippagePct, budgetAndPriorityFeeIxs, kamino, scopeFeed, quoteBufferBps, isKtoken, quoter, }: AdjustLeverageSwapInputsProps<QuoteResponse>): Promise<{
17
17
  swapInputs: SwapInputs;
18
18
  initialInputs: AdjustLeverageInitialInputs<QuoteResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/leverage/operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEtF,OAAO,EAEL,YAAY,EACZ,gBAAgB,EAChB,aAAa,EAEd,MAAM,YAAY,CAAC;AA8BpB,OAAO,EAAU,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,EAEL,2BAA2B,EAC3B,yBAAyB,EACzB,mBAAmB,EACnB,6BAA6B,EAE7B,4BAA4B,EAC5B,wBAAwB,EACxB,kCAAkC,EAClC,0BAA0B,EAE1B,UAAU,EACV,YAAY,EAEZ,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,mCAAmC,EACpC,MAAM,SAAS,CAAC;AAEjB,wBAAsB,gCAAgC,CAAC,aAAa,EAAE,EACpE,KAAK,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,yBAAyB,EACzB,SAAS,EACT,uBAAuB,EACvB,cAAc,EACd,SAAS,EACT,QAAQ,EACR,MAAM,EACN,sBAAsB,GACvB,EAAE,kCAAkC,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC;IAC7D,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,4BAA4B,CAAC,aAAa,CAAC,CAAC;CAC5D,CAAC,CA+ID;AA2DD,wBAAsB,0BAA0B,CAAC,aAAa,EAAE,EAC9D,KAAK,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,yBAAyB,EACzB,SAAS,EACT,uBAAuB,EACvB,cAAc,EACd,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAO,EACP,sBAAsB,GACvB,EAAE,wBAAwB,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC,CAsF9F;AAwKD,wBAAsB,iCAAiC,CAAC,aAAa,EAAE,EACrE,KAAK,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,SAAS,EACT,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,MAAM,EACN,SAAS,EACT,cAAc,EACd,QAAQ,EACR,MAAM,GACP,EAAE,mCAAmC,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC;IAC9D,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,6BAA6B,CAAC,aAAa,CAAC,CAAC;CAC7D,CAAC,CA0GD;AAED,wBAAsB,2BAA2B,CAAC,aAAa,EAAE,EAC/D,KAAK,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,MAAM,EACN,SAAS,EACT,cAAc,EACd,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,yBAAyB,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC,CAuFhG;AAED,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,aAAa,EAC1B,WAAW,EAAE,aAAa,EAC1B,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,SAAS,EACnB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,OAAO,EAC1B,iBAAiB,EAAE,OAAO,EAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,2BAA2B,EAClC,uBAAuB,EAAE,sBAAsB,EAAE,GAAG,SAAS,EAC7D,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,mBAAmB,GAAG,SAAS,EACzC,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAoInC;AAED,wBAAsB,2BAA2B,CAAC,aAAa,EAAE,EAC/D,KAAK,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,WAAW,EACX,uBAAuB,EACvB,MAAM,EACN,SAAS,EACT,cAAc,EACd,QAAQ,EACR,MAAM,GACP,EAAE,6BAA6B,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC;IACxD,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,2BAA2B,CAAC,aAAa,CAAC,CAAC;CAC3D,CAAC,CAmOD;AAED,wBAAsB,qBAAqB,CAAC,aAAa,EAAE,EACzD,KAAK,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,WAAW,EACX,uBAAuB,EACvB,MAAM,EACN,SAAS,EACT,cAAc,EACd,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,CA6HxF"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/leverage/operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEtF,OAAO,EAEL,YAAY,EACZ,gBAAgB,EAChB,aAAa,EAEd,MAAM,YAAY,CAAC;AA8BpB,OAAO,EAAU,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,EAEL,2BAA2B,EAC3B,yBAAyB,EACzB,mBAAmB,EACnB,6BAA6B,EAE7B,4BAA4B,EAC5B,wBAAwB,EACxB,kCAAkC,EAClC,0BAA0B,EAE1B,UAAU,EACV,OAAO,EAEP,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,mCAAmC,EACpC,MAAM,SAAS,CAAC;AAEjB,wBAAsB,gCAAgC,CAAC,aAAa,EAAE,EACpE,KAAK,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,yBAAyB,EACzB,SAAS,EACT,uBAAuB,EACvB,cAAc,EACd,SAAS,EACT,QAAQ,EACR,MAAM,EACN,sBAAsB,GACvB,EAAE,kCAAkC,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC;IAC7D,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,4BAA4B,CAAC,aAAa,CAAC,CAAC;CAC5D,CAAC,CA+ID;AA2DD,wBAAsB,0BAA0B,CAAC,aAAa,EAAE,EAC9D,KAAK,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,yBAAyB,EACzB,SAAS,EACT,uBAAuB,EACvB,cAAc,EACd,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAO,EACP,sBAAsB,GACvB,EAAE,wBAAwB,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC,CAsF9F;AAyKD,wBAAsB,iCAAiC,CAAC,aAAa,EAAE,EACrE,KAAK,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,SAAS,EACT,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,MAAM,EACN,SAAS,EACT,cAAc,EACd,QAAQ,EACR,MAAM,GACP,EAAE,mCAAmC,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC;IAC9D,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,6BAA6B,CAAC,aAAa,CAAC,CAAC;CAC7D,CAAC,CA0GD;AAED,wBAAsB,2BAA2B,CAAC,aAAa,EAAE,EAC/D,KAAK,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,MAAM,EACN,SAAS,EACT,cAAc,EACd,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,yBAAyB,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC,CAuFhG;AAED,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,aAAa,EAC1B,WAAW,EAAE,aAAa,EAC1B,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,SAAS,EACnB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,OAAO,EAC1B,iBAAiB,EAAE,OAAO,EAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,2BAA2B,EAClC,uBAAuB,EAAE,sBAAsB,EAAE,GAAG,SAAS,EAC7D,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,mBAAmB,GAAG,SAAS,EACzC,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAqInC;AAED,wBAAsB,2BAA2B,CAAC,aAAa,EAAE,EAC/D,KAAK,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,WAAW,EACX,uBAAuB,EACvB,MAAM,EACN,SAAS,EACT,cAAc,EACd,QAAQ,EACR,MAAM,GACP,EAAE,6BAA6B,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC;IACxD,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,2BAA2B,CAAC,aAAa,CAAC,CAAC;CAC3D,CAAC,CAmOD;AAED,wBAAsB,qBAAqB,CAAC,aAAa,EAAE,EACzD,KAAK,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,WAAW,EACX,uBAAuB,EACvB,MAAM,EACN,SAAS,EACT,cAAc,EACd,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,CA6HxF"}
@@ -250,6 +250,7 @@ async function buildDepositWithLeverageIxns(market, debtReserve, collReserve, ow
250
250
  reserve: !collIsKtoken ? collReserve : debtReserve,
251
251
  amountLamports: (0, classes_2.numberToLamportsDecimal)(!collIsKtoken ? calcs.flashBorrowInCollToken : calcs.flashBorrowInDebtTokenKtokenOnly, !collIsKtoken ? collReserve.stats.decimals : debtReserve.stats.decimals),
252
252
  destinationAta: !collIsKtoken ? collTokenAta : debtTokenAta,
253
+ // TODO(referrals): once we support referrals, we will have to replace the placeholder args below:
253
254
  referrerAccount: market.programId,
254
255
  referrerTokenState: market.programId,
255
256
  programId: market.programId,
@@ -476,6 +477,7 @@ async function buildWithdrawWithLeverageIxns(market, debtReserve, collReserve, o
476
477
  reserve: debtReserve,
477
478
  amountLamports: (0, classes_2.numberToLamportsDecimal)(calcs.repayAmount, debtReserve.stats.decimals),
478
479
  destinationAta: debtTokenAta,
480
+ // TODO(referrals): once we support referrals, we will have to replace the placeholder args below:
479
481
  referrerAccount: market.programId,
480
482
  referrerTokenState: market.programId,
481
483
  programId: market.programId,
@@ -766,6 +768,7 @@ async function buildIncreaseLeverageIxns(owner, kaminoMarket, collTokenMint, deb
766
768
  reserve: !collIsKtoken ? collReserve : debtReserve,
767
769
  amountLamports: (0, classes_2.numberToLamportsDecimal)(!collIsKtoken ? calcs.adjustDepositPosition : calcs.amountToFlashBorrowDebt, !collIsKtoken ? collReserve.stats.decimals : debtReserve.stats.decimals),
768
770
  destinationAta: !collIsKtoken ? collTokenAta : debtTokenAta,
771
+ // TODO(referrals): once we support referrals, we will have to replace the placeholder args below:
769
772
  referrerAccount: kaminoMarket.programId,
770
773
  referrerTokenState: kaminoMarket.programId,
771
774
  programId: kaminoMarket.programId,
@@ -882,6 +885,7 @@ async function buildDecreaseLeverageIxns(owner, kaminoMarket, collTokenMint, deb
882
885
  reserve: debtReserve,
883
886
  amountLamports: (0, classes_2.numberToLamportsDecimal)(decimal_js_1.default.abs(calcs.adjustBorrowPosition), debtReserve.stats.decimals),
884
887
  destinationAta: debtTokenAta,
888
+ // TODO(referrals): once we support referrals, we will have to replace the placeholder args below:
885
889
  referrerAccount: kaminoMarket.programId,
886
890
  referrerTokenState: kaminoMarket.programId,
887
891
  programId: kaminoMarket.programId,