@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.
- package/README.md +331 -0
- package/dist/cjs/src/entities/Command.d.ts +12 -0
- package/dist/cjs/src/entities/Command.js +9 -0
- package/dist/cjs/src/entities/Command.js.map +1 -0
- package/dist/cjs/src/entities/actions/across.d.ts +21 -0
- package/dist/cjs/src/entities/actions/across.js +7 -0
- package/dist/cjs/src/entities/actions/across.js.map +1 -0
- package/dist/cjs/src/entities/actions/index.d.ts +3 -0
- package/dist/cjs/src/entities/actions/index.js +7 -0
- package/dist/cjs/src/entities/actions/index.js.map +1 -0
- package/dist/cjs/src/entities/actions/uniswap.d.ts +38 -0
- package/dist/cjs/src/entities/actions/uniswap.js +545 -0
- package/dist/cjs/src/entities/actions/uniswap.js.map +1 -0
- package/dist/cjs/src/entities/actions/unwrapWETH.d.ts +12 -0
- package/dist/cjs/src/entities/actions/unwrapWETH.js +33 -0
- package/dist/cjs/src/entities/actions/unwrapWETH.js.map +1 -0
- package/dist/cjs/src/entities/index.d.ts +2 -0
- package/dist/cjs/src/entities/index.js +6 -0
- package/dist/cjs/src/entities/index.js.map +1 -0
- package/dist/cjs/src/index.d.ts +14 -0
- package/dist/cjs/src/index.js +36 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/swapRouter.d.ts +103 -0
- package/dist/cjs/src/swapRouter.js +338 -0
- package/dist/cjs/src/swapRouter.js.map +1 -0
- package/dist/cjs/src/types/encodeSwaps.d.ts +149 -0
- package/dist/cjs/src/types/encodeSwaps.js +3 -0
- package/dist/cjs/src/types/encodeSwaps.js.map +1 -0
- package/dist/cjs/src/utils/commandParser.d.ts +34 -0
- package/dist/cjs/src/utils/commandParser.js +145 -0
- package/dist/cjs/src/utils/commandParser.js.map +1 -0
- package/dist/cjs/src/utils/computeEncodeSwapsAmounts.d.ts +8 -0
- package/dist/cjs/src/utils/computeEncodeSwapsAmounts.js +47 -0
- package/dist/cjs/src/utils/computeEncodeSwapsAmounts.js.map +1 -0
- package/dist/cjs/src/utils/constants.d.ts +39 -0
- package/dist/cjs/src/utils/constants.js +560 -0
- package/dist/cjs/src/utils/constants.js.map +1 -0
- package/dist/cjs/src/utils/eip712.d.ts +17 -0
- package/dist/cjs/src/utils/eip712.js +43 -0
- package/dist/cjs/src/utils/eip712.js.map +1 -0
- package/dist/cjs/src/utils/encodeSwapStep.d.ts +4 -0
- package/dist/cjs/src/utils/encodeSwapStep.js +61 -0
- package/dist/cjs/src/utils/encodeSwapStep.js.map +1 -0
- package/dist/cjs/src/utils/encodeV4Action.d.ts +8 -0
- package/dist/cjs/src/utils/encodeV4Action.js +97 -0
- package/dist/cjs/src/utils/encodeV4Action.js.map +1 -0
- package/dist/cjs/src/utils/getCurrencyAddress.d.ts +2 -0
- package/dist/cjs/src/utils/getCurrencyAddress.js +9 -0
- package/dist/cjs/src/utils/getCurrencyAddress.js.map +1 -0
- package/dist/cjs/src/utils/inputTokens.d.ts +23 -0
- package/dist/cjs/src/utils/inputTokens.js +58 -0
- package/dist/cjs/src/utils/inputTokens.js.map +1 -0
- package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.d.ts +2 -0
- package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.js +18 -0
- package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.js.map +1 -0
- package/dist/cjs/src/utils/numbers.d.ts +7 -0
- package/dist/cjs/src/utils/numbers.js +27 -0
- package/dist/cjs/src/utils/numbers.js.map +1 -0
- package/dist/cjs/src/utils/pathCurrency.d.ts +3 -0
- package/dist/cjs/src/utils/pathCurrency.js +27 -0
- package/dist/cjs/src/utils/pathCurrency.js.map +1 -0
- package/dist/cjs/src/utils/routerCommands.d.ts +77 -0
- package/dist/cjs/src/utils/routerCommands.js +334 -0
- package/dist/cjs/src/utils/routerCommands.js.map +1 -0
- package/dist/cjs/src/utils/routerTradeAdapter.d.ts +73 -0
- package/dist/cjs/src/utils/routerTradeAdapter.js +139 -0
- package/dist/cjs/src/utils/routerTradeAdapter.js.map +1 -0
- package/dist/cjs/src/utils/validateEncodeSwaps.d.ts +2 -0
- package/dist/cjs/src/utils/validateEncodeSwaps.js +135 -0
- package/dist/cjs/src/utils/validateEncodeSwaps.js.map +1 -0
- package/dist/esm/src/entities/Command.d.ts +12 -0
- package/dist/esm/src/entities/Command.js +6 -0
- package/dist/esm/src/entities/Command.js.map +1 -0
- package/dist/esm/src/entities/actions/across.d.ts +21 -0
- package/dist/esm/src/entities/actions/across.js +3 -0
- package/dist/esm/src/entities/actions/across.js.map +1 -0
- package/dist/esm/src/entities/actions/index.d.ts +3 -0
- package/dist/esm/src/entities/actions/index.js +4 -0
- package/dist/esm/src/entities/actions/index.js.map +1 -0
- package/dist/esm/src/entities/actions/uniswap.d.ts +38 -0
- package/dist/esm/src/entities/actions/uniswap.js +541 -0
- package/dist/esm/src/entities/actions/uniswap.js.map +1 -0
- package/dist/esm/src/entities/actions/unwrapWETH.d.ts +12 -0
- package/dist/esm/src/entities/actions/unwrapWETH.js +28 -0
- package/dist/esm/src/entities/actions/unwrapWETH.js.map +1 -0
- package/dist/esm/src/entities/index.d.ts +2 -0
- package/dist/esm/src/entities/index.js +3 -0
- package/dist/esm/src/entities/index.js.map +1 -0
- package/dist/esm/src/index.d.ts +14 -0
- package/dist/esm/src/index.js +11 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/swapRouter.d.ts +103 -0
- package/dist/esm/src/swapRouter.js +333 -0
- package/dist/esm/src/swapRouter.js.map +1 -0
- package/dist/esm/src/types/encodeSwaps.d.ts +149 -0
- package/dist/esm/src/types/encodeSwaps.js +2 -0
- package/dist/esm/src/types/encodeSwaps.js.map +1 -0
- package/dist/esm/src/utils/commandParser.d.ts +34 -0
- package/dist/esm/src/utils/commandParser.js +137 -0
- package/dist/esm/src/utils/commandParser.js.map +1 -0
- package/dist/esm/src/utils/computeEncodeSwapsAmounts.d.ts +8 -0
- package/dist/esm/src/utils/computeEncodeSwapsAmounts.js +43 -0
- package/dist/esm/src/utils/computeEncodeSwapsAmounts.js.map +1 -0
- package/dist/esm/src/utils/constants.d.ts +39 -0
- package/dist/esm/src/utils/constants.js +552 -0
- package/dist/esm/src/utils/constants.js.map +1 -0
- package/dist/esm/src/utils/eip712.d.ts +17 -0
- package/dist/esm/src/utils/eip712.js +38 -0
- package/dist/esm/src/utils/eip712.js.map +1 -0
- package/dist/esm/src/utils/encodeSwapStep.d.ts +4 -0
- package/dist/esm/src/utils/encodeSwapStep.js +57 -0
- package/dist/esm/src/utils/encodeSwapStep.js.map +1 -0
- package/dist/esm/src/utils/encodeV4Action.d.ts +8 -0
- package/dist/esm/src/utils/encodeV4Action.js +92 -0
- package/dist/esm/src/utils/encodeV4Action.js.map +1 -0
- package/dist/esm/src/utils/getCurrencyAddress.d.ts +2 -0
- package/dist/esm/src/utils/getCurrencyAddress.js +5 -0
- package/dist/esm/src/utils/getCurrencyAddress.js.map +1 -0
- package/dist/esm/src/utils/inputTokens.d.ts +23 -0
- package/dist/esm/src/utils/inputTokens.js +51 -0
- package/dist/esm/src/utils/inputTokens.js.map +1 -0
- package/dist/esm/src/utils/normalizeEncodeSwapsSpec.d.ts +2 -0
- package/dist/esm/src/utils/normalizeEncodeSwapsSpec.js +14 -0
- package/dist/esm/src/utils/normalizeEncodeSwapsSpec.js.map +1 -0
- package/dist/esm/src/utils/numbers.d.ts +7 -0
- package/dist/esm/src/utils/numbers.js +19 -0
- package/dist/esm/src/utils/numbers.js.map +1 -0
- package/dist/esm/src/utils/pathCurrency.d.ts +3 -0
- package/dist/esm/src/utils/pathCurrency.js +23 -0
- package/dist/esm/src/utils/pathCurrency.js.map +1 -0
- package/dist/esm/src/utils/routerCommands.d.ts +77 -0
- package/dist/esm/src/utils/routerCommands.js +329 -0
- package/dist/esm/src/utils/routerCommands.js.map +1 -0
- package/dist/esm/src/utils/routerTradeAdapter.d.ts +73 -0
- package/dist/esm/src/utils/routerTradeAdapter.js +134 -0
- package/dist/esm/src/utils/routerTradeAdapter.js.map +1 -0
- package/dist/esm/src/utils/validateEncodeSwaps.d.ts +2 -0
- package/dist/esm/src/utils/validateEncodeSwaps.js +130 -0
- package/dist/esm/src/utils/validateEncodeSwaps.js.map +1 -0
- package/dist/types/src/entities/Command.d.ts +12 -0
- package/dist/types/src/entities/actions/across.d.ts +21 -0
- package/dist/types/src/entities/actions/index.d.ts +3 -0
- package/dist/types/src/entities/actions/uniswap.d.ts +38 -0
- package/dist/types/src/entities/actions/unwrapWETH.d.ts +12 -0
- package/dist/types/src/entities/index.d.ts +2 -0
- package/dist/types/src/index.d.ts +14 -0
- package/dist/types/src/swapRouter.d.ts +103 -0
- package/dist/types/src/types/encodeSwaps.d.ts +149 -0
- package/dist/types/src/utils/commandParser.d.ts +34 -0
- package/dist/types/src/utils/computeEncodeSwapsAmounts.d.ts +8 -0
- package/dist/types/src/utils/constants.d.ts +39 -0
- package/dist/types/src/utils/eip712.d.ts +17 -0
- package/dist/types/src/utils/encodeSwapStep.d.ts +4 -0
- package/dist/types/src/utils/encodeV4Action.d.ts +8 -0
- package/dist/types/src/utils/getCurrencyAddress.d.ts +2 -0
- package/dist/types/src/utils/inputTokens.d.ts +23 -0
- package/dist/types/src/utils/normalizeEncodeSwapsSpec.d.ts +2 -0
- package/dist/types/src/utils/numbers.d.ts +7 -0
- package/dist/types/src/utils/pathCurrency.d.ts +3 -0
- package/dist/types/src/utils/routerCommands.d.ts +77 -0
- package/dist/types/src/utils/routerTradeAdapter.d.ts +73 -0
- package/dist/types/src/utils/validateEncodeSwaps.d.ts +2 -0
- package/package.json +78 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { V4Planner } from '@uniswap/v4-sdk';
|
|
2
|
+
import { isAtLeastV2_1_1 } from './constants';
|
|
3
|
+
import { CommandType } from './routerCommands';
|
|
4
|
+
import { encodeV4Action, toV4URVersion } from './encodeV4Action';
|
|
5
|
+
// V2/V3 swap params hardcode payerIsUser=false; encodeSwaps pulls funds into the router first via PERMIT2_TRANSFER_FROM
|
|
6
|
+
export function encodeSwapStep(planner, step, urVersion) {
|
|
7
|
+
var _a, _b, _c, _d;
|
|
8
|
+
const useV2_1_1 = isAtLeastV2_1_1(urVersion);
|
|
9
|
+
switch (step.type) {
|
|
10
|
+
case 'V2_SWAP_EXACT_IN': {
|
|
11
|
+
const params = [step.recipient, step.amountIn, step.amountOutMin, step.path, false];
|
|
12
|
+
if (useV2_1_1)
|
|
13
|
+
params.push((_a = step.minHopPriceX36) !== null && _a !== void 0 ? _a : []);
|
|
14
|
+
planner.addCommand(CommandType.V2_SWAP_EXACT_IN, params, false, urVersion);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
case 'V2_SWAP_EXACT_OUT': {
|
|
18
|
+
const params = [step.recipient, step.amountOut, step.amountInMax, step.path, false];
|
|
19
|
+
if (useV2_1_1)
|
|
20
|
+
params.push((_b = step.minHopPriceX36) !== null && _b !== void 0 ? _b : []);
|
|
21
|
+
planner.addCommand(CommandType.V2_SWAP_EXACT_OUT, params, false, urVersion);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
case 'V3_SWAP_EXACT_IN': {
|
|
25
|
+
const params = [step.recipient, step.amountIn, step.amountOutMin, step.path, false];
|
|
26
|
+
if (useV2_1_1)
|
|
27
|
+
params.push((_c = step.minHopPriceX36) !== null && _c !== void 0 ? _c : []);
|
|
28
|
+
planner.addCommand(CommandType.V3_SWAP_EXACT_IN, params, false, urVersion);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
case 'V3_SWAP_EXACT_OUT': {
|
|
32
|
+
const params = [step.recipient, step.amountOut, step.amountInMax, step.path, false];
|
|
33
|
+
if (useV2_1_1)
|
|
34
|
+
params.push((_d = step.minHopPriceX36) !== null && _d !== void 0 ? _d : []);
|
|
35
|
+
planner.addCommand(CommandType.V3_SWAP_EXACT_OUT, params, false, urVersion);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
case 'V4_SWAP': {
|
|
39
|
+
const v4Planner = new V4Planner();
|
|
40
|
+
for (const v4Action of step.v4Actions) {
|
|
41
|
+
const encoded = encodeV4Action(v4Action, urVersion);
|
|
42
|
+
v4Planner.addAction(encoded.action, encoded.params, toV4URVersion(urVersion));
|
|
43
|
+
}
|
|
44
|
+
planner.addCommand(CommandType.V4_SWAP, [v4Planner.finalize()], false, urVersion);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
case 'WRAP_ETH':
|
|
48
|
+
planner.addCommand(CommandType.WRAP_ETH, [step.recipient, step.amount], false, urVersion);
|
|
49
|
+
return;
|
|
50
|
+
case 'UNWRAP_WETH':
|
|
51
|
+
planner.addCommand(CommandType.UNWRAP_WETH, [step.recipient, step.amountMin], false, urVersion);
|
|
52
|
+
return;
|
|
53
|
+
default:
|
|
54
|
+
throw new Error(`Unknown swap step type: ${step.type}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=encodeSwapStep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encodeSwapStep.js","sourceRoot":"","sources":["../../../../src/utils/encodeSwapStep.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Actions, URVersion } from '@uniswap/v4-sdk';
|
|
2
|
+
import { UniversalRouterVersion } from './constants';
|
|
3
|
+
import { V4Action } from '../types/encodeSwaps';
|
|
4
|
+
export declare function toV4URVersion(version?: UniversalRouterVersion): URVersion;
|
|
5
|
+
export declare function encodeV4Action(v4Action: V4Action, urVersion?: UniversalRouterVersion): {
|
|
6
|
+
action: Actions;
|
|
7
|
+
params: any[];
|
|
8
|
+
};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Actions, URVersion } from '@uniswap/v4-sdk';
|
|
2
|
+
import { UniversalRouterVersion, isAtLeastV2_1_1 } from './constants';
|
|
3
|
+
const ACTION_NAME_TO_ENUM = Object.fromEntries(Object.entries(Actions).filter(([key]) => isNaN(Number(key))));
|
|
4
|
+
const V4_UR_VERSION_MAP = {
|
|
5
|
+
[UniversalRouterVersion.V2_0]: URVersion.V2_0,
|
|
6
|
+
[UniversalRouterVersion.V2_1_1]: URVersion.V2_1_1,
|
|
7
|
+
};
|
|
8
|
+
export function toV4URVersion(version) {
|
|
9
|
+
if (version === undefined)
|
|
10
|
+
return URVersion.V2_0;
|
|
11
|
+
const mapped = V4_UR_VERSION_MAP[version];
|
|
12
|
+
if (!mapped)
|
|
13
|
+
throw new Error(`No v4-sdk URVersion mapping for UniversalRouterVersion: ${version}`);
|
|
14
|
+
return mapped;
|
|
15
|
+
}
|
|
16
|
+
export function encodeV4Action(v4Action, urVersion) {
|
|
17
|
+
var _a, _b, _c, _d;
|
|
18
|
+
const action = ACTION_NAME_TO_ENUM[v4Action.action];
|
|
19
|
+
if (action === undefined)
|
|
20
|
+
throw new Error(`Unknown V4 action: ${v4Action.action}`);
|
|
21
|
+
const useV2_1_1 = isAtLeastV2_1_1(urVersion);
|
|
22
|
+
switch (v4Action.action) {
|
|
23
|
+
case 'SWAP_EXACT_IN':
|
|
24
|
+
return {
|
|
25
|
+
action,
|
|
26
|
+
params: [
|
|
27
|
+
{
|
|
28
|
+
currencyIn: v4Action.currencyIn,
|
|
29
|
+
path: v4Action.path,
|
|
30
|
+
...(useV2_1_1 && { minHopPriceX36: (_a = v4Action.minHopPriceX36) !== null && _a !== void 0 ? _a : [] }),
|
|
31
|
+
amountIn: v4Action.amountIn,
|
|
32
|
+
amountOutMinimum: v4Action.amountOutMinimum,
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
};
|
|
36
|
+
case 'SWAP_EXACT_IN_SINGLE':
|
|
37
|
+
return {
|
|
38
|
+
action,
|
|
39
|
+
params: [
|
|
40
|
+
{
|
|
41
|
+
poolKey: v4Action.poolKey,
|
|
42
|
+
zeroForOne: v4Action.zeroForOne,
|
|
43
|
+
amountIn: v4Action.amountIn,
|
|
44
|
+
amountOutMinimum: v4Action.amountOutMinimum,
|
|
45
|
+
...(useV2_1_1 && { minHopPriceX36: (_b = v4Action.minHopPriceX36) !== null && _b !== void 0 ? _b : 0 }),
|
|
46
|
+
hookData: v4Action.hookData,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
};
|
|
50
|
+
case 'SWAP_EXACT_OUT':
|
|
51
|
+
return {
|
|
52
|
+
action,
|
|
53
|
+
params: [
|
|
54
|
+
{
|
|
55
|
+
currencyOut: v4Action.currencyOut,
|
|
56
|
+
path: v4Action.path,
|
|
57
|
+
...(useV2_1_1 && { minHopPriceX36: (_c = v4Action.minHopPriceX36) !== null && _c !== void 0 ? _c : [] }),
|
|
58
|
+
amountOut: v4Action.amountOut,
|
|
59
|
+
amountInMaximum: v4Action.amountInMaximum,
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
};
|
|
63
|
+
case 'SWAP_EXACT_OUT_SINGLE':
|
|
64
|
+
return {
|
|
65
|
+
action,
|
|
66
|
+
params: [
|
|
67
|
+
{
|
|
68
|
+
poolKey: v4Action.poolKey,
|
|
69
|
+
zeroForOne: v4Action.zeroForOne,
|
|
70
|
+
amountOut: v4Action.amountOut,
|
|
71
|
+
amountInMaximum: v4Action.amountInMaximum,
|
|
72
|
+
...(useV2_1_1 && { minHopPriceX36: (_d = v4Action.minHopPriceX36) !== null && _d !== void 0 ? _d : 0 }),
|
|
73
|
+
hookData: v4Action.hookData,
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
};
|
|
77
|
+
case 'SETTLE':
|
|
78
|
+
// payerIsUser=false: same router-custody model as encodeSwapStep — funds are already in the router
|
|
79
|
+
return { action, params: [v4Action.currency, v4Action.amount, false] };
|
|
80
|
+
case 'SETTLE_ALL':
|
|
81
|
+
return { action, params: [v4Action.currency, v4Action.maxAmount] };
|
|
82
|
+
case 'TAKE':
|
|
83
|
+
return { action, params: [v4Action.currency, v4Action.recipient, v4Action.amount] };
|
|
84
|
+
case 'TAKE_ALL':
|
|
85
|
+
return { action, params: [v4Action.currency, v4Action.minAmount] };
|
|
86
|
+
case 'TAKE_PORTION':
|
|
87
|
+
return { action, params: [v4Action.currency, v4Action.recipient, v4Action.bips] };
|
|
88
|
+
default:
|
|
89
|
+
throw new Error(`Unhandled V4 action: ${v4Action.action}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=encodeV4Action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encodeV4Action.js","sourceRoot":"","sources":["../../../../src/utils/encodeV4Action.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 '@fenine/sdk-core';
|
|
2
|
+
import { NFTPermitOptions } from '@fenine/v3-sdk';
|
|
3
|
+
import { PermitSingle } from '@fenine/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 '@fenine/sdk-core';
|
|
4
|
+
import { NonfungiblePositionManager } from '@fenine/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,kBAAkB,CAAA;AACrE,OAAO,EAAoB,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AAE7E,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,14 @@
|
|
|
1
|
+
import { TokenTransferMode } from '../entities/actions/uniswap';
|
|
2
|
+
import { SENDER_AS_RECIPIENT, UniversalRouterVersion } from './constants';
|
|
3
|
+
// Fills the four optional fields that `validateEncodeSwaps` and `computeEncodeSwapsAmounts` require.
|
|
4
|
+
export function normalizeEncodeSwapsSpec(spec) {
|
|
5
|
+
var _a, _b, _c, _d;
|
|
6
|
+
return {
|
|
7
|
+
...spec,
|
|
8
|
+
recipient: (_a = spec.recipient) !== null && _a !== void 0 ? _a : SENDER_AS_RECIPIENT,
|
|
9
|
+
tokenTransferMode: (_b = spec.tokenTransferMode) !== null && _b !== void 0 ? _b : TokenTransferMode.Permit2,
|
|
10
|
+
urVersion: (_c = spec.urVersion) !== null && _c !== void 0 ? _c : UniversalRouterVersion.V2_0,
|
|
11
|
+
safeMode: (_d = spec.safeMode) !== null && _d !== void 0 ? _d : false,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=normalizeEncodeSwapsSpec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeEncodeSwapsSpec.js","sourceRoot":"","sources":["../../../../src/utils/normalizeEncodeSwapsSpec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAE/D,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEzE,qGAAqG;AACrG,MAAM,UAAU,wBAAwB,CAAC,IAAuB;;IAC9D,OAAO;QACL,GAAG,IAAI;QACP,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,mBAAmB;QAChD,iBAAiB,EAAE,MAAA,IAAI,CAAC,iBAAiB,mCAAI,iBAAiB,CAAC,OAAO;QACtE,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,sBAAsB,CAAC,IAAI;QACxD,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,KAAK;KACjC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BigNumber } from 'ethers';
|
|
2
|
+
import JSBI from 'jsbi';
|
|
3
|
+
import { Percent } from '@fenine/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;
|
|
7
|
+
export declare function encodeFee1e18(fee: Percent): string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BigNumber } from 'ethers';
|
|
2
|
+
import JSBI from 'jsbi';
|
|
3
|
+
import bn from 'bignumber.js';
|
|
4
|
+
import { toHex } from '@fenine/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
|
+
const FULL_PORTION_PRECISION = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(18));
|
|
16
|
+
export function encodeFee1e18(fee) {
|
|
17
|
+
return toHex(fee.multiply(FULL_PORTION_PRECISION).quotient);
|
|
18
|
+
}
|
|
19
|
+
//# 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,gBAAgB,CAAA;AAEtC,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;AAED,MAAM,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;AAElF,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,CAAA;AAC7D,CAAC"}
|
|
@@ -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,77 @@
|
|
|
1
|
+
import { UniversalRouterVersion } from './constants';
|
|
2
|
+
import { AcrossV4DepositV3Params } from '../entities/actions/across';
|
|
3
|
+
/**
|
|
4
|
+
* CommandTypes
|
|
5
|
+
* @description Flags that modify a command's execution
|
|
6
|
+
* @enum {number}
|
|
7
|
+
*/
|
|
8
|
+
export declare enum CommandType {
|
|
9
|
+
V3_SWAP_EXACT_IN = 0,
|
|
10
|
+
V3_SWAP_EXACT_OUT = 1,
|
|
11
|
+
PERMIT2_TRANSFER_FROM = 2,
|
|
12
|
+
PERMIT2_PERMIT_BATCH = 3,
|
|
13
|
+
SWEEP = 4,
|
|
14
|
+
TRANSFER = 5,
|
|
15
|
+
PAY_PORTION = 6,
|
|
16
|
+
PAY_PORTION_FULL_PRECISION = 7,
|
|
17
|
+
V2_SWAP_EXACT_IN = 8,
|
|
18
|
+
V2_SWAP_EXACT_OUT = 9,
|
|
19
|
+
PERMIT2_PERMIT = 10,
|
|
20
|
+
WRAP_ETH = 11,
|
|
21
|
+
UNWRAP_WETH = 12,
|
|
22
|
+
PERMIT2_TRANSFER_FROM_BATCH = 13,
|
|
23
|
+
BALANCE_CHECK_ERC20 = 14,
|
|
24
|
+
V4_SWAP = 16,
|
|
25
|
+
V3_POSITION_MANAGER_PERMIT = 17,
|
|
26
|
+
V3_POSITION_MANAGER_CALL = 18,
|
|
27
|
+
V4_INITIALIZE_POOL = 19,
|
|
28
|
+
V4_POSITION_MANAGER_CALL = 20,
|
|
29
|
+
EXECUTE_SUB_PLAN = 33,
|
|
30
|
+
ACROSS_V4_DEPOSIT_V3 = 64
|
|
31
|
+
}
|
|
32
|
+
export declare enum Subparser {
|
|
33
|
+
V3PathExactIn = 0,
|
|
34
|
+
V3PathExactOut = 1
|
|
35
|
+
}
|
|
36
|
+
export declare enum Parser {
|
|
37
|
+
Abi = 0,
|
|
38
|
+
V4Actions = 1,
|
|
39
|
+
V3Actions = 2
|
|
40
|
+
}
|
|
41
|
+
export type ParamType = {
|
|
42
|
+
readonly name: string;
|
|
43
|
+
readonly type: string;
|
|
44
|
+
readonly subparser?: Subparser;
|
|
45
|
+
};
|
|
46
|
+
export type CommandDefinition = {
|
|
47
|
+
parser: Parser.Abi;
|
|
48
|
+
params: ParamType[];
|
|
49
|
+
} | {
|
|
50
|
+
parser: Parser.V4Actions;
|
|
51
|
+
} | {
|
|
52
|
+
parser: Parser.V3Actions;
|
|
53
|
+
};
|
|
54
|
+
export declare const COMMAND_DEFINITION: {
|
|
55
|
+
[key in CommandType]: CommandDefinition;
|
|
56
|
+
};
|
|
57
|
+
export declare const V2V3_SWAP_COMMANDS_V2_1_1: {
|
|
58
|
+
[key: number]: CommandDefinition;
|
|
59
|
+
};
|
|
60
|
+
export declare class RoutePlanner {
|
|
61
|
+
commands: string;
|
|
62
|
+
inputs: string[];
|
|
63
|
+
constructor();
|
|
64
|
+
addSubPlan(subplan: RoutePlanner): RoutePlanner;
|
|
65
|
+
addCommand(type: CommandType, parameters: any[], allowRevert?: boolean, urVersion?: UniversalRouterVersion): RoutePlanner;
|
|
66
|
+
/**
|
|
67
|
+
* Add Across bridge deposit command for cross-chain bridging
|
|
68
|
+
* @param params AcrossV4DepositV3Params containing bridge parameters
|
|
69
|
+
* @returns RoutePlanner instance for chaining
|
|
70
|
+
*/
|
|
71
|
+
addAcrossBridge(params: AcrossV4DepositV3Params): RoutePlanner;
|
|
72
|
+
}
|
|
73
|
+
export type RouterCommand = {
|
|
74
|
+
type: CommandType;
|
|
75
|
+
encodedInput: string;
|
|
76
|
+
};
|
|
77
|
+
export declare function createCommand(type: CommandType, parameters: any[], urVersion?: UniversalRouterVersion): RouterCommand;
|