@suilend/sdk 1.1.90 → 1.1.92

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.
@@ -51,10 +51,10 @@ export declare const getDedupedPerDayRewards: (filteredRewards: RewardSummary[])
51
51
  export declare const getRewardsAprPercent: (side: Side, filteredRewards: RewardSummary[]) => BigNumber;
52
52
  export declare const getStakingYieldAprPercent: (side: Side, coinType: string, lstStatsMap: Record<string, {
53
53
  aprPercent: BigNumber;
54
- }>) => BigNumber | undefined;
54
+ }>, elixirSdeUsdAprPercent: BigNumber | undefined) => BigNumber | undefined;
55
55
  export declare const getTotalAprPercent: (side: Side, aprPercent: BigNumber, filteredRewards: RewardSummary[], stakingYieldAprPercent?: BigNumber) => BigNumber;
56
56
  export declare const getNetAprPercent: (obligation: ParsedObligation, rewardMap: RewardMap, lstStatsMap: Record<string, {
57
57
  aprPercent: BigNumber;
58
- }>, noShares?: boolean) => BigNumber;
58
+ }>, elixirSdeUsdAprPercent: BigNumber | undefined, noShares?: boolean) => BigNumber;
59
59
  export declare const getRewardsMap: (obligation: ParsedObligation | undefined, rewardMap: RewardMap, coinMetadataMap: Record<string, CoinMetadata>) => RewardsMap;
60
60
  export {};
@@ -145,17 +145,24 @@ const getDedupedPerDayRewards = (filteredRewards) => {
145
145
  exports.getDedupedPerDayRewards = getDedupedPerDayRewards;
146
146
  const getRewardsAprPercent = (side, filteredRewards) => (0, exports.getDedupedAprRewards)(filteredRewards).reduce((acc, reward) => acc.plus(reward.stats.aprPercent.times(side === types_1.Side.DEPOSIT ? 1 : -1)), new bignumber_js_1.default(0));
147
147
  exports.getRewardsAprPercent = getRewardsAprPercent;
148
- const getStakingYieldAprPercent = (side, coinType, lstStatsMap) => { var _a; return (side === types_1.Side.DEPOSIT ? (_a = lstStatsMap[coinType]) === null || _a === void 0 ? void 0 : _a.aprPercent : undefined); };
148
+ const getStakingYieldAprPercent = (side, coinType, lstStatsMap, elixirSdeUsdAprPercent) => {
149
+ var _a;
150
+ return side === types_1.Side.DEPOSIT
151
+ ? coinType === sui_fe_1.NORMALIZED_sdeUSD_COINTYPE
152
+ ? elixirSdeUsdAprPercent
153
+ : (_a = lstStatsMap[coinType]) === null || _a === void 0 ? void 0 : _a.aprPercent
154
+ : undefined;
155
+ };
149
156
  exports.getStakingYieldAprPercent = getStakingYieldAprPercent;
150
157
  const getTotalAprPercent = (side, aprPercent, filteredRewards, stakingYieldAprPercent) => aprPercent
151
158
  .plus((0, exports.getRewardsAprPercent)(side, filteredRewards))
152
159
  .plus(stakingYieldAprPercent !== null && stakingYieldAprPercent !== void 0 ? stakingYieldAprPercent : 0);
153
160
  exports.getTotalAprPercent = getTotalAprPercent;
154
- const getNetAprPercent = (obligation, rewardMap, lstStatsMap, noShares) => {
161
+ const getNetAprPercent = (obligation, rewardMap, lstStatsMap, elixirSdeUsdAprPercent, noShares) => {
155
162
  const weightedDepositedAmountUsd_aprPercent = obligation.deposits.reduce((acc, deposit) => {
156
163
  var _a;
157
164
  const weightedDepositedAmountUsd_baseAprPercent = deposit.reserve.depositAprPercent.times(deposit.depositedAmountUsd);
158
- const weightedDepositedAmountUsd_stakingYieldAprPercent = new bignumber_js_1.default((_a = (0, exports.getStakingYieldAprPercent)(types_1.Side.DEPOSIT, deposit.reserve.coinType, lstStatsMap)) !== null && _a !== void 0 ? _a : 0).times(deposit.depositedAmountUsd);
165
+ const weightedDepositedAmountUsd_stakingYieldAprPercent = new bignumber_js_1.default((_a = (0, exports.getStakingYieldAprPercent)(types_1.Side.DEPOSIT, deposit.reserve.coinType, lstStatsMap, elixirSdeUsdAprPercent)) !== null && _a !== void 0 ? _a : 0).times(deposit.depositedAmountUsd);
159
166
  const weightedDepositedAmountUsd_rewardsAprPercent = (0, exports.getRewardsAprPercent)(types_1.Side.DEPOSIT, (0, exports.getFilteredRewards)(rewardMap[deposit.reserve.coinType].deposit)).times(!noShares
160
167
  ? getDepositShareUsd(deposit.reserve, new bignumber_js_1.default(deposit.userRewardManager.share.toString()))
161
168
  : deposit.depositedAmountUsd);
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@suilend/sdk","version":"1.1.90","private":false,"description":"A TypeScript SDK for interacting with the Suilend program","author":"Suilend","license":"MIT","main":"./index.js","exports":{".":"./index.js","./client":"./client.js","./mmt":"./mmt.js","./strategies":"./strategies.js","./api/events":"./api/events.js","./api":"./api/index.js","./lib/constants":"./lib/constants.js","./lib":"./lib/index.js","./lib/initialize":"./lib/initialize.js","./lib/liquidityMining":"./lib/liquidityMining.js","./lib/strategyOwnerCap":"./lib/strategyOwnerCap.js","./lib/transactions":"./lib/transactions.js","./lib/types":"./lib/types.js","./parsers/apiReserveAssetDataEvent":"./parsers/apiReserveAssetDataEvent.js","./parsers":"./parsers/index.js","./parsers/lendingMarket":"./parsers/lendingMarket.js","./parsers/obligation":"./parsers/obligation.js","./parsers/rateLimiter":"./parsers/rateLimiter.js","./parsers/reserve":"./parsers/reserve.js","./swap":"./swap/index.js","./swap/quote":"./swap/quote.js","./swap/transaction":"./swap/transaction.js","./utils/events":"./utils/events.js","./utils":"./utils/index.js","./utils/obligation":"./utils/obligation.js","./utils/simulate":"./utils/simulate.js","./_generated/_framework/reified":"./_generated/_framework/reified.js","./_generated/_framework/util":"./_generated/_framework/util.js","./_generated/_framework/vector":"./_generated/_framework/vector.js","./_generated/suilend":"./_generated/suilend/index.js","./_generated/suilend/cell/structs":"./_generated/suilend/cell/structs.js","./_generated/suilend/decimal/structs":"./_generated/suilend/decimal/structs.js","./_generated/suilend/lending-market/functions":"./_generated/suilend/lending-market/functions.js","./_generated/suilend/lending-market/structs":"./_generated/suilend/lending-market/structs.js","./_generated/suilend/lending-market-registry/functions":"./_generated/suilend/lending-market-registry/functions.js","./_generated/suilend/liquidity-mining/structs":"./_generated/suilend/liquidity-mining/structs.js","./_generated/suilend/obligation/structs":"./_generated/suilend/obligation/structs.js","./_generated/suilend/rate-limiter/functions":"./_generated/suilend/rate-limiter/functions.js","./_generated/suilend/rate-limiter/structs":"./_generated/suilend/rate-limiter/structs.js","./_generated/suilend/reserve/structs":"./_generated/suilend/reserve/structs.js","./_generated/suilend/reserve-config/functions":"./_generated/suilend/reserve-config/functions.js","./_generated/suilend/reserve-config/structs":"./_generated/suilend/reserve-config/structs.js","./_generated/_dependencies/source/0x1":"./_generated/_dependencies/source/0x1/index.js","./_generated/_dependencies/source/0x2":"./_generated/_dependencies/source/0x2/index.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/index.js","./_generated/_dependencies/source/0x1/ascii/structs":"./_generated/_dependencies/source/0x1/ascii/structs.js","./_generated/_dependencies/source/0x1/option/structs":"./_generated/_dependencies/source/0x1/option/structs.js","./_generated/_dependencies/source/0x1/type-name/structs":"./_generated/_dependencies/source/0x1/type-name/structs.js","./_generated/_dependencies/source/0x2/bag/structs":"./_generated/_dependencies/source/0x2/bag/structs.js","./_generated/_dependencies/source/0x2/balance/structs":"./_generated/_dependencies/source/0x2/balance/structs.js","./_generated/_dependencies/source/0x2/object/structs":"./_generated/_dependencies/source/0x2/object/structs.js","./_generated/_dependencies/source/0x2/object-table/structs":"./_generated/_dependencies/source/0x2/object-table/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs.js"},"types":"./index.js","scripts":{"build":"rm -rf ./dist && bun tsc","eslint":"eslint --fix \"./src/**/*.ts\"","prettier":"prettier --write \"./src/**/*\"","lint":"bun eslint && bun prettier && bun tsc --noEmit","release":"bun run build && bun ts-node ./release.ts && cd ./dist && npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/suilend/suilend-fe-public.git"},"bugs":{"url":"https://github.com/suilend/suilend-fe-public/issues"},"dependencies":{"@7kprotocol/sdk-ts":"^3.4.1","@cetusprotocol/aggregator-sdk":"^1.2.1","@flowx-finance/sdk":"^1.13.5","@pythnetwork/pyth-sui-js":"^2.2.0","@suilend/springsui-sdk":"^1.0.27","aftermath-ts-sdk":"^1.3.22","bignumber.js":"^9.1.2","bn.js":"^5.2.2","crypto-js":"^4.2.0","lodash":"^4.17.21","p-limit":"3.1.0","uuid":"^11.0.3"},"devDependencies":{"@types/bn.js":"^5.2.0","@types/lodash":"^4.17.20","ts-node":"^10.9.2"},"peerDependencies":{"@mysten/bcs":"1.8.1","@mysten/sui":"1.42.0","@suilend/sui-fe":"^0.3.40"},"overrides":{"chalk":"5.3.0","strip-ansi":"7.1.0","color-convert":"2.0.1","color-name":"1.1.4","is-core-module":"2.13.1","error-ex":"1.3.2","has-ansi":"5.0.1"}}
1
+ {"name":"@suilend/sdk","version":"1.1.92","private":false,"description":"A TypeScript SDK for interacting with the Suilend program","author":"Suilend","license":"MIT","main":"./index.js","exports":{".":"./index.js","./client":"./client.js","./mmt":"./mmt.js","./strategies":"./strategies.js","./api/events":"./api/events.js","./api":"./api/index.js","./lib/constants":"./lib/constants.js","./lib":"./lib/index.js","./lib/initialize":"./lib/initialize.js","./lib/liquidityMining":"./lib/liquidityMining.js","./lib/strategyOwnerCap":"./lib/strategyOwnerCap.js","./lib/transactions":"./lib/transactions.js","./lib/types":"./lib/types.js","./parsers/apiReserveAssetDataEvent":"./parsers/apiReserveAssetDataEvent.js","./parsers":"./parsers/index.js","./parsers/lendingMarket":"./parsers/lendingMarket.js","./parsers/obligation":"./parsers/obligation.js","./parsers/rateLimiter":"./parsers/rateLimiter.js","./parsers/reserve":"./parsers/reserve.js","./swap":"./swap/index.js","./swap/quote":"./swap/quote.js","./swap/transaction":"./swap/transaction.js","./utils/events":"./utils/events.js","./utils":"./utils/index.js","./utils/obligation":"./utils/obligation.js","./utils/simulate":"./utils/simulate.js","./_generated/_framework/reified":"./_generated/_framework/reified.js","./_generated/_framework/util":"./_generated/_framework/util.js","./_generated/_framework/vector":"./_generated/_framework/vector.js","./_generated/suilend":"./_generated/suilend/index.js","./_generated/suilend/cell/structs":"./_generated/suilend/cell/structs.js","./_generated/suilend/decimal/structs":"./_generated/suilend/decimal/structs.js","./_generated/suilend/lending-market/functions":"./_generated/suilend/lending-market/functions.js","./_generated/suilend/lending-market/structs":"./_generated/suilend/lending-market/structs.js","./_generated/suilend/lending-market-registry/functions":"./_generated/suilend/lending-market-registry/functions.js","./_generated/suilend/liquidity-mining/structs":"./_generated/suilend/liquidity-mining/structs.js","./_generated/suilend/obligation/structs":"./_generated/suilend/obligation/structs.js","./_generated/suilend/rate-limiter/functions":"./_generated/suilend/rate-limiter/functions.js","./_generated/suilend/rate-limiter/structs":"./_generated/suilend/rate-limiter/structs.js","./_generated/suilend/reserve/structs":"./_generated/suilend/reserve/structs.js","./_generated/suilend/reserve-config/functions":"./_generated/suilend/reserve-config/functions.js","./_generated/suilend/reserve-config/structs":"./_generated/suilend/reserve-config/structs.js","./_generated/_dependencies/source/0x1":"./_generated/_dependencies/source/0x1/index.js","./_generated/_dependencies/source/0x2":"./_generated/_dependencies/source/0x2/index.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/index.js","./_generated/_dependencies/source/0x1/ascii/structs":"./_generated/_dependencies/source/0x1/ascii/structs.js","./_generated/_dependencies/source/0x1/option/structs":"./_generated/_dependencies/source/0x1/option/structs.js","./_generated/_dependencies/source/0x1/type-name/structs":"./_generated/_dependencies/source/0x1/type-name/structs.js","./_generated/_dependencies/source/0x2/bag/structs":"./_generated/_dependencies/source/0x2/bag/structs.js","./_generated/_dependencies/source/0x2/balance/structs":"./_generated/_dependencies/source/0x2/balance/structs.js","./_generated/_dependencies/source/0x2/object/structs":"./_generated/_dependencies/source/0x2/object/structs.js","./_generated/_dependencies/source/0x2/object-table/structs":"./_generated/_dependencies/source/0x2/object-table/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/i64/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-feed/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.js","./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-info/structs.js"},"types":"./index.js","scripts":{"build":"rm -rf ./dist && bun tsc","eslint":"eslint --fix \"./src/**/*.ts\"","prettier":"prettier --write \"./src/**/*\"","lint":"bun eslint && bun prettier && bun tsc --noEmit","release":"bun run build && bun ts-node ./release.ts && cd ./dist && npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/suilend/suilend-fe-public.git"},"bugs":{"url":"https://github.com/suilend/suilend-fe-public/issues"},"dependencies":{"@7kprotocol/sdk-ts":"^3.5.0","@cetusprotocol/aggregator-sdk":"^1.4.2","@flowx-finance/sdk":"^1.14.0","@pythnetwork/pyth-sui-js":"^2.2.0","@suilend/springsui-sdk":"^1.0.27","aftermath-ts-sdk":"^1.3.24","bignumber.js":"^9.1.2","bn.js":"^5.2.2","crypto-js":"^4.2.0","lodash":"^4.17.21","p-limit":"3.1.0","uuid":"^11.0.3"},"devDependencies":{"@types/bn.js":"^5.2.0","@types/lodash":"^4.17.20","ts-node":"^10.9.2"},"peerDependencies":{"@mysten/bcs":"1.8.1","@mysten/sui":"1.42.0","@suilend/sui-fe":"^0.3.41"},"overrides":{"chalk":"5.3.0","strip-ansi":"7.1.0","color-convert":"2.0.1","color-name":"1.1.4","is-core-module":"2.13.1","error-ex":"1.3.2","has-ansi":"5.0.1"}}
package/strategies.js CHANGED
@@ -13,6 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.strategyAdjustTx = exports.strategyDepositAdjustWithdrawTx = exports.strategyMaxWithdrawTx = exports.strategyWithdrawTx = exports.strategyDepositAndLoopToExposureTx = exports.strategyDepositTx = exports.strategyUnloopToExposureTx = exports.strategyLoopToExposureTx = exports.getStrategyLiquidationPrice = exports.getStrategyHealthPercent = exports.getStrategyAprPercent = exports.getStrategyUnclaimedRewardsAmount = exports.fetchStrategyGlobalTvlAmountUsdMap = exports.strategySimulateDepositAndLoopToExposure = exports.strategySimulateDeposit = exports.strategySimulateLoopToExposure = exports.getStrategyStepMaxWithdrawnAmount = exports.getStrategyStepMaxBorrowedAmount = exports.getStrategyExposure = exports.getStrategyTvlAmount = exports.getStrategyBorrowedAmount = exports.getStrategyDepositedAmount = exports.getStrategySimulatedObligation = exports.getStrategyDefaultCurrencyReserve = exports.getStrategyBorrowReserve = exports.getStrategyDepositReserves = exports.STRATEGY_TYPE_EXPOSURE_MAP = exports.getStrategyLstRedeemFee = exports.getStrategyLstMintFee = exports.fetchStrategyLstMap = exports.getStrategySuiReserve = exports.hasStrategyPosition = exports.addOrInsertStrategyDeposit = exports.getReserveSafeDepositLimit = exports.STRATEGY_TYPE_FLASH_LOAN_OBJ_MAP = exports.StrategyFlashLoanProvider = exports.LST_DECIMALS = exports.STRATEGY_E = void 0;
16
+ const bcs_1 = require("@mysten/bcs");
16
17
  const transactions_1 = require("@mysten/sui/transactions");
17
18
  const utils_1 = require("@mysten/sui/utils");
18
19
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
@@ -733,7 +734,8 @@ lstMap, strategyType, obligation, exposure) => {
733
734
  depositedAmount: new bignumber_js_1.default(1), // Any number will do
734
735
  }, exposure).obligation;
735
736
  }
736
- return (0, lib_1.getNetAprPercent)(_obligation, rewardMap, lstStatsMap, !obligation ||
737
+ return (0, lib_1.getNetAprPercent)(_obligation, rewardMap, lstStatsMap, undefined, // elixirSdeUsdAprPercent
738
+ !obligation ||
737
739
  !(0, exports.hasStrategyPosition)(obligation) ||
738
740
  obligation.deposits.some((d) => !d.userRewardManager));
739
741
  };
@@ -765,7 +767,7 @@ lstMap, strategyType, obligation, exposure) => {
765
767
  ? 0.99 // 1% buffer
766
768
  : 0.999);
767
769
  const liquidationThresholdUsd = _obligation.unhealthyBorrowValueUsd;
768
- if (weightedBorrowsUsd.lt(borrowLimitUsd))
770
+ if (weightedBorrowsUsd.lte(borrowLimitUsd))
769
771
  return new bignumber_js_1.default(100);
770
772
  return new bignumber_js_1.default(100).minus(new bignumber_js_1.default(weightedBorrowsUsd.minus(borrowLimitUsd))
771
773
  .div(liquidationThresholdUsd.minus(borrowLimitUsd))
@@ -1003,7 +1005,7 @@ transaction) => __awaiter(void 0, void 0, void 0, function* () {
1003
1005
  });
1004
1006
  if (!routers)
1005
1007
  throw new Error("No swap quote found");
1006
- const slippagePercent = 0.1;
1008
+ const slippagePercent = 1;
1007
1009
  let stepBaseCoin;
1008
1010
  try {
1009
1011
  stepBaseCoin = yield cetusSdk.fixableRouterSwapV3({
@@ -1100,14 +1102,8 @@ transaction, dryRunTransaction) => __awaiter(void 0, void 0, void 0, function* (
1100
1102
  var _a, _b, _c, _d, _e, _f, _g;
1101
1103
  if (depositReserves.lst === undefined)
1102
1104
  throw new Error("LST reserve not found");
1103
- const borrowedAmountUsd = borrowedAmount.times(borrowReserve.price);
1104
- const fullRepaymentAmount = (borrowedAmountUsd.lt(0.02)
1105
- ? new bignumber_js_1.default(0.02).div(borrowReserve.price) // $0.02 in borrow coinType (still well over E borrows, e.g. E SUI, or E wBTC)
1106
- : borrowedAmountUsd.lt(1)
1107
- ? borrowedAmount.times(1.1) // 10% buffer
1108
- : borrowedAmountUsd.lt(10)
1109
- ? borrowedAmount.times(1.01) // 1% buffer
1110
- : borrowedAmount.times(1.001)) // 0.1% buffer
1105
+ const fullRepaymentAmount = new bignumber_js_1.default(0.25)
1106
+ .div(borrowReserve.price) // $0.25 in borrow coinType (more than E borrows, e.g. E SUI, or E wBTC)
1111
1107
  .decimalPlaces(borrowReserve.token.decimals, bignumber_js_1.default.ROUND_DOWN);
1112
1108
  console.log(`[unloopStrategyToExposure.fullyRepayBorrowsUsingLst] |`, JSON.stringify({
1113
1109
  borrowedAmount: borrowedAmount.toFixed(20),
@@ -1242,15 +1238,7 @@ transaction, dryRunTransaction) => __awaiter(void 0, void 0, void 0, function* (
1242
1238
  var _a, _b;
1243
1239
  if (depositReserves.base === undefined)
1244
1240
  throw new Error("Base reserve not found");
1245
- const borrowedAmountUsd = borrowedAmount.times(borrowReserve.price);
1246
- const fullRepaymentAmount = (borrowedAmountUsd.lt(0.02)
1247
- ? new bignumber_js_1.default(0.02).div(borrowReserve.price) // $0.02 in borrow coinType (still well over E borrows, e.g. E SUI, or E wBTC)
1248
- : borrowedAmountUsd.lt(1)
1249
- ? borrowedAmount.times(1.1) // 10% buffer
1250
- : borrowedAmountUsd.lt(10)
1251
- ? borrowedAmount.times(1.01) // 1% buffer
1252
- : borrowedAmount.times(1.001)) // 0.1% buffer
1253
- .decimalPlaces(borrowReserve.token.decimals, bignumber_js_1.default.ROUND_DOWN);
1241
+ const fullRepaymentAmount = new bignumber_js_1.default(0.25).div(borrowReserve.price); // $0.25 in borrow coinType (more than E borrows, e.g. E SUI, or E wBTC)
1254
1242
  console.log(`[unloopStrategyToExposure.fullyRepayBorrowsUsingBase] |`, JSON.stringify({
1255
1243
  borrowedAmount: borrowedAmount.toFixed(20),
1256
1244
  fullRepaymentAmount: fullRepaymentAmount.toFixed(20),
@@ -1584,7 +1572,7 @@ transaction, dryRunTransaction) => __awaiter(void 0, void 0, void 0, function* (
1584
1572
  });
1585
1573
  if (!routers)
1586
1574
  throw new Error("No swap quote found");
1587
- const slippagePercent = 0.1;
1575
+ const slippagePercent = 1;
1588
1576
  let stepBorrowCoin;
1589
1577
  try {
1590
1578
  stepBorrowCoin = yield cetusSdk.fixableRouterSwapV3({
@@ -2023,7 +2011,7 @@ const strategyDepositAdjustWithdrawTx = (
2023
2011
  reserveMap,
2024
2012
  // Strategy
2025
2013
  lstMap, strategyType, suiClient, suilendClient, cetusSdk, cetusPartnerId, _address, strategyOwnerCapId, obligationId, _deposits, _borrowedAmount, flashLoanBorrowedAmount, transaction, dryRunTransaction) => __awaiter(void 0, void 0, void 0, function* () {
2026
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
2014
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
2027
2015
  const strategyInfo = strategyOwnerCap_1.STRATEGY_TYPE_INFO_MAP[strategyType];
2028
2016
  const lst = strategyInfo.depositLstCoinType !== undefined
2029
2017
  ? lstMap[strategyInfo.depositLstCoinType]
@@ -2119,13 +2107,22 @@ lstMap, strategyType, suiClient, suilendClient, cetusSdk, cetusPartnerId, _addre
2119
2107
  borrowedAmount = newBorrowedAmount;
2120
2108
  transaction = newTransaction;
2121
2109
  // 4) Repay flash loan + fee
2122
- // 4.1) Withdraw additional + fee
2123
- let withdrawnAmount = depositedAmount
2124
- .times(1 + flashLoanObj.feePercent / 100)
2110
+ const receiptDebts = transaction.moveCall({
2111
+ target: `${mmt_1.MMT_CONTRACT_PACKAGE_ID}::trade::flash_receipt_debts`,
2112
+ typeArguments: [],
2113
+ arguments: [receipt],
2114
+ });
2115
+ const dryRunResults = yield dryRunTransaction(transaction);
2116
+ const flashLoanRepayAmount = new bignumber_js_1.default(bcs_1.bcs
2117
+ .u64()
2118
+ .parse(new Uint8Array((_m = (_l = (_k = (_j = dryRunResults.results) === null || _j === void 0 ? void 0 : _j.find((r, index) => index === receiptDebts.Result)) === null || _k === void 0 ? void 0 : _k.returnValues) === null || _l === void 0 ? void 0 : _l[flashLoanObj.borrowA ? 0 : 1][0]) !== null && _m !== void 0 ? _m : [0])))
2119
+ .div(10 ** depositReserve.token.decimals)
2125
2120
  .decimalPlaces(depositReserve.token.decimals, bignumber_js_1.default.ROUND_UP);
2126
- if (depositReserve.coinType === ((_j = depositReserves.lst) === null || _j === void 0 ? void 0 : _j.coinType))
2121
+ // 4.1) Withdraw additional + fee
2122
+ let withdrawnAmount = flashLoanRepayAmount;
2123
+ if (depositReserve.coinType === ((_o = depositReserves.lst) === null || _o === void 0 ? void 0 : _o.coinType))
2127
2124
  withdrawnAmount = withdrawnAmount
2128
- .div(1 - +((_k = lst === null || lst === void 0 ? void 0 : lst.redeemFeePercent) !== null && _k !== void 0 ? _k : 0) / 100) // Potential rounding issue (max 1 MIST)
2125
+ .div(1 - +((_p = lst === null || lst === void 0 ? void 0 : lst.redeemFeePercent) !== null && _p !== void 0 ? _p : 0) / 100) // Potential rounding issue (max 1 MIST)
2129
2126
  .decimalPlaces(depositReserve.token.decimals, bignumber_js_1.default.ROUND_UP);
2130
2127
  const { deposits: newDeposits2, borrowedAmount: newBorrowedAmount2, transaction: newTransaction2, withdrawnCoin, } = yield (0, exports.strategyWithdrawTx)(reserveMap, lstMap, strategyType, suiClient, suilendClient, cetusSdk, cetusPartnerId, _address, strategyOwnerCapId, obligationId, deposits, borrowedAmount, {
2131
2128
  coinType: depositReserve.coinType,
@@ -2133,10 +2130,14 @@ lstMap, strategyType, suiClient, suilendClient, cetusSdk, cetusPartnerId, _addre
2133
2130
  }, transaction, dryRunTransaction, true);
2134
2131
  if (!withdrawnCoin)
2135
2132
  throw new Error("Withdrawn coin not found");
2133
+ // 4.2) Update state
2134
+ deposits = newDeposits2;
2135
+ borrowedAmount = newBorrowedAmount2;
2136
+ transaction = newTransaction2;
2137
+ // 4.3) Repay flash loan
2136
2138
  let flashLoanRepayCoin = withdrawnCoin;
2137
- if (depositReserve.coinType === ((_l = depositReserves.lst) === null || _l === void 0 ? void 0 : _l.coinType))
2139
+ if (depositReserve.coinType === ((_q = depositReserves.lst) === null || _q === void 0 ? void 0 : _q.coinType))
2138
2140
  flashLoanRepayCoin = lst.client.redeem(transaction, flashLoanRepayCoin);
2139
- // 4.2) Repay flash loan
2140
2141
  const flashLoanRepayBalance = transaction.moveCall({
2141
2142
  target: "0x2::coin::into_balance",
2142
2143
  typeArguments: [
@@ -2160,10 +2161,6 @@ lstMap, strategyType, suiClient, suilendClient, cetusSdk, cetusPartnerId, _addre
2160
2161
  else {
2161
2162
  throw new Error("Invalid flash loan provider");
2162
2163
  }
2163
- // 4.3) Update state
2164
- deposits = newDeposits2;
2165
- borrowedAmount = newBorrowedAmount2;
2166
- transaction = newTransaction2;
2167
2164
  return { deposits, borrowedAmount, transaction };
2168
2165
  });
2169
2166
  exports.strategyDepositAdjustWithdrawTx = strategyDepositAdjustWithdrawTx;