@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.mjs CHANGED
@@ -12,7 +12,7 @@ var SUPPORT_POOLS = [
12
12
  "usdc",
13
13
  // native USDC
14
14
  "sbeth",
15
- // native ETH
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
- // native ETH
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 SUPPLY_LIMIT_TYPE = "0x6e641f0dca8aedab3101d047e96439178f16301bf0b57fe8745086ff1195eb3e::market_dynamic_keys::SupplyLimitKey";
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: SUPPLY_LIMIT_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 zod2 } from "zod";
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 = zod2.object({
4105
- objectId: zod2.string(),
4106
- digest: zod2.string(),
4107
- version: zod2.string()
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 zod3 } from "zod";
4242
- var rewardPoolFieldsZod = zod3.object({
4243
- balance: zod3.string(),
4244
- enable_claim: zod3.boolean()
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 = zod3.object({
4250
- value: zod3.string()
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