@scallop-io/sui-scallop-sdk 1.3.0-alpha.3 → 1.3.0-alpha.4
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/index.js +102 -17
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +102 -17
- package/dist/index.mjs.map +1 -1
- package/dist/models/scallopQuery.d.ts +8 -0
- package/dist/queries/isolatedAsset.d.ts +14 -0
- package/dist/types/query/core.d.ts +1 -0
- package/dist/types/query/portfolio.d.ts +1 -1
- package/package.json +1 -1
- package/src/constants/common.ts +2 -2
- package/src/models/scallopQuery.ts +15 -0
- package/src/queries/coreQuery.ts +3 -0
- package/src/queries/isolatedAsset.ts +105 -0
- package/src/queries/portfolioQuery.ts +1 -0
- package/src/queries/supplyLimit.ts +2 -2
- package/src/types/query/core.ts +1 -0
- package/src/types/query/portfolio.ts +1 -0
- package/src/utils/tokenBucket.ts +1 -1
- package/dist/test.d.ts +0 -1
- package/src/test.ts +0 -26
package/dist/index.js
CHANGED
|
@@ -93,7 +93,7 @@ var SUPPORT_POOLS = [
|
|
|
93
93
|
"usdc",
|
|
94
94
|
// native USDC
|
|
95
95
|
"sbeth",
|
|
96
|
-
//
|
|
96
|
+
// sui bridge ETH
|
|
97
97
|
"weth",
|
|
98
98
|
"wbtc",
|
|
99
99
|
"wusdc",
|
|
@@ -111,7 +111,7 @@ var SUPPORT_COLLATERALS = [
|
|
|
111
111
|
"usdc",
|
|
112
112
|
// native USDC
|
|
113
113
|
"sbeth",
|
|
114
|
-
//
|
|
114
|
+
// sui bridge ETH
|
|
115
115
|
"weth",
|
|
116
116
|
"wbtc",
|
|
117
117
|
"wusdc",
|
|
@@ -996,7 +996,7 @@ var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVA
|
|
|
996
996
|
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
997
997
|
return tryRequest();
|
|
998
998
|
} else {
|
|
999
|
-
console.error("An error occurred:", error);
|
|
999
|
+
console.error("An error occurred:", error.message);
|
|
1000
1000
|
return null;
|
|
1001
1001
|
}
|
|
1002
1002
|
}
|
|
@@ -2382,7 +2382,7 @@ var supplyLimitZod = import_zod.z.object({
|
|
|
2382
2382
|
value: import_zod.z.string()
|
|
2383
2383
|
})
|
|
2384
2384
|
});
|
|
2385
|
-
var
|
|
2385
|
+
var SUPPLY_LIMIT_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey";
|
|
2386
2386
|
var getSupplyLimit = async (utils, poolName) => {
|
|
2387
2387
|
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
2388
2388
|
const marketObject = utils.address.get("core.market");
|
|
@@ -2391,7 +2391,7 @@ var getSupplyLimit = async (utils, poolName) => {
|
|
|
2391
2391
|
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2392
2392
|
parentId: marketObject,
|
|
2393
2393
|
name: {
|
|
2394
|
-
type:
|
|
2394
|
+
type: SUPPLY_LIMIT_KEY,
|
|
2395
2395
|
value: poolCoinType
|
|
2396
2396
|
}
|
|
2397
2397
|
});
|
|
@@ -2401,6 +2401,76 @@ var getSupplyLimit = async (utils, poolName) => {
|
|
|
2401
2401
|
return parsedData.data.fields.value;
|
|
2402
2402
|
};
|
|
2403
2403
|
|
|
2404
|
+
// src/queries/isolatedAsset.ts
|
|
2405
|
+
var import_zod2 = require("zod");
|
|
2406
|
+
var isolatedAssetZod = import_zod2.z.object({
|
|
2407
|
+
dataType: import_zod2.z.string(),
|
|
2408
|
+
type: import_zod2.z.string(),
|
|
2409
|
+
hasPublicTransfer: import_zod2.z.boolean(),
|
|
2410
|
+
fields: import_zod2.z.object({
|
|
2411
|
+
id: import_zod2.z.object({
|
|
2412
|
+
id: import_zod2.z.string()
|
|
2413
|
+
}),
|
|
2414
|
+
name: import_zod2.z.object({
|
|
2415
|
+
type: import_zod2.z.string()
|
|
2416
|
+
}),
|
|
2417
|
+
value: import_zod2.z.boolean()
|
|
2418
|
+
})
|
|
2419
|
+
});
|
|
2420
|
+
var ISOLATED_ASSET_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::IsolatedAssetKey";
|
|
2421
|
+
var getIsolatedAssets = async (address) => {
|
|
2422
|
+
const marketObject = address.get("core.market");
|
|
2423
|
+
const isolatedAssets = [];
|
|
2424
|
+
if (!marketObject)
|
|
2425
|
+
return isolatedAssets;
|
|
2426
|
+
let hasNextPage = false;
|
|
2427
|
+
let nextCursor = null;
|
|
2428
|
+
const isIsolatedDynamicField = (dynamicField) => {
|
|
2429
|
+
return dynamicField.name.type === ISOLATED_ASSET_KEY;
|
|
2430
|
+
};
|
|
2431
|
+
do {
|
|
2432
|
+
const response = await address.cache.queryGetDynamicFields({
|
|
2433
|
+
parentId: marketObject,
|
|
2434
|
+
cursor: nextCursor,
|
|
2435
|
+
limit: 10
|
|
2436
|
+
});
|
|
2437
|
+
if (!response)
|
|
2438
|
+
break;
|
|
2439
|
+
const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
|
|
2440
|
+
isolatedAssets.push(...isolatedAssetCoinTypes);
|
|
2441
|
+
if (response && response.hasNextPage && response.nextCursor) {
|
|
2442
|
+
hasNextPage = true;
|
|
2443
|
+
nextCursor = response.nextCursor;
|
|
2444
|
+
} else {
|
|
2445
|
+
hasNextPage = false;
|
|
2446
|
+
}
|
|
2447
|
+
} while (hasNextPage);
|
|
2448
|
+
return isolatedAssets;
|
|
2449
|
+
};
|
|
2450
|
+
var isIsolatedAsset = async (utils, coinName) => {
|
|
2451
|
+
const marketObject = utils.address.get("core.market");
|
|
2452
|
+
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
2453
|
+
"getDynamicFields",
|
|
2454
|
+
marketObject
|
|
2455
|
+
]);
|
|
2456
|
+
if (cachedData) {
|
|
2457
|
+
const coinType2 = utils.parseCoinType(coinName);
|
|
2458
|
+
return cachedData.includes(coinType2);
|
|
2459
|
+
}
|
|
2460
|
+
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
2461
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2462
|
+
parentId: marketObject,
|
|
2463
|
+
name: {
|
|
2464
|
+
type: ISOLATED_ASSET_KEY,
|
|
2465
|
+
value: coinType
|
|
2466
|
+
}
|
|
2467
|
+
});
|
|
2468
|
+
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
2469
|
+
if (!parsedData.success)
|
|
2470
|
+
return false;
|
|
2471
|
+
return parsedData.data.fields.value;
|
|
2472
|
+
};
|
|
2473
|
+
|
|
2404
2474
|
// src/queries/coreQuery.ts
|
|
2405
2475
|
var queryMarket = async (query, indexer = false) => {
|
|
2406
2476
|
const coinPrices = await query.utils.getCoinPrices();
|
|
@@ -2485,6 +2555,7 @@ var queryMarket = async (query, indexer = false) => {
|
|
|
2485
2555
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
2486
2556
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2487
2557
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2558
|
+
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2488
2559
|
maxSupplyCoin,
|
|
2489
2560
|
...calculatedMarketPoolData
|
|
2490
2561
|
};
|
|
@@ -2712,6 +2783,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2712
2783
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2713
2784
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2714
2785
|
maxSupplyCoin,
|
|
2786
|
+
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2715
2787
|
...calculatedMarketPoolData
|
|
2716
2788
|
};
|
|
2717
2789
|
}
|
|
@@ -3771,7 +3843,8 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
|
|
|
3771
3843
|
availableUnstakeAmount: availableUnstakeAmount.toNumber(),
|
|
3772
3844
|
availableUnstakeCoin: availableUnstakeCoin.toNumber(),
|
|
3773
3845
|
availableClaimAmount: availableClaimAmount.toNumber(),
|
|
3774
|
-
availableClaimCoin: availableClaimCoin.toNumber()
|
|
3846
|
+
availableClaimCoin: availableClaimCoin.toNumber(),
|
|
3847
|
+
isIsolated: marketPool ? marketPool.isIsolated : false
|
|
3775
3848
|
};
|
|
3776
3849
|
return lending;
|
|
3777
3850
|
};
|
|
@@ -4129,7 +4202,7 @@ var getTotalValueLocked = async (query, indexer = false) => {
|
|
|
4129
4202
|
var import_bignumber5 = __toESM(require("bignumber.js"));
|
|
4130
4203
|
var import_sui_kit3 = require("@scallop-io/sui-kit");
|
|
4131
4204
|
var import_bcs = require("@mysten/sui/bcs");
|
|
4132
|
-
var
|
|
4205
|
+
var import_zod3 = require("zod");
|
|
4133
4206
|
var import_assert = __toESM(require("assert"));
|
|
4134
4207
|
var getVescaKeys = async (utils, ownerAddress) => {
|
|
4135
4208
|
const owner = ownerAddress || utils.suiKit.currentAddress();
|
|
@@ -4178,10 +4251,10 @@ var getVeScas = async ({
|
|
|
4178
4251
|
}
|
|
4179
4252
|
return result;
|
|
4180
4253
|
};
|
|
4181
|
-
var SuiObjectRefZod =
|
|
4182
|
-
objectId:
|
|
4183
|
-
digest:
|
|
4184
|
-
version:
|
|
4254
|
+
var SuiObjectRefZod = import_zod3.z.object({
|
|
4255
|
+
objectId: import_zod3.z.string(),
|
|
4256
|
+
digest: import_zod3.z.string(),
|
|
4257
|
+
version: import_zod3.z.string()
|
|
4185
4258
|
});
|
|
4186
4259
|
var getVeSca = async (utils, veScaKey, ownerAddress) => {
|
|
4187
4260
|
const tableId = utils.address.get(`vesca.tableId`);
|
|
@@ -4315,16 +4388,16 @@ var queryVeScaKeyIdFromReferralBindings = async (address, refereeAddress) => {
|
|
|
4315
4388
|
|
|
4316
4389
|
// src/queries/loyaltyProgramQuery.ts
|
|
4317
4390
|
var import_bignumber6 = __toESM(require("bignumber.js"));
|
|
4318
|
-
var
|
|
4319
|
-
var rewardPoolFieldsZod =
|
|
4320
|
-
balance:
|
|
4321
|
-
enable_claim:
|
|
4391
|
+
var import_zod4 = require("zod");
|
|
4392
|
+
var rewardPoolFieldsZod = import_zod4.z.object({
|
|
4393
|
+
balance: import_zod4.z.string(),
|
|
4394
|
+
enable_claim: import_zod4.z.boolean()
|
|
4322
4395
|
}).transform((value) => ({
|
|
4323
4396
|
totalPoolReward: (0, import_bignumber6.default)(value.balance).shiftedBy(-9).toNumber(),
|
|
4324
4397
|
isClaimEnabled: value.enable_claim
|
|
4325
4398
|
}));
|
|
4326
|
-
var userRewardFieldsZod =
|
|
4327
|
-
value:
|
|
4399
|
+
var userRewardFieldsZod = import_zod4.z.object({
|
|
4400
|
+
value: import_zod4.z.string()
|
|
4328
4401
|
}).transform((value) => (0, import_bignumber6.default)(value.value).shiftedBy(-9).toNumber());
|
|
4329
4402
|
var getLoyaltyProgramInformations = async (query, veScaKey) => {
|
|
4330
4403
|
const rewardPool = query.address.get("loyaltyProgram.rewardPool");
|
|
@@ -7217,6 +7290,18 @@ var ScallopQuery = class {
|
|
|
7217
7290
|
async getPoolSupplyLimit(poolName) {
|
|
7218
7291
|
return await getSupplyLimit(this.utils, poolName);
|
|
7219
7292
|
}
|
|
7293
|
+
/**
|
|
7294
|
+
* Get list of isolated assets
|
|
7295
|
+
*/
|
|
7296
|
+
async getIsolatedAssets() {
|
|
7297
|
+
return await getIsolatedAssets(this.address);
|
|
7298
|
+
}
|
|
7299
|
+
/**
|
|
7300
|
+
* Check if asset is an isolated asset
|
|
7301
|
+
*/
|
|
7302
|
+
async isIsolatedAsset(assetCoinName) {
|
|
7303
|
+
return isIsolatedAsset(this.utils, assetCoinName);
|
|
7304
|
+
}
|
|
7220
7305
|
};
|
|
7221
7306
|
|
|
7222
7307
|
// src/models/scallopBuilder.ts
|