@cetusprotocol/aggregator-sdk 1.5.3 → 1.5.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/bun.lock +263 -263
- package/dist/index.cjs +152 -105
- package/dist/index.d.cts +72 -19
- package/dist/index.d.ts +72 -19
- package/dist/index.js +152 -106
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { coinWithBalance, Transaction } from '@mysten/sui/transactions';
|
|
2
2
|
import JSONbig from 'json-bigint';
|
|
3
3
|
import { normalizeSuiObjectId, SUI_CLOCK_OBJECT_ID } from '@mysten/sui/utils';
|
|
4
|
-
import {
|
|
4
|
+
import { SuiGrpcClient } from '@mysten/sui/grpc';
|
|
5
5
|
import { HermesClient } from '@pythnetwork/hermes-client';
|
|
6
6
|
import { bcs } from '@mysten/sui/bcs';
|
|
7
7
|
|
|
@@ -37,9 +37,9 @@ var __toESM = (mod2, isNodeMode, target) => (target = mod2 != null ? __create(__
|
|
|
37
37
|
mod2
|
|
38
38
|
));
|
|
39
39
|
|
|
40
|
-
// node_modules
|
|
40
|
+
// node_modules/bn.js/lib/bn.js
|
|
41
41
|
var require_bn = __commonJS({
|
|
42
|
-
"node_modules
|
|
42
|
+
"node_modules/bn.js/lib/bn.js"(exports, module) {
|
|
43
43
|
(function(module2, exports2) {
|
|
44
44
|
function assert(val, msg) {
|
|
45
45
|
if (!val) throw new Error(msg || "Assertion failed");
|
|
@@ -345,7 +345,7 @@ var require_bn = __commonJS({
|
|
|
345
345
|
};
|
|
346
346
|
if (typeof Symbol !== "undefined" && typeof Symbol.for === "function") {
|
|
347
347
|
try {
|
|
348
|
-
BN7.prototype[
|
|
348
|
+
BN7.prototype[Symbol.for("nodejs.util.inspect.custom")] = inspect;
|
|
349
349
|
} catch (e) {
|
|
350
350
|
BN7.prototype.inspect = inspect;
|
|
351
351
|
}
|
|
@@ -1762,10 +1762,6 @@ var require_bn = __commonJS({
|
|
|
1762
1762
|
var mask = 67108863 ^ 67108863 >>> r << r;
|
|
1763
1763
|
this.words[this.length - 1] &= mask;
|
|
1764
1764
|
}
|
|
1765
|
-
if (this.length === 0) {
|
|
1766
|
-
this.words[0] = 0;
|
|
1767
|
-
this.length = 1;
|
|
1768
|
-
}
|
|
1769
1765
|
return this._strip();
|
|
1770
1766
|
};
|
|
1771
1767
|
BN7.prototype.maskn = function maskn(bits) {
|
|
@@ -2781,7 +2777,7 @@ var require_bn = __commonJS({
|
|
|
2781
2777
|
var res = this.imod(a._invmp(this.m).mul(this.r2));
|
|
2782
2778
|
return res._forceRed(this);
|
|
2783
2779
|
};
|
|
2784
|
-
})(typeof module === "undefined" || module, exports
|
|
2780
|
+
})(typeof module === "undefined" || module, exports);
|
|
2785
2781
|
}
|
|
2786
2782
|
});
|
|
2787
2783
|
|
|
@@ -3414,7 +3410,7 @@ var AGGREGATOR_V3_CONFIG = {
|
|
|
3414
3410
|
};
|
|
3415
3411
|
|
|
3416
3412
|
// src/api.ts
|
|
3417
|
-
var SDK_VERSION =
|
|
3413
|
+
var SDK_VERSION = 1010505;
|
|
3418
3414
|
function parseRouterResponse(data, byAmountIn) {
|
|
3419
3415
|
let packages = /* @__PURE__ */ new Map();
|
|
3420
3416
|
if (data.packages) {
|
|
@@ -3850,7 +3846,7 @@ var AggregatorConfig = class {
|
|
|
3850
3846
|
// src/math.ts
|
|
3851
3847
|
var import_bn3 = __toESM(require_bn());
|
|
3852
3848
|
|
|
3853
|
-
// node_modules
|
|
3849
|
+
// node_modules/decimal.js/decimal.mjs
|
|
3854
3850
|
var EXP_LIMIT = 9e15;
|
|
3855
3851
|
var MAX_DIGITS = 1e9;
|
|
3856
3852
|
var NUMERALS = "0123456789abcdef";
|
|
@@ -6019,7 +6015,7 @@ function tanh(x) {
|
|
|
6019
6015
|
function trunc(x) {
|
|
6020
6016
|
return finalise(x = new this(x), x.e + 1, 1);
|
|
6021
6017
|
}
|
|
6022
|
-
P[
|
|
6018
|
+
P[Symbol.for("nodejs.util.inspect.custom")] = P.toString;
|
|
6023
6019
|
P[Symbol.toStringTag] = "Decimal";
|
|
6024
6020
|
var Decimal = P.constructor = clone(DEFAULTS);
|
|
6025
6021
|
LN10 = new Decimal(LN10);
|
|
@@ -7855,12 +7851,11 @@ var PythAdapter = class {
|
|
|
7855
7851
|
if (this.baseUpdateFee !== void 0) {
|
|
7856
7852
|
return this.baseUpdateFee;
|
|
7857
7853
|
}
|
|
7858
|
-
const
|
|
7859
|
-
|
|
7860
|
-
|
|
7854
|
+
const { object } = await this.client.getObject({
|
|
7855
|
+
objectId: this.pythStateId,
|
|
7856
|
+
include: { json: true }
|
|
7861
7857
|
});
|
|
7862
|
-
const
|
|
7863
|
-
const json = content && "fields" in content ? content.fields : null;
|
|
7858
|
+
const json = object.json;
|
|
7864
7859
|
if (!json) {
|
|
7865
7860
|
throw new Error("Unable to fetch pyth state object");
|
|
7866
7861
|
}
|
|
@@ -7868,21 +7863,16 @@ var PythAdapter = class {
|
|
|
7868
7863
|
return this.baseUpdateFee;
|
|
7869
7864
|
}
|
|
7870
7865
|
async getPackageId(objectId) {
|
|
7871
|
-
const
|
|
7872
|
-
|
|
7873
|
-
|
|
7866
|
+
const { object } = await this.client.getObject({
|
|
7867
|
+
objectId,
|
|
7868
|
+
include: { json: true }
|
|
7874
7869
|
});
|
|
7875
|
-
const
|
|
7876
|
-
const json = content && "fields" in content ? content.fields : null;
|
|
7870
|
+
const json = object.json;
|
|
7877
7871
|
if (!json) {
|
|
7878
7872
|
throw new Error(`Cannot fetch package id for object ${objectId}`);
|
|
7879
7873
|
}
|
|
7880
7874
|
if ("upgrade_cap" in json) {
|
|
7881
|
-
|
|
7882
|
-
const packageId = upgradeCap?.fields?.package;
|
|
7883
|
-
if (typeof packageId === "string") {
|
|
7884
|
-
return packageId;
|
|
7885
|
-
}
|
|
7875
|
+
return json.upgrade_cap.package;
|
|
7886
7876
|
}
|
|
7887
7877
|
throw new Error("upgrade_cap not found");
|
|
7888
7878
|
}
|
|
@@ -7906,19 +7896,20 @@ var PythAdapter = class {
|
|
|
7906
7896
|
const { id: tableId, fieldType } = await this.getPriceTableInfo();
|
|
7907
7897
|
const feedIdBytes = Buffer.from(normalizedFeedId, "hex");
|
|
7908
7898
|
try {
|
|
7909
|
-
const
|
|
7899
|
+
const PriceIdentifier = bcs.struct("PriceIdentifier", {
|
|
7900
|
+
bytes: bcs.vector(bcs.u8())
|
|
7901
|
+
});
|
|
7902
|
+
const bcsBytes = PriceIdentifier.serialize({ bytes: Array.from(feedIdBytes) }).toBytes();
|
|
7903
|
+
const result = await this.client.getDynamicField({
|
|
7910
7904
|
parentId: tableId,
|
|
7911
7905
|
name: {
|
|
7912
|
-
type:
|
|
7913
|
-
|
|
7906
|
+
type: fieldType,
|
|
7907
|
+
bcs: bcsBytes
|
|
7914
7908
|
}
|
|
7915
7909
|
});
|
|
7916
|
-
const
|
|
7917
|
-
const
|
|
7918
|
-
const objectId =
|
|
7919
|
-
if (!objectId) {
|
|
7920
|
-
return void 0;
|
|
7921
|
-
}
|
|
7910
|
+
const valueBcs = result.dynamicField.value.bcs;
|
|
7911
|
+
const valueBytes = valueBcs instanceof Uint8Array ? valueBcs : new Uint8Array(Object.values(valueBcs));
|
|
7912
|
+
const objectId = "0x" + Array.from(valueBytes).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
7922
7913
|
this.priceFeedObjectIdCache.set(normalizedFeedId, objectId);
|
|
7923
7914
|
return objectId;
|
|
7924
7915
|
} catch {
|
|
@@ -7929,27 +7920,40 @@ var PythAdapter = class {
|
|
|
7929
7920
|
if (this.priceTableInfo !== void 0) {
|
|
7930
7921
|
return this.priceTableInfo;
|
|
7931
7922
|
}
|
|
7932
|
-
|
|
7933
|
-
|
|
7934
|
-
|
|
7935
|
-
|
|
7936
|
-
|
|
7923
|
+
let cursor = null;
|
|
7924
|
+
let hasNextPage = true;
|
|
7925
|
+
while (hasNextPage) {
|
|
7926
|
+
const dynamicFields = await this.client.listDynamicFields({
|
|
7927
|
+
parentId: this.pythStateId,
|
|
7928
|
+
cursor
|
|
7929
|
+
});
|
|
7930
|
+
for (const field of dynamicFields.dynamicFields) {
|
|
7931
|
+
if (field.name.type === "vector<u8>") {
|
|
7932
|
+
const objectId = field.$kind === "DynamicObject" && field.childId ? field.childId : field.fieldId;
|
|
7933
|
+
const fieldObj = await this.client.getObject({
|
|
7934
|
+
objectId,
|
|
7935
|
+
include: { json: true }
|
|
7936
|
+
});
|
|
7937
|
+
const type = fieldObj.object.type;
|
|
7938
|
+
if (type.includes("table::Table")) {
|
|
7939
|
+
const innerTypes = type.replace(/.*table::Table</, "").replace(/>$/, "");
|
|
7940
|
+
const fieldType = innerTypes.split(",")[0].trim();
|
|
7941
|
+
this.priceTableInfo = { id: fieldObj.object.objectId, fieldType };
|
|
7942
|
+
return this.priceTableInfo;
|
|
7943
|
+
}
|
|
7944
|
+
}
|
|
7937
7945
|
}
|
|
7938
|
-
|
|
7939
|
-
|
|
7940
|
-
throw new Error(
|
|
7941
|
-
"Price Table not found, contract may not be initialized"
|
|
7942
|
-
);
|
|
7946
|
+
hasNextPage = dynamicFields.hasNextPage;
|
|
7947
|
+
cursor = dynamicFields.cursor;
|
|
7943
7948
|
}
|
|
7944
|
-
|
|
7945
|
-
|
|
7946
|
-
|
|
7947
|
-
return this.priceTableInfo;
|
|
7949
|
+
throw new Error(
|
|
7950
|
+
"Price Table not found, contract may not be initialized"
|
|
7951
|
+
);
|
|
7948
7952
|
}
|
|
7949
7953
|
extractVaaBytesFromAccumulatorMessage(accumulatorMessage) {
|
|
7950
|
-
const trailingPayloadSize = accumulatorMessage.
|
|
7954
|
+
const trailingPayloadSize = accumulatorMessage.readUInt8(6);
|
|
7951
7955
|
const vaaSizeOffset = 7 + trailingPayloadSize + 1;
|
|
7952
|
-
const vaaSize = accumulatorMessage.
|
|
7956
|
+
const vaaSize = accumulatorMessage.readUInt16BE(vaaSizeOffset);
|
|
7953
7957
|
const vaaOffset = vaaSizeOffset + 2;
|
|
7954
7958
|
return accumulatorMessage.subarray(vaaOffset, vaaOffset + vaaSize);
|
|
7955
7959
|
}
|
|
@@ -8128,21 +8132,21 @@ async function getOrCreateAccountCap(txb, client, owner) {
|
|
|
8128
8132
|
}
|
|
8129
8133
|
async function getAccountCap(client, owner) {
|
|
8130
8134
|
const limit = 50;
|
|
8131
|
-
let cursor =
|
|
8135
|
+
let cursor = null;
|
|
8132
8136
|
while (true) {
|
|
8133
|
-
const ownedObjects = await client.
|
|
8137
|
+
const ownedObjects = await client.listOwnedObjects({
|
|
8134
8138
|
owner,
|
|
8135
8139
|
cursor,
|
|
8136
8140
|
limit,
|
|
8137
|
-
|
|
8141
|
+
type: `${DEEPBOOK_PACKAGE_ID}::${DEEPBOOK_CUSTODIAN_V2_MODULE}::AccountCap`
|
|
8138
8142
|
});
|
|
8139
|
-
if (ownedObjects.
|
|
8140
|
-
return ownedObjects.
|
|
8143
|
+
if (ownedObjects.objects.length !== 0) {
|
|
8144
|
+
return ownedObjects.objects[0].objectId;
|
|
8141
8145
|
}
|
|
8142
8146
|
if (!ownedObjects.hasNextPage) {
|
|
8143
8147
|
break;
|
|
8144
8148
|
}
|
|
8145
|
-
cursor = ownedObjects.
|
|
8149
|
+
cursor = ownedObjects.cursor;
|
|
8146
8150
|
}
|
|
8147
8151
|
return null;
|
|
8148
8152
|
}
|
|
@@ -8170,10 +8174,10 @@ function getAggregatorV2Extend2PublishedAt(publishedAt, packages) {
|
|
|
8170
8174
|
// src/utils/gas.ts
|
|
8171
8175
|
var import_bn4 = __toESM(require_bn());
|
|
8172
8176
|
function extractGasMetrics(result) {
|
|
8173
|
-
const
|
|
8174
|
-
const
|
|
8175
|
-
if (!
|
|
8176
|
-
const errorMsg =
|
|
8177
|
+
const txResult = result.Transaction ?? result.FailedTransaction;
|
|
8178
|
+
const effects = txResult?.effects;
|
|
8179
|
+
if (!effects || !effects.status.success) {
|
|
8180
|
+
const errorMsg = effects?.status.success === false ? effects.status.error.message : "Unknown error";
|
|
8177
8181
|
return {
|
|
8178
8182
|
computationCost: "0",
|
|
8179
8183
|
storageCost: "0",
|
|
@@ -8699,6 +8703,59 @@ var BoltRouter = class {
|
|
|
8699
8703
|
});
|
|
8700
8704
|
}
|
|
8701
8705
|
};
|
|
8706
|
+
var MagmaPropAmmRouter = class {
|
|
8707
|
+
constructor(_env) {
|
|
8708
|
+
}
|
|
8709
|
+
swap(txb, flattenedPath, swapContext, _extends) {
|
|
8710
|
+
const path = flattenedPath.path;
|
|
8711
|
+
if (!path.extendedDetails) {
|
|
8712
|
+
throw new Error("Extended details not found for MAGMAPROPAMM");
|
|
8713
|
+
}
|
|
8714
|
+
this.validateExtendedDetails(path.extendedDetails);
|
|
8715
|
+
const swapData = this.prepareSwapData(flattenedPath);
|
|
8716
|
+
this.executeSwapContract(txb, swapData, swapContext);
|
|
8717
|
+
}
|
|
8718
|
+
validateExtendedDetails(extendedDetails) {
|
|
8719
|
+
if (!extendedDetails.magmapropamm_pool_id) {
|
|
8720
|
+
throw new Error("MAGMAPROPAMM pool id not found in extended details");
|
|
8721
|
+
}
|
|
8722
|
+
}
|
|
8723
|
+
prepareSwapData(flattenedPath) {
|
|
8724
|
+
const path = flattenedPath.path;
|
|
8725
|
+
if (path.publishedAt == null) {
|
|
8726
|
+
throw new Error("MAGMAPROPAMM not set publishedAt");
|
|
8727
|
+
}
|
|
8728
|
+
const extendedDetails = path.extendedDetails;
|
|
8729
|
+
const [coinTType0, coinTType1] = path.direction ? [path.from, path.target] : [path.target, path.from];
|
|
8730
|
+
const amountIn = flattenedPath.isLastUseOfIntermediateToken ? AGGREGATOR_V3_CONFIG.MAX_AMOUNT_IN : path.amountIn;
|
|
8731
|
+
return {
|
|
8732
|
+
coinTType0,
|
|
8733
|
+
coinTType1,
|
|
8734
|
+
a2b: path.direction,
|
|
8735
|
+
amountIn,
|
|
8736
|
+
publishedAt: path.publishedAt,
|
|
8737
|
+
poolId: extendedDetails.magmapropamm_pool_id
|
|
8738
|
+
};
|
|
8739
|
+
}
|
|
8740
|
+
executeSwapContract(txb, swapData, swapContext) {
|
|
8741
|
+
txb.moveCall({
|
|
8742
|
+
target: `${swapData.publishedAt}::magmapropamm::swap`,
|
|
8743
|
+
typeArguments: [swapData.coinTType0, swapData.coinTType1],
|
|
8744
|
+
arguments: [
|
|
8745
|
+
swapContext,
|
|
8746
|
+
// swap_ctx
|
|
8747
|
+
txb.object(swapData.poolId),
|
|
8748
|
+
// pool
|
|
8749
|
+
txb.object(SUI_CLOCK_OBJECT_ID),
|
|
8750
|
+
// clock
|
|
8751
|
+
txb.pure.bool(swapData.a2b),
|
|
8752
|
+
// a2b
|
|
8753
|
+
txb.pure.u64(swapData.amountIn)
|
|
8754
|
+
// amount_in
|
|
8755
|
+
]
|
|
8756
|
+
});
|
|
8757
|
+
}
|
|
8758
|
+
};
|
|
8702
8759
|
|
|
8703
8760
|
// src/client.ts
|
|
8704
8761
|
var CETUS = "CETUS";
|
|
@@ -8735,6 +8792,7 @@ var CETUSDLMM = "CETUSDLMM";
|
|
|
8735
8792
|
var FERRADLMM = "FERRADLMM";
|
|
8736
8793
|
var FERRACLMM = "FERRACLMM";
|
|
8737
8794
|
var BOLT = "BOLT";
|
|
8795
|
+
var MAGMAPROPAMM = "MAGMAPROPAMM";
|
|
8738
8796
|
var DEFAULT_ENDPOINT = "https://api-sui.cetus.zone/router_v3";
|
|
8739
8797
|
var ALL_DEXES = [
|
|
8740
8798
|
CETUS,
|
|
@@ -8769,7 +8827,8 @@ var ALL_DEXES = [
|
|
|
8769
8827
|
CETUSDLMM,
|
|
8770
8828
|
FERRADLMM,
|
|
8771
8829
|
FERRACLMM,
|
|
8772
|
-
BOLT
|
|
8830
|
+
BOLT,
|
|
8831
|
+
MAGMAPROPAMM
|
|
8773
8832
|
];
|
|
8774
8833
|
function getAllProviders() {
|
|
8775
8834
|
return ALL_DEXES;
|
|
@@ -8836,8 +8895,8 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
8836
8895
|
constructor(params) {
|
|
8837
8896
|
this.endpoint = params.endpoint ? processEndpoint(params.endpoint) : DEFAULT_ENDPOINT;
|
|
8838
8897
|
const network = params.env === 1 /* Testnet */ ? "testnet" : "mainnet";
|
|
8839
|
-
const
|
|
8840
|
-
this.client = params.client ?? new
|
|
8898
|
+
const grpcUrl = params.env === 1 /* Testnet */ ? "https://fullnode.testnet.sui.io:443" : "https://fullnode.mainnet.sui.io:443";
|
|
8899
|
+
this.client = params.client ?? new SuiGrpcClient({ network, baseUrl: grpcUrl });
|
|
8841
8900
|
this.signer = params.signer || "";
|
|
8842
8901
|
this.env = params.env || 0 /* Mainnet */;
|
|
8843
8902
|
const config2 = _AggregatorClient.CONFIG[this.env];
|
|
@@ -8878,13 +8937,13 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
8878
8937
|
}
|
|
8879
8938
|
async getOneCoinUsedToMerge(coinType) {
|
|
8880
8939
|
try {
|
|
8881
|
-
const gotCoin = await this.client.
|
|
8940
|
+
const gotCoin = await this.client.listCoins({
|
|
8882
8941
|
owner: this.signer,
|
|
8883
8942
|
coinType,
|
|
8884
8943
|
limit: 1
|
|
8885
8944
|
});
|
|
8886
|
-
if (gotCoin.
|
|
8887
|
-
return gotCoin.
|
|
8945
|
+
if (gotCoin.objects.length === 1) {
|
|
8946
|
+
return gotCoin.objects[0].objectId;
|
|
8888
8947
|
}
|
|
8889
8948
|
return null;
|
|
8890
8949
|
} catch (error) {
|
|
@@ -8979,6 +9038,8 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
8979
9038
|
return new FerraClmmRouter(this.env);
|
|
8980
9039
|
case BOLT:
|
|
8981
9040
|
return new BoltRouter(this.env);
|
|
9041
|
+
case MAGMAPROPAMM:
|
|
9042
|
+
return new MagmaPropAmmRouter(this.env);
|
|
8982
9043
|
default:
|
|
8983
9044
|
throw new Error(
|
|
8984
9045
|
`${CLIENT_CONFIG.ERRORS.UNSUPPORTED_DEX} ${provider}`
|
|
@@ -9356,15 +9417,7 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9356
9417
|
* @throws Error if input coin amount exceeds maxAmountIn
|
|
9357
9418
|
*/
|
|
9358
9419
|
async routerSwapWithMaxAmountIn(params) {
|
|
9359
|
-
const {
|
|
9360
|
-
router,
|
|
9361
|
-
inputCoin,
|
|
9362
|
-
slippage,
|
|
9363
|
-
txb,
|
|
9364
|
-
partner,
|
|
9365
|
-
cetusDlmmPartner,
|
|
9366
|
-
maxAmountIn
|
|
9367
|
-
} = params;
|
|
9420
|
+
const { router, inputCoin, slippage, txb, partner, maxAmountIn } = params;
|
|
9368
9421
|
if (slippage > 1 || slippage < 0) {
|
|
9369
9422
|
throw new Error(CLIENT_CONFIG.ERRORS.INVALID_SLIPPAGE);
|
|
9370
9423
|
}
|
|
@@ -9399,8 +9452,7 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9399
9452
|
amountOut.toString(),
|
|
9400
9453
|
amountLimit.toString(),
|
|
9401
9454
|
priceInfoObjectIds,
|
|
9402
|
-
partner ?? this.partner
|
|
9403
|
-
cetusDlmmPartner ?? this.cetusDlmmPartner
|
|
9455
|
+
partner ?? this.partner
|
|
9404
9456
|
);
|
|
9405
9457
|
} else {
|
|
9406
9458
|
return this.expectOutputSwapV3WithMaxAmountIn(
|
|
@@ -9417,14 +9469,7 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9417
9469
|
// auto build input coin
|
|
9418
9470
|
// auto merge, transfer or destory target coin.
|
|
9419
9471
|
async fastRouterSwap(params) {
|
|
9420
|
-
const {
|
|
9421
|
-
router,
|
|
9422
|
-
slippage,
|
|
9423
|
-
txb,
|
|
9424
|
-
partner,
|
|
9425
|
-
cetusDlmmPartner,
|
|
9426
|
-
payDeepFeeAmount
|
|
9427
|
-
} = params;
|
|
9472
|
+
const { router, slippage, txb, partner, cetusDlmmPartner, payDeepFeeAmount } = params;
|
|
9428
9473
|
const fromCoinType = router.paths[0].from;
|
|
9429
9474
|
const targetCoinType = router.paths[router.paths.length - 1].target;
|
|
9430
9475
|
const byAmountIn = router.byAmountIn;
|
|
@@ -9581,7 +9626,7 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9581
9626
|
}
|
|
9582
9627
|
}
|
|
9583
9628
|
async fixableRouterSwapV3(params) {
|
|
9584
|
-
const { router, inputCoin, slippage, txb, partner
|
|
9629
|
+
const { router, inputCoin, slippage, txb, partner } = params;
|
|
9585
9630
|
checkOverlayFeeConfig(this.overlayFeeRate, this.overlayFeeReceiver);
|
|
9586
9631
|
let overlayFee = 0;
|
|
9587
9632
|
if (router.byAmountIn) {
|
|
@@ -9610,8 +9655,7 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9610
9655
|
expectedAmountOut.toString(),
|
|
9611
9656
|
amountLimit.toString(),
|
|
9612
9657
|
priceInfoObjectIds,
|
|
9613
|
-
partner ?? this.partner
|
|
9614
|
-
cetusDlmmPartner ?? this.cetusDlmmPartner
|
|
9658
|
+
partner ?? this.partner
|
|
9615
9659
|
);
|
|
9616
9660
|
} else {
|
|
9617
9661
|
return this.expectOutputSwapV3(
|
|
@@ -9648,16 +9692,18 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9648
9692
|
});
|
|
9649
9693
|
}
|
|
9650
9694
|
tx.setSenderIfNotSet(this.signer || "0x0");
|
|
9651
|
-
const simulateRes = await this.client.
|
|
9652
|
-
|
|
9653
|
-
|
|
9695
|
+
const simulateRes = await this.client.simulateTransaction({
|
|
9696
|
+
transaction: tx,
|
|
9697
|
+
include: { events: true, effects: true }
|
|
9654
9698
|
});
|
|
9655
|
-
|
|
9656
|
-
|
|
9699
|
+
const txResult = simulateRes.Transaction ?? simulateRes.FailedTransaction;
|
|
9700
|
+
if (!txResult || simulateRes.$kind === "FailedTransaction") {
|
|
9701
|
+
const errorMsg = txResult?.status.success === false ? txResult.status.error.message : "Unknown error";
|
|
9702
|
+
throw new Error("Simulation error: " + errorMsg);
|
|
9657
9703
|
}
|
|
9658
|
-
const events =
|
|
9704
|
+
const events = txResult.events ?? [];
|
|
9659
9705
|
const valueData = events.filter((item) => {
|
|
9660
|
-
return item.
|
|
9706
|
+
return item.eventType.includes("CalculatedSwapResultEvent");
|
|
9661
9707
|
});
|
|
9662
9708
|
if (valueData.length === 0 || valueData.length !== pools.length) {
|
|
9663
9709
|
throw new Error("Simulate event result error");
|
|
@@ -9665,7 +9711,7 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9665
9711
|
let tempMaxAmount = byAmountIn ? new import_bn6.default(0) : new import_bn6.default(U64_MAX);
|
|
9666
9712
|
let tempIndex = 0;
|
|
9667
9713
|
for (let i = 0; i < valueData.length; i += 1) {
|
|
9668
|
-
const eventJson2 = valueData[i].
|
|
9714
|
+
const eventJson2 = valueData[i].json;
|
|
9669
9715
|
if (eventJson2?.data?.is_exceed) {
|
|
9670
9716
|
continue;
|
|
9671
9717
|
}
|
|
@@ -9683,11 +9729,11 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9683
9729
|
}
|
|
9684
9730
|
}
|
|
9685
9731
|
}
|
|
9686
|
-
const eventJson = valueData[tempIndex].
|
|
9732
|
+
const eventJson = valueData[tempIndex].json;
|
|
9687
9733
|
const eventData = eventJson?.data;
|
|
9688
9734
|
const [decimalA, decimalB] = await Promise.all([
|
|
9689
|
-
this.client.getCoinMetadata({ coinType: coinA }).then((res) => res?.decimals ?? null),
|
|
9690
|
-
this.client.getCoinMetadata({ coinType: coinB }).then((res) => res?.decimals ?? null)
|
|
9735
|
+
this.client.getCoinMetadata({ coinType: coinA }).then((res) => res.coinMetadata?.decimals ?? null),
|
|
9736
|
+
this.client.getCoinMetadata({ coinType: coinB }).then((res) => res.coinMetadata?.decimals ?? null)
|
|
9691
9737
|
]);
|
|
9692
9738
|
if (decimalA == null || decimalB == null) {
|
|
9693
9739
|
throw new Error("Cannot get coin decimals");
|
|
@@ -9756,9 +9802,9 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9756
9802
|
}
|
|
9757
9803
|
async devInspectTransactionBlock(txb) {
|
|
9758
9804
|
txb.setSenderIfNotSet(this.signer || "0x0");
|
|
9759
|
-
const res = await this.client.
|
|
9760
|
-
|
|
9761
|
-
|
|
9805
|
+
const res = await this.client.simulateTransaction({
|
|
9806
|
+
transaction: txb,
|
|
9807
|
+
include: { events: true, effects: true }
|
|
9762
9808
|
});
|
|
9763
9809
|
return res;
|
|
9764
9810
|
}
|
|
@@ -9766,7 +9812,7 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9766
9812
|
const res = await this.client.signAndExecuteTransaction({
|
|
9767
9813
|
transaction: txb,
|
|
9768
9814
|
signer,
|
|
9769
|
-
|
|
9815
|
+
include: { effects: true, events: true, balanceChanges: true }
|
|
9770
9816
|
});
|
|
9771
9817
|
return res;
|
|
9772
9818
|
}
|
|
@@ -9837,4 +9883,4 @@ decimal.js/decimal.mjs:
|
|
|
9837
9883
|
*)
|
|
9838
9884
|
*/
|
|
9839
9885
|
|
|
9840
|
-
export { AFSUI, AFTERMATH, AFTERMATH_AMM, AFTERMATH_MODULE, AGGREGATOR, AGGREGATOR_V3_CONFIG, ALL_DEXES, ALPHAFI, AggregatorClient, AggregatorConfig, AggregatorError, AggregatorServerErrorCode, BLUEFIN, BLUEMOVE, BOLT, CETUS, CETUSDLMM, CETUS_DEX, CETUS_MODULE, CETUS_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_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, Env, FERRACLMM, FERRADLMM, FLOWXV2, FLOWXV3, FLOWX_AMM, FLOWX_AMM_MODULE, FULLSAIL, FlashSwapA2BFunc, FlashSwapB2AFunc, FlashSwapFunc, FlashSwapWithPartnerA2BFunc, FlashSwapWithPartnerB2AFunc, FlashSwapWithPartnerFunc, GAS_SYMBOL, GAS_TYPE_ARG, GAS_TYPE_ARG_LONG, HAEDAL, HAEDALHMMV2, 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_V3_PUBLISHED_AT, 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_V3_PUBLISHED_AT, 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, getAllProviders, getDeepbookV3Config, getDefaultSuiInputType, getMergeSwapResult, getOrCreateAccountCap, getProvidersExcluding, getProvidersIncluding, getRouterResult, isSortedSymbols, isValidDowngradeUuid6, mintZeroCoin, normalizeCoinType, parseAftermathFeeType, parseTurbosPoolFeeType, patchFixSuiObjectId, printTransaction, processEndpoint, processFlattenRoutes, restituteMsafeFastRouterSwapParams };
|
|
9886
|
+
export { AFSUI, AFTERMATH, AFTERMATH_AMM, AFTERMATH_MODULE, AGGREGATOR, AGGREGATOR_V3_CONFIG, ALL_DEXES, ALPHAFI, AggregatorClient, AggregatorConfig, AggregatorError, AggregatorServerErrorCode, BLUEFIN, BLUEMOVE, BOLT, CETUS, CETUSDLMM, CETUS_DEX, CETUS_MODULE, CETUS_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_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, Env, FERRACLMM, FERRADLMM, FLOWXV2, FLOWXV3, FLOWX_AMM, FLOWX_AMM_MODULE, FULLSAIL, FlashSwapA2BFunc, FlashSwapB2AFunc, FlashSwapFunc, FlashSwapWithPartnerA2BFunc, FlashSwapWithPartnerB2AFunc, FlashSwapWithPartnerFunc, GAS_SYMBOL, GAS_TYPE_ARG, GAS_TYPE_ARG_LONG, HAEDAL, HAEDALHMMV2, HAEDALPMM, HAWAL, INTEGRATE, JOIN_FUNC, KRIYA, KRIYAV3, KRIYA_DEX, KRIYA_MODULE, MAGMA, MAGMAPROPAMM, 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_V3_PUBLISHED_AT, 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_V3_PUBLISHED_AT, 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, getAllProviders, getDeepbookV3Config, getDefaultSuiInputType, getMergeSwapResult, getOrCreateAccountCap, getProvidersExcluding, getProvidersIncluding, getRouterResult, isSortedSymbols, isValidDowngradeUuid6, mintZeroCoin, normalizeCoinType, parseAftermathFeeType, parseTurbosPoolFeeType, patchFixSuiObjectId, printTransaction, processEndpoint, processFlattenRoutes, restituteMsafeFastRouterSwapParams };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cetusprotocol/aggregator-sdk",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"typescript": "^5.0.0"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@mysten/sui": "^2.
|
|
25
|
+
"@mysten/sui": "^2.16.3",
|
|
26
26
|
"@pythnetwork/hermes-client": "^3.1.0",
|
|
27
27
|
"bip39": "^3.1.0",
|
|
28
28
|
"dotenv": "^16.4.5",
|