@scallop-io/sui-scallop-sdk 1.3.0-alpha.1 → 1.3.0-alpha.2

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.
Files changed (41) hide show
  1. package/dist/constants/common.d.ts +6 -4
  2. package/dist/constants/enum.d.ts +1 -0
  3. package/dist/index.js +211 -137
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +208 -137
  6. package/dist/index.mjs.map +1 -1
  7. package/dist/models/scallopBuilder.d.ts +4 -4
  8. package/dist/models/scallopQuery.d.ts +11 -3
  9. package/dist/models/scallopUtils.d.ts +4 -2
  10. package/dist/queries/borrowIncentiveQuery.d.ts +2 -0
  11. package/dist/queries/coreQuery.d.ts +2 -0
  12. package/dist/queries/portfolioQuery.d.ts +1 -0
  13. package/dist/queries/sCoinQuery.d.ts +1 -1
  14. package/dist/queries/vescaQuery.d.ts +1 -1
  15. package/dist/types/constant/common.d.ts +3 -1
  16. package/dist/types/constant/enum.d.ts +7 -1
  17. package/dist/types/model.d.ts +3 -0
  18. package/dist/utils/index.d.ts +1 -0
  19. package/dist/utils/indexer.d.ts +17 -0
  20. package/dist/utils/util.d.ts +4 -2
  21. package/package.json +6 -6
  22. package/src/builders/coreBuilder.ts +2 -2
  23. package/src/builders/referralBuilder.ts +1 -1
  24. package/src/builders/spoolBuilder.ts +1 -1
  25. package/src/constants/common.ts +15 -1
  26. package/src/constants/enum.ts +13 -0
  27. package/src/models/scallop.ts +1 -0
  28. package/src/models/scallopAddress.ts +13 -1
  29. package/src/models/scallopBuilder.ts +1 -0
  30. package/src/models/scallopClient.ts +6 -4
  31. package/src/models/scallopQuery.ts +42 -2
  32. package/src/models/scallopUtils.ts +54 -23
  33. package/src/queries/coreQuery.ts +0 -1
  34. package/src/queries/spoolQuery.ts +40 -103
  35. package/src/queries/vescaQuery.ts +8 -2
  36. package/src/types/constant/common.ts +4 -0
  37. package/src/types/constant/enum.ts +9 -0
  38. package/src/types/model.ts +3 -0
  39. package/src/utils/index.ts +1 -0
  40. package/src/utils/indexer.ts +39 -0
  41. package/src/utils/util.ts +25 -3
package/dist/index.js CHANGED
@@ -52,6 +52,8 @@ __export(src_exports, {
52
52
  SUPPORT_SCOIN: () => SUPPORT_SCOIN,
53
53
  SUPPORT_SPOOLS: () => SUPPORT_SPOOLS,
54
54
  SUPPORT_SPOOLS_REWARDS: () => SUPPORT_SPOOLS_REWARDS,
55
+ SUPPORT_SUI_BRIDGE: () => SUPPORT_SUI_BRIDGE,
56
+ SUPPORT_WORMHOLE: () => SUPPORT_WORMHOLE,
55
57
  Scallop: () => Scallop,
56
58
  ScallopAddress: () => ScallopAddress,
57
59
  ScallopBuilder: () => ScallopBuilder,
@@ -71,6 +73,7 @@ __export(src_exports, {
71
73
  sCoins: () => sCoins,
72
74
  spoolRewardCoins: () => spoolRewardCoins,
73
75
  stakeMarketCoins: () => stakeMarketCoins,
76
+ suiBridgeCoins: () => suiBridgeCoins,
74
77
  voloCoinIds: () => voloCoinIds,
75
78
  wormholeCoinIds: () => wormholeCoinIds
76
79
  });
@@ -89,6 +92,8 @@ var OLD_BORROW_INCENTIVE_PROTOCOL_ID = "0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d
89
92
  var SUPPORT_POOLS = [
90
93
  "usdc",
91
94
  // native USDC
95
+ "sbeth",
96
+ // native ETH
92
97
  "weth",
93
98
  "wbtc",
94
99
  "wusdc",
@@ -104,6 +109,9 @@ var SUPPORT_POOLS = [
104
109
  ];
105
110
  var SUPPORT_COLLATERALS = [
106
111
  "usdc",
112
+ // native USDC
113
+ "sbeth",
114
+ // native ETH
107
115
  "weth",
108
116
  "wbtc",
109
117
  "wusdc",
@@ -130,6 +138,7 @@ var SUPPORT_SPOOLS = [
130
138
  ];
131
139
  var SUPPORT_SCOIN = [
132
140
  "susdc",
141
+ "ssbeth",
133
142
  "ssui",
134
143
  "swusdc",
135
144
  "swusdt",
@@ -142,6 +151,15 @@ var SUPPORT_SCOIN = [
142
151
  "swsol",
143
152
  "swbtc"
144
153
  ];
154
+ var SUPPORT_SUI_BRIDGE = ["sbeth"];
155
+ var SUPPORT_WORMHOLE = [
156
+ "wusdc",
157
+ "wusdt",
158
+ "weth",
159
+ "wbtc",
160
+ "wapt",
161
+ "wsol"
162
+ ];
145
163
  var SUPPORT_SPOOLS_REWARDS = ["sui"];
146
164
  var SUPPORT_BORROW_INCENTIVE_POOLS = [
147
165
  "sui",
@@ -151,6 +169,7 @@ var SUPPORT_BORROW_INCENTIVE_POOLS = [
151
169
  "hasui",
152
170
  "vsui",
153
171
  "weth",
172
+ "sbeth",
154
173
  "sca",
155
174
  "usdc"
156
175
  ];
@@ -174,6 +193,7 @@ var SUPPORT_PACKAGES = [
174
193
  // src/constants/enum.ts
175
194
  var coinDecimals = {
176
195
  usdc: 6,
196
+ sbeth: 8,
177
197
  weth: 8,
178
198
  wbtc: 8,
179
199
  wusdc: 6,
@@ -188,6 +208,7 @@ var coinDecimals = {
188
208
  sca: 9,
189
209
  susdc: 6,
190
210
  sweth: 8,
211
+ ssbeth: 8,
191
212
  swbtc: 8,
192
213
  swusdc: 6,
193
214
  swusdt: 6,
@@ -202,6 +223,7 @@ var coinDecimals = {
202
223
  };
203
224
  var assetCoins = {
204
225
  usdc: "usdc",
226
+ sbeth: "sbeth",
205
227
  weth: "weth",
206
228
  wbtc: "wbtc",
207
229
  wusdc: "wusdc",
@@ -217,6 +239,7 @@ var assetCoins = {
217
239
  };
218
240
  var marketCoins = {
219
241
  susdc: "susdc",
242
+ ssbeth: "ssbeth",
220
243
  sweth: "sweth",
221
244
  swbtc: "swbtc",
222
245
  swusdc: "swusdc",
@@ -232,6 +255,7 @@ var marketCoins = {
232
255
  };
233
256
  var sCoins = {
234
257
  susdc: "susdc",
258
+ ssbeth: "ssbeth",
235
259
  sweth: "sweth",
236
260
  swusdc: "swusdc",
237
261
  swusdt: "swusdt",
@@ -266,6 +290,9 @@ var spoolRewardCoins = {
266
290
  svsui: "sui",
267
291
  susdc: "sui"
268
292
  };
293
+ var suiBridgeCoins = {
294
+ sbeth: "sbeth"
295
+ };
269
296
  var borrowIncentiveRewardCoins = {
270
297
  usdc: ["sui", "sca"],
271
298
  sui: ["sui", "sca"],
@@ -275,11 +302,13 @@ var borrowIncentiveRewardCoins = {
275
302
  afsui: ["sui"],
276
303
  hasui: ["sui"],
277
304
  vsui: ["sui"],
278
- weth: ["sui"]
305
+ weth: ["sui"],
306
+ sbeth: ["sui"]
279
307
  };
280
308
  var coinIds = {
281
309
  usdc: "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7",
282
310
  sui: "0x0000000000000000000000000000000000000000000000000000000000000002",
311
+ sbeth: "0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29",
283
312
  weth: "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",
284
313
  wbtc: "0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",
285
314
  wusdc: "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",
@@ -305,6 +334,7 @@ var voloCoinIds = {
305
334
  };
306
335
  var sCoinIds = {
307
336
  susdc: "0x854950aa624b1df59fe64e630b2ba7c550642e9342267a33061d59fb31582da5::scallop_usdc::SCALLOP_USDC",
337
+ ssbeth: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
308
338
  ssui: "0xaafc4f740de0dd0dde642a31148fb94517087052f19afb0f7bed1dc41a50c77b::scallop_sui::SCALLOP_SUI",
309
339
  scetus: "0xea346ce428f91ab007210443efcea5f5cdbbb3aae7e9affc0ca93f9203c31f0c::scallop_cetus::SCALLOP_CETUS",
310
340
  ssca: "0x5ca17430c1d046fae9edeaa8fd76c7b4193a00d764a0ecfa9418d733ad27bc1e::scallop_sca::SCALLOP_SCA",
@@ -861,11 +891,23 @@ var isMarketCoin = (coinName) => {
861
891
  const assetCoinName = coinName.slice(1).toLowerCase();
862
892
  return coinName.charAt(0).toLowerCase() === "s" && COIN_SET.includes(assetCoinName);
863
893
  };
894
+ var isSuiBridgeAsset = (coinName) => {
895
+ return SUPPORT_SUI_BRIDGE.includes(coinName);
896
+ };
897
+ var isWormholeAsset = (coinName) => {
898
+ return SUPPORT_WORMHOLE.includes(coinName);
899
+ };
864
900
  var parseAssetSymbol = (coinName) => {
865
- const isWormhole = coinName.charAt(0) === "w";
866
- if (isWormhole) {
901
+ if (isWormholeAsset(coinName)) {
867
902
  return `w${coinName.slice(1).toUpperCase()}`;
868
903
  }
904
+ if (isSuiBridgeAsset(coinName)) {
905
+ return `sb${coinName.slice(2).toUpperCase()}`;
906
+ }
907
+ if (isMarketCoin(coinName)) {
908
+ const assetCoinName = coinName.slice(1).toLowerCase();
909
+ return coinName.slice(0, 1).toLowerCase() + parseAssetSymbol(assetCoinName);
910
+ }
869
911
  switch (coinName) {
870
912
  case "afsui":
871
913
  return "afSUI";
@@ -971,6 +1013,25 @@ var callWithRateLimit = async (tokenBucket, fn, retryDelayInMs = DEFAULT_INTERVA
971
1013
  return tryRequest();
972
1014
  };
973
1015
 
1016
+ // src/utils/indexer.ts
1017
+ async function callMethodWithIndexerFallback(method, context, ...args) {
1018
+ const indexer = args[args.length - 1];
1019
+ if (indexer) {
1020
+ try {
1021
+ return await method.apply(context, args);
1022
+ } catch (_e) {
1023
+ console.warn("Indexer requests failed. Retrying without indexer..");
1024
+ return await method.apply(context, [...args.slice(0, -1), false]);
1025
+ }
1026
+ }
1027
+ return await method.apply(context, args);
1028
+ }
1029
+ function withIndexerFallback(method) {
1030
+ return (...args) => {
1031
+ return callMethodWithIndexerFallback(method, this, ...args);
1032
+ };
1033
+ }
1034
+
974
1035
  // src/models/scallopCache.ts
975
1036
  var ScallopCache = class {
976
1037
  constructor(suiKit, walletAddress, cacheOptions, tokenBucket) {
@@ -1974,7 +2035,7 @@ var EMPTY_ADDRESSES = {
1974
2035
  };
1975
2036
  var ScallopAddress = class {
1976
2037
  constructor(params, instance) {
1977
- const { id, auth, network } = params;
2038
+ const { id, auth, network, forceInterface } = params;
1978
2039
  this.cache = instance?.cache ?? new ScallopCache(
1979
2040
  instance?.suiKit ?? new import_sui_kit2.SuiKit({}),
1980
2041
  void 0,
@@ -1995,6 +2056,17 @@ var ScallopAddress = class {
1995
2056
  this._addressesMap = USE_TEST_ADDRESS ? /* @__PURE__ */ new Map([["mainnet", TEST_ADDRESSES]]) : /* @__PURE__ */ new Map();
1996
2057
  if (USE_TEST_ADDRESS)
1997
2058
  this._currentAddresses = TEST_ADDRESSES;
2059
+ if (forceInterface) {
2060
+ for (const [network2, addresses] of Object.entries(
2061
+ forceInterface
2062
+ )) {
2063
+ if (["localnet", "devnet", "testnet", "mainnet"].includes(network2)) {
2064
+ if (network2 === this._network)
2065
+ this._currentAddresses = addresses;
2066
+ this._addressesMap.set(network2, addresses);
2067
+ }
2068
+ }
2069
+ }
1998
2070
  }
1999
2071
  /**
2000
2072
  * Get addresses API id.
@@ -3116,18 +3188,13 @@ var getStakeAccounts = async ({
3116
3188
  hasNextPage = false;
3117
3189
  }
3118
3190
  } while (hasNextPage);
3119
- const stakeAccounts = {
3120
- susdc: [],
3121
- sweth: [],
3122
- ssui: [],
3123
- swusdc: [],
3124
- swusdt: [],
3125
- scetus: [],
3126
- safsui: [],
3127
- shasui: [],
3128
- svsui: []
3129
- // ssca: [],
3130
- };
3191
+ const stakeAccounts = SUPPORT_SPOOLS.reduce(
3192
+ (acc, stakeName) => {
3193
+ acc[stakeName] = [];
3194
+ return acc;
3195
+ },
3196
+ {}
3197
+ );
3131
3198
  const stakeMarketCoinTypes = Object.keys(stakeAccounts).reduce(
3132
3199
  (types, stakeMarketCoinName) => {
3133
3200
  const stakeCoinName = utils.parseCoinName(stakeMarketCoinName);
@@ -3137,6 +3204,13 @@ var getStakeAccounts = async ({
3137
3204
  },
3138
3205
  {}
3139
3206
  );
3207
+ const reversedStakeMarketCoinTypes = Object.entries(stakeMarketCoinTypes).reduce(
3208
+ (reversedTypes, [key, value]) => {
3209
+ reversedTypes[value] = key;
3210
+ return reversedTypes;
3211
+ },
3212
+ {}
3213
+ );
3140
3214
  const stakeObjectIds = stakeObjectsResponse.map((ref) => ref?.data?.objectId).filter((id) => id !== void 0);
3141
3215
  const stakeObjects = await utils.cache.queryGetObjects(stakeObjectIds, {
3142
3216
  showContent: true,
@@ -3153,98 +3227,23 @@ var getStakeAccounts = async ({
3153
3227
  const index = Number(fields.index);
3154
3228
  const points = Number(fields.points);
3155
3229
  const totalPoints = Number(fields.total_points);
3156
- if ((0, import_utils5.normalizeStructTag)(type) === stakeMarketCoinTypes.sweth) {
3157
- stakeAccounts.sweth.push({
3158
- id,
3159
- type: (0, import_utils5.normalizeStructTag)(type),
3160
- stakePoolId,
3161
- stakeType: (0, import_utils5.normalizeStructTag)(stakeType),
3162
- staked,
3163
- index,
3164
- points,
3165
- totalPoints
3166
- });
3167
- } else if ((0, import_utils5.normalizeStructTag)(type) === stakeMarketCoinTypes.ssui) {
3168
- stakeAccounts.ssui.push({
3169
- id,
3170
- type: (0, import_utils5.normalizeStructTag)(type),
3171
- stakePoolId,
3172
- stakeType: (0, import_utils5.normalizeStructTag)(stakeType),
3173
- staked,
3174
- index,
3175
- points,
3176
- totalPoints
3177
- });
3178
- } else if ((0, import_utils5.normalizeStructTag)(type) === stakeMarketCoinTypes.swusdc) {
3179
- stakeAccounts.swusdc.push({
3180
- id,
3181
- type: (0, import_utils5.normalizeStructTag)(type),
3182
- stakePoolId,
3183
- stakeType: (0, import_utils5.normalizeStructTag)(stakeType),
3184
- staked,
3185
- index,
3186
- points,
3187
- totalPoints
3188
- });
3189
- } else if ((0, import_utils5.normalizeStructTag)(type) === stakeMarketCoinTypes.swusdt) {
3190
- stakeAccounts.swusdt.push({
3191
- id,
3192
- type: (0, import_utils5.normalizeStructTag)(type),
3193
- stakePoolId,
3194
- stakeType: (0, import_utils5.normalizeStructTag)(stakeType),
3195
- staked,
3196
- index,
3197
- points,
3198
- totalPoints
3199
- });
3200
- } else if ((0, import_utils5.normalizeStructTag)(type) === stakeMarketCoinTypes.scetus) {
3201
- stakeAccounts.scetus.push({
3202
- id,
3203
- type: (0, import_utils5.normalizeStructTag)(type),
3204
- stakePoolId,
3205
- stakeType: (0, import_utils5.normalizeStructTag)(stakeType),
3206
- staked,
3207
- index,
3208
- points,
3209
- totalPoints
3210
- });
3211
- } else if ((0, import_utils5.normalizeStructTag)(type) === stakeMarketCoinTypes.safsui) {
3212
- stakeAccounts.safsui.push({
3213
- id,
3214
- type: (0, import_utils5.normalizeStructTag)(type),
3215
- stakePoolId,
3216
- stakeType: (0, import_utils5.normalizeStructTag)(stakeType),
3217
- staked,
3218
- index,
3219
- points,
3220
- totalPoints
3221
- });
3222
- } else if ((0, import_utils5.normalizeStructTag)(type) === stakeMarketCoinTypes.shasui) {
3223
- stakeAccounts.shasui.push({
3224
- id,
3225
- type: (0, import_utils5.normalizeStructTag)(type),
3226
- stakePoolId,
3227
- stakeType: (0, import_utils5.normalizeStructTag)(stakeType),
3228
- staked,
3229
- index,
3230
- points,
3231
- totalPoints
3232
- });
3233
- } else if ((0, import_utils5.normalizeStructTag)(type) === stakeMarketCoinTypes.svsui) {
3234
- stakeAccounts.svsui.push({
3235
- id,
3236
- type: (0, import_utils5.normalizeStructTag)(type),
3237
- stakePoolId,
3238
- stakeType: (0, import_utils5.normalizeStructTag)(stakeType),
3239
- staked,
3240
- index,
3241
- points,
3242
- totalPoints
3243
- });
3244
- } else if ((0, import_utils5.normalizeStructTag)(type) === stakeMarketCoinTypes.susdc) {
3245
- stakeAccounts.susdc.push({
3230
+ const stakeMarketCoinTypeMap = {
3231
+ sweth: stakeAccounts.sweth,
3232
+ ssui: stakeAccounts.ssui,
3233
+ swusdc: stakeAccounts.swusdc,
3234
+ swusdt: stakeAccounts.swusdt,
3235
+ scetus: stakeAccounts.scetus,
3236
+ safsui: stakeAccounts.safsui,
3237
+ shasui: stakeAccounts.shasui,
3238
+ svsui: stakeAccounts.svsui,
3239
+ susdc: stakeAccounts.susdc
3240
+ };
3241
+ const normalizedType = (0, import_utils5.normalizeStructTag)(type);
3242
+ const stakeAccountArray = stakeMarketCoinTypeMap[reversedStakeMarketCoinTypes[normalizedType]];
3243
+ if (stakeAccountArray) {
3244
+ stakeAccountArray.push({
3246
3245
  id,
3247
- type: (0, import_utils5.normalizeStructTag)(type),
3246
+ type: normalizedType,
3248
3247
  stakePoolId,
3249
3248
  stakeType: (0, import_utils5.normalizeStructTag)(stakeType),
3250
3249
  staked,
@@ -4163,7 +4162,7 @@ var getVescaKeys = async (utils, ownerAddress) => {
4163
4162
  };
4164
4163
  var getVeScas = async ({
4165
4164
  utils
4166
- }, ownerAddress) => {
4165
+ }, ownerAddress, excludeEmpty) => {
4167
4166
  const keyObjectDatas = await getVescaKeys(utils, ownerAddress);
4168
4167
  const veScas = Array(keyObjectDatas.length).fill(null);
4169
4168
  const tasks = keyObjectDatas.map(async (veScaKey, idx) => {
@@ -4173,7 +4172,11 @@ var getVeScas = async ({
4173
4172
  }
4174
4173
  });
4175
4174
  await Promise.allSettled(tasks);
4176
- return veScas.filter(Boolean).sort((a, b) => b.currentVeScaBalance - a.currentVeScaBalance);
4175
+ const result = veScas.filter(Boolean).sort((a, b) => b.currentVeScaBalance - a.currentVeScaBalance);
4176
+ if (excludeEmpty) {
4177
+ return result.filter((v) => v.lockedScaAmount !== "0");
4178
+ }
4179
+ return result;
4177
4180
  };
4178
4181
  var SuiObjectRefZod = import_zod2.z.object({
4179
4182
  objectId: import_zod2.z.string(),
@@ -4408,7 +4411,8 @@ var ScallopUtils = class {
4408
4411
  this.address = instance?.address ?? new ScallopAddress(
4409
4412
  {
4410
4413
  id: params?.addressesId || ADDRESSES_ID,
4411
- network: params?.networkType
4414
+ network: params?.networkType,
4415
+ forceInterface: params?.forceAddressesInterface
4412
4416
  },
4413
4417
  {
4414
4418
  cache: this.cache
@@ -4417,6 +4421,13 @@ var ScallopUtils = class {
4417
4421
  }
4418
4422
  this.isTestnet = params.networkType ? params.networkType === "testnet" : false;
4419
4423
  }
4424
+ // -------------- TYPE GUARDS --------------
4425
+ isSuiBridgeAsset(coinName) {
4426
+ return isSuiBridgeAsset(coinName);
4427
+ }
4428
+ isWormholeAsset(coinName) {
4429
+ return isWormholeAsset(coinName);
4430
+ }
4420
4431
  /**
4421
4432
  * Request the scallop API to initialize data.
4422
4433
  *
@@ -4437,12 +4448,7 @@ var ScallopUtils = class {
4437
4448
  * @return Symbol string.
4438
4449
  */
4439
4450
  parseSymbol(coinName) {
4440
- if (isMarketCoin(coinName)) {
4441
- const assetCoinName = coinName.slice(1).toLowerCase();
4442
- return coinName.slice(0, 1).toLowerCase() + parseAssetSymbol(assetCoinName);
4443
- } else {
4444
- return parseAssetSymbol(coinName);
4445
- }
4451
+ return parseAssetSymbol(coinName);
4446
4452
  }
4447
4453
  /**
4448
4454
  * Convert coin name to coin type.
@@ -4474,10 +4480,21 @@ var ScallopUtils = class {
4474
4480
  const voloPackageIds = [
4475
4481
  this.address.get("core.coins.vsui.id") ?? voloCoinIds.vsui
4476
4482
  ];
4483
+ const suiBridgePackageIds = Object.values(
4484
+ suiBridgeCoins
4485
+ ).reduce((curr, coinName2) => {
4486
+ curr.push(
4487
+ this.address.get(`core.coins.${coinName2}.id`) ?? coinIds[coinName2]
4488
+ );
4489
+ return curr;
4490
+ }, []);
4477
4491
  if (wormHolePackageIds.includes(coinPackageId)) {
4478
4492
  return `${coinPackageId}::coin::COIN`;
4479
4493
  } else if (voloPackageIds.includes(coinPackageId)) {
4480
4494
  return `${coinPackageId}::cert::CERT`;
4495
+ } else if (suiBridgePackageIds.includes(coinPackageId)) {
4496
+ const typeCoinName = coinName.slice(2);
4497
+ return `${coinPackageId}::${typeCoinName}::${typeCoinName.toUpperCase()}`;
4481
4498
  } else {
4482
4499
  return `${coinPackageId}::${coinName}::${coinName.toUpperCase()}`;
4483
4500
  }
@@ -4553,11 +4570,20 @@ var ScallopUtils = class {
4553
4570
  const voloCoinTypeMap = {
4554
4571
  [`${this.address.get("core.coins.vsui.id") ?? voloCoinIds.vsui}::cert::CERT`]: "vsui"
4555
4572
  };
4556
- const assetCoinName = wormHoleCoinTypeMap[coinType] || voloCoinTypeMap[coinType] || coinType.split("::")[2].toLowerCase();
4573
+ const suiBridgeTypeMap = Object.values(
4574
+ suiBridgeCoins
4575
+ ).reduce(
4576
+ (curr, coinName) => {
4577
+ curr[this.parseCoinType(coinName)] = coinName;
4578
+ return curr;
4579
+ },
4580
+ {}
4581
+ );
4582
+ const assetCoinName = wormHoleCoinTypeMap[coinType] || voloCoinTypeMap[coinType] || suiBridgeTypeMap[coinType] || coinType.split("::")[2].toLowerCase();
4557
4583
  return isMarketCoinType ? this.parseMarketCoinName(assetCoinName) : assetCoinName;
4558
4584
  }
4559
4585
  /**
4560
- * Convert marke coin name to coin name.
4586
+ * Convert market coin name to coin name.
4561
4587
  *
4562
4588
  * @param marketCoinName - Specific support market coin name.
4563
4589
  * @return Coin Name.
@@ -4588,10 +4614,18 @@ var ScallopUtils = class {
4588
4614
  * return Coin wrapped type.
4589
4615
  */
4590
4616
  getCoinWrappedType(assetCoinName) {
4591
- return assetCoinName === "wusdc" || assetCoinName === "wusdt" || assetCoinName === "weth" || assetCoinName === "wbtc" || assetCoinName === "wapt" || assetCoinName === "wsol" ? {
4592
- from: "Wormhole",
4593
- type: "Portal from Ethereum"
4594
- } : void 0;
4617
+ if (this.isSuiBridgeAsset(assetCoinName)) {
4618
+ return {
4619
+ from: "Sui Bridge",
4620
+ type: "Asset from Sui Bridge"
4621
+ };
4622
+ } else if (this.isWormholeAsset(assetCoinName)) {
4623
+ return {
4624
+ from: "Wormhole",
4625
+ type: "Portal from Ethereum"
4626
+ };
4627
+ }
4628
+ return void 0;
4595
4629
  }
4596
4630
  /**
4597
4631
  * Select coin id that add up to the given amount as transaction arguments.
@@ -4627,7 +4661,7 @@ var ScallopUtils = class {
4627
4661
  if (existingCoins.length > 0) {
4628
4662
  txBlock.mergeCoins(dest, existingCoins.slice(0, 500));
4629
4663
  }
4630
- } catch (e) {
4664
+ } catch (_e) {
4631
4665
  }
4632
4666
  }
4633
4667
  /**
@@ -5232,10 +5266,10 @@ var generateCoreQuickMethod = ({
5232
5266
  txBlock.transferObjects([leftCoin2], sender);
5233
5267
  txBlock.mergeCoins(marketCoins2, [walletMarketCoins]);
5234
5268
  }
5235
- } catch (e) {
5269
+ } catch (_e) {
5236
5270
  }
5237
5271
  return txBlock.withdraw(marketCoins2, poolCoinName);
5238
- } catch (e) {
5272
+ } catch (_e) {
5239
5273
  const { leftCoin, takeCoin: walletMarketCoins } = await builder.selectMarketCoin(
5240
5274
  txBlock,
5241
5275
  marketCoinName,
@@ -5385,7 +5419,7 @@ var stakeHelper = async (builder, txBlock, stakeAccount, coinName, amount, sende
5385
5419
  }
5386
5420
  txBlock.transferObjects([leftCoin], sender);
5387
5421
  return totalAmount;
5388
- } catch (e) {
5422
+ } catch (_e) {
5389
5423
  return 0;
5390
5424
  }
5391
5425
  };
@@ -6169,7 +6203,7 @@ var generateReferralQuickMethod = ({
6169
6203
  builder.utils.parseCoinType(coinName)
6170
6204
  );
6171
6205
  txBlock.mergeCoins(rewardCoin, coins.slice(0, 500));
6172
- } catch (e) {
6206
+ } catch (_e) {
6173
6207
  } finally {
6174
6208
  objToTransfer.push(rewardCoin);
6175
6209
  }
@@ -6686,7 +6720,8 @@ var ScallopQuery = class {
6686
6720
  this.address = new ScallopAddress(
6687
6721
  {
6688
6722
  id: params?.addressesId || ADDRESSES_ID,
6689
- network: params?.networkType
6723
+ network: params?.networkType,
6724
+ forceInterface: params?.forceAddressesInterface
6690
6725
  },
6691
6726
  {
6692
6727
  cache: this.cache
@@ -6697,7 +6732,36 @@ var ScallopQuery = class {
6697
6732
  });
6698
6733
  }
6699
6734
  this.indexer = instance?.indexer ?? new ScallopIndexer(this.params, { cache: this.cache });
6735
+ this.queryMarket = withIndexerFallback.call(this, this.queryMarket);
6736
+ this.getMarketPools = withIndexerFallback.call(this, this.getMarketPools);
6737
+ this.getMarketPool = withIndexerFallback.call(this, this.getMarketPool);
6738
+ this.getMarketCollaterals = withIndexerFallback.call(
6739
+ this,
6740
+ this.getMarketCollaterals
6741
+ );
6742
+ this.getMarketCollateral = withIndexerFallback.call(
6743
+ this,
6744
+ this.getMarketCollateral
6745
+ );
6746
+ this.getSpools = withIndexerFallback.call(this, this.getSpools);
6747
+ this.getSpool = withIndexerFallback.call(this, this.getSpool);
6748
+ this.getBorrowIncentivePools = withIndexerFallback.call(
6749
+ this,
6750
+ this.getBorrowIncentivePools
6751
+ );
6752
+ this.getLendings = withIndexerFallback.call(this, this.getLendings);
6753
+ this.getLending = withIndexerFallback.call(this, this.getLending);
6754
+ this.getObligationAccounts = withIndexerFallback.call(
6755
+ this,
6756
+ this.getObligationAccounts
6757
+ );
6758
+ this.getObligationAccount = withIndexerFallback.call(
6759
+ this,
6760
+ this.getObligationAccount
6761
+ );
6762
+ this.getTvl = withIndexerFallback.call(this, this.getTvl);
6700
6763
  }
6764
+ /* ========================================================== */
6701
6765
  /**
6702
6766
  * Request the scallop API to initialize data.
6703
6767
  *
@@ -7056,8 +7120,11 @@ var ScallopQuery = class {
7056
7120
  * @param walletAddress
7057
7121
  * @returns array of veSca
7058
7122
  */
7059
- async getVeScas(walletAddress = this.walletAddress) {
7060
- return await getVeScas(this, walletAddress);
7123
+ async getVeScas({
7124
+ walletAddress = this.walletAddress,
7125
+ excludeEmpty = false
7126
+ } = {}) {
7127
+ return await getVeScas(this, walletAddress, excludeEmpty);
7061
7128
  }
7062
7129
  /**
7063
7130
  * Get total vesca treasury with movecall
@@ -7175,7 +7242,8 @@ var ScallopBuilder = class {
7175
7242
  this.address = new ScallopAddress(
7176
7243
  {
7177
7244
  id: params?.addressesId || ADDRESSES_ID,
7178
- network: params?.networkType
7245
+ network: params?.networkType,
7246
+ forceInterface: params?.forceAddressesInterface
7179
7247
  },
7180
7248
  {
7181
7249
  cache: this.cache
@@ -7325,7 +7393,8 @@ var ScallopClient = class {
7325
7393
  this.address = new ScallopAddress(
7326
7394
  {
7327
7395
  id: params?.addressesId || ADDRESSES_ID,
7328
- network: params?.networkType
7396
+ network: params?.networkType,
7397
+ forceInterface: params?.forceAddressesInterface
7329
7398
  },
7330
7399
  {
7331
7400
  cache: this.cache
@@ -7718,7 +7787,6 @@ var ScallopClient = class {
7718
7787
  false
7719
7788
  );
7720
7789
  const stakeCoinName = this.utils.parseCoinName(stakeMarketCoinName);
7721
- console.log(stakeMarketCoin, stakeCoinName);
7722
7790
  if (stakeMarketCoin) {
7723
7791
  const coin = txBlock.withdraw(stakeMarketCoin, stakeCoinName);
7724
7792
  await this.utils.mergeSimilarCoins(
@@ -7885,7 +7953,7 @@ var ScallopClient = class {
7885
7953
  if (sCoin) {
7886
7954
  sCoins2.push(sCoin);
7887
7955
  }
7888
- } catch (e) {
7956
+ } catch (_e) {
7889
7957
  }
7890
7958
  }
7891
7959
  }
@@ -7910,7 +7978,9 @@ var ScallopClient = class {
7910
7978
  }
7911
7979
  }
7912
7980
  async claimAllUnlockedSca(sign = true) {
7913
- const veScaKeys = (await this.query.getVeScas(this.walletAddress) ?? []).map(({ keyObject }) => keyObject);
7981
+ const veScaKeys = (await this.query.getVeScas({
7982
+ walletAddress: this.walletAddress
7983
+ }) ?? []).map(({ keyObject }) => keyObject);
7914
7984
  if (veScaKeys.length === 0) {
7915
7985
  throw new Error("No veSCA found in the wallet");
7916
7986
  }
@@ -7924,7 +7994,7 @@ var ScallopClient = class {
7924
7994
  if (!scaCoin)
7925
7995
  return;
7926
7996
  scaCoins.push(scaCoin);
7927
- } catch (e) {
7997
+ } catch (_e) {
7928
7998
  }
7929
7999
  })
7930
8000
  );
@@ -7987,7 +8057,8 @@ var Scallop = class {
7987
8057
  this.address = new ScallopAddress(
7988
8058
  {
7989
8059
  id: params?.addressesId || ADDRESSES_ID,
7990
- network: params?.networkType
8060
+ network: params?.networkType,
8061
+ forceInterface: params?.forceAddressesInterface
7991
8062
  },
7992
8063
  { cache: this.cache }
7993
8064
  );
@@ -8109,6 +8180,8 @@ var Scallop = class {
8109
8180
  SUPPORT_SCOIN,
8110
8181
  SUPPORT_SPOOLS,
8111
8182
  SUPPORT_SPOOLS_REWARDS,
8183
+ SUPPORT_SUI_BRIDGE,
8184
+ SUPPORT_WORMHOLE,
8112
8185
  Scallop,
8113
8186
  ScallopAddress,
8114
8187
  ScallopBuilder,
@@ -8128,6 +8201,7 @@ var Scallop = class {
8128
8201
  sCoins,
8129
8202
  spoolRewardCoins,
8130
8203
  stakeMarketCoins,
8204
+ suiBridgeCoins,
8131
8205
  voloCoinIds,
8132
8206
  wormholeCoinIds
8133
8207
  });