@cetusprotocol/aggregator-sdk 1.6.1 → 1.6.3
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/README.md +6 -6
- package/dist/index.cjs +212 -7
- package/dist/index.d.cts +35 -1
- package/dist/index.d.ts +35 -1
- package/dist/index.js +212 -9
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -196,18 +196,18 @@ if (routerRes != null) {
|
|
|
196
196
|
|
|
197
197
|
| Contract | Tag of Repo | Latest published at address |
|
|
198
198
|
| ------------------------- | ----------- | ------------------------------------------------------------------ |
|
|
199
|
-
| CetusAggregatorV2 | mainnet |
|
|
199
|
+
| CetusAggregatorV2 | mainnet | 0x3a7fa58adcd7ff474ca0330c93068b139f5263c0cf9c64e702f5c4b17996ff10 |
|
|
200
200
|
| CetusAggregatorV2ExtendV1 | mainnet | 0x2edc22bf96c85482b2208624fa9339255d5055113c92fd6c33add48ce971b774 |
|
|
201
201
|
| CetusAggregatorV2ExtendV2 | mainnet | 0x2e227a3cbc6715518b18ed339d2f967153674b7b257da114ca62c72b2011258a |
|
|
202
202
|
|
|
203
203
|
## Example
|
|
204
204
|
|
|
205
205
|
```
|
|
206
|
-
CetusAggregatorV2 = { git = "https://github.com/CetusProtocol/aggregator.git", subdir = "packages/cetus-aggregator-v2/mainnet", rev = "mainnet-v1.
|
|
206
|
+
CetusAggregatorV2 = { git = "https://github.com/CetusProtocol/aggregator.git", subdir = "packages/cetus-aggregator-v2/mainnet", rev = "mainnet-v1.63.0", override = true }
|
|
207
207
|
|
|
208
|
-
CetusAggregatorV2ExtendV1 = { git = "https://github.com/CetusProtocol/aggregator.git", subdir = "packages/cetus-aggregator-v2-extend-v1", rev = "mainnet-v1.
|
|
208
|
+
CetusAggregatorV2ExtendV1 = { git = "https://github.com/CetusProtocol/aggregator.git", subdir = "packages/cetus-aggregator-v2-extend-v1", rev = "mainnet-v1.63.0", override = true }
|
|
209
209
|
|
|
210
|
-
CetusAggregatorV2ExtendV2 = { git = "https://github.com/CetusProtocol/aggregator.git", subdir = "packages/cetus-aggregator-v2-extend-v2", rev = "mainnet-v1.
|
|
210
|
+
CetusAggregatorV2ExtendV2 = { git = "https://github.com/CetusProtocol/aggregator.git", subdir = "packages/cetus-aggregator-v2-extend-v2", rev = "mainnet-v1.63.0", override = true }
|
|
211
211
|
```
|
|
212
212
|
|
|
213
213
|
# Simple Aggregator Contract Interface
|
|
@@ -218,12 +218,12 @@ CetusAggregatorV2ExtendV2 = { git = "https://github.com/CetusProtocol/aggregator
|
|
|
218
218
|
|
|
219
219
|
| Contract | Tag of Repo | Latest published at address |
|
|
220
220
|
| --------------------- | ----------- | ------------------------------------------------------------------ |
|
|
221
|
-
| CetusAggregatorSimple | mainnet |
|
|
221
|
+
| CetusAggregatorSimple | mainnet | 0xf44ab76524a6b22a175968ae193a13f4905aea9b805afb6db51655b6b59db69e |
|
|
222
222
|
|
|
223
223
|
## Example
|
|
224
224
|
|
|
225
225
|
```
|
|
226
|
-
CetusAggregatorSimple = { git = "https://github.com/CetusProtocol/aggregator.git", subdir = "packages/cetus-aggregator-v2/simple-mainnet", rev = "mainnet-v1.
|
|
226
|
+
CetusAggregatorSimple = { git = "https://github.com/CetusProtocol/aggregator.git", subdir = "packages/cetus-aggregator-v2/simple-mainnet", rev = "mainnet-v1.63.0", override = true }
|
|
227
227
|
```
|
|
228
228
|
|
|
229
229
|
## Usage
|
package/dist/index.cjs
CHANGED
|
@@ -3416,7 +3416,7 @@ var AGGREGATOR_V3_CONFIG = {
|
|
|
3416
3416
|
};
|
|
3417
3417
|
|
|
3418
3418
|
// src/api.ts
|
|
3419
|
-
var SDK_VERSION =
|
|
3419
|
+
var SDK_VERSION = 1010603;
|
|
3420
3420
|
function parseRouterResponse(data, byAmountIn) {
|
|
3421
3421
|
let packages = /* @__PURE__ */ new Map();
|
|
3422
3422
|
if (data.packages) {
|
|
@@ -7822,20 +7822,56 @@ function transferOrDestroyCoin(params, txb) {
|
|
|
7822
7822
|
});
|
|
7823
7823
|
}
|
|
7824
7824
|
var MAX_ARGUMENT_SIZE = 16 * 1024;
|
|
7825
|
+
var DEFAULT_HERMES_URL = "https://hermes.pyth.network";
|
|
7826
|
+
var DEFAULT_AVAILABILITY_TIMEOUT = 3e3;
|
|
7827
|
+
var DEFAULT_IS_AVAILABLE_STATUS = (status) => status >= 200 && status < 400;
|
|
7825
7828
|
var PythAdapter = class {
|
|
7826
7829
|
constructor(client, pythStateId, wormholeStateId, hermesUrls) {
|
|
7827
7830
|
this.priceFeedObjectIdCache = /* @__PURE__ */ new Map();
|
|
7828
7831
|
this.client = client;
|
|
7829
7832
|
this.pythStateId = pythStateId;
|
|
7830
7833
|
this.wormholeStateId = wormholeStateId;
|
|
7831
|
-
const urls =
|
|
7832
|
-
|
|
7833
|
-
|
|
7834
|
+
const urls = Array.from(
|
|
7835
|
+
new Set(hermesUrls.filter(Boolean).map(normalizeServiceUrl))
|
|
7836
|
+
);
|
|
7837
|
+
if (!urls.includes(DEFAULT_HERMES_URL)) {
|
|
7838
|
+
urls.push(DEFAULT_HERMES_URL);
|
|
7834
7839
|
}
|
|
7840
|
+
this.hermesUrls = urls;
|
|
7835
7841
|
this.hermesClients = urls.map(
|
|
7836
7842
|
(url) => new hermesClient.HermesClient(url, { timeout: 3e3 })
|
|
7837
7843
|
);
|
|
7838
7844
|
}
|
|
7845
|
+
getHermesUrls() {
|
|
7846
|
+
return [...this.hermesUrls];
|
|
7847
|
+
}
|
|
7848
|
+
async checkHermesAvailability({
|
|
7849
|
+
timeout = DEFAULT_AVAILABILITY_TIMEOUT,
|
|
7850
|
+
isAvailableStatus = DEFAULT_IS_AVAILABLE_STATUS
|
|
7851
|
+
} = {}) {
|
|
7852
|
+
if (this.hermesUrls.length === 0) {
|
|
7853
|
+
return {
|
|
7854
|
+
checked: false,
|
|
7855
|
+
availableUrls: [],
|
|
7856
|
+
unavailableUrls: []
|
|
7857
|
+
};
|
|
7858
|
+
}
|
|
7859
|
+
const results = await Promise.all(
|
|
7860
|
+
this.hermesUrls.map(async (url) => ({
|
|
7861
|
+
url,
|
|
7862
|
+
available: await checkServiceUrl(url, timeout, isAvailableStatus)
|
|
7863
|
+
}))
|
|
7864
|
+
);
|
|
7865
|
+
return {
|
|
7866
|
+
checked: true,
|
|
7867
|
+
availableUrls: results.filter((result) => result.available).map((result) => result.url),
|
|
7868
|
+
unavailableUrls: results.filter((result) => !result.available).map((result) => result.url)
|
|
7869
|
+
};
|
|
7870
|
+
}
|
|
7871
|
+
async isHermesAvailable(options) {
|
|
7872
|
+
const snapshot = await this.checkHermesAvailability(options);
|
|
7873
|
+
return snapshot.availableUrls.length > 0;
|
|
7874
|
+
}
|
|
7839
7875
|
async getPriceFeedsUpdateData(priceIDs) {
|
|
7840
7876
|
let lastError = null;
|
|
7841
7877
|
for (const hermes of this.hermesClients) {
|
|
@@ -8044,6 +8080,25 @@ var PythAdapter = class {
|
|
|
8044
8080
|
return priceInfoObjects;
|
|
8045
8081
|
}
|
|
8046
8082
|
};
|
|
8083
|
+
async function checkServiceUrl(url, timeout, isAvailableStatus) {
|
|
8084
|
+
const controller = new AbortController();
|
|
8085
|
+
const timer = setTimeout(() => controller.abort(), timeout);
|
|
8086
|
+
try {
|
|
8087
|
+
const response = await fetch(url, {
|
|
8088
|
+
method: "GET",
|
|
8089
|
+
cache: "no-store",
|
|
8090
|
+
signal: controller.signal
|
|
8091
|
+
});
|
|
8092
|
+
return isAvailableStatus(response.status);
|
|
8093
|
+
} catch {
|
|
8094
|
+
return false;
|
|
8095
|
+
} finally {
|
|
8096
|
+
clearTimeout(timer);
|
|
8097
|
+
}
|
|
8098
|
+
}
|
|
8099
|
+
function normalizeServiceUrl(url) {
|
|
8100
|
+
return url.replace(/\/+$/, "");
|
|
8101
|
+
}
|
|
8047
8102
|
|
|
8048
8103
|
// src/utils/uuid.ts
|
|
8049
8104
|
function generateDowngradeUuid6() {
|
|
@@ -8872,6 +8927,61 @@ var HaedalPropAmmRouter = class {
|
|
|
8872
8927
|
});
|
|
8873
8928
|
}
|
|
8874
8929
|
};
|
|
8930
|
+
var CetusTideRouter = class {
|
|
8931
|
+
swap(txb, flattenedPath, swapContext, _extends) {
|
|
8932
|
+
const path = flattenedPath.path;
|
|
8933
|
+
if (!path.extendedDetails) {
|
|
8934
|
+
throw new Error("Cetus Tide: extended_details missing on path");
|
|
8935
|
+
}
|
|
8936
|
+
if (path.publishedAt == null) {
|
|
8937
|
+
throw new Error("Cetus Tide: path.publishedAt missing");
|
|
8938
|
+
}
|
|
8939
|
+
const ed = path.extendedDetails;
|
|
8940
|
+
const fill = this.validateFill(ed);
|
|
8941
|
+
const mmObjectId = ed.cetus_tide_mm_object_id;
|
|
8942
|
+
const versioned = ed.cetus_tide_versioned;
|
|
8943
|
+
const globalConfig = ed.cetus_tide_global_config;
|
|
8944
|
+
const [baseCoinType, quoteCoinType] = path.direction ? [path.from, path.target] : [path.target, path.from];
|
|
8945
|
+
const amountIn = flattenedPath.isLastUseOfIntermediateToken ? AGGREGATOR_V3_CONFIG.MAX_AMOUNT_IN : path.amountIn;
|
|
8946
|
+
const envelopeBytes = Array.from(utils.fromHex(fill.envelope));
|
|
8947
|
+
const signatureBytes = Array.from(utils.fromHex(fill.signature));
|
|
8948
|
+
const quoteHashBytes = Array.from(utils.fromHex(fill.quote_hash));
|
|
8949
|
+
const args = [
|
|
8950
|
+
swapContext,
|
|
8951
|
+
txb.object(versioned),
|
|
8952
|
+
txb.object(globalConfig),
|
|
8953
|
+
txb.object(mmObjectId),
|
|
8954
|
+
txb.object(path.id),
|
|
8955
|
+
txb.pure.vector("u8", envelopeBytes),
|
|
8956
|
+
txb.pure.vector("u8", signatureBytes),
|
|
8957
|
+
txb.pure.vector("u8", quoteHashBytes),
|
|
8958
|
+
txb.pure.u64(amountIn.toString()),
|
|
8959
|
+
txb.pure.bool(path.direction),
|
|
8960
|
+
txb.pure.vector("u8", quoteHashBytes),
|
|
8961
|
+
txb.object(utils.SUI_CLOCK_OBJECT_ID)
|
|
8962
|
+
];
|
|
8963
|
+
txb.moveCall({
|
|
8964
|
+
target: `${path.publishedAt}::orderbook::swap`,
|
|
8965
|
+
typeArguments: [baseCoinType, quoteCoinType],
|
|
8966
|
+
arguments: args
|
|
8967
|
+
});
|
|
8968
|
+
}
|
|
8969
|
+
validateFill(ed) {
|
|
8970
|
+
if (!ed.cetus_tide_fill) {
|
|
8971
|
+
throw new Error("Cetus Tide: cetus_tide_fill missing");
|
|
8972
|
+
}
|
|
8973
|
+
if (!ed.cetus_tide_mm_object_id) {
|
|
8974
|
+
throw new Error("Cetus Tide: cetus_tide_mm_object_id missing");
|
|
8975
|
+
}
|
|
8976
|
+
if (!ed.cetus_tide_versioned) {
|
|
8977
|
+
throw new Error("Cetus Tide: cetus_tide_versioned missing");
|
|
8978
|
+
}
|
|
8979
|
+
if (!ed.cetus_tide_global_config) {
|
|
8980
|
+
throw new Error("Cetus Tide: cetus_tide_global_config missing");
|
|
8981
|
+
}
|
|
8982
|
+
return ed.cetus_tide_fill;
|
|
8983
|
+
}
|
|
8984
|
+
};
|
|
8875
8985
|
|
|
8876
8986
|
// src/client.ts
|
|
8877
8987
|
var CETUS = "CETUS";
|
|
@@ -8910,6 +9020,7 @@ var FERRACLMM = "FERRACLMM";
|
|
|
8910
9020
|
var BOLT = "BOLT";
|
|
8911
9021
|
var MAGMAPROPAMM = "MAGMAPROPAMM";
|
|
8912
9022
|
var HAEDALPROPAMM = "HAEDALPROPAMM";
|
|
9023
|
+
var CETUS_TIDE = "CETUS_TIDE";
|
|
8913
9024
|
var DEFAULT_ENDPOINT = "https://api-sui.cetus.zone/router_v3";
|
|
8914
9025
|
var ALL_DEXES = [
|
|
8915
9026
|
CETUS,
|
|
@@ -8946,7 +9057,14 @@ var ALL_DEXES = [
|
|
|
8946
9057
|
FERRACLMM,
|
|
8947
9058
|
BOLT,
|
|
8948
9059
|
MAGMAPROPAMM,
|
|
8949
|
-
HAEDALPROPAMM
|
|
9060
|
+
HAEDALPROPAMM,
|
|
9061
|
+
CETUS_TIDE
|
|
9062
|
+
];
|
|
9063
|
+
var PYTH_ORACLE_BASED_DEXES = [
|
|
9064
|
+
HAEDALPMM,
|
|
9065
|
+
METASTABLE,
|
|
9066
|
+
STEAMM_OMM_V2,
|
|
9067
|
+
HAEDALHMMV2
|
|
8950
9068
|
];
|
|
8951
9069
|
function getAllProviders() {
|
|
8952
9070
|
return ALL_DEXES;
|
|
@@ -9027,6 +9145,9 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9027
9145
|
this.apiKey = params.apiKey || "";
|
|
9028
9146
|
this.partner = params.partner;
|
|
9029
9147
|
this.cetusDlmmPartner = params.cetusDlmmPartner;
|
|
9148
|
+
this.pythAvailabilityCheckInterval = validatePythAvailabilityCheckInterval(
|
|
9149
|
+
params.pythAvailabilityCheckInterval
|
|
9150
|
+
);
|
|
9030
9151
|
if (params.overlayFeeRate) {
|
|
9031
9152
|
if (params.overlayFeeRate > 0 && params.overlayFeeRate <= CLIENT_CONFIG.MAX_OVERLAY_FEE_RATE) {
|
|
9032
9153
|
this.overlayFeeRate = params.overlayFeeRate * AGGREGATOR_V3_CONFIG.FEE_DENOMINATOR;
|
|
@@ -9069,23 +9190,74 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9069
9190
|
}
|
|
9070
9191
|
}
|
|
9071
9192
|
async findRouters(params) {
|
|
9193
|
+
const {
|
|
9194
|
+
params: routerParams,
|
|
9195
|
+
providersExhausted
|
|
9196
|
+
} = await this.filterProvidersByPythAvailability(params);
|
|
9197
|
+
if (providersExhausted) {
|
|
9198
|
+
return emptyRouterResult(routerParams.byAmountIn);
|
|
9199
|
+
}
|
|
9072
9200
|
return getRouterResult(
|
|
9073
9201
|
this.endpoint,
|
|
9074
9202
|
this.apiKey,
|
|
9075
|
-
|
|
9203
|
+
routerParams,
|
|
9076
9204
|
this.overlayFeeRate,
|
|
9077
9205
|
this.overlayFeeReceiver
|
|
9078
9206
|
);
|
|
9079
9207
|
}
|
|
9080
9208
|
async findMergeSwapRouters(params) {
|
|
9209
|
+
const {
|
|
9210
|
+
params: routerParams,
|
|
9211
|
+
providersExhausted
|
|
9212
|
+
} = await this.filterProvidersByPythAvailability(params);
|
|
9213
|
+
if (providersExhausted) {
|
|
9214
|
+
return emptyMergeSwapResult();
|
|
9215
|
+
}
|
|
9081
9216
|
return getMergeSwapResult(
|
|
9082
9217
|
this.endpoint,
|
|
9083
9218
|
this.apiKey,
|
|
9084
|
-
|
|
9219
|
+
routerParams,
|
|
9085
9220
|
this.overlayFeeRate,
|
|
9086
9221
|
this.overlayFeeReceiver
|
|
9087
9222
|
);
|
|
9088
9223
|
}
|
|
9224
|
+
async filterProvidersByPythAvailability(params) {
|
|
9225
|
+
const interval = validatePythAvailabilityCheckInterval(
|
|
9226
|
+
params.pythAvailabilityCheckInterval ?? this.pythAvailabilityCheckInterval
|
|
9227
|
+
);
|
|
9228
|
+
if (interval === void 0) {
|
|
9229
|
+
return { params, providersExhausted: false };
|
|
9230
|
+
}
|
|
9231
|
+
const pythAvailable = await this.getPythAvailability(interval);
|
|
9232
|
+
if (pythAvailable) {
|
|
9233
|
+
return { params, providersExhausted: false };
|
|
9234
|
+
}
|
|
9235
|
+
const sourceProviders = params.providers && params.providers.length > 0 ? params.providers : ALL_DEXES;
|
|
9236
|
+
const providers = sourceProviders.filter(
|
|
9237
|
+
(provider) => !PYTH_ORACLE_BASED_DEXES.includes(provider)
|
|
9238
|
+
);
|
|
9239
|
+
return {
|
|
9240
|
+
params: { ...params, providers },
|
|
9241
|
+
providersExhausted: providers.length === 0
|
|
9242
|
+
};
|
|
9243
|
+
}
|
|
9244
|
+
async getPythAvailability(interval) {
|
|
9245
|
+
const now = Date.now();
|
|
9246
|
+
if (this.pythAvailable !== void 0 && this.pythAvailabilityCheckedAt !== void 0 && now - this.pythAvailabilityCheckedAt < interval) {
|
|
9247
|
+
return this.pythAvailable;
|
|
9248
|
+
}
|
|
9249
|
+
if (this.pythAvailabilityPromise) {
|
|
9250
|
+
return this.pythAvailabilityPromise;
|
|
9251
|
+
}
|
|
9252
|
+
this.pythAvailabilityPromise = this.pythAdapter.isHermesAvailable().catch(() => false).then((available) => {
|
|
9253
|
+
this.pythAvailable = available;
|
|
9254
|
+
this.pythAvailabilityCheckedAt = Date.now();
|
|
9255
|
+
return available;
|
|
9256
|
+
}).finally(() => {
|
|
9257
|
+
this.pythAvailabilityPromise = void 0;
|
|
9258
|
+
});
|
|
9259
|
+
return this.pythAvailabilityPromise;
|
|
9260
|
+
}
|
|
9089
9261
|
async executeFlexibleInputSwap(txb, inputCoin, routerData, expectedAmountOut, amountLimit, pythPriceIDs, partner, deepbookv3DeepFee, packages) {
|
|
9090
9262
|
}
|
|
9091
9263
|
newDexRouterV3(provider, pythPriceIDs, partner, cetusDlmmPartner) {
|
|
@@ -9160,6 +9332,8 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9160
9332
|
return new MagmaPropAmmRouter(this.env);
|
|
9161
9333
|
case HAEDALPROPAMM:
|
|
9162
9334
|
return new HaedalPropAmmRouter(this.env);
|
|
9335
|
+
case CETUS_TIDE:
|
|
9336
|
+
return new CetusTideRouter();
|
|
9163
9337
|
default:
|
|
9164
9338
|
throw new Error(
|
|
9165
9339
|
`${CLIENT_CONFIG.ERRORS.UNSUPPORTED_DEX} ${provider}`
|
|
@@ -10047,6 +10221,35 @@ function generateUUID() {
|
|
|
10047
10221
|
return v.toString(16);
|
|
10048
10222
|
});
|
|
10049
10223
|
}
|
|
10224
|
+
function validatePythAvailabilityCheckInterval(interval) {
|
|
10225
|
+
if (interval === void 0) {
|
|
10226
|
+
return void 0;
|
|
10227
|
+
}
|
|
10228
|
+
if (!Number.isFinite(interval) || interval < 0) {
|
|
10229
|
+
throw new Error(
|
|
10230
|
+
"pythAvailabilityCheckInterval must be a non-negative number"
|
|
10231
|
+
);
|
|
10232
|
+
}
|
|
10233
|
+
return interval;
|
|
10234
|
+
}
|
|
10235
|
+
function emptyRouterResult(byAmountIn) {
|
|
10236
|
+
return {
|
|
10237
|
+
quoteID: "",
|
|
10238
|
+
amountIn: ZERO,
|
|
10239
|
+
amountOut: ZERO,
|
|
10240
|
+
paths: [],
|
|
10241
|
+
byAmountIn,
|
|
10242
|
+
insufficientLiquidity: true,
|
|
10243
|
+
deviationRatio: 0
|
|
10244
|
+
};
|
|
10245
|
+
}
|
|
10246
|
+
function emptyMergeSwapResult() {
|
|
10247
|
+
return {
|
|
10248
|
+
quoteID: "",
|
|
10249
|
+
totalAmountOut: ZERO,
|
|
10250
|
+
allRoutes: []
|
|
10251
|
+
};
|
|
10252
|
+
}
|
|
10050
10253
|
function recordFirstCoinIndex(paths) {
|
|
10051
10254
|
let newCoinRecord = /* @__PURE__ */ new Map();
|
|
10052
10255
|
for (let i = 0; i < paths.length; i++) {
|
|
@@ -10115,6 +10318,7 @@ exports.CETUSDLMM = CETUSDLMM;
|
|
|
10115
10318
|
exports.CETUS_DEX = CETUS_DEX;
|
|
10116
10319
|
exports.CETUS_MODULE = CETUS_MODULE;
|
|
10117
10320
|
exports.CETUS_PUBLISHED_AT = CETUS_PUBLISHED_AT;
|
|
10321
|
+
exports.CETUS_TIDE = CETUS_TIDE;
|
|
10118
10322
|
exports.CHECK_COINS_THRESHOLD_FUNC = CHECK_COINS_THRESHOLD_FUNC;
|
|
10119
10323
|
exports.CLIENT_CONFIG = CLIENT_CONFIG;
|
|
10120
10324
|
exports.CLOCK_ADDRESS = CLOCK_ADDRESS;
|
|
@@ -10186,6 +10390,7 @@ exports.PAY_MODULE = PAY_MODULE;
|
|
|
10186
10390
|
exports.POOL_MODULT = POOL_MODULT;
|
|
10187
10391
|
exports.PUBLISHED_ADDRESSES = PUBLISHED_ADDRESSES;
|
|
10188
10392
|
exports.PYTH_CONFIG = PYTH_CONFIG;
|
|
10393
|
+
exports.PYTH_ORACLE_BASED_DEXES = PYTH_ORACLE_BASED_DEXES;
|
|
10189
10394
|
exports.PYTH_PRELUDE_CALLS = PYTH_PRELUDE_CALLS;
|
|
10190
10395
|
exports.REPAY_FLASH_SWAP_A2B_FUNC = REPAY_FLASH_SWAP_A2B_FUNC;
|
|
10191
10396
|
exports.REPAY_FLASH_SWAP_B2A_FUNC = REPAY_FLASH_SWAP_B2A_FUNC;
|
package/dist/index.d.cts
CHANGED
|
@@ -15,6 +15,7 @@ interface FindRouterParams {
|
|
|
15
15
|
splitFactor?: number;
|
|
16
16
|
splitCount?: number;
|
|
17
17
|
providers?: string[];
|
|
18
|
+
pythAvailabilityCheckInterval?: number;
|
|
18
19
|
liquidityChanges?: PreSwapLpChangeParams[];
|
|
19
20
|
}
|
|
20
21
|
interface MergeSwapFromCoin {
|
|
@@ -26,6 +27,7 @@ interface MergeSwapParams {
|
|
|
26
27
|
byAmountIn: boolean;
|
|
27
28
|
depth?: number;
|
|
28
29
|
providers?: string[];
|
|
30
|
+
pythAvailabilityCheckInterval?: number;
|
|
29
31
|
froms: MergeSwapFromCoin[];
|
|
30
32
|
}
|
|
31
33
|
interface MergeSwapInputCoin {
|
|
@@ -109,8 +111,18 @@ type ExtendedDetails = {
|
|
|
109
111
|
haedalpropamm_oracle_mode?: string;
|
|
110
112
|
haedalpropamm_base_price_info_object?: string;
|
|
111
113
|
haedalpropamm_quote_price_info_object?: string;
|
|
114
|
+
cetus_tide_fill?: CetusTideFill;
|
|
115
|
+
cetus_tide_mm_object_id?: string;
|
|
116
|
+
cetus_tide_versioned?: string;
|
|
117
|
+
cetus_tide_global_config?: string;
|
|
112
118
|
aux_shared_versions?: Record<string, number>;
|
|
113
119
|
};
|
|
120
|
+
type CetusTideFill = {
|
|
121
|
+
envelope: string;
|
|
122
|
+
signature: string;
|
|
123
|
+
quote_hash: string;
|
|
124
|
+
sig_expiry_ms: string | number;
|
|
125
|
+
};
|
|
114
126
|
type Path = {
|
|
115
127
|
id: string;
|
|
116
128
|
direction: boolean;
|
|
@@ -277,9 +289,19 @@ interface PriceTableInfo {
|
|
|
277
289
|
id: ObjectId;
|
|
278
290
|
fieldType: string;
|
|
279
291
|
}
|
|
292
|
+
interface PythAvailabilitySnapshot {
|
|
293
|
+
checked: boolean;
|
|
294
|
+
availableUrls: string[];
|
|
295
|
+
unavailableUrls: string[];
|
|
296
|
+
}
|
|
297
|
+
interface PythAvailabilityOptions {
|
|
298
|
+
timeout?: number;
|
|
299
|
+
isAvailableStatus?: (status: number) => boolean;
|
|
300
|
+
}
|
|
280
301
|
declare class PythAdapter {
|
|
281
302
|
private client;
|
|
282
303
|
private hermesClients;
|
|
304
|
+
private hermesUrls;
|
|
283
305
|
private pythStateId;
|
|
284
306
|
private wormholeStateId;
|
|
285
307
|
private pythPackageId;
|
|
@@ -288,6 +310,9 @@ declare class PythAdapter {
|
|
|
288
310
|
private priceFeedObjectIdCache;
|
|
289
311
|
private baseUpdateFee;
|
|
290
312
|
constructor(client: SuiGrpcClient, pythStateId: ObjectId, wormholeStateId: ObjectId, hermesUrls: string[]);
|
|
313
|
+
getHermesUrls(): string[];
|
|
314
|
+
checkHermesAvailability({ timeout, isAvailableStatus, }?: PythAvailabilityOptions): Promise<PythAvailabilitySnapshot>;
|
|
315
|
+
isHermesAvailable(options?: PythAvailabilityOptions): Promise<boolean>;
|
|
291
316
|
getPriceFeedsUpdateData(priceIDs: string[]): Promise<Buffer[]>;
|
|
292
317
|
getBaseUpdateFee(): Promise<number>;
|
|
293
318
|
getPackageId(objectId: ObjectId): Promise<string>;
|
|
@@ -338,8 +363,10 @@ declare const FERRACLMM = "FERRACLMM";
|
|
|
338
363
|
declare const BOLT = "BOLT";
|
|
339
364
|
declare const MAGMAPROPAMM = "MAGMAPROPAMM";
|
|
340
365
|
declare const HAEDALPROPAMM = "HAEDALPROPAMM";
|
|
366
|
+
declare const CETUS_TIDE = "CETUS_TIDE";
|
|
341
367
|
declare const DEFAULT_ENDPOINT = "https://api-sui.cetus.zone/router_v3";
|
|
342
368
|
declare const ALL_DEXES: string[];
|
|
369
|
+
declare const PYTH_ORACLE_BASED_DEXES: string[];
|
|
343
370
|
type BuildRouterSwapParamsV3 = {
|
|
344
371
|
router: RouterDataV3;
|
|
345
372
|
inputCoin: TransactionObjectArgument;
|
|
@@ -407,6 +434,7 @@ type AggregatorClientParams = {
|
|
|
407
434
|
overlayFeeRate?: number;
|
|
408
435
|
overlayFeeReceiver?: string;
|
|
409
436
|
cetusDlmmPartner?: string;
|
|
437
|
+
pythAvailabilityCheckInterval?: number;
|
|
410
438
|
};
|
|
411
439
|
declare class AggregatorClient {
|
|
412
440
|
endpoint: string;
|
|
@@ -419,6 +447,10 @@ declare class AggregatorClient {
|
|
|
419
447
|
protected overlayFeeReceiver: string;
|
|
420
448
|
protected partner?: string;
|
|
421
449
|
protected cetusDlmmPartner?: string;
|
|
450
|
+
private pythAvailabilityCheckInterval?;
|
|
451
|
+
private pythAvailabilityCheckedAt?;
|
|
452
|
+
private pythAvailable?;
|
|
453
|
+
private pythAvailabilityPromise?;
|
|
422
454
|
private static readonly CONFIG;
|
|
423
455
|
constructor(params: AggregatorClientParams);
|
|
424
456
|
deepbookv3DeepFeeType(): string;
|
|
@@ -426,6 +458,8 @@ declare class AggregatorClient {
|
|
|
426
458
|
getOneCoinUsedToMerge(coinType: string): Promise<string | null>;
|
|
427
459
|
findRouters(params: FindRouterParams): Promise<RouterDataV3 | null>;
|
|
428
460
|
findMergeSwapRouters(params: MergeSwapParams): Promise<MergeSwapRouterData | null>;
|
|
461
|
+
private filterProvidersByPythAvailability;
|
|
462
|
+
private getPythAvailability;
|
|
429
463
|
executeFlexibleInputSwap(txb: Transaction, inputCoin: TransactionObjectArgument, routerData: RouterDataV3, expectedAmountOut: string, amountLimit: string, pythPriceIDs: Map<string, string>, partner?: string, deepbookv3DeepFee?: TransactionObjectArgument, packages?: Map<string, string>): Promise<void>;
|
|
430
464
|
newDexRouterV3(provider: string, pythPriceIDs: Map<string, string>, partner?: string, cetusDlmmPartner?: string): DexRouter;
|
|
431
465
|
expectInputSwapV3(txb: Transaction, inputCoin: TransactionObjectArgument, routerData: RouterDataV3, expectAmountOut: string, amountOutLimit: string, pythPriceIDs: Map<string, string>, partner?: string, cetusDlmmPartner?: string): TransactionObjectArgument;
|
|
@@ -1176,4 +1210,4 @@ declare class CoinUtils {
|
|
|
1176
1210
|
static calculateTotalBalance(coins: CoinAsset[]): bigint;
|
|
1177
1211
|
}
|
|
1178
1212
|
|
|
1179
|
-
export { AFSUI, AFTERMATH, AFTERMATH_AMM, AFTERMATH_MODULE, AGGREGATOR, AGGREGATOR_V3_CONFIG, ALL_DEXES, ALPHAFI, AggregatorClient, type AggregatorClientParams, AggregatorConfig, AggregatorError, type AggregatorErrorCode, type AggregatorResponse, AggregatorServerErrorCode, BLUEFIN, BLUEMOVE, BOLT, type BigNumber, type BuildCoinResult, type BuildFastMergeSwapParams, type BuildFastRouterSwapParams, type BuildFastRouterSwapParamsV2, type BuildFastRouterSwapParamsV3, type BuildMergeSwapParams, type BuildRouterSwapParams, type BuildRouterSwapParamsV2, type BuildRouterSwapParamsV3, type BuildSponsoredTransactionParams, CETUS, CETUSDLMM, CETUS_DEX, CETUS_MODULE, CETUS_PUBLISHED_AT, CHECK_COINS_THRESHOLD_FUNC, CLIENT_CONFIG, CLOCK_ADDRESS, type CoinAsset, CoinInfoAddress, CoinStoreAddress, CoinUtils, type ComparisonResult, 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, type DeepbookV3Config, type DeepbookV3ConfigResponse, type Dex, Env, type ExtendedDetails, FERRACLMM, FERRADLMM, FLOWXV2, FLOWXV3, FLOWX_AMM, FLOWX_AMM_MODULE, FULLSAIL, type FindRouterParams, FlashSwapA2BFunc, FlashSwapB2AFunc, FlashSwapFunc, FlashSwapWithPartnerA2BFunc, FlashSwapWithPartnerB2AFunc, FlashSwapWithPartnerFunc, type FlattenedPath, GAS_SYMBOL, GAS_TYPE_ARG, GAS_TYPE_ARG_LONG, type GasMetrics, type GetOrCreateAccountCapResult, HAEDAL, HAEDALHMMV2, HAEDALPMM, HAEDALPROPAMM, 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, type MergeRoute, type MergeSwapFromCoin, type MergeSwapInputCoin, type MergeSwapParams, type MergeSwapRouterData, type NFT, OBRIC, ONE, PACKAGE_NAMES, PAY_MODULE, POOL_MODULT, PUBLISHED_ADDRESSES, PYTH_CONFIG, PYTH_PRELUDE_CALLS, type Package, type Path, type PathV2, type PreSwapLpChangeParams, type ProcessedRouterData, type PythConfig, 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, type Router, type RouterData, type RouterDataV2, type RouterDataV3, type RouterError, type RouterV2, SCALLOP, SEVENK, SPRINGSUI, STEAMM, STEAMM_OMM, STEAMM_OMM_V2, SUILEND, SUI_SYSTEM_STATE_OBJECT_ID, SWAP_A2B_FUNC, SWAP_B2A_FUNC, SWAP_GAS_BUDGET_TABLE, type SimulateTransactionResult, type SuiAddress, type SuiBasicTypes, type SuiInputTypes, type SuiMoveObject, type SuiObjectIdType, type SuiResource, type SuiStructTag, type SuiTxArg, SuiZeroCoinFn, type SwapGasAnalysis, type SwapInPoolsParams, type SwapInPoolsResultV3, 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, estimateSwapGasBudget, exportToCSV, exportToJSON, extractAddressFromType, extractGasMetrics, extractStructTagFromType, extractTimestampFromDowngradeUuid6, fixSuiObjectId, formatGasMetrics, generateDowngradeUuid6, generateSimpleDowngradeUuid6, getAggregatorServerErrorMessage, getAggregatorV2Extend2PublishedAt, getAggregatorV2ExtendPublishedAt, getAggregatorV2PublishedAt, getAllProviders, getDeepbookV3Config, getDefaultSuiInputType, getMergeSwapResult, getOrCreateAccountCap, getProvidersExcluding, getProvidersIncluding, getRouterResult, hasPythPrelude, isSortedSymbols, isValidDowngradeUuid6, lookupGasBudget, mintZeroCoin, normalizeCoinType, parseAftermathFeeType, parseTurbosPoolFeeType, patchFixSuiObjectId, printTransaction, processEndpoint, processFlattenRoutes, restituteMsafeFastRouterSwapParams };
|
|
1213
|
+
export { AFSUI, AFTERMATH, AFTERMATH_AMM, AFTERMATH_MODULE, AGGREGATOR, AGGREGATOR_V3_CONFIG, ALL_DEXES, ALPHAFI, AggregatorClient, type AggregatorClientParams, AggregatorConfig, AggregatorError, type AggregatorErrorCode, type AggregatorResponse, AggregatorServerErrorCode, BLUEFIN, BLUEMOVE, BOLT, type BigNumber, type BuildCoinResult, type BuildFastMergeSwapParams, type BuildFastRouterSwapParams, type BuildFastRouterSwapParamsV2, type BuildFastRouterSwapParamsV3, type BuildMergeSwapParams, type BuildRouterSwapParams, type BuildRouterSwapParamsV2, type BuildRouterSwapParamsV3, type BuildSponsoredTransactionParams, CETUS, CETUSDLMM, CETUS_DEX, CETUS_MODULE, CETUS_PUBLISHED_AT, CETUS_TIDE, CHECK_COINS_THRESHOLD_FUNC, CLIENT_CONFIG, CLOCK_ADDRESS, type CetusTideFill, type CoinAsset, CoinInfoAddress, CoinStoreAddress, CoinUtils, type ComparisonResult, 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, type DeepbookV3Config, type DeepbookV3ConfigResponse, type Dex, Env, type ExtendedDetails, FERRACLMM, FERRADLMM, FLOWXV2, FLOWXV3, FLOWX_AMM, FLOWX_AMM_MODULE, FULLSAIL, type FindRouterParams, FlashSwapA2BFunc, FlashSwapB2AFunc, FlashSwapFunc, FlashSwapWithPartnerA2BFunc, FlashSwapWithPartnerB2AFunc, FlashSwapWithPartnerFunc, type FlattenedPath, GAS_SYMBOL, GAS_TYPE_ARG, GAS_TYPE_ARG_LONG, type GasMetrics, type GetOrCreateAccountCapResult, HAEDAL, HAEDALHMMV2, HAEDALPMM, HAEDALPROPAMM, 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, type MergeRoute, type MergeSwapFromCoin, type MergeSwapInputCoin, type MergeSwapParams, type MergeSwapRouterData, type NFT, OBRIC, ONE, PACKAGE_NAMES, PAY_MODULE, POOL_MODULT, PUBLISHED_ADDRESSES, PYTH_CONFIG, PYTH_ORACLE_BASED_DEXES, PYTH_PRELUDE_CALLS, type Package, type Path, type PathV2, type PreSwapLpChangeParams, type ProcessedRouterData, type PythConfig, 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, type Router, type RouterData, type RouterDataV2, type RouterDataV3, type RouterError, type RouterV2, SCALLOP, SEVENK, SPRINGSUI, STEAMM, STEAMM_OMM, STEAMM_OMM_V2, SUILEND, SUI_SYSTEM_STATE_OBJECT_ID, SWAP_A2B_FUNC, SWAP_B2A_FUNC, SWAP_GAS_BUDGET_TABLE, type SimulateTransactionResult, type SuiAddress, type SuiBasicTypes, type SuiInputTypes, type SuiMoveObject, type SuiObjectIdType, type SuiResource, type SuiStructTag, type SuiTxArg, SuiZeroCoinFn, type SwapGasAnalysis, type SwapInPoolsParams, type SwapInPoolsResultV3, 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, estimateSwapGasBudget, exportToCSV, exportToJSON, extractAddressFromType, extractGasMetrics, extractStructTagFromType, extractTimestampFromDowngradeUuid6, fixSuiObjectId, formatGasMetrics, generateDowngradeUuid6, generateSimpleDowngradeUuid6, getAggregatorServerErrorMessage, getAggregatorV2Extend2PublishedAt, getAggregatorV2ExtendPublishedAt, getAggregatorV2PublishedAt, getAllProviders, getDeepbookV3Config, getDefaultSuiInputType, getMergeSwapResult, getOrCreateAccountCap, getProvidersExcluding, getProvidersIncluding, getRouterResult, hasPythPrelude, isSortedSymbols, isValidDowngradeUuid6, lookupGasBudget, mintZeroCoin, normalizeCoinType, parseAftermathFeeType, parseTurbosPoolFeeType, patchFixSuiObjectId, printTransaction, processEndpoint, processFlattenRoutes, restituteMsafeFastRouterSwapParams };
|
package/dist/index.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ interface FindRouterParams {
|
|
|
15
15
|
splitFactor?: number;
|
|
16
16
|
splitCount?: number;
|
|
17
17
|
providers?: string[];
|
|
18
|
+
pythAvailabilityCheckInterval?: number;
|
|
18
19
|
liquidityChanges?: PreSwapLpChangeParams[];
|
|
19
20
|
}
|
|
20
21
|
interface MergeSwapFromCoin {
|
|
@@ -26,6 +27,7 @@ interface MergeSwapParams {
|
|
|
26
27
|
byAmountIn: boolean;
|
|
27
28
|
depth?: number;
|
|
28
29
|
providers?: string[];
|
|
30
|
+
pythAvailabilityCheckInterval?: number;
|
|
29
31
|
froms: MergeSwapFromCoin[];
|
|
30
32
|
}
|
|
31
33
|
interface MergeSwapInputCoin {
|
|
@@ -109,8 +111,18 @@ type ExtendedDetails = {
|
|
|
109
111
|
haedalpropamm_oracle_mode?: string;
|
|
110
112
|
haedalpropamm_base_price_info_object?: string;
|
|
111
113
|
haedalpropamm_quote_price_info_object?: string;
|
|
114
|
+
cetus_tide_fill?: CetusTideFill;
|
|
115
|
+
cetus_tide_mm_object_id?: string;
|
|
116
|
+
cetus_tide_versioned?: string;
|
|
117
|
+
cetus_tide_global_config?: string;
|
|
112
118
|
aux_shared_versions?: Record<string, number>;
|
|
113
119
|
};
|
|
120
|
+
type CetusTideFill = {
|
|
121
|
+
envelope: string;
|
|
122
|
+
signature: string;
|
|
123
|
+
quote_hash: string;
|
|
124
|
+
sig_expiry_ms: string | number;
|
|
125
|
+
};
|
|
114
126
|
type Path = {
|
|
115
127
|
id: string;
|
|
116
128
|
direction: boolean;
|
|
@@ -277,9 +289,19 @@ interface PriceTableInfo {
|
|
|
277
289
|
id: ObjectId;
|
|
278
290
|
fieldType: string;
|
|
279
291
|
}
|
|
292
|
+
interface PythAvailabilitySnapshot {
|
|
293
|
+
checked: boolean;
|
|
294
|
+
availableUrls: string[];
|
|
295
|
+
unavailableUrls: string[];
|
|
296
|
+
}
|
|
297
|
+
interface PythAvailabilityOptions {
|
|
298
|
+
timeout?: number;
|
|
299
|
+
isAvailableStatus?: (status: number) => boolean;
|
|
300
|
+
}
|
|
280
301
|
declare class PythAdapter {
|
|
281
302
|
private client;
|
|
282
303
|
private hermesClients;
|
|
304
|
+
private hermesUrls;
|
|
283
305
|
private pythStateId;
|
|
284
306
|
private wormholeStateId;
|
|
285
307
|
private pythPackageId;
|
|
@@ -288,6 +310,9 @@ declare class PythAdapter {
|
|
|
288
310
|
private priceFeedObjectIdCache;
|
|
289
311
|
private baseUpdateFee;
|
|
290
312
|
constructor(client: SuiGrpcClient, pythStateId: ObjectId, wormholeStateId: ObjectId, hermesUrls: string[]);
|
|
313
|
+
getHermesUrls(): string[];
|
|
314
|
+
checkHermesAvailability({ timeout, isAvailableStatus, }?: PythAvailabilityOptions): Promise<PythAvailabilitySnapshot>;
|
|
315
|
+
isHermesAvailable(options?: PythAvailabilityOptions): Promise<boolean>;
|
|
291
316
|
getPriceFeedsUpdateData(priceIDs: string[]): Promise<Buffer[]>;
|
|
292
317
|
getBaseUpdateFee(): Promise<number>;
|
|
293
318
|
getPackageId(objectId: ObjectId): Promise<string>;
|
|
@@ -338,8 +363,10 @@ declare const FERRACLMM = "FERRACLMM";
|
|
|
338
363
|
declare const BOLT = "BOLT";
|
|
339
364
|
declare const MAGMAPROPAMM = "MAGMAPROPAMM";
|
|
340
365
|
declare const HAEDALPROPAMM = "HAEDALPROPAMM";
|
|
366
|
+
declare const CETUS_TIDE = "CETUS_TIDE";
|
|
341
367
|
declare const DEFAULT_ENDPOINT = "https://api-sui.cetus.zone/router_v3";
|
|
342
368
|
declare const ALL_DEXES: string[];
|
|
369
|
+
declare const PYTH_ORACLE_BASED_DEXES: string[];
|
|
343
370
|
type BuildRouterSwapParamsV3 = {
|
|
344
371
|
router: RouterDataV3;
|
|
345
372
|
inputCoin: TransactionObjectArgument;
|
|
@@ -407,6 +434,7 @@ type AggregatorClientParams = {
|
|
|
407
434
|
overlayFeeRate?: number;
|
|
408
435
|
overlayFeeReceiver?: string;
|
|
409
436
|
cetusDlmmPartner?: string;
|
|
437
|
+
pythAvailabilityCheckInterval?: number;
|
|
410
438
|
};
|
|
411
439
|
declare class AggregatorClient {
|
|
412
440
|
endpoint: string;
|
|
@@ -419,6 +447,10 @@ declare class AggregatorClient {
|
|
|
419
447
|
protected overlayFeeReceiver: string;
|
|
420
448
|
protected partner?: string;
|
|
421
449
|
protected cetusDlmmPartner?: string;
|
|
450
|
+
private pythAvailabilityCheckInterval?;
|
|
451
|
+
private pythAvailabilityCheckedAt?;
|
|
452
|
+
private pythAvailable?;
|
|
453
|
+
private pythAvailabilityPromise?;
|
|
422
454
|
private static readonly CONFIG;
|
|
423
455
|
constructor(params: AggregatorClientParams);
|
|
424
456
|
deepbookv3DeepFeeType(): string;
|
|
@@ -426,6 +458,8 @@ declare class AggregatorClient {
|
|
|
426
458
|
getOneCoinUsedToMerge(coinType: string): Promise<string | null>;
|
|
427
459
|
findRouters(params: FindRouterParams): Promise<RouterDataV3 | null>;
|
|
428
460
|
findMergeSwapRouters(params: MergeSwapParams): Promise<MergeSwapRouterData | null>;
|
|
461
|
+
private filterProvidersByPythAvailability;
|
|
462
|
+
private getPythAvailability;
|
|
429
463
|
executeFlexibleInputSwap(txb: Transaction, inputCoin: TransactionObjectArgument, routerData: RouterDataV3, expectedAmountOut: string, amountLimit: string, pythPriceIDs: Map<string, string>, partner?: string, deepbookv3DeepFee?: TransactionObjectArgument, packages?: Map<string, string>): Promise<void>;
|
|
430
464
|
newDexRouterV3(provider: string, pythPriceIDs: Map<string, string>, partner?: string, cetusDlmmPartner?: string): DexRouter;
|
|
431
465
|
expectInputSwapV3(txb: Transaction, inputCoin: TransactionObjectArgument, routerData: RouterDataV3, expectAmountOut: string, amountOutLimit: string, pythPriceIDs: Map<string, string>, partner?: string, cetusDlmmPartner?: string): TransactionObjectArgument;
|
|
@@ -1176,4 +1210,4 @@ declare class CoinUtils {
|
|
|
1176
1210
|
static calculateTotalBalance(coins: CoinAsset[]): bigint;
|
|
1177
1211
|
}
|
|
1178
1212
|
|
|
1179
|
-
export { AFSUI, AFTERMATH, AFTERMATH_AMM, AFTERMATH_MODULE, AGGREGATOR, AGGREGATOR_V3_CONFIG, ALL_DEXES, ALPHAFI, AggregatorClient, type AggregatorClientParams, AggregatorConfig, AggregatorError, type AggregatorErrorCode, type AggregatorResponse, AggregatorServerErrorCode, BLUEFIN, BLUEMOVE, BOLT, type BigNumber, type BuildCoinResult, type BuildFastMergeSwapParams, type BuildFastRouterSwapParams, type BuildFastRouterSwapParamsV2, type BuildFastRouterSwapParamsV3, type BuildMergeSwapParams, type BuildRouterSwapParams, type BuildRouterSwapParamsV2, type BuildRouterSwapParamsV3, type BuildSponsoredTransactionParams, CETUS, CETUSDLMM, CETUS_DEX, CETUS_MODULE, CETUS_PUBLISHED_AT, CHECK_COINS_THRESHOLD_FUNC, CLIENT_CONFIG, CLOCK_ADDRESS, type CoinAsset, CoinInfoAddress, CoinStoreAddress, CoinUtils, type ComparisonResult, 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, type DeepbookV3Config, type DeepbookV3ConfigResponse, type Dex, Env, type ExtendedDetails, FERRACLMM, FERRADLMM, FLOWXV2, FLOWXV3, FLOWX_AMM, FLOWX_AMM_MODULE, FULLSAIL, type FindRouterParams, FlashSwapA2BFunc, FlashSwapB2AFunc, FlashSwapFunc, FlashSwapWithPartnerA2BFunc, FlashSwapWithPartnerB2AFunc, FlashSwapWithPartnerFunc, type FlattenedPath, GAS_SYMBOL, GAS_TYPE_ARG, GAS_TYPE_ARG_LONG, type GasMetrics, type GetOrCreateAccountCapResult, HAEDAL, HAEDALHMMV2, HAEDALPMM, HAEDALPROPAMM, 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, type MergeRoute, type MergeSwapFromCoin, type MergeSwapInputCoin, type MergeSwapParams, type MergeSwapRouterData, type NFT, OBRIC, ONE, PACKAGE_NAMES, PAY_MODULE, POOL_MODULT, PUBLISHED_ADDRESSES, PYTH_CONFIG, PYTH_PRELUDE_CALLS, type Package, type Path, type PathV2, type PreSwapLpChangeParams, type ProcessedRouterData, type PythConfig, 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, type Router, type RouterData, type RouterDataV2, type RouterDataV3, type RouterError, type RouterV2, SCALLOP, SEVENK, SPRINGSUI, STEAMM, STEAMM_OMM, STEAMM_OMM_V2, SUILEND, SUI_SYSTEM_STATE_OBJECT_ID, SWAP_A2B_FUNC, SWAP_B2A_FUNC, SWAP_GAS_BUDGET_TABLE, type SimulateTransactionResult, type SuiAddress, type SuiBasicTypes, type SuiInputTypes, type SuiMoveObject, type SuiObjectIdType, type SuiResource, type SuiStructTag, type SuiTxArg, SuiZeroCoinFn, type SwapGasAnalysis, type SwapInPoolsParams, type SwapInPoolsResultV3, 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, estimateSwapGasBudget, exportToCSV, exportToJSON, extractAddressFromType, extractGasMetrics, extractStructTagFromType, extractTimestampFromDowngradeUuid6, fixSuiObjectId, formatGasMetrics, generateDowngradeUuid6, generateSimpleDowngradeUuid6, getAggregatorServerErrorMessage, getAggregatorV2Extend2PublishedAt, getAggregatorV2ExtendPublishedAt, getAggregatorV2PublishedAt, getAllProviders, getDeepbookV3Config, getDefaultSuiInputType, getMergeSwapResult, getOrCreateAccountCap, getProvidersExcluding, getProvidersIncluding, getRouterResult, hasPythPrelude, isSortedSymbols, isValidDowngradeUuid6, lookupGasBudget, mintZeroCoin, normalizeCoinType, parseAftermathFeeType, parseTurbosPoolFeeType, patchFixSuiObjectId, printTransaction, processEndpoint, processFlattenRoutes, restituteMsafeFastRouterSwapParams };
|
|
1213
|
+
export { AFSUI, AFTERMATH, AFTERMATH_AMM, AFTERMATH_MODULE, AGGREGATOR, AGGREGATOR_V3_CONFIG, ALL_DEXES, ALPHAFI, AggregatorClient, type AggregatorClientParams, AggregatorConfig, AggregatorError, type AggregatorErrorCode, type AggregatorResponse, AggregatorServerErrorCode, BLUEFIN, BLUEMOVE, BOLT, type BigNumber, type BuildCoinResult, type BuildFastMergeSwapParams, type BuildFastRouterSwapParams, type BuildFastRouterSwapParamsV2, type BuildFastRouterSwapParamsV3, type BuildMergeSwapParams, type BuildRouterSwapParams, type BuildRouterSwapParamsV2, type BuildRouterSwapParamsV3, type BuildSponsoredTransactionParams, CETUS, CETUSDLMM, CETUS_DEX, CETUS_MODULE, CETUS_PUBLISHED_AT, CETUS_TIDE, CHECK_COINS_THRESHOLD_FUNC, CLIENT_CONFIG, CLOCK_ADDRESS, type CetusTideFill, type CoinAsset, CoinInfoAddress, CoinStoreAddress, CoinUtils, type ComparisonResult, 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, type DeepbookV3Config, type DeepbookV3ConfigResponse, type Dex, Env, type ExtendedDetails, FERRACLMM, FERRADLMM, FLOWXV2, FLOWXV3, FLOWX_AMM, FLOWX_AMM_MODULE, FULLSAIL, type FindRouterParams, FlashSwapA2BFunc, FlashSwapB2AFunc, FlashSwapFunc, FlashSwapWithPartnerA2BFunc, FlashSwapWithPartnerB2AFunc, FlashSwapWithPartnerFunc, type FlattenedPath, GAS_SYMBOL, GAS_TYPE_ARG, GAS_TYPE_ARG_LONG, type GasMetrics, type GetOrCreateAccountCapResult, HAEDAL, HAEDALHMMV2, HAEDALPMM, HAEDALPROPAMM, 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, type MergeRoute, type MergeSwapFromCoin, type MergeSwapInputCoin, type MergeSwapParams, type MergeSwapRouterData, type NFT, OBRIC, ONE, PACKAGE_NAMES, PAY_MODULE, POOL_MODULT, PUBLISHED_ADDRESSES, PYTH_CONFIG, PYTH_ORACLE_BASED_DEXES, PYTH_PRELUDE_CALLS, type Package, type Path, type PathV2, type PreSwapLpChangeParams, type ProcessedRouterData, type PythConfig, 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, type Router, type RouterData, type RouterDataV2, type RouterDataV3, type RouterError, type RouterV2, SCALLOP, SEVENK, SPRINGSUI, STEAMM, STEAMM_OMM, STEAMM_OMM_V2, SUILEND, SUI_SYSTEM_STATE_OBJECT_ID, SWAP_A2B_FUNC, SWAP_B2A_FUNC, SWAP_GAS_BUDGET_TABLE, type SimulateTransactionResult, type SuiAddress, type SuiBasicTypes, type SuiInputTypes, type SuiMoveObject, type SuiObjectIdType, type SuiResource, type SuiStructTag, type SuiTxArg, SuiZeroCoinFn, type SwapGasAnalysis, type SwapInPoolsParams, type SwapInPoolsResultV3, 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, estimateSwapGasBudget, exportToCSV, exportToJSON, extractAddressFromType, extractGasMetrics, extractStructTagFromType, extractTimestampFromDowngradeUuid6, fixSuiObjectId, formatGasMetrics, generateDowngradeUuid6, generateSimpleDowngradeUuid6, getAggregatorServerErrorMessage, getAggregatorV2Extend2PublishedAt, getAggregatorV2ExtendPublishedAt, getAggregatorV2PublishedAt, getAllProviders, getDeepbookV3Config, getDefaultSuiInputType, getMergeSwapResult, getOrCreateAccountCap, getProvidersExcluding, getProvidersIncluding, getRouterResult, hasPythPrelude, isSortedSymbols, isValidDowngradeUuid6, lookupGasBudget, mintZeroCoin, normalizeCoinType, parseAftermathFeeType, parseTurbosPoolFeeType, patchFixSuiObjectId, printTransaction, processEndpoint, processFlattenRoutes, restituteMsafeFastRouterSwapParams };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { coinWithBalance, Transaction } from '@mysten/sui/transactions';
|
|
2
2
|
import JSONbig from 'json-bigint';
|
|
3
|
-
import { normalizeSuiObjectId, SUI_CLOCK_OBJECT_ID } from '@mysten/sui/utils';
|
|
3
|
+
import { normalizeSuiObjectId, SUI_CLOCK_OBJECT_ID, fromHex } from '@mysten/sui/utils';
|
|
4
4
|
import { SuiGrpcClient } from '@mysten/sui/grpc';
|
|
5
5
|
import { HermesClient } from '@pythnetwork/hermes-client';
|
|
6
6
|
import { bcs } from '@mysten/sui/bcs';
|
|
@@ -3410,7 +3410,7 @@ var AGGREGATOR_V3_CONFIG = {
|
|
|
3410
3410
|
};
|
|
3411
3411
|
|
|
3412
3412
|
// src/api.ts
|
|
3413
|
-
var SDK_VERSION =
|
|
3413
|
+
var SDK_VERSION = 1010603;
|
|
3414
3414
|
function parseRouterResponse(data, byAmountIn) {
|
|
3415
3415
|
let packages = /* @__PURE__ */ new Map();
|
|
3416
3416
|
if (data.packages) {
|
|
@@ -7816,20 +7816,56 @@ function transferOrDestroyCoin(params, txb) {
|
|
|
7816
7816
|
});
|
|
7817
7817
|
}
|
|
7818
7818
|
var MAX_ARGUMENT_SIZE = 16 * 1024;
|
|
7819
|
+
var DEFAULT_HERMES_URL = "https://hermes.pyth.network";
|
|
7820
|
+
var DEFAULT_AVAILABILITY_TIMEOUT = 3e3;
|
|
7821
|
+
var DEFAULT_IS_AVAILABLE_STATUS = (status) => status >= 200 && status < 400;
|
|
7819
7822
|
var PythAdapter = class {
|
|
7820
7823
|
constructor(client, pythStateId, wormholeStateId, hermesUrls) {
|
|
7821
7824
|
this.priceFeedObjectIdCache = /* @__PURE__ */ new Map();
|
|
7822
7825
|
this.client = client;
|
|
7823
7826
|
this.pythStateId = pythStateId;
|
|
7824
7827
|
this.wormholeStateId = wormholeStateId;
|
|
7825
|
-
const urls =
|
|
7826
|
-
|
|
7827
|
-
|
|
7828
|
+
const urls = Array.from(
|
|
7829
|
+
new Set(hermesUrls.filter(Boolean).map(normalizeServiceUrl))
|
|
7830
|
+
);
|
|
7831
|
+
if (!urls.includes(DEFAULT_HERMES_URL)) {
|
|
7832
|
+
urls.push(DEFAULT_HERMES_URL);
|
|
7828
7833
|
}
|
|
7834
|
+
this.hermesUrls = urls;
|
|
7829
7835
|
this.hermesClients = urls.map(
|
|
7830
7836
|
(url) => new HermesClient(url, { timeout: 3e3 })
|
|
7831
7837
|
);
|
|
7832
7838
|
}
|
|
7839
|
+
getHermesUrls() {
|
|
7840
|
+
return [...this.hermesUrls];
|
|
7841
|
+
}
|
|
7842
|
+
async checkHermesAvailability({
|
|
7843
|
+
timeout = DEFAULT_AVAILABILITY_TIMEOUT,
|
|
7844
|
+
isAvailableStatus = DEFAULT_IS_AVAILABLE_STATUS
|
|
7845
|
+
} = {}) {
|
|
7846
|
+
if (this.hermesUrls.length === 0) {
|
|
7847
|
+
return {
|
|
7848
|
+
checked: false,
|
|
7849
|
+
availableUrls: [],
|
|
7850
|
+
unavailableUrls: []
|
|
7851
|
+
};
|
|
7852
|
+
}
|
|
7853
|
+
const results = await Promise.all(
|
|
7854
|
+
this.hermesUrls.map(async (url) => ({
|
|
7855
|
+
url,
|
|
7856
|
+
available: await checkServiceUrl(url, timeout, isAvailableStatus)
|
|
7857
|
+
}))
|
|
7858
|
+
);
|
|
7859
|
+
return {
|
|
7860
|
+
checked: true,
|
|
7861
|
+
availableUrls: results.filter((result) => result.available).map((result) => result.url),
|
|
7862
|
+
unavailableUrls: results.filter((result) => !result.available).map((result) => result.url)
|
|
7863
|
+
};
|
|
7864
|
+
}
|
|
7865
|
+
async isHermesAvailable(options) {
|
|
7866
|
+
const snapshot = await this.checkHermesAvailability(options);
|
|
7867
|
+
return snapshot.availableUrls.length > 0;
|
|
7868
|
+
}
|
|
7833
7869
|
async getPriceFeedsUpdateData(priceIDs) {
|
|
7834
7870
|
let lastError = null;
|
|
7835
7871
|
for (const hermes of this.hermesClients) {
|
|
@@ -8038,6 +8074,25 @@ var PythAdapter = class {
|
|
|
8038
8074
|
return priceInfoObjects;
|
|
8039
8075
|
}
|
|
8040
8076
|
};
|
|
8077
|
+
async function checkServiceUrl(url, timeout, isAvailableStatus) {
|
|
8078
|
+
const controller = new AbortController();
|
|
8079
|
+
const timer = setTimeout(() => controller.abort(), timeout);
|
|
8080
|
+
try {
|
|
8081
|
+
const response = await fetch(url, {
|
|
8082
|
+
method: "GET",
|
|
8083
|
+
cache: "no-store",
|
|
8084
|
+
signal: controller.signal
|
|
8085
|
+
});
|
|
8086
|
+
return isAvailableStatus(response.status);
|
|
8087
|
+
} catch {
|
|
8088
|
+
return false;
|
|
8089
|
+
} finally {
|
|
8090
|
+
clearTimeout(timer);
|
|
8091
|
+
}
|
|
8092
|
+
}
|
|
8093
|
+
function normalizeServiceUrl(url) {
|
|
8094
|
+
return url.replace(/\/+$/, "");
|
|
8095
|
+
}
|
|
8041
8096
|
|
|
8042
8097
|
// src/utils/uuid.ts
|
|
8043
8098
|
function generateDowngradeUuid6() {
|
|
@@ -8866,6 +8921,61 @@ var HaedalPropAmmRouter = class {
|
|
|
8866
8921
|
});
|
|
8867
8922
|
}
|
|
8868
8923
|
};
|
|
8924
|
+
var CetusTideRouter = class {
|
|
8925
|
+
swap(txb, flattenedPath, swapContext, _extends) {
|
|
8926
|
+
const path = flattenedPath.path;
|
|
8927
|
+
if (!path.extendedDetails) {
|
|
8928
|
+
throw new Error("Cetus Tide: extended_details missing on path");
|
|
8929
|
+
}
|
|
8930
|
+
if (path.publishedAt == null) {
|
|
8931
|
+
throw new Error("Cetus Tide: path.publishedAt missing");
|
|
8932
|
+
}
|
|
8933
|
+
const ed = path.extendedDetails;
|
|
8934
|
+
const fill = this.validateFill(ed);
|
|
8935
|
+
const mmObjectId = ed.cetus_tide_mm_object_id;
|
|
8936
|
+
const versioned = ed.cetus_tide_versioned;
|
|
8937
|
+
const globalConfig = ed.cetus_tide_global_config;
|
|
8938
|
+
const [baseCoinType, quoteCoinType] = path.direction ? [path.from, path.target] : [path.target, path.from];
|
|
8939
|
+
const amountIn = flattenedPath.isLastUseOfIntermediateToken ? AGGREGATOR_V3_CONFIG.MAX_AMOUNT_IN : path.amountIn;
|
|
8940
|
+
const envelopeBytes = Array.from(fromHex(fill.envelope));
|
|
8941
|
+
const signatureBytes = Array.from(fromHex(fill.signature));
|
|
8942
|
+
const quoteHashBytes = Array.from(fromHex(fill.quote_hash));
|
|
8943
|
+
const args = [
|
|
8944
|
+
swapContext,
|
|
8945
|
+
txb.object(versioned),
|
|
8946
|
+
txb.object(globalConfig),
|
|
8947
|
+
txb.object(mmObjectId),
|
|
8948
|
+
txb.object(path.id),
|
|
8949
|
+
txb.pure.vector("u8", envelopeBytes),
|
|
8950
|
+
txb.pure.vector("u8", signatureBytes),
|
|
8951
|
+
txb.pure.vector("u8", quoteHashBytes),
|
|
8952
|
+
txb.pure.u64(amountIn.toString()),
|
|
8953
|
+
txb.pure.bool(path.direction),
|
|
8954
|
+
txb.pure.vector("u8", quoteHashBytes),
|
|
8955
|
+
txb.object(SUI_CLOCK_OBJECT_ID)
|
|
8956
|
+
];
|
|
8957
|
+
txb.moveCall({
|
|
8958
|
+
target: `${path.publishedAt}::orderbook::swap`,
|
|
8959
|
+
typeArguments: [baseCoinType, quoteCoinType],
|
|
8960
|
+
arguments: args
|
|
8961
|
+
});
|
|
8962
|
+
}
|
|
8963
|
+
validateFill(ed) {
|
|
8964
|
+
if (!ed.cetus_tide_fill) {
|
|
8965
|
+
throw new Error("Cetus Tide: cetus_tide_fill missing");
|
|
8966
|
+
}
|
|
8967
|
+
if (!ed.cetus_tide_mm_object_id) {
|
|
8968
|
+
throw new Error("Cetus Tide: cetus_tide_mm_object_id missing");
|
|
8969
|
+
}
|
|
8970
|
+
if (!ed.cetus_tide_versioned) {
|
|
8971
|
+
throw new Error("Cetus Tide: cetus_tide_versioned missing");
|
|
8972
|
+
}
|
|
8973
|
+
if (!ed.cetus_tide_global_config) {
|
|
8974
|
+
throw new Error("Cetus Tide: cetus_tide_global_config missing");
|
|
8975
|
+
}
|
|
8976
|
+
return ed.cetus_tide_fill;
|
|
8977
|
+
}
|
|
8978
|
+
};
|
|
8869
8979
|
|
|
8870
8980
|
// src/client.ts
|
|
8871
8981
|
var CETUS = "CETUS";
|
|
@@ -8904,6 +9014,7 @@ var FERRACLMM = "FERRACLMM";
|
|
|
8904
9014
|
var BOLT = "BOLT";
|
|
8905
9015
|
var MAGMAPROPAMM = "MAGMAPROPAMM";
|
|
8906
9016
|
var HAEDALPROPAMM = "HAEDALPROPAMM";
|
|
9017
|
+
var CETUS_TIDE = "CETUS_TIDE";
|
|
8907
9018
|
var DEFAULT_ENDPOINT = "https://api-sui.cetus.zone/router_v3";
|
|
8908
9019
|
var ALL_DEXES = [
|
|
8909
9020
|
CETUS,
|
|
@@ -8940,7 +9051,14 @@ var ALL_DEXES = [
|
|
|
8940
9051
|
FERRACLMM,
|
|
8941
9052
|
BOLT,
|
|
8942
9053
|
MAGMAPROPAMM,
|
|
8943
|
-
HAEDALPROPAMM
|
|
9054
|
+
HAEDALPROPAMM,
|
|
9055
|
+
CETUS_TIDE
|
|
9056
|
+
];
|
|
9057
|
+
var PYTH_ORACLE_BASED_DEXES = [
|
|
9058
|
+
HAEDALPMM,
|
|
9059
|
+
METASTABLE,
|
|
9060
|
+
STEAMM_OMM_V2,
|
|
9061
|
+
HAEDALHMMV2
|
|
8944
9062
|
];
|
|
8945
9063
|
function getAllProviders() {
|
|
8946
9064
|
return ALL_DEXES;
|
|
@@ -9021,6 +9139,9 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9021
9139
|
this.apiKey = params.apiKey || "";
|
|
9022
9140
|
this.partner = params.partner;
|
|
9023
9141
|
this.cetusDlmmPartner = params.cetusDlmmPartner;
|
|
9142
|
+
this.pythAvailabilityCheckInterval = validatePythAvailabilityCheckInterval(
|
|
9143
|
+
params.pythAvailabilityCheckInterval
|
|
9144
|
+
);
|
|
9024
9145
|
if (params.overlayFeeRate) {
|
|
9025
9146
|
if (params.overlayFeeRate > 0 && params.overlayFeeRate <= CLIENT_CONFIG.MAX_OVERLAY_FEE_RATE) {
|
|
9026
9147
|
this.overlayFeeRate = params.overlayFeeRate * AGGREGATOR_V3_CONFIG.FEE_DENOMINATOR;
|
|
@@ -9063,23 +9184,74 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9063
9184
|
}
|
|
9064
9185
|
}
|
|
9065
9186
|
async findRouters(params) {
|
|
9187
|
+
const {
|
|
9188
|
+
params: routerParams,
|
|
9189
|
+
providersExhausted
|
|
9190
|
+
} = await this.filterProvidersByPythAvailability(params);
|
|
9191
|
+
if (providersExhausted) {
|
|
9192
|
+
return emptyRouterResult(routerParams.byAmountIn);
|
|
9193
|
+
}
|
|
9066
9194
|
return getRouterResult(
|
|
9067
9195
|
this.endpoint,
|
|
9068
9196
|
this.apiKey,
|
|
9069
|
-
|
|
9197
|
+
routerParams,
|
|
9070
9198
|
this.overlayFeeRate,
|
|
9071
9199
|
this.overlayFeeReceiver
|
|
9072
9200
|
);
|
|
9073
9201
|
}
|
|
9074
9202
|
async findMergeSwapRouters(params) {
|
|
9203
|
+
const {
|
|
9204
|
+
params: routerParams,
|
|
9205
|
+
providersExhausted
|
|
9206
|
+
} = await this.filterProvidersByPythAvailability(params);
|
|
9207
|
+
if (providersExhausted) {
|
|
9208
|
+
return emptyMergeSwapResult();
|
|
9209
|
+
}
|
|
9075
9210
|
return getMergeSwapResult(
|
|
9076
9211
|
this.endpoint,
|
|
9077
9212
|
this.apiKey,
|
|
9078
|
-
|
|
9213
|
+
routerParams,
|
|
9079
9214
|
this.overlayFeeRate,
|
|
9080
9215
|
this.overlayFeeReceiver
|
|
9081
9216
|
);
|
|
9082
9217
|
}
|
|
9218
|
+
async filterProvidersByPythAvailability(params) {
|
|
9219
|
+
const interval = validatePythAvailabilityCheckInterval(
|
|
9220
|
+
params.pythAvailabilityCheckInterval ?? this.pythAvailabilityCheckInterval
|
|
9221
|
+
);
|
|
9222
|
+
if (interval === void 0) {
|
|
9223
|
+
return { params, providersExhausted: false };
|
|
9224
|
+
}
|
|
9225
|
+
const pythAvailable = await this.getPythAvailability(interval);
|
|
9226
|
+
if (pythAvailable) {
|
|
9227
|
+
return { params, providersExhausted: false };
|
|
9228
|
+
}
|
|
9229
|
+
const sourceProviders = params.providers && params.providers.length > 0 ? params.providers : ALL_DEXES;
|
|
9230
|
+
const providers = sourceProviders.filter(
|
|
9231
|
+
(provider) => !PYTH_ORACLE_BASED_DEXES.includes(provider)
|
|
9232
|
+
);
|
|
9233
|
+
return {
|
|
9234
|
+
params: { ...params, providers },
|
|
9235
|
+
providersExhausted: providers.length === 0
|
|
9236
|
+
};
|
|
9237
|
+
}
|
|
9238
|
+
async getPythAvailability(interval) {
|
|
9239
|
+
const now = Date.now();
|
|
9240
|
+
if (this.pythAvailable !== void 0 && this.pythAvailabilityCheckedAt !== void 0 && now - this.pythAvailabilityCheckedAt < interval) {
|
|
9241
|
+
return this.pythAvailable;
|
|
9242
|
+
}
|
|
9243
|
+
if (this.pythAvailabilityPromise) {
|
|
9244
|
+
return this.pythAvailabilityPromise;
|
|
9245
|
+
}
|
|
9246
|
+
this.pythAvailabilityPromise = this.pythAdapter.isHermesAvailable().catch(() => false).then((available) => {
|
|
9247
|
+
this.pythAvailable = available;
|
|
9248
|
+
this.pythAvailabilityCheckedAt = Date.now();
|
|
9249
|
+
return available;
|
|
9250
|
+
}).finally(() => {
|
|
9251
|
+
this.pythAvailabilityPromise = void 0;
|
|
9252
|
+
});
|
|
9253
|
+
return this.pythAvailabilityPromise;
|
|
9254
|
+
}
|
|
9083
9255
|
async executeFlexibleInputSwap(txb, inputCoin, routerData, expectedAmountOut, amountLimit, pythPriceIDs, partner, deepbookv3DeepFee, packages) {
|
|
9084
9256
|
}
|
|
9085
9257
|
newDexRouterV3(provider, pythPriceIDs, partner, cetusDlmmPartner) {
|
|
@@ -9154,6 +9326,8 @@ var _AggregatorClient = class _AggregatorClient {
|
|
|
9154
9326
|
return new MagmaPropAmmRouter(this.env);
|
|
9155
9327
|
case HAEDALPROPAMM:
|
|
9156
9328
|
return new HaedalPropAmmRouter(this.env);
|
|
9329
|
+
case CETUS_TIDE:
|
|
9330
|
+
return new CetusTideRouter();
|
|
9157
9331
|
default:
|
|
9158
9332
|
throw new Error(
|
|
9159
9333
|
`${CLIENT_CONFIG.ERRORS.UNSUPPORTED_DEX} ${provider}`
|
|
@@ -10041,6 +10215,35 @@ function generateUUID() {
|
|
|
10041
10215
|
return v.toString(16);
|
|
10042
10216
|
});
|
|
10043
10217
|
}
|
|
10218
|
+
function validatePythAvailabilityCheckInterval(interval) {
|
|
10219
|
+
if (interval === void 0) {
|
|
10220
|
+
return void 0;
|
|
10221
|
+
}
|
|
10222
|
+
if (!Number.isFinite(interval) || interval < 0) {
|
|
10223
|
+
throw new Error(
|
|
10224
|
+
"pythAvailabilityCheckInterval must be a non-negative number"
|
|
10225
|
+
);
|
|
10226
|
+
}
|
|
10227
|
+
return interval;
|
|
10228
|
+
}
|
|
10229
|
+
function emptyRouterResult(byAmountIn) {
|
|
10230
|
+
return {
|
|
10231
|
+
quoteID: "",
|
|
10232
|
+
amountIn: ZERO,
|
|
10233
|
+
amountOut: ZERO,
|
|
10234
|
+
paths: [],
|
|
10235
|
+
byAmountIn,
|
|
10236
|
+
insufficientLiquidity: true,
|
|
10237
|
+
deviationRatio: 0
|
|
10238
|
+
};
|
|
10239
|
+
}
|
|
10240
|
+
function emptyMergeSwapResult() {
|
|
10241
|
+
return {
|
|
10242
|
+
quoteID: "",
|
|
10243
|
+
totalAmountOut: ZERO,
|
|
10244
|
+
allRoutes: []
|
|
10245
|
+
};
|
|
10246
|
+
}
|
|
10044
10247
|
function recordFirstCoinIndex(paths) {
|
|
10045
10248
|
let newCoinRecord = /* @__PURE__ */ new Map();
|
|
10046
10249
|
for (let i = 0; i < paths.length; i++) {
|
|
@@ -10089,4 +10292,4 @@ decimal.js/decimal.mjs:
|
|
|
10089
10292
|
*)
|
|
10090
10293
|
*/
|
|
10091
10294
|
|
|
10092
|
-
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, HAEDALPROPAMM, 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, PYTH_PRELUDE_CALLS, 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, SWAP_GAS_BUDGET_TABLE, 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, estimateSwapGasBudget, exportToCSV, exportToJSON, extractAddressFromType, extractGasMetrics, extractStructTagFromType, extractTimestampFromDowngradeUuid6, fixSuiObjectId, formatGasMetrics, generateDowngradeUuid6, generateSimpleDowngradeUuid6, getAggregatorServerErrorMessage, getAggregatorV2Extend2PublishedAt, getAggregatorV2ExtendPublishedAt, getAggregatorV2PublishedAt, getAllProviders, getDeepbookV3Config, getDefaultSuiInputType, getMergeSwapResult, getOrCreateAccountCap, getProvidersExcluding, getProvidersIncluding, getRouterResult, hasPythPrelude, isSortedSymbols, isValidDowngradeUuid6, lookupGasBudget, mintZeroCoin, normalizeCoinType, parseAftermathFeeType, parseTurbosPoolFeeType, patchFixSuiObjectId, printTransaction, processEndpoint, processFlattenRoutes, restituteMsafeFastRouterSwapParams };
|
|
10295
|
+
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, CETUS_TIDE, 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, HAEDALPROPAMM, 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, PYTH_ORACLE_BASED_DEXES, PYTH_PRELUDE_CALLS, 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, SWAP_GAS_BUDGET_TABLE, 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, estimateSwapGasBudget, exportToCSV, exportToJSON, extractAddressFromType, extractGasMetrics, extractStructTagFromType, extractTimestampFromDowngradeUuid6, fixSuiObjectId, formatGasMetrics, generateDowngradeUuid6, generateSimpleDowngradeUuid6, getAggregatorServerErrorMessage, getAggregatorV2Extend2PublishedAt, getAggregatorV2ExtendPublishedAt, getAggregatorV2PublishedAt, getAllProviders, getDeepbookV3Config, getDefaultSuiInputType, getMergeSwapResult, getOrCreateAccountCap, getProvidersExcluding, getProvidersIncluding, getRouterResult, hasPythPrelude, isSortedSymbols, isValidDowngradeUuid6, lookupGasBudget, mintZeroCoin, normalizeCoinType, parseAftermathFeeType, parseTurbosPoolFeeType, patchFixSuiObjectId, printTransaction, processEndpoint, processFlattenRoutes, restituteMsafeFastRouterSwapParams };
|