@kamino-finance/klend-sdk 5.0.2 → 5.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/classes/obligation.d.ts.map +1 -1
  2. package/dist/classes/obligation.js +1 -2
  3. package/dist/classes/obligation.js.map +1 -1
  4. package/dist/classes/reserve.d.ts +0 -1
  5. package/dist/classes/reserve.d.ts.map +1 -1
  6. package/dist/classes/reserve.js +3 -7
  7. package/dist/classes/reserve.js.map +1 -1
  8. package/dist/lending_operations/repay_with_collateral_operations.d.ts.map +1 -1
  9. package/dist/lending_operations/repay_with_collateral_operations.js +6 -0
  10. package/dist/lending_operations/repay_with_collateral_operations.js.map +1 -1
  11. package/dist/leverage/calcs.d.ts +28 -1
  12. package/dist/leverage/calcs.d.ts.map +1 -1
  13. package/dist/leverage/calcs.js +204 -8
  14. package/dist/leverage/calcs.js.map +1 -1
  15. package/dist/leverage/index.d.ts +1 -0
  16. package/dist/leverage/index.d.ts.map +1 -1
  17. package/dist/leverage/index.js +1 -0
  18. package/dist/leverage/index.js.map +1 -1
  19. package/dist/leverage/operations.d.ts +14 -241
  20. package/dist/leverage/operations.d.ts.map +1 -1
  21. package/dist/leverage/operations.js +508 -776
  22. package/dist/leverage/operations.js.map +1 -1
  23. package/dist/leverage/types.d.ts +173 -0
  24. package/dist/leverage/types.d.ts.map +1 -0
  25. package/dist/leverage/types.js +3 -0
  26. package/dist/leverage/types.js.map +1 -0
  27. package/dist/leverage/utils.d.ts +5 -5
  28. package/dist/leverage/utils.d.ts.map +1 -1
  29. package/dist/leverage/utils.js +68 -33
  30. package/dist/leverage/utils.js.map +1 -1
  31. package/dist/utils/constants.d.ts +1 -0
  32. package/dist/utils/constants.d.ts.map +1 -1
  33. package/dist/utils/constants.js +2 -1
  34. package/dist/utils/constants.js.map +1 -1
  35. package/dist/utils/fuzz.d.ts +3 -0
  36. package/dist/utils/fuzz.d.ts.map +1 -0
  37. package/dist/utils/fuzz.js +11 -0
  38. package/dist/utils/fuzz.js.map +1 -0
  39. package/dist/utils/index.d.ts +1 -0
  40. package/dist/utils/index.d.ts.map +1 -1
  41. package/dist/utils/index.js +1 -0
  42. package/dist/utils/index.js.map +1 -1
  43. package/package.json +1 -1
  44. package/src/classes/obligation.ts +1 -2
  45. package/src/classes/reserve.ts +3 -16
  46. package/src/lending_operations/repay_with_collateral_operations.ts +2 -0
  47. package/src/leverage/calcs.ts +315 -8
  48. package/src/leverage/index.ts +1 -0
  49. package/src/leverage/operations.ts +1079 -1331
  50. package/src/leverage/types.ts +211 -0
  51. package/src/leverage/utils.ts +103 -64
  52. package/src/utils/constants.ts +2 -0
  53. package/src/utils/fuzz.ts +5 -0
  54. package/src/utils/index.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/leverage/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/leverage/utils.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,7 @@ export declare const MIN_AUTODELEVERAGE_BONUS_BPS = 50;
42
42
  * WSOL Mint
43
43
  */
44
44
  export declare const WRAPPED_SOL_MINT: PublicKey;
45
+ export declare const SOL_DECIMALS = 9;
45
46
  /**
46
47
  * USDC Mint
47
48
  */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,eAAO,MAAM,kBAAkB,EAAE,SAAwE,CAAC;AAC1G,eAAO,MAAM,wBAAwB,EAAE,MAA8B,CAAC;AACtE,eAAO,MAAM,OAAO,yBAAyB,CAAC;AAE9C,eAAO,MAAM,uBAAuB,SAAwC,CAAC;AAE7E,MAAM,MAAM,GAAG,GAAG,cAAc,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEzD,wBAAgB,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,GAAG,CAE9C;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,UAMlD;AAED,eAAO,MAAM,YAAY,0DAA0D,CAAC;AAEpF,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,wBAAgB,YAAY,CAAC,GAAG,GAAE,cAAc,GAAG,SAA0B,aAM5E;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAwB,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAwB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAsB,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAsB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,gBAAgB,WAA+D,CAAC;AAE7F;;GAEG;AACH,eAAO,MAAM,iBAAiB,WAAgE,CAAC;AAE/F,eAAO,MAAM,qBAAqB,MAAM,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,eAAO,MAAM,kBAAkB,EAAE,SAAwE,CAAC;AAC1G,eAAO,MAAM,wBAAwB,EAAE,MAA8B,CAAC;AACtE,eAAO,MAAM,OAAO,yBAAyB,CAAC;AAE9C,eAAO,MAAM,uBAAuB,SAAwC,CAAC;AAE7E,MAAM,MAAM,GAAG,GAAG,cAAc,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEzD,wBAAgB,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,GAAG,CAE9C;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,UAMlD;AAED,eAAO,MAAM,YAAY,0DAA0D,CAAC;AAEpF,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,wBAAgB,YAAY,CAAC,GAAG,GAAE,cAAc,GAAG,SAA0B,aAM5E;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAwB,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAwB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAsB,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAsB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,gBAAgB,WAA+D,CAAC;AAE7F,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;GAEG;AACH,eAAO,MAAM,iBAAiB,WAAgE,CAAC;AAE/F,eAAO,MAAM,qBAAqB,MAAM,CAAC"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.MAINNET_BETA_CHAIN_ID = exports.USDC_MAINNET_MINT = exports.WRAPPED_SOL_MINT = exports.MIN_AUTODELEVERAGE_BONUS_BPS = exports.SLOTS_PER_YEAR = exports.SLOTS_PER_DAY = exports.SLOTS_PER_HOUR = exports.SLOTS_PER_MINUTE = exports.SLOTS_PER_SECOND = exports.ONE_HUNDRED_PCT_IN_BPS = exports.CDN_ENDPOINT = exports.INITIAL_COLLATERAL_RATE = exports.U64_MAX = exports.DEFAULT_KLEND_PROGRAM_ID = exports.STAGING_PROGRAM_ID = void 0;
6
+ exports.MAINNET_BETA_CHAIN_ID = exports.USDC_MAINNET_MINT = exports.SOL_DECIMALS = exports.WRAPPED_SOL_MINT = exports.MIN_AUTODELEVERAGE_BONUS_BPS = exports.SLOTS_PER_YEAR = exports.SLOTS_PER_DAY = exports.SLOTS_PER_HOUR = exports.SLOTS_PER_MINUTE = exports.SLOTS_PER_SECOND = exports.ONE_HUNDRED_PCT_IN_BPS = exports.CDN_ENDPOINT = exports.INITIAL_COLLATERAL_RATE = exports.U64_MAX = exports.DEFAULT_KLEND_PROGRAM_ID = exports.STAGING_PROGRAM_ID = void 0;
7
7
  exports.isENV = isENV;
8
8
  exports.getApiEndpoint = getApiEndpoint;
9
9
  exports.getProgramId = getProgramId;
@@ -68,6 +68,7 @@ exports.MIN_AUTODELEVERAGE_BONUS_BPS = 50;
68
68
  * WSOL Mint
69
69
  */
70
70
  exports.WRAPPED_SOL_MINT = new web3_js_1.PublicKey('So11111111111111111111111111111111111111112');
71
+ exports.SOL_DECIMALS = 9;
71
72
  /**
72
73
  * USDC Mint
73
74
  */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";;;;;;AAYA,sBAEC;AAED,wCAMC;AAMD,oCAMC;AAlCD,4DAAiC;AACjC,wDAAsD;AACtD,6CAA4C;AAE/B,QAAA,kBAAkB,GAAc,IAAI,mBAAS,CAAC,6CAA6C,CAAC,CAAC;AAC7F,QAAA,wBAAwB,GAAW,sBAAU,CAAC,QAAQ,EAAE,CAAC;AACzD,QAAA,OAAO,GAAG,sBAAsB,CAAC;AAC9C,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACtB,QAAA,uBAAuB,GAAG,IAAI,oBAAO,CAAC,wBAAwB,CAAC,CAAC;AAI7E,SAAgB,KAAK,CAAC,KAAU;IAC9B,OAAO,KAAK,KAAK,cAAc,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,UAAU,CAAC;AAChF,CAAC;AAED,SAAgB,cAAc,CAAC,SAAoB;IACjD,IAAI,SAAS,CAAC,MAAM,CAAC,sBAAU,CAAC,EAAE,CAAC;QACjC,OAAO,gDAAgD,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,6DAA6D,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC7F,CAAC;AACH,CAAC;AAEY,QAAA,YAAY,GAAG,uDAAuD,CAAC;AAEvE,QAAA,sBAAsB,GAAG,MAAM,CAAC;AAE7C,SAAgB,YAAY,CAAC,MAAkC,cAAc;IAC3E,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;QAC3B,OAAO,sBAAU,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,OAAO,0BAAkB,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;GAEG;AACU,QAAA,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;GAGG;AACU,QAAA,gBAAgB,GAAG,wBAAgB,GAAG,EAAE,CAAC;AAEtD;;;GAGG;AACU,QAAA,cAAc,GAAG,wBAAgB,GAAG,EAAE,CAAC;AAEpD;;;GAGG;AACU,QAAA,aAAa,GAAG,sBAAc,GAAG,EAAE,CAAC;AAEjD;;;GAGG;AACU,QAAA,cAAc,GAAG,qBAAa,GAAG,GAAG,CAAC;AAElD;;GAEG;AACU,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAE/C;;GAEG;AACU,QAAA,gBAAgB,GAAG,IAAI,mBAAS,CAAC,6CAA6C,CAAC,CAAC;AAE7F;;GAEG;AACU,QAAA,iBAAiB,GAAG,IAAI,mBAAS,CAAC,8CAA8C,CAAC,CAAC;AAElF,QAAA,qBAAqB,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";;;;;;AAYA,sBAEC;AAED,wCAMC;AAMD,oCAMC;AAlCD,4DAAiC;AACjC,wDAAsD;AACtD,6CAA4C;AAE/B,QAAA,kBAAkB,GAAc,IAAI,mBAAS,CAAC,6CAA6C,CAAC,CAAC;AAC7F,QAAA,wBAAwB,GAAW,sBAAU,CAAC,QAAQ,EAAE,CAAC;AACzD,QAAA,OAAO,GAAG,sBAAsB,CAAC;AAC9C,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACtB,QAAA,uBAAuB,GAAG,IAAI,oBAAO,CAAC,wBAAwB,CAAC,CAAC;AAI7E,SAAgB,KAAK,CAAC,KAAU;IAC9B,OAAO,KAAK,KAAK,cAAc,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,UAAU,CAAC;AAChF,CAAC;AAED,SAAgB,cAAc,CAAC,SAAoB;IACjD,IAAI,SAAS,CAAC,MAAM,CAAC,sBAAU,CAAC,EAAE,CAAC;QACjC,OAAO,gDAAgD,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,6DAA6D,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC7F,CAAC;AACH,CAAC;AAEY,QAAA,YAAY,GAAG,uDAAuD,CAAC;AAEvE,QAAA,sBAAsB,GAAG,MAAM,CAAC;AAE7C,SAAgB,YAAY,CAAC,MAAkC,cAAc;IAC3E,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;QAC3B,OAAO,sBAAU,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,OAAO,0BAAkB,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;GAEG;AACU,QAAA,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;GAGG;AACU,QAAA,gBAAgB,GAAG,wBAAgB,GAAG,EAAE,CAAC;AAEtD;;;GAGG;AACU,QAAA,cAAc,GAAG,wBAAgB,GAAG,EAAE,CAAC;AAEpD;;;GAGG;AACU,QAAA,aAAa,GAAG,sBAAc,GAAG,EAAE,CAAC;AAEjD;;;GAGG;AACU,QAAA,cAAc,GAAG,qBAAa,GAAG,GAAG,CAAC;AAElD;;GAEG;AACU,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAE/C;;GAEG;AACU,QAAA,gBAAgB,GAAG,IAAI,mBAAS,CAAC,6CAA6C,CAAC,CAAC;AAEhF,QAAA,YAAY,GAAG,CAAC,CAAC;AAE9B;;GAEG;AACU,QAAA,iBAAiB,GAAG,IAAI,mBAAS,CAAC,8CAA8C,CAAC,CAAC;AAElF,QAAA,qBAAqB,GAAG,GAAG,CAAC"}
@@ -0,0 +1,3 @@
1
+ import Decimal from 'decimal.js';
2
+ export declare function fuzzyEqual(a: Decimal.Value, b: Decimal.Value, epsilon?: number): boolean;
3
+ //# sourceMappingURL=fuzz.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuzz.d.ts","sourceRoot":"","sources":["../../src/utils/fuzz.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,SAAS,WAE9E"}
@@ -0,0 +1,11 @@
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.fuzzyEqual = fuzzyEqual;
7
+ const decimal_js_1 = __importDefault(require("decimal.js"));
8
+ function fuzzyEqual(a, b, epsilon = 0.0001) {
9
+ return new decimal_js_1.default(a).sub(b).abs().lte(epsilon);
10
+ }
11
+ //# sourceMappingURL=fuzz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuzz.js","sourceRoot":"","sources":["../../src/utils/fuzz.ts"],"names":[],"mappings":";;;;;AAEA,gCAEC;AAJD,4DAAiC;AAEjC,SAAgB,UAAU,CAAC,CAAgB,EAAE,CAAgB,EAAE,OAAO,GAAG,MAAM;IAC7E,OAAO,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC"}
@@ -12,4 +12,5 @@ export * from './oracle';
12
12
  export * from './lookupTable';
13
13
  export * from './sendTransactionsUtils';
14
14
  export * from './managerTypes';
15
+ export * from './fuzz';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC"}
@@ -28,4 +28,5 @@ __exportStar(require("./oracle"), exports);
28
28
  __exportStar(require("./lookupTable"), exports);
29
29
  __exportStar(require("./sendTransactionsUtils"), exports);
30
30
  __exportStar(require("./managerTypes"), exports);
31
+ __exportStar(require("./fuzz"), exports);
31
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,wCAAsB;AACtB,8CAA4B;AAC5B,wCAAsB;AACtB,gDAA8B;AAC9B,mDAAiC;AACjC,0CAAwB;AACxB,0CAAwB;AACxB,iDAA+B;AAC/B,2CAAyB;AACzB,2CAAyB;AACzB,gDAA8B;AAC9B,0DAAwC;AACxC,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,wCAAsB;AACtB,8CAA4B;AAC5B,wCAAsB;AACtB,gDAA8B;AAC9B,mDAAiC;AACjC,0CAAwB;AACxB,0CAAwB;AACxB,iDAA+B;AAC/B,2CAAyB;AACzB,2CAAyB;AACzB,gDAA8B;AAC9B,0DAAwC;AACxC,iDAA+B;AAC/B,yCAAuB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kamino-finance/klend-sdk",
3
- "version": "5.0.2",
3
+ "version": "5.0.4",
4
4
  "description": "Typescript SDK for interacting with the Kamino Lending (klend) protocol",
5
5
  "repository": {
6
6
  "type": "git",
@@ -366,7 +366,7 @@ export class KaminoObligation {
366
366
  if (obligationDeposits[i].depositReserve.equals(changeReserve)) {
367
367
  const coll: ObligationCollateralFields = { ...obligationDeposits[i] };
368
368
  const exchangeRate = collateralExchangeRates.get(changeReserve)!;
369
- const changeInCollateral = new Decimal(changeInLamports).mul(exchangeRate).toFixed(0);
369
+ const changeInCollateral = new Decimal(changeInLamports).mul(exchangeRate);
370
370
  const updatedDeposit = new Decimal(obligationDeposits[i].depositedAmount.toNumber()).add(changeInCollateral);
371
371
  coll.depositedAmount = new BN(positiveOrZero(updatedDeposit).toString());
372
372
  newDeposits.push(new ObligationCollateral(coll));
@@ -927,7 +927,6 @@ export class KaminoObligation {
927
927
  if (elevationGroup === this.state.elevationGroup) {
928
928
  return Decimal.min(maxBorrowAmount, liquidityAvailable);
929
929
  } else {
930
- // TODO: this is wrong, most liquidity caps are global, we should add up only the ones that are specific to this mode
931
930
  const { amount: debtThisReserve } = this.borrows.get(reserve.address) || { amount: new Decimal(0) };
932
931
  const liquidityAvailablePostMigration = Decimal.max(0, liquidityAvailable.minus(debtThisReserve));
933
932
  return Decimal.min(maxBorrowAmount, liquidityAvailablePostMigration);
@@ -570,7 +570,7 @@ export class KaminoReserve {
570
570
  return Decimal.max(new Decimal(0), maxBorrowAmount);
571
571
  }
572
572
 
573
- calcSimulatedBorrowRate(
573
+ calcSimulatedBorrowAPR(
574
574
  amount: Decimal,
575
575
  action: ActionType,
576
576
  slot: number,
@@ -580,20 +580,7 @@ export class KaminoReserve {
580
580
  const slotAdjustmentFactor = this.slotAdjustmentFactor();
581
581
  const newUtilization = this.calcSimulatedUtilizationRatio(amount, action, slot, referralFeeBps, outflowAmount);
582
582
  const curve = truncateBorrowCurve(this.state.config.borrowRateCurve.points);
583
- return getBorrowRate(newUtilization, curve) * slotAdjustmentFactor;
584
- }
585
-
586
- calcSimulatedBorrowAPR(
587
- amount: Decimal,
588
- action: ActionType,
589
- slot: number,
590
- referralFeeBps: number,
591
- outflowAmount?: Decimal
592
- ) {
593
- return (
594
- this.calcSimulatedBorrowRate(amount, action, slot, referralFeeBps, outflowAmount) +
595
- this.getFixedHostInterestRate().toNumber()
596
- );
583
+ return getBorrowRate(newUtilization, curve) * slotAdjustmentFactor + this.getFixedHostInterestRate().toNumber();
597
584
  }
598
585
 
599
586
  calcSimulatedSupplyAPR(
@@ -604,7 +591,7 @@ export class KaminoReserve {
604
591
  outflowAmount?: Decimal
605
592
  ) {
606
593
  const newUtilization = this.calcSimulatedUtilizationRatio(amount, action, slot, referralFeeBps, outflowAmount);
607
- const simulatedBorrowAPR = this.calcSimulatedBorrowRate(amount, action, slot, referralFeeBps, outflowAmount);
594
+ const simulatedBorrowAPR = this.calcSimulatedBorrowAPR(amount, action, slot, referralFeeBps, outflowAmount);
608
595
  const protocolTakeRatePct = 1 - this.state.config.protocolTakeRatePct / 100;
609
596
 
610
597
  return newUtilization * simulatedBorrowAPR * protocolTakeRatePct;
@@ -107,6 +107,7 @@ export async function getRepayWithCollSwapInputs<QuoteResponse>({
107
107
  inputAmountLamports: withdrawableCollLamports,
108
108
  inputMint: collTokenMint,
109
109
  outputMint: debtTokenMint,
110
+ amountDebtAtaBalance: new Decimal(0), // only used for kTokens
110
111
  };
111
112
 
112
113
  // Build the repay & withdraw collateral tx to get the number of accounts
@@ -143,6 +144,7 @@ export async function getRepayWithCollSwapInputs<QuoteResponse>({
143
144
  inputAmountLamports: collSwapInLamports,
144
145
  inputMint: collTokenMint,
145
146
  outputMint: debtTokenMint,
147
+ amountDebtAtaBalance: new Decimal(0), // only used for kTokens
146
148
  },
147
149
  initialInputs: {
148
150
  debtRepayAmountLamports: repayAmountLamports,
@@ -1,6 +1,15 @@
1
1
  import { PublicKey } from '@solana/web3.js';
2
2
  import Decimal from 'decimal.js';
3
- import { Kamino, StrategyWithAddress, TokenAmounts } from '@kamino-finance/kliquidity-sdk';
3
+ import { collToLamportsDecimal, Kamino, StrategyWithAddress, TokenAmounts } from '@kamino-finance/kliquidity-sdk';
4
+ import { KaminoMarket, KaminoObligation, KaminoReserve } from '../classes';
5
+ import { getExpectedTokenBalanceAfterBorrow } from './utils';
6
+ import {
7
+ AdjustLeverageCalcsResult,
8
+ DepositLeverageCalcsResult,
9
+ PriceAinBProvider,
10
+ WithdrawLeverageCalcsResult,
11
+ } from './types';
12
+ import { fuzzyEqual } from '../utils';
4
13
 
5
14
  export const toJson = (object: any): string => {
6
15
  return JSON.stringify(object, null, 2);
@@ -126,9 +135,13 @@ export async function calculateMultiplyEffects(
126
135
  isClosingPosition =
127
136
  (withdrawModeEstimatedDepositTokenWithdrawn.gte(new Decimal(deposited)) ||
128
137
  withdrawModeEstimatedBorrowTokenWithdrawn.gte(new Decimal(borrowed)) ||
129
- fuzzyEq(withdrawModeEstimatedDepositTokenWithdrawn, new Decimal(deposited), closingPositionDiffTolerance) ||
130
- fuzzyEq(withdrawModeEstimatedBorrowTokenWithdrawn, new Decimal(borrowed), closingPositionDiffTolerance)) &&
131
- !fuzzyEq(withdrawModeEstimatedDepositTokenWithdrawn, new Decimal(0), closingPositionDiffTolerance);
138
+ fuzzyEqual(
139
+ withdrawModeEstimatedDepositTokenWithdrawn,
140
+ new Decimal(deposited),
141
+ closingPositionDiffTolerance
142
+ ) ||
143
+ fuzzyEqual(withdrawModeEstimatedBorrowTokenWithdrawn, new Decimal(borrowed), closingPositionDiffTolerance)) &&
144
+ !fuzzyEqual(withdrawModeEstimatedDepositTokenWithdrawn, new Decimal(0), closingPositionDiffTolerance);
132
145
 
133
146
  totalDeposited = isClosingPosition ? new Decimal(0) : deposited.sub(withdrawModeEstimatedDepositTokenWithdrawn);
134
147
  totalBorrowed = isClosingPosition ? new Decimal(0) : borrowed.sub(withdrawModeEstimatedBorrowTokenWithdrawn);
@@ -270,10 +283,6 @@ export function calcWithdrawAmounts(params: WithdrawParams): WithdrawResult {
270
283
  };
271
284
  }
272
285
 
273
- export const fuzzyEq = (a: Decimal.Value, b: Decimal.Value, epsilon = 0.0001) => {
274
- return new Decimal(a).sub(b).abs().lte(epsilon);
275
- };
276
-
277
286
  interface UseEstimateAdjustAmountsProps {
278
287
  targetLeverage: Decimal;
279
288
  debtTokenMint: PublicKey;
@@ -463,3 +472,301 @@ export async function simulateMintKToken(
463
472
 
464
473
  return [requiredA, requiredB, actualMint];
465
474
  }
475
+
476
+ export const depositLeverageCalcs = (props: {
477
+ depositAmount: Decimal;
478
+ depositTokenIsCollToken: boolean;
479
+ depositTokenIsSol: boolean;
480
+ priceDebtToColl: Decimal;
481
+ targetLeverage: Decimal;
482
+ slippagePct: Decimal;
483
+ flashLoanFee: Decimal;
484
+ }): DepositLeverageCalcsResult => {
485
+ // Initialize local variables from the props object
486
+ const {
487
+ depositAmount,
488
+ depositTokenIsCollToken,
489
+ depositTokenIsSol,
490
+ priceDebtToColl,
491
+ targetLeverage,
492
+ slippagePct,
493
+ flashLoanFee,
494
+ } = props;
495
+ const slippage = slippagePct.div('100');
496
+
497
+ const initDepositInSol = depositTokenIsSol ? depositAmount : new Decimal(0);
498
+
499
+ // Core logic
500
+ if (depositTokenIsCollToken) {
501
+ const y = targetLeverage.mul(priceDebtToColl);
502
+ const x = flashLoanFee.add('1').mul(slippage.add('1')).div(priceDebtToColl);
503
+ const finalColl = depositAmount.mul(x).div(x.sub(targetLeverage.sub('1').div(y)));
504
+ const debt = finalColl.sub(depositAmount).mul(x);
505
+ const flashBorrowColl = finalColl.sub(depositAmount).mul(flashLoanFee.add('1'));
506
+
507
+ return {
508
+ flashBorrowInCollToken: flashBorrowColl,
509
+ initDepositInSol,
510
+ debtTokenToBorrow: debt,
511
+ collTokenToDeposit: finalColl,
512
+ swapDebtTokenIn: debt,
513
+ swapCollTokenExpectedOut: finalColl.sub(depositAmount),
514
+ flashBorrowInDebtTokenKtokenOnly: new Decimal(0),
515
+ singleSidedDepositKtokenOnly: new Decimal(0),
516
+ requiredCollateralKtokenOnly: new Decimal(0),
517
+ };
518
+ } else {
519
+ const y = targetLeverage.mul(priceDebtToColl);
520
+ const x = flashLoanFee.add('1').mul(slippage.add('1')).div(priceDebtToColl);
521
+ const finalColl = depositAmount.div(x.sub(targetLeverage.sub('1').div(y)));
522
+ const flashBorrowColl = finalColl.mul(flashLoanFee.add('1'));
523
+ const debt = targetLeverage.sub('1').mul(finalColl).div(y);
524
+
525
+ return {
526
+ flashBorrowInCollToken: flashBorrowColl,
527
+ initDepositInSol,
528
+ debtTokenToBorrow: debt,
529
+ collTokenToDeposit: finalColl,
530
+ swapDebtTokenIn: debt.add(depositAmount),
531
+ swapCollTokenExpectedOut: finalColl,
532
+ flashBorrowInDebtTokenKtokenOnly: new Decimal(0),
533
+ singleSidedDepositKtokenOnly: new Decimal(0),
534
+ requiredCollateralKtokenOnly: new Decimal(0),
535
+ };
536
+ }
537
+ };
538
+
539
+ export const depositLeverageKtokenCalcs = async (props: {
540
+ kamino: Kamino;
541
+ strategy: StrategyWithAddress;
542
+ debtTokenMint: PublicKey;
543
+ depositAmount: Decimal;
544
+ depositTokenIsCollToken: boolean;
545
+ depositTokenIsSol: boolean;
546
+ priceDebtToColl: Decimal;
547
+ targetLeverage: Decimal;
548
+ slippagePct: Decimal;
549
+ flashLoanFee: Decimal;
550
+ priceAinB: PriceAinBProvider;
551
+ strategyHoldings?: TokenAmounts;
552
+ }): Promise<DepositLeverageCalcsResult> => {
553
+ const {
554
+ kamino,
555
+ strategy,
556
+ debtTokenMint,
557
+ depositAmount,
558
+ depositTokenIsCollToken,
559
+ depositTokenIsSol,
560
+ priceDebtToColl,
561
+ targetLeverage,
562
+ slippagePct,
563
+ flashLoanFee,
564
+ priceAinB,
565
+ strategyHoldings,
566
+ } = props;
567
+ const initDepositInSol = depositTokenIsSol ? depositAmount : new Decimal(0);
568
+ const slippage = slippagePct.div('100');
569
+
570
+ let flashBorrowInDebtToken: Decimal;
571
+ let collTokenToDeposit: Decimal;
572
+ let debtTokenToBorrow: Decimal;
573
+
574
+ if (depositTokenIsCollToken) {
575
+ const x = slippage.add('1').div(priceDebtToColl);
576
+ const y = flashLoanFee.add('1').mul(priceDebtToColl);
577
+ const z = targetLeverage.mul(y).div(targetLeverage.sub(1));
578
+ flashBorrowInDebtToken = depositAmount.div(z.minus(new Decimal(1).div(x)));
579
+ collTokenToDeposit = depositAmount.add(flashBorrowInDebtToken.div(x));
580
+ debtTokenToBorrow = flashBorrowInDebtToken.mul(new Decimal(1).add(flashLoanFee));
581
+
582
+ return {
583
+ flashBorrowInCollToken: new Decimal(0),
584
+ initDepositInSol,
585
+ collTokenToDeposit,
586
+ debtTokenToBorrow,
587
+ swapDebtTokenIn: new Decimal(0),
588
+ swapCollTokenExpectedOut: new Decimal(0),
589
+ flashBorrowInDebtTokenKtokenOnly: flashBorrowInDebtToken,
590
+ requiredCollateralKtokenOnly: collTokenToDeposit.sub(depositAmount), // Assuming netValue is requiredCollateral, adjust as needed
591
+ singleSidedDepositKtokenOnly: flashBorrowInDebtToken,
592
+ };
593
+ } else {
594
+ const y = targetLeverage.mul(priceDebtToColl);
595
+ // although we will only swap ~half of the debt token, we account for the slippage on the entire amount as we are working backwards from the minimum collateral and do not know the exact swap proportion in advance
596
+ // This also allows for some variation in the pool ratios between calculation + submitting the tx
597
+ const x = flashLoanFee.add('1').mul(slippage.add('1')).div(priceDebtToColl);
598
+ // Calculate the amount of collateral tokens we will deposit in order to achieve the desired leverage after swapping a portion of the debt token and flash loan fees
599
+ const finalColl = depositAmount.div(x.sub(targetLeverage.sub('1').div(y)));
600
+ // Calculate how many A and B tokens we will need to actually mint the desired amount of ktoken collateral
601
+ // The actual amount of ktokens received may be less than the finalColl due to smart proportional contract logic
602
+ // So we use the actualColl as the amount we will deposit
603
+ const [estimatedA, estimatedB, actualColl] = await simulateMintKToken(
604
+ kamino!,
605
+ strategy!,
606
+ finalColl,
607
+ strategyHoldings
608
+ );
609
+ const pxAinB = await priceAinB(strategy!.strategy.tokenAMint, strategy!.strategy.tokenBMint);
610
+ const isTokenADeposit = strategy.strategy.tokenAMint.equals(debtTokenMint);
611
+ // Calculate the amount we need to flash borrow by combining value of A and B into the debt token
612
+ const singleSidedDepositAmount = isTokenADeposit
613
+ ? estimatedA.add(estimatedB.div(pxAinB))
614
+ : estimatedB.add(estimatedA.mul(pxAinB));
615
+
616
+ // Add slippage to the entire amount, add flash loan fee to part we will flash borrow
617
+ flashBorrowInDebtToken = singleSidedDepositAmount
618
+ .div(new Decimal('1').sub(slippage))
619
+ .sub(depositAmount)
620
+ .div(new Decimal('1').sub(flashLoanFee));
621
+ // Deposit the min ktoken amount we calculated at the beginning
622
+ // Any slippage will be left in the user's wallet as ktokens
623
+ collTokenToDeposit = actualColl;
624
+ debtTokenToBorrow = flashBorrowInDebtToken.div(new Decimal('1').sub(flashLoanFee));
625
+ // Add slippage to ensure we try to swap/deposit as much as possible after flash loan fees
626
+ const singleSidedDeposit = singleSidedDepositAmount.div(new Decimal('1').sub(slippage));
627
+
628
+ return {
629
+ flashBorrowInCollToken: new Decimal(0),
630
+ initDepositInSol,
631
+ collTokenToDeposit,
632
+ debtTokenToBorrow,
633
+ swapDebtTokenIn: new Decimal(0),
634
+ swapCollTokenExpectedOut: new Decimal(0),
635
+ flashBorrowInDebtTokenKtokenOnly: flashBorrowInDebtToken,
636
+ singleSidedDepositKtokenOnly: singleSidedDeposit,
637
+ requiredCollateralKtokenOnly: collTokenToDeposit, // Assuming collTokenToDeposit is requiredCollateral, adjust as needed
638
+ };
639
+ }
640
+ };
641
+
642
+ export function withdrawLeverageCalcs(
643
+ market: KaminoMarket,
644
+ collReserve: KaminoReserve,
645
+ debtReserve: KaminoReserve,
646
+ priceCollToDebt: Decimal,
647
+ withdrawAmount: Decimal,
648
+ deposited: Decimal,
649
+ borrowed: Decimal,
650
+ currentSlot: number,
651
+ isClosingPosition: boolean,
652
+ selectedTokenIsCollToken: boolean,
653
+ selectedTokenMint: PublicKey,
654
+ obligation: KaminoObligation,
655
+ flashLoanFee: Decimal,
656
+ slippagePct: Decimal
657
+ ): WithdrawLeverageCalcsResult {
658
+ // 1. Calculate coll_amount and debt_amount to repay such that we maintain leverage and we withdraw to
659
+ // the wallet `amountInDepositTokenToWithdrawToWallet` amount of collateral token
660
+ // We need to withdraw withdrawAmountInDepositToken coll tokens
661
+ // and repay repayAmountInBorrowToken debt tokens
662
+ const { adjustDepositPosition: withdrawAmountCalculated, adjustBorrowPosition: initialRepayAmount } =
663
+ isClosingPosition
664
+ ? { adjustDepositPosition: deposited, adjustBorrowPosition: borrowed }
665
+ : calcWithdrawAmounts({
666
+ collTokenMint: collReserve.getLiquidityMint(),
667
+ priceCollToDebt: new Decimal(priceCollToDebt),
668
+ currentDepositPosition: deposited,
669
+ currentBorrowPosition: borrowed,
670
+ withdrawAmount: new Decimal(withdrawAmount),
671
+ selectedTokenMint: selectedTokenMint,
672
+ });
673
+
674
+ // Add slippage for the accrued interest rate amount
675
+ const irSlippageBpsForDebt = obligation!
676
+ .estimateObligationInterestRate(market, debtReserve!, obligation?.state.borrows[0]!, currentSlot)
677
+ .toDecimalPlaces(debtReserve?.state.liquidity.mintDecimals.toNumber()!, Decimal.ROUND_CEIL);
678
+ // add 0.1 to irSlippageBpsForDebt because we don't want to estimate slightly less than SC and end up not reapying enough
679
+ const repayAmount = initialRepayAmount
680
+ .mul(irSlippageBpsForDebt.add('0.1').div('10_000').add('1'))
681
+ .toDecimalPlaces(debtReserve?.state.liquidity.mintDecimals.toNumber()!, Decimal.ROUND_CEIL);
682
+
683
+ // 6. Get swap ixns
684
+ // 5. Get swap estimations to understand how much we need to borrow from borrow reserve
685
+ // prevent withdrawing more then deposited if we close position
686
+ const depositTokenWithdrawAmount = !isClosingPosition
687
+ ? withdrawAmountCalculated.mul(new Decimal(1).plus(flashLoanFee))
688
+ : withdrawAmountCalculated;
689
+
690
+ // We are swapping debt token
691
+ // When withdrawing coll, it means we just need to swap enough to pay for the flash borrow
692
+ const swapAmountIfWithdrawingColl = repayAmount
693
+ .mul(new Decimal(1).plus(flashLoanFee))
694
+ .mul(new Decimal(1).plus(slippagePct.div(100)))
695
+ .div(priceCollToDebt);
696
+
697
+ // When withdrawing debt, it means we need to swap just the collateral we are withdrwaing
698
+ // enough to cover the debt we are repaying, leaving the remaining in the wallet
699
+ const swapAmountIfWithdrawingDebt = withdrawAmountCalculated;
700
+
701
+ const collTokenSwapIn = selectedTokenIsCollToken ? swapAmountIfWithdrawingColl : swapAmountIfWithdrawingDebt;
702
+ const debtTokenExpectedSwapOut = collTokenSwapIn.mul(priceCollToDebt).div(new Decimal(1).add(slippagePct.div(100)));
703
+
704
+ return {
705
+ withdrawAmount: withdrawAmountCalculated,
706
+ repayAmount,
707
+ collTokenSwapIn,
708
+ debtTokenExpectedSwapOut,
709
+ depositTokenWithdrawAmount,
710
+ };
711
+ }
712
+
713
+ export async function adjustDepositLeverageCalcs(
714
+ market: KaminoMarket,
715
+ owner: PublicKey,
716
+ debtReserve: KaminoReserve,
717
+ adjustDepositPosition: Decimal,
718
+ adjustBorrowPosition: Decimal,
719
+ priceDebtToColl: Decimal,
720
+ flashLoanFee: Decimal,
721
+ slippagePct: Decimal,
722
+ collIsKtoken: boolean
723
+ ): Promise<AdjustLeverageCalcsResult> {
724
+ // used if coll is Ktoken and we borrow debt token instead
725
+ const amountToFlashBorrowDebt = adjustDepositPosition
726
+ .div(priceDebtToColl)
727
+ .mul(new Decimal(new Decimal(1).add(slippagePct.div(100))))
728
+ .toDecimalPlaces(debtReserve!.stats.decimals, Decimal.ROUND_UP);
729
+
730
+ const borrowAmount = adjustDepositPosition
731
+ .mul(new Decimal(1).plus(flashLoanFee))
732
+ .mul(new Decimal(new Decimal(1).add(slippagePct.div(100))))
733
+ .div(priceDebtToColl);
734
+
735
+ const expectedDebtTokenAtaBalance = await getExpectedTokenBalanceAfterBorrow(
736
+ market.getConnection(),
737
+ debtReserve.getLiquidityMint(),
738
+ owner,
739
+ collToLamportsDecimal(!collIsKtoken ? borrowAmount : amountToFlashBorrowDebt, debtReserve!.stats.decimals).floor(),
740
+ debtReserve!.state.liquidity.mintDecimals.toNumber()
741
+ );
742
+
743
+ return {
744
+ adjustDepositPosition,
745
+ adjustBorrowPosition,
746
+ amountToFlashBorrowDebt,
747
+ borrowAmount,
748
+ expectedDebtTokenAtaBalance,
749
+ withdrawAmountWithSlippageAndFlashLoanFee: new Decimal(0),
750
+ };
751
+ }
752
+
753
+ export function adjustWithdrawLeverageCalcs(
754
+ adjustDepositPosition: Decimal,
755
+ adjustBorrowPosition: Decimal,
756
+ flashLoanFee: Decimal,
757
+ slippagePct: Decimal
758
+ ): AdjustLeverageCalcsResult {
759
+ // used if coll is Ktoken and we borrow debt token instead
760
+ const withdrawAmountWithSlippageAndFlashLoanFee = Decimal.abs(adjustDepositPosition)
761
+ .mul(new Decimal(1).plus(flashLoanFee))
762
+ .mul(new Decimal(1).add(slippagePct.div(100)));
763
+
764
+ return {
765
+ adjustDepositPosition,
766
+ adjustBorrowPosition,
767
+ amountToFlashBorrowDebt: new Decimal(0),
768
+ borrowAmount: new Decimal(0),
769
+ expectedDebtTokenAtaBalance: new Decimal(0),
770
+ withdrawAmountWithSlippageAndFlashLoanFee,
771
+ };
772
+ }
@@ -2,3 +2,4 @@ export * from './calcs';
2
2
  export * from './instructions';
3
3
  export * from './operations';
4
4
  export * from './utils';
5
+ export * from './types';