@uniswap/universal-router-sdk 4.19.0 → 4.19.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 (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 +22 -10
  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
@@ -1,64 +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 declare type ParamType = {
38
- readonly name: string;
39
- readonly type: string;
40
- readonly subparser?: Subparser;
41
- };
42
- export declare 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 declare type RouterCommand = {
61
- type: CommandType;
62
- encodedInput: string;
63
- };
64
- export declare function createCommand(type: CommandType, parameters: any[]): RouterCommand;
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;
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCommand = exports.RoutePlanner = exports.COMMAND_DEFINITION = exports.Parser = exports.Subparser = exports.CommandType = void 0;
4
+ const utils_1 = require("ethers/lib/utils");
5
+ /**
6
+ * CommandTypes
7
+ * @description Flags that modify a command's execution
8
+ * @enum {number}
9
+ */
10
+ var CommandType;
11
+ (function (CommandType) {
12
+ CommandType[CommandType["V3_SWAP_EXACT_IN"] = 0] = "V3_SWAP_EXACT_IN";
13
+ CommandType[CommandType["V3_SWAP_EXACT_OUT"] = 1] = "V3_SWAP_EXACT_OUT";
14
+ CommandType[CommandType["PERMIT2_TRANSFER_FROM"] = 2] = "PERMIT2_TRANSFER_FROM";
15
+ CommandType[CommandType["PERMIT2_PERMIT_BATCH"] = 3] = "PERMIT2_PERMIT_BATCH";
16
+ CommandType[CommandType["SWEEP"] = 4] = "SWEEP";
17
+ CommandType[CommandType["TRANSFER"] = 5] = "TRANSFER";
18
+ CommandType[CommandType["PAY_PORTION"] = 6] = "PAY_PORTION";
19
+ CommandType[CommandType["V2_SWAP_EXACT_IN"] = 8] = "V2_SWAP_EXACT_IN";
20
+ CommandType[CommandType["V2_SWAP_EXACT_OUT"] = 9] = "V2_SWAP_EXACT_OUT";
21
+ CommandType[CommandType["PERMIT2_PERMIT"] = 10] = "PERMIT2_PERMIT";
22
+ CommandType[CommandType["WRAP_ETH"] = 11] = "WRAP_ETH";
23
+ CommandType[CommandType["UNWRAP_WETH"] = 12] = "UNWRAP_WETH";
24
+ CommandType[CommandType["PERMIT2_TRANSFER_FROM_BATCH"] = 13] = "PERMIT2_TRANSFER_FROM_BATCH";
25
+ CommandType[CommandType["BALANCE_CHECK_ERC20"] = 14] = "BALANCE_CHECK_ERC20";
26
+ CommandType[CommandType["V4_SWAP"] = 16] = "V4_SWAP";
27
+ CommandType[CommandType["V3_POSITION_MANAGER_PERMIT"] = 17] = "V3_POSITION_MANAGER_PERMIT";
28
+ CommandType[CommandType["V3_POSITION_MANAGER_CALL"] = 18] = "V3_POSITION_MANAGER_CALL";
29
+ CommandType[CommandType["V4_INITIALIZE_POOL"] = 19] = "V4_INITIALIZE_POOL";
30
+ CommandType[CommandType["V4_POSITION_MANAGER_CALL"] = 20] = "V4_POSITION_MANAGER_CALL";
31
+ CommandType[CommandType["EXECUTE_SUB_PLAN"] = 33] = "EXECUTE_SUB_PLAN";
32
+ })(CommandType = exports.CommandType || (exports.CommandType = {}));
33
+ var Subparser;
34
+ (function (Subparser) {
35
+ Subparser[Subparser["V3PathExactIn"] = 0] = "V3PathExactIn";
36
+ Subparser[Subparser["V3PathExactOut"] = 1] = "V3PathExactOut";
37
+ })(Subparser = exports.Subparser || (exports.Subparser = {}));
38
+ var Parser;
39
+ (function (Parser) {
40
+ Parser[Parser["Abi"] = 0] = "Abi";
41
+ Parser[Parser["V4Actions"] = 1] = "V4Actions";
42
+ Parser[Parser["V3Actions"] = 2] = "V3Actions";
43
+ })(Parser = exports.Parser || (exports.Parser = {}));
44
+ const ALLOW_REVERT_FLAG = 0x80;
45
+ const REVERTIBLE_COMMANDS = new Set([CommandType.EXECUTE_SUB_PLAN]);
46
+ const PERMIT_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 nonce) details,address spender,uint256 sigDeadline)';
47
+ const PERMIT_BATCH_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 nonce)[] details,address spender,uint256 sigDeadline)';
48
+ const POOL_KEY_STRUCT = '(address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks)';
49
+ const PERMIT2_TRANSFER_FROM_STRUCT = '(address from,address to,uint160 amount,address token)';
50
+ const PERMIT2_TRANSFER_FROM_BATCH_STRUCT = PERMIT2_TRANSFER_FROM_STRUCT + '[]';
51
+ exports.COMMAND_DEFINITION = {
52
+ // Batch Reverts
53
+ [CommandType.EXECUTE_SUB_PLAN]: {
54
+ parser: Parser.Abi,
55
+ params: [
56
+ { name: 'commands', type: 'bytes' },
57
+ { name: 'inputs', type: 'bytes[]' },
58
+ ],
59
+ },
60
+ // Permit2 Actions
61
+ [CommandType.PERMIT2_PERMIT]: {
62
+ parser: Parser.Abi,
63
+ params: [
64
+ { name: 'permit', type: PERMIT_STRUCT },
65
+ { name: 'signature', type: 'bytes' },
66
+ ],
67
+ },
68
+ [CommandType.PERMIT2_PERMIT_BATCH]: {
69
+ parser: Parser.Abi,
70
+ params: [
71
+ { name: 'permit', type: PERMIT_BATCH_STRUCT },
72
+ { name: 'signature', type: 'bytes' },
73
+ ],
74
+ },
75
+ [CommandType.PERMIT2_TRANSFER_FROM]: {
76
+ parser: Parser.Abi,
77
+ params: [
78
+ { name: 'token', type: 'address' },
79
+ { name: 'recipient', type: 'address' },
80
+ { name: 'amount', type: 'uint160' },
81
+ ],
82
+ },
83
+ [CommandType.PERMIT2_TRANSFER_FROM_BATCH]: {
84
+ parser: Parser.Abi,
85
+ params: [
86
+ {
87
+ name: 'transferFrom',
88
+ type: PERMIT2_TRANSFER_FROM_BATCH_STRUCT,
89
+ },
90
+ ],
91
+ },
92
+ // Uniswap Actions
93
+ [CommandType.V3_SWAP_EXACT_IN]: {
94
+ parser: Parser.Abi,
95
+ params: [
96
+ { name: 'recipient', type: 'address' },
97
+ { name: 'amountIn', type: 'uint256' },
98
+ { name: 'amountOutMin', type: 'uint256' },
99
+ { name: 'path', subparser: Subparser.V3PathExactIn, type: 'bytes' },
100
+ { name: 'payerIsUser', type: 'bool' },
101
+ ],
102
+ },
103
+ [CommandType.V3_SWAP_EXACT_OUT]: {
104
+ parser: Parser.Abi,
105
+ params: [
106
+ { name: 'recipient', type: 'address' },
107
+ { name: 'amountOut', type: 'uint256' },
108
+ { name: 'amountInMax', type: 'uint256' },
109
+ { name: 'path', subparser: Subparser.V3PathExactOut, type: 'bytes' },
110
+ { name: 'payerIsUser', type: 'bool' },
111
+ ],
112
+ },
113
+ [CommandType.V2_SWAP_EXACT_IN]: {
114
+ parser: Parser.Abi,
115
+ params: [
116
+ { name: 'recipient', type: 'address' },
117
+ { name: 'amountIn', type: 'uint256' },
118
+ { name: 'amountOutMin', type: 'uint256' },
119
+ { name: 'path', type: 'address[]' },
120
+ { name: 'payerIsUser', type: 'bool' },
121
+ ],
122
+ },
123
+ [CommandType.V2_SWAP_EXACT_OUT]: {
124
+ parser: Parser.Abi,
125
+ params: [
126
+ { name: 'recipient', type: 'address' },
127
+ { name: 'amountOut', type: 'uint256' },
128
+ { name: 'amountInMax', type: 'uint256' },
129
+ { name: 'path', type: 'address[]' },
130
+ { name: 'payerIsUser', type: 'bool' },
131
+ ],
132
+ },
133
+ [CommandType.V4_SWAP]: { parser: Parser.V4Actions },
134
+ // Token Actions and Checks
135
+ [CommandType.WRAP_ETH]: {
136
+ parser: Parser.Abi,
137
+ params: [
138
+ { name: 'recipient', type: 'address' },
139
+ { name: 'amount', type: 'uint256' },
140
+ ],
141
+ },
142
+ [CommandType.UNWRAP_WETH]: {
143
+ parser: Parser.Abi,
144
+ params: [
145
+ { name: 'recipient', type: 'address' },
146
+ { name: 'amountMin', type: 'uint256' },
147
+ ],
148
+ },
149
+ [CommandType.SWEEP]: {
150
+ parser: Parser.Abi,
151
+ params: [
152
+ { name: 'token', type: 'address' },
153
+ { name: 'recipient', type: 'address' },
154
+ { name: 'amountMin', type: 'uint256' },
155
+ ],
156
+ },
157
+ [CommandType.TRANSFER]: {
158
+ parser: Parser.Abi,
159
+ params: [
160
+ { name: 'token', type: 'address' },
161
+ { name: 'recipient', type: 'address' },
162
+ { name: 'value', type: 'uint256' },
163
+ ],
164
+ },
165
+ [CommandType.PAY_PORTION]: {
166
+ parser: Parser.Abi,
167
+ params: [
168
+ { name: 'token', type: 'address' },
169
+ { name: 'recipient', type: 'address' },
170
+ { name: 'bips', type: 'uint256' },
171
+ ],
172
+ },
173
+ [CommandType.BALANCE_CHECK_ERC20]: {
174
+ parser: Parser.Abi,
175
+ params: [
176
+ { name: 'owner', type: 'address' },
177
+ { name: 'token', type: 'address' },
178
+ { name: 'minBalance', type: 'uint256' },
179
+ ],
180
+ },
181
+ [CommandType.V4_INITIALIZE_POOL]: {
182
+ parser: Parser.Abi,
183
+ params: [
184
+ { name: 'poolKey', type: POOL_KEY_STRUCT },
185
+ { name: 'sqrtPriceX96', type: 'uint160' },
186
+ ],
187
+ },
188
+ // Position Actions
189
+ [CommandType.V3_POSITION_MANAGER_PERMIT]: { parser: Parser.V3Actions },
190
+ [CommandType.V3_POSITION_MANAGER_CALL]: { parser: Parser.V3Actions },
191
+ [CommandType.V4_POSITION_MANAGER_CALL]: { parser: Parser.V4Actions },
192
+ };
193
+ class RoutePlanner {
194
+ constructor() {
195
+ this.commands = '0x';
196
+ this.inputs = [];
197
+ }
198
+ addSubPlan(subplan) {
199
+ this.addCommand(CommandType.EXECUTE_SUB_PLAN, [subplan.commands, subplan.inputs], true);
200
+ return this;
201
+ }
202
+ addCommand(type, parameters, allowRevert = false) {
203
+ let command = createCommand(type, parameters);
204
+ this.inputs.push(command.encodedInput);
205
+ if (allowRevert) {
206
+ if (!REVERTIBLE_COMMANDS.has(command.type)) {
207
+ throw new Error(`command type: ${command.type} cannot be allowed to revert`);
208
+ }
209
+ command.type = command.type | ALLOW_REVERT_FLAG;
210
+ }
211
+ this.commands = this.commands.concat(command.type.toString(16).padStart(2, '0'));
212
+ return this;
213
+ }
214
+ }
215
+ exports.RoutePlanner = RoutePlanner;
216
+ function createCommand(type, parameters) {
217
+ const commandDef = exports.COMMAND_DEFINITION[type];
218
+ switch (commandDef.parser) {
219
+ case Parser.Abi:
220
+ const encodedInput = utils_1.defaultAbiCoder.encode(commandDef.params.map((abi) => abi.type), parameters);
221
+ return { type, encodedInput };
222
+ case Parser.V4Actions:
223
+ // v4 swap data comes pre-encoded at index 0
224
+ return { type, encodedInput: parameters[0] };
225
+ case Parser.V3Actions:
226
+ // v4 swap data comes pre-encoded at index 0
227
+ return { type, encodedInput: parameters[0] };
228
+ }
229
+ }
230
+ exports.createCommand = createCommand;
231
+ //# sourceMappingURL=routerCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routerCommands.js","sourceRoot":"","sources":["../../../../src/utils/routerCommands.ts"],"names":[],"mappings":"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"}
@@ -1,73 +1,73 @@
1
- import { Trade as RouterTrade } from '@uniswap/router-sdk';
2
- import { Currency, TradeType } from '@uniswap/sdk-core';
3
- export declare type TokenInRoute = {
4
- address: string;
5
- chainId: number;
6
- symbol: string;
7
- decimals: string;
8
- name?: string;
9
- buyFeeBps?: string;
10
- sellFeeBps?: string;
11
- };
12
- export declare enum PoolType {
13
- V2Pool = "v2-pool",
14
- V3Pool = "v3-pool",
15
- V4Pool = "v4-pool"
16
- }
17
- export declare type V2Reserve = {
18
- token: TokenInRoute;
19
- quotient: string;
20
- };
21
- export declare type V2PoolInRoute = {
22
- type: PoolType.V2Pool;
23
- address?: string;
24
- tokenIn: TokenInRoute;
25
- tokenOut: TokenInRoute;
26
- reserve0: V2Reserve;
27
- reserve1: V2Reserve;
28
- amountIn?: string;
29
- amountOut?: string;
30
- };
31
- export declare type V3PoolInRoute = {
32
- type: PoolType.V3Pool;
33
- address?: string;
34
- tokenIn: TokenInRoute;
35
- tokenOut: TokenInRoute;
36
- sqrtRatioX96: string;
37
- liquidity: string;
38
- tickCurrent: string;
39
- fee: string;
40
- amountIn?: string;
41
- amountOut?: string;
42
- };
43
- export declare type V4PoolInRoute = {
44
- type: PoolType.V4Pool;
45
- address?: string;
46
- tokenIn: TokenInRoute;
47
- tokenOut: TokenInRoute;
48
- fee: string;
49
- tickSpacing: string;
50
- hooks: string;
51
- liquidity: string;
52
- sqrtRatioX96: string;
53
- tickCurrent: string;
54
- amountIn?: string;
55
- amountOut?: string;
56
- };
57
- export declare type PartialClassicQuote = {
58
- tokenIn: string;
59
- tokenOut: string;
60
- tradeType: TradeType;
61
- route: Array<(V4PoolInRoute | V3PoolInRoute | V2PoolInRoute)[]>;
62
- };
63
- export declare const isNativeCurrency: (address: string) => boolean;
64
- export declare class RouterTradeAdapter {
65
- static fromClassicQuote(quote: PartialClassicQuote): RouterTrade<Currency, Currency, TradeType>;
66
- private static toCurrency;
67
- private static toPoolOrPair;
68
- private static toToken;
69
- private static toV3Pool;
70
- private static toV4Pool;
71
- private static toPair;
72
- private static isVersionedRoute;
73
- }
1
+ import { Trade as RouterTrade } from '@uniswap/router-sdk';
2
+ import { Currency, TradeType } from '@uniswap/sdk-core';
3
+ export type TokenInRoute = {
4
+ address: string;
5
+ chainId: number;
6
+ symbol: string;
7
+ decimals: string;
8
+ name?: string;
9
+ buyFeeBps?: string;
10
+ sellFeeBps?: string;
11
+ };
12
+ export declare enum PoolType {
13
+ V2Pool = "v2-pool",
14
+ V3Pool = "v3-pool",
15
+ V4Pool = "v4-pool"
16
+ }
17
+ export type V2Reserve = {
18
+ token: TokenInRoute;
19
+ quotient: string;
20
+ };
21
+ export type V2PoolInRoute = {
22
+ type: PoolType.V2Pool;
23
+ address?: string;
24
+ tokenIn: TokenInRoute;
25
+ tokenOut: TokenInRoute;
26
+ reserve0: V2Reserve;
27
+ reserve1: V2Reserve;
28
+ amountIn?: string;
29
+ amountOut?: string;
30
+ };
31
+ export type V3PoolInRoute = {
32
+ type: PoolType.V3Pool;
33
+ address?: string;
34
+ tokenIn: TokenInRoute;
35
+ tokenOut: TokenInRoute;
36
+ sqrtRatioX96: string;
37
+ liquidity: string;
38
+ tickCurrent: string;
39
+ fee: string;
40
+ amountIn?: string;
41
+ amountOut?: string;
42
+ };
43
+ export type V4PoolInRoute = {
44
+ type: PoolType.V4Pool;
45
+ address?: string;
46
+ tokenIn: TokenInRoute;
47
+ tokenOut: TokenInRoute;
48
+ fee: string;
49
+ tickSpacing: string;
50
+ hooks: string;
51
+ liquidity: string;
52
+ sqrtRatioX96: string;
53
+ tickCurrent: string;
54
+ amountIn?: string;
55
+ amountOut?: string;
56
+ };
57
+ export type PartialClassicQuote = {
58
+ tokenIn: string;
59
+ tokenOut: string;
60
+ tradeType: TradeType;
61
+ route: Array<(V4PoolInRoute | V3PoolInRoute | V2PoolInRoute)[]>;
62
+ };
63
+ export declare const isNativeCurrency: (address: string) => boolean;
64
+ export declare class RouterTradeAdapter {
65
+ static fromClassicQuote(quote: PartialClassicQuote): RouterTrade<Currency, Currency, TradeType>;
66
+ private static toCurrency;
67
+ private static toPoolOrPair;
68
+ private static toToken;
69
+ private static toV3Pool;
70
+ private static toV4Pool;
71
+ private static toPair;
72
+ private static isVersionedRoute;
73
+ }
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RouterTradeAdapter = exports.isNativeCurrency = exports.PoolType = void 0;
4
+ const router_sdk_1 = require("@uniswap/router-sdk");
5
+ const sdk_core_1 = require("@uniswap/sdk-core");
6
+ const v2_sdk_1 = require("@uniswap/v2-sdk");
7
+ const v3_sdk_1 = require("@uniswap/v3-sdk");
8
+ const v4_sdk_1 = require("@uniswap/v4-sdk");
9
+ const ethers_1 = require("ethers");
10
+ const constants_1 = require("./constants");
11
+ var PoolType;
12
+ (function (PoolType) {
13
+ PoolType["V2Pool"] = "v2-pool";
14
+ PoolType["V3Pool"] = "v3-pool";
15
+ PoolType["V4Pool"] = "v4-pool";
16
+ })(PoolType = exports.PoolType || (exports.PoolType = {}));
17
+ const isNativeCurrency = (address) => address.toLowerCase() === constants_1.ETH_ADDRESS.toLowerCase() || address.toLowerCase() === constants_1.E_ETH_ADDRESS.toLowerCase();
18
+ exports.isNativeCurrency = isNativeCurrency;
19
+ // Helper class to convert routing-specific quote entities to RouterTrade entities
20
+ // the returned RouterTrade can then be used to build the UniswapTrade entity in this package
21
+ class RouterTradeAdapter {
22
+ // Generate a RouterTrade using fields from a classic quote response
23
+ static fromClassicQuote(quote) {
24
+ const { route, tokenIn, tokenOut } = quote;
25
+ if (!route)
26
+ throw new Error('Expected route to be present');
27
+ if (!route.length)
28
+ throw new Error('Expected there to be at least one route');
29
+ if (route.some((r) => !r.length))
30
+ throw new Error('Expected all routes to have at least one pool');
31
+ const firstRoute = route[0];
32
+ const tokenInData = firstRoute[0].tokenIn;
33
+ const tokenOutData = firstRoute[firstRoute.length - 1].tokenOut;
34
+ if (!tokenInData || !tokenOutData)
35
+ throw new Error('Expected both tokenIn and tokenOut to be present');
36
+ if (tokenInData.chainId !== tokenOutData.chainId)
37
+ throw new Error('Expected tokenIn and tokenOut to be have same chainId');
38
+ const parsedCurrencyIn = RouterTradeAdapter.toCurrency((0, exports.isNativeCurrency)(tokenIn), tokenInData);
39
+ const parsedCurrencyOut = RouterTradeAdapter.toCurrency((0, exports.isNativeCurrency)(tokenOut), tokenOutData);
40
+ const typedRoutes = route.map((subRoute) => {
41
+ const rawAmountIn = subRoute[0].amountIn;
42
+ const rawAmountOut = subRoute[subRoute.length - 1].amountOut;
43
+ if (!rawAmountIn || !rawAmountOut) {
44
+ throw new Error('Expected both raw amountIn and raw amountOut to be present');
45
+ }
46
+ const inputAmount = sdk_core_1.CurrencyAmount.fromRawAmount(parsedCurrencyIn, rawAmountIn);
47
+ const outputAmount = sdk_core_1.CurrencyAmount.fromRawAmount(parsedCurrencyOut, rawAmountOut);
48
+ const isOnlyV2 = RouterTradeAdapter.isVersionedRoute(PoolType.V2Pool, subRoute);
49
+ const isOnlyV3 = RouterTradeAdapter.isVersionedRoute(PoolType.V3Pool, subRoute);
50
+ const isOnlyV4 = RouterTradeAdapter.isVersionedRoute(PoolType.V4Pool, subRoute);
51
+ return {
52
+ routev4: isOnlyV4
53
+ ? new v4_sdk_1.Route(subRoute.map(RouterTradeAdapter.toV4Pool), parsedCurrencyIn, parsedCurrencyOut)
54
+ : null,
55
+ routev3: isOnlyV3
56
+ ? new v3_sdk_1.Route(subRoute.map(RouterTradeAdapter.toV3Pool), parsedCurrencyIn, parsedCurrencyOut)
57
+ : null,
58
+ routev2: isOnlyV2
59
+ ? new v2_sdk_1.Route(subRoute.map(RouterTradeAdapter.toPair), parsedCurrencyIn, parsedCurrencyOut)
60
+ : null,
61
+ mixedRoute: !isOnlyV4 && !isOnlyV3 && !isOnlyV2
62
+ ? new router_sdk_1.MixedRouteSDK(subRoute.map(RouterTradeAdapter.toPoolOrPair), parsedCurrencyIn, parsedCurrencyOut)
63
+ : null,
64
+ inputAmount,
65
+ outputAmount,
66
+ };
67
+ });
68
+ return new router_sdk_1.Trade({
69
+ v2Routes: typedRoutes
70
+ .filter((route) => route.routev2)
71
+ .map((route) => ({
72
+ routev2: route.routev2,
73
+ inputAmount: route.inputAmount,
74
+ outputAmount: route.outputAmount,
75
+ })),
76
+ v3Routes: typedRoutes
77
+ .filter((route) => route.routev3)
78
+ .map((route) => ({
79
+ routev3: route.routev3,
80
+ inputAmount: route.inputAmount,
81
+ outputAmount: route.outputAmount,
82
+ })),
83
+ v4Routes: typedRoutes
84
+ .filter((route) => route.routev4)
85
+ .map((route) => ({
86
+ routev4: route.routev4,
87
+ inputAmount: route.inputAmount,
88
+ outputAmount: route.outputAmount,
89
+ })),
90
+ mixedRoutes: typedRoutes
91
+ .filter((route) => route.mixedRoute)
92
+ .map((route) => ({
93
+ mixedRoute: route.mixedRoute,
94
+ inputAmount: route.inputAmount,
95
+ outputAmount: route.outputAmount,
96
+ })),
97
+ tradeType: quote.tradeType,
98
+ });
99
+ }
100
+ static toCurrency(isNative, token) {
101
+ if (isNative) {
102
+ return sdk_core_1.Ether.onChain(token.chainId);
103
+ }
104
+ return this.toToken(token);
105
+ }
106
+ static toToken(token) {
107
+ const { chainId, address, decimals, symbol, buyFeeBps, sellFeeBps } = token;
108
+ return new sdk_core_1.Token(chainId, address, parseInt(decimals.toString()), symbol,
109
+ /* name */ undefined, false, buyFeeBps ? ethers_1.BigNumber.from(buyFeeBps) : undefined, sellFeeBps ? ethers_1.BigNumber.from(sellFeeBps) : undefined);
110
+ }
111
+ static toV3Pool({ fee, sqrtRatioX96, liquidity, tickCurrent, tokenIn, tokenOut }) {
112
+ return new v3_sdk_1.Pool(RouterTradeAdapter.toToken(tokenIn), RouterTradeAdapter.toToken(tokenOut), parseInt(fee), sqrtRatioX96, liquidity, parseInt(tickCurrent));
113
+ }
114
+ static toV4Pool(pool) {
115
+ const parsedCurrencyIn = RouterTradeAdapter.toCurrency((0, exports.isNativeCurrency)(pool.tokenIn.address), pool.tokenIn);
116
+ const parsedCurrencyOut = RouterTradeAdapter.toCurrency((0, exports.isNativeCurrency)(pool.tokenOut.address), pool.tokenOut);
117
+ return new v4_sdk_1.Pool(parsedCurrencyIn, parsedCurrencyOut, parseInt(pool.fee), parseInt(pool.tickSpacing), pool.hooks, pool.sqrtRatioX96, pool.liquidity, parseInt(pool.tickCurrent));
118
+ }
119
+ static isVersionedRoute(type, route) {
120
+ return route.every((pool) => pool.type === type);
121
+ }
122
+ }
123
+ exports.RouterTradeAdapter = RouterTradeAdapter;
124
+ RouterTradeAdapter.toPoolOrPair = (pool) => {
125
+ switch (pool.type) {
126
+ case PoolType.V4Pool:
127
+ return RouterTradeAdapter.toV4Pool(pool);
128
+ case PoolType.V3Pool:
129
+ return RouterTradeAdapter.toV3Pool(pool);
130
+ case PoolType.V2Pool:
131
+ return RouterTradeAdapter.toPair(pool);
132
+ default:
133
+ throw new Error('Invalid pool type');
134
+ }
135
+ };
136
+ RouterTradeAdapter.toPair = ({ reserve0, reserve1 }) => {
137
+ return new v2_sdk_1.Pair(sdk_core_1.CurrencyAmount.fromRawAmount(RouterTradeAdapter.toToken(reserve0.token), reserve0.quotient), sdk_core_1.CurrencyAmount.fromRawAmount(RouterTradeAdapter.toToken(reserve1.token), reserve1.quotient));
138
+ };
139
+ //# sourceMappingURL=routerTradeAdapter.js.map