aftermath-ts-sdk 0.0.156 → 0.0.157
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/utils/caller.d.ts.map +1 -1
- package/dist/general/utils/caller.js +3 -2
- package/dist/packages/router/api/routerApiHelpers.d.ts.map +1 -1
- package/dist/packages/router/api/routerApiHelpers.js +2 -1
- package/dist/packages/router/utils/async/routerAsyncGraph.d.ts.map +1 -1
- package/dist/packages/router/utils/async/routerAsyncGraph.js +2 -0
- package/dist/packages/router/utils/synchronous/routerGraph.d.ts +3 -1
- package/dist/packages/router/utils/synchronous/routerGraph.d.ts.map +1 -1
- package/dist/packages/router/utils/synchronous/routerGraph.js +68 -16
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caller.d.ts","sourceRoot":"","sources":["../../../src/general/utils/caller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACN,aAAa,EACb,gBAAgB,EAGhB,GAAG,EACH,MAAM,aAAa,CAAC;AAGrB,qBAAa,MAAM;aAQD,OAAO,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAR3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAM;gBAOd,OAAO,CAAC,oBAAkB,EACzB,SAAS,GAAE,GAAQ;IAcrC,OAAO,CAAC,MAAM,CAAC,iBAAiB;
|
|
1
|
+
{"version":3,"file":"caller.d.ts","sourceRoot":"","sources":["../../../src/general/utils/caller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACN,aAAa,EACb,gBAAgB,EAGhB,GAAG,EACH,MAAM,aAAa,CAAC;AAGrB,qBAAa,MAAM;aAQD,OAAO,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAR3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAM;gBAOd,OAAO,CAAC,oBAAkB,EACzB,SAAS,GAAE,GAAQ;IAcrC,OAAO,CAAC,MAAM,CAAC,iBAAiB;mBAYX,mBAAmB;IAQxC,OAAO,CAAC,aAAa,CAQnB;cAMc,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,EACpD,GAAG,EAAE,GAAG,EACR,IAAI,CAAC,EAAE,QAAQ,EACf,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC;cAsBF,mBAAmB,CAAC,QAAQ,GAAG,SAAS,EACvD,GAAG,EAAE,GAAG,EACR,IAAI,CAAC,EAAE,QAAQ,EACf,MAAM,CAAC,EAAE,WAAW;cAWL,cAAc,CAAC,SAAS,EAAE,QAAQ,GAAG,aAAa,EACjE,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,QAAQ,EACd,MAAM,CAAC,EAAE,WAAW;CAQrB"}
|
|
@@ -23,7 +23,7 @@ class Caller {
|
|
|
23
23
|
if (this.baseUrl === undefined)
|
|
24
24
|
throw new Error("no baseUrl: unable to fetch data");
|
|
25
25
|
// TODO: handle url prefixing and api calls based on network differently
|
|
26
|
-
return `${this.baseUrl}/api/${this.urlPrefix === "" ? "" : this.urlPrefix + "/"}${url}
|
|
26
|
+
return `${this.baseUrl}/api/${this.urlPrefix === "" ? "" : this.urlPrefix + "/"}${url}`;
|
|
27
27
|
};
|
|
28
28
|
this.network = network;
|
|
29
29
|
this.urlPrefix = urlPrefix;
|
|
@@ -44,7 +44,8 @@ class Caller {
|
|
|
44
44
|
return "https://devnet.aftermath.finance";
|
|
45
45
|
if (network === "LOCAL")
|
|
46
46
|
return "http://localhost:3000";
|
|
47
|
-
|
|
47
|
+
const safeNetwork = network.slice(-1) === "/" ? network.slice(0, -1) : network;
|
|
48
|
+
return safeNetwork;
|
|
48
49
|
}
|
|
49
50
|
static fetchResponseToType(response) {
|
|
50
51
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -1 +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,
|
|
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,CAkEnC;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"}
|
|
@@ -58,11 +58,12 @@ class RouterApiHelpers {
|
|
|
58
58
|
synchronousCompleteRoutes,
|
|
59
59
|
];
|
|
60
60
|
const completeRoutes = allCompleteRoutes.filter((routes) => routes.length > 0);
|
|
61
|
-
|
|
61
|
+
const result = routerAsyncGraph_1.RouterAsyncGraph.createFinalCompleteRoute({
|
|
62
62
|
tradeResults: exactTradeResults,
|
|
63
63
|
completeRoutes: completeRoutes.length <= 0 ? undefined : completeRoutes,
|
|
64
64
|
coinInAmounts,
|
|
65
65
|
});
|
|
66
|
+
return result;
|
|
66
67
|
});
|
|
67
68
|
this.fetchCompleteTradeRoutesForLastRouteAsyncPool = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
68
69
|
const { routerGraph } = inputs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routerAsyncGraph.d.ts","sourceRoot":"","sources":["../../../../../src/packages/router/utils/async/routerAsyncGraph.ts"],"names":[],"mappings":"AACA,OAAO,EACN,OAAO,EACP,uBAAuB,EACvB,wBAAwB,EAExB,MAAM,mBAAmB,CAAC;AAM3B,qBAAa,gBAAgB;WASd,wBAAwB,CAAC,MAAM,EAAE;QAC9C,YAAY,EAAE,uBAAuB,CAAC;QACtC,aAAa,EAAE,OAAO,EAAE,CAAC;QACzB,cAAc,CAAC,EAAE,wBAAwB,EAAE,EAAE,CAAC;KAC9C,GAAG,wBAAwB;
|
|
1
|
+
{"version":3,"file":"routerAsyncGraph.d.ts","sourceRoot":"","sources":["../../../../../src/packages/router/utils/async/routerAsyncGraph.ts"],"names":[],"mappings":"AACA,OAAO,EACN,OAAO,EACP,uBAAuB,EACvB,wBAAwB,EAExB,MAAM,mBAAmB,CAAC;AAM3B,qBAAa,gBAAgB;WASd,wBAAwB,CAAC,MAAM,EAAE;QAC9C,YAAY,EAAE,uBAAuB,CAAC;QACtC,aAAa,EAAE,OAAO,EAAE,CAAC;QACzB,cAAc,CAAC,EAAE,wBAAwB,EAAE,EAAE,CAAC;KAC9C,GAAG,wBAAwB;IAuB5B,OAAc,8BAA8B,WAAY;QACvD,YAAY,EAAE,uBAAuB,CAAC;KACtC,KAAG,wBAAwB,EAAE,EAAE,CA+C9B;IAUF,OAAO,CAAC,MAAM,CAAC,uBAAuB,CA2CpC;IAEF,OAAO,CAAC,MAAM,CAAC,2BAA2B,CAqCxC;CACF"}
|
|
@@ -17,6 +17,8 @@ class RouterAsyncGraph {
|
|
|
17
17
|
const completeRoutes = inputs.completeRoutes
|
|
18
18
|
? [...asyncCompleteRoutes, ...inputs.completeRoutes]
|
|
19
19
|
: asyncCompleteRoutes;
|
|
20
|
+
if (completeRoutes.length < 0)
|
|
21
|
+
throw new Error("unable to find route");
|
|
20
22
|
const chosenCompleteRoutes = this.splitTradeBetweenRoutes(Object.assign(Object.assign({}, inputs), { completeRoutes }));
|
|
21
23
|
const finalCompleteRoute = this.singleCompleteRouteFromMany({
|
|
22
24
|
completeRoutes: chosenCompleteRoutes,
|
|
@@ -15,7 +15,7 @@ type TradeInfo = RouterTradeInfo & {
|
|
|
15
15
|
};
|
|
16
16
|
export declare class RouterGraph {
|
|
17
17
|
static readonly defaultOptions: RouterOptions;
|
|
18
|
-
readonly
|
|
18
|
+
readonly syncGraph: RouterCompleteGraph;
|
|
19
19
|
readonly constants: RouterOptions;
|
|
20
20
|
constructor(network: SuiNetwork | Url, graph: RouterSerializableCompleteGraph, options?: RouterOptions);
|
|
21
21
|
getCompleteRouteGivenAmountIn(inputs: {
|
|
@@ -38,6 +38,8 @@ export declare class RouterGraph {
|
|
|
38
38
|
static graphFromSerializable(inputs: {
|
|
39
39
|
graph: RouterSerializableCompleteGraph;
|
|
40
40
|
network: SuiNetwork | Url;
|
|
41
|
+
isTotal?: boolean;
|
|
42
|
+
isAsync?: boolean;
|
|
41
43
|
}): RouterCompleteGraph;
|
|
42
44
|
static supportedCoinPathsFromGraph: (inputs: {
|
|
43
45
|
graph: RouterSerializableCompleteGraph;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routerGraph.d.ts","sourceRoot":"","sources":["../../../../../src/packages/router/utils/synchronous/routerGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EACN,OAAO,EACP,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,+BAA+B,EAE/B,wBAAwB,EAExB,eAAe,EAIf,UAAU,EACV,QAAQ,EACR,GAAG,EAIH,sBAAsB,EACtB,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAO5C,KAAK,kBAAkB,GAAG;IACzB,MAAM,EAAE,UAAU,EAAE,CAAC;CACrB,GAAG,SAAS,CAAC;AAEd,KAAK,UAAU,GAAG;IACjB,KAAK,EAAE,SAAS,EAAE,CAAC;CACnB,GAAG,SAAS,CAAC;AAEd,KAAK,SAAS,GAAG,SAAS,GAAG;IAC5B,OAAO,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,KAAK,SAAS,GAAG,eAAe,GAAG;IAClC,gBAAgB,EAAE,OAAO,CAAC;CAC1B,CAAC;AAMF,qBAAa,WAAW;IAKvB,gBAAuB,cAAc,EAAE,aAAa,CAKlD;
|
|
1
|
+
{"version":3,"file":"routerGraph.d.ts","sourceRoot":"","sources":["../../../../../src/packages/router/utils/synchronous/routerGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -115,6 +115,8 @@ class RouterGraph {
|
|
|
115
115
|
let routeSpotPrice = 1;
|
|
116
116
|
try {
|
|
117
117
|
for (const path of originalRoute.paths) {
|
|
118
|
+
if (!(path.poolUid in currentPools))
|
|
119
|
+
continue;
|
|
118
120
|
const pool = currentPools[path.poolUid];
|
|
119
121
|
const spotPrice = pool.getSpotPrice({
|
|
120
122
|
coinInType: path.coinIn.type,
|
|
@@ -181,14 +183,25 @@ class RouterGraph {
|
|
|
181
183
|
return undefined;
|
|
182
184
|
}
|
|
183
185
|
};
|
|
184
|
-
this.
|
|
186
|
+
// this.syncGraph = RouterGraph.graphFromSerializable({
|
|
187
|
+
// graph,
|
|
188
|
+
// network,
|
|
189
|
+
// isTotal: true,
|
|
190
|
+
// });
|
|
191
|
+
this.syncGraph = RouterGraph.graphFromSerializable({ graph, network });
|
|
192
|
+
// this.asyncGraph = RouterGraph.graphFromSerializable({
|
|
193
|
+
// graph,
|
|
194
|
+
// network,
|
|
195
|
+
// isAsync: true,
|
|
196
|
+
// });
|
|
185
197
|
this.constants = Object.assign(Object.assign({}, RouterGraph.defaultOptions), options);
|
|
186
198
|
}
|
|
187
199
|
/////////////////////////////////////////////////////////////////////
|
|
188
200
|
//// Public Methods
|
|
189
201
|
/////////////////////////////////////////////////////////////////////
|
|
190
202
|
getCompleteRouteGivenAmountIn(inputs) {
|
|
191
|
-
|
|
203
|
+
const result = this.getCompleteRoute(Object.assign(Object.assign({}, inputs), { isGivenAmountOut: false }));
|
|
204
|
+
return result;
|
|
192
205
|
}
|
|
193
206
|
// public getCompleteRouteGivenAmountOut(
|
|
194
207
|
// coinIn: CoinType,
|
|
@@ -228,9 +241,10 @@ class RouterGraph {
|
|
|
228
241
|
};
|
|
229
242
|
}
|
|
230
243
|
});
|
|
231
|
-
|
|
244
|
+
const result = completeRoutes.every((route) => route.routes.length === 0)
|
|
232
245
|
? []
|
|
233
246
|
: completeRoutes;
|
|
247
|
+
return result;
|
|
234
248
|
}
|
|
235
249
|
/////////////////////////////////////////////////////////////////////
|
|
236
250
|
//// Public Static Methods
|
|
@@ -257,13 +271,38 @@ class RouterGraph {
|
|
|
257
271
|
return graph;
|
|
258
272
|
}
|
|
259
273
|
static graphFromSerializable(inputs) {
|
|
274
|
+
const { isTotal, isAsync } = inputs;
|
|
260
275
|
const pools = Object.entries(inputs.graph.pools).reduce((acc, [uid, pool]) => {
|
|
261
276
|
const poolClass = (0, routerPoolInterface_1.createRouterPool)({
|
|
262
277
|
pool,
|
|
263
278
|
network: inputs.network,
|
|
264
279
|
});
|
|
280
|
+
if (!isTotal &&
|
|
281
|
+
((isAsync && !poolClass.noHopsAllowed) ||
|
|
282
|
+
(!isAsync && poolClass.noHopsAllowed)))
|
|
283
|
+
return acc;
|
|
265
284
|
return Object.assign(Object.assign({}, acc), { [uid]: poolClass });
|
|
266
285
|
}, {});
|
|
286
|
+
// const coinNodes = Object.entries(inputs.graph.coinNodes).reduce(
|
|
287
|
+
// (acc, [coinIn, coinNode]) => ({
|
|
288
|
+
// acc,
|
|
289
|
+
// [coinIn]: {
|
|
290
|
+
// ...coinNode,
|
|
291
|
+
// coinOutThroughPoolEdges: Object.entries(
|
|
292
|
+
// coinNode.coinOutThroughPoolEdges
|
|
293
|
+
// ).reduce(
|
|
294
|
+
// (acc, [coin, poolUids]) => ({
|
|
295
|
+
// ...acc,
|
|
296
|
+
// [coin]: poolUids.filter((uid) =>
|
|
297
|
+
// Object.keys(pools).includes(uid)
|
|
298
|
+
// ),
|
|
299
|
+
// }),
|
|
300
|
+
// {}
|
|
301
|
+
// ),
|
|
302
|
+
// },
|
|
303
|
+
// }),
|
|
304
|
+
// {}
|
|
305
|
+
// );
|
|
267
306
|
const graph = {
|
|
268
307
|
coinNodes: inputs.graph.coinNodes,
|
|
269
308
|
pools,
|
|
@@ -274,20 +313,20 @@ class RouterGraph {
|
|
|
274
313
|
//// Private Methods
|
|
275
314
|
/////////////////////////////////////////////////////////////////////
|
|
276
315
|
getCompleteRoute(inputs) {
|
|
277
|
-
if (Object.keys(this.
|
|
278
|
-
throw new Error("empty
|
|
316
|
+
if (Object.keys(this.syncGraph).length <= 0)
|
|
317
|
+
throw new Error("empty graphs");
|
|
279
318
|
const { coinInType, coinInAmount, coinOutType, referrer, externalFee, isGivenAmountOut, } = inputs;
|
|
280
319
|
if (externalFee &&
|
|
281
320
|
externalFee.feePercentage >=
|
|
282
321
|
router_1.Router.constants.maxExternalFeePercentage)
|
|
283
322
|
throw new Error(`external fee percentage exceeds max of ${router_1.Router.constants.maxExternalFeePercentage}`);
|
|
284
|
-
const routes = RouterGraph.findRoutes(helpers_1.Helpers.deepCopy(this.
|
|
285
|
-
const routesAfterTrades = this.splitTradeBetweenRoutes(helpers_1.Helpers.deepCopy(this.
|
|
323
|
+
const routes = RouterGraph.findRoutes(helpers_1.Helpers.deepCopy(this.syncGraph), helpers_1.Helpers.deepCopy(this.syncGraph), coinInType, coinOutType, this.constants.maxRouteLength, isGivenAmountOut);
|
|
324
|
+
const routesAfterTrades = this.splitTradeBetweenRoutes(helpers_1.Helpers.deepCopy(this.syncGraph), routes, coinInAmount, isGivenAmountOut, referrer);
|
|
286
325
|
const completeRoute = RouterGraph.completeRouteFromRoutes(routesAfterTrades, coinInType, coinInAmount, coinOutType);
|
|
287
326
|
const transformedRoute = isGivenAmountOut
|
|
288
327
|
? RouterGraph.transformCompleteRouteIfGivenAmountOut(completeRoute)
|
|
289
328
|
: completeRoute;
|
|
290
|
-
const completeTradeRoute = RouterGraph.routerCompleteTradeRouteFromCompleteTradeRoute(transformedRoute, this.
|
|
329
|
+
const completeTradeRoute = RouterGraph.routerCompleteTradeRouteFromCompleteTradeRoute(transformedRoute, this.syncGraph.pools, referrer, externalFee);
|
|
291
330
|
return completeTradeRoute;
|
|
292
331
|
}
|
|
293
332
|
}
|
|
@@ -298,8 +337,8 @@ _a = RouterGraph;
|
|
|
298
337
|
/////////////////////////////////////////////////////////////////////
|
|
299
338
|
RouterGraph.defaultOptions = {
|
|
300
339
|
maxRouteLength: 3,
|
|
301
|
-
tradePartitionCount:
|
|
302
|
-
minRoutesToCheck:
|
|
340
|
+
tradePartitionCount: 5,
|
|
341
|
+
minRoutesToCheck: 10,
|
|
303
342
|
maxGasCost: BigInt(500000000), // 0.5 SUI
|
|
304
343
|
};
|
|
305
344
|
/////////////////////////////////////////////////////////////////////
|
|
@@ -388,12 +427,21 @@ RouterGraph.updateCoinNodesFromPool = (coinNodes, pool) => {
|
|
|
388
427
|
/////////////////////////////////////////////////////////////////////
|
|
389
428
|
//// Route Finding
|
|
390
429
|
/////////////////////////////////////////////////////////////////////
|
|
391
|
-
RouterGraph.findRoutes = (
|
|
392
|
-
const
|
|
393
|
-
const startingRoutes = _a.createStartingRoutes(
|
|
394
|
-
const routes = _a.findCompleteRoutes(
|
|
395
|
-
const
|
|
396
|
-
|
|
430
|
+
RouterGraph.findRoutes = (syncGraph, asyncGraph, coinIn, coinOut, maxRouteLength, isGivenAmountOut) => {
|
|
431
|
+
const syncCoinInEdges = syncGraph.coinNodes[coinIn].coinOutThroughPoolEdges;
|
|
432
|
+
const startingRoutes = _a.createStartingRoutes(syncGraph.pools, syncCoinInEdges, coinIn, coinOut, false);
|
|
433
|
+
const routes = _a.findCompleteRoutes(syncGraph, startingRoutes, coinOut, maxRouteLength, isGivenAmountOut);
|
|
434
|
+
// const asyncCoinInEdges =
|
|
435
|
+
// syncGraph.coinNodes[coinIn].coinOutThroughPoolEdges;
|
|
436
|
+
// const noHopRoutes = this.createStartingRoutes(
|
|
437
|
+
// asyncGraph.pools,
|
|
438
|
+
// asyncCoinInEdges,
|
|
439
|
+
// coinIn,
|
|
440
|
+
// coinOut,
|
|
441
|
+
// true
|
|
442
|
+
// );
|
|
443
|
+
// return [...routes, ...noHopRoutes];
|
|
444
|
+
return [...routes];
|
|
397
445
|
};
|
|
398
446
|
RouterGraph.createStartingRoutes = (pools, coinInEdges, coinIn,
|
|
399
447
|
// NOTE: should this really be unused ?
|
|
@@ -401,6 +449,8 @@ finalCoinOut, onlyNoHopPools) => {
|
|
|
401
449
|
let routes = [];
|
|
402
450
|
for (const [coinOut, throughPools] of Object.entries(coinInEdges)) {
|
|
403
451
|
for (const poolUid of throughPools) {
|
|
452
|
+
if (!(poolUid in pools))
|
|
453
|
+
continue;
|
|
404
454
|
const pool = pools[poolUid];
|
|
405
455
|
if (onlyNoHopPools && !pool.noHopsAllowed)
|
|
406
456
|
continue;
|
|
@@ -463,6 +513,8 @@ RouterGraph.findCompleteRoutes = (graph, routes, coinOut, maxRouteLength, isGive
|
|
|
463
513
|
// )
|
|
464
514
|
lastPath.poolUid === poolUid)
|
|
465
515
|
continue;
|
|
516
|
+
if (!(poolUid in graph.pools))
|
|
517
|
+
continue;
|
|
466
518
|
const pool = graph.pools[poolUid];
|
|
467
519
|
const newRoute = Object.assign(Object.assign({}, route), { paths: [
|
|
468
520
|
...route.paths,
|