@cetusprotocol/aggregator-sdk 0.0.0-experimental-20250722120312 → 0.0.0-experimental-20250724183511

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
@@ -1,7 +1,7 @@
1
1
  import { SuiClient, getFullnodeUrl } from '@mysten/sui/client';
2
2
  import { normalizeSuiObjectId, SUI_FRAMEWORK_ADDRESS, SUI_CLOCK_OBJECT_ID } from '@mysten/sui/utils';
3
3
  import JSONbig from 'json-bigint';
4
- import { coinWithBalance, Transaction } from '@mysten/sui/transactions';
4
+ import { Transaction, coinWithBalance } from '@mysten/sui/transactions';
5
5
  import { SuiPythClient, SuiPriceServiceConnection } from '@pythnetwork/pyth-sui-js';
6
6
 
7
7
  var __create = Object.create;
@@ -4989,36 +4989,36 @@ var Env = /* @__PURE__ */ ((Env2) => {
4989
4989
  Env2[Env2["Testnet"] = 1] = "Testnet";
4990
4990
  return Env2;
4991
4991
  })(Env || {});
4992
- var Dex = /* @__PURE__ */ ((Dex29) => {
4993
- Dex29["CETUS"] = "CETUS";
4994
- Dex29["KRIYA"] = "KRIYA";
4995
- Dex29["FLOWX"] = "FLOWX";
4996
- Dex29["TURBOS"] = "TURBOS";
4997
- Dex29["AFTERMATH"] = "AFTERMATH";
4998
- Dex29["DEEPBOOK"] = "DEEPBOOK";
4999
- Dex29["DEEPBOOKV3"] = "DEEPBOOKV3";
5000
- Dex29["BLUEMOVE"] = "BLUEMOVE";
5001
- Dex29["BLUEFIN"] = "BLUEFIN";
5002
- Dex29["MOMENTUM"] = "MOMENTUM";
5003
- Dex29["MAGMA"] = "MAGMA";
5004
- Dex29["SCALLOP"] = "SCALLOP";
5005
- Dex29["STEAMM"] = "STEAMM";
5006
- Dex29["KRIYAV3"] = "KRIYAV3";
5007
- Dex29["FLOWXV3"] = "FLOWXV3";
5008
- Dex29["SUILEND"] = "SUILEND";
5009
- Dex29["SPRINGSUI"] = "SPRINGSUI";
5010
- Dex29["HAEDALPMM"] = "HAEDALPMM";
5011
- Dex29["OBRIC"] = "OBRIC";
5012
- Dex29["SEVENK"] = "SEVENK";
5013
- Dex29["STEAMM_OMM"] = "STEAMM_OMM";
5014
- Dex29["STEAMM_OMM_V2"] = "STEAMM_OMM_V2";
5015
- Dex29["METASTABLE"] = "METASTABLE";
5016
- Dex29["ALPHAFI"] = "ALPHAFI";
5017
- Dex29["VOLO"] = "VOLO";
5018
- Dex29["AFSUI"] = "AFSUI";
5019
- Dex29["HAEDAL"] = "HAEDAL";
5020
- Dex29["HAWAL"] = "HAWAL";
5021
- return Dex29;
4992
+ var Dex = /* @__PURE__ */ ((Dex2) => {
4993
+ Dex2["CETUS"] = "CETUS";
4994
+ Dex2["KRIYA"] = "KRIYA";
4995
+ Dex2["FLOWX"] = "FLOWX";
4996
+ Dex2["TURBOS"] = "TURBOS";
4997
+ Dex2["AFTERMATH"] = "AFTERMATH";
4998
+ Dex2["DEEPBOOK"] = "DEEPBOOK";
4999
+ Dex2["DEEPBOOKV3"] = "DEEPBOOKV3";
5000
+ Dex2["BLUEMOVE"] = "BLUEMOVE";
5001
+ Dex2["BLUEFIN"] = "BLUEFIN";
5002
+ Dex2["MOMENTUM"] = "MOMENTUM";
5003
+ Dex2["MAGMA"] = "MAGMA";
5004
+ Dex2["SCALLOP"] = "SCALLOP";
5005
+ Dex2["STEAMM"] = "STEAMM";
5006
+ Dex2["KRIYAV3"] = "KRIYAV3";
5007
+ Dex2["FLOWXV3"] = "FLOWXV3";
5008
+ Dex2["SUILEND"] = "SUILEND";
5009
+ Dex2["SPRINGSUI"] = "SPRINGSUI";
5010
+ Dex2["HAEDALPMM"] = "HAEDALPMM";
5011
+ Dex2["OBRIC"] = "OBRIC";
5012
+ Dex2["SEVENK"] = "SEVENK";
5013
+ Dex2["STEAMM_OMM"] = "STEAMM_OMM";
5014
+ Dex2["STEAMM_OMM_V2"] = "STEAMM_OMM_V2";
5015
+ Dex2["METASTABLE"] = "METASTABLE";
5016
+ Dex2["ALPHAFI"] = "ALPHAFI";
5017
+ Dex2["VOLO"] = "VOLO";
5018
+ Dex2["AFSUI"] = "AFSUI";
5019
+ Dex2["HAEDAL"] = "HAEDAL";
5020
+ Dex2["HAWAL"] = "HAWAL";
5021
+ return Dex2;
5022
5022
  })(Dex || {});
5023
5023
  var AggregatorConfig = class {
5024
5024
  constructor(endpoint, fullNodeUrl, signer, packages, env) {
@@ -5185,6 +5185,7 @@ var SuiZeroCoinFn = "0x2::coin::zero";
5185
5185
  var DEEPBOOK_PACKAGE_ID = "0x000000000000000000000000000000000000000000000000000000000000dee9";
5186
5186
  var DEEPBOOK_PUBLISHED_AT = "0x000000000000000000000000000000000000000000000000000000000000dee9";
5187
5187
  var CETUS_PUBLISHED_AT = "0x70968826ad1b4ba895753f634b0aea68d0672908ca1075a2abdf0fc9e0b2fc6a";
5188
+ var CETUS_V3_PUBLISHED_AT = "0xb85d33ef69a8308f7b1ae341e48bd8817476c144f14344d3ce612c16480d16f2";
5188
5189
  var MAINNET_CETUS_GLOBAL_CONFIG_ID = "0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f";
5189
5190
  var TESTNET_CETUS_GLOBAL_CONFIG_ID = "0x6f4149091a5aea0e818e7243a13adcfb403842d670b9a2089de058512620687a";
5190
5191
  var MAINNET_FLOWX_AMM_CONTAINER_ID = "0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511";
@@ -5353,7 +5354,7 @@ var AGGREGATOR_V3_CONFIG = {
5353
5354
  "SCALLOP",
5354
5355
  "SUILEND",
5355
5356
  "SPRINGSUI",
5356
- // Phase 4: Oracle-driven Routers
5357
+ // Phase 4: Oracle-driven Routers
5357
5358
  "HAEDALPMM",
5358
5359
  "OBRIC",
5359
5360
  "SEVENK",
@@ -6442,7 +6443,7 @@ function sortAndFlattenRoutes(routerData) {
6442
6443
  lastOccurrenceIndex.set(from, i);
6443
6444
  }
6444
6445
  }
6445
- for (const [tokenType, lastIndex] of lastOccurrenceIndex) {
6446
+ for (const [_tokenType, lastIndex] of lastOccurrenceIndex) {
6446
6447
  flattenedPaths[lastIndex].isLastUseOfIntermediateToken = true;
6447
6448
  }
6448
6449
  return {
@@ -6508,6 +6509,44 @@ function topologicalSortKahn(dependencies) {
6508
6509
  return result;
6509
6510
  }
6510
6511
 
6512
+ // src/utils/aggregator-config.ts
6513
+ var AggregatorConfig2 = class {
6514
+ static setEnv(env) {
6515
+ this.currentEnv = env;
6516
+ }
6517
+ static getEnv() {
6518
+ return this.currentEnv;
6519
+ }
6520
+ static getPublishedAtV2(env) {
6521
+ const targetEnv = env != null ? env : this.currentEnv;
6522
+ return this.publishedAtV2Map.get(targetEnv) || "";
6523
+ }
6524
+ static getPublishedAtV2Extend(env) {
6525
+ const targetEnv = env != null ? env : this.currentEnv;
6526
+ return this.publishedAtV2ExtendMap.get(targetEnv) || "";
6527
+ }
6528
+ static getPublishedAtV2Extend2(env) {
6529
+ const targetEnv = env != null ? env : this.currentEnv;
6530
+ return this.publishedAtV2Extend2Map.get(targetEnv) || "";
6531
+ }
6532
+ };
6533
+ AggregatorConfig2.publishedAtV2Map = /* @__PURE__ */ new Map([
6534
+ [0 /* Mainnet */, "0x8ae871505a80d8bf6bf9c05906cda6edfeea460c85bebe2e26a4313f5e67874a"],
6535
+ // version 12
6536
+ [1 /* Testnet */, "0x52eae33adeb44de55cfb3f281d4cc9e02d976181c0952f5323648b5717b33934"]
6537
+ ]);
6538
+ AggregatorConfig2.publishedAtV2ExtendMap = /* @__PURE__ */ new Map([
6539
+ [0 /* Mainnet */, "0x8a2f7a5b20665eeccc79de3aa37c3b6c473eca233ada1e1cd4678ec07d4d4073"],
6540
+ // version 17
6541
+ [1 /* Testnet */, "0xabb6a81c8a216828e317719e06125de5bb2cb0fe8f9916ff8c023ca5be224c78"]
6542
+ ]);
6543
+ AggregatorConfig2.publishedAtV2Extend2Map = /* @__PURE__ */ new Map([
6544
+ [0 /* Mainnet */, "0x5cb7499fc49c2642310e24a4ecffdbee00133f97e80e2b45bca90c64d55de880"],
6545
+ // version 8
6546
+ [1 /* Testnet */, "0x0"]
6547
+ ]);
6548
+ AggregatorConfig2.currentEnv = 0 /* Mainnet */;
6549
+
6511
6550
  // src/transaction/aftermath.ts
6512
6551
  var import_bn5 = __toESM(require_bn());
6513
6552
  var Aftermath = class {
@@ -6548,7 +6587,7 @@ var Aftermath = class {
6548
6587
  inputCoin
6549
6588
  ];
6550
6589
  const publishedAt = getAggregatorV2PublishedAt(
6551
- client.publishedAtV2(),
6590
+ AggregatorConfig2.getPublishedAtV2(),
6552
6591
  packages
6553
6592
  );
6554
6593
  const res = txb.moveCall({
@@ -6872,21 +6911,29 @@ var Cetus = class {
6872
6911
  var import_bn7 = __toESM(require_bn());
6873
6912
 
6874
6913
  // src/math.ts
6875
- __toESM(require_bn());
6914
+ var import_bn6 = __toESM(require_bn());
6876
6915
  function CalculateAmountLimit(expectAmount, byAmountIn, slippage) {
6877
- let amountLimit = ZERO;
6878
- if (byAmountIn) {
6879
- amountLimit = expectAmount.muln(1 - slippage);
6880
- } else {
6881
- amountLimit = expectAmount.muln(1 + slippage);
6882
- }
6883
- return Number(amountLimit.toString());
6916
+ return Number(
6917
+ CalculateAmountLimitByDecimal(
6918
+ new decimal_default(expectAmount.toString()),
6919
+ byAmountIn,
6920
+ slippage
6921
+ ).toFixed(0)
6922
+ );
6884
6923
  }
6885
6924
  function CalculateAmountLimitBN(expectAmount, byAmountIn, slippage) {
6925
+ const amountLimit = CalculateAmountLimitByDecimal(
6926
+ new decimal_default(expectAmount.toString()),
6927
+ byAmountIn,
6928
+ slippage
6929
+ );
6930
+ return new import_bn6.default(amountLimit.toFixed(0));
6931
+ }
6932
+ function CalculateAmountLimitByDecimal(expectAmount, byAmountIn, slippage) {
6886
6933
  if (byAmountIn) {
6887
- return expectAmount.muln(1 - slippage);
6934
+ return expectAmount.mul(1 - slippage);
6888
6935
  } else {
6889
- return expectAmount.muln(1 + slippage);
6936
+ return expectAmount.mul(1 + slippage);
6890
6937
  }
6891
6938
  }
6892
6939
  function sqrtPriceX64ToPrice(sqrtPriceStr, decimalsA, decimalsB) {
@@ -7368,13 +7415,13 @@ var SteammCPMM = class {
7368
7415
  if (path.extendedDetails.steamm_lending_market_type == null) {
7369
7416
  throw new Error("Steamm lending market type not supported");
7370
7417
  }
7371
- if (path.extendedDetails.steamm_b_coin_a_type == null) {
7418
+ if (path.extendedDetails.steamm_btoken_a_type == null) {
7372
7419
  throw new Error("Steamm b coin a type not supported");
7373
7420
  }
7374
- if (path.extendedDetails.steamm_b_coin_b_type == null) {
7421
+ if (path.extendedDetails.steamm_btoken_b_type == null) {
7375
7422
  throw new Error("Steamm b coin b type not supported");
7376
7423
  }
7377
- if (path.extendedDetails.steamm_lp_token == null) {
7424
+ if (path.extendedDetails.steamm_lp_token_type == null) {
7378
7425
  throw new Error("Steamm lp token not supported");
7379
7426
  }
7380
7427
  }
@@ -7396,9 +7443,9 @@ var SteammCPMM = class {
7396
7443
  path.extendedDetails.steamm_lending_market_type,
7397
7444
  coinAType,
7398
7445
  coinBType,
7399
- path.extendedDetails.steamm_b_coin_a_type,
7400
- path.extendedDetails.steamm_b_coin_b_type,
7401
- path.extendedDetails.steamm_lp_token
7446
+ path.extendedDetails.steamm_btoken_a_type,
7447
+ path.extendedDetails.steamm_btoken_b_type,
7448
+ path.extendedDetails.steamm_lp_token_type
7402
7449
  ],
7403
7450
  arguments: args
7404
7451
  });
@@ -7434,13 +7481,13 @@ var SteammOmm = class {
7434
7481
  if (path.extendedDetails.steamm_lending_market_type == null) {
7435
7482
  throw new Error("Steamm lending market type not supported");
7436
7483
  }
7437
- if (path.extendedDetails.steamm_b_coin_a_type == null) {
7484
+ if (path.extendedDetails.steamm_btoken_a_type == null) {
7438
7485
  throw new Error("Steamm b coin a type not supported");
7439
7486
  }
7440
- if (path.extendedDetails.steamm_b_coin_b_type == null) {
7487
+ if (path.extendedDetails.steamm_btoken_b_type == null) {
7441
7488
  throw new Error("Steamm b coin b type not supported");
7442
7489
  }
7443
- if (path.extendedDetails.steamm_lp_token == null) {
7490
+ if (path.extendedDetails.steamm_lp_token_type == null) {
7444
7491
  throw new Error("Steamm lp token not supported");
7445
7492
  }
7446
7493
  if (path.extendedDetails.steamm_oracle_registry_id == null) {
@@ -7509,9 +7556,9 @@ var SteammOmm = class {
7509
7556
  path.extendedDetails.steamm_lending_market_type,
7510
7557
  coinAType,
7511
7558
  coinBType,
7512
- path.extendedDetails.steamm_b_coin_a_type,
7513
- path.extendedDetails.steamm_b_coin_b_type,
7514
- path.extendedDetails.steamm_lp_token
7559
+ path.extendedDetails.steamm_btoken_a_type,
7560
+ path.extendedDetails.steamm_btoken_b_type,
7561
+ path.extendedDetails.steamm_lp_token_type
7515
7562
  ],
7516
7563
  arguments: args
7517
7564
  });
@@ -7792,13 +7839,13 @@ var SteammOmmV2 = class {
7792
7839
  if (path.extendedDetails.steamm_lending_market_type == null) {
7793
7840
  throw new Error("Steamm lending market type not supported");
7794
7841
  }
7795
- if (path.extendedDetails.steamm_b_coin_a_type == null) {
7842
+ if (path.extendedDetails.steamm_btoken_a_type == null) {
7796
7843
  throw new Error("Steamm b coin a type not supported");
7797
7844
  }
7798
- if (path.extendedDetails.steamm_b_coin_b_type == null) {
7845
+ if (path.extendedDetails.steamm_btoken_b_type == null) {
7799
7846
  throw new Error("Steamm b coin b type not supported");
7800
7847
  }
7801
- if (path.extendedDetails.steamm_lp_token == null) {
7848
+ if (path.extendedDetails.steamm_lp_token_type == null) {
7802
7849
  throw new Error("Steamm lp token not supported");
7803
7850
  }
7804
7851
  if (path.extendedDetails.steamm_oracle_registry_id == null) {
@@ -7867,9 +7914,9 @@ var SteammOmmV2 = class {
7867
7914
  path.extendedDetails.steamm_lending_market_type,
7868
7915
  coinAType,
7869
7916
  coinBType,
7870
- path.extendedDetails.steamm_b_coin_a_type,
7871
- path.extendedDetails.steamm_b_coin_b_type,
7872
- path.extendedDetails.steamm_lp_token
7917
+ path.extendedDetails.steamm_btoken_a_type,
7918
+ path.extendedDetails.steamm_btoken_b_type,
7919
+ path.extendedDetails.steamm_lp_token_type
7873
7920
  ],
7874
7921
  arguments: args
7875
7922
  });
@@ -8027,6 +8074,7 @@ var _AggregatorClient = class _AggregatorClient {
8027
8074
  this.signer = params.signer || "";
8028
8075
  this.env = params.env || 0 /* Mainnet */;
8029
8076
  this.allCoins = /* @__PURE__ */ new Map();
8077
+ AggregatorConfig2.setEnv(this.env);
8030
8078
  const config2 = _AggregatorClient.CONFIG[this.env];
8031
8079
  this.pythConnections = this.newPythClients((_a = params.pythUrls) != null ? _a : []);
8032
8080
  this.pythClient = new SuiPythClient(
@@ -8547,26 +8595,14 @@ var _AggregatorClient = class _AggregatorClient {
8547
8595
  }
8548
8596
  // Include cetus、deepbookv2、flowxv2 & v3、kriyav2 & v3、turbos、aftermath、haedal、afsui、volo、bluemove
8549
8597
  publishedAtV2() {
8550
- if (this.env === 0 /* Mainnet */) {
8551
- return "0x8ae871505a80d8bf6bf9c05906cda6edfeea460c85bebe2e26a4313f5e67874a";
8552
- } else {
8553
- return "0x52eae33adeb44de55cfb3f281d4cc9e02d976181c0952f5323648b5717b33934";
8554
- }
8598
+ return AggregatorConfig2.getPublishedAtV2(this.env);
8555
8599
  }
8556
8600
  // Include deepbookv3, scallop, bluefin
8557
8601
  publishedAtV2Extend() {
8558
- if (this.env === 0 /* Mainnet */) {
8559
- return "0x8a2f7a5b20665eeccc79de3aa37c3b6c473eca233ada1e1cd4678ec07d4d4073";
8560
- } else {
8561
- return "0xabb6a81c8a216828e317719e06125de5bb2cb0fe8f9916ff8c023ca5be224c78";
8562
- }
8602
+ return AggregatorConfig2.getPublishedAtV2Extend(this.env);
8563
8603
  }
8564
8604
  publishedAtV2Extend2() {
8565
- if (this.env === 0 /* Mainnet */) {
8566
- return "0x5cb7499fc49c2642310e24a4ecffdbee00133f97e80e2b45bca90c64d55de880";
8567
- } else {
8568
- return "0x0";
8569
- }
8605
+ return AggregatorConfig2.getPublishedAtV2Extend2(this.env);
8570
8606
  }
8571
8607
  deepbookv3DeepFeeType() {
8572
8608
  if (this.env === 0 /* Mainnet */) {
@@ -8771,7 +8807,7 @@ _AggregatorClient.CONFIG = {
8771
8807
  pythStateId: "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8"
8772
8808
  }
8773
8809
  };
8774
- var AggregatorClient28 = _AggregatorClient;
8810
+ var AggregatorClient = _AggregatorClient;
8775
8811
  function findPythPriceIDs(routes) {
8776
8812
  const priceIDs = /* @__PURE__ */ new Set();
8777
8813
  for (const route of routes) {
@@ -9522,7 +9558,7 @@ var ScallopRouter = class {
9522
9558
  if (flattenedPath.path.publishedAt == null) {
9523
9559
  throw new Error("Scallop not set publishedAt");
9524
9560
  }
9525
- const [coinAType, coinBType] = path.direction ? [path.from, path.target] : [path.target, path.from];
9561
+ const [coinAType, coinBType] = path.direction ? [path.from, path.target] : [path.from, path.target];
9526
9562
  const amountIn = flattenedPath.isLastUseOfIntermediateToken ? AGGREGATOR_V3_CONFIG.MAX_AMOUNT_IN : path.amountIn;
9527
9563
  if (path.extendedDetails == null) {
9528
9564
  throw new Error("Extended details not supported");
@@ -10550,7 +10586,7 @@ function transfer_or_destroy_coin(params, txb) {
10550
10586
  arguments: [coin]
10551
10587
  });
10552
10588
  }
10553
- var AggregatorClientV3 = class extends AggregatorClient28 {
10589
+ var AggregatorClientV3 = class extends AggregatorClient {
10554
10590
  constructor(params) {
10555
10591
  var _a;
10556
10592
  const v3Params = __spreadProps(__spreadValues({}, params), {
@@ -10643,6 +10679,8 @@ var AggregatorClientV3 = class extends AggregatorClient28 {
10643
10679
  throw new Error(CLIENT_CONFIG.ERRORS.QUOTE_ID_REQUIRED);
10644
10680
  }
10645
10681
  const processedData = sortAndFlattenRoutes(routerData);
10682
+ console.log("expectAmountOut", expectAmountOut);
10683
+ console.log("amountOutLimit", amountOutLimit);
10646
10684
  const swapCtx = newSwapContext(
10647
10685
  {
10648
10686
  quoteID: processedData.quoteID,
@@ -10779,6 +10817,9 @@ var AggregatorClientV3 = class extends AggregatorClient28 {
10779
10817
  byAmountIn,
10780
10818
  slippage
10781
10819
  );
10820
+ console.log("expectedAmountOut", expectedAmountOut.toString());
10821
+ console.log("expectedAmountIn", expectedAmountIn.toString());
10822
+ console.log("amountLimit", amountLimit.toString());
10782
10823
  if (!params.routers.packages || !params.routers.packages.get(PACKAGE_NAMES.AGGREGATOR_V3)) {
10783
10824
  throw new Error(CLIENT_CONFIG.ERRORS.PACKAGES_REQUIRED);
10784
10825
  }
@@ -10967,13 +11008,143 @@ var AggregatorClientV3 = class extends AggregatorClient28 {
10967
11008
  return this.fixableRouterSwapV3(params);
10968
11009
  });
10969
11010
  }
11011
+ swapInPools(params) {
11012
+ return __async(this, null, function* () {
11013
+ let result;
11014
+ try {
11015
+ result = yield this.swapInPoolsV3(params);
11016
+ } catch (e) {
11017
+ console.error("swapInPoolsV3 error:", e);
11018
+ return null;
11019
+ }
11020
+ return result;
11021
+ });
11022
+ }
11023
+ swapInPoolsV3(params) {
11024
+ return __async(this, null, function* () {
11025
+ var _a, _b, _c, _d, _e;
11026
+ const { from, target, amount, byAmountIn, pools } = params;
11027
+ const fromCoin = completionCoin(from);
11028
+ const targetCoin = completionCoin(target);
11029
+ const tx = new Transaction();
11030
+ const direction = compareCoins(fromCoin, targetCoin);
11031
+ const coinA = direction ? fromCoin : targetCoin;
11032
+ const coinB = direction ? targetCoin : fromCoin;
11033
+ const typeArguments = [coinA, coinB];
11034
+ const integratePublishedAt = this.env === 0 /* Mainnet */ ? "0xb2db7142fa83210a7d78d9c12ac49c043b3cbbd482224fea6e3da00aa5a5ae2d" : "0x4f920e1ef6318cfba77e20a0538a419a5a504c14230169438b99aba485db40a6";
11035
+ for (let i = 0; i < pools.length; i++) {
11036
+ const args = [
11037
+ tx.object(pools[i]),
11038
+ tx.pure.bool(direction),
11039
+ tx.pure.bool(byAmountIn),
11040
+ tx.pure.u64(amount.toString())
11041
+ ];
11042
+ tx.moveCall({
11043
+ target: `${integratePublishedAt}::fetcher_script::calculate_swap_result`,
11044
+ arguments: args,
11045
+ typeArguments
11046
+ });
11047
+ }
11048
+ if (!this.signer) {
11049
+ this.signer = "0x0";
11050
+ }
11051
+ const simulateRes = yield this.client.devInspectTransactionBlock({
11052
+ transactionBlock: tx,
11053
+ sender: this.signer
11054
+ });
11055
+ if (simulateRes.error != null) {
11056
+ console.log("simulateRes.error", simulateRes.error);
11057
+ throw new Error("Simulation error: " + simulateRes.error);
11058
+ }
11059
+ const valueData = (_a = simulateRes.events) == null ? void 0 : _a.filter((item) => {
11060
+ return item.type.includes("CalculatedSwapResultEvent");
11061
+ });
11062
+ if (valueData.length === 0 || valueData.length !== pools.length) {
11063
+ throw new Error("Simulate event result error");
11064
+ }
11065
+ let tempMaxAmount = byAmountIn ? new import_bn9.default(0) : new import_bn9.default(U64_MAX);
11066
+ let tempIndex = 0;
11067
+ for (let i = 0; i < valueData.length; i += 1) {
11068
+ if (valueData[i].parsedJson.data.is_exceed) {
11069
+ continue;
11070
+ }
11071
+ if (params.byAmountIn) {
11072
+ const amount2 = new import_bn9.default(valueData[i].parsedJson.data.amount_out);
11073
+ if (amount2.gt(tempMaxAmount)) {
11074
+ tempIndex = i;
11075
+ tempMaxAmount = amount2;
11076
+ }
11077
+ } else {
11078
+ const amount2 = new import_bn9.default(valueData[i].parsedJson.data.amount_out);
11079
+ if (amount2.lt(tempMaxAmount)) {
11080
+ tempIndex = i;
11081
+ tempMaxAmount = amount2;
11082
+ }
11083
+ }
11084
+ }
11085
+ const event = valueData[tempIndex].parsedJson.data;
11086
+ const currentSqrtPrice = event.step_results[0].current_sqrt_price;
11087
+ const [decimalA, decimalB] = yield Promise.all([
11088
+ this.client.getCoinMetadata({ coinType: coinA }).then((metadata) => metadata == null ? void 0 : metadata.decimals),
11089
+ this.client.getCoinMetadata({ coinType: coinB }).then((metadata) => metadata == null ? void 0 : metadata.decimals)
11090
+ ]);
11091
+ if (decimalA == null || decimalB == null) {
11092
+ throw new Error("Cannot get coin decimals");
11093
+ }
11094
+ const sqrtPriceNum = new import_bn9.default(currentSqrtPrice);
11095
+ const price = sqrtPriceNum.mul(sqrtPriceNum).div(new import_bn9.default(2).pow(new import_bn9.default(128)));
11096
+ const priceScale = new import_bn9.default(10).pow(new import_bn9.default(decimalB - decimalA));
11097
+ const initialPriceNum = price.div(priceScale).toNumber();
11098
+ const initialPrice = new decimal_default(initialPriceNum);
11099
+ const feeRate = Number(event.fee_rate) / 1e6;
11100
+ const pureAmountIn = new import_bn9.default((_b = event.amount_in) != null ? _b : 0);
11101
+ const feeAmount = new import_bn9.default((_c = event.fee_amount) != null ? _c : 0);
11102
+ const amountIn = pureAmountIn.add(feeAmount);
11103
+ const routeData = {
11104
+ amountIn,
11105
+ amountOut: new import_bn9.default((_d = event.amount_out) != null ? _d : 0),
11106
+ routes: [
11107
+ {
11108
+ path: [
11109
+ {
11110
+ id: pools[tempIndex],
11111
+ direction,
11112
+ provider: CETUS,
11113
+ from: fromCoin,
11114
+ target: targetCoin,
11115
+ feeRate,
11116
+ amountIn: amountIn.toString(),
11117
+ amountOut: event.amount_out,
11118
+ publishedAt: CETUS_V3_PUBLISHED_AT,
11119
+ extendedDetails: {
11120
+ afterSqrtPrice: event.after_sqrt_price
11121
+ }
11122
+ }
11123
+ ],
11124
+ amountIn,
11125
+ amountOut: new import_bn9.default((_e = event.amount_out) != null ? _e : 0),
11126
+ initialPrice
11127
+ }
11128
+ ],
11129
+ insufficientLiquidity: false,
11130
+ byAmountIn: params.byAmountIn,
11131
+ quoteID: "cetus-pools-fallback",
11132
+ packages: /* @__PURE__ */ new Map([
11133
+ [
11134
+ PACKAGE_NAMES.AGGREGATOR_V3,
11135
+ AGGREGATOR_V3_CONFIG.DEFAULT_PUBLISHED_AT.Mainnet
11136
+ ]
11137
+ ])
11138
+ };
11139
+ const result = {
11140
+ isExceed: event.is_exceed,
11141
+ routeData
11142
+ };
11143
+ return result;
11144
+ });
11145
+ }
10970
11146
  };
10971
11147
 
10972
- // src/transaction/index.ts
10973
- var AGGREGATOR_V2 = "aggregator_v2";
10974
- var AGGREGATOR_V2_EXTEND = "aggregator_v2_extend";
10975
- var AGGREGATOR_V2_EXTEND2 = "aggregator_v2_extend2";
10976
-
10977
11148
  // src/types/sui.ts
10978
11149
  var getDefaultSuiInputType = (value) => {
10979
11150
  if (typeof value === "string" && value.startsWith("0x")) {
@@ -10999,4 +11170,4 @@ decimal.js/decimal.mjs:
10999
11170
  *)
11000
11171
  */
11001
11172
 
11002
- export { AFSUI, AFTERMATH, AFTERMATH_AMM, AFTERMATH_MODULE, AGGREGATOR, AGGREGATOR_V2, AGGREGATOR_V2_EXTEND, AGGREGATOR_V2_EXTEND2, AGGREGATOR_V3_CONFIG, ALL_DEXES, ALPHAFI, Afsui, Aftermath, AggregatorClient28 as AggregatorClient, AggregatorClientV3, AggregatorConfig, AggregatorError, AggregatorServerErrorCode, Alphafi, BLUEFIN, BLUEMOVE, Bluefin, Bluemove, CETUS, CETUS_DEX, CETUS_MODULE, CETUS_PUBLISHED_AT, CHECK_COINS_THRESHOLD_FUNC, CLIENT_CONFIG, CLOCK_ADDRESS, Cetus, CoinInfoAddress, CoinStoreAddress, CoinUtils, ConfigErrorCode, DEEPBOOKV2, DEEPBOOKV3, DEEPBOOK_CLOB_V2_MODULE, DEEPBOOK_CUSTODIAN_V2_MODULE, DEEPBOOK_DEX, DEEPBOOK_MODULE, DEEPBOOK_PACKAGE_ID, DEEPBOOK_PUBLISHED_AT, DEEPBOOK_V3_DEEP_FEE_TYPES, DEFAULT_AGG_V2_ENDPOINT, DEFAULT_AGG_V3_ENDPOINT, DEFAULT_GAS_BUDGET_FOR_MERGE, DEFAULT_GAS_BUDGET_FOR_SPLIT, DEFAULT_GAS_BUDGET_FOR_STAKE, DEFAULT_GAS_BUDGET_FOR_TRANSFER, DEFAULT_GAS_BUDGET_FOR_TRANSFER_SUI, DEFAULT_NFT_TRANSFER_GAS_FEE, DeepbookV2, DeepbookV3, Dex, Env, FLOWXV2, FLOWXV3, FLOWX_AMM, FLOWX_AMM_MODULE, FlashSwapA2BFunc, FlashSwapB2AFunc, FlashSwapFunc, FlashSwapWithPartnerA2BFunc, FlashSwapWithPartnerB2AFunc, FlashSwapWithPartnerFunc, FlowxV2, FlowxV3, GAS_SYMBOL, GAS_TYPE_ARG, GAS_TYPE_ARG_LONG, HAEDAL, HAEDALPMM, HAWAL, HaWAL, Haedal, HaedalPmm, INTEGRATE, JOIN_FUNC, KRIYA, KRIYAV3, KRIYA_DEX, KRIYA_MODULE, KriyaV2, KriyaV3, MAGMA, MAINNET_AFTERMATH_INSURANCE_FUND_ID, MAINNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID, MAINNET_AFTERMATH_REFERRAL_VAULT_ID, MAINNET_AFTERMATH_REGISTRY_ID, MAINNET_AFTERMATH_TREASURY_ID, MAINNET_CETUS_GLOBAL_CONFIG_ID, MAINNET_FLOWX_AMM_CONTAINER_ID, METASTABLE, MOMENTUM, Magma, Metastable, Momentum, OBRIC, ONE, Obric, PACKAGE_NAMES, PAY_MODULE, POOL_MODULT, PUBLISHED_ADDRESSES, PYTH_CONFIG, REPAY_FLASH_SWAP_A2B_FUNC, REPAY_FLASH_SWAP_B2A_FUNC, REPAY_FLASH_SWAP_WITH_PARTNER_A2B_FUNC, REPAY_FLASH_SWAP_WITH_PARTNER_B2A_FUNC, RepayFalshSwapFunc, RepayFlashSwapWithPartnerFunc, SCALLOP, SEVENK, SPRINGSUI, STEAMM, STEAMM_OMM, STEAMM_OMM_V2, SUILEND, SUI_SYSTEM_STATE_OBJECT_ID, SWAP_A2B_FUNC, SWAP_B2A_FUNC, Scallop, Sevenk, SteammCPMM, SteammOmm, SteammOmmV2, SuiZeroCoinFn, Suilend, TEN_POW_NINE, TESTNET_AFTERMATH_INSURANCE_FUND_ID, TESTNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID, TESTNET_AFTERMATH_REFERRAL_VAULT_ID, TESTNET_AFTERMATH_REGISTRY_ID, TESTNET_AFTERMATH_TREASURY_ID, TESTNET_CETUS_GLOBAL_CONFIG_ID, TESTNET_FLOWX_AMM_CONTAINER_ID, TRANSFER_ACCOUNT_CAP, TRANSFER_OR_DESTORY_COIN_FUNC, TURBOS, TURBOS_DEX, TURBOS_MODULE, TURBOS_VERSIONED, TWO, TransactionErrorCode, Turbos, TypesErrorCode, U128, U64_MAX, U64_MAX_BN, UTILS_MODULE, VOLO, Volo, ZERO, buildInputCoin, calculateGasEfficiency, calculatePriceImpact, checkInvalidSuiAddress, compareCoins, compareGasMetrics, completionCoin, composeType, createTarget, dealWithFastRouterSwapParamsForMsafe, exportToCSV, exportToJSON, extractAddressFromType, extractGasMetrics, extractStructTagFromType, extractTimestampFromDowngradeUuid6, fixSuiObjectId, formatGasMetrics, generateDowngradeUuid6, generateSimpleDowngradeUuid6, getAggregatorServerErrorMessage, getAggregatorV2Extend2PublishedAt, getAggregatorV2ExtendPublishedAt, getAggregatorV2PublishedAt, getDeepbookV3Config, getDefaultSuiInputType, getOrCreateAccountCap, getRouterResult, isSortedSymbols, isValidDowngradeUuid6, mintZeroCoin, normalizeCoinType, parseAftermathFeeType, parseTurbosPoolFeeType, patchFixSuiObjectId, printTransaction, processEndpoint, restituteMsafeFastRouterSwapParams, sortAndFlattenRoutes };
11173
+ export { AFSUI, AFTERMATH, AFTERMATH_AMM, AFTERMATH_MODULE, AGGREGATOR, AGGREGATOR_V3_CONFIG, ALL_DEXES, ALPHAFI, AggregatorClient, AggregatorClientV3, AggregatorConfig, AggregatorError, AggregatorServerErrorCode, BLUEFIN, BLUEMOVE, CETUS, CETUS_DEX, CETUS_MODULE, CETUS_PUBLISHED_AT, CETUS_V3_PUBLISHED_AT, CHECK_COINS_THRESHOLD_FUNC, CLIENT_CONFIG, CLOCK_ADDRESS, CoinInfoAddress, CoinStoreAddress, CoinUtils, ConfigErrorCode, DEEPBOOKV2, DEEPBOOKV3, DEEPBOOK_CLOB_V2_MODULE, DEEPBOOK_CUSTODIAN_V2_MODULE, DEEPBOOK_DEX, DEEPBOOK_MODULE, DEEPBOOK_PACKAGE_ID, DEEPBOOK_PUBLISHED_AT, DEEPBOOK_V3_DEEP_FEE_TYPES, DEFAULT_AGG_V2_ENDPOINT, DEFAULT_AGG_V3_ENDPOINT, DEFAULT_GAS_BUDGET_FOR_MERGE, DEFAULT_GAS_BUDGET_FOR_SPLIT, DEFAULT_GAS_BUDGET_FOR_STAKE, DEFAULT_GAS_BUDGET_FOR_TRANSFER, DEFAULT_GAS_BUDGET_FOR_TRANSFER_SUI, DEFAULT_NFT_TRANSFER_GAS_FEE, Dex, Env, FLOWXV2, FLOWXV3, FLOWX_AMM, FLOWX_AMM_MODULE, FlashSwapA2BFunc, FlashSwapB2AFunc, FlashSwapFunc, FlashSwapWithPartnerA2BFunc, FlashSwapWithPartnerB2AFunc, FlashSwapWithPartnerFunc, GAS_SYMBOL, GAS_TYPE_ARG, GAS_TYPE_ARG_LONG, HAEDAL, HAEDALPMM, HAWAL, INTEGRATE, JOIN_FUNC, KRIYA, KRIYAV3, KRIYA_DEX, KRIYA_MODULE, MAGMA, MAINNET_AFTERMATH_INSURANCE_FUND_ID, MAINNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID, MAINNET_AFTERMATH_REFERRAL_VAULT_ID, MAINNET_AFTERMATH_REGISTRY_ID, MAINNET_AFTERMATH_TREASURY_ID, MAINNET_CETUS_GLOBAL_CONFIG_ID, MAINNET_FLOWX_AMM_CONTAINER_ID, METASTABLE, MOMENTUM, OBRIC, ONE, PACKAGE_NAMES, PAY_MODULE, POOL_MODULT, PUBLISHED_ADDRESSES, PYTH_CONFIG, REPAY_FLASH_SWAP_A2B_FUNC, REPAY_FLASH_SWAP_B2A_FUNC, REPAY_FLASH_SWAP_WITH_PARTNER_A2B_FUNC, REPAY_FLASH_SWAP_WITH_PARTNER_B2A_FUNC, RepayFalshSwapFunc, RepayFlashSwapWithPartnerFunc, SCALLOP, SEVENK, SPRINGSUI, STEAMM, STEAMM_OMM, STEAMM_OMM_V2, SUILEND, SUI_SYSTEM_STATE_OBJECT_ID, SWAP_A2B_FUNC, SWAP_B2A_FUNC, SuiZeroCoinFn, TEN_POW_NINE, TESTNET_AFTERMATH_INSURANCE_FUND_ID, TESTNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID, TESTNET_AFTERMATH_REFERRAL_VAULT_ID, TESTNET_AFTERMATH_REGISTRY_ID, TESTNET_AFTERMATH_TREASURY_ID, TESTNET_CETUS_GLOBAL_CONFIG_ID, TESTNET_FLOWX_AMM_CONTAINER_ID, TRANSFER_ACCOUNT_CAP, TRANSFER_OR_DESTORY_COIN_FUNC, TURBOS, TURBOS_DEX, TURBOS_MODULE, TURBOS_VERSIONED, TWO, TransactionErrorCode, TypesErrorCode, U128, U64_MAX, U64_MAX_BN, UTILS_MODULE, VOLO, ZERO, buildInputCoin, calculateGasEfficiency, calculatePriceImpact, checkInvalidSuiAddress, compareCoins, compareGasMetrics, completionCoin, composeType, createTarget, dealWithFastRouterSwapParamsForMsafe, exportToCSV, exportToJSON, extractAddressFromType, extractGasMetrics, extractStructTagFromType, extractTimestampFromDowngradeUuid6, fixSuiObjectId, formatGasMetrics, generateDowngradeUuid6, generateSimpleDowngradeUuid6, getAggregatorServerErrorMessage, getAggregatorV2Extend2PublishedAt, getAggregatorV2ExtendPublishedAt, getAggregatorV2PublishedAt, getDeepbookV3Config, getDefaultSuiInputType, getOrCreateAccountCap, getRouterResult, isSortedSymbols, isValidDowngradeUuid6, mintZeroCoin, normalizeCoinType, parseAftermathFeeType, parseTurbosPoolFeeType, patchFixSuiObjectId, printTransaction, processEndpoint, restituteMsafeFastRouterSwapParams, sortAndFlattenRoutes, swapInPools };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cetusprotocol/aggregator-sdk",
3
- "version": "0.0.0-experimental-20250722120312",
3
+ "version": "0.0.0-experimental-20250724183511",
4
4
  "sideEffects": false,
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",