aftermath-ts-sdk 0.0.145 → 0.0.147
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/general/api/objectsApiHelpers.d.ts +1 -0
- package/dist/general/api/objectsApiHelpers.d.ts.map +1 -1
- package/dist/general/api/objectsApiHelpers.js +20 -2
- package/dist/general/prices/coingecko/coinGeckoApiHelpers.d.ts +1 -0
- package/dist/general/prices/coingecko/coinGeckoApiHelpers.d.ts.map +1 -1
- package/dist/general/prices/coingecko/coinGeckoApiHelpers.js +23 -4
- package/dist/general/utils/helpers.d.ts +1 -0
- package/dist/general/utils/helpers.d.ts.map +1 -1
- package/dist/general/utils/helpers.js +8 -0
- package/dist/packages/external/cetus/cetusApi.d.ts +11 -4
- package/dist/packages/external/cetus/cetusApi.d.ts.map +1 -1
- package/dist/packages/external/cetus/cetusApi.js +9 -6
- package/dist/packages/external/cetus/cetusApiHelpers.d.ts +54 -4
- package/dist/packages/external/cetus/cetusApiHelpers.d.ts.map +1 -1
- package/dist/packages/external/cetus/cetusApiHelpers.js +120 -50
- package/dist/packages/external/turbos/turbosApi.d.ts +11 -4
- package/dist/packages/external/turbos/turbosApi.d.ts.map +1 -1
- package/dist/packages/external/turbos/turbosApi.js +9 -6
- package/dist/packages/external/turbos/turbosApiHelpers.d.ts +14 -4
- package/dist/packages/external/turbos/turbosApiHelpers.d.ts.map +1 -1
- package/dist/packages/external/turbos/turbosApiHelpers.js +76 -20
- package/dist/packages/router/api/routerApi.d.ts +2 -4
- package/dist/packages/router/api/routerApi.d.ts.map +1 -1
- package/dist/packages/router/api/routerApi.js +5 -25
- package/dist/packages/router/api/routerApiHelpers.d.ts +41 -0
- package/dist/packages/router/api/routerApiHelpers.d.ts.map +1 -0
- package/dist/packages/router/api/routerApiHelpers.js +191 -0
- package/dist/packages/router/api/routerAsyncApiHelpers.d.ts +15 -4
- package/dist/packages/router/api/routerAsyncApiHelpers.d.ts.map +1 -1
- package/dist/packages/router/api/routerAsyncApiHelpers.js +42 -9
- package/dist/packages/router/api/routerSynchronousApiHelpers.d.ts +1 -10
- package/dist/packages/router/api/routerSynchronousApiHelpers.d.ts.map +1 -1
- package/dist/packages/router/api/routerSynchronousApiHelpers.js +5 -25
- package/dist/packages/router/routerTypes.d.ts.map +1 -1
- package/dist/packages/router/utils/async/routerAsyncApiInterface.d.ts +13 -6
- package/dist/packages/router/utils/async/routerAsyncApiInterface.d.ts.map +1 -1
- package/dist/packages/router/utils/async/routerAsyncGraph.d.ts +4 -2
- package/dist/packages/router/utils/async/routerAsyncGraph.d.ts.map +1 -1
- package/dist/packages/router/utils/async/routerAsyncGraph.js +34 -34
- package/dist/packages/router/utils/synchronous/routerGraph.d.ts +13 -11
- package/dist/packages/router/utils/synchronous/routerGraph.d.ts.map +1 -1
- package/dist/packages/router/utils/synchronous/routerGraph.js +109 -73
- package/package.json +2 -2
|
@@ -9,11 +9,14 @@ export declare class TurbosApi implements RouterApiInterface<TurbosPoolObject> {
|
|
|
9
9
|
private readonly Provider;
|
|
10
10
|
readonly Helpers: TurbosApiHelpers;
|
|
11
11
|
constructor(Provider: AftermathApi);
|
|
12
|
-
fetchPoolForCoinTypes: (inputs: {
|
|
13
|
-
coinType1: CoinType;
|
|
14
|
-
coinType2: CoinType;
|
|
15
|
-
}) => Promise<TurbosPoolObject>;
|
|
16
12
|
fetchAllPools: () => Promise<TurbosPoolObject[]>;
|
|
13
|
+
fetchPoolsForTrade: (inputs: {
|
|
14
|
+
coinInType: CoinType;
|
|
15
|
+
coinOutType: CoinType;
|
|
16
|
+
}) => Promise<{
|
|
17
|
+
partialMatchPools: TurbosPoolObject[];
|
|
18
|
+
exactMatchPools: TurbosPoolObject[];
|
|
19
|
+
}>;
|
|
17
20
|
fetchSupportedCoins: () => Promise<string[]>;
|
|
18
21
|
fetchTradeAmountOut: (inputs: {
|
|
19
22
|
walletAddress: SuiAddress;
|
|
@@ -22,6 +25,10 @@ export declare class TurbosApi implements RouterApiInterface<TurbosPoolObject> {
|
|
|
22
25
|
coinOutType: CoinType;
|
|
23
26
|
coinInAmount: Balance;
|
|
24
27
|
}) => Promise<Balance>;
|
|
28
|
+
otherCoinInPool: (inputs: {
|
|
29
|
+
coinType: CoinType;
|
|
30
|
+
pool: TurbosPoolObject;
|
|
31
|
+
}) => string;
|
|
25
32
|
fetchTradeTx: (inputs: {
|
|
26
33
|
walletAddress: SuiAddress;
|
|
27
34
|
pool: TurbosPoolObject;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turbosApi.d.ts","sourceRoot":"","sources":["../../../../src/packages/external/turbos/turbosApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8DAA8D,CAAC;AAElG,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,qBAAa,SAAU,YAAW,kBAAkB,CAAC,gBAAgB,CAAC;IAWzD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IANrC,SAAgB,OAAO,mBAAC;gBAMK,QAAQ,EAAE,YAAY;IAa5C,
|
|
1
|
+
{"version":3,"file":"turbosApi.d.ts","sourceRoot":"","sources":["../../../../src/packages/external/turbos/turbosApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8DAA8D,CAAC;AAElG,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,qBAAa,SAAU,YAAW,kBAAkB,CAAC,gBAAgB,CAAC;IAWzD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IANrC,SAAgB,OAAO,mBAAC;gBAMK,QAAQ,EAAE,YAAY;IAa5C,aAAa,oCAGlB;IAEK,kBAAkB,WAAY;QACpC,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;KACtB,KAAG,QAAQ;QACX,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;QACtC,eAAe,EAAE,gBAAgB,EAAE,CAAC;KACpC,CAAC,CAEA;IAMK,mBAAmB,0BAQxB;IAEK,mBAAmB,WAAkB;QAC3C,aAAa,EAAE,UAAU,CAAC;QAC1B,IAAI,EAAE,gBAAgB,CAAC;QACvB,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;KACtB,KAAG,QAAQ,OAAO,CAAC,CAGlB;IAEK,eAAe,WAAY;QACjC,QAAQ,EAAE,QAAQ,CAAC;QACnB,IAAI,EAAE,gBAAgB,CAAC;KACvB,YAEC;IAMK,YAAY,WAAY;QAC9B,aAAa,EAAE,UAAU,CAAC;QAC1B,IAAI,EAAE,gBAAgB,CAAC;QACvB,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;KACtB,KAAG,QAAQ,qBAAqB,CAAC,CAIhC;CACF"}
|
|
@@ -24,25 +24,28 @@ class TurbosApi {
|
|
|
24
24
|
/////////////////////////////////////////////////////////////////////
|
|
25
25
|
//// Objects
|
|
26
26
|
/////////////////////////////////////////////////////////////////////
|
|
27
|
-
this.fetchPoolForCoinTypes = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
28
|
-
return this.Helpers.fetchPoolForCoinTypes(inputs);
|
|
29
|
-
});
|
|
30
27
|
this.fetchAllPools = () => __awaiter(this, void 0, void 0, function* () {
|
|
31
28
|
const pools = yield this.Helpers.fetchAllPools();
|
|
32
29
|
return pools;
|
|
33
30
|
});
|
|
31
|
+
this.fetchPoolsForTrade = (inputs) => {
|
|
32
|
+
return this.Helpers.fetchPoolsForTrade(inputs);
|
|
33
|
+
};
|
|
34
|
+
/////////////////////////////////////////////////////////////////////
|
|
35
|
+
//// Inspections
|
|
36
|
+
/////////////////////////////////////////////////////////////////////
|
|
34
37
|
this.fetchSupportedCoins = () => __awaiter(this, void 0, void 0, function* () {
|
|
35
38
|
const pools = yield this.Helpers.fetchAllPools();
|
|
36
39
|
const allCoins = pools.reduce((acc, pool) => [...acc, pool.coinTypeA, pool.coinTypeB], []);
|
|
37
40
|
return utils_1.Helpers.uniqueArray(allCoins);
|
|
38
41
|
});
|
|
39
|
-
/////////////////////////////////////////////////////////////////////
|
|
40
|
-
//// Inspections
|
|
41
|
-
/////////////////////////////////////////////////////////////////////
|
|
42
42
|
this.fetchTradeAmountOut = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
43
43
|
const tradeResult = yield this.Helpers.fetchCalcTradeResult(inputs);
|
|
44
44
|
return tradeResult.amountOut;
|
|
45
45
|
});
|
|
46
|
+
this.otherCoinInPool = (inputs) => {
|
|
47
|
+
return turbosApiHelpers_1.TurbosApiHelpers.otherCoinInPool(inputs);
|
|
48
|
+
};
|
|
46
49
|
/////////////////////////////////////////////////////////////////////
|
|
47
50
|
//// Transactions
|
|
48
51
|
/////////////////////////////////////////////////////////////////////
|
|
@@ -12,10 +12,13 @@ export declare class TurbosApiHelpers {
|
|
|
12
12
|
};
|
|
13
13
|
constructor(Provider: AftermathApi);
|
|
14
14
|
fetchAllPools: () => Promise<TurbosPoolObject[]>;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}) => Promise<
|
|
15
|
+
fetchPoolsForTrade: (inputs: {
|
|
16
|
+
coinInType: CoinType;
|
|
17
|
+
coinOutType: CoinType;
|
|
18
|
+
}) => Promise<{
|
|
19
|
+
partialMatchPools: TurbosPoolObject[];
|
|
20
|
+
exactMatchPools: TurbosPoolObject[];
|
|
21
|
+
}>;
|
|
19
22
|
tradeCoinAToCoinBTx: (inputs: {
|
|
20
23
|
tx: TransactionBlock;
|
|
21
24
|
poolObjectId: ObjectId;
|
|
@@ -184,8 +187,15 @@ export declare class TurbosApiHelpers {
|
|
|
184
187
|
coinOutType: CoinType;
|
|
185
188
|
coinInAmount: Balance;
|
|
186
189
|
}) => Promise<TurbosCalcTradeResult>;
|
|
190
|
+
static otherCoinInPool: (inputs: {
|
|
191
|
+
coinType: CoinType;
|
|
192
|
+
pool: TurbosPoolObject;
|
|
193
|
+
}) => string;
|
|
194
|
+
private fetchPoolForCoinTypes;
|
|
195
|
+
private fetchPoolsForCoinType;
|
|
187
196
|
private static partialPoolFromSuiObjectResponse;
|
|
188
197
|
private static isPoolForCoinTypes;
|
|
198
|
+
private static isPoolForCoinType;
|
|
189
199
|
private static isCoinA;
|
|
190
200
|
private static calcSqrtPriceLimit;
|
|
191
201
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turbosApiHelpers.d.ts","sourceRoot":"","sources":["../../../../src/packages/external/turbos/turbosApiHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,QAAQ,EACR,UAAU,EAEV,mBAAmB,EACnB,gBAAgB,EAGhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EACN,OAAO,EACP,eAAe,EACf,QAAQ,EACR,cAAc,EACd,sBAAsB,EAEtB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGxE,qBAAa,gBAAgB;aA8BA,QAAQ,EAAE,YAAY;IAzBlD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAK/B;IAMF,SAAgB,SAAS,EAAE;QAC1B,MAAM,EAAE,eAAe,CAAC;QACxB,KAAK,EAAE,cAAc,CAAC;QACtB,aAAa,EAAE,sBAAsB,CAAC;KACtC,CAAC;gBAU0B,QAAQ,EAAE,YAAY;IA8B3C,aAAa,QAAa,QAAQ,gBAAgB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"turbosApiHelpers.d.ts","sourceRoot":"","sources":["../../../../src/packages/external/turbos/turbosApiHelpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var _a;
|
|
11
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
13
|
exports.TurbosApiHelpers = void 0;
|
|
13
14
|
const sui_js_1 = require("@mysten/sui.js");
|
|
@@ -22,7 +23,7 @@ class TurbosApiHelpers {
|
|
|
22
23
|
//// Constructor
|
|
23
24
|
/////////////////////////////////////////////////////////////////////
|
|
24
25
|
constructor(Provider) {
|
|
25
|
-
var
|
|
26
|
+
var _b;
|
|
26
27
|
this.Provider = Provider;
|
|
27
28
|
/////////////////////////////////////////////////////////////////////
|
|
28
29
|
//// Public Methods
|
|
@@ -32,23 +33,39 @@ class TurbosApiHelpers {
|
|
|
32
33
|
/////////////////////////////////////////////////////////////////////
|
|
33
34
|
this.fetchAllPools = () => __awaiter(this, void 0, void 0, function* () {
|
|
34
35
|
const poolsSimpleInfo = yield this.Provider.DynamicFields().fetchCastAllDynamicFieldsOfType(this.addresses.turbos.objects.poolsTable, (objectIds) => this.Provider.Objects().fetchCastObjectBatch(objectIds, TurbosApiHelpers.partialPoolFromSuiObjectResponse), () => true);
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
const poolsMoreInfo = yield this.Provider.Objects().fetchCastObjectBatch(poolsSimpleInfo.map((poolInfo) => poolInfo.id), (data) => {
|
|
37
|
+
const fields = (0, sui_js_1.getObjectFields)(data);
|
|
38
|
+
if (!fields)
|
|
39
|
+
throw new Error("no fields found on turbos pool object");
|
|
40
|
+
const sqrtPrice = BigInt(fields.sqrt_price);
|
|
41
|
+
const liquidity = BigInt(fields.liquidity);
|
|
42
|
+
const isUnlocked = fields.unlocked;
|
|
43
|
+
return {
|
|
44
|
+
liquidity,
|
|
45
|
+
isUnlocked,
|
|
46
|
+
sqrtPrice,
|
|
47
|
+
};
|
|
39
48
|
});
|
|
40
|
-
const
|
|
41
|
-
return Object.assign(Object.assign({}, info), { sqrtPrice:
|
|
49
|
+
const completePools = poolsSimpleInfo.map((info, index) => {
|
|
50
|
+
return Object.assign(Object.assign({}, info), { sqrtPrice: poolsMoreInfo[index].sqrtPrice });
|
|
42
51
|
});
|
|
43
|
-
|
|
52
|
+
const usablePools = completePools.filter((_, index) => poolsMoreInfo[index].isUnlocked &&
|
|
53
|
+
poolsMoreInfo[index].liquidity > BigInt(0));
|
|
54
|
+
return usablePools;
|
|
44
55
|
});
|
|
45
|
-
this.
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
56
|
+
this.fetchPoolsForTrade = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
const possiblePools = yield this.fetchPoolsForCoinType({
|
|
58
|
+
coinType: inputs.coinOutType,
|
|
59
|
+
});
|
|
60
|
+
const [exactMatchPools, partialMatchPools] = utils_1.Helpers.bifilter(possiblePools, (pool) => TurbosApiHelpers.isPoolForCoinTypes({
|
|
61
|
+
pool,
|
|
62
|
+
coinType1: inputs.coinInType,
|
|
63
|
+
coinType2: inputs.coinOutType,
|
|
64
|
+
}));
|
|
65
|
+
return {
|
|
66
|
+
exactMatchPools,
|
|
67
|
+
partialMatchPools,
|
|
68
|
+
};
|
|
52
69
|
});
|
|
53
70
|
/////////////////////////////////////////////////////////////////////
|
|
54
71
|
//// Transaction Commands
|
|
@@ -114,7 +131,7 @@ class TurbosApiHelpers {
|
|
|
114
131
|
this.tradeTx = (inputs) => {
|
|
115
132
|
const { coinInType, pool } = inputs;
|
|
116
133
|
const commandInputs = Object.assign(Object.assign(Object.assign({}, inputs), pool), { poolObjectId: pool.id });
|
|
117
|
-
if (TurbosApiHelpers.isCoinA(
|
|
134
|
+
if (TurbosApiHelpers.isCoinA({ pool, coinType: coinInType }))
|
|
118
135
|
return this.tradeCoinAToCoinBTx(commandInputs);
|
|
119
136
|
return this.tradeCoinBToCoinATx(commandInputs);
|
|
120
137
|
};
|
|
@@ -198,7 +215,26 @@ class TurbosApiHelpers {
|
|
|
198
215
|
throw new Error("e");
|
|
199
216
|
}
|
|
200
217
|
});
|
|
201
|
-
|
|
218
|
+
/////////////////////////////////////////////////////////////////////
|
|
219
|
+
//// Private Methods
|
|
220
|
+
/////////////////////////////////////////////////////////////////////
|
|
221
|
+
/////////////////////////////////////////////////////////////////////
|
|
222
|
+
//// Objects
|
|
223
|
+
/////////////////////////////////////////////////////////////////////
|
|
224
|
+
this.fetchPoolForCoinTypes = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
225
|
+
const allPools = yield this.fetchAllPools();
|
|
226
|
+
// NOTE: will there ever be more than 1 valid pool (is this unsafe ?)
|
|
227
|
+
const foundPool = allPools.find((pool) => TurbosApiHelpers.isPoolForCoinTypes(Object.assign({ pool }, inputs)));
|
|
228
|
+
if (!foundPool)
|
|
229
|
+
throw new Error("no turbos pools found for given coin types");
|
|
230
|
+
return foundPool;
|
|
231
|
+
});
|
|
232
|
+
this.fetchPoolsForCoinType = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
233
|
+
const allPools = yield this.fetchAllPools();
|
|
234
|
+
const foundPools = allPools.filter((pool) => TurbosApiHelpers.isPoolForCoinType(Object.assign({ pool }, inputs)));
|
|
235
|
+
return foundPools;
|
|
236
|
+
});
|
|
237
|
+
const turbos = (_b = this.Provider.addresses.externalRouter) === null || _b === void 0 ? void 0 : _b.turbos;
|
|
202
238
|
const pools = this.Provider.addresses.pools;
|
|
203
239
|
const referralVault = this.Provider.addresses.referralVault;
|
|
204
240
|
if (!turbos || !pools || !referralVault)
|
|
@@ -215,6 +251,7 @@ class TurbosApiHelpers {
|
|
|
215
251
|
}
|
|
216
252
|
}
|
|
217
253
|
exports.TurbosApiHelpers = TurbosApiHelpers;
|
|
254
|
+
_a = TurbosApiHelpers;
|
|
218
255
|
/////////////////////////////////////////////////////////////////////
|
|
219
256
|
//// Constants
|
|
220
257
|
/////////////////////////////////////////////////////////////////////
|
|
@@ -225,14 +262,25 @@ TurbosApiHelpers.constants = {
|
|
|
225
262
|
},
|
|
226
263
|
};
|
|
227
264
|
/////////////////////////////////////////////////////////////////////
|
|
265
|
+
//// Public Static Methods
|
|
266
|
+
/////////////////////////////////////////////////////////////////////
|
|
267
|
+
/////////////////////////////////////////////////////////////////////
|
|
268
|
+
//// Helpers
|
|
269
|
+
/////////////////////////////////////////////////////////////////////
|
|
270
|
+
TurbosApiHelpers.otherCoinInPool = (inputs) => {
|
|
271
|
+
return _a.isCoinA(inputs)
|
|
272
|
+
? inputs.pool.coinTypeB
|
|
273
|
+
: inputs.pool.coinTypeA;
|
|
274
|
+
};
|
|
275
|
+
/////////////////////////////////////////////////////////////////////
|
|
228
276
|
//// Private Static Methods
|
|
229
277
|
/////////////////////////////////////////////////////////////////////
|
|
230
278
|
/////////////////////////////////////////////////////////////////////
|
|
231
279
|
//// Casting
|
|
232
280
|
/////////////////////////////////////////////////////////////////////
|
|
233
281
|
TurbosApiHelpers.partialPoolFromSuiObjectResponse = (data) => {
|
|
234
|
-
var
|
|
235
|
-
const content = (
|
|
282
|
+
var _b;
|
|
283
|
+
const content = (_b = data.data) === null || _b === void 0 ? void 0 : _b.content;
|
|
236
284
|
if ((content === null || content === void 0 ? void 0 : content.dataType) !== "moveObject")
|
|
237
285
|
throw new Error("sui object response is not an object");
|
|
238
286
|
const fields = content.fields.value.fields;
|
|
@@ -254,7 +302,15 @@ TurbosApiHelpers.isPoolForCoinTypes = (inputs) => {
|
|
|
254
302
|
(pool.coinTypeA === utils_1.Helpers.addLeadingZeroesToType(coinType2) &&
|
|
255
303
|
pool.coinTypeB === utils_1.Helpers.addLeadingZeroesToType(coinType1)));
|
|
256
304
|
};
|
|
257
|
-
TurbosApiHelpers.
|
|
305
|
+
TurbosApiHelpers.isPoolForCoinType = (inputs) => {
|
|
306
|
+
const { pool, coinType } = inputs;
|
|
307
|
+
return (pool.coinTypeA === utils_1.Helpers.addLeadingZeroesToType(coinType) ||
|
|
308
|
+
pool.coinTypeB === utils_1.Helpers.addLeadingZeroesToType(coinType));
|
|
309
|
+
};
|
|
310
|
+
TurbosApiHelpers.isCoinA = (inputs) => {
|
|
311
|
+
const { coinType, pool } = inputs;
|
|
312
|
+
return utils_1.Helpers.addLeadingZeroesToType(coinType) === pool.coinTypeA;
|
|
313
|
+
};
|
|
258
314
|
TurbosApiHelpers.calcSqrtPriceLimit = (inputs) => {
|
|
259
315
|
const { sqrtPrice, isCoinAToCoinB } = inputs;
|
|
260
316
|
const change = sqrtPrice / BigInt(100);
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import { AftermathApi } from "../../../general/providers/aftermathApi";
|
|
2
|
-
import { RouterSynchronousApiHelpers } from "./routerSynchronousApiHelpers";
|
|
3
2
|
import { Balance, CoinType, RouterExternalFee, RouterCompleteTradeRoute, SerializedTransaction, Slippage, SuiNetwork, Url, RouterSerializableCompleteGraph, RouterProtocolName } from "../../../types";
|
|
4
3
|
import { SuiAddress } from "@mysten/sui.js";
|
|
5
4
|
import { NojoAmmApi } from "../../external/nojo/nojoAmmApi";
|
|
6
5
|
import { DeepBookApi } from "../../external/deepBook/deepBookApi";
|
|
7
6
|
import { PoolsApi } from "../../pools/api/poolsApi";
|
|
8
7
|
import { CetusApi } from "../../external/cetus/cetusApi";
|
|
9
|
-
import { RouterAsyncApiHelpers } from "./routerAsyncApiHelpers";
|
|
10
8
|
import { TurbosApi } from "../../external/turbos/turbosApi";
|
|
9
|
+
import { RouterApiHelpers } from "./routerApiHelpers";
|
|
11
10
|
export declare class RouterApi {
|
|
12
11
|
private readonly Provider;
|
|
13
12
|
readonly protocols: RouterProtocolName[];
|
|
14
|
-
readonly Helpers:
|
|
15
|
-
readonly AsyncHelpers: RouterAsyncApiHelpers;
|
|
13
|
+
readonly Helpers: RouterApiHelpers;
|
|
16
14
|
constructor(Provider: AftermathApi, protocols?: RouterProtocolName[]);
|
|
17
15
|
Aftermath: () => PoolsApi;
|
|
18
16
|
Nojo: () => NojoAmmApi;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routerApi.d.ts","sourceRoot":"","sources":["../../../../src/packages/router/api/routerApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"routerApi.d.ts","sourceRoot":"","sources":["../../../../src/packages/router/api/routerApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAGvE,OAAO,EACN,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,QAAQ,EACR,UAAU,EACV,GAAG,EACH,+BAA+B,EAC/B,kBAAkB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAGzD,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qBAAa,SAAS;IAYpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;aACT,SAAS,EAAE,kBAAkB,EAAE;IARhD,SAAgB,OAAO,mBAAC;gBAON,QAAQ,EAAE,YAAY,EACvB,SAAS,GAAE,kBAAkB,EAAkB;IAUzD,SAAS,iBAAqC;IAC9C,IAAI,mBAAuC;IAC3C,QAAQ,oBAAwC;IAChD,KAAK,iBAAqC;IAC1C,MAAM,kBAAsC;IAU5C,sBAAsB,iDAI3B;IAMK,2BAA2B,WAAkB;QACnD,KAAK,EAAE,+BAA+B,CAAC;KACvC,gEAEC;IAMK,oCAAoC,WAAkB;QAC5D,OAAO,EAAE,UAAU,GAAG,GAAG,CAAC;QAC1B,KAAK,EAAE,+BAA+B,CAAC;QACvC,UAAU,EAAE,QAAQ,CAAC;QACrB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,QAAQ,CAAC;QACtB,QAAQ,CAAC,EAAE,UAAU,CAAC;QACtB,WAAW,CAAC,EAAE,iBAAiB,CAAC;KAGhC,KAAG,QAAQ,wBAAwB,CAAC,CAKnC;IAwBW,qCAAqC,CAAC,MAAM,EAAE;QAC1D,aAAa,EAAE,UAAU,CAAC;QAC1B,aAAa,EAAE,wBAAwB,CAAC;QACxC,QAAQ,EAAE,QAAQ,CAAC;KACnB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAQlC"}
|
|
@@ -10,16 +10,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.RouterApi = void 0;
|
|
13
|
-
const routerSynchronousApiHelpers_1 = require("./routerSynchronousApiHelpers");
|
|
14
13
|
const routerGraph_1 = require("../utils/synchronous/routerGraph");
|
|
15
|
-
const types_1 = require("../../../types");
|
|
16
14
|
const nojoAmmApi_1 = require("../../external/nojo/nojoAmmApi");
|
|
17
15
|
const deepBookApi_1 = require("../../external/deepBook/deepBookApi");
|
|
18
16
|
const poolsApi_1 = require("../../pools/api/poolsApi");
|
|
19
17
|
const cetusApi_1 = require("../../external/cetus/cetusApi");
|
|
20
|
-
const routerAsyncGraph_1 = require("../utils/async/routerAsyncGraph");
|
|
21
|
-
const routerAsyncApiHelpers_1 = require("./routerAsyncApiHelpers");
|
|
22
18
|
const turbosApi_1 = require("../../external/turbos/turbosApi");
|
|
19
|
+
const routerApiHelpers_1 = require("./routerApiHelpers");
|
|
23
20
|
class RouterApi {
|
|
24
21
|
/////////////////////////////////////////////////////////////////////
|
|
25
22
|
//// Constructor
|
|
@@ -42,10 +39,9 @@ class RouterApi {
|
|
|
42
39
|
//// Graph
|
|
43
40
|
/////////////////////////////////////////////////////////////////////
|
|
44
41
|
this.fetchSerializableGraph = () => __awaiter(this, void 0, void 0, function* () {
|
|
45
|
-
|
|
42
|
+
return this.Helpers.fetchSerializableGraph({
|
|
46
43
|
protocols: this.protocols,
|
|
47
44
|
});
|
|
48
|
-
return routerGraph_1.RouterGraph.createGraph({ pools });
|
|
49
45
|
});
|
|
50
46
|
/////////////////////////////////////////////////////////////////////
|
|
51
47
|
//// Coin Paths
|
|
@@ -57,26 +53,10 @@ class RouterApi {
|
|
|
57
53
|
//// Routing
|
|
58
54
|
/////////////////////////////////////////////////////////////////////
|
|
59
55
|
this.fetchCompleteTradeRouteGivenAmountIn = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
60
|
-
|
|
61
|
-
throw new Error("no protocols set in constructor");
|
|
62
|
-
const { network, graph, coinInAmount } = inputs;
|
|
63
|
-
const coinInAmounts = routerSynchronousApiHelpers_1.RouterSynchronousApiHelpers.amountsInForRouterTrade({
|
|
64
|
-
coinInAmount,
|
|
65
|
-
});
|
|
66
|
-
const tradeResults = yield this.AsyncHelpers.fetchTradeResults(Object.assign(Object.assign({}, inputs), { protocols: this.protocols.filter(types_1.isRouterAsyncProtocolName), coinInAmounts }));
|
|
67
|
-
const routerGraph = new routerGraph_1.RouterGraph(network, graph);
|
|
68
|
-
if (tradeResults.results.length <= 0)
|
|
69
|
-
return routerGraph.getCompleteRouteGivenAmountIn(inputs);
|
|
70
|
-
const synchronousCompleteRoutes = routerGraph.getCompleteRoutesGivenAmountIns(Object.assign(Object.assign({}, inputs), { coinInAmounts }));
|
|
71
|
-
return routerAsyncGraph_1.RouterAsyncGraph.createFinalCompleteRoute({
|
|
72
|
-
tradeResults,
|
|
73
|
-
synchronousCompleteRoutes,
|
|
74
|
-
coinInAmounts,
|
|
75
|
-
});
|
|
56
|
+
return this.Helpers.fetchCompleteTradeRouteGivenAmountIn(Object.assign(Object.assign({}, inputs), { protocols: this.protocols }));
|
|
76
57
|
});
|
|
77
58
|
this.Provider = Provider;
|
|
78
|
-
this.Helpers = new
|
|
79
|
-
this.AsyncHelpers = new routerAsyncApiHelpers_1.RouterAsyncApiHelpers(Provider);
|
|
59
|
+
this.Helpers = new routerApiHelpers_1.RouterApiHelpers(Provider);
|
|
80
60
|
}
|
|
81
61
|
// public fetchCompleteTradeRouteGivenAmountOut = async (
|
|
82
62
|
// network: SuiNetwork | Url,
|
|
@@ -100,7 +80,7 @@ class RouterApi {
|
|
|
100
80
|
/////////////////////////////////////////////////////////////////////
|
|
101
81
|
fetchTransactionForCompleteTradeRoute(inputs) {
|
|
102
82
|
return __awaiter(this, void 0, void 0, function* () {
|
|
103
|
-
const tx = yield this.Helpers.
|
|
83
|
+
const tx = yield this.Helpers.fetchTransactionForCompleteTradeRoute(inputs);
|
|
104
84
|
return this.Provider.Transactions().fetchSetGasBudgetAndSerializeTransaction(tx);
|
|
105
85
|
});
|
|
106
86
|
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { SuiAddress, TransactionBlock } from "@mysten/sui.js";
|
|
2
|
+
import { AftermathApi } from "../../../general/providers/aftermathApi";
|
|
3
|
+
import { Balance, CoinType, RouterCompleteTradeRoute, RouterExternalFee, RouterProtocolName, RouterSerializableCompleteGraph, Slippage, SuiNetwork, Url } from "../../../types";
|
|
4
|
+
import { RouterAsyncApiHelpers } from "./routerAsyncApiHelpers";
|
|
5
|
+
import { RouterSynchronousApiHelpers } from "./routerSynchronousApiHelpers";
|
|
6
|
+
export declare class RouterApiHelpers {
|
|
7
|
+
private readonly Provider;
|
|
8
|
+
static readonly constants: {
|
|
9
|
+
defaults: {
|
|
10
|
+
tradePartitionCount: number;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
readonly SynchronousHelpers: RouterSynchronousApiHelpers;
|
|
14
|
+
readonly AsyncHelpers: RouterAsyncApiHelpers;
|
|
15
|
+
constructor(Provider: AftermathApi);
|
|
16
|
+
fetchSerializableGraph: (inputs: {
|
|
17
|
+
protocols: RouterProtocolName[];
|
|
18
|
+
}) => Promise<RouterSerializableCompleteGraph>;
|
|
19
|
+
fetchCompleteTradeRouteGivenAmountIn: (inputs: {
|
|
20
|
+
protocols: RouterProtocolName[];
|
|
21
|
+
network: SuiNetwork | Url;
|
|
22
|
+
graph: RouterSerializableCompleteGraph;
|
|
23
|
+
coinInType: CoinType;
|
|
24
|
+
coinInAmount: Balance;
|
|
25
|
+
coinOutType: CoinType;
|
|
26
|
+
referrer?: SuiAddress;
|
|
27
|
+
externalFee?: RouterExternalFee;
|
|
28
|
+
}) => Promise<RouterCompleteTradeRoute>;
|
|
29
|
+
private fetchCompleteTradeRoutesForLastRouteAsyncPool;
|
|
30
|
+
fetchTransactionForCompleteTradeRoute(inputs: {
|
|
31
|
+
walletAddress: SuiAddress;
|
|
32
|
+
completeRoute: RouterCompleteTradeRoute;
|
|
33
|
+
slippage: Slippage;
|
|
34
|
+
}): Promise<TransactionBlock>;
|
|
35
|
+
static amountsInForRouterTrade: (inputs: {
|
|
36
|
+
coinInAmount: Balance;
|
|
37
|
+
partitions?: number;
|
|
38
|
+
}) => Balance[];
|
|
39
|
+
private static addFinalRouterCompleteTradeRouteToRoute;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=routerApiHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routerApiHelpers.d.ts","sourceRoot":"","sources":["../../../../src/packages/router/api/routerApiHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EACN,OAAO,EACP,QAAQ,EAER,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,+BAA+B,EAC/B,QAAQ,EACR,UAAU,EACV,GAAG,EAEH,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAG5E,qBAAa,gBAAgB;IAsBhB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAjBrC,gBAAuB,SAAS;;;;MAI9B;IAMF,SAAgB,kBAAkB,8BAAC;IACnC,SAAgB,YAAY,wBAAC;gBAMA,QAAQ,EAAE,YAAY;IAe5C,sBAAsB,WAAkB;QAC9C,SAAS,EAAE,kBAAkB,EAAE,CAAC;KAChC,8CAGC;IAMK,oCAAoC,WAAkB;QAC5D,SAAS,EAAE,kBAAkB,EAAE,CAAC;QAChC,OAAO,EAAE,UAAU,GAAG,GAAG,CAAC;QAC1B,KAAK,EAAE,+BAA+B,CAAC;QACvC,UAAU,EAAE,QAAQ,CAAC;QACrB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,QAAQ,CAAC;QACtB,QAAQ,CAAC,EAAE,UAAU,CAAC;QACtB,WAAW,CAAC,EAAE,iBAAiB,CAAC;KAGhC,KAAG,QAAQ,wBAAwB,CAAC,CAgEnC;IAEF,OAAO,CAAC,6CAA6C,CAuDnD;IAmDW,qCAAqC,CAAC,MAAM,EAAE;QAC1D,aAAa,EAAE,UAAU,CAAC;QAC1B,aAAa,EAAE,wBAAwB,CAAC;QACxC,QAAQ,EAAE,QAAQ,CAAC;KACnB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAc7B,OAAc,uBAAuB,WAAY;QAChD,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;KACpB,KAAG,OAAO,EAAE,CAqBX;IAUF,OAAO,CAAC,MAAM,CAAC,uCAAuC,CAwCpD;CACF"}
|