@scallop-io/sui-scallop-sdk 0.46.38 → 0.46.40
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/dist/constants/flashloan.d.ts +2 -0
- package/dist/constants/index.d.ts +1 -0
- package/dist/index.js +90 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +89 -8
- package/dist/index.mjs.map +1 -1
- package/dist/models/scallopQuery.d.ts +4 -0
- package/dist/queries/coreQuery.d.ts +7 -0
- package/package.json +1 -1
- package/src/constants/flashloan.ts +18 -0
- package/src/constants/index.ts +1 -0
- package/src/models/scallopQuery.ts +11 -1
- package/src/queries/coreQuery.ts +107 -15
- package/src/queries/vescaQuery.ts +7 -9
package/dist/index.js
CHANGED
|
@@ -33,6 +33,7 @@ __export(src_exports, {
|
|
|
33
33
|
ADDRESSES_ID: () => ADDRESSES_ID,
|
|
34
34
|
API_BASE_URL: () => API_BASE_URL,
|
|
35
35
|
BORROW_FEE_PROTOCOL_ID: () => BORROW_FEE_PROTOCOL_ID,
|
|
36
|
+
FlashLoanFeeObjectMap: () => FlashLoanFeeObjectMap,
|
|
36
37
|
IS_VE_SCA_TEST: () => IS_VE_SCA_TEST,
|
|
37
38
|
MAX_LOCK_DURATION: () => MAX_LOCK_DURATION,
|
|
38
39
|
MAX_LOCK_ROUNDS: () => MAX_LOCK_ROUNDS,
|
|
@@ -267,6 +268,22 @@ var MAX_LOCK_DURATION = MAX_LOCK_ROUNDS * UNLOCK_ROUND_DURATION;
|
|
|
267
268
|
var MIN_INITIAL_LOCK_AMOUNT = 1e10;
|
|
268
269
|
var MIN_TOP_UP_AMOUNT = 1e9;
|
|
269
270
|
|
|
271
|
+
// src/constants/flashloan.ts
|
|
272
|
+
var FlashLoanFeeObjectMap = {
|
|
273
|
+
vsui: "0x0069cddee7a5c0b1d34beb5ef0620f978096525f1830b055f38b110f40d73fbb",
|
|
274
|
+
btc: "0x2078490aa37d8fb42b511e5c95e217cb957d141267e16980bc802d76b42719f7",
|
|
275
|
+
sui: "0x27614284a8f0a699ffd35aae8f2572c937ec76771cb21b0d7930ec4491a76ed4",
|
|
276
|
+
usdt: "0x5b61983a19b5159ca348d291e4b595f42db70ccda32852a2ed85528aa65171e4",
|
|
277
|
+
apt: "0x9d5898edcd1e4abcb044273242293a9d036f6a977bf3fe57ab71f5a87c505ee6",
|
|
278
|
+
afsui: "0xac87fde83d434554ec300c1334c9a622aa5b59e82a04334dc99e1cc1f75d4eae",
|
|
279
|
+
hasui: "0xb9f505d532de1d6c9f3a8522a2d16f2958b75c0ed939d4f80b96f584a2a8ed5e",
|
|
280
|
+
usdc: "0xd241d6a7e44ac11a6689370ed9a98eec389b98b8a6695c61fddede9fa7567b90",
|
|
281
|
+
eth: "0xd252acb058e77877810c1290564e290a8f9fcab5bc9aca2884ede8a38810cf34",
|
|
282
|
+
sca: "0xe04e46471754b6f48d81c549ecfec09de02733715a63bec02364c6ac7c4dd2dc",
|
|
283
|
+
cetus: "0xe65a73d11c31b2d323ad2b9f6b4bb0a3c0df9c1b212eef66c854941186a5ddc7",
|
|
284
|
+
sol: "0xe84bdb35b790fc7bdd1645122ac6ac0fc904531d6772c9e25904fece322c5f34"
|
|
285
|
+
};
|
|
286
|
+
|
|
270
287
|
// src/models/scallop.ts
|
|
271
288
|
var import_sui_kit13 = require("@scallop-io/sui-kit");
|
|
272
289
|
|
|
@@ -2107,7 +2124,7 @@ var getMarketPools = async (query, poolCoinNames, indexer = false) => {
|
|
|
2107
2124
|
}
|
|
2108
2125
|
return marketPools;
|
|
2109
2126
|
}
|
|
2110
|
-
Promise.allSettled(
|
|
2127
|
+
await Promise.allSettled(
|
|
2111
2128
|
poolCoinNames.map(async (poolCoinName) => {
|
|
2112
2129
|
const marketPool = await getMarketPool(
|
|
2113
2130
|
query,
|
|
@@ -2124,11 +2141,6 @@ var getMarketPools = async (query, poolCoinNames, indexer = false) => {
|
|
|
2124
2141
|
return marketPools;
|
|
2125
2142
|
};
|
|
2126
2143
|
var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
|
|
2127
|
-
const marketId = query.address.get("core.market");
|
|
2128
|
-
marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
|
|
2129
|
-
showContent: true
|
|
2130
|
-
})).data;
|
|
2131
|
-
coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
|
|
2132
2144
|
let marketPool;
|
|
2133
2145
|
let balanceSheet;
|
|
2134
2146
|
let borrowIndex;
|
|
@@ -2142,6 +2154,11 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2142
2154
|
);
|
|
2143
2155
|
return marketPoolIndexer;
|
|
2144
2156
|
}
|
|
2157
|
+
const marketId = query.address.get("core.market");
|
|
2158
|
+
marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
|
|
2159
|
+
showContent: true
|
|
2160
|
+
})).data;
|
|
2161
|
+
coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
|
|
2145
2162
|
if (marketObject) {
|
|
2146
2163
|
if (marketObject.content && "fields" in marketObject.content) {
|
|
2147
2164
|
const fields = marketObject.content.fields;
|
|
@@ -2468,7 +2485,7 @@ var getMarketCoinAmounts = async (query, marketCoinNames, ownerAddress) => {
|
|
|
2468
2485
|
);
|
|
2469
2486
|
const owner = ownerAddress || query.suiKit.currentAddress();
|
|
2470
2487
|
const marketCoins2 = {};
|
|
2471
|
-
Promise.allSettled(
|
|
2488
|
+
await Promise.allSettled(
|
|
2472
2489
|
marketCoinNames.map(async (marketCoinName) => {
|
|
2473
2490
|
const marketCoin = await getMarketCoinAmount(
|
|
2474
2491
|
query,
|
|
@@ -2489,6 +2506,64 @@ var getMarketCoinAmount = async (query, marketCoinName, ownerAddress) => {
|
|
|
2489
2506
|
});
|
|
2490
2507
|
return (0, import_bignumber2.default)(amount).toNumber();
|
|
2491
2508
|
};
|
|
2509
|
+
var getFlashLoanFees = async (query, assetNames) => {
|
|
2510
|
+
const FEE_RATE = 1e4;
|
|
2511
|
+
const missingAssets = [];
|
|
2512
|
+
const assetTypeMap = assetNames.reduce(
|
|
2513
|
+
(prev, curr) => {
|
|
2514
|
+
const assetType = query.utils.parseCoinType(curr).slice(2);
|
|
2515
|
+
prev[assetType] = curr;
|
|
2516
|
+
return prev;
|
|
2517
|
+
},
|
|
2518
|
+
{}
|
|
2519
|
+
);
|
|
2520
|
+
const objIds = assetNames.map((assetName) => {
|
|
2521
|
+
if (!FlashLoanFeeObjectMap[assetName]) {
|
|
2522
|
+
missingAssets.push(assetName);
|
|
2523
|
+
return null;
|
|
2524
|
+
} else {
|
|
2525
|
+
return FlashLoanFeeObjectMap[assetName];
|
|
2526
|
+
}
|
|
2527
|
+
}).filter((t) => !!t);
|
|
2528
|
+
const flashloanFeeObjects = await query.cache.queryGetObjects(objIds, {
|
|
2529
|
+
showContent: true
|
|
2530
|
+
});
|
|
2531
|
+
if (missingAssets.length > 0) {
|
|
2532
|
+
const marketObjectId = query.address.get("core.market");
|
|
2533
|
+
const marketObjectRes = await query.cache.queryGetObject(marketObjectId, {
|
|
2534
|
+
showContent: true
|
|
2535
|
+
});
|
|
2536
|
+
if (marketObjectRes.data?.content?.dataType !== "moveObject")
|
|
2537
|
+
throw new Error("Failed to get market object");
|
|
2538
|
+
const vault = marketObjectRes.data.content.fields.vault;
|
|
2539
|
+
const flashloanFeesTableId = vault.fields.flash_loan_fees.fields.table.fields.id.id;
|
|
2540
|
+
const balanceSheetDynamicFields = await query.cache.queryGetDynamicFields({
|
|
2541
|
+
parentId: flashloanFeesTableId,
|
|
2542
|
+
limit: 50
|
|
2543
|
+
});
|
|
2544
|
+
const dynamicFieldObjectIds = balanceSheetDynamicFields.data.filter((field) => {
|
|
2545
|
+
const assetType = field.name.value.name;
|
|
2546
|
+
return !!assetTypeMap[assetType];
|
|
2547
|
+
}).map((field) => field.objectId);
|
|
2548
|
+
flashloanFeeObjects.push(
|
|
2549
|
+
...await query.cache.queryGetObjects(dynamicFieldObjectIds, {
|
|
2550
|
+
showContent: true
|
|
2551
|
+
})
|
|
2552
|
+
);
|
|
2553
|
+
}
|
|
2554
|
+
return flashloanFeeObjects.reduce(
|
|
2555
|
+
(prev, curr) => {
|
|
2556
|
+
if (curr.content?.dataType === "moveObject") {
|
|
2557
|
+
const objectFields = curr.content.fields;
|
|
2558
|
+
const assetType = curr.content.fields.name.fields.name;
|
|
2559
|
+
const feeNumerator = +objectFields.value;
|
|
2560
|
+
prev[assetTypeMap[assetType]] = feeNumerator / FEE_RATE;
|
|
2561
|
+
}
|
|
2562
|
+
return prev;
|
|
2563
|
+
},
|
|
2564
|
+
{}
|
|
2565
|
+
);
|
|
2566
|
+
};
|
|
2492
2567
|
|
|
2493
2568
|
// src/queries/spoolQuery.ts
|
|
2494
2569
|
var import_utils4 = require("@mysten/sui.js/utils");
|
|
@@ -3617,7 +3692,7 @@ var getVescaKeys = async (query, ownerAddress) => {
|
|
|
3617
3692
|
let hasNextPage = false;
|
|
3618
3693
|
let nextCursor = null;
|
|
3619
3694
|
do {
|
|
3620
|
-
const paginatedKeyObjectsResponse = await query.
|
|
3695
|
+
const paginatedKeyObjectsResponse = await query.cache.queryGetOwnedObjects({
|
|
3621
3696
|
owner,
|
|
3622
3697
|
filter: {
|
|
3623
3698
|
StructType: veScaKeyType
|
|
@@ -4415,6 +4490,12 @@ var ScallopQuery = class {
|
|
|
4415
4490
|
async getLoyaltyProgramInfos(veScaKey) {
|
|
4416
4491
|
return await getLoyaltyProgramInformations(this, veScaKey);
|
|
4417
4492
|
}
|
|
4493
|
+
/**
|
|
4494
|
+
* Get flashloan fee for specified assets
|
|
4495
|
+
*/
|
|
4496
|
+
async getFlashLoanFees(assetCoinNames = [...SUPPORT_POOLS]) {
|
|
4497
|
+
return await getFlashLoanFees(this, assetCoinNames);
|
|
4498
|
+
}
|
|
4418
4499
|
};
|
|
4419
4500
|
|
|
4420
4501
|
// src/constants/pyth.ts
|
|
@@ -6972,6 +7053,7 @@ var Scallop = class {
|
|
|
6972
7053
|
ADDRESSES_ID,
|
|
6973
7054
|
API_BASE_URL,
|
|
6974
7055
|
BORROW_FEE_PROTOCOL_ID,
|
|
7056
|
+
FlashLoanFeeObjectMap,
|
|
6975
7057
|
IS_VE_SCA_TEST,
|
|
6976
7058
|
MAX_LOCK_DURATION,
|
|
6977
7059
|
MAX_LOCK_ROUNDS,
|