@paraswap/dex-lib 4.7.22-native-blacklist.0 → 4.7.22-velodrome-dynamic-fees.1
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/build/dex/idle-dao/idle-dao.d.ts +1 -0
- package/build/dex/idle-dao/idle-dao.js +23 -11
- package/build/dex/idle-dao/idle-dao.js.map +1 -1
- package/build/dex/maker-psm/maker-psm.d.ts +4 -41
- package/build/dex/maker-psm/maker-psm.js +40 -143
- package/build/dex/maker-psm/maker-psm.js.map +1 -1
- package/build/dex/native/constants.d.ts +0 -1
- package/build/dex/native/constants.js +1 -2
- package/build/dex/native/constants.js.map +1 -1
- package/build/dex/native/native.js +0 -17
- package/build/dex/native/native.js.map +1 -1
- package/build/dex/native/rate-fetcher.d.ts +0 -3
- package/build/dex/native/rate-fetcher.js +0 -23
- package/build/dex/native/rate-fetcher.js.map +1 -1
- package/build/dex/native/types.d.ts +0 -15
- package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.d.ts +5 -0
- package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.js +11 -0
- package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.js.map +1 -1
- package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.d.ts +1 -4
- package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.js +0 -30
- package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.js.map +1 -1
- package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.d.ts +7 -0
- package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js +58 -0
- package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js.map +1 -1
- package/build/executor/Executor02BytecodeBuilderMultiRoute.d.ts +101 -0
- package/build/executor/Executor02BytecodeBuilderMultiRoute.js +877 -0
- package/build/executor/Executor02BytecodeBuilderMultiRoute.js.map +1 -0
- package/package.json +1 -1
- package/build/abi/PendleRouterStatic.json +0 -19
- package/build/abi/apex-defi/ApexDefiFactory.abi.json +0 -1749
- package/build/abi/apex-defi/ApexDefiRouter.abi.json +0 -1120
- package/build/abi/apex-defi/ApexDefiToken.abi.json +0 -229
- package/build/abi/apex-defi/ApexDefiWrapper.abi.json +0 -92
- package/build/abi/apex-defi/ApexDefiWrapperFactory.abi.json +0 -1107
- package/build/abi/pangolin-v3/PangolinV3StateMulticall.abi.json +0 -796
- package/build/abi/pendle/pendle-deployer.abi.json +0 -520
- package/build/abi/pendle/pendle-oracle.abi.json +0 -413
- package/build/abi/ring-v2/few-wrapped-token.json +0 -587
- package/build/abi/ring-v2/ring-v2-factory.json +0 -125
- package/build/abi/ring-v2/ring-v2-pool.json +0 -461
- package/build/abi/ring-v2/ring-v2-router.json +0 -332
- package/build/abi/stabull/stabull-curve.json +0 -738
- package/build/abi/stabull/stabull-router.json +0 -76
- package/build/abi/uniswap-v4/hooks/SpotDynamicFeeManager.json +0 -26
- package/build/abi/uniswap-v4/hooks/SpotHook.json +0 -54
- package/build/abi/uniswap-v4/hooks/SpotPolicyManager.json +0 -45
- package/build/abi/uniswap-v4/hooks/cabalcoin-hook.abi.json +0 -682
- package/build/abi/uniswap-v4/hooks/fee-hook.abi.json +0 -1335
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.d.ts +0 -29
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.js +0 -153
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.js.map +0 -1
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.d.ts +0 -40
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.js +0 -323
- package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.js.map +0 -1
- package/build/dex/aave-pt-to-underlying/config.d.ts +0 -3
- package/build/dex/aave-pt-to-underlying/config.js +0 -24
- package/build/dex/aave-pt-to-underlying/config.js.map +0 -1
- package/build/dex/aave-pt-to-underlying/constants.d.ts +0 -2
- package/build/dex/aave-pt-to-underlying/constants.js +0 -6
- package/build/dex/aave-pt-to-underlying/constants.js.map +0 -1
- package/build/dex/aave-pt-to-underlying/types.d.ts +0 -24
- package/build/dex/aave-pt-to-underlying/types.js +0 -3
- package/build/dex/aave-pt-to-underlying/types.js.map +0 -1
- package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.d.ts +0 -39
- package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.js +0 -244
- package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.js.map +0 -1
- package/build/dex/aave-pt-to-usdc/config.d.ts +0 -3
- package/build/dex/aave-pt-to-usdc/config.js +0 -47
- package/build/dex/aave-pt-to-usdc/config.js.map +0 -1
- package/build/dex/aave-pt-to-usdc/constants.d.ts +0 -2
- package/build/dex/aave-pt-to-usdc/constants.js +0 -6
- package/build/dex/aave-pt-to-usdc/constants.js.map +0 -1
- package/build/dex/aave-pt-to-usdc/types.d.ts +0 -22
- package/build/dex/aave-pt-to-usdc/types.js +0 -3
- package/build/dex/aave-pt-to-usdc/types.js.map +0 -1
- package/build/dex/apex-defi/apex-defi-factory.d.ts +0 -26
- package/build/dex/apex-defi/apex-defi-factory.js +0 -53
- package/build/dex/apex-defi/apex-defi-factory.js.map +0 -1
- package/build/dex/apex-defi/apex-defi-pool.d.ts +0 -55
- package/build/dex/apex-defi/apex-defi-pool.js +0 -247
- package/build/dex/apex-defi/apex-defi-pool.js.map +0 -1
- package/build/dex/apex-defi/apex-defi-wrapper-factory.d.ts +0 -57
- package/build/dex/apex-defi/apex-defi-wrapper-factory.js +0 -250
- package/build/dex/apex-defi/apex-defi-wrapper-factory.js.map +0 -1
- package/build/dex/apex-defi/apex-defi.d.ts +0 -97
- package/build/dex/apex-defi/apex-defi.js +0 -1021
- package/build/dex/apex-defi/apex-defi.js.map +0 -1
- package/build/dex/apex-defi/config.d.ts +0 -4
- package/build/dex/apex-defi/config.js +0 -138
- package/build/dex/apex-defi/config.js.map +0 -1
- package/build/dex/apex-defi/types.d.ts +0 -32
- package/build/dex/apex-defi/types.js +0 -3
- package/build/dex/apex-defi/types.js.map +0 -1
- package/build/dex/apex-defi/utils.d.ts +0 -46
- package/build/dex/apex-defi/utils.js +0 -133
- package/build/dex/apex-defi/utils.js.map +0 -1
- package/build/dex/miro-migrator/miro-migrator-state.d.ts +0 -27
- package/build/dex/miro-migrator/miro-migrator-state.js +0 -89
- package/build/dex/miro-migrator/miro-migrator-state.js.map +0 -1
- package/build/dex/native/validators.d.ts +0 -2
- package/build/dex/native/validators.js +0 -18
- package/build/dex/native/validators.js.map +0 -1
- package/build/dex/stabull/config.d.ts +0 -3
- package/build/dex/stabull/config.js +0 -177
- package/build/dex/stabull/config.js.map +0 -1
- package/build/dex/stabull/stabull-pool.d.ts +0 -46
- package/build/dex/stabull/stabull-pool.js +0 -113
- package/build/dex/stabull/stabull-pool.js.map +0 -1
- package/build/dex/stabull/stabull.d.ts +0 -55
- package/build/dex/stabull/stabull.js +0 -286
- package/build/dex/stabull/stabull.js.map +0 -1
- package/build/dex/stabull/types.d.ts +0 -21
- package/build/dex/stabull/types.js +0 -3
- package/build/dex/stabull/types.js.map +0 -1
- package/build/dex/uniswap-v3/forks/pangolin-v3/utils.d.ts +0 -4
- package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js +0 -56
- package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js.map +0 -1
- package/build/dex/uniswap-v4/hooks/arena.d.ts +0 -6
- package/build/dex/uniswap-v4/hooks/arena.js +0 -10
- package/build/dex/uniswap-v4/hooks/arena.js.map +0 -1
- package/build/dex/uniswap-v4/hooks/base-fee/base-fee-hook.d.ts +0 -0
- package/build/dex/uniswap-v4/hooks/base-fee/base-fee-hook.js +0 -2
- package/build/dex/uniswap-v4/hooks/base-fee/base-fee-hook.js.map +0 -1
- package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.d.ts +0 -7
- package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.js +0 -28
- package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.js.map +0 -1
- package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.d.ts +0 -0
- package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.js +0 -2
- package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.js.map +0 -1
- package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.d.ts +0 -7
- package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.js +0 -28
- package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.js.map +0 -1
- package/build/dex/uniswap-v4/hooks/fee-hook/types.d.ts +0 -0
- package/build/dex/uniswap-v4/hooks/fee-hook/types.js +0 -2
- package/build/dex/uniswap-v4/hooks/fee-hook/types.js.map +0 -1
- package/build/dex/uniswap-v4/hooks/index.d.ts +0 -1
- package/build/dex/uniswap-v4/hooks/index.js +0 -18
- package/build/dex/uniswap-v4/hooks/index.js.map +0 -1
- package/build/dex/uniswap-v4/hooks/spot.d.ts +0 -15
- package/build/dex/uniswap-v4/hooks/spot.js +0 -109
- package/build/dex/uniswap-v4/hooks/spot.js.map +0 -1
- package/build/dex/uniswap-v4/hooks/template.d.ts +0 -150
- package/build/dex/uniswap-v4/hooks/template.js +0 -104
- package/build/dex/uniswap-v4/hooks/template.js.map +0 -1
- package/build/dex/usdc-transmuter/usdc-transmuter-pool.d.ts +0 -26
- package/build/dex/usdc-transmuter/usdc-transmuter-pool.js +0 -75
- package/build/dex/usdc-transmuter/usdc-transmuter-pool.js.map +0 -1
- package/build/dex/usual/usual-usdc-usdc.d.ts +0 -17
- package/build/dex/usual/usual-usdc-usdc.js +0 -59
- package/build/dex/usual/usual-usdc-usdc.js.map +0 -1
- package/build/dex/yo/config.d.ts +0 -3
- package/build/dex/yo/config.js +0 -21
- package/build/dex/yo/config.js.map +0 -1
- package/build/dex/yo/types.d.ts +0 -13
- package/build/dex/yo/types.js +0 -3
- package/build/dex/yo/types.js.map +0 -1
- package/build/dex/yo/yo-pool.d.ts +0 -13
- package/build/dex/yo/yo-pool.js +0 -26
- package/build/dex/yo/yo-pool.js.map +0 -1
- package/build/dex/yo/yo.d.ts +0 -39
- package/build/dex/yo/yo.js +0 -248
- package/build/dex/yo/yo.js.map +0 -1
- package/build/implementations/api-paraswap-sdk.d.ts +0 -25
- package/build/implementations/api-paraswap-sdk.js +0 -102
- package/build/implementations/api-paraswap-sdk.js.map +0 -1
|
@@ -6,14 +6,11 @@ export declare class RateFetcher {
|
|
|
6
6
|
private dexHelper;
|
|
7
7
|
private logger;
|
|
8
8
|
private orderbookFetcher;
|
|
9
|
-
private blacklistFetcher;
|
|
10
9
|
private orderbookCacheKey;
|
|
11
10
|
private orderbookCacheTTL;
|
|
12
|
-
private setBlacklist;
|
|
13
11
|
constructor(dexKey: string, dexHelper: IDexHelper, logger: Logger, config: NativeRateFetcherConfig);
|
|
14
12
|
start(): void;
|
|
15
13
|
stop(): void;
|
|
16
14
|
fetchOnce(): Promise<void>;
|
|
17
15
|
private handleOrderbookResponse;
|
|
18
|
-
private handleBlacklistResponse;
|
|
19
16
|
}
|
|
@@ -2,24 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RateFetcher = void 0;
|
|
4
4
|
const fetcher_1 = require("../../lib/fetcher/fetcher");
|
|
5
|
-
const validators_1 = require("../../lib/validators");
|
|
6
|
-
const validators_2 = require("./validators");
|
|
7
5
|
class RateFetcher {
|
|
8
6
|
dexKey;
|
|
9
7
|
dexHelper;
|
|
10
8
|
logger;
|
|
11
9
|
orderbookFetcher;
|
|
12
|
-
blacklistFetcher;
|
|
13
10
|
orderbookCacheKey;
|
|
14
11
|
orderbookCacheTTL;
|
|
15
|
-
setBlacklist;
|
|
16
12
|
constructor(dexKey, dexHelper, logger, config) {
|
|
17
13
|
this.dexKey = dexKey;
|
|
18
14
|
this.dexHelper = dexHelper;
|
|
19
15
|
this.logger = logger;
|
|
20
16
|
this.orderbookCacheKey = config.rateConfig.orderbookCacheKey;
|
|
21
17
|
this.orderbookCacheTTL = config.rateConfig.orderbookCacheTTLSecs;
|
|
22
|
-
this.setBlacklist = config.rateConfig.setBlacklist;
|
|
23
18
|
this.orderbookFetcher = new fetcher_1.Fetcher(dexHelper.httpRequest, {
|
|
24
19
|
info: {
|
|
25
20
|
requestOptions: config.rateConfig.orderbookReqParams,
|
|
@@ -27,23 +22,12 @@ class RateFetcher {
|
|
|
27
22
|
},
|
|
28
23
|
handler: this.handleOrderbookResponse.bind(this),
|
|
29
24
|
}, config.rateConfig.orderbookIntervalMs, logger);
|
|
30
|
-
this.blacklistFetcher = new fetcher_1.Fetcher(dexHelper.httpRequest, {
|
|
31
|
-
info: {
|
|
32
|
-
requestOptions: config.rateConfig.blacklistReqParams,
|
|
33
|
-
caster: (data) => {
|
|
34
|
-
return (0, validators_1.validateAndCast)(data, validators_2.blacklistResponseValidator);
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
handler: this.handleBlacklistResponse.bind(this),
|
|
38
|
-
}, config.rateConfig.blacklistIntervalMs, logger);
|
|
39
25
|
}
|
|
40
26
|
start() {
|
|
41
27
|
this.orderbookFetcher.startPolling();
|
|
42
|
-
this.blacklistFetcher.startPolling();
|
|
43
28
|
}
|
|
44
29
|
stop() {
|
|
45
30
|
this.orderbookFetcher.stopPolling();
|
|
46
|
-
this.blacklistFetcher.stopPolling();
|
|
47
31
|
}
|
|
48
32
|
async fetchOnce() {
|
|
49
33
|
await this.orderbookFetcher.fetch(true);
|
|
@@ -57,13 +41,6 @@ class RateFetcher {
|
|
|
57
41
|
}));
|
|
58
42
|
this.dexHelper.cache.setex(this.dexKey, this.dexHelper.config.data.network, this.orderbookCacheKey, this.orderbookCacheTTL, JSON.stringify(parsedData));
|
|
59
43
|
}
|
|
60
|
-
handleBlacklistResponse(resp) {
|
|
61
|
-
const networkId = Number(this.dexHelper.config.data.network);
|
|
62
|
-
const addresses = resp.black_list
|
|
63
|
-
.filter(entry => entry.chainId === networkId)
|
|
64
|
-
.map(entry => entry.address.toLowerCase());
|
|
65
|
-
this.setBlacklist(addresses);
|
|
66
|
-
}
|
|
67
44
|
}
|
|
68
45
|
exports.RateFetcher = RateFetcher;
|
|
69
46
|
//# sourceMappingURL=rate-fetcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-fetcher.js","sourceRoot":"","sources":["../../../src/dex/native/rate-fetcher.ts"],"names":[],"mappings":";;;AACA,uDAAoD;
|
|
1
|
+
{"version":3,"file":"rate-fetcher.js","sourceRoot":"","sources":["../../../src/dex/native/rate-fetcher.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AAIpD,MAAa,WAAW;IAMZ;IACA;IACA;IAPF,gBAAgB,CAAmC;IACnD,iBAAiB,CAAS;IAC1B,iBAAiB,CAAS;IAElC,YACU,MAAc,EACd,SAAqB,EACrB,MAAc,EACtB,MAA+B;QAHvB,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAY;QACrB,WAAM,GAAN,MAAM,CAAQ;QAGtB,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC;QAC7D,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC;QAEjE,IAAI,CAAC,gBAAgB,GAAG,IAAI,iBAAO,CACjC,SAAS,CAAC,WAAW,EACrB;YACE,IAAI,EAAE;gBACJ,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,kBAAkB;gBACpD,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;aAClD;YACD,OAAO,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;SACjD,EACD,MAAM,CAAC,UAAU,CAAC,mBAAmB,EACrC,MAAM,CACP,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;IACvC,CAAC;IAED,IAAI;QACF,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEO,uBAAuB,CAAC,IAA6B;QAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpC,GAAG,KAAK;YACR,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE;YAC9C,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE;YAChD,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;SAC3C,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CACxB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAClC,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAC3B,CAAC;IACJ,CAAC;CACF;AAxDD,kCAwDC"}
|
|
@@ -15,15 +15,6 @@ export type NativeOrderbookEntry = {
|
|
|
15
15
|
levels: NativeOrderbookLevel[];
|
|
16
16
|
};
|
|
17
17
|
export type NativeOrderbookResponse = NativeOrderbookEntry[];
|
|
18
|
-
export type NativeBlacklistEntry = {
|
|
19
|
-
id: string;
|
|
20
|
-
address: Address;
|
|
21
|
-
chainId: number;
|
|
22
|
-
createTime: number;
|
|
23
|
-
};
|
|
24
|
-
export type NativeBlacklistResponse = {
|
|
25
|
-
black_list: NativeBlacklistEntry[];
|
|
26
|
-
};
|
|
27
18
|
export type NativeRateFetcherConfig = {
|
|
28
19
|
rateConfig: {
|
|
29
20
|
orderbookReqParams: {
|
|
@@ -34,12 +25,6 @@ export type NativeRateFetcherConfig = {
|
|
|
34
25
|
orderbookCacheKey: string;
|
|
35
26
|
orderbookCacheTTLSecs: number;
|
|
36
27
|
orderbookIntervalMs: number;
|
|
37
|
-
blacklistReqParams: {
|
|
38
|
-
url: string;
|
|
39
|
-
headers?: RequestHeaders;
|
|
40
|
-
};
|
|
41
|
-
blacklistIntervalMs: number;
|
|
42
|
-
setBlacklist: (addresses: string[]) => Promise<void>;
|
|
43
28
|
};
|
|
44
29
|
};
|
|
45
30
|
export type NativeFirmQuoteOrder = {
|
|
@@ -2,10 +2,15 @@ import { Network } from '../../../../constants';
|
|
|
2
2
|
import { VelodromeSlipstream } from '../velodrome-slipstream/velodrome-slipstream';
|
|
3
3
|
import { Address } from '@paraswap/core';
|
|
4
4
|
import { PoolLiquidity } from '../../../../types';
|
|
5
|
+
import { MultiCallParams } from '../../../../lib/multi-wrapper';
|
|
6
|
+
import { Interface } from '@ethersproject/abi';
|
|
7
|
+
import { VelodromeSlipstreamEventPool } from '../velodrome-slipstream/velodrome-slipstream-pool';
|
|
5
8
|
export declare class PharaohV3 extends VelodromeSlipstream {
|
|
6
9
|
static dexKeysWithNetwork: {
|
|
7
10
|
key: string;
|
|
8
11
|
networks: Network[];
|
|
9
12
|
}[];
|
|
13
|
+
protected readonly poolIface: Interface;
|
|
14
|
+
protected buildFeeCallData(pools: VelodromeSlipstreamEventPool[]): MultiCallParams<bigint>[];
|
|
10
15
|
getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
|
|
11
16
|
}
|
|
@@ -9,8 +9,19 @@ const utils_1 = require("../../../../utils");
|
|
|
9
9
|
const lodash_1 = __importDefault(require("lodash"));
|
|
10
10
|
const velodrome_slipstream_1 = require("../velodrome-slipstream/velodrome-slipstream");
|
|
11
11
|
const constants_1 = require("../../constants");
|
|
12
|
+
const decoders_1 = require("../../../../lib/decoders");
|
|
13
|
+
const abi_1 = require("@ethersproject/abi");
|
|
14
|
+
const PharaohV3Pool_abi_json_1 = __importDefault(require("../../../../abi/pharaoh-v3/PharaohV3Pool.abi.json"));
|
|
12
15
|
class PharaohV3 extends velodrome_slipstream_1.VelodromeSlipstream {
|
|
13
16
|
static dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(lodash_1.default.pick(config_1.UniswapV3Config, ['PharaohV3']));
|
|
17
|
+
poolIface = new abi_1.Interface(PharaohV3Pool_abi_json_1.default);
|
|
18
|
+
buildFeeCallData(pools) {
|
|
19
|
+
return pools.map(pool => ({
|
|
20
|
+
target: pool.poolAddress,
|
|
21
|
+
callData: this.poolIface.encodeFunctionData('fee', []),
|
|
22
|
+
decodeFunction: decoders_1.uint24ToBigInt,
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
14
25
|
async getTopPoolsForToken(tokenAddress, limit) {
|
|
15
26
|
if (!this.config.subgraphURL)
|
|
16
27
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pharaoh-v3.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.ts"],"names":[],"mappings":";;;;;;AACA,yCAA+C;AAC/C,6CAA0D;AAC1D,oDAAuB;AACvB,uFAAmF;AAGnF,+CAA8D;
|
|
1
|
+
{"version":3,"file":"pharaoh-v3.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.ts"],"names":[],"mappings":";;;;;;AACA,yCAA+C;AAC/C,6CAA0D;AAC1D,oDAAuB;AACvB,uFAAmF;AAGnF,+CAA8D;AAE9D,uDAA0D;AAC1D,4CAA+C;AAC/C,+GAAiF;AAmBjF,MAAa,SAAU,SAAQ,0CAAmB;IACzC,MAAM,CAAC,kBAAkB,GAC9B,IAAA,6BAAqB,EAAC,gBAAC,CAAC,IAAI,CAAC,wBAAe,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE7C,SAAS,GAAG,IAAI,eAAS,CAAC,gCAAgB,CAAC,CAAC;IAErD,gBAAgB,CACxB,KAAqC;QAErC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC;YACtD,cAAc,EAAE,yBAAc;SAC/B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,YAAqB,EACrB,KAAa;QAEb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW;YAAE,OAAO,EAAE,CAAC;QAExC,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAEjD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CACnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoCE,EACF;YACE,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,KAAK;SACb,CACF,CAAC;QAEF,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,SAAS,IAAI,CAAC,MAAM,+CAA+C,CACpE,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAoB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAkB,EAAE,EAAE,CAAC,CAAC;YACtE,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;YAC9B,eAAe,EAAE;gBACf;oBACE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE;oBACrC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;iBACvC;aACF;YACD,YAAY,EAAE,CAAC;SAChB,CAAC,CAAC,CAAC;QAEJ,MAAM,MAAM,GAAoB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAkB,EAAE,EAAE,CAAC,CAAC;YACtE,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;YAC9B,eAAe,EAAE;gBACf;oBACE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE;oBACrC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;iBACvC;aACF;YACD,YAAY,EAAE,CAAC;SAChB,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;QAExC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAErC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC9C,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,CAAC,CAAC,OAAO;YACT,YAAY;YACZ,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO;SAC7B,CAAC,CACH,CAAC;QAEF,MAAM,aAAa,GAAG,QAAQ;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,OAAO;gBACL,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACtB,CAAC;QACjC,CAAC,CAAC;aACD,IAAI,EAAE,CAAC;QAEV,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC7D,aAAa,CACd,CAAC;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,eAAe,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,wBAAwB,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAE5D,MAAM,iBAAiB,GAAG,eAAe;gBACvC,CAAC,CAAC,eAAe,GAAG,uCAA2B;gBAC/C,CAAC,CAAC,IAAI,CAAC;YAET,MAAM,0BAA0B,GAAG,wBAAwB;gBACzD,CAAC,CAAC,wBAAwB,GAAG,uCAA2B;gBACxD,CAAC,CAAC,IAAI,CAAC;YAET,IAAI,iBAAiB,EAAE,CAAC;gBACtB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG;oBACxB,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;oBAC1B,YAAY,EAAE,iBAAiB;iBAChC,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG,0BAA0B,IAAI,iBAAiB,IAAI,CAAC,CAAC;YAE1E,OAAO;gBACL,GAAG,IAAI;gBACP,YAAY;aACb,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK;aACT,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;aAC/C,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;;AA1JH,8BA2JC"}
|
|
@@ -2,13 +2,10 @@ import { UniswapV3EventPool } from '../../uniswap-v3-pool';
|
|
|
2
2
|
import { Interface } from 'ethers/lib/utils';
|
|
3
3
|
import { MultiCallParams } from '../../../../lib/multi-wrapper';
|
|
4
4
|
import { DecodedStateMultiCallResultWithRelativeBitmaps, PoolState } from '../../types';
|
|
5
|
-
import { Address
|
|
6
|
-
import { DeepReadonly } from 'ts-essentials';
|
|
5
|
+
import { Address } from '../../../../types';
|
|
7
6
|
export declare class VelodromeSlipstreamEventPool extends UniswapV3EventPool {
|
|
8
7
|
readonly poolIface: Interface;
|
|
9
8
|
readonly factoryIface: Interface;
|
|
10
|
-
protected processBlockLogs(state: DeepReadonly<PoolState>, logs: Readonly<Log>[], blockHeader: Readonly<BlockHeader>): Promise<DeepReadonly<PoolState> | null>;
|
|
11
|
-
protected getCurrentFee(blockNumber: number): Promise<bigint>;
|
|
12
9
|
protected _getStateRequestCallData(): MultiCallParams<bigint | DecodedStateMultiCallResultWithRelativeBitmaps>[];
|
|
13
10
|
generateState(blockNumber: number): Promise<Readonly<PoolState>>;
|
|
14
11
|
protected predictDeterministicAddress(factory: string, implementation: string, salt: string): Address;
|
|
@@ -18,36 +18,6 @@ const ethers_1 = require("ethers");
|
|
|
18
18
|
class VelodromeSlipstreamEventPool extends uniswap_v3_pool_1.UniswapV3EventPool {
|
|
19
19
|
poolIface = new utils_1.Interface(VelodromeSlipstreamPool_abi_json_1.default);
|
|
20
20
|
factoryIface = new utils_1.Interface(VelodromeSlipstreamFactory_abi_json_1.default);
|
|
21
|
-
async processBlockLogs(state, logs, blockHeader) {
|
|
22
|
-
const newState = await super.processBlockLogs(state, logs, blockHeader);
|
|
23
|
-
const fee = await this.getCurrentFee(blockHeader.number);
|
|
24
|
-
if (newState && newState.fee !== fee) {
|
|
25
|
-
const state = { ...newState };
|
|
26
|
-
state.fee = fee;
|
|
27
|
-
return state;
|
|
28
|
-
}
|
|
29
|
-
return newState;
|
|
30
|
-
}
|
|
31
|
-
async getCurrentFee(blockNumber) {
|
|
32
|
-
try {
|
|
33
|
-
const [result] = await this.dexHelper.multiWrapper.tryAggregate(false, [
|
|
34
|
-
{
|
|
35
|
-
target: this.factoryAddress,
|
|
36
|
-
callData: this.factoryIface.encodeFunctionData('getSwapFee', [
|
|
37
|
-
this.poolAddress,
|
|
38
|
-
]),
|
|
39
|
-
decodeFunction: decoders_1.uint24ToBigInt,
|
|
40
|
-
},
|
|
41
|
-
], blockNumber);
|
|
42
|
-
if (result.success) {
|
|
43
|
-
return result.returnData;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
this.logger.error(`VelodromeSlipstream: Failed to fetch fee for pool ${this.poolAddress}:`, error);
|
|
48
|
-
}
|
|
49
|
-
return this.feeCode;
|
|
50
|
-
}
|
|
51
21
|
_getStateRequestCallData() {
|
|
52
22
|
if (!this._stateRequestCallData) {
|
|
53
23
|
const callData = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"velodrome-slipstream-pool.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA2D;AAC3D,4CAA6C;AAC7C,6IAA+G;AAC/G,mJAAqH;AAMrH,uDAA2E;AAC3E,mCAAwE;AAExE,
|
|
1
|
+
{"version":3,"file":"velodrome-slipstream-pool.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { PoolState } from '../../types';
|
|
|
7
7
|
import { VelodromeSlipstreamEventPool } from './velodrome-slipstream-pool';
|
|
8
8
|
import { UniswapV3EventPool } from '../../uniswap-v3-pool';
|
|
9
9
|
import { OnPoolCreatedCallback } from '../../uniswap-v3-factory';
|
|
10
|
+
import { MultiCallParams } from '../../../../lib/multi-wrapper';
|
|
10
11
|
type VelodromeSlipstreamData = {
|
|
11
12
|
path: {
|
|
12
13
|
tokenIn: Address;
|
|
@@ -25,6 +26,9 @@ export declare class VelodromeSlipstream extends UniswapV3 {
|
|
|
25
26
|
protected config: import("../../types").DexParams;
|
|
26
27
|
protected poolsToPreload: never[];
|
|
27
28
|
readonly eventPools: Record<string, VelodromeSlipstreamEventPool | null>;
|
|
29
|
+
protected feeUpdateIntervalTask?: NodeJS.Timeout;
|
|
30
|
+
private static readonly FEE_REFRESH_INTERVAL_MS;
|
|
31
|
+
protected readonly factoryIface: Interface;
|
|
28
32
|
constructor(network: Network, dexKey: string, dexHelper: IDexHelper, adapters?: import("../../../../types").AdapterMappings, quoterIface?: Interface, config?: import("../../types").DexParams, poolsToPreload?: never[]);
|
|
29
33
|
static dexKeysWithNetwork: {
|
|
30
34
|
key: string;
|
|
@@ -40,6 +44,9 @@ export declare class VelodromeSlipstream extends UniswapV3 {
|
|
|
40
44
|
fee: NumberAsString;
|
|
41
45
|
}[], side: SwapSide): string;
|
|
42
46
|
protected prepareData(srcAddress: string, destAddress: string, pool: UniswapV3EventPool, state: PoolState): VelodromeSlipstreamData;
|
|
47
|
+
protected buildFeeCallData(pools: VelodromeSlipstreamEventPool[]): MultiCallParams<bigint>[];
|
|
48
|
+
protected updateAllPoolFees(): Promise<void>;
|
|
49
|
+
releaseResources(): void;
|
|
43
50
|
protected onPoolCreatedDeleteFromNonExistingSet(): OnPoolCreatedCallback;
|
|
44
51
|
}
|
|
45
52
|
export {};
|
|
@@ -12,6 +12,8 @@ const UniswapV3QuoterV2_abi_json_1 = __importDefault(require("../../../../abi/un
|
|
|
12
12
|
const utils_1 = require("../../../../utils");
|
|
13
13
|
const lodash_1 = __importDefault(require("lodash"));
|
|
14
14
|
const solidity_1 = require("@ethersproject/solidity");
|
|
15
|
+
const decoders_1 = require("../../../../lib/decoders");
|
|
16
|
+
const VelodromeSlipstreamFactory_abi_json_1 = __importDefault(require("../../../../abi/velodrome-slipstream/VelodromeSlipstreamFactory.abi.json"));
|
|
15
17
|
class VelodromeSlipstream extends uniswap_v3_1.UniswapV3 {
|
|
16
18
|
network;
|
|
17
19
|
dexHelper;
|
|
@@ -20,6 +22,9 @@ class VelodromeSlipstream extends uniswap_v3_1.UniswapV3 {
|
|
|
20
22
|
config;
|
|
21
23
|
poolsToPreload;
|
|
22
24
|
eventPools = {};
|
|
25
|
+
feeUpdateIntervalTask;
|
|
26
|
+
static FEE_REFRESH_INTERVAL_MS = 60 * 1000;
|
|
27
|
+
factoryIface = new abi_1.Interface(VelodromeSlipstreamFactory_abi_json_1.default);
|
|
23
28
|
constructor(network, dexKey, dexHelper, adapters = config_1.Adapters[network] || {}, quoterIface = new abi_1.Interface(UniswapV3QuoterV2_abi_json_1.default), config = config_1.UniswapV3Config[dexKey][network], poolsToPreload = []) {
|
|
24
29
|
super(network, dexKey, dexHelper, adapters, quoterIface, config, poolsToPreload);
|
|
25
30
|
this.network = network;
|
|
@@ -46,6 +51,10 @@ class VelodromeSlipstream extends uniswap_v3_1.UniswapV3 {
|
|
|
46
51
|
void cleanExpiredNotExistingPoolsKeys();
|
|
47
52
|
this.intervalTask = setInterval(cleanExpiredNotExistingPoolsKeys.bind(this), uniswap_v3_1.UNISWAPV3_CLEAN_NOT_EXISTING_POOL_INTERVAL_MS);
|
|
48
53
|
}
|
|
54
|
+
else {
|
|
55
|
+
void this.updateAllPoolFees();
|
|
56
|
+
this.feeUpdateIntervalTask = setInterval(this.updateAllPoolFees.bind(this), VelodromeSlipstream.FEE_REFRESH_INTERVAL_MS);
|
|
57
|
+
}
|
|
49
58
|
}
|
|
50
59
|
async getPoolsForIdentifiers(srcAddress, destAddress, blockNumber) {
|
|
51
60
|
return Promise.all(this.config.tickSpacings.map(async (tickSpacing) => this.getPool(srcAddress, destAddress, this.config.tickSpacingsToFees[tickSpacing.toString()], blockNumber, tickSpacing)));
|
|
@@ -96,6 +105,55 @@ class VelodromeSlipstream extends uniswap_v3_1.UniswapV3 {
|
|
|
96
105
|
],
|
|
97
106
|
};
|
|
98
107
|
}
|
|
108
|
+
buildFeeCallData(pools) {
|
|
109
|
+
return pools.map(pool => ({
|
|
110
|
+
target: this.config.factory,
|
|
111
|
+
callData: this.factoryIface.encodeFunctionData('getSwapFee', [
|
|
112
|
+
pool.poolAddress,
|
|
113
|
+
]),
|
|
114
|
+
decodeFunction: decoders_1.uint24ToBigInt,
|
|
115
|
+
}));
|
|
116
|
+
}
|
|
117
|
+
async updateAllPoolFees() {
|
|
118
|
+
try {
|
|
119
|
+
const activePools = Object.values(this.eventPools).filter(pool => pool !== null);
|
|
120
|
+
if (activePools.length === 0) {
|
|
121
|
+
this.logger.warn(`${this.dexKey}: No active pools to update fees for`);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
this.logger.info(`${this.dexKey}: Updating fees for ${activePools.length} pools`);
|
|
125
|
+
const callData = this.buildFeeCallData(activePools);
|
|
126
|
+
const results = await this.dexHelper.multiWrapper.tryAggregate(false, callData);
|
|
127
|
+
const updateBlockNumber = await this.dexHelper.provider.getBlockNumber();
|
|
128
|
+
activePools.forEach((pool, index) => {
|
|
129
|
+
if (!results[index].success) {
|
|
130
|
+
this.logger.warn(`${this.dexKey}: Failed to fetch fee for pool ${pool.poolAddress}`);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const newFee = results[index].returnData;
|
|
134
|
+
const currentState = pool.getStaleState();
|
|
135
|
+
if (!currentState) {
|
|
136
|
+
this.logger.debug(`${this.dexKey}: No state available for pool ${pool.poolAddress}, skipping fee update`);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (currentState.fee !== newFee) {
|
|
140
|
+
const newState = { ...currentState, fee: newFee };
|
|
141
|
+
pool.setState(newState, updateBlockNumber);
|
|
142
|
+
this.logger.debug(`${this.dexKey}: Updated fee for pool ${pool.poolAddress}: ${currentState.fee} -> ${newFee}`);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
this.logger.error(`${this.dexKey}: Error updating pool fees:`, error);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
releaseResources() {
|
|
151
|
+
super.releaseResources();
|
|
152
|
+
if (this.feeUpdateIntervalTask !== undefined) {
|
|
153
|
+
clearInterval(this.feeUpdateIntervalTask);
|
|
154
|
+
this.feeUpdateIntervalTask = undefined;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
99
157
|
/*
|
|
100
158
|
* When a non existing pool is queried, it's blacklisted for an arbitrary long period in order to prevent issuing too many rpc calls
|
|
101
159
|
* Once the pool is created, it gets immediately flagged
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"velodrome-slipstream.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.ts"],"names":[],"mappings":";;;;;;AAAA,iDAI0B;AAC1B,qDAA0D;AAE1D,yCAAyD;AACzD,4CAA+C;AAC/C,uHAAyF;AACzF,6CAA0D;AAC1D,oDAAuB;AAEvB,sDAA+C;
|
|
1
|
+
{"version":3,"file":"velodrome-slipstream.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { OptimalRate, OptimalRoute } from '@paraswap/core';
|
|
2
|
+
import { DexExchangeBuildParam } from '../types';
|
|
3
|
+
import { BuildSwap, Executors, Flag, RouteBuildSwaps } from './types';
|
|
4
|
+
import { DepositWithdrawReturn } from '../dex/weth/types';
|
|
5
|
+
import { BuildSwapFlagsParams, DexCallDataParams, ExecutorBytecodeBuilder, PriceRouteType, SingleSwapCallDataParams } from './ExecutorBytecodeBuilder';
|
|
6
|
+
export type Executor02SingleSwapCallDataParams = {
|
|
7
|
+
routeIndex: number;
|
|
8
|
+
swapIndex: number;
|
|
9
|
+
wrapToSwapMap: {
|
|
10
|
+
[key: number]: boolean;
|
|
11
|
+
};
|
|
12
|
+
unwrapToSwapMap: {
|
|
13
|
+
[key: number]: boolean;
|
|
14
|
+
};
|
|
15
|
+
wrapToSwapExchangeMap: {
|
|
16
|
+
[key: string]: boolean;
|
|
17
|
+
};
|
|
18
|
+
swap: BuildSwap;
|
|
19
|
+
srcToken: string;
|
|
20
|
+
destToken: string;
|
|
21
|
+
swaps: BuildSwap[];
|
|
22
|
+
rootUnwrapEth: boolean;
|
|
23
|
+
rootWrapEth: boolean;
|
|
24
|
+
isLastSwapOnTheRoute?: boolean;
|
|
25
|
+
};
|
|
26
|
+
export type MultiRouteExecutor02DexCallDataParams = {
|
|
27
|
+
rootUnwrapEth: boolean;
|
|
28
|
+
swap: BuildSwap;
|
|
29
|
+
destToken: string;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Class to build bytecode for Executor02 - simpleSwap with N DEXs (VERTICAL_BRANCH), multiSwaps (VERTICAL_BRANCH_HORIZONTAL_SEQUENCE) and megaswaps (NESTED_VERTICAL_BRANCH_HORIZONTAL_SEQUENCE)
|
|
33
|
+
*/
|
|
34
|
+
export declare class Executor02BytecodeBuilderMultiRoute extends ExecutorBytecodeBuilder<Executor02SingleSwapCallDataParams, MultiRouteExecutor02DexCallDataParams> {
|
|
35
|
+
type: Executors;
|
|
36
|
+
/**
|
|
37
|
+
* Executor02 Flags:
|
|
38
|
+
* switch (flag % 4):
|
|
39
|
+
* case 0: don't insert fromAmount
|
|
40
|
+
* case 1: sendEth equal to fromAmount
|
|
41
|
+
* case 2: sendEth equal to fromAmount + insert fromAmount
|
|
42
|
+
* case 3: insert fromAmount
|
|
43
|
+
|
|
44
|
+
* switch (flag % 3):
|
|
45
|
+
* case 0: don't check balance after swap
|
|
46
|
+
* case 1: check eth balance after swap
|
|
47
|
+
* case 2: check destToken balance after swap
|
|
48
|
+
*/
|
|
49
|
+
protected buildSimpleSwapFlags(params: BuildSwapFlagsParams): {
|
|
50
|
+
dexFlag: Flag;
|
|
51
|
+
approveFlag: Flag;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Executor02 Flags:
|
|
55
|
+
* switch (flag % 4):
|
|
56
|
+
* case 0: don't instert fromAmount
|
|
57
|
+
* case 1: sendEth equal to fromAmount
|
|
58
|
+
* case 2: sendEth equal to fromAmount + insert fromAmount
|
|
59
|
+
* case 3: insert fromAmount
|
|
60
|
+
|
|
61
|
+
* switch (flag % 3):
|
|
62
|
+
* case 0: don't check balance after swap
|
|
63
|
+
* case 1: check eth balance after swap
|
|
64
|
+
* case 2: check destToken balance after swap
|
|
65
|
+
*/
|
|
66
|
+
protected buildMultiMegaSwapFlags(params: BuildSwapFlagsParams): {
|
|
67
|
+
dexFlag: Flag;
|
|
68
|
+
approveFlag: Flag;
|
|
69
|
+
};
|
|
70
|
+
protected buildDexCallData(params: DexCallDataParams<MultiRouteExecutor02DexCallDataParams>): string;
|
|
71
|
+
private wrapAsVerticalBranch;
|
|
72
|
+
private packVerticalBranchingData;
|
|
73
|
+
private packVerticalBranchingCallData;
|
|
74
|
+
private buildVerticalBranchingCallData;
|
|
75
|
+
private buildVerticalBranchingCallDataNoEthDest;
|
|
76
|
+
private buildSingleSwapExchangeCallData;
|
|
77
|
+
private appendWrapEthCallData;
|
|
78
|
+
private eachDexOnSwapNeedsWrapNative;
|
|
79
|
+
private anyDexOnSwapNeedsWrapNative;
|
|
80
|
+
private isLastExchangeWithNeedWrapNative;
|
|
81
|
+
private anyDexOnSwapDoesntNeedWrapNative;
|
|
82
|
+
private everyDexOnSwapNeedWrapNative;
|
|
83
|
+
private everyDexOnSwapDoesntNeedWrapNative;
|
|
84
|
+
private doesSwapNeedToBeAsVerticalBranch;
|
|
85
|
+
private buildVerticalBranchingFlag;
|
|
86
|
+
protected buildSingleSwapCallData(params: SingleSwapCallDataParams<Executor02SingleSwapCallDataParams>): string;
|
|
87
|
+
protected buildRouteCallData(route: RouteBuildSwaps, routeIndex: number, flags: {
|
|
88
|
+
approves: Flag[];
|
|
89
|
+
dexes: Flag[];
|
|
90
|
+
wrap: Flag;
|
|
91
|
+
}, sender: string, srcToken: string, destToken: string, priceRouteType: PriceRouteType, rootUnwrapEth: boolean, rootWrapEth: boolean, maybeWethCallData?: DepositWithdrawReturn): string;
|
|
92
|
+
private doesRouteNeedsRootWrapEth;
|
|
93
|
+
private doesRouteNeedsRootUnwrapEth;
|
|
94
|
+
getAddress(): string;
|
|
95
|
+
buildByteCode(priceRoute: OptimalRate, routes: RouteBuildSwaps[], exchangeParams: DexExchangeBuildParam[], sender: string, maybeWethCallData?: DepositWithdrawReturn): string;
|
|
96
|
+
protected buildFlags(routes: OptimalRoute[], buildRoutes: RouteBuildSwaps[], exchangeParams: DexExchangeBuildParam[], srcToken: string, priceRouteType: PriceRouteType, maybeWethCallData?: DepositWithdrawReturn): {
|
|
97
|
+
approves: Flag[];
|
|
98
|
+
dexes: Flag[];
|
|
99
|
+
wrap: Flag;
|
|
100
|
+
};
|
|
101
|
+
}
|