aftermath-ts-sdk 0.0.156 → 0.0.159
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/types/configTypes.d.ts +4 -0
- package/dist/general/types/configTypes.d.ts.map +1 -1
- package/dist/general/utils/caller.d.ts.map +1 -1
- package/dist/general/utils/caller.js +3 -2
- package/dist/packages/pools/api/poolsApiHelpers.js +4 -4
- package/dist/packages/router/api/routerApiHelpers.d.ts.map +1 -1
- package/dist/packages/router/api/routerApiHelpers.js +7 -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 +5 -2
- package/dist/packages/router/utils/synchronous/routerGraph.d.ts.map +1 -1
- package/dist/packages/router/utils/synchronous/routerGraph.js +71 -16
- package/package.json +1 -1
|
@@ -38,6 +38,7 @@ export interface PoolsAddresses {
|
|
|
38
38
|
packages: {
|
|
39
39
|
amm: SuiAddress;
|
|
40
40
|
ammInterface: SuiAddress;
|
|
41
|
+
events: SuiAddress;
|
|
41
42
|
};
|
|
42
43
|
objects: {
|
|
43
44
|
poolRegistry: ObjectId;
|
|
@@ -46,6 +47,9 @@ export interface PoolsAddresses {
|
|
|
46
47
|
insuranceFund: ObjectId;
|
|
47
48
|
lpCoinsTable: ObjectId;
|
|
48
49
|
};
|
|
50
|
+
other: {
|
|
51
|
+
createLpCoinPackageCompilation: string;
|
|
52
|
+
};
|
|
49
53
|
}
|
|
50
54
|
export interface UtilitiesAddresses {
|
|
51
55
|
packages: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configTypes.d.ts","sourceRoot":"","sources":["../../../src/general/types/configTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMtD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAMjC,MAAM,MAAM,eAAe,GAAG,uBAAuB,GACpD,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAElC,UAAU,uBAAuB;CAAG;AAEpC,UAAU,uBAAuB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACjD,aAAa,EAAE,sBAAsB,CAAC;CACtC;AAMD,MAAM,WAAW,eAAe;IAC/B,QAAQ,EAAE;QACT,MAAM,EAAE,UAAU,CAAC;KACnB,CAAC;IACF,OAAO,EAAE;QACR,MAAM,EAAE,QAAQ,CAAC;QACjB,cAAc,EAAE,QAAQ,CAAC;KACzB,CAAC;CACF;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE;QACT,GAAG,EAAE,UAAU,CAAC;QAChB,KAAK,EAAE,UAAU,CAAC;KAClB,CAAC;IACF,OAAO,EAAE;QACR,OAAO,EAAE,QAAQ,CAAC;KAClB,CAAC;IACF,QAAQ,EAAE;QACT,GAAG,EAAE,UAAU,CAAC;KAChB,CAAC;CACF;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE;QACT,GAAG,EAAE,UAAU,CAAC;QAChB,YAAY,EAAE,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"configTypes.d.ts","sourceRoot":"","sources":["../../../src/general/types/configTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -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* () {
|
|
@@ -165,7 +165,7 @@ class PoolsApiHelpers {
|
|
|
165
165
|
};
|
|
166
166
|
this.publishLpCoinTx = (inputs) => {
|
|
167
167
|
const { tx } = inputs;
|
|
168
|
-
const compiledModulesAndDeps = JSON.parse(
|
|
168
|
+
const compiledModulesAndDeps = JSON.parse(this.addresses.pools.other.createLpCoinPackageCompilation);
|
|
169
169
|
return tx.publish({
|
|
170
170
|
modules: compiledModulesAndDeps.modules.map((m) => Array.from((0, sui_js_1.fromB64)(m))),
|
|
171
171
|
dependencies: compiledModulesAndDeps.dependencies.map((addr) => (0, sui_js_1.normalizeSuiObjectId)(addr)),
|
|
@@ -469,9 +469,9 @@ class PoolsApiHelpers {
|
|
|
469
469
|
/////////////////////////////////////////////////////////////////////
|
|
470
470
|
//// Event Types
|
|
471
471
|
/////////////////////////////////////////////////////////////////////
|
|
472
|
-
this.tradeEventType = () => eventsApiHelpers_1.EventsApiHelpers.createEventType(this.addresses.pools.packages.
|
|
473
|
-
this.depositEventType = () => eventsApiHelpers_1.EventsApiHelpers.createEventType(this.addresses.pools.packages.
|
|
474
|
-
this.withdrawEventType = () => eventsApiHelpers_1.EventsApiHelpers.createEventType(this.addresses.pools.packages.
|
|
472
|
+
this.tradeEventType = () => eventsApiHelpers_1.EventsApiHelpers.createEventType(this.addresses.pools.packages.events, PoolsApiHelpers.constants.moduleNames.events, PoolsApiHelpers.constants.eventNames.swap);
|
|
473
|
+
this.depositEventType = () => eventsApiHelpers_1.EventsApiHelpers.createEventType(this.addresses.pools.packages.events, PoolsApiHelpers.constants.moduleNames.events, PoolsApiHelpers.constants.eventNames.deposit);
|
|
474
|
+
this.withdrawEventType = () => eventsApiHelpers_1.EventsApiHelpers.createEventType(this.addresses.pools.packages.events, PoolsApiHelpers.constants.moduleNames.events, PoolsApiHelpers.constants.eventNames.withdraw);
|
|
475
475
|
const addresses = {
|
|
476
476
|
pools: this.Provider.addresses.pools,
|
|
477
477
|
referralVault: this.Provider.addresses.referralVault,
|
|
@@ -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,CAmEnC;IAEF,OAAO,CAAC,6CAA6C,CA2DnD;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"}
|
|
@@ -52,17 +52,19 @@ class RouterApiHelpers {
|
|
|
52
52
|
coinInAmounts,
|
|
53
53
|
lastPool })))),
|
|
54
54
|
]);
|
|
55
|
+
routerGraph.updateOptions(routerGraph_1.RouterGraph.defaultOptions);
|
|
55
56
|
const synchronousCompleteRoutes = routerGraph.getCompleteRoutesGivenAmountIns(Object.assign(Object.assign({}, inputs), { coinInAmounts }));
|
|
56
57
|
const allCompleteRoutes = [
|
|
57
58
|
...completeRoutesForLastPoolAsync,
|
|
58
59
|
synchronousCompleteRoutes,
|
|
59
60
|
];
|
|
60
61
|
const completeRoutes = allCompleteRoutes.filter((routes) => routes.length > 0);
|
|
61
|
-
|
|
62
|
+
const result = routerAsyncGraph_1.RouterAsyncGraph.createFinalCompleteRoute({
|
|
62
63
|
tradeResults: exactTradeResults,
|
|
63
64
|
completeRoutes: completeRoutes.length <= 0 ? undefined : completeRoutes,
|
|
64
65
|
coinInAmounts,
|
|
65
66
|
});
|
|
67
|
+
return result;
|
|
66
68
|
});
|
|
67
69
|
this.fetchCompleteTradeRoutesForLastRouteAsyncPool = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
68
70
|
const { routerGraph } = inputs;
|
|
@@ -73,6 +75,10 @@ class RouterApiHelpers {
|
|
|
73
75
|
coinType: inputs.coinOutType,
|
|
74
76
|
pool: inputs.lastPool,
|
|
75
77
|
});
|
|
78
|
+
routerGraph.updateOptions({
|
|
79
|
+
// maxRouteLength: 2,
|
|
80
|
+
maxGasCost: BigInt(333333333), // 0.333 SUI
|
|
81
|
+
});
|
|
76
82
|
const synchronousCompleteRoutes = routerGraph.getCompleteRoutesGivenAmountIns(Object.assign(Object.assign({}, inputs), { coinOutType: lastPoolCoinInType }));
|
|
77
83
|
const lastPoolCoinInAmounts = synchronousCompleteRoutes.map((route) => route.coinOut.amount);
|
|
78
84
|
const tradeResults = yield this.AsyncHelpers.fetchTradeResults(Object.assign(Object.assign({}, inputs), { coinInType: lastPoolCoinInType, pools: [inputs.lastPool], coinInAmounts: lastPoolCoinInAmounts }));
|
|
@@ -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,9 +15,10 @@ type TradeInfo = RouterTradeInfo & {
|
|
|
15
15
|
};
|
|
16
16
|
export declare class RouterGraph {
|
|
17
17
|
static readonly defaultOptions: RouterOptions;
|
|
18
|
-
readonly
|
|
19
|
-
|
|
18
|
+
readonly syncGraph: RouterCompleteGraph;
|
|
19
|
+
private constants;
|
|
20
20
|
constructor(network: SuiNetwork | Url, graph: RouterSerializableCompleteGraph, options?: RouterOptions);
|
|
21
|
+
updateOptions(partialOptions: Partial<RouterOptions>): void;
|
|
21
22
|
getCompleteRouteGivenAmountIn(inputs: {
|
|
22
23
|
coinInType: CoinType;
|
|
23
24
|
coinInAmount: Balance;
|
|
@@ -38,6 +39,8 @@ export declare class RouterGraph {
|
|
|
38
39
|
static graphFromSerializable(inputs: {
|
|
39
40
|
graph: RouterSerializableCompleteGraph;
|
|
40
41
|
network: SuiNetwork | Url;
|
|
42
|
+
isTotal?: boolean;
|
|
43
|
+
isAsync?: boolean;
|
|
41
44
|
}): RouterCompleteGraph;
|
|
42
45
|
static supportedCoinPathsFromGraph: (inputs: {
|
|
43
46
|
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":"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;IAOF,SAAgB,SAAS,EAAE,mBAAmB,CAAC;IAE/C,OAAO,CAAC,SAAS,CAAgB;gBAOhC,OAAO,EAAE,UAAU,GAAG,GAAG,EACzB,KAAK,EAAE,+BAA+B,EACtC,OAAO,CAAC,EAAE,aAAa;IAwBjB,aAAa,CAAC,cAAc,EAAE,OAAO,CAAC,aAAa,CAAC;IAOpD,6BAA6B,CAAC,MAAM,EAAE;QAC5C,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;KAChC,GAAG,wBAAwB;IA0BrB,+BAA+B,CAAC,MAAM,EAAE;QAC9C,UAAU,EAAE,QAAQ,CAAC;QACrB,aAAa,EAAE,OAAO,EAAE,CAAC;QACzB,WAAW,EAAE,QAAQ,CAAC;QACtB,QAAQ,CAAC,EAAE,UAAU,CAAC;QACtB,WAAW,CAAC,EAAE,iBAAiB,CAAC;KAChC,GAAG,wBAAwB,EAAE;WA2ChB,WAAW,CAAC,MAAM,EAAE;QACjC,KAAK,EAAE,sBAAsB,EAAE,CAAC;KAChC,GAAG,+BAA+B;WAgCrB,qBAAqB,CAAC,MAAM,EAAE;QAC3C,KAAK,EAAE,+BAA+B,CAAC;QACvC,OAAO,EAAE,UAAU,GAAG,GAAG,CAAC;QAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,mBAAmB;IAyDvB,OAAc,2BAA2B,WAAkB;QAC1D,KAAK,EAAE,+BAA+B,CAAC;QACvC,cAAc,CAAC,EAAE,MAAM,CAAC;KACxB,KAAG,QAAQ,wBAAwB,CAAC,CAkEnC;IAMF,OAAO,CAAC,gBAAgB;IA4ExB,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAyDpC;IAMF,OAAO,CAAC,MAAM,CAAC,UAAU,CAsCvB;IAEF,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAoDjC;IAEF,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAgF/B;IAEF,OAAO,CAAC,uBAAuB,CA2C7B;IAEF,OAAO,CAAC,oCAAoC,CAoF1C;IAEF,OAAO,CAAC,uBAAuB,CA8D7B;IAEF,OAAO,CAAC,iCAAiC,CA8IvC;IAEF,OAAc,uBAAuB,WAC5B,UAAU,EAAE,UACZ,QAAQ,gBACF,OAAO,WACZ,QAAQ,KACf,kBAAkB,CAgCnB;IAEF,OAAO,CAAC,MAAM,CAAC,sCAAsC,CAuBnD;IAEF,OAAO,CAAC,MAAM,CAAC,wCAAwC,CAiBrD;IAEF,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAM3B;IAEJ,OAAO,CAAC,MAAM,CAAC,eAAe,CAI3B;IAEH,OAAO,CAAC,MAAM,CAAC,8CAA8C,CAsD3D;IAMF,OAAO,CAAC,MAAM,CAAC,sBAAsB,CA8BnC;IAEF,OAAO,CAAC,MAAM,CAAC,cAAc,CA+B3B;CACF"}
|
|
@@ -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,28 @@ 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
|
/////////////////////////////////////////////////////////////////////
|
|
202
|
+
updateOptions(partialOptions) {
|
|
203
|
+
this.constants = Object.assign(Object.assign({}, this.constants), partialOptions);
|
|
204
|
+
}
|
|
190
205
|
getCompleteRouteGivenAmountIn(inputs) {
|
|
191
|
-
|
|
206
|
+
const result = this.getCompleteRoute(Object.assign(Object.assign({}, inputs), { isGivenAmountOut: false }));
|
|
207
|
+
return result;
|
|
192
208
|
}
|
|
193
209
|
// public getCompleteRouteGivenAmountOut(
|
|
194
210
|
// coinIn: CoinType,
|
|
@@ -228,9 +244,10 @@ class RouterGraph {
|
|
|
228
244
|
};
|
|
229
245
|
}
|
|
230
246
|
});
|
|
231
|
-
|
|
247
|
+
const result = completeRoutes.every((route) => route.routes.length === 0)
|
|
232
248
|
? []
|
|
233
249
|
: completeRoutes;
|
|
250
|
+
return result;
|
|
234
251
|
}
|
|
235
252
|
/////////////////////////////////////////////////////////////////////
|
|
236
253
|
//// Public Static Methods
|
|
@@ -257,13 +274,38 @@ class RouterGraph {
|
|
|
257
274
|
return graph;
|
|
258
275
|
}
|
|
259
276
|
static graphFromSerializable(inputs) {
|
|
277
|
+
const { isTotal, isAsync } = inputs;
|
|
260
278
|
const pools = Object.entries(inputs.graph.pools).reduce((acc, [uid, pool]) => {
|
|
261
279
|
const poolClass = (0, routerPoolInterface_1.createRouterPool)({
|
|
262
280
|
pool,
|
|
263
281
|
network: inputs.network,
|
|
264
282
|
});
|
|
283
|
+
if (!isTotal &&
|
|
284
|
+
((isAsync && !poolClass.noHopsAllowed) ||
|
|
285
|
+
(!isAsync && poolClass.noHopsAllowed)))
|
|
286
|
+
return acc;
|
|
265
287
|
return Object.assign(Object.assign({}, acc), { [uid]: poolClass });
|
|
266
288
|
}, {});
|
|
289
|
+
// const coinNodes = Object.entries(inputs.graph.coinNodes).reduce(
|
|
290
|
+
// (acc, [coinIn, coinNode]) => ({
|
|
291
|
+
// acc,
|
|
292
|
+
// [coinIn]: {
|
|
293
|
+
// ...coinNode,
|
|
294
|
+
// coinOutThroughPoolEdges: Object.entries(
|
|
295
|
+
// coinNode.coinOutThroughPoolEdges
|
|
296
|
+
// ).reduce(
|
|
297
|
+
// (acc, [coin, poolUids]) => ({
|
|
298
|
+
// ...acc,
|
|
299
|
+
// [coin]: poolUids.filter((uid) =>
|
|
300
|
+
// Object.keys(pools).includes(uid)
|
|
301
|
+
// ),
|
|
302
|
+
// }),
|
|
303
|
+
// {}
|
|
304
|
+
// ),
|
|
305
|
+
// },
|
|
306
|
+
// }),
|
|
307
|
+
// {}
|
|
308
|
+
// );
|
|
267
309
|
const graph = {
|
|
268
310
|
coinNodes: inputs.graph.coinNodes,
|
|
269
311
|
pools,
|
|
@@ -274,20 +316,20 @@ class RouterGraph {
|
|
|
274
316
|
//// Private Methods
|
|
275
317
|
/////////////////////////////////////////////////////////////////////
|
|
276
318
|
getCompleteRoute(inputs) {
|
|
277
|
-
if (Object.keys(this.
|
|
278
|
-
throw new Error("empty
|
|
319
|
+
if (Object.keys(this.syncGraph).length <= 0)
|
|
320
|
+
throw new Error("empty graphs");
|
|
279
321
|
const { coinInType, coinInAmount, coinOutType, referrer, externalFee, isGivenAmountOut, } = inputs;
|
|
280
322
|
if (externalFee &&
|
|
281
323
|
externalFee.feePercentage >=
|
|
282
324
|
router_1.Router.constants.maxExternalFeePercentage)
|
|
283
325
|
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.
|
|
326
|
+
const routes = RouterGraph.findRoutes(helpers_1.Helpers.deepCopy(this.syncGraph), helpers_1.Helpers.deepCopy(this.syncGraph), coinInType, coinOutType, this.constants.maxRouteLength, isGivenAmountOut);
|
|
327
|
+
const routesAfterTrades = this.splitTradeBetweenRoutes(helpers_1.Helpers.deepCopy(this.syncGraph), routes, coinInAmount, isGivenAmountOut, referrer);
|
|
286
328
|
const completeRoute = RouterGraph.completeRouteFromRoutes(routesAfterTrades, coinInType, coinInAmount, coinOutType);
|
|
287
329
|
const transformedRoute = isGivenAmountOut
|
|
288
330
|
? RouterGraph.transformCompleteRouteIfGivenAmountOut(completeRoute)
|
|
289
331
|
: completeRoute;
|
|
290
|
-
const completeTradeRoute = RouterGraph.routerCompleteTradeRouteFromCompleteTradeRoute(transformedRoute, this.
|
|
332
|
+
const completeTradeRoute = RouterGraph.routerCompleteTradeRouteFromCompleteTradeRoute(transformedRoute, this.syncGraph.pools, referrer, externalFee);
|
|
291
333
|
return completeTradeRoute;
|
|
292
334
|
}
|
|
293
335
|
}
|
|
@@ -298,8 +340,8 @@ _a = RouterGraph;
|
|
|
298
340
|
/////////////////////////////////////////////////////////////////////
|
|
299
341
|
RouterGraph.defaultOptions = {
|
|
300
342
|
maxRouteLength: 3,
|
|
301
|
-
tradePartitionCount:
|
|
302
|
-
minRoutesToCheck:
|
|
343
|
+
tradePartitionCount: 5,
|
|
344
|
+
minRoutesToCheck: 10,
|
|
303
345
|
maxGasCost: BigInt(500000000), // 0.5 SUI
|
|
304
346
|
};
|
|
305
347
|
/////////////////////////////////////////////////////////////////////
|
|
@@ -388,12 +430,21 @@ RouterGraph.updateCoinNodesFromPool = (coinNodes, pool) => {
|
|
|
388
430
|
/////////////////////////////////////////////////////////////////////
|
|
389
431
|
//// Route Finding
|
|
390
432
|
/////////////////////////////////////////////////////////////////////
|
|
391
|
-
RouterGraph.findRoutes = (
|
|
392
|
-
const
|
|
393
|
-
const startingRoutes = _a.createStartingRoutes(
|
|
394
|
-
const routes = _a.findCompleteRoutes(
|
|
395
|
-
const
|
|
396
|
-
|
|
433
|
+
RouterGraph.findRoutes = (syncGraph, asyncGraph, coinIn, coinOut, maxRouteLength, isGivenAmountOut) => {
|
|
434
|
+
const syncCoinInEdges = syncGraph.coinNodes[coinIn].coinOutThroughPoolEdges;
|
|
435
|
+
const startingRoutes = _a.createStartingRoutes(syncGraph.pools, syncCoinInEdges, coinIn, coinOut, false);
|
|
436
|
+
const routes = _a.findCompleteRoutes(syncGraph, startingRoutes, coinOut, maxRouteLength, isGivenAmountOut);
|
|
437
|
+
// const asyncCoinInEdges =
|
|
438
|
+
// syncGraph.coinNodes[coinIn].coinOutThroughPoolEdges;
|
|
439
|
+
// const noHopRoutes = this.createStartingRoutes(
|
|
440
|
+
// asyncGraph.pools,
|
|
441
|
+
// asyncCoinInEdges,
|
|
442
|
+
// coinIn,
|
|
443
|
+
// coinOut,
|
|
444
|
+
// true
|
|
445
|
+
// );
|
|
446
|
+
// return [...routes, ...noHopRoutes];
|
|
447
|
+
return [...routes];
|
|
397
448
|
};
|
|
398
449
|
RouterGraph.createStartingRoutes = (pools, coinInEdges, coinIn,
|
|
399
450
|
// NOTE: should this really be unused ?
|
|
@@ -401,6 +452,8 @@ finalCoinOut, onlyNoHopPools) => {
|
|
|
401
452
|
let routes = [];
|
|
402
453
|
for (const [coinOut, throughPools] of Object.entries(coinInEdges)) {
|
|
403
454
|
for (const poolUid of throughPools) {
|
|
455
|
+
if (!(poolUid in pools))
|
|
456
|
+
continue;
|
|
404
457
|
const pool = pools[poolUid];
|
|
405
458
|
if (onlyNoHopPools && !pool.noHopsAllowed)
|
|
406
459
|
continue;
|
|
@@ -463,6 +516,8 @@ RouterGraph.findCompleteRoutes = (graph, routes, coinOut, maxRouteLength, isGive
|
|
|
463
516
|
// )
|
|
464
517
|
lastPath.poolUid === poolUid)
|
|
465
518
|
continue;
|
|
519
|
+
if (!(poolUid in graph.pools))
|
|
520
|
+
continue;
|
|
466
521
|
const pool = graph.pools[poolUid];
|
|
467
522
|
const newRoute = Object.assign(Object.assign({}, route), { paths: [
|
|
468
523
|
...route.paths,
|