@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,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.encodeSwapStep = void 0;
|
|
4
|
+
const v4_sdk_1 = require("@uniswap/v4-sdk");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
const routerCommands_1 = require("./routerCommands");
|
|
7
|
+
const encodeV4Action_1 = require("./encodeV4Action");
|
|
8
|
+
// V2/V3 swap params hardcode payerIsUser=false; encodeSwaps pulls funds into the router first via PERMIT2_TRANSFER_FROM
|
|
9
|
+
function encodeSwapStep(planner, step, urVersion) {
|
|
10
|
+
var _a, _b, _c, _d;
|
|
11
|
+
const useV2_1_1 = (0, constants_1.isAtLeastV2_1_1)(urVersion);
|
|
12
|
+
switch (step.type) {
|
|
13
|
+
case 'V2_SWAP_EXACT_IN': {
|
|
14
|
+
const params = [step.recipient, step.amountIn, step.amountOutMin, step.path, false];
|
|
15
|
+
if (useV2_1_1)
|
|
16
|
+
params.push((_a = step.minHopPriceX36) !== null && _a !== void 0 ? _a : []);
|
|
17
|
+
planner.addCommand(routerCommands_1.CommandType.V2_SWAP_EXACT_IN, params, false, urVersion);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
case 'V2_SWAP_EXACT_OUT': {
|
|
21
|
+
const params = [step.recipient, step.amountOut, step.amountInMax, step.path, false];
|
|
22
|
+
if (useV2_1_1)
|
|
23
|
+
params.push((_b = step.minHopPriceX36) !== null && _b !== void 0 ? _b : []);
|
|
24
|
+
planner.addCommand(routerCommands_1.CommandType.V2_SWAP_EXACT_OUT, params, false, urVersion);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
case 'V3_SWAP_EXACT_IN': {
|
|
28
|
+
const params = [step.recipient, step.amountIn, step.amountOutMin, step.path, false];
|
|
29
|
+
if (useV2_1_1)
|
|
30
|
+
params.push((_c = step.minHopPriceX36) !== null && _c !== void 0 ? _c : []);
|
|
31
|
+
planner.addCommand(routerCommands_1.CommandType.V3_SWAP_EXACT_IN, params, false, urVersion);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
case 'V3_SWAP_EXACT_OUT': {
|
|
35
|
+
const params = [step.recipient, step.amountOut, step.amountInMax, step.path, false];
|
|
36
|
+
if (useV2_1_1)
|
|
37
|
+
params.push((_d = step.minHopPriceX36) !== null && _d !== void 0 ? _d : []);
|
|
38
|
+
planner.addCommand(routerCommands_1.CommandType.V3_SWAP_EXACT_OUT, params, false, urVersion);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
case 'V4_SWAP': {
|
|
42
|
+
const v4Planner = new v4_sdk_1.V4Planner();
|
|
43
|
+
for (const v4Action of step.v4Actions) {
|
|
44
|
+
const encoded = (0, encodeV4Action_1.encodeV4Action)(v4Action, urVersion);
|
|
45
|
+
v4Planner.addAction(encoded.action, encoded.params, (0, encodeV4Action_1.toV4URVersion)(urVersion));
|
|
46
|
+
}
|
|
47
|
+
planner.addCommand(routerCommands_1.CommandType.V4_SWAP, [v4Planner.finalize()], false, urVersion);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
case 'WRAP_ETH':
|
|
51
|
+
planner.addCommand(routerCommands_1.CommandType.WRAP_ETH, [step.recipient, step.amount], false, urVersion);
|
|
52
|
+
return;
|
|
53
|
+
case 'UNWRAP_WETH':
|
|
54
|
+
planner.addCommand(routerCommands_1.CommandType.UNWRAP_WETH, [step.recipient, step.amountMin], false, urVersion);
|
|
55
|
+
return;
|
|
56
|
+
default:
|
|
57
|
+
throw new Error(`Unknown swap step type: ${step.type}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.encodeSwapStep = encodeSwapStep;
|
|
61
|
+
//# 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,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.encodeV4Action = exports.toV4URVersion = void 0;
|
|
4
|
+
const v4_sdk_1 = require("@uniswap/v4-sdk");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
const ACTION_NAME_TO_ENUM = Object.fromEntries(Object.entries(v4_sdk_1.Actions).filter(([key]) => isNaN(Number(key))));
|
|
7
|
+
const V4_UR_VERSION_MAP = {
|
|
8
|
+
[constants_1.UniversalRouterVersion.V2_0]: v4_sdk_1.URVersion.V2_0,
|
|
9
|
+
[constants_1.UniversalRouterVersion.V2_1_1]: v4_sdk_1.URVersion.V2_1_1,
|
|
10
|
+
};
|
|
11
|
+
function toV4URVersion(version) {
|
|
12
|
+
if (version === undefined)
|
|
13
|
+
return v4_sdk_1.URVersion.V2_0;
|
|
14
|
+
const mapped = V4_UR_VERSION_MAP[version];
|
|
15
|
+
if (!mapped)
|
|
16
|
+
throw new Error(`No v4-sdk URVersion mapping for UniversalRouterVersion: ${version}`);
|
|
17
|
+
return mapped;
|
|
18
|
+
}
|
|
19
|
+
exports.toV4URVersion = toV4URVersion;
|
|
20
|
+
function encodeV4Action(v4Action, urVersion) {
|
|
21
|
+
var _a, _b, _c, _d;
|
|
22
|
+
const action = ACTION_NAME_TO_ENUM[v4Action.action];
|
|
23
|
+
if (action === undefined)
|
|
24
|
+
throw new Error(`Unknown V4 action: ${v4Action.action}`);
|
|
25
|
+
const useV2_1_1 = (0, constants_1.isAtLeastV2_1_1)(urVersion);
|
|
26
|
+
switch (v4Action.action) {
|
|
27
|
+
case 'SWAP_EXACT_IN':
|
|
28
|
+
return {
|
|
29
|
+
action,
|
|
30
|
+
params: [
|
|
31
|
+
{
|
|
32
|
+
currencyIn: v4Action.currencyIn,
|
|
33
|
+
path: v4Action.path,
|
|
34
|
+
...(useV2_1_1 && { minHopPriceX36: (_a = v4Action.minHopPriceX36) !== null && _a !== void 0 ? _a : [] }),
|
|
35
|
+
amountIn: v4Action.amountIn,
|
|
36
|
+
amountOutMinimum: v4Action.amountOutMinimum,
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
};
|
|
40
|
+
case 'SWAP_EXACT_IN_SINGLE':
|
|
41
|
+
return {
|
|
42
|
+
action,
|
|
43
|
+
params: [
|
|
44
|
+
{
|
|
45
|
+
poolKey: v4Action.poolKey,
|
|
46
|
+
zeroForOne: v4Action.zeroForOne,
|
|
47
|
+
amountIn: v4Action.amountIn,
|
|
48
|
+
amountOutMinimum: v4Action.amountOutMinimum,
|
|
49
|
+
...(useV2_1_1 && { minHopPriceX36: (_b = v4Action.minHopPriceX36) !== null && _b !== void 0 ? _b : 0 }),
|
|
50
|
+
hookData: v4Action.hookData,
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
case 'SWAP_EXACT_OUT':
|
|
55
|
+
return {
|
|
56
|
+
action,
|
|
57
|
+
params: [
|
|
58
|
+
{
|
|
59
|
+
currencyOut: v4Action.currencyOut,
|
|
60
|
+
path: v4Action.path,
|
|
61
|
+
...(useV2_1_1 && { minHopPriceX36: (_c = v4Action.minHopPriceX36) !== null && _c !== void 0 ? _c : [] }),
|
|
62
|
+
amountOut: v4Action.amountOut,
|
|
63
|
+
amountInMaximum: v4Action.amountInMaximum,
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
};
|
|
67
|
+
case 'SWAP_EXACT_OUT_SINGLE':
|
|
68
|
+
return {
|
|
69
|
+
action,
|
|
70
|
+
params: [
|
|
71
|
+
{
|
|
72
|
+
poolKey: v4Action.poolKey,
|
|
73
|
+
zeroForOne: v4Action.zeroForOne,
|
|
74
|
+
amountOut: v4Action.amountOut,
|
|
75
|
+
amountInMaximum: v4Action.amountInMaximum,
|
|
76
|
+
...(useV2_1_1 && { minHopPriceX36: (_d = v4Action.minHopPriceX36) !== null && _d !== void 0 ? _d : 0 }),
|
|
77
|
+
hookData: v4Action.hookData,
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
};
|
|
81
|
+
case 'SETTLE':
|
|
82
|
+
// payerIsUser=false: same router-custody model as encodeSwapStep — funds are already in the router
|
|
83
|
+
return { action, params: [v4Action.currency, v4Action.amount, false] };
|
|
84
|
+
case 'SETTLE_ALL':
|
|
85
|
+
return { action, params: [v4Action.currency, v4Action.maxAmount] };
|
|
86
|
+
case 'TAKE':
|
|
87
|
+
return { action, params: [v4Action.currency, v4Action.recipient, v4Action.amount] };
|
|
88
|
+
case 'TAKE_ALL':
|
|
89
|
+
return { action, params: [v4Action.currency, v4Action.minAmount] };
|
|
90
|
+
case 'TAKE_PORTION':
|
|
91
|
+
return { action, params: [v4Action.currency, v4Action.recipient, v4Action.bips] };
|
|
92
|
+
default:
|
|
93
|
+
throw new Error(`Unhandled V4 action: ${v4Action.action}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.encodeV4Action = encodeV4Action;
|
|
97
|
+
//# 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,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCurrencyAddress = void 0;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
function getCurrencyAddress(currency) {
|
|
6
|
+
return currency.isNative ? constants_1.ETH_ADDRESS : currency.wrapped.address;
|
|
7
|
+
}
|
|
8
|
+
exports.getCurrencyAddress = getCurrencyAddress;
|
|
9
|
+
//# sourceMappingURL=getCurrencyAddress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCurrencyAddress.js","sourceRoot":"","sources":["../../../../src/utils/getCurrencyAddress.ts"],"names":[],"mappings":";;;AACA,2CAAyC;AAEzC,SAAgB,kBAAkB,CAAC,QAAkB;IACnD,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,uBAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAA;AACnE,CAAC;AAFD,gDAEC"}
|
|
@@ -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,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.encodeInputTokenOptions = exports.encodeV3PositionPermit = exports.encodePermit = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const tiny_invariant_1 = tslib_1.__importDefault(require("tiny-invariant"));
|
|
6
|
+
const ethers_1 = require("ethers");
|
|
7
|
+
const sdk_core_1 = require("@fenine/sdk-core");
|
|
8
|
+
const v3_sdk_1 = require("@fenine/v3-sdk");
|
|
9
|
+
const routerCommands_1 = require("./routerCommands");
|
|
10
|
+
const constants_1 = require("./constants");
|
|
11
|
+
const SIGNATURE_LENGTH = 65;
|
|
12
|
+
const EIP_2098_SIGNATURE_LENGTH = 64;
|
|
13
|
+
function encodePermit(planner, permit2) {
|
|
14
|
+
let signature = permit2.signature;
|
|
15
|
+
const length = ethers_1.ethers.utils.arrayify(permit2.signature).length;
|
|
16
|
+
// signature data provided for EIP-1271 may have length different from ECDSA signature
|
|
17
|
+
if (length === SIGNATURE_LENGTH || length === EIP_2098_SIGNATURE_LENGTH) {
|
|
18
|
+
// sanitizes signature to cover edge cases of malformed EIP-2098 sigs and v used as recovery id
|
|
19
|
+
signature = ethers_1.ethers.utils.joinSignature(ethers_1.ethers.utils.splitSignature(permit2.signature));
|
|
20
|
+
}
|
|
21
|
+
planner.addCommand(routerCommands_1.CommandType.PERMIT2_PERMIT, [permit2, signature]);
|
|
22
|
+
}
|
|
23
|
+
exports.encodePermit = encodePermit;
|
|
24
|
+
function encodeV3PositionPermit(planner, permit, tokenId) {
|
|
25
|
+
const calldata = v3_sdk_1.NonfungiblePositionManager.INTERFACE.encodeFunctionData('permit', [
|
|
26
|
+
(0, sdk_core_1.validateAndParseAddress)(permit.spender),
|
|
27
|
+
tokenId,
|
|
28
|
+
permit.deadline,
|
|
29
|
+
permit.v,
|
|
30
|
+
permit.r,
|
|
31
|
+
permit.s,
|
|
32
|
+
]);
|
|
33
|
+
planner.addCommand(routerCommands_1.CommandType.V3_POSITION_MANAGER_PERMIT, [calldata]);
|
|
34
|
+
}
|
|
35
|
+
exports.encodeV3PositionPermit = encodeV3PositionPermit;
|
|
36
|
+
// Handles the encoding of commands needed to gather input tokens for a trade
|
|
37
|
+
// Approval: The router approving another address to take tokens.
|
|
38
|
+
// note: Only seaport and sudoswap support this action. Approvals are left open.
|
|
39
|
+
// Permit: A Permit2 signature-based Permit to allow the router to access a user's tokens
|
|
40
|
+
// Transfer: A Permit2 TransferFrom of tokens from a user to either the router or another address
|
|
41
|
+
function encodeInputTokenOptions(planner, options) {
|
|
42
|
+
// first ensure that all tokens provided for encoding are the same
|
|
43
|
+
if (!!options.permit2TransferFrom && !!options.permit2Permit)
|
|
44
|
+
(0, tiny_invariant_1.default)(options.permit2TransferFrom.token === options.permit2Permit.details.token, `inconsistent token`);
|
|
45
|
+
// if this order has a options.permit2Permit, encode it
|
|
46
|
+
if (!!options.permit2Permit) {
|
|
47
|
+
encodePermit(planner, options.permit2Permit);
|
|
48
|
+
}
|
|
49
|
+
if (!!options.permit2TransferFrom) {
|
|
50
|
+
planner.addCommand(routerCommands_1.CommandType.PERMIT2_TRANSFER_FROM, [
|
|
51
|
+
options.permit2TransferFrom.token,
|
|
52
|
+
options.permit2TransferFrom.recipient ? options.permit2TransferFrom.recipient : constants_1.ROUTER_AS_RECIPIENT,
|
|
53
|
+
options.permit2TransferFrom.amount,
|
|
54
|
+
]);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.encodeInputTokenOptions = encodeInputTokenOptions;
|
|
58
|
+
//# sourceMappingURL=inputTokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inputTokens.js","sourceRoot":"","sources":["../../../../src/utils/inputTokens.ts"],"names":[],"mappings":";;;;AAAA,4EAAsC;AACtC,mCAA+B;AAC/B,+CAAqE;AACrE,2CAA6E;AAE7E,qDAA4D;AAC5D,2CAAiD;AAsBjD,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAC3B,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAEpC,SAAgB,YAAY,CAAC,OAAqB,EAAE,OAAsB;IACxE,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IAEjC,MAAM,MAAM,GAAG,eAAM,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,eAAM,CAAC,KAAK,CAAC,aAAa,CAAC,eAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;KACvF;IAED,OAAO,CAAC,UAAU,CAAC,4BAAW,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;AACtE,CAAC;AAXD,oCAWC;AAED,SAAgB,sBAAsB,CAAC,OAAqB,EAAE,MAAwB,EAAE,OAAkB;IACxG,MAAM,QAAQ,GAAG,mCAA0B,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE;QACjF,IAAA,kCAAuB,EAAC,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,4BAAW,CAAC,0BAA0B,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;AACxE,CAAC;AAXD,wDAWC;AAED,6EAA6E;AAC7E,iEAAiE;AACjE,kFAAkF;AAClF,yFAAyF;AACzF,iGAAiG;AACjG,SAAgB,uBAAuB,CAAC,OAAqB,EAAE,OAA0B;IACvF,kEAAkE;IAClE,IAAI,CAAC,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa;QAC1D,IAAA,wBAAS,EAAC,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,4BAAW,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,+BAAmB;YACnG,OAAO,CAAC,mBAAmB,CAAC,MAAM;SACnC,CAAC,CAAA;KACH;AACH,CAAC;AAjBD,0DAiBC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeEncodeSwapsSpec = void 0;
|
|
4
|
+
const uniswap_1 = require("../entities/actions/uniswap");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
// Fills the four optional fields that `validateEncodeSwaps` and `computeEncodeSwapsAmounts` require.
|
|
7
|
+
function normalizeEncodeSwapsSpec(spec) {
|
|
8
|
+
var _a, _b, _c, _d;
|
|
9
|
+
return {
|
|
10
|
+
...spec,
|
|
11
|
+
recipient: (_a = spec.recipient) !== null && _a !== void 0 ? _a : constants_1.SENDER_AS_RECIPIENT,
|
|
12
|
+
tokenTransferMode: (_b = spec.tokenTransferMode) !== null && _b !== void 0 ? _b : uniswap_1.TokenTransferMode.Permit2,
|
|
13
|
+
urVersion: (_c = spec.urVersion) !== null && _c !== void 0 ? _c : constants_1.UniversalRouterVersion.V2_0,
|
|
14
|
+
safeMode: (_d = spec.safeMode) !== null && _d !== void 0 ? _d : false,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
exports.normalizeEncodeSwapsSpec = normalizeEncodeSwapsSpec;
|
|
18
|
+
//# sourceMappingURL=normalizeEncodeSwapsSpec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeEncodeSwapsSpec.js","sourceRoot":"","sources":["../../../../src/utils/normalizeEncodeSwapsSpec.ts"],"names":[],"mappings":";;;AAAA,yDAA+D;AAE/D,2CAAyE;AAEzE,qGAAqG;AACrG,SAAgB,wBAAwB,CAAC,IAAuB;;IAC9D,OAAO;QACL,GAAG,IAAI;QACP,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,+BAAmB;QAChD,iBAAiB,EAAE,MAAA,IAAI,CAAC,iBAAiB,mCAAI,2BAAiB,CAAC,OAAO;QACtE,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,kCAAsB,CAAC,IAAI;QACxD,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,KAAK;KACjC,CAAA;AACH,CAAC;AARD,4DAQC"}
|
|
@@ -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,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.encodeFee1e18 = exports.encodeFeeBips = exports.expandTo18Decimals = exports.expandTo18DecimalsBN = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const ethers_1 = require("ethers");
|
|
6
|
+
const jsbi_1 = tslib_1.__importDefault(require("jsbi"));
|
|
7
|
+
const bignumber_js_1 = tslib_1.__importDefault(require("bignumber.js"));
|
|
8
|
+
const v3_sdk_1 = require("@fenine/v3-sdk");
|
|
9
|
+
function expandTo18DecimalsBN(n) {
|
|
10
|
+
// use bn intermediately to allow decimals in intermediate calculations
|
|
11
|
+
return ethers_1.BigNumber.from(new bignumber_js_1.default(n).times(new bignumber_js_1.default(10).pow(18)).toFixed());
|
|
12
|
+
}
|
|
13
|
+
exports.expandTo18DecimalsBN = expandTo18DecimalsBN;
|
|
14
|
+
function expandTo18Decimals(n) {
|
|
15
|
+
return jsbi_1.default.BigInt(ethers_1.BigNumber.from(n).mul(ethers_1.BigNumber.from(10).pow(18)).toString());
|
|
16
|
+
}
|
|
17
|
+
exports.expandTo18Decimals = expandTo18Decimals;
|
|
18
|
+
function encodeFeeBips(fee) {
|
|
19
|
+
return (0, v3_sdk_1.toHex)(fee.multiply(10000).quotient);
|
|
20
|
+
}
|
|
21
|
+
exports.encodeFeeBips = encodeFeeBips;
|
|
22
|
+
const FULL_PORTION_PRECISION = jsbi_1.default.exponentiate(jsbi_1.default.BigInt(10), jsbi_1.default.BigInt(18));
|
|
23
|
+
function encodeFee1e18(fee) {
|
|
24
|
+
return (0, v3_sdk_1.toHex)(fee.multiply(FULL_PORTION_PRECISION).quotient);
|
|
25
|
+
}
|
|
26
|
+
exports.encodeFee1e18 = encodeFee1e18;
|
|
27
|
+
//# sourceMappingURL=numbers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../../../src/utils/numbers.ts"],"names":[],"mappings":";;;;AAAA,mCAAkC;AAClC,wDAAuB;AACvB,wEAA6B;AAE7B,2CAAsC;AAEtC,SAAgB,oBAAoB,CAAC,CAAS;IAC5C,uEAAuE;IACvE,OAAO,kBAAS,CAAC,IAAI,CAAC,IAAI,sBAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,sBAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;AACtE,CAAC;AAHD,oDAGC;AAED,SAAgB,kBAAkB,CAAC,CAAS;IAC1C,OAAO,cAAI,CAAC,MAAM,CAAC,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;AAClF,CAAC;AAFD,gDAEC;AAED,SAAgB,aAAa,CAAC,GAAY;IACxC,OAAO,IAAA,cAAK,EAAC,GAAG,CAAC,QAAQ,CAAC,KAAM,CAAC,CAAC,QAAQ,CAAC,CAAA;AAC7C,CAAC;AAFD,sCAEC;AAED,MAAM,sBAAsB,GAAG,cAAI,CAAC,YAAY,CAAC,cAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,cAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;AAElF,SAAgB,aAAa,CAAC,GAAY;IACxC,OAAO,IAAA,cAAK,EAAC,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,CAAA;AAC7D,CAAC;AAFD,sCAEC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPathCurrency = void 0;
|
|
4
|
+
const v4_sdk_1 = require("@uniswap/v4-sdk");
|
|
5
|
+
function getPathCurrency(currency, pool) {
|
|
6
|
+
// return currency if the currency matches a currency of the pool
|
|
7
|
+
if (pool.involvesToken(currency)) {
|
|
8
|
+
return currency;
|
|
9
|
+
// return if currency.wrapped if pool involves wrapped currency
|
|
10
|
+
}
|
|
11
|
+
else if (pool.involvesToken(currency.wrapped)) {
|
|
12
|
+
return currency.wrapped;
|
|
13
|
+
// return native currency if pool involves native version of wrapped currency (only applies to V4)
|
|
14
|
+
}
|
|
15
|
+
else if (pool instanceof v4_sdk_1.Pool && pool.token0.wrapped.equals(currency)) {
|
|
16
|
+
return pool.token0;
|
|
17
|
+
}
|
|
18
|
+
else if (pool instanceof v4_sdk_1.Pool && pool.token1.wrapped.equals(currency)) {
|
|
19
|
+
return pool.token1;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
throw new Error(`Expected currency ${currency.symbol} to be either ${pool.token0.symbol} or ${pool.token1.symbol}`);
|
|
23
|
+
}
|
|
24
|
+
return currency; // this line needed for typescript to compile
|
|
25
|
+
}
|
|
26
|
+
exports.getPathCurrency = getPathCurrency;
|
|
27
|
+
//# sourceMappingURL=pathCurrency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathCurrency.js","sourceRoot":"","sources":["../../../../src/utils/pathCurrency.ts"],"names":[],"mappings":";;;AACA,4CAAgD;AAGhD,SAAgB,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,aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QACzE,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;SAAM,IAAI,IAAI,YAAY,aAAM,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;AAnBD,0CAmBC"}
|
|
@@ -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;
|