@scallop-io/sui-scallop-sdk 1.4.3 → 1.4.5

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
@@ -24,6 +24,7 @@ var COIN_GECKGO_IDS = {
24
24
  hasui: "sui",
25
25
  vsui: "sui",
26
26
  sca: "scallop-2",
27
+ fdusd: "first-digital-usd",
27
28
  deep: "deepbook",
28
29
  fud: "fud-the-pug"
29
30
  };
@@ -56,7 +57,8 @@ var SUPPORT_POOLS = [
56
57
  "vsui",
57
58
  "sca",
58
59
  "fud",
59
- "deep"
60
+ "deep",
61
+ "fdusd"
60
62
  ];
61
63
  var SUPPORT_COLLATERALS = [
62
64
  "usdc",
@@ -74,7 +76,8 @@ var SUPPORT_COLLATERALS = [
74
76
  "afsui",
75
77
  "hasui",
76
78
  "vsui",
77
- "sca"
79
+ "sca",
80
+ "fdusd"
78
81
  ];
79
82
  var SUPPORT_SPOOLS = [
80
83
  "susdc",
@@ -102,7 +105,8 @@ var SUPPORT_SCOIN = [
102
105
  "swsol",
103
106
  "swbtc",
104
107
  "sdeep",
105
- "sfud"
108
+ "sfud",
109
+ "sfdusd"
106
110
  ];
107
111
  var SUPPORT_SUI_BRIDGE = ["sbeth"];
108
112
  var SUPPORT_WORMHOLE = [
@@ -151,6 +155,7 @@ var coinDecimals = {
151
155
  hasui: 9,
152
156
  vsui: 9,
153
157
  sca: 9,
158
+ fdusd: 6,
154
159
  deep: 6,
155
160
  fud: 5,
156
161
  susdc: 6,
@@ -167,6 +172,7 @@ var coinDecimals = {
167
172
  shasui: 9,
168
173
  svsui: 9,
169
174
  ssca: 9,
175
+ sfdusd: 6,
170
176
  sdeep: 6,
171
177
  sfud: 5
172
178
  };
@@ -185,6 +191,7 @@ var assetCoins = {
185
191
  hasui: "hasui",
186
192
  vsui: "vsui",
187
193
  sca: "sca",
194
+ fdusd: "fdusd",
188
195
  deep: "deep",
189
196
  fud: "fud"
190
197
  };
@@ -203,6 +210,7 @@ var marketCoins = {
203
210
  shasui: "shasui",
204
211
  svsui: "svsui",
205
212
  ssca: "ssca",
213
+ sfdusd: "sfdusd",
206
214
  sdeep: "sdeep",
207
215
  sfud: "sfud"
208
216
  };
@@ -220,6 +228,7 @@ var sCoins = {
220
228
  ssca: "ssca",
221
229
  swsol: "swsol",
222
230
  swbtc: "swbtc",
231
+ sfdusd: "sfdusd",
223
232
  sfud: "sfud",
224
233
  sdeep: "sdeep"
225
234
  };
@@ -263,6 +272,7 @@ var coinIds = {
263
272
  hasui: "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",
264
273
  vsui: "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",
265
274
  sca: IS_VE_SCA_TEST ? "0x6cd813061a3adf3602b76545f076205f0c8e7ec1d3b1eab9a1da7992c18c0524" : "0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",
275
+ fdusd: "0xf16e6b723f242ec745dfd7634ad072c42d5c1d9ac9d62a39c381303eaa57693a",
266
276
  // isolated assets
267
277
  deep: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
268
278
  fud: "0x76cb819b01abed502bee8a702b4c2d547532c12f25001c9dea795a5e631c26f1"
@@ -292,6 +302,7 @@ var sCoinIds = {
292
302
  svsui: "0xe1a1cc6bcf0001a015eab84bcc6713393ce20535f55b8b6f35c142e057a25fbe::scallop_v_sui::SCALLOP_V_SUI",
293
303
  swsol: "0x1392650f2eca9e3f6ffae3ff89e42a3590d7102b80e2b430f674730bc30d3259::scallop_wormhole_sol::SCALLOP_WORMHOLE_SOL",
294
304
  swbtc: "0x2cf76a9cf5d3337961d1154283234f94da2dcff18544dfe5cbdef65f319591b5::scallop_wormhole_btc::SCALLOP_WORMHOLE_BTC",
305
+ sfdusd: "0x6711551c1e7652a270d9fbf0eee25d99594c157cde3cb5fbb49035eb59b1b001::scallop_fdusd::SCALLOP_FDUSD",
295
306
  sdeep: "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",
296
307
  sfud: "0xe56d5167f427cbe597da9e8150ef5c337839aaf46891d62468dcf80bdd8e10d1::scallop_fud::SCALLOP_FUD"
297
308
  };
@@ -567,6 +578,21 @@ var POOL_ADDRESSES = {
567
578
  spoolReward: void 0,
568
579
  sCoinTreasury: "0xc63838fabe37b25ad897392d89876d920f5e0c6a406bf3abcb84753d2829bc88",
569
580
  coinDecimalId: "0x6e60b051a08fa836f5a7acd7c464c8d9825bc29c44657fe170fe9b8e1e4770c0"
581
+ },
582
+ fdusd: {
583
+ lendingPoolAddress: "0x4f46051a01f05c3ad9aecf29a771aad5c884e1a1888e08d7709085e3a095bc9c",
584
+ collateralPoolAddress: "0x4f6647a9afcfdb62bb9b27e4d1cb7bd7130aca1b4f13fa7164453c869c1681ae",
585
+ borrowDynamic: "0x4ddcf19b6290a8b048ecb314b14ef7f52c1c5b9ddc9259a2a242cd91d681a085",
586
+ interestModel: "0xb57a33706b29d2d253c74c1c0869e6e20da99036338d2b0b7235ab41621ee9dd",
587
+ riskModel: "0xd65fb21758dc1e6184940a1a27efb13228d7cf5e19f6dcca06cc2d996af4a6b9",
588
+ borrowFeeKey: "0xafe673a27747b063fa918d2dfe47794e44af553737ac562c2a63186539a07f45",
589
+ supplyLimitKey: "0x730e0785ba056a7a95f4a6959371a598d7fe782e81c40785c79982ced4cf4e35",
590
+ borrowLimitKey: "0x1630c6954918a06fe56312afb8958366c5ed7af653dae0e32c09d088da38577e",
591
+ isolatedAssetKey: void 0,
592
+ spool: void 0,
593
+ spoolReward: void 0,
594
+ sCoinTreasury: "0xdad9bc6293e694f67a5274ea51b596e0bdabfafc585ae6d7e82888e65f1a03e0",
595
+ coinDecimalId: "0xdebee5265a67c186ed87fe93303d33dfe1de53e3b4fd7d9329c2852860acd3e7"
570
596
  }
571
597
  };
572
598
 
@@ -590,6 +616,7 @@ var PYTH_FEED_IDS = {
590
616
  hasui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
591
617
  vsui: "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",
592
618
  sca: "7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",
619
+ fdusd: "0xccdc1a08923e2e4f4b1e6ea89de6acbc5fe1948e9706f5604b8cb50bc1ed3979",
593
620
  deep: "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff",
594
621
  fud: "6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75"
595
622
  };
@@ -899,6 +926,19 @@ var TEST_ADDRESSES = {
899
926
  }
900
927
  }
901
928
  },
929
+ fdusd: {
930
+ id: "0xf16e6b723f242ec745dfd7634ad072c42d5c1d9ac9d62a39c381303eaa57693a",
931
+ metaData: "0xdebee5265a67c186ed87fe93303d33dfe1de53e3b4fd7d9329c2852860acd3e7",
932
+ treasury: "",
933
+ oracle: {
934
+ supra: "",
935
+ switchboard: "",
936
+ pyth: {
937
+ feed: "0xccdc1a08923e2e4f4b1e6ea89de6acbc5fe1948e9706f5604b8cb50bc1ed3979",
938
+ feedObject: "0x5f6583b2b0fe1ecf94aaffeaab8a838794693960cea48c0da282d5f4a24be027"
939
+ }
940
+ }
941
+ },
902
942
  deep: {
903
943
  id: "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270",
904
944
  metaData: "0x6e60b051a08fa836f5a7acd7c464c8d9825bc29c44657fe170fe9b8e1e4770c0",
@@ -1144,6 +1184,10 @@ var TEST_ADDRESSES = {
1144
1184
  coinType: "0xb14f82d8506d139eacef109688d1b71e7236bcce9b2c0ad526abcd6aa5be7de0::scallop_sb_eth::SCALLOP_SB_ETH",
1145
1185
  treasury: "0xfd0f02def6358a1f266acfa1493d4707ee8387460d434fb667d63d755ff907ed"
1146
1186
  },
1187
+ sfdusd: {
1188
+ coinType: "0x6711551c1e7652a270d9fbf0eee25d99594c157cde3cb5fbb49035eb59b1b001::scallop_fdusd::SCALLOP_FDUSD",
1189
+ treasury: "0xdad9bc6293e694f67a5274ea51b596e0bdabfafc585ae6d7e82888e65f1a03e0"
1190
+ },
1147
1191
  sdeep: {
1148
1192
  coinType: "0xeb7a05a3224837c5e5503575aed0be73c091d1ce5e43aa3c3e716e0ae614608f::scallop_deep::SCALLOP_DEEP",
1149
1193
  treasury: "0xc63838fabe37b25ad897392d89876d920f5e0c6a406bf3abcb84753d2829bc88"
@@ -1382,8 +1426,8 @@ var calculateMarketPoolData = (utils, parsedMarketPoolData) => {
1382
1426
  supplyApy: utils.parseAprToApy(supplyApr.toNumber()),
1383
1427
  conversionRate: conversionRate.toNumber(),
1384
1428
  isIsolated: parsedMarketPoolData.isIsolated,
1385
- maxSupplyCoin: BigNumber(parsedMarketPoolData.supplyLimit).shiftedBy(coinDecimal).toNumber(),
1386
- maxBorrowCoin: BigNumber(parsedMarketPoolData.borrowLimit).shiftedBy(coinDecimal).toNumber()
1429
+ maxSupplyCoin: BigNumber(parsedMarketPoolData.supplyLimit).shiftedBy(-coinDecimal).toNumber(),
1430
+ maxBorrowCoin: BigNumber(parsedMarketPoolData.borrowLimit).shiftedBy(-coinDecimal).toNumber()
1387
1431
  };
1388
1432
  };
1389
1433
  var parseOriginMarketCollateralData = (originMarketCollateralData) => {
@@ -3368,28 +3412,60 @@ var queryRequiredMarketObjects = async (query, poolCoinNames) => {
3368
3412
  tasks.map((task) => task.isolatedAssetKey).filter((t) => !!t)
3369
3413
  )
3370
3414
  ]);
3371
- const mapObjects = (tasks2, fetchedObjects) => {
3415
+ const mapObjects = (tasks2, fetchedObjects, keyValue) => {
3372
3416
  const resultMap = {};
3373
- let fetchedIndex = 0;
3417
+ const fetchedObjectMap = fetchedObjects.reduce(
3418
+ (acc, obj) => {
3419
+ acc[obj.objectId] = obj;
3420
+ return acc;
3421
+ },
3422
+ {}
3423
+ );
3374
3424
  for (const task of tasks2) {
3375
- const key = task[Object.keys(task)[1]];
3376
- if (key) {
3377
- resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
3378
- fetchedIndex++;
3425
+ if (task[keyValue]) {
3426
+ resultMap[task.poolCoinName] = fetchedObjectMap[task[keyValue]];
3379
3427
  }
3380
3428
  }
3381
3429
  return resultMap;
3382
3430
  };
3383
- const balanceSheetMap = mapObjects(tasks, balanceSheetObjects);
3384
- const collateralStatMap = mapObjects(tasks, collateralStatObjects);
3385
- const borrowDynamicMap = mapObjects(tasks, borrowDynamicObjects);
3386
- const interestModelMap = mapObjects(tasks, interestModelObjects);
3387
- const riskModelMap = mapObjects(tasks, riskModelObjects);
3388
- const borrowFeeMap = mapObjects(tasks, borrowFeeObjects);
3389
- const supplyLimitMap = mapObjects(tasks, supplyLimitObjects);
3390
- const borrowLimitMap = mapObjects(tasks, borrowLimitObjects);
3391
- const isolatedAssetMap = mapObjects(tasks, isolatedAssetObjects);
3392
- return poolCoinNames.reduce(
3431
+ const balanceSheetMap = mapObjects(
3432
+ tasks,
3433
+ balanceSheetObjects,
3434
+ "balanceSheet"
3435
+ );
3436
+ const collateralStatMap = mapObjects(
3437
+ tasks,
3438
+ collateralStatObjects,
3439
+ "collateralStat"
3440
+ );
3441
+ const borrowDynamicMap = mapObjects(
3442
+ tasks,
3443
+ borrowDynamicObjects,
3444
+ "borrowDynamic"
3445
+ );
3446
+ const interestModelMap = mapObjects(
3447
+ tasks,
3448
+ interestModelObjects,
3449
+ "interestModel"
3450
+ );
3451
+ const riskModelMap = mapObjects(tasks, riskModelObjects, "riskModel");
3452
+ const borrowFeeMap = mapObjects(tasks, borrowFeeObjects, "borrowFeeKey");
3453
+ const supplyLimitMap = mapObjects(
3454
+ tasks,
3455
+ supplyLimitObjects,
3456
+ "supplyLimitKey"
3457
+ );
3458
+ const borrowLimitMap = mapObjects(
3459
+ tasks,
3460
+ borrowLimitObjects,
3461
+ "borrowLimitKey"
3462
+ );
3463
+ const isolatedAssetMap = mapObjects(
3464
+ tasks,
3465
+ isolatedAssetObjects,
3466
+ "isolatedAssetKey"
3467
+ );
3468
+ const result = poolCoinNames.reduce(
3393
3469
  (acc, name) => {
3394
3470
  acc[name] = {
3395
3471
  balanceSheet: balanceSheetMap[name],
@@ -3406,6 +3482,7 @@ var queryRequiredMarketObjects = async (query, poolCoinNames) => {
3406
3482
  },
3407
3483
  {}
3408
3484
  );
3485
+ return result;
3409
3486
  };
3410
3487
  var getMarketPools = async (query, poolCoinNames, indexer = false, coinPrices) => {
3411
3488
  coinPrices = coinPrices ?? await query.utils.getCoinPrices();
@@ -4128,7 +4205,7 @@ var getLending = async (query, poolCoinName, ownerAddress, indexer = false, mark
4128
4205
  return lending;
4129
4206
  };
4130
4207
  var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
4131
- const market = await query.queryMarket({ indexer });
4208
+ const market = await query.getMarketPools(void 0, { indexer });
4132
4209
  const coinPrices = await query.getAllCoinPrices({
4133
4210
  marketPools: market.pools
4134
4211
  });
@@ -4136,12 +4213,16 @@ var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
4136
4213
  query.getCoinAmounts(void 0, ownerAddress),
4137
4214
  query.getObligations(ownerAddress)
4138
4215
  ]);
4216
+ const obligationObjects = await queryMultipleObjects(
4217
+ query.cache,
4218
+ obligations.map((obligation) => obligation.id)
4219
+ );
4139
4220
  const obligationAccounts = {};
4140
4221
  await Promise.allSettled(
4141
- obligations.map(async (obligation) => {
4222
+ obligations.map(async (obligation, idx) => {
4142
4223
  obligationAccounts[obligation.keyId] = await getObligationAccount(
4143
4224
  query,
4144
- obligation.id,
4225
+ obligationObjects[idx] ?? obligation.id,
4145
4226
  ownerAddress,
4146
4227
  indexer,
4147
4228
  market,
@@ -4152,7 +4233,7 @@ var getObligationAccounts = async (query, ownerAddress, indexer = false) => {
4152
4233
  );
4153
4234
  return obligationAccounts;
4154
4235
  };
4155
- var getObligationAccount = async (query, obligationId, ownerAddress, indexer = false, market, coinPrices, coinAmounts) => {
4236
+ var getObligationAccount = async (query, obligation, ownerAddress, indexer = false, market, coinPrices, coinAmounts) => {
4156
4237
  const coinNames = Array.from(
4157
4238
  /* @__PURE__ */ new Set([...SUPPORT_POOLS, ...SUPPORT_COLLATERALS])
4158
4239
  );
@@ -4163,13 +4244,13 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
4163
4244
  coinPrices = coinPrices ?? await query.getAllCoinPrices({ marketPools: market.pools });
4164
4245
  coinAmounts = coinAmounts ?? await query.getCoinAmounts(coinNames, ownerAddress);
4165
4246
  const [obligationQuery, borrowIncentivePools, borrowIncentiveAccounts] = await Promise.all([
4166
- query.queryObligation(obligationId),
4247
+ query.queryObligation(obligation),
4167
4248
  query.getBorrowIncentivePools(void 0, {
4168
4249
  coinPrices,
4169
4250
  indexer,
4170
4251
  marketPools: market.pools
4171
4252
  }),
4172
- query.getBorrowIncentiveAccounts(obligationId)
4253
+ query.getBorrowIncentiveAccounts(obligation)
4173
4254
  ]);
4174
4255
  const collaterals = {};
4175
4256
  const debts = {};
@@ -4367,7 +4448,7 @@ var getObligationAccount = async (query, obligationId, ownerAddress, indexer = f
4367
4448
  const requiredCollateralValue = totalBorrowedValueWithWeight.isGreaterThan(0) ? totalRequiredCollateralValue : BigNumber5(0);
4368
4449
  const unhealthyCollateralValue = totalBorrowedValueWithWeight.minus(requiredCollateralValue).isGreaterThan(0) ? totalBorrowedValueWithWeight.minus(requiredCollateralValue) : BigNumber5(0);
4369
4450
  const obligationAccount = {
4370
- obligationId,
4451
+ obligationId: typeof obligation === "string" ? obligation : obligation.objectId,
4371
4452
  // Deposited collateral value (collateral balance)
4372
4453
  totalDepositedValue: totalDepositedValue.toNumber(),
4373
4454
  // Borrowed debt value (liabilities balance)
@@ -4718,21 +4799,29 @@ var queryRequiredSpoolObjects = async (query, stakePoolCoinNames) => {
4718
4799
  tasks.map((task) => task.sCoinTreasury).filter((t) => !!t)
4719
4800
  )
4720
4801
  ]);
4721
- const mapObjects = (tasks2, fetchedObjects) => {
4802
+ const mapObjects = (tasks2, fetchedObjects, keyValue) => {
4722
4803
  const resultMap = {};
4723
- let fetchedIndex = 0;
4804
+ const fetchedObjectMap = fetchedObjects.reduce(
4805
+ (acc, obj) => {
4806
+ acc[obj.objectId] = obj;
4807
+ return acc;
4808
+ },
4809
+ {}
4810
+ );
4724
4811
  for (const task of tasks2) {
4725
- const key = task[Object.keys(task)[1]];
4726
- if (key) {
4727
- resultMap[task.poolCoinName] = fetchedObjects[fetchedIndex];
4728
- fetchedIndex++;
4812
+ if (task[keyValue]) {
4813
+ resultMap[task.poolCoinName] = fetchedObjectMap[task[keyValue]];
4729
4814
  }
4730
4815
  }
4731
4816
  return resultMap;
4732
4817
  };
4733
- const spoolMap = mapObjects(tasks, spoolObjects);
4734
- const spoolRewardMap = mapObjects(tasks, spoolRewardObjects);
4735
- const sCoinTreasuryMap = mapObjects(tasks, sCoinTreasuryObjects);
4818
+ const spoolMap = mapObjects(tasks, spoolObjects, "spool");
4819
+ const spoolRewardMap = mapObjects(tasks, spoolRewardObjects, "spoolReward");
4820
+ const sCoinTreasuryMap = mapObjects(
4821
+ tasks,
4822
+ sCoinTreasuryObjects,
4823
+ "sCoinTreasury"
4824
+ );
4736
4825
  return stakePoolCoinNames.reduce(
4737
4826
  (acc, name) => {
4738
4827
  acc[name] = {