@suilend/sdk 12.4.0-next.gd4b87be → 12.4.1-next.g1272ef5
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.d.ts +8 -4
- package/strategies.js +43 -2
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@suilend/sdk","version":"12.4.
|
|
1
|
+
{"name":"@suilend/sdk","version":"12.4.1-next.g1272ef5","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/proCompatible":"./lib/proCompatible.js","./lib/pyth":"./lib/pyth.js","./lib/strategyOwnerCap":"./lib/strategyOwnerCap.js","./lib/transactions":"./lib/transactions.js","./lib/types":"./lib/types.js","./margin":"./margin/index.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/feedId":"./utils/feedId.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","./margin/margin/admin_cap":"./margin/margin/admin_cap.js","./margin/margin/market":"./margin/margin/market.js","./margin/margin/permissions":"./margin/margin/permissions.js","./margin/margin/position":"./margin/margin/position.js","./margin/margin/router":"./margin/margin/router.js","./margin/margin/version":"./margin/margin/version.js","./margin/utils":"./margin/utils/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","./margin/margin/deps/std/type_name":"./margin/margin/deps/std/type_name.js","./margin/margin/deps/sui/vec_set":"./margin/margin/deps/sui/vec_set.js","./margin/margin/deps/suilend/lending_market":"./margin/margin/deps/suilend/lending_market.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/price-identifier/structs":"./_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.js"},"types":"./index.d.ts","scripts":{"build":"rm -rf ./dist && tsc && node ./fix-esm-imports.js","typecheck":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","test":"vitest run","lint:ci":"yarn run typecheck","prettier":"prettier --write src/ tests/","release":"yarn run build && node ./release.js && cd ./dist && npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/fireflyprotocol/lending-mono.git","directory":"ts/sdks/sdk"},"dependencies":{"@bluefin-exchange/bluefin7k-aggregator-sdk":"7.6.3","@cetusprotocol/aggregator-sdk":"1.7.3","@flowx-finance/sdk":"2.1.0","@pythnetwork/hermes-client":"3.1.0","@pythnetwork/pyth-sui-js":"4.0.0","@suilend/springsui-sdk":"4.1.0","bignumber.js":"11.1.5","bn.js":"5.2.5","crypto-js":"4.2.0","lodash":"4.18.1","p-limit":"7.3.3","uuid":"14.0.2"},"devDependencies":{"@mysten/bcs":"2.1.1","@mysten/sui":"2.29.0","@suilend/sui-core":"2.1.0","@tsconfig/recommended":"1.0.13","@types/bn.js":"5.2.0","@types/lodash":"4.17.25","@types/node":"26.5.1","fast-check":"4.10.2","prettier":"3.9.9","ts-node":"10.9.2","typescript":"6.0.3","vite":"8.3.0","vitest":"5.0.1"},"peerDependencies":{"@mysten/bcs":"^2.1.1","@mysten/sui":">=2.22.1 <3","@suilend/sui-core":"^2.0.1"},"type":"module"}
|
package/strategies.d.ts
CHANGED
|
@@ -331,10 +331,13 @@ transaction: Transaction) => Promise<{
|
|
|
331
331
|
borrowedAmount: BigNumber;
|
|
332
332
|
transaction: Transaction;
|
|
333
333
|
}>;
|
|
334
|
-
|
|
335
|
-
transaction: Transaction, dryRunTransaction: (transaction: Transaction
|
|
336
|
-
|
|
337
|
-
|
|
334
|
+
declare const strategyUnloopToExposureStepwiseTx: (reserveMap: Record<string, ParsedReserve>, lstMap: StrategyLstMap, strategyType: StrategyType, suiGrpcClient: SuiGrpcClient, suilendClient: SuilendClient, cetusSdk: CetusSdk, cetusPartnerId: string, _address: string, strategyOwnerCapId: TransactionObjectInput, obligationId: string, _deposits: StrategyDeposit[], _borrowedAmount: BigNumber, _targetBorrowedAmount: BigNumber | undefined, _targetExposure: BigNumber | undefined, // Must be defined if _targetBorrowedAmount is undefined
|
|
335
|
+
transaction: Transaction, dryRunTransaction: (transaction: Transaction) => Promise<unknown>) => Promise<{
|
|
336
|
+
deposits: StrategyDeposit[];
|
|
337
|
+
borrowedAmount: BigNumber;
|
|
338
|
+
transaction: Transaction;
|
|
339
|
+
}>;
|
|
340
|
+
export declare const strategyUnloopToExposureTx: (...args: Parameters<typeof strategyUnloopToExposureStepwiseTx>) => Promise<{
|
|
338
341
|
deposits: StrategyDeposit[];
|
|
339
342
|
borrowedAmount: BigNumber;
|
|
340
343
|
transaction: Transaction;
|
|
@@ -389,3 +392,4 @@ export declare const strategyAdjustTx: (reserveMap: Record<string, ParsedReserve
|
|
|
389
392
|
borrowedAmount: BigNumber;
|
|
390
393
|
transaction: Transaction;
|
|
391
394
|
}>;
|
|
395
|
+
export {};
|
package/strategies.js
CHANGED
|
@@ -1264,12 +1264,15 @@ transaction) => {
|
|
|
1264
1264
|
}
|
|
1265
1265
|
return { deposits, borrowedAmount, transaction };
|
|
1266
1266
|
};
|
|
1267
|
-
|
|
1267
|
+
const strategyUnloopToExposureStepwiseTx = async (
|
|
1268
1268
|
// AppContext
|
|
1269
1269
|
reserveMap,
|
|
1270
1270
|
// Strategy
|
|
1271
1271
|
lstMap, strategyType, suiGrpcClient, suilendClient, cetusSdk, cetusPartnerId, _address, strategyOwnerCapId, obligationId, _deposits, _borrowedAmount, _targetBorrowedAmount, _targetExposure, // Must be defined if _targetBorrowedAmount is undefined
|
|
1272
|
-
transaction,
|
|
1272
|
+
transaction,
|
|
1273
|
+
// Returns `unknown` so no step can size itself from a simulation result, which the
|
|
1274
|
+
// single-simulation pass in `strategyUnloopToExposureTx` depends on.
|
|
1275
|
+
dryRunTransaction) => {
|
|
1273
1276
|
const strategyInfo = STRATEGY_TYPE_INFO_MAP[strategyType];
|
|
1274
1277
|
const lst = strategyInfo.depositLstCoinType !== undefined
|
|
1275
1278
|
? lstMap[strategyInfo.depositLstCoinType]
|
|
@@ -2017,6 +2020,44 @@ transaction, dryRunTransaction) => {
|
|
|
2017
2020
|
}
|
|
2018
2021
|
return { deposits, borrowedAmount, transaction };
|
|
2019
2022
|
};
|
|
2023
|
+
// A step's dry run feeds nothing back into sizing — it only decides whether the step is
|
|
2024
|
+
// kept — so when every step would land, a pass that keeps them all builds the exact
|
|
2025
|
+
// transaction the stepwise pass would, and one simulation of it stands in for them all.
|
|
2026
|
+
export const strategyUnloopToExposureTx = async (...args) => {
|
|
2027
|
+
const transaction = args[14];
|
|
2028
|
+
const dryRunTransaction = args[15];
|
|
2029
|
+
const unloop = (dryRun) => {
|
|
2030
|
+
const stepArgs = [...args];
|
|
2031
|
+
stepArgs[14] = Transaction.from(transaction);
|
|
2032
|
+
stepArgs[15] = dryRun;
|
|
2033
|
+
return strategyUnloopToExposureStepwiseTx(...stepArgs);
|
|
2034
|
+
};
|
|
2035
|
+
let gatedSteps = 0;
|
|
2036
|
+
let assembled;
|
|
2037
|
+
try {
|
|
2038
|
+
assembled = await unloop(async () => {
|
|
2039
|
+
gatedSteps++;
|
|
2040
|
+
});
|
|
2041
|
+
}
|
|
2042
|
+
catch (err) {
|
|
2043
|
+
if (gatedSteps === 0)
|
|
2044
|
+
throw err;
|
|
2045
|
+
console.error(err);
|
|
2046
|
+
}
|
|
2047
|
+
if (gatedSteps === 0)
|
|
2048
|
+
return assembled;
|
|
2049
|
+
if (assembled !== undefined) {
|
|
2050
|
+
try {
|
|
2051
|
+
await dryRunTransaction(assembled.transaction);
|
|
2052
|
+
return assembled;
|
|
2053
|
+
}
|
|
2054
|
+
catch (err) {
|
|
2055
|
+
console.error(err);
|
|
2056
|
+
}
|
|
2057
|
+
}
|
|
2058
|
+
console.log(`[unloopStrategyToExposure] assembled unwind cannot land, rebuilding with a dry run per step`);
|
|
2059
|
+
return unloop(dryRunTransaction);
|
|
2060
|
+
};
|
|
2020
2061
|
export const strategyDepositTx = async (
|
|
2021
2062
|
// AppContext
|
|
2022
2063
|
reserveMap,
|