@suilend/sdk 1.1.90 → 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/package.json +1 -1
- package/strategies.js +25 -15
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@suilend/sdk","version":"1.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"}}
|
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"));
|
|
@@ -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.
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
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
|
-
|
|
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 - +((
|
|
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 === ((
|
|
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;
|