@suilend/sdk 1.1.89 → 1.1.91

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.
package/lib/initialize.js CHANGED
@@ -281,7 +281,7 @@ const initializeObligations = (suiClient, suilendClient, refreshedRawReserves, r
281
281
  ...obligationOwnerCaps.map((ownerCap) => ownerCap.obligationId),
282
282
  ].map((obligationId) => client_1.SuilendClient.getObligation(obligationId, suilendClient.lendingMarket.$typeArgs, suiClient))))
283
283
  .map((rawObligation) => simulate.refreshObligation(rawObligation, refreshedRawReserves))
284
- .map((refreshedObligation) => (0, parsers_1.parseObligation)(refreshedObligation, reserveMap))
284
+ .map((refreshedObligation) => (0, parsers_1.parseObligation)(refreshedObligation, reserveMap, strategyOwnerCaps.some((soc) => soc.obligationId === refreshedObligation.id)))
285
285
  .sort((a, b) => +b.netValueUsd.minus(a.netValueUsd));
286
286
  // Divide into strategy and non-strategy
287
287
  const strategyObligations = obligations.filter((o) => strategyOwnerCaps.some((soc) => soc.obligationId === o.id));
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@suilend/sdk","version":"1.1.89","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.38"},"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.91","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"}}
@@ -5,7 +5,7 @@ export type ParsedObligation = ReturnType<typeof parseObligation>;
5
5
  export type ParsedPosition = ParsedObligation["deposits"][0] | ParsedObligation["borrows"][0];
6
6
  export declare const parseObligation: (obligation: Obligation<string>, parsedReserveMap: {
7
7
  [coinType: string]: ParsedReserve;
8
- }) => {
8
+ }, isStrategy?: boolean) => {
9
9
  id: string;
10
10
  depositedAmountUsd: BigNumber;
11
11
  borrowedAmountUsd: BigNumber;
@@ -7,7 +7,7 @@ exports.parseObligation = void 0;
7
7
  const utils_1 = require("@mysten/sui/utils");
8
8
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
9
  const constants_1 = require("../lib/constants");
10
- const parseObligation = (obligation, parsedReserveMap) => {
10
+ const parseObligation = (obligation, parsedReserveMap, isStrategy) => {
11
11
  let totalDepositedAmountUsd = new bignumber_js_1.default(0);
12
12
  let totalBorrowedAmountUsd = new bignumber_js_1.default(0);
13
13
  let weightedBorrowsUsd = new bignumber_js_1.default(0);
@@ -82,8 +82,9 @@ const parseObligation = (obligation, parsedReserveMap) => {
82
82
  };
83
83
  });
84
84
  const netValueUsd = totalDepositedAmountUsd.minus(totalBorrowedAmountUsd);
85
- // Cap `minPriceBorrowLimitUsd` at $30m (account borrow limit)
86
- minPriceBorrowLimitUsd = bignumber_js_1.default.min(minPriceBorrowLimitUsd, 30 * 10 ** 6);
85
+ // Cap `minPriceBorrowLimitUsd` at $30m (account borrow limit) -- NON-STRATEGY OBLIGATIONS ONLY
86
+ if (!isStrategy)
87
+ minPriceBorrowLimitUsd = bignumber_js_1.default.min(minPriceBorrowLimitUsd, 30 * 10 ** 6);
87
88
  const weightedConservativeBorrowUtilizationPercent = minPriceBorrowLimitUsd.eq(0)
88
89
  ? new bignumber_js_1.default(0)
89
90
  : maxPriceWeightedBorrowsUsd.div(minPriceBorrowLimitUsd).times(100);
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"));
@@ -307,12 +308,12 @@ lstMap, strategyType, deposits, _borrowedAmount) => {
307
308
  .minus(borrowedAmount.times(borrowReserve.price)),
308
309
  weightedBorrowsUsd: new bignumber_js_1.default(borrowedAmount.times(borrowReserve.price)).times(borrowReserve.config.borrowWeightBps.div(10000)),
309
310
  maxPriceWeightedBorrowsUsd: new bignumber_js_1.default(borrowedAmount.times(borrowReserve.maxPrice)).times(borrowReserve.config.borrowWeightBps.div(10000)),
310
- minPriceBorrowLimitUsd: bignumber_js_1.default.min(deposits.reduce((acc, deposit) => {
311
+ minPriceBorrowLimitUsd: deposits.reduce((acc, deposit) => {
311
312
  const depositReserve = reserveMap[deposit.coinType];
312
313
  return acc.plus(deposit.depositedAmount
313
314
  .times(depositReserve.minPrice)
314
315
  .times(depositReserve.config.openLtvPct / 100));
315
- }, new bignumber_js_1.default(0)), 30 * 10 ** 6),
316
+ }, new bignumber_js_1.default(0)), // Not capped to $30m
316
317
  unhealthyBorrowValueUsd: deposits.reduce((acc, deposit) => {
317
318
  const depositReserve = reserveMap[deposit.coinType];
318
319
  return acc.plus(deposit.depositedAmount
@@ -765,7 +766,7 @@ lstMap, strategyType, obligation, exposure) => {
765
766
  ? 0.99 // 1% buffer
766
767
  : 0.999);
767
768
  const liquidationThresholdUsd = _obligation.unhealthyBorrowValueUsd;
768
- if (weightedBorrowsUsd.lt(borrowLimitUsd))
769
+ if (weightedBorrowsUsd.lte(borrowLimitUsd))
769
770
  return new bignumber_js_1.default(100);
770
771
  return new bignumber_js_1.default(100).minus(new bignumber_js_1.default(weightedBorrowsUsd.minus(borrowLimitUsd))
771
772
  .div(liquidationThresholdUsd.minus(borrowLimitUsd))
@@ -1003,7 +1004,7 @@ transaction) => __awaiter(void 0, void 0, void 0, function* () {
1003
1004
  });
1004
1005
  if (!routers)
1005
1006
  throw new Error("No swap quote found");
1006
- const slippagePercent = 0.1;
1007
+ const slippagePercent = 1;
1007
1008
  let stepBaseCoin;
1008
1009
  try {
1009
1010
  stepBaseCoin = yield cetusSdk.fixableRouterSwapV3({
@@ -1584,7 +1585,7 @@ transaction, dryRunTransaction) => __awaiter(void 0, void 0, void 0, function* (
1584
1585
  });
1585
1586
  if (!routers)
1586
1587
  throw new Error("No swap quote found");
1587
- const slippagePercent = 0.1;
1588
+ const slippagePercent = 1;
1588
1589
  let stepBorrowCoin;
1589
1590
  try {
1590
1591
  stepBorrowCoin = yield cetusSdk.fixableRouterSwapV3({
@@ -2023,7 +2024,7 @@ const strategyDepositAdjustWithdrawTx = (
2023
2024
  reserveMap,
2024
2025
  // Strategy
2025
2026
  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;
2027
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
2027
2028
  const strategyInfo = strategyOwnerCap_1.STRATEGY_TYPE_INFO_MAP[strategyType];
2028
2029
  const lst = strategyInfo.depositLstCoinType !== undefined
2029
2030
  ? lstMap[strategyInfo.depositLstCoinType]
@@ -2119,13 +2120,22 @@ lstMap, strategyType, suiClient, suilendClient, cetusSdk, cetusPartnerId, _addre
2119
2120
  borrowedAmount = newBorrowedAmount;
2120
2121
  transaction = newTransaction;
2121
2122
  // 4) Repay flash loan + fee
2122
- // 4.1) Withdraw additional + fee
2123
- let withdrawnAmount = depositedAmount
2124
- .times(1 + flashLoanObj.feePercent / 100)
2123
+ const receiptDebts = transaction.moveCall({
2124
+ target: `${mmt_1.MMT_CONTRACT_PACKAGE_ID}::trade::flash_receipt_debts`,
2125
+ typeArguments: [],
2126
+ arguments: [receipt],
2127
+ });
2128
+ const dryRunResults = yield dryRunTransaction(transaction);
2129
+ const flashLoanRepayAmount = new bignumber_js_1.default(bcs_1.bcs
2130
+ .u64()
2131
+ .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])))
2132
+ .div(10 ** depositReserve.token.decimals)
2125
2133
  .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))
2134
+ // 4.1) Withdraw additional + fee
2135
+ let withdrawnAmount = flashLoanRepayAmount;
2136
+ if (depositReserve.coinType === ((_o = depositReserves.lst) === null || _o === void 0 ? void 0 : _o.coinType))
2127
2137
  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)
2138
+ .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
2139
  .decimalPlaces(depositReserve.token.decimals, bignumber_js_1.default.ROUND_UP);
2130
2140
  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
2141
  coinType: depositReserve.coinType,
@@ -2133,10 +2143,14 @@ lstMap, strategyType, suiClient, suilendClient, cetusSdk, cetusPartnerId, _addre
2133
2143
  }, transaction, dryRunTransaction, true);
2134
2144
  if (!withdrawnCoin)
2135
2145
  throw new Error("Withdrawn coin not found");
2146
+ // 4.2) Update state
2147
+ deposits = newDeposits2;
2148
+ borrowedAmount = newBorrowedAmount2;
2149
+ transaction = newTransaction2;
2150
+ // 4.3) Repay flash loan
2136
2151
  let flashLoanRepayCoin = withdrawnCoin;
2137
- if (depositReserve.coinType === ((_l = depositReserves.lst) === null || _l === void 0 ? void 0 : _l.coinType))
2152
+ if (depositReserve.coinType === ((_q = depositReserves.lst) === null || _q === void 0 ? void 0 : _q.coinType))
2138
2153
  flashLoanRepayCoin = lst.client.redeem(transaction, flashLoanRepayCoin);
2139
- // 4.2) Repay flash loan
2140
2154
  const flashLoanRepayBalance = transaction.moveCall({
2141
2155
  target: "0x2::coin::into_balance",
2142
2156
  typeArguments: [
@@ -2160,10 +2174,6 @@ lstMap, strategyType, suiClient, suilendClient, cetusSdk, cetusPartnerId, _addre
2160
2174
  else {
2161
2175
  throw new Error("Invalid flash loan provider");
2162
2176
  }
2163
- // 4.3) Update state
2164
- deposits = newDeposits2;
2165
- borrowedAmount = newBorrowedAmount2;
2166
- transaction = newTransaction2;
2167
2177
  return { deposits, borrowedAmount, transaction };
2168
2178
  });
2169
2179
  exports.strategyDepositAdjustWithdrawTx = strategyDepositAdjustWithdrawTx;