@paraswap/dex-lib 2.45.0 → 2.45.1-core.2.0
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/.idea/aws.xml +17 -0
- package/.idea/codeStyles/Project.xml +19 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/paraswap-dex-lib.iml +9 -0
- package/.idea/prettier.xml +7 -0
- package/.idea/vcs.xml +6 -0
- package/build/abi/AugustusV6.abi.json +395 -0
- package/build/abi/algebra/AlgebraPool.abi.json +724 -724
- package/build/abi/curve-v1/StableSwapFRXETH.json +889 -0
- package/build/abi/curve-v1/StableSwapWBETH.json +1223 -0
- package/build/abi/sushiswap-v3/QuoterV2.json +267 -0
- package/build/abi/sushiswap-v3/RouterProcessor3.json +289 -0
- package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +191 -191
- package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json +285 -0
- package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3Router.abi.json +583 -0
- package/build/abi/wBETH.json +1527 -0
- package/build/abi/woo-fi/WooFeeManager.abi.json +318 -0
- package/build/abi/woo-fi/WooPP.abi.json +548 -0
- package/build/abi/woo-fi/Wooracle.abi.json +260 -0
- package/build/dex/aave-v3/tokens/arbitrum.json +50 -0
- package/build/dex/aave-v3/tokens/avalanche.json +74 -0
- package/build/dex/aave-v3/tokens/fantom.json +62 -0
- package/build/dex/aave-v3/tokens/optimism.json +50 -0
- package/build/dex/aave-v3/tokens/polygon.json +116 -0
- package/build/dex/algebra/algebra-pool.d.ts +105 -37
- package/build/dex/algebra/algebra-pool.js +434 -322
- package/build/dex/balancer-v2/Gyro3Pool.d.ts +43 -0
- package/build/dex/balancer-v2/Gyro3Pool.js +160 -0
- package/build/dex/balancer-v2/Gyro3Pool.js.map +1 -0
- package/build/dex/balancer-v2/LinearMath.d.ts +88 -0
- package/build/dex/balancer-v2/LinearMath.js +285 -0
- package/build/dex/balancer-v2/LinearMath.js.map +1 -0
- package/build/dex/balancer-v2/LinearPool.d.ts +81 -0
- package/build/dex/balancer-v2/LinearPool.js +444 -0
- package/build/dex/balancer-v2/LinearPool.js.map +1 -0
- package/build/dex/balancer-v2/PhantomStablePool.d.ts +90 -0
- package/build/dex/balancer-v2/PhantomStablePool.js +418 -0
- package/build/dex/balancer-v2/PhantomStablePool.js.map +1 -0
- package/build/dex/balancer-v2/StableMath.d.ts +9 -0
- package/build/dex/balancer-v2/StableMath.js +272 -0
- package/build/dex/balancer-v2/StableMath.js.map +1 -0
- package/build/dex/balancer-v2/balancer-v2-pool.d.ts +140 -0
- package/build/dex/balancer-v2/balancer-v2-pool.js +647 -0
- package/build/dex/balancer-v2/balancer-v2-pool.js.map +1 -0
- package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.d.ts +33 -0
- package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js +128 -0
- package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js.map +1 -0
- package/build/dex/balancer-v2/pools/gyro/GyroEPool.d.ts +34 -0
- package/build/dex/balancer-v2/pools/gyro/GyroEPool.js +151 -0
- package/build/dex/balancer-v2/pools/gyro/GyroEPool.js.map +1 -0
- package/build/dex/curve-v1/pools/frxETHpool.d.ts +7 -0
- package/build/dex/curve-v1/pools/frxETHpool.js +27 -0
- package/build/dex/curve-v1/pools/frxETHpool.js.map +1 -0
- package/build/dex/curve-v1/pools/wbETHpool.d.ts +29 -0
- package/build/dex/curve-v1/pools/wbETHpool.js +408 -0
- package/build/dex/curve-v1/pools/wbETHpool.js.map +1 -0
- package/build/dex/lighter-v1/abi/erc20.json +222 -0
- package/build/dex/lighter-v1/abi/factory.json +291 -0
- package/build/dex/lighter-v1/abi/order_book.json +594 -0
- package/build/dex/lighter-v1/abi/order_book_helper.json +176 -0
- package/build/dex/lighter-v1/abi/router.json +488 -0
- package/build/dex/lighter-v1/config.d.ts +4 -0
- package/build/dex/lighter-v1/config.js +17 -0
- package/build/dex/lighter-v1/config.js.map +1 -0
- package/build/dex/lighter-v1/constants.d.ts +2 -0
- package/build/dex/lighter-v1/constants.js +13 -0
- package/build/dex/lighter-v1/constants.js.map +1 -0
- package/build/dex/lighter-v1/lighter-v1-pool.d.ts +57 -0
- package/build/dex/lighter-v1/lighter-v1-pool.js +310 -0
- package/build/dex/lighter-v1/lighter-v1-pool.js.map +1 -0
- package/build/dex/lighter-v1/lighter-v1.d.ts +45 -0
- package/build/dex/lighter-v1/lighter-v1.js +331 -0
- package/build/dex/lighter-v1/lighter-v1.js.map +1 -0
- package/build/dex/lighter-v1/types.d.ts +40 -0
- package/build/dex/lighter-v1/types.js +3 -0
- package/build/dex/lighter-v1/types.js.map +1 -0
- package/build/dex/pancakeswap-v3/types.d.ts +14 -0
- package/build/dex/pancakeswap-v3/types.js +3 -0
- package/build/dex/pancakeswap-v3/types.js.map +1 -0
- package/build/dex/quickswap-v3.d.ts +21 -0
- package/build/dex/quickswap-v3.js +40 -0
- package/build/dex/quickswap-v3.js.map +1 -0
- package/build/dex/ramses-v2/config.d.ts +4 -0
- package/build/dex/ramses-v2/config.js +28 -0
- package/build/dex/ramses-v2/config.js.map +1 -0
- package/build/dex/ramses-v2/constants.d.ts +28 -0
- package/build/dex/ramses-v2/constants.js +35 -0
- package/build/dex/ramses-v2/constants.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/BitMath.d.ts +4 -0
- package/build/dex/ramses-v2/contract-math/BitMath.js +93 -0
- package/build/dex/ramses-v2/contract-math/BitMath.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/FixedPoint128.d.ts +3 -0
- package/build/dex/ramses-v2/contract-math/FixedPoint128.js +8 -0
- package/build/dex/ramses-v2/contract-math/FixedPoint128.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/FixedPoint96.d.ts +4 -0
- package/build/dex/ramses-v2/contract-math/FixedPoint96.js +9 -0
- package/build/dex/ramses-v2/contract-math/FixedPoint96.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/FullMath.d.ts +4 -0
- package/build/dex/ramses-v2/contract-math/FullMath.js +19 -0
- package/build/dex/ramses-v2/contract-math/FullMath.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/LiquidityMath.d.ts +3 -0
- package/build/dex/ramses-v2/contract-math/LiquidityMath.js +22 -0
- package/build/dex/ramses-v2/contract-math/LiquidityMath.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/Oracle.d.ts +10 -0
- package/build/dex/ramses-v2/contract-math/Oracle.js +133 -0
- package/build/dex/ramses-v2/contract-math/Oracle.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.d.ts +10 -0
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js +91 -0
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/SwapMath.d.ts +8 -0
- package/build/dex/ramses-v2/contract-math/SwapMath.js +70 -0
- package/build/dex/ramses-v2/contract-math/SwapMath.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/Tick.d.ts +7 -0
- package/build/dex/ramses-v2/contract-math/Tick.js +45 -0
- package/build/dex/ramses-v2/contract-math/Tick.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/TickBitMap.d.ts +8 -0
- package/build/dex/ramses-v2/contract-math/TickBitMap.js +87 -0
- package/build/dex/ramses-v2/contract-math/TickBitMap.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/TickMath.d.ts +8 -0
- package/build/dex/ramses-v2/contract-math/TickMath.js +162 -0
- package/build/dex/ramses-v2/contract-math/TickMath.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/UnsafeMath.d.ts +3 -0
- package/build/dex/ramses-v2/contract-math/UnsafeMath.js +10 -0
- package/build/dex/ramses-v2/contract-math/UnsafeMath.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.d.ts +18 -0
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js +392 -0
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js.map +1 -0
- package/build/dex/ramses-v2/contract-math/utils.d.ts +3 -0
- package/build/dex/ramses-v2/contract-math/utils.js +16 -0
- package/build/dex/ramses-v2/contract-math/utils.js.map +1 -0
- package/build/dex/ramses-v2/ramses-v2-pool.d.ts +42 -0
- package/build/dex/ramses-v2/ramses-v2-pool.js +307 -0
- package/build/dex/ramses-v2/ramses-v2-pool.js.map +1 -0
- package/build/dex/ramses-v2/ramses-v2.d.ts +61 -0
- package/build/dex/ramses-v2/ramses-v2.js +690 -0
- package/build/dex/ramses-v2/ramses-v2.js.map +1 -0
- package/build/dex/ramses-v2/types.d.ts +154 -0
- package/build/dex/ramses-v2/types.js +9 -0
- package/build/dex/ramses-v2/types.js.map +1 -0
- package/build/dex/ramses-v2/utils.d.ts +6 -0
- package/build/dex/ramses-v2/utils.js +71 -0
- package/build/dex/ramses-v2/utils.js.map +1 -0
- package/build/dex/solidly/forks-override/fvm.d.ts +20 -0
- package/build/dex/solidly/forks-override/fvm.js +42 -0
- package/build/dex/solidly/forks-override/fvm.js.map +1 -0
- package/build/dex/sushiswap-v3/config.d.ts +4 -0
- package/build/dex/sushiswap-v3/config.js +132 -0
- package/build/dex/sushiswap-v3/config.js.map +1 -0
- package/build/dex/sushiswap-v3/constants.d.ts +4 -0
- package/build/dex/sushiswap-v3/constants.js +32 -0
- package/build/dex/sushiswap-v3/constants.js.map +1 -0
- package/build/dex/sushiswap-v3/sushiswap-v3-original.d.ts +56 -0
- package/build/dex/sushiswap-v3/sushiswap-v3-original.js +598 -0
- package/build/dex/sushiswap-v3/sushiswap-v3-original.js.map +1 -0
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.d.ts +1 -0
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.js +6 -0
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.js.map +1 -0
- package/build/dex/sushiswap-v3/sushiswap-v3.d.ts +21 -0
- package/build/dex/sushiswap-v3/sushiswap-v3.js +58 -0
- package/build/dex/sushiswap-v3/sushiswap-v3.js.map +1 -0
- package/build/dex/sushiswap-v3/token.d.ts +6 -0
- package/build/dex/sushiswap-v3/token.js +23 -0
- package/build/dex/sushiswap-v3/token.js.map +1 -0
- package/build/dex/sushiswap-v3/types.d.ts +15 -0
- package/build/dex/sushiswap-v3/types.js +18 -0
- package/build/dex/sushiswap-v3/types.js.map +1 -0
- package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.d.ts +12 -0
- package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js +23 -0
- package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js.map +1 -0
- package/build/dex/woo-fi/config.d.ts +4 -0
- package/build/dex/woo-fi/config.js +141 -0
- package/build/dex/woo-fi/config.js.map +1 -0
- package/build/dex/woo-fi/constants.d.ts +5 -0
- package/build/dex/woo-fi/constants.js +20 -0
- package/build/dex/woo-fi/constants.js.map +1 -0
- package/build/dex/woo-fi/types.d.ts +48 -0
- package/build/dex/woo-fi/types.js +3 -0
- package/build/dex/woo-fi/types.js.map +1 -0
- package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +14 -0
- package/build/dex/woo-fi/woo-fi-decimal-math.js +42 -0
- package/build/dex/woo-fi/woo-fi-decimal-math.js.map +1 -0
- package/build/dex/woo-fi/woo-fi-math.d.ts +31 -0
- package/build/dex/woo-fi/woo-fi-math.js +300 -0
- package/build/dex/woo-fi/woo-fi-math.js.map +1 -0
- package/build/dex/woo-fi/woo-fi.d.ts +65 -0
- package/build/dex/woo-fi/woo-fi.js +480 -0
- package/build/dex/woo-fi/woo-fi.js.map +1 -0
- package/build/executor/Executor01BytecodeBuilder.d.ts +77 -0
- package/build/executor/Executor01BytecodeBuilder.js +359 -0
- package/build/executor/Executor01BytecodeBuilder.js.map +1 -0
- package/build/executor/Executor02BytecodeBuilder.d.ts +12 -0
- package/build/executor/Executor02BytecodeBuilder.js +14 -0
- package/build/executor/Executor02BytecodeBuilder.js.map +1 -0
- package/build/executor/ExecutorDetector.d.ts +28 -0
- package/build/executor/ExecutorDetector.js +89 -0
- package/build/executor/ExecutorDetector.js.map +1 -0
- package/build/executor/IExecutorBytecodeBuilder.d.ts +6 -0
- package/build/executor/IExecutorBytecodeBuilder.js +3 -0
- package/build/executor/IExecutorBytecodeBuilder.js.map +1 -0
- package/build/generic-swap-transaction-builder.d.ts +39 -0
- package/build/generic-swap-transaction-builder.js +156 -0
- package/build/generic-swap-transaction-builder.js.map +1 -0
- package/build/implementations/local-paraswap-sdk.js +2 -0
- package/build/implementations/local-paraswap-sdk.js.map +1 -1
- package/package.json +2 -2
- package/src/implementations/local-paraswap-sdk.ts +2 -0
- package/build/abi/wombat/pool.json +0 -1289
- package/build/dex/uniswap-v2/rebase-tokens.json +0 -7
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Executor01BytecodeBuilder = void 0;
|
|
7
|
+
const ethers_1 = require("ethers");
|
|
8
|
+
const utils_1 = require("../utils");
|
|
9
|
+
const erc20_json_1 = __importDefault(require("../abi/erc20.json"));
|
|
10
|
+
const abi_1 = require("@ethersproject/abi");
|
|
11
|
+
const { utils: { hexlify, hexDataLength, hexConcat, hexZeroPad, solidityPack }, } = ethers_1.ethers;
|
|
12
|
+
const EXECUTOR_01_FUNCTION_CALL_DATA_TYPES = [
|
|
13
|
+
'bytes20',
|
|
14
|
+
'bytes4',
|
|
15
|
+
'bytes2',
|
|
16
|
+
'bytes2',
|
|
17
|
+
'bytes2',
|
|
18
|
+
'bytes2',
|
|
19
|
+
'bytes28',
|
|
20
|
+
'bytes', // dex calldata (bytes)
|
|
21
|
+
];
|
|
22
|
+
const APPROVE_CALLDATA_DEST_TOKEN_POS = 68;
|
|
23
|
+
const WRAP_UNWRAP_FROM_AMOUNT_POS = 4;
|
|
24
|
+
const BYTES_28_LENGTH = 28;
|
|
25
|
+
const BYTES_64_LENGTH = 64;
|
|
26
|
+
const ZEROS_12_BYTES = hexZeroPad(hexlify(0), 12);
|
|
27
|
+
const ZEROS_28_BYTES = hexZeroPad(hexlify(0), 28);
|
|
28
|
+
const ZEROS_32_BYTES = hexZeroPad(hexlify(0), 32);
|
|
29
|
+
var SpecialDex;
|
|
30
|
+
(function (SpecialDex) {
|
|
31
|
+
SpecialDex[SpecialDex["DEFAULT"] = 0] = "DEFAULT";
|
|
32
|
+
// SWAP_ON_BALANCER_V2 = 1, // swapOnBalancerV2
|
|
33
|
+
// SWAP_ON_MAKER_PSM = 2, // swapOnMakerPSM
|
|
34
|
+
// SWAP_ON_SWAAP_V2 = 3, // swapOnSwaapV2
|
|
35
|
+
SpecialDex[SpecialDex["SEND_NATIVE"] = 4] = "SEND_NATIVE";
|
|
36
|
+
})(SpecialDex || (SpecialDex = {}));
|
|
37
|
+
var Flag;
|
|
38
|
+
(function (Flag) {
|
|
39
|
+
Flag[Flag["FIFTEEN"] = 15] = "FIFTEEN";
|
|
40
|
+
Flag[Flag["ELEVEN"] = 11] = "ELEVEN";
|
|
41
|
+
Flag[Flag["NINE"] = 9] = "NINE";
|
|
42
|
+
Flag[Flag["EIGHT"] = 8] = "EIGHT";
|
|
43
|
+
Flag[Flag["SEVEN"] = 7] = "SEVEN";
|
|
44
|
+
Flag[Flag["FIVE"] = 5] = "FIVE";
|
|
45
|
+
Flag[Flag["FOUR"] = 4] = "FOUR";
|
|
46
|
+
Flag[Flag["THREE"] = 3] = "THREE";
|
|
47
|
+
Flag[Flag["ZERO"] = 0] = "ZERO";
|
|
48
|
+
})(Flag || (Flag = {}));
|
|
49
|
+
/**
|
|
50
|
+
* Class to build bytecode for Executor01 (simpleSwap + multiSwap with 100% amounts on each path)
|
|
51
|
+
*/
|
|
52
|
+
class Executor01BytecodeBuilder {
|
|
53
|
+
constructor(dexHelper) {
|
|
54
|
+
this.dexHelper = dexHelper;
|
|
55
|
+
this.erc20Interface = new abi_1.Interface(erc20_json_1.default);
|
|
56
|
+
}
|
|
57
|
+
buildDexCallData(swap, exchangeParam, flag) {
|
|
58
|
+
const dontCheckBalanceAfterSwap = flag % 3 === 0;
|
|
59
|
+
const checkDestTokenBalanceAfterSwap = flag % 3 === 2;
|
|
60
|
+
const insertFromAmount = flag % 4 === 3;
|
|
61
|
+
let { exchangeData } = exchangeParam;
|
|
62
|
+
let destTokenPos = 0;
|
|
63
|
+
if (checkDestTokenBalanceAfterSwap && !dontCheckBalanceAfterSwap) {
|
|
64
|
+
const destTokenAddr = (0, utils_1.isETHAddress)(swap.destToken)
|
|
65
|
+
? this.dexHelper.config.data.wrappedNativeTokenAddress.toLowerCase()
|
|
66
|
+
: swap.destToken.toLowerCase();
|
|
67
|
+
if (!exchangeParam.dexFuncHasDestToken) {
|
|
68
|
+
exchangeData = hexConcat([exchangeData, ZEROS_28_BYTES, destTokenAddr]);
|
|
69
|
+
}
|
|
70
|
+
const destTokenAddrIndex = exchangeData
|
|
71
|
+
.replace('0x', '')
|
|
72
|
+
.indexOf(destTokenAddr.replace('0x', ''));
|
|
73
|
+
destTokenPos = (destTokenAddrIndex - 24) / 2;
|
|
74
|
+
}
|
|
75
|
+
let fromAmountPos = 0;
|
|
76
|
+
if (insertFromAmount) {
|
|
77
|
+
const fromAmount = ethers_1.ethers.utils.defaultAbiCoder.encode(['uint256'], [swap.swapExchanges[0].srcAmount]);
|
|
78
|
+
const fromAmountIndex = exchangeData
|
|
79
|
+
.replace('0x', '')
|
|
80
|
+
.indexOf(fromAmount.replace('0x', ''));
|
|
81
|
+
fromAmountPos = fromAmountIndex / 2;
|
|
82
|
+
}
|
|
83
|
+
return solidityPack(EXECUTOR_01_FUNCTION_CALL_DATA_TYPES, [
|
|
84
|
+
exchangeParam.targetExchange,
|
|
85
|
+
hexZeroPad(hexlify(hexDataLength(exchangeData) + BYTES_28_LENGTH), 4),
|
|
86
|
+
hexZeroPad(hexlify(fromAmountPos), 2),
|
|
87
|
+
hexZeroPad(hexlify(destTokenPos), 2),
|
|
88
|
+
hexZeroPad(hexlify(SpecialDex.DEFAULT), 2),
|
|
89
|
+
hexZeroPad(hexlify(flag), 2),
|
|
90
|
+
ZEROS_28_BYTES,
|
|
91
|
+
exchangeData, // dex calldata
|
|
92
|
+
]);
|
|
93
|
+
}
|
|
94
|
+
buildApproveCallData(approveCalldata, tokenAddr, amount, flag) {
|
|
95
|
+
const insertFromAmount = flag % 4 === 3;
|
|
96
|
+
const checkSrcTokenBalance = flag % 3 === 2;
|
|
97
|
+
let fromAmountPos = 0;
|
|
98
|
+
if (insertFromAmount) {
|
|
99
|
+
const fromAmount = ethers_1.ethers.utils.defaultAbiCoder.encode(['uint256'], [amount]);
|
|
100
|
+
const fromAmountIndex = approveCalldata
|
|
101
|
+
.replace('0x', '')
|
|
102
|
+
.indexOf(fromAmount.replace('0x', ''));
|
|
103
|
+
fromAmountPos = fromAmountIndex / 2;
|
|
104
|
+
}
|
|
105
|
+
if (checkSrcTokenBalance) {
|
|
106
|
+
approveCalldata = hexConcat([approveCalldata, ZEROS_12_BYTES, tokenAddr]);
|
|
107
|
+
}
|
|
108
|
+
return solidityPack(EXECUTOR_01_FUNCTION_CALL_DATA_TYPES, [
|
|
109
|
+
tokenAddr,
|
|
110
|
+
hexZeroPad(hexlify(hexDataLength(approveCalldata) + BYTES_28_LENGTH), 4),
|
|
111
|
+
hexZeroPad(hexlify(fromAmountPos), 2),
|
|
112
|
+
hexZeroPad(hexlify(APPROVE_CALLDATA_DEST_TOKEN_POS), 2),
|
|
113
|
+
hexZeroPad(hexlify(SpecialDex.DEFAULT), 2),
|
|
114
|
+
hexZeroPad(hexlify(flag), 2),
|
|
115
|
+
ZEROS_28_BYTES,
|
|
116
|
+
approveCalldata, // approve calldata
|
|
117
|
+
]);
|
|
118
|
+
}
|
|
119
|
+
buildWrapEthCallData(depositCallData, flag) {
|
|
120
|
+
return solidityPack(EXECUTOR_01_FUNCTION_CALL_DATA_TYPES, [
|
|
121
|
+
this.dexHelper.config.data.wrappedNativeTokenAddress,
|
|
122
|
+
hexZeroPad(hexlify(hexDataLength(depositCallData) + BYTES_28_LENGTH), 4),
|
|
123
|
+
hexZeroPad(hexlify(WRAP_UNWRAP_FROM_AMOUNT_POS), 2),
|
|
124
|
+
hexZeroPad(hexlify(0), 2),
|
|
125
|
+
hexZeroPad(hexlify(SpecialDex.DEFAULT), 2),
|
|
126
|
+
hexZeroPad(hexlify(flag), 2),
|
|
127
|
+
ZEROS_28_BYTES,
|
|
128
|
+
depositCallData, // wrap calldata
|
|
129
|
+
]);
|
|
130
|
+
}
|
|
131
|
+
buildUnwrapEthCallData(withdrawCallData) {
|
|
132
|
+
return solidityPack(EXECUTOR_01_FUNCTION_CALL_DATA_TYPES, [
|
|
133
|
+
this.dexHelper.config.data.wrappedNativeTokenAddress,
|
|
134
|
+
hexZeroPad(hexlify(hexDataLength(withdrawCallData) + BYTES_28_LENGTH), 4),
|
|
135
|
+
hexZeroPad(hexlify(WRAP_UNWRAP_FROM_AMOUNT_POS), 2),
|
|
136
|
+
hexZeroPad(hexlify(0), 2),
|
|
137
|
+
hexZeroPad(hexlify(SpecialDex.DEFAULT), 2),
|
|
138
|
+
hexZeroPad(hexlify(Flag.SEVEN), 2),
|
|
139
|
+
ZEROS_28_BYTES,
|
|
140
|
+
withdrawCallData, // unwrap calldata
|
|
141
|
+
]);
|
|
142
|
+
}
|
|
143
|
+
buildTransferCallData(transferCallData, tokenAddr) {
|
|
144
|
+
return solidityPack(EXECUTOR_01_FUNCTION_CALL_DATA_TYPES, [
|
|
145
|
+
tokenAddr,
|
|
146
|
+
hexZeroPad(hexlify(hexDataLength(transferCallData) + BYTES_28_LENGTH), 4),
|
|
147
|
+
hexZeroPad(hexlify(36), 2),
|
|
148
|
+
hexZeroPad(hexlify(0), 2),
|
|
149
|
+
hexZeroPad(hexlify(SpecialDex.DEFAULT), 2),
|
|
150
|
+
hexZeroPad(hexlify(Flag.THREE), 2),
|
|
151
|
+
ZEROS_28_BYTES,
|
|
152
|
+
transferCallData, // unwrap calldata
|
|
153
|
+
]);
|
|
154
|
+
}
|
|
155
|
+
buildFinalSpecialFlagCalldata() {
|
|
156
|
+
return solidityPack(['bytes20', 'bytes4', 'bytes2', 'bytes2', 'bytes2', 'bytes2', 'bytes32'], [
|
|
157
|
+
this.dexHelper.config.data.augustusV6Address,
|
|
158
|
+
hexZeroPad(hexlify(28 + 4), 4),
|
|
159
|
+
hexZeroPad(hexlify(0), 2),
|
|
160
|
+
hexZeroPad(hexlify(0), 2),
|
|
161
|
+
hexZeroPad(hexlify(SpecialDex.SEND_NATIVE), 2),
|
|
162
|
+
hexZeroPad(hexlify(9), 2),
|
|
163
|
+
ZEROS_32_BYTES, // bytes28(0) + bytes4(0)
|
|
164
|
+
]);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Executor01 Flags:
|
|
168
|
+
* switch (flag % 4):
|
|
169
|
+
* case 0: don't instert fromAmount
|
|
170
|
+
* case 1: sendEth equal to fromAmount
|
|
171
|
+
* case 2: sendEth equal to fromAmount + insert fromAmount
|
|
172
|
+
* case 3: insert fromAmount
|
|
173
|
+
|
|
174
|
+
* switch (flag % 3):
|
|
175
|
+
* case 0: don't check balance after swap
|
|
176
|
+
* case 1: check eth balance after swap
|
|
177
|
+
* case 2: check desTtoken balance after swap
|
|
178
|
+
*/
|
|
179
|
+
buildSimpleSwapFlags(priceRoute, exchangeParam, index, maybeWethCallData) {
|
|
180
|
+
const { srcToken, destToken } = priceRoute.bestRoute[0].swaps[index];
|
|
181
|
+
const isEthSrc = (0, utils_1.isETHAddress)(srcToken);
|
|
182
|
+
const isEthDest = (0, utils_1.isETHAddress)(destToken);
|
|
183
|
+
const { dexFuncHasRecipient, needWrapNative } = exchangeParam;
|
|
184
|
+
const needWrap = needWrapNative && isEthSrc && maybeWethCallData?.deposit;
|
|
185
|
+
const needUnwrap = needWrapNative && isEthDest && maybeWethCallData?.withdraw;
|
|
186
|
+
let dexFlag = Flag.ZERO; // (flag 0 mod 4) = case 0: don't insert fromAmount, (flag 0 mod 3) = case 0: don't check balance after swap
|
|
187
|
+
let approveFlag = Flag.ZERO; // (flag 0 mod 4) = case 0: don't insert fromAmount, (flag 0 mod 3) = case 0: don't check balance after swap
|
|
188
|
+
if (isEthSrc && !needWrap) {
|
|
189
|
+
dexFlag = Flag.FIVE; // (flag 5 mod 4) = case 1: sendEth equal to fromAmount, (flag 5 mod 3) = case 2: check "srcToken" balance after swap
|
|
190
|
+
}
|
|
191
|
+
else if (isEthDest && !needUnwrap) {
|
|
192
|
+
dexFlag = Flag.FOUR; // (flag 4 mod 4) = case 0: don't insert fromAmount, (flag 4 mod 3) = case 1: check eth balance after swap
|
|
193
|
+
}
|
|
194
|
+
else if (!dexFuncHasRecipient || (isEthDest && needUnwrap)) {
|
|
195
|
+
dexFlag = Flag.EIGHT; // (flag 8 mod 4) = case 0: don't insert fromAmount, (flag 8 mod 3) = case 2: check "srcToken" balance after swap
|
|
196
|
+
}
|
|
197
|
+
return {
|
|
198
|
+
dexFlag,
|
|
199
|
+
approveFlag,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Executor01 Flags:
|
|
204
|
+
* switch (flag % 4):
|
|
205
|
+
* case 0: don't instert fromAmount
|
|
206
|
+
* case 1: sendEth equal to fromAmount
|
|
207
|
+
* case 2: sendEth equal to fromAmount + insert fromAmount
|
|
208
|
+
* case 3: insert fromAmount
|
|
209
|
+
|
|
210
|
+
* switch (flag % 3):
|
|
211
|
+
* case 0: don't check balance after swap
|
|
212
|
+
* case 1: check eth balance after swap
|
|
213
|
+
* case 2: check desTtoken balance after swap
|
|
214
|
+
*/
|
|
215
|
+
buildMultiSwapFlags(priceRoute, exchangeParam, index, maybeWethCallData) {
|
|
216
|
+
const swap = priceRoute.bestRoute[0].swaps[index];
|
|
217
|
+
const { srcToken, destToken } = swap;
|
|
218
|
+
const isFirstSwap = index === 0;
|
|
219
|
+
const { dexFuncHasRecipient, needWrapNative } = exchangeParam;
|
|
220
|
+
const isEthSrc = (0, utils_1.isETHAddress)(srcToken);
|
|
221
|
+
const isEthDest = (0, utils_1.isETHAddress)(destToken);
|
|
222
|
+
const needWrap = needWrapNative && isEthSrc && maybeWethCallData?.deposit;
|
|
223
|
+
const needUnwrap = needWrapNative && isEthDest && maybeWethCallData?.withdraw;
|
|
224
|
+
let dexFlag = Flag.ZERO; // (flag 0 mod 4) = case 0: don't insert fromAmount, (flag 0 mod 3) = case 0: don't check balance after swap
|
|
225
|
+
let approveFlag = Flag.ZERO; // (flag 0 mod 4) = case 0: don't insert fromAmount, (flag 0 mod 3) = case 0: don't check balance after swap
|
|
226
|
+
if (isFirstSwap) {
|
|
227
|
+
if (isEthSrc && !needWrap) {
|
|
228
|
+
dexFlag = Flag.FIVE; // (flag 5 mod 4) = case 1: sendEth equal to fromAmount, (flag 5 mod 3) = case 2: check "srcToken" balance after swap
|
|
229
|
+
}
|
|
230
|
+
else if (isEthSrc && needWrap) {
|
|
231
|
+
dexFlag = Flag.ZERO; // (flag 0 mod 4) = case 0: don't insert fromAmount, (flag 0 mod 3) = case 0: don't check balance after swap
|
|
232
|
+
approveFlag = Flag.ZERO;
|
|
233
|
+
}
|
|
234
|
+
else if (!isEthSrc && !isEthDest) {
|
|
235
|
+
dexFlag = Flag.EIGHT; // (flag 8 mod 4) = case 0: don't insert fromAmount, (flag 8 mod 3) = case 2: check "srcToken" balance after swap
|
|
236
|
+
}
|
|
237
|
+
else if (isEthDest && needUnwrap) {
|
|
238
|
+
dexFlag = Flag.EIGHT; // (flag 8 mod 4) = case 0: don't insert fromAmount, (flag 8 mod 3) = case 2: check "srcToken" balance after swap
|
|
239
|
+
approveFlag = Flag.EIGHT; // (flag 8 mod 4) = case 0: don't insert fromAmount, (flag 8 mod 3) = case 2: check "srcToken" balance after swap
|
|
240
|
+
}
|
|
241
|
+
else if (isEthDest && !needUnwrap) {
|
|
242
|
+
dexFlag = Flag.FOUR; // (flag 4 mod 4) = case 0: don't insert fromAmount, (flag 4 mod 3) = case 1: check eth balance after swap
|
|
243
|
+
}
|
|
244
|
+
else if (!dexFuncHasRecipient) {
|
|
245
|
+
dexFlag = Flag.EIGHT; // (flag 8 mod 4) = case 0: don't insert fromAmount, (flag 8 mod 3) = case 2: check "srcToken" balance after swap
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
if (isEthSrc && !needWrap) {
|
|
250
|
+
dexFlag = Flag.FIVE; // (flag 5 mod 4) = case 1: sendEth equal to fromAmount, (flag 5 mod 3) = case 2: check "srcToken" balance after swap
|
|
251
|
+
}
|
|
252
|
+
else if (isEthSrc && needWrap) {
|
|
253
|
+
dexFlag = Flag.FIFTEEN; // (flag 15 mod 4) = case 3: insert fromAmount, (flag 15 mod 3) = case 0: don't check balance after swap
|
|
254
|
+
approveFlag = Flag.FIFTEEN; // (flag 15 mod 4) = case 3: insert fromAmount, (flag 15 mod 3) = case 0: don't check balance after swap
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
dexFlag = Flag.ELEVEN; // (flag 11 mod 4) = case 3: insert fromAmount, (flag 11 mod 3) = case 2: check "srcToken" balance after swap
|
|
258
|
+
approveFlag = Flag.ELEVEN; // (flag 11 mod 4) = case 3: insert fromAmount, (flag 11 mod 3) = case 2: check "srcToken" balance after swap
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return {
|
|
262
|
+
dexFlag,
|
|
263
|
+
approveFlag,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
buildFlags(priceRoute, exchangeDataList, maybeWethCallData) {
|
|
267
|
+
const isMultiSwap = priceRoute.bestRoute[0].swaps.length > 1;
|
|
268
|
+
const buildFlagsMethod = isMultiSwap
|
|
269
|
+
? this.buildMultiSwapFlags.bind(this)
|
|
270
|
+
: this.buildSimpleSwapFlags.bind(this);
|
|
271
|
+
const flags = exchangeDataList.reduce((acc, exchangeParam, index) => {
|
|
272
|
+
const { dexFlag, approveFlag } = buildFlagsMethod(priceRoute, exchangeParam, index, maybeWethCallData);
|
|
273
|
+
acc.dexes.push(dexFlag);
|
|
274
|
+
acc.approves.push(approveFlag);
|
|
275
|
+
return acc;
|
|
276
|
+
}, { dexes: [], approves: [] });
|
|
277
|
+
return {
|
|
278
|
+
...flags,
|
|
279
|
+
wrap: (0, utils_1.isETHAddress)(priceRoute.srcToken) && maybeWethCallData?.deposit
|
|
280
|
+
? Flag.NINE
|
|
281
|
+
: Flag.SEVEN,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
buildSingleSwapCallData(priceRoute, exchangeParams, index, flags, maybeWethCallData) {
|
|
285
|
+
let swapCallData = '';
|
|
286
|
+
const swap = priceRoute.bestRoute[0].swaps[index];
|
|
287
|
+
const curExchangeParam = exchangeParams[index];
|
|
288
|
+
const srcAmount = swap.swapExchanges[0].srcAmount;
|
|
289
|
+
const dexCallData = this.buildDexCallData(swap, curExchangeParam, flags.dexes[index]);
|
|
290
|
+
swapCallData = hexConcat([dexCallData]);
|
|
291
|
+
if (!(0, utils_1.isETHAddress)(swap.srcToken) ||
|
|
292
|
+
((0, utils_1.isETHAddress)(swap.srcToken) && index !== 0)) {
|
|
293
|
+
const approve = this.erc20Interface.encodeFunctionData('approve', [
|
|
294
|
+
curExchangeParam.targetExchange,
|
|
295
|
+
srcAmount,
|
|
296
|
+
]);
|
|
297
|
+
const approveCallData = this.buildApproveCallData(approve, (0, utils_1.isETHAddress)(swap.srcToken) && index !== 0
|
|
298
|
+
? this.dexHelper.config.data.wrappedNativeTokenAddress
|
|
299
|
+
: swap.srcToken, srcAmount, flags.approves[index]);
|
|
300
|
+
swapCallData = hexConcat([approveCallData, swapCallData]);
|
|
301
|
+
}
|
|
302
|
+
if (curExchangeParam.needWrapNative && maybeWethCallData) {
|
|
303
|
+
if (maybeWethCallData.deposit && (0, utils_1.isETHAddress)(swap.srcToken)) {
|
|
304
|
+
const prevExchangeParam = exchangeParams[index - 1];
|
|
305
|
+
if (!prevExchangeParam ||
|
|
306
|
+
(prevExchangeParam && !prevExchangeParam.needWrapNative)) {
|
|
307
|
+
const approveWethCalldata = this.buildApproveCallData(this.erc20Interface.encodeFunctionData('approve', [
|
|
308
|
+
curExchangeParam.targetExchange,
|
|
309
|
+
swap.swapExchanges[0].srcAmount,
|
|
310
|
+
]), this.dexHelper.config.data.wrappedNativeTokenAddress, srcAmount, flags.approves[index]);
|
|
311
|
+
const depositCallData = this.buildWrapEthCallData(maybeWethCallData.deposit.calldata, Flag.NINE);
|
|
312
|
+
swapCallData = hexConcat([
|
|
313
|
+
approveWethCalldata,
|
|
314
|
+
depositCallData,
|
|
315
|
+
swapCallData,
|
|
316
|
+
]);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
if (maybeWethCallData.withdraw && (0, utils_1.isETHAddress)(priceRoute.destToken)) {
|
|
320
|
+
const nextExchangeParam = exchangeParams[index + 1];
|
|
321
|
+
if (!nextExchangeParam ||
|
|
322
|
+
(nextExchangeParam && !nextExchangeParam.needWrapNative)) {
|
|
323
|
+
const withdrawCallData = this.buildUnwrapEthCallData(maybeWethCallData.withdraw.calldata);
|
|
324
|
+
swapCallData = hexConcat([swapCallData, withdrawCallData]);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return swapCallData;
|
|
329
|
+
}
|
|
330
|
+
buildByteCode(priceRoute, exchangeDataList, maybeWethCallData) {
|
|
331
|
+
const flags = this.buildFlags(priceRoute, exchangeDataList, maybeWethCallData);
|
|
332
|
+
let swapsCalldata = exchangeDataList.reduce((acc, exchangeParams, index) => hexConcat([
|
|
333
|
+
acc,
|
|
334
|
+
this.buildSingleSwapCallData(priceRoute, exchangeDataList, index, flags, maybeWethCallData),
|
|
335
|
+
]), '0x');
|
|
336
|
+
if (!exchangeDataList[exchangeDataList.length - 1].dexFuncHasRecipient &&
|
|
337
|
+
!(0, utils_1.isETHAddress)(priceRoute.destToken)) {
|
|
338
|
+
const transferCallData = this.buildTransferCallData(this.erc20Interface.encodeFunctionData('transfer', [
|
|
339
|
+
this.dexHelper.config.data.augustusV6Address,
|
|
340
|
+
priceRoute.destAmount,
|
|
341
|
+
]), priceRoute.destToken);
|
|
342
|
+
swapsCalldata = hexConcat([swapsCalldata, transferCallData]);
|
|
343
|
+
}
|
|
344
|
+
if ((maybeWethCallData?.withdraw && (0, utils_1.isETHAddress)(priceRoute.destToken)) ||
|
|
345
|
+
(!exchangeDataList[exchangeDataList.length - 1].dexFuncHasRecipient &&
|
|
346
|
+
(0, utils_1.isETHAddress)(priceRoute.destToken))) {
|
|
347
|
+
const finalSpecialFlagCalldata = this.buildFinalSpecialFlagCalldata();
|
|
348
|
+
swapsCalldata = hexConcat([swapsCalldata, finalSpecialFlagCalldata]);
|
|
349
|
+
}
|
|
350
|
+
return solidityPack(['bytes32', 'bytes', 'bytes'], [
|
|
351
|
+
hexZeroPad(hexlify(32), 32),
|
|
352
|
+
hexZeroPad(hexlify(hexDataLength(swapsCalldata) + BYTES_64_LENGTH), // 64 bytes = bytes12(0) + msg.sender
|
|
353
|
+
32),
|
|
354
|
+
swapsCalldata,
|
|
355
|
+
]);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
exports.Executor01BytecodeBuilder = Executor01BytecodeBuilder;
|
|
359
|
+
//# sourceMappingURL=Executor01BytecodeBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Executor01BytecodeBuilder.js","sourceRoot":"","sources":["../../src/executor/Executor01BytecodeBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IExecutorBytecodeBuilder } from './IExecutorBytecodeBuilder';
|
|
2
|
+
import { OptimalRate } from '@paraswap/core';
|
|
3
|
+
import { DexExchangeParam } from '../types';
|
|
4
|
+
import { DepositWithdrawReturn } from '../dex/weth/types';
|
|
5
|
+
import { IDexHelper } from '../dex-helper';
|
|
6
|
+
/**
|
|
7
|
+
* Future class to build bytecode for Executor02
|
|
8
|
+
*/
|
|
9
|
+
export declare class Executor02BytecodeBuilder implements IExecutorBytecodeBuilder {
|
|
10
|
+
constructor(dexHelper: IDexHelper);
|
|
11
|
+
buildByteCode(priceRoute: OptimalRate, exchangeDataList: DexExchangeParam[], maybeWethCallData?: DepositWithdrawReturn): string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Executor02BytecodeBuilder = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Future class to build bytecode for Executor02
|
|
6
|
+
*/
|
|
7
|
+
class Executor02BytecodeBuilder {
|
|
8
|
+
constructor(dexHelper) { }
|
|
9
|
+
buildByteCode(priceRoute, exchangeDataList, maybeWethCallData) {
|
|
10
|
+
return '';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.Executor02BytecodeBuilder = Executor02BytecodeBuilder;
|
|
14
|
+
//# sourceMappingURL=Executor02BytecodeBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Executor02BytecodeBuilder.js","sourceRoot":"","sources":["../../src/executor/Executor02BytecodeBuilder.ts"],"names":[],"mappings":";;;AAMA;;GAEG;AACH,MAAa,yBAAyB;IACpC,YAAY,SAAqB,IAAG,CAAC;IAErC,aAAa,CACX,UAAuB,EACvB,gBAAoC,EACpC,iBAAyC;QAEzC,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAVD,8DAUC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { IDexHelper } from '../dex-helper';
|
|
2
|
+
import { Address, OptimalRate } from '@paraswap/core';
|
|
3
|
+
import { IExecutorBytecodeBuilder } from './IExecutorBytecodeBuilder';
|
|
4
|
+
export declare enum Executors {
|
|
5
|
+
ONE = "Executor01"
|
|
6
|
+
}
|
|
7
|
+
declare enum RouteExecutionType {
|
|
8
|
+
SINGLE_STEP = 0,
|
|
9
|
+
HORIZONTAL_SEQUENCE = 1
|
|
10
|
+
}
|
|
11
|
+
export declare class ExecutorDetector {
|
|
12
|
+
protected dexHelper: IDexHelper;
|
|
13
|
+
private executor01BytecodeBuilder;
|
|
14
|
+
protected routeExecutionTypeToExecutorMap: {
|
|
15
|
+
0: Executors;
|
|
16
|
+
1: Executors;
|
|
17
|
+
};
|
|
18
|
+
constructor(dexHelper: IDexHelper);
|
|
19
|
+
/**
|
|
20
|
+
* The method supports only simpleSwap and multiSwap with 100% token percent on each path (Executor01)
|
|
21
|
+
* @param priceRoute
|
|
22
|
+
*/
|
|
23
|
+
protected getRouteExecutionType(priceRoute: OptimalRate): RouteExecutionType;
|
|
24
|
+
getExecutorByPriceRoute(priceRoute: OptimalRate): Executors;
|
|
25
|
+
getAddress(executorName: Executors): Address;
|
|
26
|
+
getBytecodeBuilder(executorName: Executors): IExecutorBytecodeBuilder;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExecutorDetector = exports.Executors = void 0;
|
|
4
|
+
const Executor01BytecodeBuilder_1 = require("./Executor01BytecodeBuilder");
|
|
5
|
+
// import { Executor02BytecodeBuilder } from './Executor02BytecodeBuilder';
|
|
6
|
+
var Executors;
|
|
7
|
+
(function (Executors) {
|
|
8
|
+
Executors["ONE"] = "Executor01";
|
|
9
|
+
// TWO = 'Executor02',
|
|
10
|
+
})(Executors = exports.Executors || (exports.Executors = {}));
|
|
11
|
+
var RouteExecutionType;
|
|
12
|
+
(function (RouteExecutionType) {
|
|
13
|
+
RouteExecutionType[RouteExecutionType["SINGLE_STEP"] = 0] = "SINGLE_STEP";
|
|
14
|
+
RouteExecutionType[RouteExecutionType["HORIZONTAL_SEQUENCE"] = 1] = "HORIZONTAL_SEQUENCE";
|
|
15
|
+
// VERTICAL_BRANCH = 3, // megaSwap
|
|
16
|
+
// VERTICAL_BRANCH_HORIZONTAL_SEQUENCE = 4, // megaSwap
|
|
17
|
+
// NESTED_VERTICAL_BRANCH_HORIZONTAL_SEQUENCE = 5, // megaSwap
|
|
18
|
+
})(RouteExecutionType || (RouteExecutionType = {}));
|
|
19
|
+
class ExecutorDetector {
|
|
20
|
+
constructor(dexHelper) {
|
|
21
|
+
this.dexHelper = dexHelper;
|
|
22
|
+
// private executor02BytecodeBuilder: IExecutorBytecodeBuilder;
|
|
23
|
+
this.routeExecutionTypeToExecutorMap = {
|
|
24
|
+
[RouteExecutionType.SINGLE_STEP]: Executors.ONE,
|
|
25
|
+
[RouteExecutionType.HORIZONTAL_SEQUENCE]: Executors.ONE,
|
|
26
|
+
// [RouteExecutionType.VERTICAL_BRANCH]: Executors.TWO,
|
|
27
|
+
// [RouteExecutionType.VERTICAL_BRANCH_HORIZONTAL_SEQUENCE]: Executors.TWO,
|
|
28
|
+
// [RouteExecutionType.NESTED_VERTICAL_BRANCH_HORIZONTAL_SEQUENCE]:
|
|
29
|
+
// Executors.TWO,
|
|
30
|
+
};
|
|
31
|
+
this.executor01BytecodeBuilder = new Executor01BytecodeBuilder_1.Executor01BytecodeBuilder(this.dexHelper);
|
|
32
|
+
// this.executor02BytecodeBuilder = new Executor02BytecodeBuilder(this.dexHelper);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The method supports only simpleSwap and multiSwap with 100% token percent on each path (Executor01)
|
|
36
|
+
* @param priceRoute
|
|
37
|
+
*/
|
|
38
|
+
getRouteExecutionType(priceRoute) {
|
|
39
|
+
if (priceRoute.bestRoute.length === 1 &&
|
|
40
|
+
priceRoute.bestRoute[0].percent === 100 &&
|
|
41
|
+
priceRoute.bestRoute[0].swaps.length === 1) {
|
|
42
|
+
return RouteExecutionType.SINGLE_STEP;
|
|
43
|
+
}
|
|
44
|
+
else if (priceRoute.bestRoute.length === 1 &&
|
|
45
|
+
priceRoute.bestRoute[0].percent === 100 &&
|
|
46
|
+
priceRoute.bestRoute[0].swaps.length > 1) {
|
|
47
|
+
let has100PercentOnEachPath = true;
|
|
48
|
+
priceRoute.bestRoute[0].swaps.map(swap => {
|
|
49
|
+
swap.swapExchanges.map(se => {
|
|
50
|
+
if (se.percent !== 100) {
|
|
51
|
+
has100PercentOnEachPath = false;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
if (has100PercentOnEachPath) {
|
|
56
|
+
return RouteExecutionType.HORIZONTAL_SEQUENCE;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
throw new Error('Route type is not supported yet');
|
|
60
|
+
}
|
|
61
|
+
getExecutorByPriceRoute(priceRoute) {
|
|
62
|
+
const routeExecutionType = this.getRouteExecutionType(priceRoute);
|
|
63
|
+
const executorName = this.routeExecutionTypeToExecutorMap[routeExecutionType];
|
|
64
|
+
if (executorName) {
|
|
65
|
+
return executorName;
|
|
66
|
+
}
|
|
67
|
+
throw new Error(`${executorName} is not implemented`);
|
|
68
|
+
}
|
|
69
|
+
getAddress(executorName) {
|
|
70
|
+
if (!Object.values(Executors).includes(executorName)) {
|
|
71
|
+
throw new Error(`${executorName} is not supported`);
|
|
72
|
+
}
|
|
73
|
+
return this.dexHelper.config.data.executorsAddresses[executorName];
|
|
74
|
+
}
|
|
75
|
+
getBytecodeBuilder(executorName) {
|
|
76
|
+
if (!Object.values(Executors).includes(executorName)) {
|
|
77
|
+
throw new Error(`${executorName} is not supported`);
|
|
78
|
+
}
|
|
79
|
+
if (executorName === Executors.ONE || true) {
|
|
80
|
+
// for now always return Executor01
|
|
81
|
+
return this.executor01BytecodeBuilder;
|
|
82
|
+
}
|
|
83
|
+
// else (executorName === Executors.TWO) {
|
|
84
|
+
// return this.executor02BytecodeBuilder;
|
|
85
|
+
// }
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.ExecutorDetector = ExecutorDetector;
|
|
89
|
+
//# sourceMappingURL=ExecutorDetector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutorDetector.js","sourceRoot":"","sources":["../../src/executor/ExecutorDetector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { OptimalRate } from '@paraswap/core';
|
|
2
|
+
import { DexExchangeParam } from '../types';
|
|
3
|
+
import { DepositWithdrawReturn } from '../dex/weth/types';
|
|
4
|
+
export interface IExecutorBytecodeBuilder {
|
|
5
|
+
buildByteCode(priceRoute: OptimalRate, exchangeDataList: DexExchangeParam[], maybeWethCallData?: DepositWithdrawReturn): string;
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IExecutorBytecodeBuilder.js","sourceRoot":"","sources":["../../src/executor/IExecutorBytecodeBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Address, OptimalRate, TxObject } from './types';
|
|
2
|
+
import { SwapSide } from './constants';
|
|
3
|
+
import { AbiCoder, Interface } from '@ethersproject/abi';
|
|
4
|
+
import { DexAdapterService } from './dex';
|
|
5
|
+
import { ExecutorDetector, Executors } from './executor/ExecutorDetector';
|
|
6
|
+
import { IExecutorBytecodeBuilder } from './executor/IExecutorBytecodeBuilder';
|
|
7
|
+
export declare class GenericSwapTransactionBuilder {
|
|
8
|
+
protected dexAdapterService: DexAdapterService;
|
|
9
|
+
protected wExchangeNetworkToKey: Record<number, string>;
|
|
10
|
+
augustusV6Interface: Interface;
|
|
11
|
+
erc20Interface: Interface;
|
|
12
|
+
abiCoder: AbiCoder;
|
|
13
|
+
executorDetector: ExecutorDetector;
|
|
14
|
+
constructor(dexAdapterService: DexAdapterService, wExchangeNetworkToKey?: Record<number, string>);
|
|
15
|
+
protected getDepositWithdrawWethCallData(srcAmountWeth: bigint, destAmountWeth: bigint, side: SwapSide): import("./dex/weth/types").DepositWithdrawReturn | undefined;
|
|
16
|
+
protected buildFees(referrerAddress: string | undefined, partnerAddress: string, partnerFeePercent: string, takeSurplus: boolean, side: SwapSide): [string, string];
|
|
17
|
+
protected buildCalls(priceRoute: OptimalRate, minMaxAmount: string, executorName: Executors, bytecodeBuilder: IExecutorBytecodeBuilder): Promise<string>;
|
|
18
|
+
protected _build(priceRoute: OptimalRate, minMaxAmount: string, userAddress: Address, referrerAddress: Address | undefined, partnerAddress: Address, partnerFeePercent: string, takeSurplus: boolean, beneficiary: Address, permit: string, deadline: string, uuid: string): Promise<{
|
|
19
|
+
encoder: (...params: any[]) => string;
|
|
20
|
+
params: (string | string[])[];
|
|
21
|
+
}>;
|
|
22
|
+
build({ priceRoute, minMaxAmount, userAddress, referrerAddress, partnerAddress, partnerFeePercent, takeSurplus, gasPrice, maxFeePerGas, maxPriorityFeePerGas, permit, deadline, uuid, beneficiary, onlyParams, }: {
|
|
23
|
+
priceRoute: OptimalRate;
|
|
24
|
+
minMaxAmount: string;
|
|
25
|
+
userAddress: Address;
|
|
26
|
+
referrerAddress?: Address;
|
|
27
|
+
partnerAddress: Address;
|
|
28
|
+
partnerFeePercent: string;
|
|
29
|
+
takeSurplus?: boolean;
|
|
30
|
+
gasPrice?: string;
|
|
31
|
+
maxFeePerGas?: string;
|
|
32
|
+
maxPriorityFeePerGas?: string;
|
|
33
|
+
permit?: string;
|
|
34
|
+
deadline: string;
|
|
35
|
+
uuid: string;
|
|
36
|
+
beneficiary?: Address;
|
|
37
|
+
onlyParams?: boolean;
|
|
38
|
+
}): Promise<TxObject>;
|
|
39
|
+
}
|