@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.d.mts +8 -197
- package/dist/index.d.ts +8 -197
- package/dist/index.js +258 -115
- package/dist/index.mjs +257 -86
- package/package.json +1 -1
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 {
|
|
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__ */ ((
|
|
4993
|
-
|
|
4994
|
-
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
|
|
4998
|
-
|
|
4999
|
-
|
|
5000
|
-
|
|
5001
|
-
|
|
5002
|
-
|
|
5003
|
-
|
|
5004
|
-
|
|
5005
|
-
|
|
5006
|
-
|
|
5007
|
-
|
|
5008
|
-
|
|
5009
|
-
|
|
5010
|
-
|
|
5011
|
-
|
|
5012
|
-
|
|
5013
|
-
|
|
5014
|
-
|
|
5015
|
-
|
|
5016
|
-
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
|
|
5020
|
-
|
|
5021
|
-
return
|
|
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 [
|
|
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
|
-
|
|
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
|
-
|
|
6878
|
-
|
|
6879
|
-
|
|
6880
|
-
|
|
6881
|
-
|
|
6882
|
-
|
|
6883
|
-
|
|
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.
|
|
6934
|
+
return expectAmount.mul(1 - slippage);
|
|
6888
6935
|
} else {
|
|
6889
|
-
return expectAmount.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
7400
|
-
path.extendedDetails.
|
|
7401
|
-
path.extendedDetails.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
7513
|
-
path.extendedDetails.
|
|
7514
|
-
path.extendedDetails.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
7871
|
-
path.extendedDetails.
|
|
7872
|
-
path.extendedDetails.
|
|
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
|
-
|
|
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
|
-
|
|
8559
|
-
return "0x8a2f7a5b20665eeccc79de3aa37c3b6c473eca233ada1e1cd4678ec07d4d4073";
|
|
8560
|
-
} else {
|
|
8561
|
-
return "0xabb6a81c8a216828e317719e06125de5bb2cb0fe8f9916ff8c023ca5be224c78";
|
|
8562
|
-
}
|
|
8602
|
+
return AggregatorConfig2.getPublishedAtV2Extend(this.env);
|
|
8563
8603
|
}
|
|
8564
8604
|
publishedAtV2Extend2() {
|
|
8565
|
-
|
|
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
|
|
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.
|
|
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
|
|
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,
|
|
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 };
|