@fenine/universal-router-sdk 1.0.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.
Files changed (163) hide show
  1. package/README.md +331 -0
  2. package/dist/cjs/src/entities/Command.d.ts +12 -0
  3. package/dist/cjs/src/entities/Command.js +9 -0
  4. package/dist/cjs/src/entities/Command.js.map +1 -0
  5. package/dist/cjs/src/entities/actions/across.d.ts +21 -0
  6. package/dist/cjs/src/entities/actions/across.js +7 -0
  7. package/dist/cjs/src/entities/actions/across.js.map +1 -0
  8. package/dist/cjs/src/entities/actions/index.d.ts +3 -0
  9. package/dist/cjs/src/entities/actions/index.js +7 -0
  10. package/dist/cjs/src/entities/actions/index.js.map +1 -0
  11. package/dist/cjs/src/entities/actions/uniswap.d.ts +38 -0
  12. package/dist/cjs/src/entities/actions/uniswap.js +545 -0
  13. package/dist/cjs/src/entities/actions/uniswap.js.map +1 -0
  14. package/dist/cjs/src/entities/actions/unwrapWETH.d.ts +12 -0
  15. package/dist/cjs/src/entities/actions/unwrapWETH.js +33 -0
  16. package/dist/cjs/src/entities/actions/unwrapWETH.js.map +1 -0
  17. package/dist/cjs/src/entities/index.d.ts +2 -0
  18. package/dist/cjs/src/entities/index.js +6 -0
  19. package/dist/cjs/src/entities/index.js.map +1 -0
  20. package/dist/cjs/src/index.d.ts +14 -0
  21. package/dist/cjs/src/index.js +36 -0
  22. package/dist/cjs/src/index.js.map +1 -0
  23. package/dist/cjs/src/swapRouter.d.ts +103 -0
  24. package/dist/cjs/src/swapRouter.js +338 -0
  25. package/dist/cjs/src/swapRouter.js.map +1 -0
  26. package/dist/cjs/src/types/encodeSwaps.d.ts +149 -0
  27. package/dist/cjs/src/types/encodeSwaps.js +3 -0
  28. package/dist/cjs/src/types/encodeSwaps.js.map +1 -0
  29. package/dist/cjs/src/utils/commandParser.d.ts +34 -0
  30. package/dist/cjs/src/utils/commandParser.js +145 -0
  31. package/dist/cjs/src/utils/commandParser.js.map +1 -0
  32. package/dist/cjs/src/utils/computeEncodeSwapsAmounts.d.ts +8 -0
  33. package/dist/cjs/src/utils/computeEncodeSwapsAmounts.js +47 -0
  34. package/dist/cjs/src/utils/computeEncodeSwapsAmounts.js.map +1 -0
  35. package/dist/cjs/src/utils/constants.d.ts +39 -0
  36. package/dist/cjs/src/utils/constants.js +560 -0
  37. package/dist/cjs/src/utils/constants.js.map +1 -0
  38. package/dist/cjs/src/utils/eip712.d.ts +17 -0
  39. package/dist/cjs/src/utils/eip712.js +43 -0
  40. package/dist/cjs/src/utils/eip712.js.map +1 -0
  41. package/dist/cjs/src/utils/encodeSwapStep.d.ts +4 -0
  42. package/dist/cjs/src/utils/encodeSwapStep.js +61 -0
  43. package/dist/cjs/src/utils/encodeSwapStep.js.map +1 -0
  44. package/dist/cjs/src/utils/encodeV4Action.d.ts +8 -0
  45. package/dist/cjs/src/utils/encodeV4Action.js +97 -0
  46. package/dist/cjs/src/utils/encodeV4Action.js.map +1 -0
  47. package/dist/cjs/src/utils/getCurrencyAddress.d.ts +2 -0
  48. package/dist/cjs/src/utils/getCurrencyAddress.js +9 -0
  49. package/dist/cjs/src/utils/getCurrencyAddress.js.map +1 -0
  50. package/dist/cjs/src/utils/inputTokens.d.ts +23 -0
  51. package/dist/cjs/src/utils/inputTokens.js +58 -0
  52. package/dist/cjs/src/utils/inputTokens.js.map +1 -0
  53. package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.d.ts +2 -0
  54. package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.js +18 -0
  55. package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.js.map +1 -0
  56. package/dist/cjs/src/utils/numbers.d.ts +7 -0
  57. package/dist/cjs/src/utils/numbers.js +27 -0
  58. package/dist/cjs/src/utils/numbers.js.map +1 -0
  59. package/dist/cjs/src/utils/pathCurrency.d.ts +3 -0
  60. package/dist/cjs/src/utils/pathCurrency.js +27 -0
  61. package/dist/cjs/src/utils/pathCurrency.js.map +1 -0
  62. package/dist/cjs/src/utils/routerCommands.d.ts +77 -0
  63. package/dist/cjs/src/utils/routerCommands.js +334 -0
  64. package/dist/cjs/src/utils/routerCommands.js.map +1 -0
  65. package/dist/cjs/src/utils/routerTradeAdapter.d.ts +73 -0
  66. package/dist/cjs/src/utils/routerTradeAdapter.js +139 -0
  67. package/dist/cjs/src/utils/routerTradeAdapter.js.map +1 -0
  68. package/dist/cjs/src/utils/validateEncodeSwaps.d.ts +2 -0
  69. package/dist/cjs/src/utils/validateEncodeSwaps.js +135 -0
  70. package/dist/cjs/src/utils/validateEncodeSwaps.js.map +1 -0
  71. package/dist/esm/src/entities/Command.d.ts +12 -0
  72. package/dist/esm/src/entities/Command.js +6 -0
  73. package/dist/esm/src/entities/Command.js.map +1 -0
  74. package/dist/esm/src/entities/actions/across.d.ts +21 -0
  75. package/dist/esm/src/entities/actions/across.js +3 -0
  76. package/dist/esm/src/entities/actions/across.js.map +1 -0
  77. package/dist/esm/src/entities/actions/index.d.ts +3 -0
  78. package/dist/esm/src/entities/actions/index.js +4 -0
  79. package/dist/esm/src/entities/actions/index.js.map +1 -0
  80. package/dist/esm/src/entities/actions/uniswap.d.ts +38 -0
  81. package/dist/esm/src/entities/actions/uniswap.js +541 -0
  82. package/dist/esm/src/entities/actions/uniswap.js.map +1 -0
  83. package/dist/esm/src/entities/actions/unwrapWETH.d.ts +12 -0
  84. package/dist/esm/src/entities/actions/unwrapWETH.js +28 -0
  85. package/dist/esm/src/entities/actions/unwrapWETH.js.map +1 -0
  86. package/dist/esm/src/entities/index.d.ts +2 -0
  87. package/dist/esm/src/entities/index.js +3 -0
  88. package/dist/esm/src/entities/index.js.map +1 -0
  89. package/dist/esm/src/index.d.ts +14 -0
  90. package/dist/esm/src/index.js +11 -0
  91. package/dist/esm/src/index.js.map +1 -0
  92. package/dist/esm/src/swapRouter.d.ts +103 -0
  93. package/dist/esm/src/swapRouter.js +333 -0
  94. package/dist/esm/src/swapRouter.js.map +1 -0
  95. package/dist/esm/src/types/encodeSwaps.d.ts +149 -0
  96. package/dist/esm/src/types/encodeSwaps.js +2 -0
  97. package/dist/esm/src/types/encodeSwaps.js.map +1 -0
  98. package/dist/esm/src/utils/commandParser.d.ts +34 -0
  99. package/dist/esm/src/utils/commandParser.js +137 -0
  100. package/dist/esm/src/utils/commandParser.js.map +1 -0
  101. package/dist/esm/src/utils/computeEncodeSwapsAmounts.d.ts +8 -0
  102. package/dist/esm/src/utils/computeEncodeSwapsAmounts.js +43 -0
  103. package/dist/esm/src/utils/computeEncodeSwapsAmounts.js.map +1 -0
  104. package/dist/esm/src/utils/constants.d.ts +39 -0
  105. package/dist/esm/src/utils/constants.js +552 -0
  106. package/dist/esm/src/utils/constants.js.map +1 -0
  107. package/dist/esm/src/utils/eip712.d.ts +17 -0
  108. package/dist/esm/src/utils/eip712.js +38 -0
  109. package/dist/esm/src/utils/eip712.js.map +1 -0
  110. package/dist/esm/src/utils/encodeSwapStep.d.ts +4 -0
  111. package/dist/esm/src/utils/encodeSwapStep.js +57 -0
  112. package/dist/esm/src/utils/encodeSwapStep.js.map +1 -0
  113. package/dist/esm/src/utils/encodeV4Action.d.ts +8 -0
  114. package/dist/esm/src/utils/encodeV4Action.js +92 -0
  115. package/dist/esm/src/utils/encodeV4Action.js.map +1 -0
  116. package/dist/esm/src/utils/getCurrencyAddress.d.ts +2 -0
  117. package/dist/esm/src/utils/getCurrencyAddress.js +5 -0
  118. package/dist/esm/src/utils/getCurrencyAddress.js.map +1 -0
  119. package/dist/esm/src/utils/inputTokens.d.ts +23 -0
  120. package/dist/esm/src/utils/inputTokens.js +51 -0
  121. package/dist/esm/src/utils/inputTokens.js.map +1 -0
  122. package/dist/esm/src/utils/normalizeEncodeSwapsSpec.d.ts +2 -0
  123. package/dist/esm/src/utils/normalizeEncodeSwapsSpec.js +14 -0
  124. package/dist/esm/src/utils/normalizeEncodeSwapsSpec.js.map +1 -0
  125. package/dist/esm/src/utils/numbers.d.ts +7 -0
  126. package/dist/esm/src/utils/numbers.js +19 -0
  127. package/dist/esm/src/utils/numbers.js.map +1 -0
  128. package/dist/esm/src/utils/pathCurrency.d.ts +3 -0
  129. package/dist/esm/src/utils/pathCurrency.js +23 -0
  130. package/dist/esm/src/utils/pathCurrency.js.map +1 -0
  131. package/dist/esm/src/utils/routerCommands.d.ts +77 -0
  132. package/dist/esm/src/utils/routerCommands.js +329 -0
  133. package/dist/esm/src/utils/routerCommands.js.map +1 -0
  134. package/dist/esm/src/utils/routerTradeAdapter.d.ts +73 -0
  135. package/dist/esm/src/utils/routerTradeAdapter.js +134 -0
  136. package/dist/esm/src/utils/routerTradeAdapter.js.map +1 -0
  137. package/dist/esm/src/utils/validateEncodeSwaps.d.ts +2 -0
  138. package/dist/esm/src/utils/validateEncodeSwaps.js +130 -0
  139. package/dist/esm/src/utils/validateEncodeSwaps.js.map +1 -0
  140. package/dist/types/src/entities/Command.d.ts +12 -0
  141. package/dist/types/src/entities/actions/across.d.ts +21 -0
  142. package/dist/types/src/entities/actions/index.d.ts +3 -0
  143. package/dist/types/src/entities/actions/uniswap.d.ts +38 -0
  144. package/dist/types/src/entities/actions/unwrapWETH.d.ts +12 -0
  145. package/dist/types/src/entities/index.d.ts +2 -0
  146. package/dist/types/src/index.d.ts +14 -0
  147. package/dist/types/src/swapRouter.d.ts +103 -0
  148. package/dist/types/src/types/encodeSwaps.d.ts +149 -0
  149. package/dist/types/src/utils/commandParser.d.ts +34 -0
  150. package/dist/types/src/utils/computeEncodeSwapsAmounts.d.ts +8 -0
  151. package/dist/types/src/utils/constants.d.ts +39 -0
  152. package/dist/types/src/utils/eip712.d.ts +17 -0
  153. package/dist/types/src/utils/encodeSwapStep.d.ts +4 -0
  154. package/dist/types/src/utils/encodeV4Action.d.ts +8 -0
  155. package/dist/types/src/utils/getCurrencyAddress.d.ts +2 -0
  156. package/dist/types/src/utils/inputTokens.d.ts +23 -0
  157. package/dist/types/src/utils/normalizeEncodeSwapsSpec.d.ts +2 -0
  158. package/dist/types/src/utils/numbers.d.ts +7 -0
  159. package/dist/types/src/utils/pathCurrency.d.ts +3 -0
  160. package/dist/types/src/utils/routerCommands.d.ts +77 -0
  161. package/dist/types/src/utils/routerTradeAdapter.d.ts +73 -0
  162. package/dist/types/src/utils/validateEncodeSwaps.d.ts +2 -0
  163. package/package.json +78 -0
@@ -0,0 +1,329 @@
1
+ import { defaultAbiCoder } from 'ethers/lib/utils';
2
+ import { isAtLeastV2_1_1 } from './constants';
3
+ /**
4
+ * CommandTypes
5
+ * @description Flags that modify a command's execution
6
+ * @enum {number}
7
+ */
8
+ export var CommandType;
9
+ (function (CommandType) {
10
+ CommandType[CommandType["V3_SWAP_EXACT_IN"] = 0] = "V3_SWAP_EXACT_IN";
11
+ CommandType[CommandType["V3_SWAP_EXACT_OUT"] = 1] = "V3_SWAP_EXACT_OUT";
12
+ CommandType[CommandType["PERMIT2_TRANSFER_FROM"] = 2] = "PERMIT2_TRANSFER_FROM";
13
+ CommandType[CommandType["PERMIT2_PERMIT_BATCH"] = 3] = "PERMIT2_PERMIT_BATCH";
14
+ CommandType[CommandType["SWEEP"] = 4] = "SWEEP";
15
+ CommandType[CommandType["TRANSFER"] = 5] = "TRANSFER";
16
+ CommandType[CommandType["PAY_PORTION"] = 6] = "PAY_PORTION";
17
+ CommandType[CommandType["PAY_PORTION_FULL_PRECISION"] = 7] = "PAY_PORTION_FULL_PRECISION";
18
+ CommandType[CommandType["V2_SWAP_EXACT_IN"] = 8] = "V2_SWAP_EXACT_IN";
19
+ CommandType[CommandType["V2_SWAP_EXACT_OUT"] = 9] = "V2_SWAP_EXACT_OUT";
20
+ CommandType[CommandType["PERMIT2_PERMIT"] = 10] = "PERMIT2_PERMIT";
21
+ CommandType[CommandType["WRAP_ETH"] = 11] = "WRAP_ETH";
22
+ CommandType[CommandType["UNWRAP_WETH"] = 12] = "UNWRAP_WETH";
23
+ CommandType[CommandType["PERMIT2_TRANSFER_FROM_BATCH"] = 13] = "PERMIT2_TRANSFER_FROM_BATCH";
24
+ CommandType[CommandType["BALANCE_CHECK_ERC20"] = 14] = "BALANCE_CHECK_ERC20";
25
+ CommandType[CommandType["V4_SWAP"] = 16] = "V4_SWAP";
26
+ CommandType[CommandType["V3_POSITION_MANAGER_PERMIT"] = 17] = "V3_POSITION_MANAGER_PERMIT";
27
+ CommandType[CommandType["V3_POSITION_MANAGER_CALL"] = 18] = "V3_POSITION_MANAGER_CALL";
28
+ CommandType[CommandType["V4_INITIALIZE_POOL"] = 19] = "V4_INITIALIZE_POOL";
29
+ CommandType[CommandType["V4_POSITION_MANAGER_CALL"] = 20] = "V4_POSITION_MANAGER_CALL";
30
+ CommandType[CommandType["EXECUTE_SUB_PLAN"] = 33] = "EXECUTE_SUB_PLAN";
31
+ // 3rd party integrations (0x40-0x5f range)
32
+ CommandType[CommandType["ACROSS_V4_DEPOSIT_V3"] = 64] = "ACROSS_V4_DEPOSIT_V3";
33
+ })(CommandType || (CommandType = {}));
34
+ export var Subparser;
35
+ (function (Subparser) {
36
+ Subparser[Subparser["V3PathExactIn"] = 0] = "V3PathExactIn";
37
+ Subparser[Subparser["V3PathExactOut"] = 1] = "V3PathExactOut";
38
+ })(Subparser || (Subparser = {}));
39
+ export var Parser;
40
+ (function (Parser) {
41
+ Parser[Parser["Abi"] = 0] = "Abi";
42
+ Parser[Parser["V4Actions"] = 1] = "V4Actions";
43
+ Parser[Parser["V3Actions"] = 2] = "V3Actions";
44
+ })(Parser || (Parser = {}));
45
+ const ALLOW_REVERT_FLAG = 0x80;
46
+ const REVERTIBLE_COMMANDS = new Set([CommandType.EXECUTE_SUB_PLAN]);
47
+ const PERMIT_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 nonce) details,address spender,uint256 sigDeadline)';
48
+ const PERMIT_BATCH_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 nonce)[] details,address spender,uint256 sigDeadline)';
49
+ const POOL_KEY_STRUCT = '(address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks)';
50
+ const PERMIT2_TRANSFER_FROM_STRUCT = '(address from,address to,uint160 amount,address token)';
51
+ const PERMIT2_TRANSFER_FROM_BATCH_STRUCT = PERMIT2_TRANSFER_FROM_STRUCT + '[]';
52
+ export const COMMAND_DEFINITION = {
53
+ // Batch Reverts
54
+ [CommandType.EXECUTE_SUB_PLAN]: {
55
+ parser: Parser.Abi,
56
+ params: [
57
+ { name: 'commands', type: 'bytes' },
58
+ { name: 'inputs', type: 'bytes[]' },
59
+ ],
60
+ },
61
+ // Permit2 Actions
62
+ [CommandType.PERMIT2_PERMIT]: {
63
+ parser: Parser.Abi,
64
+ params: [
65
+ { name: 'permit', type: PERMIT_STRUCT },
66
+ { name: 'signature', type: 'bytes' },
67
+ ],
68
+ },
69
+ [CommandType.PERMIT2_PERMIT_BATCH]: {
70
+ parser: Parser.Abi,
71
+ params: [
72
+ { name: 'permit', type: PERMIT_BATCH_STRUCT },
73
+ { name: 'signature', type: 'bytes' },
74
+ ],
75
+ },
76
+ [CommandType.PERMIT2_TRANSFER_FROM]: {
77
+ parser: Parser.Abi,
78
+ params: [
79
+ { name: 'token', type: 'address' },
80
+ { name: 'recipient', type: 'address' },
81
+ { name: 'amount', type: 'uint160' },
82
+ ],
83
+ },
84
+ [CommandType.PERMIT2_TRANSFER_FROM_BATCH]: {
85
+ parser: Parser.Abi,
86
+ params: [
87
+ {
88
+ name: 'transferFrom',
89
+ type: PERMIT2_TRANSFER_FROM_BATCH_STRUCT,
90
+ },
91
+ ],
92
+ },
93
+ // Uniswap Actions
94
+ [CommandType.V3_SWAP_EXACT_IN]: {
95
+ parser: Parser.Abi,
96
+ params: [
97
+ { name: 'recipient', type: 'address' },
98
+ { name: 'amountIn', type: 'uint256' },
99
+ { name: 'amountOutMin', type: 'uint256' },
100
+ { name: 'path', subparser: Subparser.V3PathExactIn, type: 'bytes' },
101
+ { name: 'payerIsUser', type: 'bool' },
102
+ ],
103
+ },
104
+ [CommandType.V3_SWAP_EXACT_OUT]: {
105
+ parser: Parser.Abi,
106
+ params: [
107
+ { name: 'recipient', type: 'address' },
108
+ { name: 'amountOut', type: 'uint256' },
109
+ { name: 'amountInMax', type: 'uint256' },
110
+ { name: 'path', subparser: Subparser.V3PathExactOut, type: 'bytes' },
111
+ { name: 'payerIsUser', type: 'bool' },
112
+ ],
113
+ },
114
+ [CommandType.V2_SWAP_EXACT_IN]: {
115
+ parser: Parser.Abi,
116
+ params: [
117
+ { name: 'recipient', type: 'address' },
118
+ { name: 'amountIn', type: 'uint256' },
119
+ { name: 'amountOutMin', type: 'uint256' },
120
+ { name: 'path', type: 'address[]' },
121
+ { name: 'payerIsUser', type: 'bool' },
122
+ ],
123
+ },
124
+ [CommandType.V2_SWAP_EXACT_OUT]: {
125
+ parser: Parser.Abi,
126
+ params: [
127
+ { name: 'recipient', type: 'address' },
128
+ { name: 'amountOut', type: 'uint256' },
129
+ { name: 'amountInMax', type: 'uint256' },
130
+ { name: 'path', type: 'address[]' },
131
+ { name: 'payerIsUser', type: 'bool' },
132
+ ],
133
+ },
134
+ [CommandType.V4_SWAP]: { parser: Parser.V4Actions },
135
+ // Token Actions and Checks
136
+ [CommandType.WRAP_ETH]: {
137
+ parser: Parser.Abi,
138
+ params: [
139
+ { name: 'recipient', type: 'address' },
140
+ { name: 'amount', type: 'uint256' },
141
+ ],
142
+ },
143
+ [CommandType.UNWRAP_WETH]: {
144
+ parser: Parser.Abi,
145
+ params: [
146
+ { name: 'recipient', type: 'address' },
147
+ { name: 'amountMin', type: 'uint256' },
148
+ ],
149
+ },
150
+ [CommandType.SWEEP]: {
151
+ parser: Parser.Abi,
152
+ params: [
153
+ { name: 'token', type: 'address' },
154
+ { name: 'recipient', type: 'address' },
155
+ { name: 'amountMin', type: 'uint256' },
156
+ ],
157
+ },
158
+ [CommandType.TRANSFER]: {
159
+ parser: Parser.Abi,
160
+ params: [
161
+ { name: 'token', type: 'address' },
162
+ { name: 'recipient', type: 'address' },
163
+ { name: 'value', type: 'uint256' },
164
+ ],
165
+ },
166
+ [CommandType.PAY_PORTION]: {
167
+ parser: Parser.Abi,
168
+ params: [
169
+ { name: 'token', type: 'address' },
170
+ { name: 'recipient', type: 'address' },
171
+ { name: 'bips', type: 'uint256' },
172
+ ],
173
+ },
174
+ [CommandType.PAY_PORTION_FULL_PRECISION]: {
175
+ parser: Parser.Abi,
176
+ params: [
177
+ { name: 'token', type: 'address' },
178
+ { name: 'recipient', type: 'address' },
179
+ { name: 'portion', type: 'uint256' },
180
+ ],
181
+ },
182
+ [CommandType.BALANCE_CHECK_ERC20]: {
183
+ parser: Parser.Abi,
184
+ params: [
185
+ { name: 'owner', type: 'address' },
186
+ { name: 'token', type: 'address' },
187
+ { name: 'minBalance', type: 'uint256' },
188
+ ],
189
+ },
190
+ [CommandType.V4_INITIALIZE_POOL]: {
191
+ parser: Parser.Abi,
192
+ params: [
193
+ { name: 'poolKey', type: POOL_KEY_STRUCT },
194
+ { name: 'sqrtPriceX96', type: 'uint160' },
195
+ ],
196
+ },
197
+ // Position Actions
198
+ [CommandType.V3_POSITION_MANAGER_PERMIT]: { parser: Parser.V3Actions },
199
+ [CommandType.V3_POSITION_MANAGER_CALL]: { parser: Parser.V3Actions },
200
+ [CommandType.V4_POSITION_MANAGER_CALL]: { parser: Parser.V4Actions },
201
+ // 3rd Party Integrations
202
+ [CommandType.ACROSS_V4_DEPOSIT_V3]: {
203
+ parser: Parser.Abi,
204
+ params: [
205
+ { name: 'depositor', type: 'address' },
206
+ { name: 'recipient', type: 'address' },
207
+ { name: 'inputToken', type: 'address' },
208
+ { name: 'outputToken', type: 'address' },
209
+ { name: 'inputAmount', type: 'uint256' },
210
+ { name: 'outputAmount', type: 'uint256' },
211
+ { name: 'destinationChainId', type: 'uint256' },
212
+ { name: 'exclusiveRelayer', type: 'address' },
213
+ { name: 'quoteTimestamp', type: 'uint32' },
214
+ { name: 'fillDeadline', type: 'uint32' },
215
+ { name: 'exclusivityDeadline', type: 'uint32' },
216
+ { name: 'message', type: 'bytes' },
217
+ { name: 'useNative', type: 'bool' },
218
+ ],
219
+ },
220
+ };
221
+ // V2.1.1 ABI definitions for V2/V3 swap commands (extended with minHopPriceX36)
222
+ export const V2V3_SWAP_COMMANDS_V2_1_1 = {
223
+ [CommandType.V3_SWAP_EXACT_IN]: {
224
+ parser: Parser.Abi,
225
+ params: [
226
+ { name: 'recipient', type: 'address' },
227
+ { name: 'amountIn', type: 'uint256' },
228
+ { name: 'amountOutMin', type: 'uint256' },
229
+ { name: 'path', subparser: Subparser.V3PathExactIn, type: 'bytes' },
230
+ { name: 'payerIsUser', type: 'bool' },
231
+ { name: 'minHopPriceX36', type: 'uint256[]' },
232
+ ],
233
+ },
234
+ [CommandType.V3_SWAP_EXACT_OUT]: {
235
+ parser: Parser.Abi,
236
+ params: [
237
+ { name: 'recipient', type: 'address' },
238
+ { name: 'amountOut', type: 'uint256' },
239
+ { name: 'amountInMax', type: 'uint256' },
240
+ { name: 'path', subparser: Subparser.V3PathExactOut, type: 'bytes' },
241
+ { name: 'payerIsUser', type: 'bool' },
242
+ { name: 'minHopPriceX36', type: 'uint256[]' },
243
+ ],
244
+ },
245
+ [CommandType.V2_SWAP_EXACT_IN]: {
246
+ parser: Parser.Abi,
247
+ params: [
248
+ { name: 'recipient', type: 'address' },
249
+ { name: 'amountIn', type: 'uint256' },
250
+ { name: 'amountOutMin', type: 'uint256' },
251
+ { name: 'path', type: 'address[]' },
252
+ { name: 'payerIsUser', type: 'bool' },
253
+ { name: 'minHopPriceX36', type: 'uint256[]' },
254
+ ],
255
+ },
256
+ [CommandType.V2_SWAP_EXACT_OUT]: {
257
+ parser: Parser.Abi,
258
+ params: [
259
+ { name: 'recipient', type: 'address' },
260
+ { name: 'amountOut', type: 'uint256' },
261
+ { name: 'amountInMax', type: 'uint256' },
262
+ { name: 'path', type: 'address[]' },
263
+ { name: 'payerIsUser', type: 'bool' },
264
+ { name: 'minHopPriceX36', type: 'uint256[]' },
265
+ ],
266
+ },
267
+ };
268
+ export class RoutePlanner {
269
+ constructor() {
270
+ this.commands = '0x';
271
+ this.inputs = [];
272
+ }
273
+ addSubPlan(subplan) {
274
+ this.addCommand(CommandType.EXECUTE_SUB_PLAN, [subplan.commands, subplan.inputs], true);
275
+ return this;
276
+ }
277
+ addCommand(type, parameters, allowRevert = false, urVersion) {
278
+ let command = createCommand(type, parameters, urVersion);
279
+ this.inputs.push(command.encodedInput);
280
+ if (allowRevert) {
281
+ if (!REVERTIBLE_COMMANDS.has(command.type)) {
282
+ throw new Error(`command type: ${command.type} cannot be allowed to revert`);
283
+ }
284
+ command.type = command.type | ALLOW_REVERT_FLAG;
285
+ }
286
+ this.commands = this.commands.concat(command.type.toString(16).padStart(2, '0'));
287
+ return this;
288
+ }
289
+ /**
290
+ * Add Across bridge deposit command for cross-chain bridging
291
+ * @param params AcrossV4DepositV3Params containing bridge parameters
292
+ * @returns RoutePlanner instance for chaining
293
+ */
294
+ addAcrossBridge(params) {
295
+ this.addCommand(CommandType.ACROSS_V4_DEPOSIT_V3, [
296
+ params.depositor,
297
+ params.recipient,
298
+ params.inputToken,
299
+ params.outputToken,
300
+ params.inputAmount,
301
+ params.outputAmount,
302
+ params.destinationChainId,
303
+ params.exclusiveRelayer,
304
+ params.quoteTimestamp,
305
+ params.fillDeadline,
306
+ params.exclusivityDeadline,
307
+ params.message,
308
+ params.useNative,
309
+ ]);
310
+ return this;
311
+ }
312
+ }
313
+ export function createCommand(type, parameters, urVersion) {
314
+ const commandDef = isAtLeastV2_1_1(urVersion) && type in V2V3_SWAP_COMMANDS_V2_1_1
315
+ ? V2V3_SWAP_COMMANDS_V2_1_1[type]
316
+ : COMMAND_DEFINITION[type];
317
+ switch (commandDef.parser) {
318
+ case Parser.Abi:
319
+ const encodedInput = defaultAbiCoder.encode(commandDef.params.map((abi) => abi.type), parameters);
320
+ return { type, encodedInput };
321
+ case Parser.V4Actions:
322
+ // v4 swap data comes pre-encoded at index 0
323
+ return { type, encodedInput: parameters[0] };
324
+ case Parser.V3Actions:
325
+ // v3 swap data comes pre-encoded at index 0
326
+ return { type, encodedInput: parameters[0] };
327
+ }
328
+ }
329
+ //# 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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"}
@@ -0,0 +1,73 @@
1
+ import { Trade as RouterTrade } from '@uniswap/router-sdk';
2
+ import { Currency, TradeType } from '@fenine/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,134 @@
1
+ import { MixedRouteSDK, Trade as RouterTrade } from '@uniswap/router-sdk';
2
+ import { CurrencyAmount, Ether, Token } from '@fenine/sdk-core';
3
+ import { Pair, Route as V2Route } from '@uniswap/v2-sdk';
4
+ import { Pool as V3Pool, Route as V3Route } from '@fenine/v3-sdk';
5
+ import { Pool as V4Pool, Route as V4Route } from '@uniswap/v4-sdk';
6
+ import { BigNumber } from 'ethers';
7
+ import { ETH_ADDRESS, E_ETH_ADDRESS } from './constants';
8
+ export var PoolType;
9
+ (function (PoolType) {
10
+ PoolType["V2Pool"] = "v2-pool";
11
+ PoolType["V3Pool"] = "v3-pool";
12
+ PoolType["V4Pool"] = "v4-pool";
13
+ })(PoolType || (PoolType = {}));
14
+ export const isNativeCurrency = (address) => address.toLowerCase() === ETH_ADDRESS.toLowerCase() || address.toLowerCase() === E_ETH_ADDRESS.toLowerCase();
15
+ // Helper class to convert routing-specific quote entities to RouterTrade entities
16
+ // the returned RouterTrade can then be used to build the UniswapTrade entity in this package
17
+ export class RouterTradeAdapter {
18
+ // Generate a RouterTrade using fields from a classic quote response
19
+ static fromClassicQuote(quote) {
20
+ const { route, tokenIn, tokenOut } = quote;
21
+ if (!route)
22
+ throw new Error('Expected route to be present');
23
+ if (!route.length)
24
+ throw new Error('Expected there to be at least one route');
25
+ if (route.some((r) => !r.length))
26
+ throw new Error('Expected all routes to have at least one pool');
27
+ const firstRoute = route[0];
28
+ const tokenInData = firstRoute[0].tokenIn;
29
+ const tokenOutData = firstRoute[firstRoute.length - 1].tokenOut;
30
+ if (!tokenInData || !tokenOutData)
31
+ throw new Error('Expected both tokenIn and tokenOut to be present');
32
+ if (tokenInData.chainId !== tokenOutData.chainId)
33
+ throw new Error('Expected tokenIn and tokenOut to be have same chainId');
34
+ const parsedCurrencyIn = RouterTradeAdapter.toCurrency(isNativeCurrency(tokenIn), tokenInData);
35
+ const parsedCurrencyOut = RouterTradeAdapter.toCurrency(isNativeCurrency(tokenOut), tokenOutData);
36
+ const typedRoutes = route.map((subRoute) => {
37
+ const rawAmountIn = subRoute[0].amountIn;
38
+ const rawAmountOut = subRoute[subRoute.length - 1].amountOut;
39
+ if (!rawAmountIn || !rawAmountOut) {
40
+ throw new Error('Expected both raw amountIn and raw amountOut to be present');
41
+ }
42
+ const inputAmount = CurrencyAmount.fromRawAmount(parsedCurrencyIn, rawAmountIn);
43
+ const outputAmount = CurrencyAmount.fromRawAmount(parsedCurrencyOut, rawAmountOut);
44
+ const isOnlyV2 = RouterTradeAdapter.isVersionedRoute(PoolType.V2Pool, subRoute);
45
+ const isOnlyV3 = RouterTradeAdapter.isVersionedRoute(PoolType.V3Pool, subRoute);
46
+ const isOnlyV4 = RouterTradeAdapter.isVersionedRoute(PoolType.V4Pool, subRoute);
47
+ return {
48
+ routev4: isOnlyV4
49
+ ? new V4Route(subRoute.map(RouterTradeAdapter.toV4Pool), parsedCurrencyIn, parsedCurrencyOut)
50
+ : null,
51
+ routev3: isOnlyV3
52
+ ? new V3Route(subRoute.map(RouterTradeAdapter.toV3Pool), parsedCurrencyIn, parsedCurrencyOut)
53
+ : null,
54
+ routev2: isOnlyV2
55
+ ? new V2Route(subRoute.map(RouterTradeAdapter.toPair), parsedCurrencyIn, parsedCurrencyOut)
56
+ : null,
57
+ mixedRoute: !isOnlyV4 && !isOnlyV3 && !isOnlyV2
58
+ ? new MixedRouteSDK(subRoute.map(RouterTradeAdapter.toPoolOrPair), parsedCurrencyIn, parsedCurrencyOut)
59
+ : null,
60
+ inputAmount,
61
+ outputAmount,
62
+ };
63
+ });
64
+ return new RouterTrade({
65
+ v2Routes: typedRoutes
66
+ .filter((route) => route.routev2)
67
+ .map((route) => ({
68
+ routev2: route.routev2,
69
+ inputAmount: route.inputAmount,
70
+ outputAmount: route.outputAmount,
71
+ })),
72
+ v3Routes: typedRoutes
73
+ .filter((route) => route.routev3)
74
+ .map((route) => ({
75
+ routev3: route.routev3,
76
+ inputAmount: route.inputAmount,
77
+ outputAmount: route.outputAmount,
78
+ })),
79
+ v4Routes: typedRoutes
80
+ .filter((route) => route.routev4)
81
+ .map((route) => ({
82
+ routev4: route.routev4,
83
+ inputAmount: route.inputAmount,
84
+ outputAmount: route.outputAmount,
85
+ })),
86
+ mixedRoutes: typedRoutes
87
+ .filter((route) => route.mixedRoute)
88
+ .map((route) => ({
89
+ mixedRoute: route.mixedRoute,
90
+ inputAmount: route.inputAmount,
91
+ outputAmount: route.outputAmount,
92
+ })),
93
+ tradeType: quote.tradeType,
94
+ });
95
+ }
96
+ static toCurrency(isNative, token) {
97
+ if (isNative) {
98
+ return Ether.onChain(token.chainId);
99
+ }
100
+ return this.toToken(token);
101
+ }
102
+ static toToken(token) {
103
+ const { chainId, address, decimals, symbol, buyFeeBps, sellFeeBps } = token;
104
+ return new Token(chainId, address, parseInt(decimals.toString()), symbol,
105
+ /* name */ undefined, false, buyFeeBps ? BigNumber.from(buyFeeBps) : undefined, sellFeeBps ? BigNumber.from(sellFeeBps) : undefined);
106
+ }
107
+ static toV3Pool({ fee, sqrtRatioX96, liquidity, tickCurrent, tokenIn, tokenOut }) {
108
+ return new V3Pool(RouterTradeAdapter.toToken(tokenIn), RouterTradeAdapter.toToken(tokenOut), parseInt(fee), sqrtRatioX96, liquidity, parseInt(tickCurrent));
109
+ }
110
+ static toV4Pool(pool) {
111
+ const parsedCurrencyIn = RouterTradeAdapter.toCurrency(isNativeCurrency(pool.tokenIn.address), pool.tokenIn);
112
+ const parsedCurrencyOut = RouterTradeAdapter.toCurrency(isNativeCurrency(pool.tokenOut.address), pool.tokenOut);
113
+ return new V4Pool(parsedCurrencyIn, parsedCurrencyOut, parseInt(pool.fee), parseInt(pool.tickSpacing), pool.hooks, pool.sqrtRatioX96, pool.liquidity, parseInt(pool.tickCurrent));
114
+ }
115
+ static isVersionedRoute(type, route) {
116
+ return route.every((pool) => pool.type === type);
117
+ }
118
+ }
119
+ RouterTradeAdapter.toPoolOrPair = (pool) => {
120
+ switch (pool.type) {
121
+ case PoolType.V4Pool:
122
+ return RouterTradeAdapter.toV4Pool(pool);
123
+ case PoolType.V3Pool:
124
+ return RouterTradeAdapter.toV3Pool(pool);
125
+ case PoolType.V2Pool:
126
+ return RouterTradeAdapter.toPair(pool);
127
+ default:
128
+ throw new Error('Invalid pool type');
129
+ }
130
+ };
131
+ RouterTradeAdapter.toPair = ({ reserve0, reserve1 }) => {
132
+ return new Pair(CurrencyAmount.fromRawAmount(RouterTradeAdapter.toToken(reserve0.token), reserve0.quotient), CurrencyAmount.fromRawAmount(RouterTradeAdapter.toToken(reserve1.token), reserve1.quotient));
133
+ };
134
+ //# sourceMappingURL=routerTradeAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routerTradeAdapter.js","sourceRoot":"","sources":["../../../../src/utils/routerTradeAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { NormalizedSwapSpecification, SwapStep } from '../types/encodeSwaps';
2
+ export declare function validateEncodeSwaps(spec: NormalizedSwapSpecification, swapSteps: SwapStep[]): void;