@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 CHANGED
@@ -93,7 +93,7 @@ var SUPPORT_POOLS = [
93
93
  "usdc",
94
94
  // native USDC
95
95
  "sbeth",
96
- // native ETH
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
- // native ETH
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 SUPPLY_LIMIT_TYPE = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey";
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: SUPPLY_LIMIT_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 import_zod2 = require("zod");
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 = import_zod2.z.object({
4182
- objectId: import_zod2.z.string(),
4183
- digest: import_zod2.z.string(),
4184
- version: import_zod2.z.string()
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 import_zod3 = require("zod");
4319
- var rewardPoolFieldsZod = import_zod3.z.object({
4320
- balance: import_zod3.z.string(),
4321
- enable_claim: import_zod3.z.boolean()
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 = import_zod3.z.object({
4327
- value: import_zod3.z.string()
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