@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.mjs
CHANGED
|
@@ -194,6 +194,22 @@ var MAX_LOCK_DURATION = MAX_LOCK_ROUNDS * UNLOCK_ROUND_DURATION;
|
|
|
194
194
|
var MIN_INITIAL_LOCK_AMOUNT = 1e10;
|
|
195
195
|
var MIN_TOP_UP_AMOUNT = 1e9;
|
|
196
196
|
|
|
197
|
+
// src/constants/flashloan.ts
|
|
198
|
+
var FlashLoanFeeObjectMap = {
|
|
199
|
+
vsui: "0x0069cddee7a5c0b1d34beb5ef0620f978096525f1830b055f38b110f40d73fbb",
|
|
200
|
+
btc: "0x2078490aa37d8fb42b511e5c95e217cb957d141267e16980bc802d76b42719f7",
|
|
201
|
+
sui: "0x27614284a8f0a699ffd35aae8f2572c937ec76771cb21b0d7930ec4491a76ed4",
|
|
202
|
+
usdt: "0x5b61983a19b5159ca348d291e4b595f42db70ccda32852a2ed85528aa65171e4",
|
|
203
|
+
apt: "0x9d5898edcd1e4abcb044273242293a9d036f6a977bf3fe57ab71f5a87c505ee6",
|
|
204
|
+
afsui: "0xac87fde83d434554ec300c1334c9a622aa5b59e82a04334dc99e1cc1f75d4eae",
|
|
205
|
+
hasui: "0xb9f505d532de1d6c9f3a8522a2d16f2958b75c0ed939d4f80b96f584a2a8ed5e",
|
|
206
|
+
usdc: "0xd241d6a7e44ac11a6689370ed9a98eec389b98b8a6695c61fddede9fa7567b90",
|
|
207
|
+
eth: "0xd252acb058e77877810c1290564e290a8f9fcab5bc9aca2884ede8a38810cf34",
|
|
208
|
+
sca: "0xe04e46471754b6f48d81c549ecfec09de02733715a63bec02364c6ac7c4dd2dc",
|
|
209
|
+
cetus: "0xe65a73d11c31b2d323ad2b9f6b4bb0a3c0df9c1b212eef66c854941186a5ddc7",
|
|
210
|
+
sol: "0xe84bdb35b790fc7bdd1645122ac6ac0fc904531d6772c9e25904fece322c5f34"
|
|
211
|
+
};
|
|
212
|
+
|
|
197
213
|
// src/models/scallop.ts
|
|
198
214
|
import { SuiKit as SuiKit5 } from "@scallop-io/sui-kit";
|
|
199
215
|
|
|
@@ -2034,7 +2050,7 @@ var getMarketPools = async (query, poolCoinNames, indexer = false) => {
|
|
|
2034
2050
|
}
|
|
2035
2051
|
return marketPools;
|
|
2036
2052
|
}
|
|
2037
|
-
Promise.allSettled(
|
|
2053
|
+
await Promise.allSettled(
|
|
2038
2054
|
poolCoinNames.map(async (poolCoinName) => {
|
|
2039
2055
|
const marketPool = await getMarketPool(
|
|
2040
2056
|
query,
|
|
@@ -2051,11 +2067,6 @@ var getMarketPools = async (query, poolCoinNames, indexer = false) => {
|
|
|
2051
2067
|
return marketPools;
|
|
2052
2068
|
};
|
|
2053
2069
|
var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, coinPrice) => {
|
|
2054
|
-
const marketId = query.address.get("core.market");
|
|
2055
|
-
marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
|
|
2056
|
-
showContent: true
|
|
2057
|
-
})).data;
|
|
2058
|
-
coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
|
|
2059
2070
|
let marketPool;
|
|
2060
2071
|
let balanceSheet;
|
|
2061
2072
|
let borrowIndex;
|
|
@@ -2069,6 +2080,11 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2069
2080
|
);
|
|
2070
2081
|
return marketPoolIndexer;
|
|
2071
2082
|
}
|
|
2083
|
+
const marketId = query.address.get("core.market");
|
|
2084
|
+
marketObject = marketObject || (await query.cache.queryGetObject(marketId, {
|
|
2085
|
+
showContent: true
|
|
2086
|
+
})).data;
|
|
2087
|
+
coinPrice = coinPrice || (await query.utils.getCoinPrices([poolCoinName]))?.[poolCoinName];
|
|
2072
2088
|
if (marketObject) {
|
|
2073
2089
|
if (marketObject.content && "fields" in marketObject.content) {
|
|
2074
2090
|
const fields = marketObject.content.fields;
|
|
@@ -2395,7 +2411,7 @@ var getMarketCoinAmounts = async (query, marketCoinNames, ownerAddress) => {
|
|
|
2395
2411
|
);
|
|
2396
2412
|
const owner = ownerAddress || query.suiKit.currentAddress();
|
|
2397
2413
|
const marketCoins2 = {};
|
|
2398
|
-
Promise.allSettled(
|
|
2414
|
+
await Promise.allSettled(
|
|
2399
2415
|
marketCoinNames.map(async (marketCoinName) => {
|
|
2400
2416
|
const marketCoin = await getMarketCoinAmount(
|
|
2401
2417
|
query,
|
|
@@ -2416,6 +2432,64 @@ var getMarketCoinAmount = async (query, marketCoinName, ownerAddress) => {
|
|
|
2416
2432
|
});
|
|
2417
2433
|
return BigNumber2(amount).toNumber();
|
|
2418
2434
|
};
|
|
2435
|
+
var getFlashLoanFees = async (query, assetNames) => {
|
|
2436
|
+
const FEE_RATE = 1e4;
|
|
2437
|
+
const missingAssets = [];
|
|
2438
|
+
const assetTypeMap = assetNames.reduce(
|
|
2439
|
+
(prev, curr) => {
|
|
2440
|
+
const assetType = query.utils.parseCoinType(curr).slice(2);
|
|
2441
|
+
prev[assetType] = curr;
|
|
2442
|
+
return prev;
|
|
2443
|
+
},
|
|
2444
|
+
{}
|
|
2445
|
+
);
|
|
2446
|
+
const objIds = assetNames.map((assetName) => {
|
|
2447
|
+
if (!FlashLoanFeeObjectMap[assetName]) {
|
|
2448
|
+
missingAssets.push(assetName);
|
|
2449
|
+
return null;
|
|
2450
|
+
} else {
|
|
2451
|
+
return FlashLoanFeeObjectMap[assetName];
|
|
2452
|
+
}
|
|
2453
|
+
}).filter((t) => !!t);
|
|
2454
|
+
const flashloanFeeObjects = await query.cache.queryGetObjects(objIds, {
|
|
2455
|
+
showContent: true
|
|
2456
|
+
});
|
|
2457
|
+
if (missingAssets.length > 0) {
|
|
2458
|
+
const marketObjectId = query.address.get("core.market");
|
|
2459
|
+
const marketObjectRes = await query.cache.queryGetObject(marketObjectId, {
|
|
2460
|
+
showContent: true
|
|
2461
|
+
});
|
|
2462
|
+
if (marketObjectRes.data?.content?.dataType !== "moveObject")
|
|
2463
|
+
throw new Error("Failed to get market object");
|
|
2464
|
+
const vault = marketObjectRes.data.content.fields.vault;
|
|
2465
|
+
const flashloanFeesTableId = vault.fields.flash_loan_fees.fields.table.fields.id.id;
|
|
2466
|
+
const balanceSheetDynamicFields = await query.cache.queryGetDynamicFields({
|
|
2467
|
+
parentId: flashloanFeesTableId,
|
|
2468
|
+
limit: 50
|
|
2469
|
+
});
|
|
2470
|
+
const dynamicFieldObjectIds = balanceSheetDynamicFields.data.filter((field) => {
|
|
2471
|
+
const assetType = field.name.value.name;
|
|
2472
|
+
return !!assetTypeMap[assetType];
|
|
2473
|
+
}).map((field) => field.objectId);
|
|
2474
|
+
flashloanFeeObjects.push(
|
|
2475
|
+
...await query.cache.queryGetObjects(dynamicFieldObjectIds, {
|
|
2476
|
+
showContent: true
|
|
2477
|
+
})
|
|
2478
|
+
);
|
|
2479
|
+
}
|
|
2480
|
+
return flashloanFeeObjects.reduce(
|
|
2481
|
+
(prev, curr) => {
|
|
2482
|
+
if (curr.content?.dataType === "moveObject") {
|
|
2483
|
+
const objectFields = curr.content.fields;
|
|
2484
|
+
const assetType = curr.content.fields.name.fields.name;
|
|
2485
|
+
const feeNumerator = +objectFields.value;
|
|
2486
|
+
prev[assetTypeMap[assetType]] = feeNumerator / FEE_RATE;
|
|
2487
|
+
}
|
|
2488
|
+
return prev;
|
|
2489
|
+
},
|
|
2490
|
+
{}
|
|
2491
|
+
);
|
|
2492
|
+
};
|
|
2419
2493
|
|
|
2420
2494
|
// src/queries/spoolQuery.ts
|
|
2421
2495
|
import { normalizeStructTag as normalizeStructTag4 } from "@mysten/sui.js/utils";
|
|
@@ -3544,7 +3618,7 @@ var getVescaKeys = async (query, ownerAddress) => {
|
|
|
3544
3618
|
let hasNextPage = false;
|
|
3545
3619
|
let nextCursor = null;
|
|
3546
3620
|
do {
|
|
3547
|
-
const paginatedKeyObjectsResponse = await query.
|
|
3621
|
+
const paginatedKeyObjectsResponse = await query.cache.queryGetOwnedObjects({
|
|
3548
3622
|
owner,
|
|
3549
3623
|
filter: {
|
|
3550
3624
|
StructType: veScaKeyType
|
|
@@ -4342,6 +4416,12 @@ var ScallopQuery = class {
|
|
|
4342
4416
|
async getLoyaltyProgramInfos(veScaKey) {
|
|
4343
4417
|
return await getLoyaltyProgramInformations(this, veScaKey);
|
|
4344
4418
|
}
|
|
4419
|
+
/**
|
|
4420
|
+
* Get flashloan fee for specified assets
|
|
4421
|
+
*/
|
|
4422
|
+
async getFlashLoanFees(assetCoinNames = [...SUPPORT_POOLS]) {
|
|
4423
|
+
return await getFlashLoanFees(this, assetCoinNames);
|
|
4424
|
+
}
|
|
4345
4425
|
};
|
|
4346
4426
|
|
|
4347
4427
|
// src/constants/pyth.ts
|
|
@@ -6909,6 +6989,7 @@ export {
|
|
|
6909
6989
|
ADDRESSES_ID,
|
|
6910
6990
|
API_BASE_URL,
|
|
6911
6991
|
BORROW_FEE_PROTOCOL_ID,
|
|
6992
|
+
FlashLoanFeeObjectMap,
|
|
6912
6993
|
IS_VE_SCA_TEST,
|
|
6913
6994
|
MAX_LOCK_DURATION,
|
|
6914
6995
|
MAX_LOCK_ROUNDS,
|