@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.mjs
CHANGED
|
@@ -12,7 +12,7 @@ var SUPPORT_POOLS = [
|
|
|
12
12
|
"usdc",
|
|
13
13
|
// native USDC
|
|
14
14
|
"sbeth",
|
|
15
|
-
//
|
|
15
|
+
// sui bridge ETH
|
|
16
16
|
"weth",
|
|
17
17
|
"wbtc",
|
|
18
18
|
"wusdc",
|
|
@@ -30,7 +30,7 @@ var SUPPORT_COLLATERALS = [
|
|
|
30
30
|
"usdc",
|
|
31
31
|
// native USDC
|
|
32
32
|
"sbeth",
|
|
33
|
-
//
|
|
33
|
+
// sui bridge ETH
|
|
34
34
|
"weth",
|
|
35
35
|
"wbtc",
|
|
36
36
|
"wusdc",
|
|
@@ -919,7 +919,7 @@ var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVA
|
|
|
919
919
|
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
920
920
|
return tryRequest();
|
|
921
921
|
} else {
|
|
922
|
-
console.error("An error occurred:", error);
|
|
922
|
+
console.error("An error occurred:", error.message);
|
|
923
923
|
return null;
|
|
924
924
|
}
|
|
925
925
|
}
|
|
@@ -2305,7 +2305,7 @@ var supplyLimitZod = zod.object({
|
|
|
2305
2305
|
value: zod.string()
|
|
2306
2306
|
})
|
|
2307
2307
|
});
|
|
2308
|
-
var
|
|
2308
|
+
var SUPPLY_LIMIT_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey";
|
|
2309
2309
|
var getSupplyLimit = async (utils, poolName) => {
|
|
2310
2310
|
const poolCoinType = utils.parseCoinType(poolName).slice(2);
|
|
2311
2311
|
const marketObject = utils.address.get("core.market");
|
|
@@ -2314,7 +2314,7 @@ var getSupplyLimit = async (utils, poolName) => {
|
|
|
2314
2314
|
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2315
2315
|
parentId: marketObject,
|
|
2316
2316
|
name: {
|
|
2317
|
-
type:
|
|
2317
|
+
type: SUPPLY_LIMIT_KEY,
|
|
2318
2318
|
value: poolCoinType
|
|
2319
2319
|
}
|
|
2320
2320
|
});
|
|
@@ -2324,6 +2324,76 @@ var getSupplyLimit = async (utils, poolName) => {
|
|
|
2324
2324
|
return parsedData.data.fields.value;
|
|
2325
2325
|
};
|
|
2326
2326
|
|
|
2327
|
+
// src/queries/isolatedAsset.ts
|
|
2328
|
+
import { z as zod2 } from "zod";
|
|
2329
|
+
var isolatedAssetZod = zod2.object({
|
|
2330
|
+
dataType: zod2.string(),
|
|
2331
|
+
type: zod2.string(),
|
|
2332
|
+
hasPublicTransfer: zod2.boolean(),
|
|
2333
|
+
fields: zod2.object({
|
|
2334
|
+
id: zod2.object({
|
|
2335
|
+
id: zod2.string()
|
|
2336
|
+
}),
|
|
2337
|
+
name: zod2.object({
|
|
2338
|
+
type: zod2.string()
|
|
2339
|
+
}),
|
|
2340
|
+
value: zod2.boolean()
|
|
2341
|
+
})
|
|
2342
|
+
});
|
|
2343
|
+
var ISOLATED_ASSET_KEY = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::IsolatedAssetKey";
|
|
2344
|
+
var getIsolatedAssets = async (address) => {
|
|
2345
|
+
const marketObject = address.get("core.market");
|
|
2346
|
+
const isolatedAssets = [];
|
|
2347
|
+
if (!marketObject)
|
|
2348
|
+
return isolatedAssets;
|
|
2349
|
+
let hasNextPage = false;
|
|
2350
|
+
let nextCursor = null;
|
|
2351
|
+
const isIsolatedDynamicField = (dynamicField) => {
|
|
2352
|
+
return dynamicField.name.type === ISOLATED_ASSET_KEY;
|
|
2353
|
+
};
|
|
2354
|
+
do {
|
|
2355
|
+
const response = await address.cache.queryGetDynamicFields({
|
|
2356
|
+
parentId: marketObject,
|
|
2357
|
+
cursor: nextCursor,
|
|
2358
|
+
limit: 10
|
|
2359
|
+
});
|
|
2360
|
+
if (!response)
|
|
2361
|
+
break;
|
|
2362
|
+
const isolatedAssetCoinTypes = response.data.filter(isIsolatedDynamicField).map(({ name }) => `0x${name.value.type.name}`);
|
|
2363
|
+
isolatedAssets.push(...isolatedAssetCoinTypes);
|
|
2364
|
+
if (response && response.hasNextPage && response.nextCursor) {
|
|
2365
|
+
hasNextPage = true;
|
|
2366
|
+
nextCursor = response.nextCursor;
|
|
2367
|
+
} else {
|
|
2368
|
+
hasNextPage = false;
|
|
2369
|
+
}
|
|
2370
|
+
} while (hasNextPage);
|
|
2371
|
+
return isolatedAssets;
|
|
2372
|
+
};
|
|
2373
|
+
var isIsolatedAsset = async (utils, coinName) => {
|
|
2374
|
+
const marketObject = utils.address.get("core.market");
|
|
2375
|
+
const cachedData = utils.address.cache.queryClient.getQueryData([
|
|
2376
|
+
"getDynamicFields",
|
|
2377
|
+
marketObject
|
|
2378
|
+
]);
|
|
2379
|
+
if (cachedData) {
|
|
2380
|
+
const coinType2 = utils.parseCoinType(coinName);
|
|
2381
|
+
return cachedData.includes(coinType2);
|
|
2382
|
+
}
|
|
2383
|
+
const coinType = utils.parseCoinType(coinName).slice(2);
|
|
2384
|
+
const object = await utils.cache.queryGetDynamicFieldObject({
|
|
2385
|
+
parentId: marketObject,
|
|
2386
|
+
name: {
|
|
2387
|
+
type: ISOLATED_ASSET_KEY,
|
|
2388
|
+
value: coinType
|
|
2389
|
+
}
|
|
2390
|
+
});
|
|
2391
|
+
const parsedData = isolatedAssetZod.safeParse(object?.data?.content);
|
|
2392
|
+
if (!parsedData.success)
|
|
2393
|
+
return false;
|
|
2394
|
+
return parsedData.data.fields.value;
|
|
2395
|
+
};
|
|
2396
|
+
|
|
2327
2397
|
// src/queries/coreQuery.ts
|
|
2328
2398
|
var queryMarket = async (query, indexer = false) => {
|
|
2329
2399
|
const coinPrices = await query.utils.getCoinPrices();
|
|
@@ -2408,6 +2478,7 @@ var queryMarket = async (query, indexer = false) => {
|
|
|
2408
2478
|
borrowFee: parsedMarketPoolData.borrowFee,
|
|
2409
2479
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2410
2480
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2481
|
+
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2411
2482
|
maxSupplyCoin,
|
|
2412
2483
|
...calculatedMarketPoolData
|
|
2413
2484
|
};
|
|
@@ -2635,6 +2706,7 @@ var getMarketPool = async (query, poolCoinName, indexer = false, marketObject, c
|
|
|
2635
2706
|
marketCoinSupplyAmount: parsedMarketPoolData.marketCoinSupplyAmount,
|
|
2636
2707
|
minBorrowAmount: parsedMarketPoolData.minBorrowAmount,
|
|
2637
2708
|
maxSupplyCoin,
|
|
2709
|
+
isIsolated: await isIsolatedAsset(query.utils, poolCoinName),
|
|
2638
2710
|
...calculatedMarketPoolData
|
|
2639
2711
|
};
|
|
2640
2712
|
}
|
|
@@ -3694,7 +3766,8 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
|
|
|
3694
3766
|
availableUnstakeAmount: availableUnstakeAmount.toNumber(),
|
|
3695
3767
|
availableUnstakeCoin: availableUnstakeCoin.toNumber(),
|
|
3696
3768
|
availableClaimAmount: availableClaimAmount.toNumber(),
|
|
3697
|
-
availableClaimCoin: availableClaimCoin.toNumber()
|
|
3769
|
+
availableClaimCoin: availableClaimCoin.toNumber(),
|
|
3770
|
+
isIsolated: marketPool ? marketPool.isIsolated : false
|
|
3698
3771
|
};
|
|
3699
3772
|
return lending;
|
|
3700
3773
|
};
|
|
@@ -4052,7 +4125,7 @@ var getTotalValueLocked = async (query, indexer = false) => {
|
|
|
4052
4125
|
import BigNumber5 from "bignumber.js";
|
|
4053
4126
|
import { SUI_CLOCK_OBJECT_ID, SuiTxBlock as SuiTxBlock2 } from "@scallop-io/sui-kit";
|
|
4054
4127
|
import { bcs } from "@mysten/sui/bcs";
|
|
4055
|
-
import { z as
|
|
4128
|
+
import { z as zod3 } from "zod";
|
|
4056
4129
|
import assert from "assert";
|
|
4057
4130
|
var getVescaKeys = async (utils, ownerAddress) => {
|
|
4058
4131
|
const owner = ownerAddress || utils.suiKit.currentAddress();
|
|
@@ -4101,10 +4174,10 @@ var getVeScas = async ({
|
|
|
4101
4174
|
}
|
|
4102
4175
|
return result;
|
|
4103
4176
|
};
|
|
4104
|
-
var SuiObjectRefZod =
|
|
4105
|
-
objectId:
|
|
4106
|
-
digest:
|
|
4107
|
-
version:
|
|
4177
|
+
var SuiObjectRefZod = zod3.object({
|
|
4178
|
+
objectId: zod3.string(),
|
|
4179
|
+
digest: zod3.string(),
|
|
4180
|
+
version: zod3.string()
|
|
4108
4181
|
});
|
|
4109
4182
|
var getVeSca = async (utils, veScaKey, ownerAddress) => {
|
|
4110
4183
|
const tableId = utils.address.get(`vesca.tableId`);
|
|
@@ -4238,16 +4311,16 @@ var queryVeScaKeyIdFromReferralBindings = async (address, refereeAddress) => {
|
|
|
4238
4311
|
|
|
4239
4312
|
// src/queries/loyaltyProgramQuery.ts
|
|
4240
4313
|
import BigNumber6 from "bignumber.js";
|
|
4241
|
-
import { z as
|
|
4242
|
-
var rewardPoolFieldsZod =
|
|
4243
|
-
balance:
|
|
4244
|
-
enable_claim:
|
|
4314
|
+
import { z as zod4 } from "zod";
|
|
4315
|
+
var rewardPoolFieldsZod = zod4.object({
|
|
4316
|
+
balance: zod4.string(),
|
|
4317
|
+
enable_claim: zod4.boolean()
|
|
4245
4318
|
}).transform((value) => ({
|
|
4246
4319
|
totalPoolReward: BigNumber6(value.balance).shiftedBy(-9).toNumber(),
|
|
4247
4320
|
isClaimEnabled: value.enable_claim
|
|
4248
4321
|
}));
|
|
4249
|
-
var userRewardFieldsZod =
|
|
4250
|
-
value:
|
|
4322
|
+
var userRewardFieldsZod = zod4.object({
|
|
4323
|
+
value: zod4.string()
|
|
4251
4324
|
}).transform((value) => BigNumber6(value.value).shiftedBy(-9).toNumber());
|
|
4252
4325
|
var getLoyaltyProgramInformations = async (query, veScaKey) => {
|
|
4253
4326
|
const rewardPool = query.address.get("loyaltyProgram.rewardPool");
|
|
@@ -7151,6 +7224,18 @@ var ScallopQuery = class {
|
|
|
7151
7224
|
async getPoolSupplyLimit(poolName) {
|
|
7152
7225
|
return await getSupplyLimit(this.utils, poolName);
|
|
7153
7226
|
}
|
|
7227
|
+
/**
|
|
7228
|
+
* Get list of isolated assets
|
|
7229
|
+
*/
|
|
7230
|
+
async getIsolatedAssets() {
|
|
7231
|
+
return await getIsolatedAssets(this.address);
|
|
7232
|
+
}
|
|
7233
|
+
/**
|
|
7234
|
+
* Check if asset is an isolated asset
|
|
7235
|
+
*/
|
|
7236
|
+
async isIsolatedAsset(assetCoinName) {
|
|
7237
|
+
return isIsolatedAsset(this.utils, assetCoinName);
|
|
7238
|
+
}
|
|
7154
7239
|
};
|
|
7155
7240
|
|
|
7156
7241
|
// src/models/scallopBuilder.ts
|