@uniswap/universal-router-sdk 4.18.1 → 4.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{entities → cjs/src/entities}/Command.d.ts +12 -12
- package/dist/cjs/src/entities/Command.js +9 -0
- package/dist/cjs/src/entities/Command.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/actions/index.d.ts +2 -2
- package/dist/cjs/src/entities/actions/index.js +6 -0
- package/dist/cjs/src/entities/actions/index.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/actions/uniswap.d.ts +30 -30
- package/dist/cjs/src/entities/actions/uniswap.js +365 -0
- package/dist/cjs/src/entities/actions/uniswap.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/actions/unwrapWETH.d.ts +12 -12
- package/dist/cjs/src/entities/actions/unwrapWETH.js +33 -0
- package/dist/cjs/src/entities/actions/unwrapWETH.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/index.d.ts +2 -2
- 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 +9 -0
- package/dist/cjs/src/index.js +24 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/{swapRouter.d.ts → cjs/src/swapRouter.d.ts} +37 -37
- package/dist/cjs/src/swapRouter.js +120 -0
- package/dist/cjs/src/swapRouter.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/commandParser.d.ts +34 -34
- package/dist/cjs/src/utils/commandParser.js +144 -0
- package/dist/cjs/src/utils/commandParser.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/constants.d.ts +30 -30
- package/dist/cjs/src/utils/constants.js +373 -0
- package/dist/cjs/src/utils/constants.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/getCurrencyAddress.d.ts +2 -2
- package/dist/cjs/src/utils/getCurrencyAddress.js +9 -0
- package/dist/cjs/src/utils/getCurrencyAddress.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/inputTokens.d.ts +23 -23
- package/dist/cjs/src/utils/inputTokens.js +58 -0
- package/dist/cjs/src/utils/inputTokens.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/numbers.d.ts +6 -6
- package/dist/cjs/src/utils/numbers.js +22 -0
- package/dist/cjs/src/utils/numbers.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/pathCurrency.d.ts +3 -3
- package/dist/cjs/src/utils/pathCurrency.js +27 -0
- package/dist/cjs/src/utils/pathCurrency.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/routerCommands.d.ts +64 -64
- package/dist/cjs/src/utils/routerCommands.js +231 -0
- package/dist/cjs/src/utils/routerCommands.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/routerTradeAdapter.d.ts +73 -73
- package/dist/cjs/src/utils/routerTradeAdapter.js +139 -0
- package/dist/cjs/src/utils/routerTradeAdapter.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/index.d.ts +2 -0
- package/dist/esm/src/entities/actions/index.js +3 -0
- package/dist/esm/src/entities/actions/index.js.map +1 -0
- package/dist/esm/src/entities/actions/uniswap.d.ts +30 -0
- package/dist/esm/src/entities/actions/uniswap.js +361 -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 +9 -0
- package/dist/esm/src/index.js +7 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/swapRouter.d.ts +37 -0
- package/dist/esm/src/swapRouter.js +115 -0
- package/dist/esm/src/swapRouter.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/constants.d.ts +30 -0
- package/dist/esm/src/utils/constants.js +367 -0
- package/dist/esm/src/utils/constants.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/numbers.d.ts +6 -0
- package/dist/esm/src/utils/numbers.js +15 -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 +64 -0
- package/dist/esm/src/utils/routerCommands.js +226 -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/types/src/entities/Command.d.ts +12 -0
- package/dist/types/src/entities/actions/index.d.ts +2 -0
- package/dist/types/src/entities/actions/uniswap.d.ts +30 -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 +9 -0
- package/dist/types/src/swapRouter.d.ts +37 -0
- package/dist/types/src/utils/commandParser.d.ts +34 -0
- package/dist/types/src/utils/constants.d.ts +30 -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/numbers.d.ts +6 -0
- package/dist/types/src/utils/pathCurrency.d.ts +3 -0
- package/dist/types/src/utils/routerCommands.d.ts +64 -0
- package/dist/types/src/utils/routerTradeAdapter.d.ts +73 -0
- package/package.json +22 -10
- package/dist/index.d.ts +0 -6
- package/dist/index.js +0 -8
- package/dist/test/forge/writeInterop.d.ts +0 -2
- package/dist/test/utils/addresses.d.ts +0 -5
- package/dist/test/utils/hexToDecimalString.d.ts +0 -2
- package/dist/test/utils/permit2.d.ts +0 -7
- package/dist/test/utils/uniswapData.d.ts +0 -24
- package/dist/universal-router-sdk.cjs.development.js +0 -1424
- package/dist/universal-router-sdk.cjs.development.js.map +0 -1
- package/dist/universal-router-sdk.cjs.production.min.js +0 -2
- package/dist/universal-router-sdk.cjs.production.min.js.map +0 -1
- package/dist/universal-router-sdk.esm.js +0 -1417
- package/dist/universal-router-sdk.esm.js.map +0 -1
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import { Interface } from '@ethersproject/abi';
|
|
2
|
-
import { BigNumberish } from 'ethers';
|
|
3
|
-
import { MethodParameters, Position as V3Position, RemoveLiquidityOptions as V3RemoveLiquidityOptions } from '@uniswap/v3-sdk';
|
|
4
|
-
import { Position as V4Position, AddLiquidityOptions as V4AddLiquidityOptions } from '@uniswap/v4-sdk';
|
|
5
|
-
import { Trade as RouterTrade } from '@uniswap/router-sdk';
|
|
6
|
-
import { Currency, TradeType } from '@uniswap/sdk-core';
|
|
7
|
-
import { SwapOptions } from './entities/actions/uniswap';
|
|
8
|
-
export
|
|
9
|
-
sender?: string;
|
|
10
|
-
deadline?: BigNumberish;
|
|
11
|
-
};
|
|
12
|
-
export interface MigrateV3ToV4Options {
|
|
13
|
-
inputPosition: V3Position;
|
|
14
|
-
outputPosition: V4Position;
|
|
15
|
-
v3RemoveLiquidityOptions: V3RemoveLiquidityOptions;
|
|
16
|
-
v4AddLiquidityOptions: V4AddLiquidityOptions;
|
|
17
|
-
}
|
|
18
|
-
export declare abstract class SwapRouter {
|
|
19
|
-
static INTERFACE: Interface;
|
|
20
|
-
static swapCallParameters(trades: RouterTrade<Currency, Currency, TradeType>, options: SwapOptions): MethodParameters;
|
|
21
|
-
/**
|
|
22
|
-
* Builds the call parameters for a migration from a V3 position to a V4 position.
|
|
23
|
-
* Some requirements of the parameters:
|
|
24
|
-
* - v3RemoveLiquidityOptions.collectOptions.recipient must equal v4PositionManager
|
|
25
|
-
* - v3RemoveLiquidityOptions.liquidityPercentage must be 100%
|
|
26
|
-
* - input pool and output pool must have the same tokens
|
|
27
|
-
* - V3 NFT must be approved, or valid inputV3NFTPermit must be provided with UR as spender
|
|
28
|
-
*/
|
|
29
|
-
static migrateV3ToV4CallParameters(options: MigrateV3ToV4Options, positionManagerOverride?: string): MethodParameters;
|
|
30
|
-
/**
|
|
31
|
-
* Encodes a planned route into a method name and parameters for the Router contract.
|
|
32
|
-
* @param planner the planned route
|
|
33
|
-
* @param nativeCurrencyValue the native currency value of the planned route
|
|
34
|
-
* @param config the router config
|
|
35
|
-
*/
|
|
36
|
-
private static encodePlan;
|
|
37
|
-
}
|
|
1
|
+
import { Interface } from '@ethersproject/abi';
|
|
2
|
+
import { BigNumberish } from 'ethers';
|
|
3
|
+
import { MethodParameters, Position as V3Position, RemoveLiquidityOptions as V3RemoveLiquidityOptions } from '@uniswap/v3-sdk';
|
|
4
|
+
import { Position as V4Position, AddLiquidityOptions as V4AddLiquidityOptions } from '@uniswap/v4-sdk';
|
|
5
|
+
import { Trade as RouterTrade } from '@uniswap/router-sdk';
|
|
6
|
+
import { Currency, TradeType } from '@uniswap/sdk-core';
|
|
7
|
+
import { SwapOptions } from './entities/actions/uniswap';
|
|
8
|
+
export type SwapRouterConfig = {
|
|
9
|
+
sender?: string;
|
|
10
|
+
deadline?: BigNumberish;
|
|
11
|
+
};
|
|
12
|
+
export interface MigrateV3ToV4Options {
|
|
13
|
+
inputPosition: V3Position;
|
|
14
|
+
outputPosition: V4Position;
|
|
15
|
+
v3RemoveLiquidityOptions: V3RemoveLiquidityOptions;
|
|
16
|
+
v4AddLiquidityOptions: V4AddLiquidityOptions;
|
|
17
|
+
}
|
|
18
|
+
export declare abstract class SwapRouter {
|
|
19
|
+
static INTERFACE: Interface;
|
|
20
|
+
static swapCallParameters(trades: RouterTrade<Currency, Currency, TradeType>, options: SwapOptions): MethodParameters;
|
|
21
|
+
/**
|
|
22
|
+
* Builds the call parameters for a migration from a V3 position to a V4 position.
|
|
23
|
+
* Some requirements of the parameters:
|
|
24
|
+
* - v3RemoveLiquidityOptions.collectOptions.recipient must equal v4PositionManager
|
|
25
|
+
* - v3RemoveLiquidityOptions.liquidityPercentage must be 100%
|
|
26
|
+
* - input pool and output pool must have the same tokens
|
|
27
|
+
* - V3 NFT must be approved, or valid inputV3NFTPermit must be provided with UR as spender
|
|
28
|
+
*/
|
|
29
|
+
static migrateV3ToV4CallParameters(options: MigrateV3ToV4Options, positionManagerOverride?: string): MethodParameters;
|
|
30
|
+
/**
|
|
31
|
+
* Encodes a planned route into a method name and parameters for the Router contract.
|
|
32
|
+
* @param planner the planned route
|
|
33
|
+
* @param nativeCurrencyValue the native currency value of the planned route
|
|
34
|
+
* @param config the router config
|
|
35
|
+
*/
|
|
36
|
+
private static encodePlan;
|
|
37
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SwapRouter = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const tiny_invariant_1 = tslib_1.__importDefault(require("tiny-invariant"));
|
|
6
|
+
const UniversalRouter_json_1 = require("@uniswap/universal-router/artifacts/contracts/UniversalRouter.sol/UniversalRouter.json");
|
|
7
|
+
const abi_1 = require("@ethersproject/abi");
|
|
8
|
+
const ethers_1 = require("ethers");
|
|
9
|
+
const v3_sdk_1 = require("@uniswap/v3-sdk");
|
|
10
|
+
const v4_sdk_1 = require("@uniswap/v4-sdk");
|
|
11
|
+
const sdk_core_1 = require("@uniswap/sdk-core");
|
|
12
|
+
const uniswap_1 = require("./entities/actions/uniswap");
|
|
13
|
+
const routerCommands_1 = require("./utils/routerCommands");
|
|
14
|
+
const inputTokens_1 = require("./utils/inputTokens");
|
|
15
|
+
const constants_1 = require("./utils/constants");
|
|
16
|
+
function isMint(options) {
|
|
17
|
+
return Object.keys(options).some((k) => k === 'recipient');
|
|
18
|
+
}
|
|
19
|
+
class SwapRouter {
|
|
20
|
+
static swapCallParameters(trades, options) {
|
|
21
|
+
// TODO: use permit if signature included in swapOptions
|
|
22
|
+
const planner = new routerCommands_1.RoutePlanner();
|
|
23
|
+
const trade = new uniswap_1.UniswapTrade(trades, options);
|
|
24
|
+
const inputCurrency = trade.trade.inputAmount.currency;
|
|
25
|
+
(0, tiny_invariant_1.default)(!(inputCurrency.isNative && !!options.inputTokenPermit), 'NATIVE_INPUT_PERMIT');
|
|
26
|
+
if (options.inputTokenPermit) {
|
|
27
|
+
(0, inputTokens_1.encodePermit)(planner, options.inputTokenPermit);
|
|
28
|
+
}
|
|
29
|
+
const nativeCurrencyValue = inputCurrency.isNative
|
|
30
|
+
? ethers_1.BigNumber.from(trade.trade.maximumAmountIn(options.slippageTolerance).quotient.toString())
|
|
31
|
+
: ethers_1.BigNumber.from(0);
|
|
32
|
+
trade.encode(planner, { allowRevert: false });
|
|
33
|
+
return SwapRouter.encodePlan(planner, nativeCurrencyValue, {
|
|
34
|
+
deadline: options.deadlineOrPreviousBlockhash ? ethers_1.BigNumber.from(options.deadlineOrPreviousBlockhash) : undefined,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Builds the call parameters for a migration from a V3 position to a V4 position.
|
|
39
|
+
* Some requirements of the parameters:
|
|
40
|
+
* - v3RemoveLiquidityOptions.collectOptions.recipient must equal v4PositionManager
|
|
41
|
+
* - v3RemoveLiquidityOptions.liquidityPercentage must be 100%
|
|
42
|
+
* - input pool and output pool must have the same tokens
|
|
43
|
+
* - V3 NFT must be approved, or valid inputV3NFTPermit must be provided with UR as spender
|
|
44
|
+
*/
|
|
45
|
+
static migrateV3ToV4CallParameters(options, positionManagerOverride) {
|
|
46
|
+
const v4Pool = options.outputPosition.pool;
|
|
47
|
+
const v3Token0 = options.inputPosition.pool.token0;
|
|
48
|
+
const v3Token1 = options.inputPosition.pool.token1;
|
|
49
|
+
const v4PositionManagerAddress = positionManagerOverride !== null && positionManagerOverride !== void 0 ? positionManagerOverride : sdk_core_1.CHAIN_TO_ADDRESSES_MAP[v4Pool.chainId].v4PositionManagerAddress;
|
|
50
|
+
// owner of the v3 nft must be the receiver of the v4 nft
|
|
51
|
+
// validate the parameters
|
|
52
|
+
if (v4Pool.currency0.isNative) {
|
|
53
|
+
(0, tiny_invariant_1.default)((v4Pool.currency0.wrapped.equals(v3Token0) && v4Pool.currency1.equals(v3Token1)) ||
|
|
54
|
+
(v4Pool.currency0.wrapped.equals(v3Token1) && v4Pool.currency1.equals(v3Token0)), 'TOKEN_MISMATCH');
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
(0, tiny_invariant_1.default)(v3Token0 === v4Pool.token0, 'TOKEN0_MISMATCH');
|
|
58
|
+
(0, tiny_invariant_1.default)(v3Token1 === v4Pool.token1, 'TOKEN1_MISMATCH');
|
|
59
|
+
}
|
|
60
|
+
(0, tiny_invariant_1.default)(options.v3RemoveLiquidityOptions.liquidityPercentage.equalTo(new sdk_core_1.Percent(100, 100)), 'FULL_REMOVAL_REQUIRED');
|
|
61
|
+
(0, tiny_invariant_1.default)(options.v3RemoveLiquidityOptions.burnToken == true, 'BURN_TOKEN_REQUIRED');
|
|
62
|
+
(0, tiny_invariant_1.default)(options.v3RemoveLiquidityOptions.collectOptions.recipient === v4PositionManagerAddress, 'RECIPIENT_NOT_POSITION_MANAGER');
|
|
63
|
+
(0, tiny_invariant_1.default)(isMint(options.v4AddLiquidityOptions), 'MINT_REQUIRED');
|
|
64
|
+
(0, tiny_invariant_1.default)(options.v4AddLiquidityOptions.migrate, 'MIGRATE_REQUIRED');
|
|
65
|
+
const planner = new routerCommands_1.RoutePlanner();
|
|
66
|
+
// to prevent reentrancy by the pool hook, we initialize the v4 pool before moving funds
|
|
67
|
+
if (options.v4AddLiquidityOptions.createPool) {
|
|
68
|
+
const poolKey = v4_sdk_1.Pool.getPoolKey(v4Pool.currency0, v4Pool.currency1, v4Pool.fee, v4Pool.tickSpacing, v4Pool.hooks);
|
|
69
|
+
planner.addCommand(routerCommands_1.CommandType.V4_INITIALIZE_POOL, [poolKey, v4Pool.sqrtRatioX96.toString()]);
|
|
70
|
+
// remove createPool setting, so that it doesnt get encoded again later
|
|
71
|
+
delete options.v4AddLiquidityOptions.createPool;
|
|
72
|
+
}
|
|
73
|
+
// add position permit to the universal router planner
|
|
74
|
+
if (options.v3RemoveLiquidityOptions.permit) {
|
|
75
|
+
// permit spender should be UR
|
|
76
|
+
const universalRouterAddress = (0, constants_1.UNIVERSAL_ROUTER_ADDRESS)(constants_1.UniversalRouterVersion.V2_0, options.inputPosition.pool.chainId);
|
|
77
|
+
(0, tiny_invariant_1.default)(universalRouterAddress == options.v3RemoveLiquidityOptions.permit.spender, 'INVALID_SPENDER');
|
|
78
|
+
// don't need to transfer it because v3posm uses isApprovedOrOwner()
|
|
79
|
+
(0, inputTokens_1.encodeV3PositionPermit)(planner, options.v3RemoveLiquidityOptions.permit, options.v3RemoveLiquidityOptions.tokenId);
|
|
80
|
+
// remove permit so that multicall doesnt add it again
|
|
81
|
+
delete options.v3RemoveLiquidityOptions.permit;
|
|
82
|
+
}
|
|
83
|
+
// encode v3 withdraw
|
|
84
|
+
const v3RemoveParams = v3_sdk_1.NonfungiblePositionManager.removeCallParameters(options.inputPosition, options.v3RemoveLiquidityOptions);
|
|
85
|
+
const v3Calls = v3_sdk_1.Multicall.decodeMulticall(v3RemoveParams.calldata);
|
|
86
|
+
for (const v3Call of v3Calls) {
|
|
87
|
+
// slice selector - 0x + 4 bytes = 10 characters
|
|
88
|
+
const selector = v3Call.slice(0, 10);
|
|
89
|
+
(0, tiny_invariant_1.default)(selector == v3_sdk_1.NonfungiblePositionManager.INTERFACE.getSighash('collect') ||
|
|
90
|
+
selector == v3_sdk_1.NonfungiblePositionManager.INTERFACE.getSighash('decreaseLiquidity') ||
|
|
91
|
+
selector == v3_sdk_1.NonfungiblePositionManager.INTERFACE.getSighash('burn'), 'INVALID_V3_CALL: ' + selector);
|
|
92
|
+
planner.addCommand(routerCommands_1.CommandType.V3_POSITION_MANAGER_CALL, [v3Call]);
|
|
93
|
+
}
|
|
94
|
+
// encode v4 mint
|
|
95
|
+
const v4AddParams = v4_sdk_1.V4PositionManager.addCallParameters(options.outputPosition, options.v4AddLiquidityOptions);
|
|
96
|
+
// only modifyLiquidities can be called by the UniversalRouter
|
|
97
|
+
const selector = v4AddParams.calldata.slice(0, 10);
|
|
98
|
+
(0, tiny_invariant_1.default)(selector == v4_sdk_1.V4PositionManager.INTERFACE.getSighash('modifyLiquidities'), 'INVALID_V4_CALL: ' + selector);
|
|
99
|
+
planner.addCommand(routerCommands_1.CommandType.V4_POSITION_MANAGER_CALL, [v4AddParams.calldata]);
|
|
100
|
+
return SwapRouter.encodePlan(planner, ethers_1.BigNumber.from(0), {
|
|
101
|
+
deadline: ethers_1.BigNumber.from(options.v4AddLiquidityOptions.deadline),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Encodes a planned route into a method name and parameters for the Router contract.
|
|
106
|
+
* @param planner the planned route
|
|
107
|
+
* @param nativeCurrencyValue the native currency value of the planned route
|
|
108
|
+
* @param config the router config
|
|
109
|
+
*/
|
|
110
|
+
static encodePlan(planner, nativeCurrencyValue, config = {}) {
|
|
111
|
+
const { commands, inputs } = planner;
|
|
112
|
+
const functionSignature = !!config.deadline ? 'execute(bytes,bytes[],uint256)' : 'execute(bytes,bytes[])';
|
|
113
|
+
const parameters = !!config.deadline ? [commands, inputs, config.deadline] : [commands, inputs];
|
|
114
|
+
const calldata = SwapRouter.INTERFACE.encodeFunctionData(functionSignature, parameters);
|
|
115
|
+
return { calldata, value: nativeCurrencyValue.toHexString() };
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.SwapRouter = SwapRouter;
|
|
119
|
+
SwapRouter.INTERFACE = new abi_1.Interface(UniversalRouter_json_1.abi);
|
|
120
|
+
//# sourceMappingURL=swapRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swapRouter.js","sourceRoot":"","sources":["../../../src/swapRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import { Interface } from '@ethersproject/abi';
|
|
2
|
-
import { CommandType, CommandDefinition } from '../utils/routerCommands';
|
|
3
|
-
export
|
|
4
|
-
readonly name: string;
|
|
5
|
-
readonly value: any;
|
|
6
|
-
};
|
|
7
|
-
export
|
|
8
|
-
readonly commandName: string;
|
|
9
|
-
readonly commandType: CommandType;
|
|
10
|
-
readonly params: readonly Param[];
|
|
11
|
-
};
|
|
12
|
-
export
|
|
13
|
-
readonly commands: readonly UniversalRouterCommand[];
|
|
14
|
-
};
|
|
15
|
-
export
|
|
16
|
-
readonly tokenIn: string;
|
|
17
|
-
readonly tokenOut: string;
|
|
18
|
-
readonly fee: number;
|
|
19
|
-
};
|
|
20
|
-
export interface CommandsDefinition {
|
|
21
|
-
[key: number]: CommandDefinition;
|
|
22
|
-
}
|
|
23
|
-
export declare abstract class CommandParser {
|
|
24
|
-
static INTERFACE: Interface;
|
|
25
|
-
static parseCalldata(calldata: string): UniversalRouterCall;
|
|
26
|
-
}
|
|
27
|
-
export declare class GenericCommandParser {
|
|
28
|
-
private readonly commandDefinition;
|
|
29
|
-
constructor(commandDefinition: CommandsDefinition);
|
|
30
|
-
parse(commands: string, inputs: string[]): UniversalRouterCall;
|
|
31
|
-
private static getCommands;
|
|
32
|
-
}
|
|
33
|
-
export declare function parseV3PathExactIn(path: string): readonly V3PathItem[];
|
|
34
|
-
export declare function parseV3PathExactOut(path: string): readonly V3PathItem[];
|
|
1
|
+
import { Interface } from '@ethersproject/abi';
|
|
2
|
+
import { CommandType, CommandDefinition } from '../utils/routerCommands';
|
|
3
|
+
export type Param = {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly value: any;
|
|
6
|
+
};
|
|
7
|
+
export type UniversalRouterCommand = {
|
|
8
|
+
readonly commandName: string;
|
|
9
|
+
readonly commandType: CommandType;
|
|
10
|
+
readonly params: readonly Param[];
|
|
11
|
+
};
|
|
12
|
+
export type UniversalRouterCall = {
|
|
13
|
+
readonly commands: readonly UniversalRouterCommand[];
|
|
14
|
+
};
|
|
15
|
+
export type V3PathItem = {
|
|
16
|
+
readonly tokenIn: string;
|
|
17
|
+
readonly tokenOut: string;
|
|
18
|
+
readonly fee: number;
|
|
19
|
+
};
|
|
20
|
+
export interface CommandsDefinition {
|
|
21
|
+
[key: number]: CommandDefinition;
|
|
22
|
+
}
|
|
23
|
+
export declare abstract class CommandParser {
|
|
24
|
+
static INTERFACE: Interface;
|
|
25
|
+
static parseCalldata(calldata: string): UniversalRouterCall;
|
|
26
|
+
}
|
|
27
|
+
export declare class GenericCommandParser {
|
|
28
|
+
private readonly commandDefinition;
|
|
29
|
+
constructor(commandDefinition: CommandsDefinition);
|
|
30
|
+
parse(commands: string, inputs: string[]): UniversalRouterCall;
|
|
31
|
+
private static getCommands;
|
|
32
|
+
}
|
|
33
|
+
export declare function parseV3PathExactIn(path: string): readonly V3PathItem[];
|
|
34
|
+
export declare function parseV3PathExactOut(path: string): readonly V3PathItem[];
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseV3PathExactOut = exports.parseV3PathExactIn = exports.GenericCommandParser = exports.CommandParser = void 0;
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
5
|
+
const UniversalRouter_json_1 = require("@uniswap/universal-router/artifacts/contracts/UniversalRouter.sol/UniversalRouter.json");
|
|
6
|
+
const abi_1 = require("@ethersproject/abi");
|
|
7
|
+
const v4_sdk_1 = require("@uniswap/v4-sdk");
|
|
8
|
+
const routerCommands_1 = require("../utils/routerCommands");
|
|
9
|
+
// Parses UniversalRouter V2 commands
|
|
10
|
+
class CommandParser {
|
|
11
|
+
static parseCalldata(calldata) {
|
|
12
|
+
const genericParser = new GenericCommandParser(routerCommands_1.COMMAND_DEFINITION);
|
|
13
|
+
const txDescription = CommandParser.INTERFACE.parseTransaction({ data: calldata });
|
|
14
|
+
const { commands, inputs } = txDescription.args;
|
|
15
|
+
return genericParser.parse(commands, inputs);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.CommandParser = CommandParser;
|
|
19
|
+
CommandParser.INTERFACE = new abi_1.Interface(UniversalRouter_json_1.abi);
|
|
20
|
+
// Parses commands based on given command definition
|
|
21
|
+
class GenericCommandParser {
|
|
22
|
+
constructor(commandDefinition) {
|
|
23
|
+
this.commandDefinition = commandDefinition;
|
|
24
|
+
}
|
|
25
|
+
parse(commands, inputs) {
|
|
26
|
+
const commandTypes = GenericCommandParser.getCommands(commands);
|
|
27
|
+
return {
|
|
28
|
+
commands: commandTypes.map((commandType, i) => {
|
|
29
|
+
const commandDef = this.commandDefinition[commandType];
|
|
30
|
+
if (commandDef.parser === routerCommands_1.Parser.V4Actions) {
|
|
31
|
+
const { actions } = v4_sdk_1.V4BaseActionsParser.parseCalldata(inputs[i]);
|
|
32
|
+
return {
|
|
33
|
+
commandName: routerCommands_1.CommandType[commandType],
|
|
34
|
+
commandType,
|
|
35
|
+
params: v4RouterCallToParams(actions),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
else if (commandDef.parser === routerCommands_1.Parser.Abi) {
|
|
39
|
+
const abiDef = commandDef.params;
|
|
40
|
+
const rawParams = ethers_1.ethers.utils.defaultAbiCoder.decode(abiDef.map((command) => command.type), inputs[i]);
|
|
41
|
+
const params = rawParams.map((param, j) => {
|
|
42
|
+
switch (abiDef[j].subparser) {
|
|
43
|
+
case routerCommands_1.Subparser.V3PathExactIn:
|
|
44
|
+
return {
|
|
45
|
+
name: abiDef[j].name,
|
|
46
|
+
value: parseV3PathExactIn(param),
|
|
47
|
+
};
|
|
48
|
+
case routerCommands_1.Subparser.V3PathExactOut:
|
|
49
|
+
return {
|
|
50
|
+
name: abiDef[j].name,
|
|
51
|
+
value: parseV3PathExactOut(param),
|
|
52
|
+
};
|
|
53
|
+
default:
|
|
54
|
+
return {
|
|
55
|
+
name: abiDef[j].name,
|
|
56
|
+
value: param,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
return {
|
|
61
|
+
commandName: routerCommands_1.CommandType[commandType],
|
|
62
|
+
commandType,
|
|
63
|
+
params,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
else if (commandDef.parser === routerCommands_1.Parser.V3Actions) {
|
|
67
|
+
// TODO: implement better parsing here
|
|
68
|
+
return {
|
|
69
|
+
commandName: routerCommands_1.CommandType[commandType],
|
|
70
|
+
commandType,
|
|
71
|
+
params: inputs.map((input) => ({ name: 'command', value: input })),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
throw new Error(`Unsupported parser: ${commandDef}`);
|
|
76
|
+
}
|
|
77
|
+
}),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// parse command types from bytes string
|
|
81
|
+
static getCommands(commands) {
|
|
82
|
+
const commandTypes = [];
|
|
83
|
+
for (let i = 2; i < commands.length; i += 2) {
|
|
84
|
+
const byte = commands.substring(i, i + 2);
|
|
85
|
+
commandTypes.push(parseInt(byte, 16));
|
|
86
|
+
}
|
|
87
|
+
return commandTypes;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.GenericCommandParser = GenericCommandParser;
|
|
91
|
+
function parseV3PathExactIn(path) {
|
|
92
|
+
const strippedPath = path.replace('0x', '');
|
|
93
|
+
let tokenIn = ethers_1.ethers.utils.getAddress(strippedPath.substring(0, 40));
|
|
94
|
+
let loc = 40;
|
|
95
|
+
const res = [];
|
|
96
|
+
while (loc < strippedPath.length) {
|
|
97
|
+
const feeAndTokenOut = strippedPath.substring(loc, loc + 46);
|
|
98
|
+
const fee = parseInt(feeAndTokenOut.substring(0, 6), 16);
|
|
99
|
+
const tokenOut = ethers_1.ethers.utils.getAddress(feeAndTokenOut.substring(6, 46));
|
|
100
|
+
res.push({
|
|
101
|
+
tokenIn,
|
|
102
|
+
tokenOut,
|
|
103
|
+
fee,
|
|
104
|
+
});
|
|
105
|
+
tokenIn = tokenOut;
|
|
106
|
+
loc += 46;
|
|
107
|
+
}
|
|
108
|
+
return res;
|
|
109
|
+
}
|
|
110
|
+
exports.parseV3PathExactIn = parseV3PathExactIn;
|
|
111
|
+
function parseV3PathExactOut(path) {
|
|
112
|
+
const strippedPath = path.replace('0x', '');
|
|
113
|
+
let tokenIn = ethers_1.ethers.utils.getAddress(strippedPath.substring(strippedPath.length - 40));
|
|
114
|
+
let loc = strippedPath.length - 86; // 86 = (20 addr + 3 fee + 20 addr) * 2 (for hex characters)
|
|
115
|
+
const res = [];
|
|
116
|
+
while (loc >= 0) {
|
|
117
|
+
const feeAndTokenOut = strippedPath.substring(loc, loc + 46);
|
|
118
|
+
const tokenOut = ethers_1.ethers.utils.getAddress(feeAndTokenOut.substring(0, 40));
|
|
119
|
+
const fee = parseInt(feeAndTokenOut.substring(40, 46), 16);
|
|
120
|
+
res.push({
|
|
121
|
+
tokenIn,
|
|
122
|
+
tokenOut,
|
|
123
|
+
fee,
|
|
124
|
+
});
|
|
125
|
+
tokenIn = tokenOut;
|
|
126
|
+
loc -= 46;
|
|
127
|
+
}
|
|
128
|
+
return res;
|
|
129
|
+
}
|
|
130
|
+
exports.parseV3PathExactOut = parseV3PathExactOut;
|
|
131
|
+
function v4RouterCallToParams(actions) {
|
|
132
|
+
return actions.map((action) => {
|
|
133
|
+
return {
|
|
134
|
+
name: action.actionName,
|
|
135
|
+
value: action.params.map((param) => {
|
|
136
|
+
return {
|
|
137
|
+
name: param.name,
|
|
138
|
+
value: param.value,
|
|
139
|
+
};
|
|
140
|
+
}),
|
|
141
|
+
};
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=commandParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandParser.js","sourceRoot":"","sources":["../../../../src/utils/commandParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import { BigNumber } from 'ethers';
|
|
2
|
-
export declare enum UniversalRouterVersion {
|
|
3
|
-
V1_2 = "1.2",
|
|
4
|
-
V2_0 = "2.0"
|
|
5
|
-
}
|
|
6
|
-
export
|
|
7
|
-
address: string;
|
|
8
|
-
creationBlock: number;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
weth: string;
|
|
12
|
-
routerConfigs: {
|
|
13
|
-
[key in UniversalRouterVersion]: RouterConfig;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
export declare const CHAIN_CONFIGS: {
|
|
17
|
-
[key: number]: ChainConfig;
|
|
18
|
-
};
|
|
19
|
-
export declare const UNIVERSAL_ROUTER_ADDRESS: (version: UniversalRouterVersion, chainId: number) => string;
|
|
20
|
-
export declare const UNIVERSAL_ROUTER_CREATION_BLOCK: (version: UniversalRouterVersion, chainId: number) => number;
|
|
21
|
-
export declare const WETH_ADDRESS: (chainId: number) => string;
|
|
22
|
-
export declare const CONTRACT_BALANCE: BigNumber;
|
|
23
|
-
export declare const ETH_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
24
|
-
export declare const E_ETH_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
25
|
-
export declare const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
26
|
-
export declare const MAX_UINT256: BigNumber;
|
|
27
|
-
export declare const MAX_UINT160: BigNumber;
|
|
28
|
-
export declare const SENDER_AS_RECIPIENT = "0x0000000000000000000000000000000000000001";
|
|
29
|
-
export declare const ROUTER_AS_RECIPIENT = "0x0000000000000000000000000000000000000002";
|
|
30
|
-
export {};
|
|
1
|
+
import { BigNumber } from 'ethers';
|
|
2
|
+
export declare enum UniversalRouterVersion {
|
|
3
|
+
V1_2 = "1.2",
|
|
4
|
+
V2_0 = "2.0"
|
|
5
|
+
}
|
|
6
|
+
export type RouterConfig = {
|
|
7
|
+
address: string;
|
|
8
|
+
creationBlock: number;
|
|
9
|
+
};
|
|
10
|
+
type ChainConfig = {
|
|
11
|
+
weth: string;
|
|
12
|
+
routerConfigs: {
|
|
13
|
+
[key in UniversalRouterVersion]: RouterConfig;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export declare const CHAIN_CONFIGS: {
|
|
17
|
+
[key: number]: ChainConfig;
|
|
18
|
+
};
|
|
19
|
+
export declare const UNIVERSAL_ROUTER_ADDRESS: (version: UniversalRouterVersion, chainId: number) => string;
|
|
20
|
+
export declare const UNIVERSAL_ROUTER_CREATION_BLOCK: (version: UniversalRouterVersion, chainId: number) => number;
|
|
21
|
+
export declare const WETH_ADDRESS: (chainId: number) => string;
|
|
22
|
+
export declare const CONTRACT_BALANCE: BigNumber;
|
|
23
|
+
export declare const ETH_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
24
|
+
export declare const E_ETH_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
25
|
+
export declare const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
26
|
+
export declare const MAX_UINT256: BigNumber;
|
|
27
|
+
export declare const MAX_UINT160: BigNumber;
|
|
28
|
+
export declare const SENDER_AS_RECIPIENT = "0x0000000000000000000000000000000000000001";
|
|
29
|
+
export declare const ROUTER_AS_RECIPIENT = "0x0000000000000000000000000000000000000002";
|
|
30
|
+
export {};
|