@uniswap/universal-router-sdk 4.19.0 → 4.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/dist/{entities → cjs/src/entities}/Command.d.ts +12 -12
  2. package/dist/cjs/src/entities/Command.js +9 -0
  3. package/dist/cjs/src/entities/Command.js.map +1 -0
  4. package/dist/{entities → cjs/src/entities}/actions/index.d.ts +2 -2
  5. package/dist/cjs/src/entities/actions/index.js +6 -0
  6. package/dist/cjs/src/entities/actions/index.js.map +1 -0
  7. package/dist/{entities → cjs/src/entities}/actions/uniswap.d.ts +30 -30
  8. package/dist/cjs/src/entities/actions/uniswap.js +365 -0
  9. package/dist/cjs/src/entities/actions/uniswap.js.map +1 -0
  10. package/dist/{entities → cjs/src/entities}/actions/unwrapWETH.d.ts +12 -12
  11. package/dist/cjs/src/entities/actions/unwrapWETH.js +33 -0
  12. package/dist/cjs/src/entities/actions/unwrapWETH.js.map +1 -0
  13. package/dist/{entities → cjs/src/entities}/index.d.ts +2 -2
  14. package/dist/cjs/src/entities/index.js +6 -0
  15. package/dist/cjs/src/entities/index.js.map +1 -0
  16. package/dist/cjs/src/index.d.ts +9 -0
  17. package/dist/cjs/src/index.js +24 -0
  18. package/dist/cjs/src/index.js.map +1 -0
  19. package/dist/{swapRouter.d.ts → cjs/src/swapRouter.d.ts} +37 -37
  20. package/dist/cjs/src/swapRouter.js +120 -0
  21. package/dist/cjs/src/swapRouter.js.map +1 -0
  22. package/dist/{utils → cjs/src/utils}/commandParser.d.ts +34 -34
  23. package/dist/cjs/src/utils/commandParser.js +144 -0
  24. package/dist/cjs/src/utils/commandParser.js.map +1 -0
  25. package/dist/{utils → cjs/src/utils}/constants.d.ts +30 -30
  26. package/dist/cjs/src/utils/constants.js +373 -0
  27. package/dist/cjs/src/utils/constants.js.map +1 -0
  28. package/dist/{utils → cjs/src/utils}/getCurrencyAddress.d.ts +2 -2
  29. package/dist/cjs/src/utils/getCurrencyAddress.js +9 -0
  30. package/dist/cjs/src/utils/getCurrencyAddress.js.map +1 -0
  31. package/dist/{utils → cjs/src/utils}/inputTokens.d.ts +23 -23
  32. package/dist/cjs/src/utils/inputTokens.js +58 -0
  33. package/dist/cjs/src/utils/inputTokens.js.map +1 -0
  34. package/dist/{utils → cjs/src/utils}/numbers.d.ts +6 -6
  35. package/dist/cjs/src/utils/numbers.js +22 -0
  36. package/dist/cjs/src/utils/numbers.js.map +1 -0
  37. package/dist/{utils → cjs/src/utils}/pathCurrency.d.ts +3 -3
  38. package/dist/cjs/src/utils/pathCurrency.js +27 -0
  39. package/dist/cjs/src/utils/pathCurrency.js.map +1 -0
  40. package/dist/{utils → cjs/src/utils}/routerCommands.d.ts +64 -64
  41. package/dist/cjs/src/utils/routerCommands.js +231 -0
  42. package/dist/cjs/src/utils/routerCommands.js.map +1 -0
  43. package/dist/{utils → cjs/src/utils}/routerTradeAdapter.d.ts +73 -73
  44. package/dist/cjs/src/utils/routerTradeAdapter.js +139 -0
  45. package/dist/cjs/src/utils/routerTradeAdapter.js.map +1 -0
  46. package/dist/esm/src/entities/Command.d.ts +12 -0
  47. package/dist/esm/src/entities/Command.js +6 -0
  48. package/dist/esm/src/entities/Command.js.map +1 -0
  49. package/dist/esm/src/entities/actions/index.d.ts +2 -0
  50. package/dist/esm/src/entities/actions/index.js +3 -0
  51. package/dist/esm/src/entities/actions/index.js.map +1 -0
  52. package/dist/esm/src/entities/actions/uniswap.d.ts +30 -0
  53. package/dist/esm/src/entities/actions/uniswap.js +361 -0
  54. package/dist/esm/src/entities/actions/uniswap.js.map +1 -0
  55. package/dist/esm/src/entities/actions/unwrapWETH.d.ts +12 -0
  56. package/dist/esm/src/entities/actions/unwrapWETH.js +28 -0
  57. package/dist/esm/src/entities/actions/unwrapWETH.js.map +1 -0
  58. package/dist/esm/src/entities/index.d.ts +2 -0
  59. package/dist/esm/src/entities/index.js +3 -0
  60. package/dist/esm/src/entities/index.js.map +1 -0
  61. package/dist/esm/src/index.d.ts +9 -0
  62. package/dist/esm/src/index.js +7 -0
  63. package/dist/esm/src/index.js.map +1 -0
  64. package/dist/esm/src/swapRouter.d.ts +37 -0
  65. package/dist/esm/src/swapRouter.js +115 -0
  66. package/dist/esm/src/swapRouter.js.map +1 -0
  67. package/dist/esm/src/utils/commandParser.d.ts +34 -0
  68. package/dist/esm/src/utils/commandParser.js +137 -0
  69. package/dist/esm/src/utils/commandParser.js.map +1 -0
  70. package/dist/esm/src/utils/constants.d.ts +30 -0
  71. package/dist/esm/src/utils/constants.js +367 -0
  72. package/dist/esm/src/utils/constants.js.map +1 -0
  73. package/dist/esm/src/utils/getCurrencyAddress.d.ts +2 -0
  74. package/dist/esm/src/utils/getCurrencyAddress.js +5 -0
  75. package/dist/esm/src/utils/getCurrencyAddress.js.map +1 -0
  76. package/dist/esm/src/utils/inputTokens.d.ts +23 -0
  77. package/dist/esm/src/utils/inputTokens.js +51 -0
  78. package/dist/esm/src/utils/inputTokens.js.map +1 -0
  79. package/dist/esm/src/utils/numbers.d.ts +6 -0
  80. package/dist/esm/src/utils/numbers.js +15 -0
  81. package/dist/esm/src/utils/numbers.js.map +1 -0
  82. package/dist/esm/src/utils/pathCurrency.d.ts +3 -0
  83. package/dist/esm/src/utils/pathCurrency.js +23 -0
  84. package/dist/esm/src/utils/pathCurrency.js.map +1 -0
  85. package/dist/esm/src/utils/routerCommands.d.ts +64 -0
  86. package/dist/esm/src/utils/routerCommands.js +226 -0
  87. package/dist/esm/src/utils/routerCommands.js.map +1 -0
  88. package/dist/esm/src/utils/routerTradeAdapter.d.ts +73 -0
  89. package/dist/esm/src/utils/routerTradeAdapter.js +134 -0
  90. package/dist/esm/src/utils/routerTradeAdapter.js.map +1 -0
  91. package/dist/types/src/entities/Command.d.ts +12 -0
  92. package/dist/types/src/entities/actions/index.d.ts +2 -0
  93. package/dist/types/src/entities/actions/uniswap.d.ts +30 -0
  94. package/dist/types/src/entities/actions/unwrapWETH.d.ts +12 -0
  95. package/dist/types/src/entities/index.d.ts +2 -0
  96. package/dist/types/src/index.d.ts +9 -0
  97. package/dist/types/src/swapRouter.d.ts +37 -0
  98. package/dist/types/src/utils/commandParser.d.ts +34 -0
  99. package/dist/types/src/utils/constants.d.ts +30 -0
  100. package/dist/types/src/utils/getCurrencyAddress.d.ts +2 -0
  101. package/dist/types/src/utils/inputTokens.d.ts +23 -0
  102. package/dist/types/src/utils/numbers.d.ts +6 -0
  103. package/dist/types/src/utils/pathCurrency.d.ts +3 -0
  104. package/dist/types/src/utils/routerCommands.d.ts +64 -0
  105. package/dist/types/src/utils/routerTradeAdapter.d.ts +73 -0
  106. package/package.json +17 -5
  107. package/dist/index.d.ts +0 -6
  108. package/dist/index.js +0 -8
  109. package/dist/test/forge/writeInterop.d.ts +0 -2
  110. package/dist/test/utils/addresses.d.ts +0 -5
  111. package/dist/test/utils/hexToDecimalString.d.ts +0 -2
  112. package/dist/test/utils/permit2.d.ts +0 -7
  113. package/dist/test/utils/uniswapData.d.ts +0 -24
  114. package/dist/universal-router-sdk.cjs.development.js +0 -1433
  115. package/dist/universal-router-sdk.cjs.development.js.map +0 -1
  116. package/dist/universal-router-sdk.cjs.production.min.js +0 -2
  117. package/dist/universal-router-sdk.cjs.production.min.js.map +0 -1
  118. package/dist/universal-router-sdk.esm.js +0 -1426
  119. package/dist/universal-router-sdk.esm.js.map +0 -1
@@ -0,0 +1,367 @@
1
+ import { BigNumber } from 'ethers';
2
+ export var UniversalRouterVersion;
3
+ (function (UniversalRouterVersion) {
4
+ UniversalRouterVersion["V1_2"] = "1.2";
5
+ UniversalRouterVersion["V2_0"] = "2.0";
6
+ })(UniversalRouterVersion || (UniversalRouterVersion = {}));
7
+ const WETH_NOT_SUPPORTED_ON_CHAIN = '0x0000000000000000000000000000000000000000';
8
+ // Todo: Change `CHAIN_CONFIGS` to pull the UR address with v4
9
+ export const CHAIN_CONFIGS = {
10
+ // mainnet
11
+ [1]: {
12
+ weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
13
+ routerConfigs: {
14
+ [UniversalRouterVersion.V1_2]: {
15
+ address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
16
+ creationBlock: 17143817,
17
+ },
18
+ [UniversalRouterVersion.V2_0]: {
19
+ address: '0x66a9893cc07d91d95644aedd05d03f95e1dba8af',
20
+ creationBlock: 1737658355,
21
+ },
22
+ },
23
+ },
24
+ // goerli
25
+ [5]: {
26
+ weth: '0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6',
27
+ routerConfigs: {
28
+ [UniversalRouterVersion.V1_2]: {
29
+ address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
30
+ creationBlock: 8940568,
31
+ },
32
+ [UniversalRouterVersion.V2_0]: {
33
+ address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
34
+ creationBlock: 8940568,
35
+ },
36
+ },
37
+ },
38
+ // sepolia
39
+ [11155111]: {
40
+ weth: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',
41
+ routerConfigs: {
42
+ [UniversalRouterVersion.V1_2]: {
43
+ address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
44
+ creationBlock: 3543575,
45
+ },
46
+ [UniversalRouterVersion.V2_0]: {
47
+ address: '0x3a9d48ab9751398bbfa63ad67599bb04e4bdf98b',
48
+ creationBlock: 7259601,
49
+ },
50
+ },
51
+ },
52
+ // polygon
53
+ [137]: {
54
+ weth: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270',
55
+ routerConfigs: {
56
+ [UniversalRouterVersion.V1_2]: {
57
+ address: '0xec7BE89e9d109e7e3Fec59c222CF297125FEFda2',
58
+ creationBlock: 52210153,
59
+ },
60
+ [UniversalRouterVersion.V2_0]: {
61
+ address: '0x1095692a6237d83c6a72f3f5efedb9a670c49223',
62
+ creationBlock: 1737492197,
63
+ },
64
+ },
65
+ },
66
+ //polygon mumbai
67
+ [80001]: {
68
+ weth: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889',
69
+ routerConfigs: {
70
+ [UniversalRouterVersion.V1_2]: {
71
+ address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
72
+ creationBlock: 35176052,
73
+ },
74
+ [UniversalRouterVersion.V2_0]: {
75
+ address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
76
+ creationBlock: 35176052,
77
+ },
78
+ },
79
+ },
80
+ //optimism
81
+ [10]: {
82
+ weth: '0x4200000000000000000000000000000000000006',
83
+ routerConfigs: {
84
+ [UniversalRouterVersion.V1_2]: {
85
+ address: '0xCb1355ff08Ab38bBCE60111F1bb2B784bE25D7e8',
86
+ creationBlock: 114702266,
87
+ },
88
+ [UniversalRouterVersion.V2_0]: {
89
+ address: '0x851116d9223fabed8e56c0e6b8ad0c31d98b3507',
90
+ creationBlock: 1737494278,
91
+ },
92
+ },
93
+ },
94
+ // optimism goerli
95
+ [420]: {
96
+ weth: '0x4200000000000000000000000000000000000006',
97
+ routerConfigs: {
98
+ [UniversalRouterVersion.V1_2]: {
99
+ address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
100
+ creationBlock: 8887728,
101
+ },
102
+ [UniversalRouterVersion.V2_0]: {
103
+ address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
104
+ creationBlock: 8887728,
105
+ },
106
+ },
107
+ },
108
+ // arbitrum
109
+ [42161]: {
110
+ weth: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
111
+ routerConfigs: {
112
+ [UniversalRouterVersion.V1_2]: {
113
+ address: '0x5E325eDA8064b456f4781070C0738d849c824258',
114
+ creationBlock: 169472836,
115
+ },
116
+ [UniversalRouterVersion.V2_0]: {
117
+ address: '0xa51afafe0263b40edaef0df8781ea9aa03e381a3',
118
+ creationBlock: 1737487458,
119
+ },
120
+ },
121
+ },
122
+ // arbitrum goerli
123
+ [421613]: {
124
+ weth: '0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3',
125
+ routerConfigs: {
126
+ [UniversalRouterVersion.V1_2]: {
127
+ address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
128
+ creationBlock: 18815277,
129
+ },
130
+ [UniversalRouterVersion.V2_0]: {
131
+ address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
132
+ creationBlock: 18815277,
133
+ },
134
+ },
135
+ },
136
+ // celo
137
+ [42220]: {
138
+ weth: WETH_NOT_SUPPORTED_ON_CHAIN,
139
+ routerConfigs: {
140
+ [UniversalRouterVersion.V1_2]: {
141
+ address: '0x643770e279d5d0733f21d6dc03a8efbabf3255b4',
142
+ creationBlock: 21407637,
143
+ },
144
+ [UniversalRouterVersion.V2_0]: {
145
+ address: '0x643770e279d5d0733f21d6dc03a8efbabf3255b4',
146
+ creationBlock: 21407637,
147
+ },
148
+ },
149
+ },
150
+ // celo alfajores
151
+ [44787]: {
152
+ weth: WETH_NOT_SUPPORTED_ON_CHAIN,
153
+ routerConfigs: {
154
+ [UniversalRouterVersion.V1_2]: {
155
+ address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
156
+ creationBlock: 17566658,
157
+ },
158
+ [UniversalRouterVersion.V2_0]: {
159
+ address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
160
+ creationBlock: 17566658,
161
+ },
162
+ },
163
+ },
164
+ // binance smart chain
165
+ [56]: {
166
+ weth: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',
167
+ routerConfigs: {
168
+ [UniversalRouterVersion.V1_2]: {
169
+ address: '0x4Dae2f939ACf50408e13d58534Ff8c2776d45265',
170
+ creationBlock: 35160263,
171
+ },
172
+ [UniversalRouterVersion.V2_0]: {
173
+ address: '0x1906c1d672b88cd1b9ac7593301ca990f94eae07',
174
+ creationBlock: 1737493275,
175
+ },
176
+ },
177
+ },
178
+ // avalanche
179
+ [43114]: {
180
+ weth: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7',
181
+ routerConfigs: {
182
+ [UniversalRouterVersion.V1_2]: {
183
+ address: '0x4Dae2f939ACf50408e13d58534Ff8c2776d45265',
184
+ creationBlock: 40237257,
185
+ },
186
+ [UniversalRouterVersion.V2_0]: {
187
+ address: '0x94b75331ae8d42c1b61065089b7d48fe14aa73b7',
188
+ creationBlock: 1737558236,
189
+ },
190
+ },
191
+ },
192
+ // base goerli
193
+ [84531]: {
194
+ weth: '0x4200000000000000000000000000000000000006',
195
+ routerConfigs: {
196
+ [UniversalRouterVersion.V1_2]: {
197
+ address: '0xd0872d928672ae2ff74bdb2f5130ac12229cafaf',
198
+ creationBlock: 6915289,
199
+ },
200
+ [UniversalRouterVersion.V2_0]: {
201
+ address: '0xd0872d928672ae2ff74bdb2f5130ac12229cafaf',
202
+ creationBlock: 6915289,
203
+ },
204
+ },
205
+ },
206
+ // base mainnet
207
+ [8453]: {
208
+ weth: '0x4200000000000000000000000000000000000006',
209
+ routerConfigs: {
210
+ [UniversalRouterVersion.V1_2]: {
211
+ address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
212
+ creationBlock: 9107268,
213
+ },
214
+ [UniversalRouterVersion.V2_0]: {
215
+ address: '0x6ff5693b99212da76ad316178a184ab56d299b43',
216
+ creationBlock: 1737491485,
217
+ },
218
+ },
219
+ },
220
+ // blast
221
+ [81457]: {
222
+ weth: '0x4300000000000000000000000000000000000004',
223
+ routerConfigs: {
224
+ [UniversalRouterVersion.V1_2]: {
225
+ address: '0x643770E279d5D0733F21d6DC03A8efbABf3255B4',
226
+ creationBlock: 1116444,
227
+ },
228
+ [UniversalRouterVersion.V2_0]: {
229
+ address: '0xeabbcb3e8e415306207ef514f660a3f820025be3',
230
+ creationBlock: 1737564586,
231
+ },
232
+ },
233
+ },
234
+ // zora
235
+ [7777777]: {
236
+ weth: '0x4200000000000000000000000000000000000006',
237
+ routerConfigs: {
238
+ [UniversalRouterVersion.V1_2]: {
239
+ address: '0x2986d9721A49838ab4297b695858aF7F17f38014',
240
+ creationBlock: 11832155,
241
+ },
242
+ [UniversalRouterVersion.V2_0]: {
243
+ address: '0x3315ef7ca28db74abadc6c44570efdf06b04b020',
244
+ creationBlock: 1737562927,
245
+ },
246
+ },
247
+ },
248
+ [324]: {
249
+ weth: '0x5aea5775959fbc2557cc8789bc1bf90a239d9a91',
250
+ routerConfigs: {
251
+ [UniversalRouterVersion.V1_2]: {
252
+ address: '0x28731BCC616B5f51dD52CF2e4dF0E78dD1136C06',
253
+ creationBlock: 12640979,
254
+ },
255
+ [UniversalRouterVersion.V2_0]: {
256
+ address: '0x28731BCC616B5f51dD52CF2e4dF0E78dD1136C06',
257
+ creationBlock: 12640979,
258
+ },
259
+ },
260
+ },
261
+ // worldchain
262
+ [480]: {
263
+ weth: '0x4200000000000000000000000000000000000006',
264
+ routerConfigs: {
265
+ [UniversalRouterVersion.V1_2]: {
266
+ address: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D',
267
+ creationBlock: 4063979,
268
+ },
269
+ [UniversalRouterVersion.V2_0]: {
270
+ address: '0x8ac7bee993bb44dab564ea4bc9ea67bf9eb5e743',
271
+ creationBlock: 1737559557,
272
+ },
273
+ },
274
+ },
275
+ [1301]: {
276
+ weth: '0x4200000000000000000000000000000000000006',
277
+ routerConfigs: {
278
+ [UniversalRouterVersion.V1_2]: {
279
+ address: '0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6',
280
+ creationBlock: 1241811,
281
+ },
282
+ [UniversalRouterVersion.V2_0]: {
283
+ address: '0xf70536b3bcc1bd1a972dc186a2cf84cc6da6be5d',
284
+ creationBlock: 7100543,
285
+ },
286
+ },
287
+ },
288
+ // unichain mainnet
289
+ [130]: {
290
+ weth: '0x4200000000000000000000000000000000000006',
291
+ routerConfigs: {
292
+ [UniversalRouterVersion.V1_2]: {
293
+ address: '0x4D73A4411CA1c660035e4AECC8270E5DdDEC8C17',
294
+ creationBlock: 23678,
295
+ },
296
+ [UniversalRouterVersion.V2_0]: {
297
+ address: '0xef740bf23acae26f6492b10de645d6b98dc8eaf3',
298
+ creationBlock: 1737568156,
299
+ },
300
+ },
301
+ },
302
+ [10143]: {
303
+ weth: '0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701',
304
+ routerConfigs: {
305
+ [UniversalRouterVersion.V1_2]: {
306
+ address: '0x3ae6d8a282d67893e17aa70ebffb33ee5aa65893',
307
+ creationBlock: 23678,
308
+ },
309
+ [UniversalRouterVersion.V2_0]: {
310
+ address: '0x3ae6d8a282d67893e17aa70ebffb33ee5aa65893',
311
+ creationBlock: 23678,
312
+ },
313
+ },
314
+ },
315
+ [84532]: {
316
+ weth: '0x4200000000000000000000000000000000000006',
317
+ routerConfigs: {
318
+ [UniversalRouterVersion.V1_2]: {
319
+ address: '0x492e6456d9528771018deb9e87ef7750ef184104',
320
+ creationBlock: 20216585,
321
+ },
322
+ [UniversalRouterVersion.V2_0]: {
323
+ address: '0x492e6456d9528771018deb9e87ef7750ef184104',
324
+ creationBlock: 20216585,
325
+ },
326
+ },
327
+ },
328
+ [1868]: {
329
+ weth: '0x4200000000000000000000000000000000000006',
330
+ routerConfigs: {
331
+ [UniversalRouterVersion.V1_2]: {
332
+ address: '0x0e2850543f69f678257266e0907ff9a58b3f13de',
333
+ creationBlock: 3254782,
334
+ },
335
+ [UniversalRouterVersion.V2_0]: {
336
+ address: '0x0e2850543f69f678257266e0907ff9a58b3f13de',
337
+ creationBlock: 3254782,
338
+ },
339
+ },
340
+ },
341
+ };
342
+ export const UNIVERSAL_ROUTER_ADDRESS = (version, chainId) => {
343
+ if (!(chainId in CHAIN_CONFIGS))
344
+ throw new Error(`Universal Router not deployed on chain ${chainId}`);
345
+ return CHAIN_CONFIGS[chainId].routerConfigs[version].address;
346
+ };
347
+ export const UNIVERSAL_ROUTER_CREATION_BLOCK = (version, chainId) => {
348
+ if (!(chainId in CHAIN_CONFIGS))
349
+ throw new Error(`Universal Router not deployed on chain ${chainId}`);
350
+ return CHAIN_CONFIGS[chainId].routerConfigs[version].creationBlock;
351
+ };
352
+ export const WETH_ADDRESS = (chainId) => {
353
+ if (!(chainId in CHAIN_CONFIGS))
354
+ throw new Error(`Universal Router not deployed on chain ${chainId}`);
355
+ if (CHAIN_CONFIGS[chainId].weth == WETH_NOT_SUPPORTED_ON_CHAIN)
356
+ throw new Error(`Chain ${chainId} does not have WETH`);
357
+ return CHAIN_CONFIGS[chainId].weth;
358
+ };
359
+ export const CONTRACT_BALANCE = BigNumber.from(2).pow(255);
360
+ export const ETH_ADDRESS = '0x0000000000000000000000000000000000000000';
361
+ export const E_ETH_ADDRESS = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee';
362
+ export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
363
+ export const MAX_UINT256 = BigNumber.from(2).pow(256).sub(1);
364
+ export const MAX_UINT160 = BigNumber.from(2).pow(160).sub(1);
365
+ export const SENDER_AS_RECIPIENT = '0x0000000000000000000000000000000000000001';
366
+ export const ROUTER_AS_RECIPIENT = '0x0000000000000000000000000000000000000002';
367
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,sCAAY,CAAA;IACZ,sCAAY,CAAA;AACd,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC;AAYD,MAAM,2BAA2B,GAAG,4CAA4C,CAAA;AAEhF,8DAA8D;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAmC;IAC3D,UAAU;IACV,CAAC,CAAC,CAAC,EAAE;QACH,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,UAAU;aAC1B;SACF;KACF;IACD,SAAS;IACT,CAAC,CAAC,CAAC,EAAE;QACH,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;SACF;KACF;IACD,UAAU;IACV,CAAC,QAAQ,CAAC,EAAE;QACV,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;SACF;KACF;IACD,UAAU;IACV,CAAC,GAAG,CAAC,EAAE;QACL,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,UAAU;aAC1B;SACF;KACF;IACD,gBAAgB;IAChB,CAAC,KAAK,CAAC,EAAE;QACP,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;SACF;KACF;IACD,UAAU;IACV,CAAC,EAAE,CAAC,EAAE;QACJ,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,SAAS;aACzB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,UAAU;aAC1B;SACF;KACF;IACD,kBAAkB;IAClB,CAAC,GAAG,CAAC,EAAE;QACL,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;SACF;KACF;IACD,WAAW;IACX,CAAC,KAAK,CAAC,EAAE;QACP,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,SAAS;aACzB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,UAAU;aAC1B;SACF;KACF;IACD,kBAAkB;IAClB,CAAC,MAAM,CAAC,EAAE;QACR,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;SACF;KACF;IACD,OAAO;IACP,CAAC,KAAK,CAAC,EAAE;QACP,IAAI,EAAE,2BAA2B;QACjC,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;SACF;KACF;IACD,iBAAiB;IACjB,CAAC,KAAK,CAAC,EAAE;QACP,IAAI,EAAE,2BAA2B;QACjC,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;SACF;KACF;IACD,sBAAsB;IACtB,CAAC,EAAE,CAAC,EAAE;QACJ,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,UAAU;aAC1B;SACF;KACF;IACD,YAAY;IACZ,CAAC,KAAK,CAAC,EAAE;QACP,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,UAAU;aAC1B;SACF;KACF;IACD,cAAc;IACd,CAAC,KAAK,CAAC,EAAE;QACP,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;SACF;KACF;IACD,eAAe;IACf,CAAC,IAAI,CAAC,EAAE;QACN,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,UAAU;aAC1B;SACF;KACF;IACD,QAAQ;IACR,CAAC,KAAK,CAAC,EAAE;QACP,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,UAAU;aAC1B;SACF;KACF;IACD,OAAO;IACP,CAAC,OAAO,CAAC,EAAE;QACT,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,UAAU;aAC1B;SACF;KACF;IACD,CAAC,GAAG,CAAC,EAAE;QACL,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;SACF;KACF;IACD,aAAa;IACb,CAAC,GAAG,CAAC,EAAE;QACL,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,UAAU;aAC1B;SACF;KACF;IACD,CAAC,IAAI,CAAC,EAAE;QACN,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;SACF;KACF;IACD,mBAAmB;IACnB,CAAC,GAAG,CAAC,EAAE;QACL,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,KAAK;aACrB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,UAAU;aAC1B;SACF;KACF;IACD,CAAC,KAAK,CAAC,EAAE;QACP,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,KAAK;aACrB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,KAAK;aACrB;SACF;KACF;IACD,CAAC,KAAK,CAAC,EAAE;QACP,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,QAAQ;aACxB;SACF;KACF;IACD,CAAC,IAAI,CAAC,EAAE;QACN,IAAI,EAAE,4CAA4C;QAClD,aAAa,EAAE;YACb,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;YACD,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,EAAE,4CAA4C;gBACrD,aAAa,EAAE,OAAO;aACvB;SACF;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,OAA+B,EAAE,OAAe,EAAU,EAAE;IACnG,IAAI,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAA;IACrG,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,CAAA;AAC9D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,OAA+B,EAAE,OAAe,EAAU,EAAE;IAC1G,IAAI,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAA;IACrG,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAA;AACpE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAU,EAAE;IACtD,IAAI,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAA;IAErG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,2BAA2B;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,qBAAqB,CAAC,CAAA;IAEtH,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAA;AACpC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,4CAA4C,CAAA;AACvE,MAAM,CAAC,MAAM,aAAa,GAAG,4CAA4C,CAAA;AACzE,MAAM,CAAC,MAAM,YAAY,GAAG,4CAA4C,CAAA;AACxE,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAC5D,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAE5D,MAAM,CAAC,MAAM,mBAAmB,GAAG,4CAA4C,CAAA;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,4CAA4C,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { Currency } from '@uniswap/sdk-core';
2
+ export declare function getCurrencyAddress(currency: Currency): string;
@@ -0,0 +1,5 @@
1
+ import { ETH_ADDRESS } from './constants';
2
+ export function getCurrencyAddress(currency) {
3
+ return currency.isNative ? ETH_ADDRESS : currency.wrapped.address;
4
+ }
5
+ //# sourceMappingURL=getCurrencyAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCurrencyAddress.js","sourceRoot":"","sources":["../../../../src/utils/getCurrencyAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,UAAU,kBAAkB,CAAC,QAAkB;IACnD,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAA;AACnE,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { BigintIsh } from '@uniswap/sdk-core';
2
+ import { NFTPermitOptions } from '@uniswap/v3-sdk';
3
+ import { PermitSingle } from '@uniswap/permit2-sdk';
4
+ import { RoutePlanner } from './routerCommands';
5
+ export interface Permit2Permit extends PermitSingle {
6
+ signature: string;
7
+ }
8
+ export type ApproveProtocol = {
9
+ token: string;
10
+ protocol: string;
11
+ };
12
+ export type Permit2TransferFrom = {
13
+ token: string;
14
+ amount: string;
15
+ recipient?: string;
16
+ };
17
+ export type InputTokenOptions = {
18
+ permit2Permit?: Permit2Permit;
19
+ permit2TransferFrom?: Permit2TransferFrom;
20
+ };
21
+ export declare function encodePermit(planner: RoutePlanner, permit2: Permit2Permit): void;
22
+ export declare function encodeV3PositionPermit(planner: RoutePlanner, permit: NFTPermitOptions, tokenId: BigintIsh): void;
23
+ export declare function encodeInputTokenOptions(planner: RoutePlanner, options: InputTokenOptions): void;
@@ -0,0 +1,51 @@
1
+ import invariant from 'tiny-invariant';
2
+ import { ethers } from 'ethers';
3
+ import { validateAndParseAddress } from '@uniswap/sdk-core';
4
+ import { NonfungiblePositionManager } from '@uniswap/v3-sdk';
5
+ import { CommandType } from './routerCommands';
6
+ import { ROUTER_AS_RECIPIENT } from './constants';
7
+ const SIGNATURE_LENGTH = 65;
8
+ const EIP_2098_SIGNATURE_LENGTH = 64;
9
+ export function encodePermit(planner, permit2) {
10
+ let signature = permit2.signature;
11
+ const length = ethers.utils.arrayify(permit2.signature).length;
12
+ // signature data provided for EIP-1271 may have length different from ECDSA signature
13
+ if (length === SIGNATURE_LENGTH || length === EIP_2098_SIGNATURE_LENGTH) {
14
+ // sanitizes signature to cover edge cases of malformed EIP-2098 sigs and v used as recovery id
15
+ signature = ethers.utils.joinSignature(ethers.utils.splitSignature(permit2.signature));
16
+ }
17
+ planner.addCommand(CommandType.PERMIT2_PERMIT, [permit2, signature]);
18
+ }
19
+ export function encodeV3PositionPermit(planner, permit, tokenId) {
20
+ const calldata = NonfungiblePositionManager.INTERFACE.encodeFunctionData('permit', [
21
+ validateAndParseAddress(permit.spender),
22
+ tokenId,
23
+ permit.deadline,
24
+ permit.v,
25
+ permit.r,
26
+ permit.s,
27
+ ]);
28
+ planner.addCommand(CommandType.V3_POSITION_MANAGER_PERMIT, [calldata]);
29
+ }
30
+ // Handles the encoding of commands needed to gather input tokens for a trade
31
+ // Approval: The router approving another address to take tokens.
32
+ // note: Only seaport and sudoswap support this action. Approvals are left open.
33
+ // Permit: A Permit2 signature-based Permit to allow the router to access a user's tokens
34
+ // Transfer: A Permit2 TransferFrom of tokens from a user to either the router or another address
35
+ export function encodeInputTokenOptions(planner, options) {
36
+ // first ensure that all tokens provided for encoding are the same
37
+ if (!!options.permit2TransferFrom && !!options.permit2Permit)
38
+ invariant(options.permit2TransferFrom.token === options.permit2Permit.details.token, `inconsistent token`);
39
+ // if this order has a options.permit2Permit, encode it
40
+ if (!!options.permit2Permit) {
41
+ encodePermit(planner, options.permit2Permit);
42
+ }
43
+ if (!!options.permit2TransferFrom) {
44
+ planner.addCommand(CommandType.PERMIT2_TRANSFER_FROM, [
45
+ options.permit2TransferFrom.token,
46
+ options.permit2TransferFrom.recipient ? options.permit2TransferFrom.recipient : ROUTER_AS_RECIPIENT,
47
+ options.permit2TransferFrom.amount,
48
+ ]);
49
+ }
50
+ }
51
+ //# sourceMappingURL=inputTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputTokens.js","sourceRoot":"","sources":["../../../../src/utils/inputTokens.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,uBAAuB,EAAa,MAAM,mBAAmB,CAAA;AACtE,OAAO,EAAoB,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAE9E,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAsBjD,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAC3B,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAEpC,MAAM,UAAU,YAAY,CAAC,OAAqB,EAAE,OAAsB;IACxE,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IAEjC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAA;IAC9D,sFAAsF;IACtF,IAAI,MAAM,KAAK,gBAAgB,IAAI,MAAM,KAAK,yBAAyB,EAAE;QACvE,+FAA+F;QAC/F,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;KACvF;IAED,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAqB,EAAE,MAAwB,EAAE,OAAkB;IACxG,MAAM,QAAQ,GAAG,0BAA0B,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE;QACjF,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC;QACvC,OAAO;QACP,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,CAAC;QACR,MAAM,CAAC,CAAC;QACR,MAAM,CAAC,CAAC;KACT,CAAC,CAAA;IAEF,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,0BAA0B,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;AACxE,CAAC;AAED,6EAA6E;AAC7E,iEAAiE;AACjE,kFAAkF;AAClF,yFAAyF;AACzF,iGAAiG;AACjG,MAAM,UAAU,uBAAuB,CAAC,OAAqB,EAAE,OAA0B;IACvF,kEAAkE;IAClE,IAAI,CAAC,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa;QAC1D,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,KAAK,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAA;IAE5G,uDAAuD;IACvD,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE;QAC3B,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;KAC7C;IAED,IAAI,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE;QACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,qBAAqB,EAAE;YACpD,OAAO,CAAC,mBAAmB,CAAC,KAAK;YACjC,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB;YACnG,OAAO,CAAC,mBAAmB,CAAC,MAAM;SACnC,CAAC,CAAA;KACH;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { BigNumber } from 'ethers';
2
+ import JSBI from 'jsbi';
3
+ import { Percent } from '@uniswap/sdk-core';
4
+ export declare function expandTo18DecimalsBN(n: number): BigNumber;
5
+ export declare function expandTo18Decimals(n: number): JSBI;
6
+ export declare function encodeFeeBips(fee: Percent): string;
@@ -0,0 +1,15 @@
1
+ import { BigNumber } from 'ethers';
2
+ import JSBI from 'jsbi';
3
+ import bn from 'bignumber.js';
4
+ import { toHex } from '@uniswap/v3-sdk';
5
+ export function expandTo18DecimalsBN(n) {
6
+ // use bn intermediately to allow decimals in intermediate calculations
7
+ return BigNumber.from(new bn(n).times(new bn(10).pow(18)).toFixed());
8
+ }
9
+ export function expandTo18Decimals(n) {
10
+ return JSBI.BigInt(BigNumber.from(n).mul(BigNumber.from(10).pow(18)).toString());
11
+ }
12
+ export function encodeFeeBips(fee) {
13
+ return toHex(fee.multiply(10000).quotient);
14
+ }
15
+ //# sourceMappingURL=numbers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../../../src/utils/numbers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,cAAc,CAAA;AAE7B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,MAAM,UAAU,oBAAoB,CAAC,CAAS;IAC5C,uEAAuE;IACvE,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,CAAS;IAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAM,CAAC,CAAC,QAAQ,CAAC,CAAA;AAC7C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Currency } from '@uniswap/sdk-core';
2
+ import { TPool } from '@uniswap/router-sdk/dist/utils/TPool';
3
+ export declare function getPathCurrency(currency: Currency, pool: TPool): Currency;
@@ -0,0 +1,23 @@
1
+ import { Pool as V4Pool } from '@uniswap/v4-sdk';
2
+ export function getPathCurrency(currency, pool) {
3
+ // return currency if the currency matches a currency of the pool
4
+ if (pool.involvesToken(currency)) {
5
+ return currency;
6
+ // return if currency.wrapped if pool involves wrapped currency
7
+ }
8
+ else if (pool.involvesToken(currency.wrapped)) {
9
+ return currency.wrapped;
10
+ // return native currency if pool involves native version of wrapped currency (only applies to V4)
11
+ }
12
+ else if (pool instanceof V4Pool && pool.token0.wrapped.equals(currency)) {
13
+ return pool.token0;
14
+ }
15
+ else if (pool instanceof V4Pool && pool.token1.wrapped.equals(currency)) {
16
+ return pool.token1;
17
+ }
18
+ else {
19
+ throw new Error(`Expected currency ${currency.symbol} to be either ${pool.token0.symbol} or ${pool.token1.symbol}`);
20
+ }
21
+ return currency; // this line needed for typescript to compile
22
+ }
23
+ //# sourceMappingURL=pathCurrency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathCurrency.js","sourceRoot":"","sources":["../../../../src/utils/pathCurrency.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAGhD,MAAM,UAAU,eAAe,CAAC,QAAkB,EAAE,IAAW;IAC7D,iEAAiE;IACjE,IAAI,IAAI,CAAC,aAAa,CAAC,QAAiB,CAAC,EAAE;QACzC,OAAO,QAAQ,CAAA;QAEf,+DAA+D;KAChE;SAAM,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAgB,CAAC,EAAE;QACxD,OAAO,QAAQ,CAAC,OAAO,CAAA;QAEvB,kGAAkG;KACnG;SAAM,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QACzE,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;SAAM,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QACzE,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,iBAAiB,IAAI,CAAC,MAAM,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;KACpH;IAED,OAAO,QAAQ,CAAA,CAAC,6CAA6C;AAC/D,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * CommandTypes
3
+ * @description Flags that modify a command's execution
4
+ * @enum {number}
5
+ */
6
+ export declare enum CommandType {
7
+ V3_SWAP_EXACT_IN = 0,
8
+ V3_SWAP_EXACT_OUT = 1,
9
+ PERMIT2_TRANSFER_FROM = 2,
10
+ PERMIT2_PERMIT_BATCH = 3,
11
+ SWEEP = 4,
12
+ TRANSFER = 5,
13
+ PAY_PORTION = 6,
14
+ V2_SWAP_EXACT_IN = 8,
15
+ V2_SWAP_EXACT_OUT = 9,
16
+ PERMIT2_PERMIT = 10,
17
+ WRAP_ETH = 11,
18
+ UNWRAP_WETH = 12,
19
+ PERMIT2_TRANSFER_FROM_BATCH = 13,
20
+ BALANCE_CHECK_ERC20 = 14,
21
+ V4_SWAP = 16,
22
+ V3_POSITION_MANAGER_PERMIT = 17,
23
+ V3_POSITION_MANAGER_CALL = 18,
24
+ V4_INITIALIZE_POOL = 19,
25
+ V4_POSITION_MANAGER_CALL = 20,
26
+ EXECUTE_SUB_PLAN = 33
27
+ }
28
+ export declare enum Subparser {
29
+ V3PathExactIn = 0,
30
+ V3PathExactOut = 1
31
+ }
32
+ export declare enum Parser {
33
+ Abi = 0,
34
+ V4Actions = 1,
35
+ V3Actions = 2
36
+ }
37
+ export type ParamType = {
38
+ readonly name: string;
39
+ readonly type: string;
40
+ readonly subparser?: Subparser;
41
+ };
42
+ export type CommandDefinition = {
43
+ parser: Parser.Abi;
44
+ params: ParamType[];
45
+ } | {
46
+ parser: Parser.V4Actions;
47
+ } | {
48
+ parser: Parser.V3Actions;
49
+ };
50
+ export declare const COMMAND_DEFINITION: {
51
+ [key in CommandType]: CommandDefinition;
52
+ };
53
+ export declare class RoutePlanner {
54
+ commands: string;
55
+ inputs: string[];
56
+ constructor();
57
+ addSubPlan(subplan: RoutePlanner): RoutePlanner;
58
+ addCommand(type: CommandType, parameters: any[], allowRevert?: boolean): RoutePlanner;
59
+ }
60
+ export type RouterCommand = {
61
+ type: CommandType;
62
+ encodedInput: string;
63
+ };
64
+ export declare function createCommand(type: CommandType, parameters: any[]): RouterCommand;