@uniswap/universal-router-sdk 4.3.1 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { SwapRouter, MigrateV3ToV4Options } from './swapRouter';
2
2
  export * from './entities';
3
3
  export * from './utils/routerTradeAdapter';
4
- export { RoutePlanner, CommandType } from './utils/routerCommands';
4
+ export { RoutePlanner, CommandType, COMMAND_DEFINITION, CommandDefinition, Parser, Subparser, ParamType, } from './utils/routerCommands';
5
5
  export { UNIVERSAL_ROUTER_CREATION_BLOCK, UNIVERSAL_ROUTER_ADDRESS, ROUTER_AS_RECIPIENT, WETH_ADDRESS, UniversalRouterVersion, } from './utils/constants';
6
- export { CommandParser, UniversalRouterCommand, UniversalRouterCall, Param } from './utils/commandParser';
6
+ export { CommandParser, UniversalRouterCommand, UniversalRouterCall, Param, CommandsDefinition, } from './utils/commandParser';
@@ -102,17 +102,15 @@ var _COMMAND_DEFINITION;
102
102
  CommandType[CommandType["V4_POSITION_CALL"] = 19] = "V4_POSITION_CALL";
103
103
  CommandType[CommandType["EXECUTE_SUB_PLAN"] = 33] = "EXECUTE_SUB_PLAN";
104
104
  })(exports.CommandType || (exports.CommandType = {}));
105
- var Subparser;
106
105
  (function (Subparser) {
107
106
  Subparser[Subparser["V3PathExactIn"] = 0] = "V3PathExactIn";
108
107
  Subparser[Subparser["V3PathExactOut"] = 1] = "V3PathExactOut";
109
- })(Subparser || (Subparser = {}));
110
- var Parser;
108
+ })(exports.Subparser || (exports.Subparser = {}));
111
109
  (function (Parser) {
112
110
  Parser[Parser["Abi"] = 0] = "Abi";
113
111
  Parser[Parser["V4Actions"] = 1] = "V4Actions";
114
112
  Parser[Parser["V3Actions"] = 2] = "V3Actions";
115
- })(Parser || (Parser = {}));
113
+ })(exports.Parser || (exports.Parser = {}));
116
114
  var ALLOW_REVERT_FLAG = 0x80;
117
115
  var REVERTIBLE_COMMANDS = /*#__PURE__*/new Set([exports.CommandType.EXECUTE_SUB_PLAN]);
118
116
  var PERMIT_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 nonce) details,address spender,uint256 sigDeadline)';
@@ -120,7 +118,7 @@ var PERMIT_BATCH_STRUCT = '((address token,uint160 amount,uint48 expiration,uint
120
118
  var PERMIT2_TRANSFER_FROM_STRUCT = '(address from,address to,uint160 amount,address token)';
121
119
  var PERMIT2_TRANSFER_FROM_BATCH_STRUCT = PERMIT2_TRANSFER_FROM_STRUCT + '[]';
122
120
  var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.CommandType.EXECUTE_SUB_PLAN] = {
123
- parser: Parser.Abi,
121
+ parser: exports.Parser.Abi,
124
122
  params: [{
125
123
  name: 'commands',
126
124
  type: 'bytes'
@@ -129,7 +127,7 @@ var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.
129
127
  type: 'bytes[]'
130
128
  }]
131
129
  }, _COMMAND_DEFINITION[exports.CommandType.PERMIT2_PERMIT] = {
132
- parser: Parser.Abi,
130
+ parser: exports.Parser.Abi,
133
131
  params: [{
134
132
  name: 'permit',
135
133
  type: PERMIT_STRUCT
@@ -138,7 +136,7 @@ var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.
138
136
  type: 'bytes'
139
137
  }]
140
138
  }, _COMMAND_DEFINITION[exports.CommandType.PERMIT2_PERMIT_BATCH] = {
141
- parser: Parser.Abi,
139
+ parser: exports.Parser.Abi,
142
140
  params: [{
143
141
  name: 'permit',
144
142
  type: PERMIT_BATCH_STRUCT
@@ -147,7 +145,7 @@ var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.
147
145
  type: 'bytes'
148
146
  }]
149
147
  }, _COMMAND_DEFINITION[exports.CommandType.PERMIT2_TRANSFER_FROM] = {
150
- parser: Parser.Abi,
148
+ parser: exports.Parser.Abi,
151
149
  params: [{
152
150
  name: 'token',
153
151
  type: 'address'
@@ -159,13 +157,13 @@ var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.
159
157
  type: 'uint160'
160
158
  }]
161
159
  }, _COMMAND_DEFINITION[exports.CommandType.PERMIT2_TRANSFER_FROM_BATCH] = {
162
- parser: Parser.Abi,
160
+ parser: exports.Parser.Abi,
163
161
  params: [{
164
162
  name: 'transferFrom',
165
163
  type: PERMIT2_TRANSFER_FROM_BATCH_STRUCT
166
164
  }]
167
165
  }, _COMMAND_DEFINITION[exports.CommandType.V3_SWAP_EXACT_IN] = {
168
- parser: Parser.Abi,
166
+ parser: exports.Parser.Abi,
169
167
  params: [{
170
168
  name: 'recipient',
171
169
  type: 'address'
@@ -177,14 +175,14 @@ var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.
177
175
  type: 'uint256'
178
176
  }, {
179
177
  name: 'path',
180
- subparser: Subparser.V3PathExactIn,
178
+ subparser: exports.Subparser.V3PathExactIn,
181
179
  type: 'bytes'
182
180
  }, {
183
181
  name: 'payerIsUser',
184
182
  type: 'bool'
185
183
  }]
186
184
  }, _COMMAND_DEFINITION[exports.CommandType.V3_SWAP_EXACT_OUT] = {
187
- parser: Parser.Abi,
185
+ parser: exports.Parser.Abi,
188
186
  params: [{
189
187
  name: 'recipient',
190
188
  type: 'address'
@@ -196,14 +194,14 @@ var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.
196
194
  type: 'uint256'
197
195
  }, {
198
196
  name: 'path',
199
- subparser: Subparser.V3PathExactOut,
197
+ subparser: exports.Subparser.V3PathExactOut,
200
198
  type: 'bytes'
201
199
  }, {
202
200
  name: 'payerIsUser',
203
201
  type: 'bool'
204
202
  }]
205
203
  }, _COMMAND_DEFINITION[exports.CommandType.V2_SWAP_EXACT_IN] = {
206
- parser: Parser.Abi,
204
+ parser: exports.Parser.Abi,
207
205
  params: [{
208
206
  name: 'recipient',
209
207
  type: 'address'
@@ -221,7 +219,7 @@ var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.
221
219
  type: 'bool'
222
220
  }]
223
221
  }, _COMMAND_DEFINITION[exports.CommandType.V2_SWAP_EXACT_OUT] = {
224
- parser: Parser.Abi,
222
+ parser: exports.Parser.Abi,
225
223
  params: [{
226
224
  name: 'recipient',
227
225
  type: 'address'
@@ -239,9 +237,9 @@ var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.
239
237
  type: 'bool'
240
238
  }]
241
239
  }, _COMMAND_DEFINITION[exports.CommandType.V4_SWAP] = {
242
- parser: Parser.V4Actions
240
+ parser: exports.Parser.V4Actions
243
241
  }, _COMMAND_DEFINITION[exports.CommandType.WRAP_ETH] = {
244
- parser: Parser.Abi,
242
+ parser: exports.Parser.Abi,
245
243
  params: [{
246
244
  name: 'recipient',
247
245
  type: 'address'
@@ -250,7 +248,7 @@ var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.
250
248
  type: 'uint256'
251
249
  }]
252
250
  }, _COMMAND_DEFINITION[exports.CommandType.UNWRAP_WETH] = {
253
- parser: Parser.Abi,
251
+ parser: exports.Parser.Abi,
254
252
  params: [{
255
253
  name: 'recipient',
256
254
  type: 'address'
@@ -259,7 +257,7 @@ var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.
259
257
  type: 'uint256'
260
258
  }]
261
259
  }, _COMMAND_DEFINITION[exports.CommandType.SWEEP] = {
262
- parser: Parser.Abi,
260
+ parser: exports.Parser.Abi,
263
261
  params: [{
264
262
  name: 'token',
265
263
  type: 'address'
@@ -271,7 +269,7 @@ var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.
271
269
  type: 'uint256'
272
270
  }]
273
271
  }, _COMMAND_DEFINITION[exports.CommandType.TRANSFER] = {
274
- parser: Parser.Abi,
272
+ parser: exports.Parser.Abi,
275
273
  params: [{
276
274
  name: 'token',
277
275
  type: 'address'
@@ -283,7 +281,7 @@ var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.
283
281
  type: 'uint256'
284
282
  }]
285
283
  }, _COMMAND_DEFINITION[exports.CommandType.PAY_PORTION] = {
286
- parser: Parser.Abi,
284
+ parser: exports.Parser.Abi,
287
285
  params: [{
288
286
  name: 'token',
289
287
  type: 'address'
@@ -295,7 +293,7 @@ var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.
295
293
  type: 'uint256'
296
294
  }]
297
295
  }, _COMMAND_DEFINITION[exports.CommandType.BALANCE_CHECK_ERC20] = {
298
- parser: Parser.Abi,
296
+ parser: exports.Parser.Abi,
299
297
  params: [{
300
298
  name: 'owner',
301
299
  type: 'address'
@@ -307,11 +305,11 @@ var COMMAND_DEFINITION = (_COMMAND_DEFINITION = {}, _COMMAND_DEFINITION[exports.
307
305
  type: 'uint256'
308
306
  }]
309
307
  }, _COMMAND_DEFINITION[exports.CommandType.V3_POSITION_MANAGER_PERMIT] = {
310
- parser: Parser.V3Actions
308
+ parser: exports.Parser.V3Actions
311
309
  }, _COMMAND_DEFINITION[exports.CommandType.V3_POSITION_MANAGER_CALL] = {
312
- parser: Parser.V3Actions
310
+ parser: exports.Parser.V3Actions
313
311
  }, _COMMAND_DEFINITION[exports.CommandType.V4_POSITION_CALL] = {
314
- parser: Parser.V4Actions
312
+ parser: exports.Parser.V4Actions
315
313
  }, _COMMAND_DEFINITION);
316
314
  var RoutePlanner = /*#__PURE__*/function () {
317
315
  function RoutePlanner() {
@@ -343,7 +341,7 @@ var RoutePlanner = /*#__PURE__*/function () {
343
341
  function createCommand(type, parameters) {
344
342
  var commandDef = COMMAND_DEFINITION[type];
345
343
  switch (commandDef.parser) {
346
- case Parser.Abi:
344
+ case exports.Parser.Abi:
347
345
  var encodedInput = utils.defaultAbiCoder.encode(commandDef.params.map(function (abi) {
348
346
  return abi.type;
349
347
  }), parameters);
@@ -351,13 +349,13 @@ function createCommand(type, parameters) {
351
349
  type: type,
352
350
  encodedInput: encodedInput
353
351
  };
354
- case Parser.V4Actions:
352
+ case exports.Parser.V4Actions:
355
353
  // v4 swap data comes pre-encoded at index 0
356
354
  return {
357
355
  type: type,
358
356
  encodedInput: parameters[0]
359
357
  };
360
- case Parser.V3Actions:
358
+ case exports.Parser.V3Actions:
361
359
  // v4 swap data comes pre-encoded at index 0
362
360
  return {
363
361
  type: type,
@@ -552,11 +550,11 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
552
550
  }, _CHAIN_CONFIGS[1301] = {
553
551
  weth: '0x4200000000000000000000000000000000000006',
554
552
  routerConfigs: (_routerConfigs20 = {}, _routerConfigs20[exports.UniversalRouterVersion.V1_2] = {
555
- address: '0x16D4F26C15f3658ec65B1126ff27DD3dF2a2996b',
556
- creationBlock: 618210
553
+ address: '0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6',
554
+ creationBlock: 1241811
557
555
  }, _routerConfigs20[exports.UniversalRouterVersion.V2_0] = {
558
- address: '0x16D4F26C15f3658ec65B1126ff27DD3dF2a2996b',
559
- creationBlock: 618210
556
+ address: '0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6',
557
+ creationBlock: 1241811
560
558
  }, _routerConfigs20)
561
559
  }, _CHAIN_CONFIGS);
562
560
  var UNIVERSAL_ROUTER_ADDRESS = function UNIVERSAL_ROUTER_ADDRESS(version, chainId) {
@@ -1090,21 +1088,35 @@ RouterTradeAdapter.toPair = function (_ref2) {
1090
1088
  return new v2Sdk.Pair(sdkCore.CurrencyAmount.fromRawAmount(RouterTradeAdapter.toToken(reserve0.token), reserve0.quotient), sdkCore.CurrencyAmount.fromRawAmount(RouterTradeAdapter.toToken(reserve1.token), reserve1.quotient));
1091
1089
  };
1092
1090
 
1093
- // Parses UniversalRouter commands
1091
+ // Parses UniversalRouter V2 commands
1094
1092
  var CommandParser = /*#__PURE__*/function () {
1095
1093
  function CommandParser() {}
1096
1094
  CommandParser.parseCalldata = function parseCalldata(calldata) {
1095
+ var genericParser = new GenericCommandParser(COMMAND_DEFINITION);
1097
1096
  var txDescription = CommandParser.INTERFACE.parseTransaction({
1098
1097
  data: calldata
1099
1098
  });
1100
1099
  var _txDescription$args = txDescription.args,
1101
1100
  commands = _txDescription$args.commands,
1102
1101
  inputs = _txDescription$args.inputs;
1103
- var commandTypes = CommandParser.getCommands(commands);
1102
+ return genericParser.parse(commands, inputs);
1103
+ };
1104
+ return CommandParser;
1105
+ }();
1106
+ CommandParser.INTERFACE = /*#__PURE__*/new abi.Interface(UniversalRouter_json.abi);
1107
+ // Parses commands based on given command definition
1108
+ var GenericCommandParser = /*#__PURE__*/function () {
1109
+ function GenericCommandParser(commandDefinition) {
1110
+ this.commandDefinition = commandDefinition;
1111
+ }
1112
+ var _proto = GenericCommandParser.prototype;
1113
+ _proto.parse = function parse(commands, inputs) {
1114
+ var _this = this;
1115
+ var commandTypes = GenericCommandParser.getCommands(commands);
1104
1116
  return {
1105
1117
  commands: commandTypes.map(function (commandType, i) {
1106
- var commandDef = COMMAND_DEFINITION[commandType];
1107
- if (commandDef.parser === Parser.V4Actions) {
1118
+ var commandDef = _this.commandDefinition[commandType];
1119
+ if (commandDef.parser === exports.Parser.V4Actions) {
1108
1120
  var _V4BaseActionsParser$ = v4Sdk.V4BaseActionsParser.parseCalldata(inputs[i]),
1109
1121
  actions = _V4BaseActionsParser$.actions;
1110
1122
  return {
@@ -1112,19 +1124,19 @@ var CommandParser = /*#__PURE__*/function () {
1112
1124
  commandType: commandType,
1113
1125
  params: v4RouterCallToParams(actions)
1114
1126
  };
1115
- } else if (commandDef.parser === Parser.Abi) {
1127
+ } else if (commandDef.parser === exports.Parser.Abi) {
1116
1128
  var abiDef = commandDef.params;
1117
1129
  var rawParams = ethers.ethers.utils.defaultAbiCoder.decode(abiDef.map(function (command) {
1118
1130
  return command.type;
1119
1131
  }), inputs[i]);
1120
1132
  var params = rawParams.map(function (param, j) {
1121
1133
  switch (abiDef[j].subparser) {
1122
- case Subparser.V3PathExactIn:
1134
+ case exports.Subparser.V3PathExactIn:
1123
1135
  return {
1124
1136
  name: abiDef[j].name,
1125
1137
  value: parseV3PathExactIn(param)
1126
1138
  };
1127
- case Subparser.V3PathExactOut:
1139
+ case exports.Subparser.V3PathExactOut:
1128
1140
  return {
1129
1141
  name: abiDef[j].name,
1130
1142
  value: parseV3PathExactOut(param)
@@ -1141,12 +1153,17 @@ var CommandParser = /*#__PURE__*/function () {
1141
1153
  commandType: commandType,
1142
1154
  params: params
1143
1155
  };
1144
- } else if (commandDef.parser === Parser.V3Actions) {
1156
+ } else if (commandDef.parser === exports.Parser.V3Actions) {
1145
1157
  // TODO: implement better parsing here
1146
1158
  return {
1147
1159
  commandName: exports.CommandType[commandType],
1148
1160
  commandType: commandType,
1149
- params: inputs
1161
+ params: inputs.map(function (input) {
1162
+ return {
1163
+ name: 'command',
1164
+ value: input
1165
+ };
1166
+ })
1150
1167
  };
1151
1168
  } else {
1152
1169
  throw new Error("Unsupported parser: " + commandDef);
@@ -1156,7 +1173,7 @@ var CommandParser = /*#__PURE__*/function () {
1156
1173
  }
1157
1174
  // parse command types from bytes string
1158
1175
  ;
1159
- CommandParser.getCommands = function getCommands(commands) {
1176
+ GenericCommandParser.getCommands = function getCommands(commands) {
1160
1177
  var commandTypes = [];
1161
1178
  for (var i = 2; i < commands.length; i += 2) {
1162
1179
  var _byte = commands.substring(i, i + 2);
@@ -1164,9 +1181,8 @@ var CommandParser = /*#__PURE__*/function () {
1164
1181
  }
1165
1182
  return commandTypes;
1166
1183
  };
1167
- return CommandParser;
1184
+ return GenericCommandParser;
1168
1185
  }();
1169
- CommandParser.INTERFACE = /*#__PURE__*/new abi.Interface(UniversalRouter_json.abi);
1170
1186
  function parseV3PathExactIn(path) {
1171
1187
  var strippedPath = path.replace('0x', '');
1172
1188
  var tokenIn = ethers.ethers.utils.getAddress(strippedPath.substring(0, 40));
@@ -1219,6 +1235,7 @@ function v4RouterCallToParams(actions) {
1219
1235
  });
1220
1236
  }
1221
1237
 
1238
+ exports.COMMAND_DEFINITION = COMMAND_DEFINITION;
1222
1239
  exports.CommandParser = CommandParser;
1223
1240
  exports.ROUTER_AS_RECIPIENT = ROUTER_AS_RECIPIENT;
1224
1241
  exports.RoutePlanner = RoutePlanner;