@uniswap/router-sdk 2.0.0 → 2.0.2

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.
Files changed (176) hide show
  1. package/dist/{cjs/src/approveAndCall.d.ts → approveAndCall.d.ts} +33 -33
  2. package/dist/{types/src/constants.d.ts → constants.d.ts} +13 -13
  3. package/dist/{types/src/entities → entities}/mixedRoute/route.d.ts +29 -29
  4. package/dist/{esm/src/entities → entities}/mixedRoute/trade.d.ts +183 -183
  5. package/dist/{cjs/src/entities → entities}/protocol.d.ts +6 -6
  6. package/dist/{esm/src/entities → entities}/route.d.ts +40 -40
  7. package/dist/{esm/src/entities → entities}/trade.d.ts +127 -127
  8. package/dist/{cjs/src/index.d.ts → index.d.ts} +14 -14
  9. package/dist/index.js +8 -0
  10. package/dist/{cjs/src/multicallExtended.d.ts → multicallExtended.d.ts} +11 -11
  11. package/dist/{types/src/paymentsExtended.d.ts → paymentsExtended.d.ts} +15 -15
  12. package/dist/router-sdk.cjs.development.js +2460 -0
  13. package/dist/router-sdk.cjs.development.js.map +1 -0
  14. package/dist/router-sdk.cjs.production.min.js +2 -0
  15. package/dist/router-sdk.cjs.production.min.js.map +1 -0
  16. package/dist/router-sdk.esm.js +2427 -0
  17. package/dist/router-sdk.esm.js.map +1 -0
  18. package/dist/{cjs/src/swapRouter.d.ts → swapRouter.d.ts} +95 -95
  19. package/dist/{cjs/src/utils → utils}/TPool.d.ts +4 -4
  20. package/dist/{cjs/src/utils → utils}/encodeMixedRouteToPath.d.ts +9 -9
  21. package/dist/{types/src/utils → utils}/index.d.ts +16 -16
  22. package/dist/{cjs/src/utils → utils}/pathCurrency.d.ts +4 -4
  23. package/package.json +18 -33
  24. package/dist/cjs/src/approveAndCall.js +0 -111
  25. package/dist/cjs/src/approveAndCall.js.map +0 -1
  26. package/dist/cjs/src/constants.d.ts +0 -13
  27. package/dist/cjs/src/constants.js +0 -22
  28. package/dist/cjs/src/constants.js.map +0 -1
  29. package/dist/cjs/src/entities/mixedRoute/route.d.ts +0 -29
  30. package/dist/cjs/src/entities/mixedRoute/route.js +0 -119
  31. package/dist/cjs/src/entities/mixedRoute/route.js.map +0 -1
  32. package/dist/cjs/src/entities/mixedRoute/route.test.d.ts +0 -1
  33. package/dist/cjs/src/entities/mixedRoute/route.test.js +0 -469
  34. package/dist/cjs/src/entities/mixedRoute/route.test.js.map +0 -1
  35. package/dist/cjs/src/entities/mixedRoute/trade.d.ts +0 -183
  36. package/dist/cjs/src/entities/mixedRoute/trade.js +0 -357
  37. package/dist/cjs/src/entities/mixedRoute/trade.js.map +0 -1
  38. package/dist/cjs/src/entities/mixedRoute/trade.test.d.ts +0 -1
  39. package/dist/cjs/src/entities/mixedRoute/trade.test.js +0 -1010
  40. package/dist/cjs/src/entities/mixedRoute/trade.test.js.map +0 -1
  41. package/dist/cjs/src/entities/protocol.js +0 -11
  42. package/dist/cjs/src/entities/protocol.js.map +0 -1
  43. package/dist/cjs/src/entities/route.d.ts +0 -40
  44. package/dist/cjs/src/entities/route.js +0 -63
  45. package/dist/cjs/src/entities/route.js.map +0 -1
  46. package/dist/cjs/src/entities/route.test.d.ts +0 -1
  47. package/dist/cjs/src/entities/route.test.js +0 -192
  48. package/dist/cjs/src/entities/route.test.js.map +0 -1
  49. package/dist/cjs/src/entities/trade.d.ts +0 -127
  50. package/dist/cjs/src/entities/trade.js +0 -366
  51. package/dist/cjs/src/entities/trade.js.map +0 -1
  52. package/dist/cjs/src/entities/trade.test.d.ts +0 -1
  53. package/dist/cjs/src/entities/trade.test.js +0 -1267
  54. package/dist/cjs/src/entities/trade.test.js.map +0 -1
  55. package/dist/cjs/src/index.js +0 -18
  56. package/dist/cjs/src/index.js.map +0 -1
  57. package/dist/cjs/src/multicallExtended.js +0 -43
  58. package/dist/cjs/src/multicallExtended.js.map +0 -1
  59. package/dist/cjs/src/multicallExtended.test.d.ts +0 -1
  60. package/dist/cjs/src/multicallExtended.test.js +0 -22
  61. package/dist/cjs/src/multicallExtended.test.js.map +0 -1
  62. package/dist/cjs/src/paymentsExtended.d.ts +0 -15
  63. package/dist/cjs/src/paymentsExtended.js +0 -65
  64. package/dist/cjs/src/paymentsExtended.js.map +0 -1
  65. package/dist/cjs/src/paymentsExtended.test.d.ts +0 -1
  66. package/dist/cjs/src/paymentsExtended.test.js +0 -60
  67. package/dist/cjs/src/paymentsExtended.test.js.map +0 -1
  68. package/dist/cjs/src/swapRouter.js +0 -439
  69. package/dist/cjs/src/swapRouter.js.map +0 -1
  70. package/dist/cjs/src/swapRouter.test.d.ts +0 -1
  71. package/dist/cjs/src/swapRouter.test.js +0 -1161
  72. package/dist/cjs/src/swapRouter.test.js.map +0 -1
  73. package/dist/cjs/src/utils/TPool.js +0 -3
  74. package/dist/cjs/src/utils/TPool.js.map +0 -1
  75. package/dist/cjs/src/utils/encodeMixedRouteToPath.js +0 -90
  76. package/dist/cjs/src/utils/encodeMixedRouteToPath.js.map +0 -1
  77. package/dist/cjs/src/utils/encodeMixedRouteToPath.test.d.ts +0 -1
  78. package/dist/cjs/src/utils/encodeMixedRouteToPath.test.js +0 -136
  79. package/dist/cjs/src/utils/encodeMixedRouteToPath.test.js.map +0 -1
  80. package/dist/cjs/src/utils/index.d.ts +0 -16
  81. package/dist/cjs/src/utils/index.js +0 -51
  82. package/dist/cjs/src/utils/index.js.map +0 -1
  83. package/dist/cjs/src/utils/pathCurrency.js +0 -35
  84. package/dist/cjs/src/utils/pathCurrency.js.map +0 -1
  85. package/dist/cjs/src/utils/pathCurrency.test.d.ts +0 -1
  86. package/dist/cjs/src/utils/pathCurrency.test.js +0 -17
  87. package/dist/cjs/src/utils/pathCurrency.test.js.map +0 -1
  88. package/dist/esm/src/approveAndCall.d.ts +0 -33
  89. package/dist/esm/src/approveAndCall.js +0 -105
  90. package/dist/esm/src/approveAndCall.js.map +0 -1
  91. package/dist/esm/src/constants.d.ts +0 -13
  92. package/dist/esm/src/constants.js +0 -18
  93. package/dist/esm/src/constants.js.map +0 -1
  94. package/dist/esm/src/entities/mixedRoute/route.d.ts +0 -29
  95. package/dist/esm/src/entities/mixedRoute/route.js +0 -114
  96. package/dist/esm/src/entities/mixedRoute/route.js.map +0 -1
  97. package/dist/esm/src/entities/mixedRoute/route.test.d.ts +0 -1
  98. package/dist/esm/src/entities/mixedRoute/route.test.js +0 -467
  99. package/dist/esm/src/entities/mixedRoute/route.test.js.map +0 -1
  100. package/dist/esm/src/entities/mixedRoute/trade.js +0 -352
  101. package/dist/esm/src/entities/mixedRoute/trade.js.map +0 -1
  102. package/dist/esm/src/entities/mixedRoute/trade.test.d.ts +0 -1
  103. package/dist/esm/src/entities/mixedRoute/trade.test.js +0 -1008
  104. package/dist/esm/src/entities/mixedRoute/trade.test.js.map +0 -1
  105. package/dist/esm/src/entities/protocol.d.ts +0 -6
  106. package/dist/esm/src/entities/protocol.js +0 -8
  107. package/dist/esm/src/entities/protocol.js.map +0 -1
  108. package/dist/esm/src/entities/route.js +0 -55
  109. package/dist/esm/src/entities/route.js.map +0 -1
  110. package/dist/esm/src/entities/route.test.d.ts +0 -1
  111. package/dist/esm/src/entities/route.test.js +0 -190
  112. package/dist/esm/src/entities/route.test.js.map +0 -1
  113. package/dist/esm/src/entities/trade.js +0 -362
  114. package/dist/esm/src/entities/trade.js.map +0 -1
  115. package/dist/esm/src/entities/trade.test.d.ts +0 -1
  116. package/dist/esm/src/entities/trade.test.js +0 -1265
  117. package/dist/esm/src/entities/trade.test.js.map +0 -1
  118. package/dist/esm/src/index.d.ts +0 -14
  119. package/dist/esm/src/index.js +0 -15
  120. package/dist/esm/src/index.js.map +0 -1
  121. package/dist/esm/src/multicallExtended.d.ts +0 -11
  122. package/dist/esm/src/multicallExtended.js +0 -39
  123. package/dist/esm/src/multicallExtended.js.map +0 -1
  124. package/dist/esm/src/multicallExtended.test.d.ts +0 -1
  125. package/dist/esm/src/multicallExtended.test.js +0 -20
  126. package/dist/esm/src/multicallExtended.test.js.map +0 -1
  127. package/dist/esm/src/paymentsExtended.d.ts +0 -15
  128. package/dist/esm/src/paymentsExtended.js +0 -61
  129. package/dist/esm/src/paymentsExtended.js.map +0 -1
  130. package/dist/esm/src/paymentsExtended.test.d.ts +0 -1
  131. package/dist/esm/src/paymentsExtended.test.js +0 -57
  132. package/dist/esm/src/paymentsExtended.test.js.map +0 -1
  133. package/dist/esm/src/swapRouter.d.ts +0 -95
  134. package/dist/esm/src/swapRouter.js +0 -434
  135. package/dist/esm/src/swapRouter.js.map +0 -1
  136. package/dist/esm/src/swapRouter.test.d.ts +0 -1
  137. package/dist/esm/src/swapRouter.test.js +0 -1159
  138. package/dist/esm/src/swapRouter.test.js.map +0 -1
  139. package/dist/esm/src/utils/TPool.d.ts +0 -4
  140. package/dist/esm/src/utils/TPool.js +0 -2
  141. package/dist/esm/src/utils/TPool.js.map +0 -1
  142. package/dist/esm/src/utils/encodeMixedRouteToPath.d.ts +0 -9
  143. package/dist/esm/src/utils/encodeMixedRouteToPath.js +0 -86
  144. package/dist/esm/src/utils/encodeMixedRouteToPath.js.map +0 -1
  145. package/dist/esm/src/utils/encodeMixedRouteToPath.test.d.ts +0 -1
  146. package/dist/esm/src/utils/encodeMixedRouteToPath.test.js +0 -134
  147. package/dist/esm/src/utils/encodeMixedRouteToPath.test.js.map +0 -1
  148. package/dist/esm/src/utils/index.d.ts +0 -16
  149. package/dist/esm/src/utils/index.js +0 -46
  150. package/dist/esm/src/utils/index.js.map +0 -1
  151. package/dist/esm/src/utils/pathCurrency.d.ts +0 -4
  152. package/dist/esm/src/utils/pathCurrency.js +0 -30
  153. package/dist/esm/src/utils/pathCurrency.js.map +0 -1
  154. package/dist/esm/src/utils/pathCurrency.test.d.ts +0 -1
  155. package/dist/esm/src/utils/pathCurrency.test.js +0 -15
  156. package/dist/esm/src/utils/pathCurrency.test.js.map +0 -1
  157. package/dist/types/src/approveAndCall.d.ts +0 -33
  158. package/dist/types/src/entities/mixedRoute/route.test.d.ts +0 -1
  159. package/dist/types/src/entities/mixedRoute/trade.d.ts +0 -183
  160. package/dist/types/src/entities/mixedRoute/trade.test.d.ts +0 -1
  161. package/dist/types/src/entities/protocol.d.ts +0 -6
  162. package/dist/types/src/entities/route.d.ts +0 -40
  163. package/dist/types/src/entities/route.test.d.ts +0 -1
  164. package/dist/types/src/entities/trade.d.ts +0 -127
  165. package/dist/types/src/entities/trade.test.d.ts +0 -1
  166. package/dist/types/src/index.d.ts +0 -14
  167. package/dist/types/src/multicallExtended.d.ts +0 -11
  168. package/dist/types/src/multicallExtended.test.d.ts +0 -1
  169. package/dist/types/src/paymentsExtended.test.d.ts +0 -1
  170. package/dist/types/src/swapRouter.d.ts +0 -95
  171. package/dist/types/src/swapRouter.test.d.ts +0 -1
  172. package/dist/types/src/utils/TPool.d.ts +0 -4
  173. package/dist/types/src/utils/encodeMixedRouteToPath.d.ts +0 -9
  174. package/dist/types/src/utils/encodeMixedRouteToPath.test.d.ts +0 -1
  175. package/dist/types/src/utils/pathCurrency.d.ts +0 -4
  176. package/dist/types/src/utils/pathCurrency.test.d.ts +0 -1
@@ -1,1161 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const sdk_core_1 = require("@uniswap/sdk-core");
5
- const v2_sdk_1 = require("@uniswap/v2-sdk");
6
- const v3_sdk_1 = require("@uniswap/v3-sdk");
7
- const v4_sdk_1 = require("@uniswap/v4-sdk");
8
- const jsbi_1 = tslib_1.__importDefault(require("jsbi"));
9
- const _1 = require(".");
10
- const approveAndCall_1 = require("./approveAndCall");
11
- const route_1 = require("./entities/mixedRoute/route");
12
- const trade_1 = require("./entities/mixedRoute/trade");
13
- const constants_1 = require("./constants");
14
- describe('SwapRouter', () => {
15
- const ETHER = sdk_core_1.Ether.onChain(1);
16
- const WETH = sdk_core_1.WETH9[1];
17
- const token0 = new sdk_core_1.Token(1, '0x0000000000000000000000000000000000000001', 18, 't0', 'token0');
18
- const token1 = new sdk_core_1.Token(1, '0x0000000000000000000000000000000000000002', 18, 't1', 'token1');
19
- const token2 = new sdk_core_1.Token(1, '0x0000000000000000000000000000000000000003', 18, 't2', 'token2');
20
- const feeAmount = v3_sdk_1.FeeAmount.MEDIUM;
21
- const sqrtRatioX96 = (0, v3_sdk_1.encodeSqrtRatioX96)(1, 1);
22
- const liquidity = 1000000;
23
- // v4
24
- const makeV4Pool = (token0, token1, liquidity) => {
25
- return new v4_sdk_1.Pool(token0, token1, feeAmount, v3_sdk_1.TICK_SPACINGS[feeAmount], constants_1.ADDRESS_ZERO, sqrtRatioX96, liquidity, v3_sdk_1.TickMath.getTickAtSqrtRatio(sqrtRatioX96), [
26
- {
27
- index: (0, v3_sdk_1.nearestUsableTick)(v3_sdk_1.TickMath.MIN_TICK, v3_sdk_1.TICK_SPACINGS[feeAmount]),
28
- liquidityNet: liquidity,
29
- liquidityGross: liquidity,
30
- },
31
- {
32
- index: (0, v3_sdk_1.nearestUsableTick)(v3_sdk_1.TickMath.MAX_TICK, v3_sdk_1.TICK_SPACINGS[feeAmount]),
33
- liquidityNet: -liquidity,
34
- liquidityGross: liquidity,
35
- },
36
- ]);
37
- };
38
- // v3
39
- const makeV3Pool = (token0, token1, liquidity) => {
40
- return new v3_sdk_1.Pool(token0, token1, feeAmount, sqrtRatioX96, liquidity, v3_sdk_1.TickMath.getTickAtSqrtRatio(sqrtRatioX96), [
41
- {
42
- index: (0, v3_sdk_1.nearestUsableTick)(v3_sdk_1.TickMath.MIN_TICK, v3_sdk_1.TICK_SPACINGS[feeAmount]),
43
- liquidityNet: liquidity,
44
- liquidityGross: liquidity,
45
- },
46
- {
47
- index: (0, v3_sdk_1.nearestUsableTick)(v3_sdk_1.TickMath.MAX_TICK, v3_sdk_1.TICK_SPACINGS[feeAmount]),
48
- liquidityNet: -liquidity,
49
- liquidityGross: liquidity,
50
- },
51
- ]);
52
- };
53
- // v2
54
- const makePair = (token0, token1, liquidity) => {
55
- const amount0 = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(liquidity));
56
- const amount1 = sdk_core_1.CurrencyAmount.fromRawAmount(token1, jsbi_1.default.BigInt(liquidity));
57
- return new v2_sdk_1.Pair(amount0, amount1);
58
- };
59
- const pool_V3_0_1 = makeV3Pool(token0, token1, liquidity);
60
- const pool_V4_0_1 = makeV4Pool(token0, token1, liquidity);
61
- const pair_0_1 = makePair(token0, token1, liquidity);
62
- const pair_1_2 = makePair(token1, token2, liquidity);
63
- const pool_V3_1_WETH = makeV3Pool(token1, WETH, liquidity);
64
- const pair_1_WETH = makePair(token1, WETH, liquidity);
65
- const pair_2_WETH = makePair(token2, WETH, liquidity);
66
- const pool_V3_2_WETH = makeV3Pool(token2, WETH, liquidity);
67
- const slippageTolerance = new sdk_core_1.Percent(1, 100);
68
- const recipient = '0x0000000000000000000000000000000000000003';
69
- const deadline = 123;
70
- describe('#swapCallParameters', () => {
71
- describe('single-hop exact input (v2 + v3)', () => {
72
- describe('different trade configurations result in identical calldata', () => {
73
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000e4472b43f300000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000062000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000061000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
74
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(100));
75
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_0_1], token0, token1), amountIn);
76
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
77
- it('array of trades', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
78
- const trades = [v2Trade, yield v3Trade];
79
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
80
- slippageTolerance,
81
- recipient,
82
- deadlineOrPreviousBlockhash: deadline,
83
- });
84
- expect(calldata).toEqual(expectedCalldata);
85
- expect(value).toBe('0x00');
86
- }));
87
- it('meta-trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
88
- const trades = yield _1.Trade.fromRoutes([
89
- {
90
- routev2: v2Trade.route,
91
- amount: amountIn,
92
- },
93
- ], [
94
- {
95
- routev3: (yield v3Trade).swaps[0].route,
96
- amount: amountIn,
97
- },
98
- ], sdk_core_1.TradeType.EXACT_INPUT);
99
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
100
- slippageTolerance,
101
- recipient,
102
- deadlineOrPreviousBlockhash: deadline,
103
- });
104
- expect(calldata).toEqual(expectedCalldata);
105
- expect(value).toBe('0x00');
106
- }));
107
- });
108
- });
109
- describe('single-hop exact output (v2 + v3)', () => {
110
- describe('different trade configurations result in identical calldata', () => {
111
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000e442712a6700000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000066000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e45023b4df000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000067000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
112
- const amountOut = sdk_core_1.CurrencyAmount.fromRawAmount(token1, jsbi_1.default.BigInt(100));
113
- const v2Trade = v2_sdk_1.Trade.exactOut(new v2_sdk_1.Route([pair_0_1], token0, token1), amountOut);
114
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_0_1], token0, token1), amountOut, sdk_core_1.TradeType.EXACT_OUTPUT);
115
- it('array of trades', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
116
- const trades = [v2Trade, yield v3Trade];
117
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
118
- slippageTolerance,
119
- recipient,
120
- deadlineOrPreviousBlockhash: deadline,
121
- });
122
- expect(calldata).toEqual(expectedCalldata);
123
- expect(value).toBe('0x00');
124
- }));
125
- it('meta-trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
126
- const trades = yield _1.Trade.fromRoutes([
127
- {
128
- routev2: v2Trade.route,
129
- amount: amountOut,
130
- },
131
- ], [
132
- {
133
- routev3: (yield v3Trade).swaps[0].route,
134
- amount: amountOut,
135
- },
136
- ], sdk_core_1.TradeType.EXACT_OUTPUT);
137
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
138
- slippageTolerance,
139
- recipient,
140
- deadlineOrPreviousBlockhash: deadline,
141
- });
142
- expect(calldata).toEqual(expectedCalldata);
143
- expect(value).toBe('0x00');
144
- }));
145
- });
146
- });
147
- describe('multi-hop exact input (v2 + v3)', () => {
148
- describe('different trade configurations result in identical calldata', () => {
149
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000104472b43f30000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000124b858183f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000005f00000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000001000bb80000000000000000000000000000000000000002000bb8c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
150
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(100));
151
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_0_1, pair_1_WETH], token0, WETH), amountIn);
152
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_0_1, pool_V3_1_WETH], token0, WETH), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
153
- it('array of trades', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
154
- const trades = [v2Trade, yield v3Trade];
155
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
156
- slippageTolerance,
157
- recipient,
158
- deadlineOrPreviousBlockhash: deadline,
159
- });
160
- expect(calldata).toEqual(expectedCalldata);
161
- expect(value).toBe('0x00');
162
- }));
163
- it('meta-trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
164
- const trades = yield _1.Trade.fromRoutes([
165
- {
166
- routev2: v2Trade.route,
167
- amount: amountIn,
168
- },
169
- ], [
170
- {
171
- routev3: (yield v3Trade).swaps[0].route,
172
- amount: amountIn,
173
- },
174
- ], sdk_core_1.TradeType.EXACT_INPUT);
175
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
176
- slippageTolerance,
177
- recipient,
178
- deadlineOrPreviousBlockhash: deadline,
179
- });
180
- expect(calldata).toEqual(expectedCalldata);
181
- expect(value).toBe('0x00');
182
- }));
183
- });
184
- });
185
- describe('multi-hop exact output (v2 + v3)', () => {
186
- describe('different trade configurations result in identical calldata', () => {
187
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010442712a670000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006700000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012409b81346000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000690000000000000000000000000000000000000000000000000000000000000042c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000bb80000000000000000000000000000000000000002000bb8000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
188
- const amountOut = sdk_core_1.CurrencyAmount.fromRawAmount(WETH, jsbi_1.default.BigInt(100));
189
- const v2Trade = v2_sdk_1.Trade.exactOut(new v2_sdk_1.Route([pair_0_1, pair_1_WETH], token0, WETH), amountOut);
190
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_0_1, pool_V3_1_WETH], token0, WETH), amountOut, sdk_core_1.TradeType.EXACT_OUTPUT);
191
- it('array of trades', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
192
- const trades = [v2Trade, yield v3Trade];
193
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
194
- slippageTolerance,
195
- recipient,
196
- deadlineOrPreviousBlockhash: deadline,
197
- });
198
- expect(calldata).toEqual(expectedCalldata);
199
- expect(value).toBe('0x00');
200
- }));
201
- it('meta-trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
202
- const trades = yield _1.Trade.fromRoutes([
203
- {
204
- routev2: v2Trade.route,
205
- amount: amountOut,
206
- },
207
- ], [
208
- {
209
- routev3: (yield v3Trade).swaps[0].route,
210
- amount: amountOut,
211
- },
212
- ], sdk_core_1.TradeType.EXACT_OUTPUT);
213
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
214
- slippageTolerance,
215
- recipient,
216
- deadlineOrPreviousBlockhash: deadline,
217
- });
218
- expect(calldata).toEqual(expectedCalldata);
219
- expect(value).toBe('0x00');
220
- }));
221
- });
222
- });
223
- describe('Mixed Route', () => {
224
- it('throws an error with v4 pool', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
225
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(WETH, jsbi_1.default.BigInt(100));
226
- const mixedRouteTrade = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pair_1_WETH, pool_V4_0_1], WETH, token0), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
227
- const trades = yield mixedRouteTrade;
228
- expect(() => _1.SwapRouter.swapCallParameters(trades, {
229
- slippageTolerance,
230
- recipient,
231
- deadlineOrPreviousBlockhash: deadline,
232
- })).toThrow('Encoding mixed routes with V4 not supported');
233
- }));
234
- describe('single-hop exact input (v2 + v3) backwards compatible', () => {
235
- describe('different trade configurations result in identical calldata', () => {
236
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000e4472b43f300000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000062000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000061000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
237
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(100));
238
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_0_1], token0, token1), amountIn);
239
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
240
- const mixedRouteTrade1 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pair_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
241
- const mixedRouteTrade2 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
242
- it('generates the same calldata', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
243
- const trades = [v2Trade, yield v3Trade];
244
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
245
- slippageTolerance,
246
- recipient,
247
- deadlineOrPreviousBlockhash: deadline,
248
- });
249
- expect(calldata).toEqual(expectedCalldata);
250
- expect(value).toBe('0x00');
251
- const mixedRouteTrades = [yield mixedRouteTrade1, yield mixedRouteTrade2];
252
- const { calldata: mixedRouteCalldata, value: mixedRouteValue } = _1.SwapRouter.swapCallParameters(mixedRouteTrades, {
253
- slippageTolerance,
254
- recipient,
255
- deadlineOrPreviousBlockhash: deadline,
256
- });
257
- expect(mixedRouteCalldata).toEqual(expectedCalldata);
258
- expect(mixedRouteValue).toBe('0x00');
259
- }));
260
- it('meta-trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
261
- const trades = yield _1.Trade.fromRoutes([
262
- {
263
- routev2: v2Trade.route,
264
- amount: amountIn,
265
- },
266
- ], [
267
- {
268
- routev3: (yield v3Trade).swaps[0].route,
269
- amount: amountIn,
270
- },
271
- ], sdk_core_1.TradeType.EXACT_INPUT);
272
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
273
- slippageTolerance,
274
- recipient,
275
- deadlineOrPreviousBlockhash: deadline,
276
- });
277
- expect(calldata).toEqual(expectedCalldata);
278
- expect(value).toBe('0x00');
279
- const mixedRouteTrades = yield _1.Trade.fromRoutes([], [], sdk_core_1.TradeType.EXACT_INPUT, [
280
- {
281
- mixedRoute: (yield mixedRouteTrade1).swaps[0].route,
282
- amount: amountIn,
283
- },
284
- {
285
- mixedRoute: (yield mixedRouteTrade2).swaps[0].route,
286
- amount: amountIn,
287
- },
288
- ]);
289
- const { calldata: mixedRouteCalldata, value: mixedRouteValue } = _1.SwapRouter.swapCallParameters(mixedRouteTrades, {
290
- slippageTolerance,
291
- recipient,
292
- deadlineOrPreviousBlockhash: deadline,
293
- });
294
- expect(mixedRouteCalldata).toEqual(expectedCalldata);
295
- expect(mixedRouteValue).toBe('0x00');
296
- }));
297
- });
298
- });
299
- describe('multi-hop exact input (mixed route) backwards compatible', () => {
300
- describe('different trade configurations result in identical calldata', () => {
301
- /// calldata verified and taken from existing test
302
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000104472b43f30000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000124b858183f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000005f00000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000001000bb80000000000000000000000000000000000000002000bb8c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
303
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(100));
304
- const mixedRouteTrade1 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pair_0_1, pair_1_WETH], token0, WETH), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
305
- const mixedRouteTrade2 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pool_V3_0_1, pool_V3_1_WETH], token0, WETH), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
306
- it('single mixedRoute trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
307
- const trades = [yield mixedRouteTrade1, yield mixedRouteTrade2];
308
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
309
- slippageTolerance,
310
- recipient,
311
- deadlineOrPreviousBlockhash: deadline,
312
- });
313
- expect(calldata).toEqual(expectedCalldata);
314
- expect(value).toBe('0x00');
315
- }));
316
- it('meta-trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
317
- const trades = yield _1.Trade.fromRoutes([], [], sdk_core_1.TradeType.EXACT_INPUT, [
318
- {
319
- mixedRoute: (yield mixedRouteTrade1).swaps[0].route,
320
- amount: amountIn,
321
- },
322
- {
323
- mixedRoute: (yield mixedRouteTrade2).swaps[0].route,
324
- amount: amountIn,
325
- },
326
- ]);
327
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
328
- slippageTolerance,
329
- recipient,
330
- deadlineOrPreviousBlockhash: deadline,
331
- });
332
- expect(calldata).toEqual(expectedCalldata);
333
- expect(value).toBe('0x00');
334
- }));
335
- });
336
- });
337
- describe('mixed route trades with routes with consecutive pools/pairs', () => {
338
- /// manually verified calldata
339
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000124b858183f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000001000bb80000000000000000000000000000000000000002000bb8c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4472b43f30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104472b43f300000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104b858183f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005f000000000000000000000000000000000000000000000000000000000000002b0000000000000000000000000000000000000003000bb8c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
340
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(100));
341
- const mixedRouteTrade1 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pool_V3_0_1, pool_V3_1_WETH, pair_2_WETH], token0, WETH), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
342
- const mixedRouteTrade2 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pair_0_1, pair_1_2, pool_V3_2_WETH], token0, WETH), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
343
- it('generates correct calldata', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
344
- const trades = [yield mixedRouteTrade1, yield mixedRouteTrade2];
345
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
346
- slippageTolerance,
347
- recipient,
348
- deadlineOrPreviousBlockhash: deadline,
349
- });
350
- expect(calldata).toEqual(expectedCalldata);
351
- expect(value).toBe('0x00');
352
- }));
353
- });
354
- });
355
- describe('ETH input', () => {
356
- describe('single-hop exact input (v2 + v3)', () => {
357
- describe('different trade configurations result in identical calldata', () => {
358
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000e4472b43f300000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000062000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000061000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
359
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(ETHER, jsbi_1.default.BigInt(100));
360
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_1_WETH], ETHER, token1), amountIn);
361
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_1_WETH], ETHER, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
362
- /// mixedRouteTrade mirrors the V3Trade
363
- const mixedRouteTrade = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pool_V3_1_WETH], ETHER, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
364
- it('array of trades', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
365
- const trades = [v2Trade, yield v3Trade];
366
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
367
- slippageTolerance,
368
- recipient,
369
- deadlineOrPreviousBlockhash: deadline,
370
- });
371
- expect(calldata).toEqual(expectedCalldata);
372
- expect(value).toBe('0xc8');
373
- }));
374
- it('mixedRoute produces the same calldata when swapped in', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
375
- const trades = [v2Trade, yield mixedRouteTrade];
376
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
377
- slippageTolerance,
378
- recipient,
379
- deadlineOrPreviousBlockhash: deadline,
380
- });
381
- expect(calldata).toEqual(expectedCalldata);
382
- expect(value).toBe('0xc8');
383
- }));
384
- it('meta-trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
385
- const trades = yield _1.Trade.fromRoutes([
386
- {
387
- routev2: v2Trade.route,
388
- amount: amountIn,
389
- },
390
- ], [
391
- {
392
- routev3: (yield v3Trade).swaps[0].route,
393
- amount: amountIn,
394
- },
395
- ], sdk_core_1.TradeType.EXACT_INPUT);
396
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
397
- slippageTolerance,
398
- recipient,
399
- deadlineOrPreviousBlockhash: deadline,
400
- });
401
- expect(calldata).toEqual(expectedCalldata);
402
- expect(value).toBe('0xc8');
403
- }));
404
- it('meta-trade with mixedRoute', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
405
- const trades = yield _1.Trade.fromRoutes([
406
- {
407
- routev2: v2Trade.route,
408
- amount: amountIn,
409
- },
410
- ], [], sdk_core_1.TradeType.EXACT_INPUT, [
411
- {
412
- mixedRoute: (yield mixedRouteTrade).swaps[0].route,
413
- amount: amountIn,
414
- },
415
- ]);
416
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
417
- slippageTolerance,
418
- recipient,
419
- deadlineOrPreviousBlockhash: deadline,
420
- });
421
- expect(calldata).toEqual(expectedCalldata);
422
- expect(value).toBe('0xc8');
423
- }));
424
- });
425
- });
426
- describe('single-hop exact output (v2 + v3)', () => {
427
- describe('different trade configurations result in identical calldata', () => {
428
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000e442712a6700000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000066000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e45023b4df000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000067000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000412210e8a00000000000000000000000000000000000000000000000000000000';
429
- const amountOut = sdk_core_1.CurrencyAmount.fromRawAmount(token1, jsbi_1.default.BigInt(100));
430
- const v2Trade = v2_sdk_1.Trade.exactOut(new v2_sdk_1.Route([pair_1_WETH], ETHER, token1), amountOut);
431
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_1_WETH], ETHER, token1), amountOut, sdk_core_1.TradeType.EXACT_OUTPUT);
432
- it('array of trades', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
433
- const trades = [v2Trade, yield v3Trade];
434
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
435
- slippageTolerance,
436
- recipient,
437
- deadlineOrPreviousBlockhash: deadline,
438
- });
439
- expect(calldata).toEqual(expectedCalldata);
440
- expect(value).toBe('0xcd');
441
- }));
442
- it('meta-trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
443
- const trades = yield _1.Trade.fromRoutes([
444
- {
445
- routev2: v2Trade.route,
446
- amount: amountOut,
447
- },
448
- ], [
449
- {
450
- routev3: (yield v3Trade).swaps[0].route,
451
- amount: amountOut,
452
- },
453
- ], sdk_core_1.TradeType.EXACT_OUTPUT);
454
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
455
- slippageTolerance,
456
- recipient,
457
- deadlineOrPreviousBlockhash: deadline,
458
- });
459
- expect(calldata).toEqual(expectedCalldata);
460
- expect(value).toBe('0xcd');
461
- }));
462
- });
463
- });
464
- describe('multi-hop exact input (v2 + v3)', () => {
465
- describe('different trade configurations result in identical calldata', () => {
466
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000104472b43f300000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000061000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000124b858183f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000005f0000000000000000000000000000000000000000000000000000000000000042c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000bb80000000000000000000000000000000000000002000bb8000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
467
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(ETHER, jsbi_1.default.BigInt(100));
468
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_1_WETH, pair_0_1], ETHER, token0), amountIn);
469
- /// mixedRouteTrade mirrors V2Trade
470
- const mixedRouteTrade = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pair_1_WETH, pair_0_1], ETHER, token0), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
471
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_1_WETH, pool_V3_0_1], ETHER, token0), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
472
- it('array of trades', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
473
- const trades = [v2Trade, yield v3Trade];
474
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
475
- slippageTolerance,
476
- recipient,
477
- deadlineOrPreviousBlockhash: deadline,
478
- });
479
- expect(calldata).toEqual(expectedCalldata);
480
- expect(value).toBe('0xc8');
481
- }));
482
- it('mixedRoutes in array produce same calldata', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
483
- const trades = [yield mixedRouteTrade, yield v3Trade];
484
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
485
- slippageTolerance,
486
- recipient,
487
- deadlineOrPreviousBlockhash: deadline,
488
- });
489
- expect(calldata).toEqual(expectedCalldata);
490
- expect(value).toBe('0xc8');
491
- }));
492
- it('meta-trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
493
- const trades = yield _1.Trade.fromRoutes([
494
- {
495
- routev2: v2Trade.route,
496
- amount: amountIn,
497
- },
498
- ], [
499
- {
500
- routev3: (yield v3Trade).swaps[0].route,
501
- amount: amountIn,
502
- },
503
- ], sdk_core_1.TradeType.EXACT_INPUT);
504
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
505
- slippageTolerance,
506
- recipient,
507
- deadlineOrPreviousBlockhash: deadline,
508
- });
509
- expect(calldata).toEqual(expectedCalldata);
510
- expect(value).toBe('0xc8');
511
- }));
512
- it('meta-trade with mixedRoutes produces calldata in different order but same content', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
513
- /// @dev since we order the calldata in the array in a particular way (v2, v3, mixedRoute) the ordering will be different, but the encoded swap data will be the same
514
- /// Additionally, since we aren't sharing balances across trades order should not matter
515
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000124b858183f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000005f0000000000000000000000000000000000000000000000000000000000000042c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000bb80000000000000000000000000000000000000002000bb80000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104472b43f300000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000061000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000';
516
- const trades = yield _1.Trade.fromRoutes([], [
517
- {
518
- routev3: (yield v3Trade).swaps[0].route,
519
- amount: amountIn,
520
- },
521
- ], sdk_core_1.TradeType.EXACT_INPUT, [
522
- {
523
- mixedRoute: (yield mixedRouteTrade).swaps[0].route,
524
- amount: amountIn,
525
- },
526
- ]);
527
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
528
- slippageTolerance,
529
- recipient,
530
- deadlineOrPreviousBlockhash: deadline,
531
- });
532
- expect(calldata).toEqual(expectedCalldata);
533
- expect(value).toBe('0xc8');
534
- }));
535
- });
536
- });
537
- describe('multi-hop exact output (v2 + v3)', () => {
538
- describe('different trade configurations result in identical calldata', () => {
539
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010442712a6700000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000067000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012409b813460000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006900000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000001000bb80000000000000000000000000000000000000002000bb8c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000412210e8a00000000000000000000000000000000000000000000000000000000';
540
- const amountOut = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(100));
541
- const v2Trade = v2_sdk_1.Trade.exactOut(new v2_sdk_1.Route([pair_1_WETH, pair_0_1], ETHER, token0), amountOut);
542
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_1_WETH, pool_V3_0_1], ETHER, token0), amountOut, sdk_core_1.TradeType.EXACT_OUTPUT);
543
- it('array of trades', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
544
- const trades = [v2Trade, yield v3Trade];
545
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
546
- slippageTolerance,
547
- recipient,
548
- deadlineOrPreviousBlockhash: deadline,
549
- });
550
- expect(calldata).toEqual(expectedCalldata);
551
- expect(value).toBe('0xd0');
552
- }));
553
- it('meta-trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
554
- const trades = yield _1.Trade.fromRoutes([
555
- {
556
- routev2: v2Trade.route,
557
- amount: amountOut,
558
- },
559
- ], [
560
- {
561
- routev3: (yield v3Trade).swaps[0].route,
562
- amount: amountOut,
563
- },
564
- ], sdk_core_1.TradeType.EXACT_OUTPUT);
565
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
566
- slippageTolerance,
567
- recipient,
568
- deadlineOrPreviousBlockhash: deadline,
569
- });
570
- expect(calldata).toEqual(expectedCalldata);
571
- expect(value).toBe('0xd0');
572
- }));
573
- });
574
- });
575
- describe('high price impact with ETH input to result in refundETH being appended to calldata', () => {
576
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000e4472b43f300000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000062000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000412210e8a00000000000000000000000000000000000000000000000000000000';
577
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(ETHER, jsbi_1.default.BigInt(100));
578
- const pool_V3_1_WETH_slippage = makeV3Pool(token1, WETH, 100);
579
- const REFUND_ETH_FUNCTION_SIG = /12210e8a/;
580
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_1_WETH], ETHER, token1), amountIn);
581
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_1_WETH_slippage], ETHER, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
582
- it('array of trades', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
583
- const trades = [v2Trade, yield v3Trade];
584
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
585
- slippageTolerance,
586
- recipient,
587
- deadlineOrPreviousBlockhash: deadline,
588
- });
589
- expect(calldata).toEqual(expectedCalldata);
590
- expect(calldata).toMatch(REFUND_ETH_FUNCTION_SIG);
591
- expect(value).toBe('0xc8');
592
- }));
593
- });
594
- describe('high price impact with ERCO20 input does not result in refundETH call', () => {
595
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000e4472b43f3000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000620000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e404e45aaf0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
596
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token1, jsbi_1.default.BigInt(100));
597
- const pool_V3_1_WETH_slippage = makeV3Pool(token1, WETH, 100);
598
- const REFUND_ETH_FUNCTION_SIG = /12210e8a/;
599
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_1_WETH], token1, WETH), amountIn);
600
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_1_WETH_slippage], token1, WETH), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
601
- it('array of trades', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
602
- const trades = [v2Trade, yield v3Trade];
603
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
604
- slippageTolerance,
605
- recipient,
606
- deadlineOrPreviousBlockhash: deadline,
607
- });
608
- expect(calldata).toEqual(expectedCalldata);
609
- expect(calldata).not.toMatch(REFUND_ETH_FUNCTION_SIG);
610
- expect(value).toBe('0x00');
611
- }));
612
- });
613
- });
614
- describe('ETH output', () => {
615
- describe('single-hop exact input (v2 + v3)', () => {
616
- describe('different trade configurations result in identical calldata', () => {
617
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000e4472b43f3000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000620000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e404e45aaf0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000061000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004449404b7c00000000000000000000000000000000000000000000000000000000000000c3000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000';
618
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token1, jsbi_1.default.BigInt(100));
619
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_1_WETH], token1, ETHER), amountIn);
620
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_1_WETH], token1, ETHER), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
621
- /// mixedRoute mirrors v3Trade
622
- const mixedRouteTrade = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pool_V3_1_WETH], token1, ETHER), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
623
- it('array of trades', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
624
- const trades = [v2Trade, yield v3Trade];
625
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
626
- slippageTolerance,
627
- recipient,
628
- deadlineOrPreviousBlockhash: deadline,
629
- });
630
- expect(calldata).toEqual(expectedCalldata);
631
- expect(value).toBe('0x00');
632
- }));
633
- it('array of trades with mixedRoute produces same calldata', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
634
- const trades = [v2Trade, yield mixedRouteTrade];
635
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
636
- slippageTolerance,
637
- recipient,
638
- deadlineOrPreviousBlockhash: deadline,
639
- });
640
- expect(calldata).toEqual(expectedCalldata);
641
- expect(value).toBe('0x00');
642
- }));
643
- it('meta-trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
644
- const trades = yield _1.Trade.fromRoutes([
645
- {
646
- routev2: v2Trade.route,
647
- amount: amountIn,
648
- },
649
- ], [
650
- {
651
- routev3: (yield v3Trade).swaps[0].route,
652
- amount: amountIn,
653
- },
654
- ], sdk_core_1.TradeType.EXACT_INPUT);
655
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
656
- slippageTolerance,
657
- recipient,
658
- deadlineOrPreviousBlockhash: deadline,
659
- });
660
- expect(calldata).toEqual(expectedCalldata);
661
- expect(value).toBe('0x00');
662
- }));
663
- it('meta-trade with mixedRoute produces same calldata', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
664
- const trades = yield _1.Trade.fromRoutes([
665
- {
666
- routev2: v2Trade.route,
667
- amount: amountIn,
668
- },
669
- ], [], sdk_core_1.TradeType.EXACT_INPUT, [
670
- {
671
- mixedRoute: (yield mixedRouteTrade).swaps[0].route,
672
- amount: amountIn,
673
- },
674
- ]);
675
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
676
- slippageTolerance,
677
- recipient,
678
- deadlineOrPreviousBlockhash: deadline,
679
- });
680
- expect(calldata).toEqual(expectedCalldata);
681
- expect(value).toBe('0x00');
682
- }));
683
- });
684
- });
685
- describe('single-hop exact output (v2 + v3)', () => {
686
- describe('different trade configurations result in identical calldata', () => {
687
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000e442712a67000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000660000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e45023b4df0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000067000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004449404b7c00000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000';
688
- const amountOut = sdk_core_1.CurrencyAmount.fromRawAmount(ETHER, jsbi_1.default.BigInt(100));
689
- const v2Trade = v2_sdk_1.Trade.exactOut(new v2_sdk_1.Route([pair_1_WETH], token1, ETHER), amountOut);
690
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_1_WETH], token1, ETHER), amountOut, sdk_core_1.TradeType.EXACT_OUTPUT);
691
- it('array of trades', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
692
- const trades = [v2Trade, yield v3Trade];
693
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
694
- slippageTolerance,
695
- recipient,
696
- deadlineOrPreviousBlockhash: deadline,
697
- });
698
- expect(calldata).toEqual(expectedCalldata);
699
- expect(value).toBe('0x00');
700
- }));
701
- it('meta-trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
702
- const trades = yield _1.Trade.fromRoutes([
703
- {
704
- routev2: v2Trade.route,
705
- amount: amountOut,
706
- },
707
- ], [
708
- {
709
- routev3: (yield v3Trade).swaps[0].route,
710
- amount: amountOut,
711
- },
712
- ], sdk_core_1.TradeType.EXACT_OUTPUT);
713
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
714
- slippageTolerance,
715
- recipient,
716
- deadlineOrPreviousBlockhash: deadline,
717
- });
718
- expect(calldata).toEqual(expectedCalldata);
719
- expect(value).toBe('0x00');
720
- }));
721
- });
722
- });
723
- describe('multi-hop exact input (v2 + v3)', () => {
724
- describe('different trade configurations result in identical calldata', () => {
725
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000104472b43f30000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000124b858183f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000005f00000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000001000bb80000000000000000000000000000000000000002000bb8c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004449404b7c00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000';
726
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(100));
727
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_0_1, pair_1_WETH], token0, ETHER), amountIn);
728
- /// mixedRouteTrade mirrors v2Trade
729
- const mixedRouteTrade = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pair_0_1, pair_1_WETH], token0, ETHER), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
730
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_0_1, pool_V3_1_WETH], token0, ETHER), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
731
- it('array of trades', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
732
- const trades = [v2Trade, yield v3Trade];
733
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
734
- slippageTolerance,
735
- recipient,
736
- deadlineOrPreviousBlockhash: deadline,
737
- });
738
- expect(calldata).toEqual(expectedCalldata);
739
- expect(value).toBe('0x00');
740
- }));
741
- it('array of trades with mixedRoute produces same calldata', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
742
- const trades = [yield mixedRouteTrade, yield v3Trade];
743
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
744
- slippageTolerance,
745
- recipient,
746
- deadlineOrPreviousBlockhash: deadline,
747
- });
748
- expect(calldata).toEqual(expectedCalldata);
749
- expect(value).toBe('0x00');
750
- }));
751
- it('meta-trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
752
- const trades = yield _1.Trade.fromRoutes([
753
- {
754
- routev2: v2Trade.route,
755
- amount: amountIn,
756
- },
757
- ], [
758
- {
759
- routev3: (yield v3Trade).swaps[0].route,
760
- amount: amountIn,
761
- },
762
- ], sdk_core_1.TradeType.EXACT_INPUT);
763
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
764
- slippageTolerance,
765
- recipient,
766
- deadlineOrPreviousBlockhash: deadline,
767
- });
768
- expect(calldata).toEqual(expectedCalldata);
769
- expect(value).toBe('0x00');
770
- }));
771
- it('meta-trade with mixedRoute produces same calldata but in different order', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
772
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000124b858183f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000005f00000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000001000bb80000000000000000000000000000000000000002000bb8c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104472b43f30000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004449404b7c00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000';
773
- const trades = yield _1.Trade.fromRoutes([], [
774
- {
775
- routev3: (yield v3Trade).swaps[0].route,
776
- amount: amountIn,
777
- },
778
- ], sdk_core_1.TradeType.EXACT_INPUT, [
779
- {
780
- mixedRoute: (yield mixedRouteTrade).swaps[0].route,
781
- amount: amountIn,
782
- },
783
- ]);
784
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
785
- slippageTolerance,
786
- recipient,
787
- deadlineOrPreviousBlockhash: deadline,
788
- });
789
- expect(calldata).toEqual(expectedCalldata);
790
- expect(value).toBe('0x00');
791
- }));
792
- });
793
- });
794
- describe('multi-hop exact output (v2 + v3)', () => {
795
- describe('different trade configurations result in identical calldata', () => {
796
- const expectedCalldata = '0x5ae401dc000000000000000000000000000000000000000000000000000000000000007b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010442712a670000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006700000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012409b81346000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000690000000000000000000000000000000000000000000000000000000000000042c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000bb80000000000000000000000000000000000000002000bb8000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004449404b7c00000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000';
797
- const amountOut = sdk_core_1.CurrencyAmount.fromRawAmount(ETHER, jsbi_1.default.BigInt(100));
798
- const v2Trade = v2_sdk_1.Trade.exactOut(new v2_sdk_1.Route([pair_0_1, pair_1_WETH], token0, ETHER), amountOut);
799
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_0_1, pool_V3_1_WETH], token0, ETHER), amountOut, sdk_core_1.TradeType.EXACT_OUTPUT);
800
- it('array of trades', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
801
- const trades = [v2Trade, yield v3Trade];
802
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
803
- slippageTolerance,
804
- recipient,
805
- deadlineOrPreviousBlockhash: deadline,
806
- });
807
- expect(calldata).toEqual(expectedCalldata);
808
- expect(value).toBe('0x00');
809
- }));
810
- it('meta-trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
811
- const trades = yield _1.Trade.fromRoutes([
812
- {
813
- routev2: v2Trade.route,
814
- amount: amountOut,
815
- },
816
- ], [
817
- {
818
- routev3: (yield v3Trade).swaps[0].route,
819
- amount: amountOut,
820
- },
821
- ], sdk_core_1.TradeType.EXACT_OUTPUT);
822
- const { calldata, value } = _1.SwapRouter.swapCallParameters(trades, {
823
- slippageTolerance,
824
- recipient,
825
- deadlineOrPreviousBlockhash: deadline,
826
- });
827
- expect(calldata).toEqual(expectedCalldata);
828
- expect(value).toBe('0x00');
829
- }));
830
- });
831
- });
832
- });
833
- describe('#swapAndAddCallParameters', () => {
834
- describe('single-hop trades', () => {
835
- const expectedCalldata = '0xac9650d80000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003a00000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000000000000005e000000000000000000000000000000000000000000000000000000000000000e4472b43f3000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000032c89c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000032c8ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010411ed56c9000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000bb8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc4000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
836
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(10));
837
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_0_1], token0, token1), amountIn);
838
- /// mirrors V2Trade
839
- const mixedRouteTrade2 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pair_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
840
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
841
- /// mixedRoute mirrors v3Trade
842
- const mixedRouteTrade3 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
843
- const position = new v3_sdk_1.Position({
844
- pool: pool_V3_0_1,
845
- tickLower: -60,
846
- tickUpper: 60,
847
- liquidity: 1111111111,
848
- });
849
- const addLiquidityOptions = {
850
- recipient: '0x0000000000000000000000000000000000000006',
851
- slippageTolerance,
852
- deadline: Math.pow(2, 32),
853
- };
854
- it('correctly encodes the entire swap process', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
855
- const trades = [v2Trade, yield v3Trade];
856
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.NOT_REQUIRED, approveAndCall_1.ApprovalTypes.NOT_REQUIRED);
857
- expect(methodParameters.calldata).toEqual(expectedCalldata);
858
- }));
859
- it('correctly encodes the entire swap process when v2 + mixedRoute', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
860
- const trades = [v2Trade, yield mixedRouteTrade3];
861
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.NOT_REQUIRED, approveAndCall_1.ApprovalTypes.NOT_REQUIRED);
862
- expect(methodParameters.calldata).toEqual(expectedCalldata);
863
- }));
864
- it('correctly encodes the entire swap process when mixedRoute + v3', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
865
- const trades = [yield mixedRouteTrade2, yield v3Trade];
866
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.NOT_REQUIRED, approveAndCall_1.ApprovalTypes.NOT_REQUIRED);
867
- expect(methodParameters.calldata).toEqual(expectedCalldata);
868
- }));
869
- });
870
- describe('multi-hop trades', () => {
871
- const expectedCalldata = '0xac9650d80000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000003800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000048000000000000000000000000000000000000000000000000000000000000005c000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000104472b43f30000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000124b858183f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000005f00000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000001000bb80000000000000000000000000000000000000002000bb8c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000032c7eb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000032c8ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010411ed56c90000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000bb8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc4000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
872
- const pool_V3_0_WETH = makeV3Pool(token0, WETH, liquidity);
873
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(100));
874
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_0_1, pair_1_WETH], token0, WETH), amountIn);
875
- /// mirrors V2Trade
876
- const mixedRouteTrade2 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pair_0_1, pair_1_WETH], token0, WETH), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
877
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_0_1, pool_V3_1_WETH], token0, WETH), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
878
- /// mixedRoute mirrors v3Trade
879
- const mixedRouteTrade3 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pool_V3_0_1, pool_V3_1_WETH], token0, WETH), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
880
- const position = new v3_sdk_1.Position({
881
- pool: pool_V3_0_WETH,
882
- tickLower: -60,
883
- tickUpper: 60,
884
- liquidity: 1111111111,
885
- });
886
- const addLiquidityOptions = {
887
- recipient: '0x0000000000000000000000000000000000000006',
888
- slippageTolerance,
889
- deadline: Math.pow(2, 32),
890
- };
891
- it('encodes the entire swap process for a multi route trade', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
892
- const trades = [v2Trade, yield v3Trade];
893
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.NOT_REQUIRED, approveAndCall_1.ApprovalTypes.NOT_REQUIRED);
894
- expect(methodParameters.calldata).toEqual(expectedCalldata);
895
- }));
896
- it('encodes the entire swap process for a multi route trade with v2, mixedRoute', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
897
- const trades = [v2Trade, yield mixedRouteTrade3];
898
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.NOT_REQUIRED, approveAndCall_1.ApprovalTypes.NOT_REQUIRED);
899
- expect(methodParameters.calldata).toEqual(expectedCalldata);
900
- }));
901
- it('encodes the entire swap process for a multi route trade with mixedRoute, v3', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
902
- const trades = [yield mixedRouteTrade2, yield v3Trade];
903
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.NOT_REQUIRED, approveAndCall_1.ApprovalTypes.NOT_REQUIRED);
904
- expect(methodParameters.calldata).toEqual(expectedCalldata);
905
- }));
906
- it('encodes the entire swap process for a multi route trade with mixedRoute, mixedRoute', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
907
- const trades = [yield mixedRouteTrade2, yield mixedRouteTrade3];
908
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.NOT_REQUIRED, approveAndCall_1.ApprovalTypes.NOT_REQUIRED);
909
- expect(methodParameters.calldata).toEqual(expectedCalldata);
910
- }));
911
- });
912
- describe('adding liquidity to an existing position', () => {
913
- const expectedCalldata = '0xac9650d80000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000058000000000000000000000000000000000000000000000000000000000000000e4472b43f3000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000032c89c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000032c8ad0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f100b20500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
914
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(10));
915
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_0_1], token0, token1), amountIn);
916
- const mixedRouteTrade2 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pair_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
917
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
918
- const mixedRouteTrade3 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
919
- const position = new v3_sdk_1.Position({
920
- pool: pool_V3_0_1,
921
- tickLower: -60,
922
- tickUpper: 60,
923
- liquidity: 1111111111,
924
- });
925
- const addLiquidityOptions = {
926
- slippageTolerance,
927
- deadline: Math.pow(2, 32),
928
- tokenId: 1,
929
- };
930
- it('correctly encodes the entire swap process', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
931
- const trades = [v2Trade, yield v3Trade];
932
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.NOT_REQUIRED, approveAndCall_1.ApprovalTypes.NOT_REQUIRED);
933
- expect(methodParameters.calldata).toEqual(expectedCalldata);
934
- }));
935
- it('correctly encodes the entire swap process, v2, mixed', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
936
- const trades = [v2Trade, yield mixedRouteTrade3];
937
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.NOT_REQUIRED, approveAndCall_1.ApprovalTypes.NOT_REQUIRED);
938
- expect(methodParameters.calldata).toEqual(expectedCalldata);
939
- }));
940
- it('correctly encodes the entire swap process, mixed, v3', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
941
- const trades = [yield mixedRouteTrade2, yield v3Trade];
942
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.NOT_REQUIRED, approveAndCall_1.ApprovalTypes.NOT_REQUIRED);
943
- expect(methodParameters.calldata).toEqual(expectedCalldata);
944
- }));
945
- });
946
- describe('when MAX tokens must be approved to the NFT Manager', () => {
947
- const expectedCalldata = '0xac9650d80000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000005200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000068000000000000000000000000000000000000000000000000000000000000000e4472b43f3000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000032c89c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000032c8ad000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024571ac8b00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024571ac8b000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f100b20500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
948
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(10));
949
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_0_1], token0, token1), amountIn);
950
- const mixedRouteTrade2 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pair_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
951
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
952
- const mixedRouteTrade3 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
953
- const position = new v3_sdk_1.Position({
954
- pool: pool_V3_0_1,
955
- tickLower: -60,
956
- tickUpper: 60,
957
- liquidity: 1111111111,
958
- });
959
- const addLiquidityOptions = {
960
- slippageTolerance,
961
- deadline: Math.pow(2, 32),
962
- tokenId: 1,
963
- };
964
- it('correctly encodes the entire swap process', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
965
- const trades = [v2Trade, yield v3Trade];
966
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.MAX, approveAndCall_1.ApprovalTypes.MAX);
967
- expect(methodParameters.calldata).toEqual(expectedCalldata);
968
- }));
969
- it('correctly encodes the entire swap process, v2, mixed', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
970
- const trades = [v2Trade, yield mixedRouteTrade3];
971
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.MAX, approveAndCall_1.ApprovalTypes.MAX);
972
- expect(methodParameters.calldata).toEqual(expectedCalldata);
973
- }));
974
- it('correctly encodes the entire swap process, mixed, v3', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
975
- const trades = [yield mixedRouteTrade2, yield v3Trade];
976
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.MAX, approveAndCall_1.ApprovalTypes.MAX);
977
- expect(methodParameters.calldata).toEqual(expectedCalldata);
978
- }));
979
- it('correctly encodes the entire swap process, mixed, mixed', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
980
- const trades = [yield mixedRouteTrade2, yield mixedRouteTrade3];
981
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.MAX, approveAndCall_1.ApprovalTypes.MAX);
982
- expect(methodParameters.calldata).toEqual(expectedCalldata);
983
- }));
984
- });
985
- describe('when MAX_MINUS_ONE tokens must be approved to the NFT Manager', () => {
986
- const expectedCalldata = '0xac9650d80000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000005200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000068000000000000000000000000000000000000000000000000000000000000000e4472b43f3000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000032c89c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000032c8ad000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024cab372ce0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024cab372ce00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f100b20500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
987
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(10));
988
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_0_1], token0, token1), amountIn);
989
- const mixedRouteTrade2 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pair_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
990
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
991
- const mixedRouteTrade3 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
992
- const position = new v3_sdk_1.Position({
993
- pool: pool_V3_0_1,
994
- tickLower: -60,
995
- tickUpper: 60,
996
- liquidity: 1111111111,
997
- });
998
- const addLiquidityOptions = {
999
- slippageTolerance,
1000
- deadline: Math.pow(2, 32),
1001
- tokenId: 1,
1002
- };
1003
- it('correctly encodes the entire swap process', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1004
- const trades = [v2Trade, yield v3Trade];
1005
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.MAX_MINUS_ONE, approveAndCall_1.ApprovalTypes.MAX_MINUS_ONE);
1006
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1007
- }));
1008
- it('correctly encodes the entire swap process, v2, mixed', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1009
- const trades = [v2Trade, yield mixedRouteTrade3];
1010
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.MAX_MINUS_ONE, approveAndCall_1.ApprovalTypes.MAX_MINUS_ONE);
1011
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1012
- }));
1013
- it('correctly encodes the entire swap process, mixed, v3', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1014
- const trades = [yield mixedRouteTrade2, yield v3Trade];
1015
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.MAX_MINUS_ONE, approveAndCall_1.ApprovalTypes.MAX_MINUS_ONE);
1016
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1017
- }));
1018
- it('correctly encodes the entire swap process, mixed, mixed', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1019
- const trades = [yield mixedRouteTrade2, yield mixedRouteTrade3];
1020
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.MAX_MINUS_ONE, approveAndCall_1.ApprovalTypes.MAX_MINUS_ONE);
1021
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1022
- }));
1023
- });
1024
- describe('when ZERO_THEN_MAX tokens must be approved to the NFT Manager', () => {
1025
- const expectedCalldata = '0xac9650d80000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000005200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000068000000000000000000000000000000000000000000000000000000000000000e4472b43f3000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000032c89c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000032c8ad000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024639d71a90000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024639d71a900000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f100b20500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
1026
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(10));
1027
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_0_1], token0, token1), amountIn);
1028
- const mixedRouteTrade2 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pair_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
1029
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
1030
- const mixedRouteTrade3 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
1031
- const position = new v3_sdk_1.Position({
1032
- pool: pool_V3_0_1,
1033
- tickLower: -60,
1034
- tickUpper: 60,
1035
- liquidity: 1111111111,
1036
- });
1037
- const addLiquidityOptions = {
1038
- slippageTolerance,
1039
- deadline: Math.pow(2, 32),
1040
- tokenId: 1,
1041
- };
1042
- it('correctly encodes the entire swap process', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1043
- const trades = [v2Trade, yield v3Trade];
1044
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX);
1045
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1046
- }));
1047
- it('correctly encodes the entire swap process v2, mixed', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1048
- const trades = [v2Trade, yield mixedRouteTrade3];
1049
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX);
1050
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1051
- }));
1052
- it('correctly encodes the entire swap process mixed, v3', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1053
- const trades = [yield mixedRouteTrade2, yield v3Trade];
1054
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX);
1055
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1056
- }));
1057
- it('correctly encodes the entire swap process mixed, mixed', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1058
- const trades = [yield mixedRouteTrade2, yield mixedRouteTrade3];
1059
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX);
1060
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1061
- }));
1062
- });
1063
- describe('when ZERO_THEN_MAX_MINUS_ONE tokens must be approved to the NFT Manager', () => {
1064
- const expectedCalldata = '0xac9650d80000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000005200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000068000000000000000000000000000000000000000000000000000000000000000e4472b43f3000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000032c89c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000032c8ad000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024ab3fdd500000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024ab3fdd5000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f100b20500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
1065
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token0, jsbi_1.default.BigInt(10));
1066
- const v2Trade = v2_sdk_1.Trade.exactIn(new v2_sdk_1.Route([pair_0_1], token0, token1), amountIn);
1067
- const mixedRouteTrade2 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pair_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
1068
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
1069
- const mixedRouteTrade3 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pool_V3_0_1], token0, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
1070
- const position = new v3_sdk_1.Position({
1071
- pool: pool_V3_0_1,
1072
- tickLower: -60,
1073
- tickUpper: 60,
1074
- liquidity: 1111111111,
1075
- });
1076
- const addLiquidityOptions = {
1077
- slippageTolerance,
1078
- deadline: Math.pow(2, 32),
1079
- tokenId: 1,
1080
- };
1081
- it('correctly encodes the entire swap process', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1082
- const trades = [v2Trade, yield v3Trade];
1083
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX_MINUS_ONE, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX_MINUS_ONE);
1084
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1085
- }));
1086
- it('correctly encodes the entire swap process v2, mixed', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1087
- const trades = [v2Trade, yield mixedRouteTrade3];
1088
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX_MINUS_ONE, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX_MINUS_ONE);
1089
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1090
- }));
1091
- it('correctly encodes the entire swap process mixed, v3', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1092
- const trades = [yield mixedRouteTrade2, yield v3Trade];
1093
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX_MINUS_ONE, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX_MINUS_ONE);
1094
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1095
- }));
1096
- it('correctly encodes the entire swap process mixed, mixed', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1097
- const trades = [yield mixedRouteTrade2, yield mixedRouteTrade3];
1098
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX_MINUS_ONE, approveAndCall_1.ApprovalTypes.ZERO_THEN_MAX_MINUS_ONE);
1099
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1100
- }));
1101
- });
1102
- describe('when input is native', () => {
1103
- const expectedCalldata = '0xac9650d8000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004a0000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000032c8a50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000241c58db4f000000000000000000000000000000000000000000000000000000000032c8ad000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024571ac8b0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024571ac8b000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f100b2050000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024496169970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
1104
- const ETH = sdk_core_1.Ether.onChain(1);
1105
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(ETH, jsbi_1.default.BigInt(10));
1106
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_1_WETH], ETH, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
1107
- const mixedRouteTrade3 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pool_V3_1_WETH], ETH, token1), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
1108
- const position = new v3_sdk_1.Position({
1109
- pool: pool_V3_1_WETH,
1110
- tickLower: -60,
1111
- tickUpper: 60,
1112
- liquidity: 1111111111,
1113
- });
1114
- const addLiquidityOptions = {
1115
- slippageTolerance,
1116
- deadline: Math.pow(2, 32),
1117
- tokenId: 1,
1118
- };
1119
- it('correctly encodes the entire swap process', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1120
- const trades = [yield v3Trade];
1121
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.MAX, approveAndCall_1.ApprovalTypes.MAX);
1122
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1123
- }));
1124
- it('correctly encodes the entire swap process when is a mixedRoute', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1125
- const trades = [yield mixedRouteTrade3];
1126
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.MAX, approveAndCall_1.ApprovalTypes.MAX);
1127
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1128
- }));
1129
- });
1130
- describe('when output is native', () => {
1131
- const expectedCalldata = '0xac9650d8000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004a0000000000000000000000000000000000000000000000000000000000000052000000000000000000000000000000000000000000000000000000000000000e404e45aaf0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000241c58db4f000000000000000000000000000000000000000000000000000000000032c8a5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f2d5d56b0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000032c8ad000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024571ac8b00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024571ac8b0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f100b2050000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e90a182f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002449616997000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
1132
- const ETH = sdk_core_1.Ether.onChain(1);
1133
- const amountIn = sdk_core_1.CurrencyAmount.fromRawAmount(token1, jsbi_1.default.BigInt(10));
1134
- const v3Trade = v3_sdk_1.Trade.fromRoute(new v3_sdk_1.Route([pool_V3_1_WETH], token1, ETH), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
1135
- const mixedRouteTrade3 = trade_1.MixedRouteTrade.fromRoute(new route_1.MixedRouteSDK([pool_V3_1_WETH], token1, ETH), amountIn, sdk_core_1.TradeType.EXACT_INPUT);
1136
- const position = new v3_sdk_1.Position({
1137
- pool: pool_V3_1_WETH,
1138
- tickLower: -60,
1139
- tickUpper: 60,
1140
- liquidity: 1111111111,
1141
- });
1142
- const addLiquidityOptions = {
1143
- slippageTolerance,
1144
- deadline: Math.pow(2, 32),
1145
- tokenId: 1,
1146
- };
1147
- it('correctly encodes the entire swap process', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1148
- const trades = [yield v3Trade];
1149
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.MAX, approveAndCall_1.ApprovalTypes.MAX);
1150
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1151
- }));
1152
- it('correctly encodes the entire swap process when is mixedRoute', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1153
- const trades = [yield mixedRouteTrade3];
1154
- const methodParameters = _1.SwapRouter.swapAndAddCallParameters(trades, { slippageTolerance }, position, addLiquidityOptions, approveAndCall_1.ApprovalTypes.MAX, approveAndCall_1.ApprovalTypes.MAX);
1155
- expect(methodParameters.calldata).toEqual(expectedCalldata);
1156
- }));
1157
- });
1158
- });
1159
- });
1160
- });
1161
- //# sourceMappingURL=swapRouter.test.js.map