@scallop-io/sui-scallop-sdk 0.46.39 → 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 +82 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +81 -0
- 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 +92 -0
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
|
|
|
@@ -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";
|
|
@@ -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,
|