@uniswap/universal-router-sdk 5.2.0 → 5.4.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 +81 -0
- package/dist/cjs/src/index.d.ts +3 -0
- package/dist/cjs/src/index.js +6 -1
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/swapRouter.d.ts +17 -1
- package/dist/cjs/src/swapRouter.js +83 -8
- package/dist/cjs/src/swapRouter.js.map +1 -1
- 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/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.js +15 -0
- package/dist/cjs/src/utils/constants.js.map +1 -1
- 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/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/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/index.d.ts +3 -0
- package/dist/esm/src/index.js +3 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/swapRouter.d.ts +17 -1
- package/dist/esm/src/swapRouter.js +85 -10
- package/dist/esm/src/swapRouter.js.map +1 -1
- 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/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.js +15 -0
- package/dist/esm/src/utils/constants.js.map +1 -1
- 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/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/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/index.d.ts +3 -0
- package/dist/types/src/swapRouter.d.ts +17 -1
- package/dist/types/src/types/encodeSwaps.d.ts +149 -0
- package/dist/types/src/utils/computeEncodeSwapsAmounts.d.ts +8 -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/normalizeEncodeSwapsSpec.d.ts +2 -0
- package/dist/types/src/utils/validateEncodeSwaps.d.ts +2 -0
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -22,6 +22,11 @@ const routerTrade = new RouterTrade({ v2Routes, v3Routes, mixedRoutes, tradeType
|
|
|
22
22
|
const { calldata, value } = SwapRouter.swapCallParameters(routerTrade, options)
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
+
This SDK has two entry points for encoding swap calldata:
|
|
26
|
+
|
|
27
|
+
- **`SwapRouter.swapCallParameters(trade, options)`** — builds calldata from a high-level `RouterTrade` (shown above). Best when your swap fits as one or more independent linear routes through pools.
|
|
28
|
+
- **`SwapRouter.encodeSwaps(spec, swapSteps)`** — takes Universal Router commands directly, with the SDK adding ingress, fee, and settlement calldata around them. Best for topologies that don't fit a Trade, routing-service integrations, or advanced V4 compositions. See [Encoding Router-Provided Swap Steps](#encoding-router-provided-swap-steps-encodeswaps).
|
|
29
|
+
|
|
25
30
|
## Running this package
|
|
26
31
|
|
|
27
32
|
Make sure you are running `node v18`
|
|
@@ -39,6 +44,82 @@ forge install
|
|
|
39
44
|
yarn test:forge
|
|
40
45
|
```
|
|
41
46
|
|
|
47
|
+
## Encoding Router-Provided Swap Steps (`encodeSwaps`)
|
|
48
|
+
|
|
49
|
+
`SwapRouter.encodeSwaps(spec, swapSteps)` is an alternative entry point for callers that already produce explicit `SwapStep[]` plans (e.g. routing services) and want the SDK to wrap them in a safety envelope. It decouples route topology from SDK trade construction.
|
|
50
|
+
|
|
51
|
+
The router owns `swapSteps` (V2/V3/V4 swaps + any `WRAP_ETH` / `UNWRAP_WETH`). The SDK owns ingress, fees, final settlement, exact-output refund, and optional `safeMode`.
|
|
52
|
+
|
|
53
|
+
### Swap Step Types
|
|
54
|
+
|
|
55
|
+
Each `SwapStep` is a 1:1 representation of a Universal Router command:
|
|
56
|
+
|
|
57
|
+
- `V2_SWAP_EXACT_IN` / `V2_SWAP_EXACT_OUT` — V2 swap (multi-hop via `path: address[]`)
|
|
58
|
+
- `V3_SWAP_EXACT_IN` / `V3_SWAP_EXACT_OUT` — V3 swap (multi-hop via packed `path: bytes`)
|
|
59
|
+
- `V4_SWAP` — wraps a sequence of V4 actions (`SWAP_EXACT_IN`, `SETTLE`, `TAKE`, etc.) for the V4 router module
|
|
60
|
+
- `WRAP_ETH` / `UNWRAP_WETH` — required when the route bridges native ETH and WETH
|
|
61
|
+
|
|
62
|
+
Routers compose these to express any supported route topology. The SDK does not infer wrap/unwrap commands — routers must include them when their route depends on it.
|
|
63
|
+
|
|
64
|
+
### Basic Usage
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
import { SwapRouter, ROUTER_AS_RECIPIENT } from '@uniswap/universal-router-sdk'
|
|
68
|
+
import { CurrencyAmount, Percent, TradeType } from '@uniswap/sdk-core'
|
|
69
|
+
|
|
70
|
+
const { calldata, value } = SwapRouter.encodeSwaps(
|
|
71
|
+
{
|
|
72
|
+
tradeType: TradeType.EXACT_INPUT,
|
|
73
|
+
routing: {
|
|
74
|
+
inputToken: USDC,
|
|
75
|
+
outputToken: WETH,
|
|
76
|
+
amount: CurrencyAmount.fromRawAmount(USDC, '1000000000'),
|
|
77
|
+
quote: CurrencyAmount.fromRawAmount(WETH, '500000000000000000'),
|
|
78
|
+
},
|
|
79
|
+
slippageTolerance: new Percent(50, 10000), // 0.5%
|
|
80
|
+
recipient: '0x...',
|
|
81
|
+
},
|
|
82
|
+
[
|
|
83
|
+
{
|
|
84
|
+
type: 'V3_SWAP_EXACT_IN',
|
|
85
|
+
recipient: ROUTER_AS_RECIPIENT,
|
|
86
|
+
amountIn: '1000000000',
|
|
87
|
+
amountOutMin: '0', // SDK enforces final slippage via the trailing SWEEP
|
|
88
|
+
path: '0x...', // packed V3 path
|
|
89
|
+
},
|
|
90
|
+
]
|
|
91
|
+
)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### What the SDK adds around `swapSteps`
|
|
95
|
+
|
|
96
|
+
1. **Ingress**: `PERMIT2_TRANSFER_FROM` for ERC20 input, or `proxy.execute()` wrapping for `ApproveProxy`. Native input flows through `msg.value`.
|
|
97
|
+
2. **Fee deduction** before settlement: portion (`PAY_PORTION` / `PAY_PORTION_FULL_PRECISION`) on exact-input, flat (`TRANSFER`) on exact-output.
|
|
98
|
+
3. **Final SWEEP** of `outputToken` to recipient with the slippage-bounded floor.
|
|
99
|
+
4. **Exact-output refund**: SWEEPs unused input back to recipient.
|
|
100
|
+
5. **safeMode** (optional): trailing zero-min ETH SWEEP to recover dust or unintended `msg.value`.
|
|
101
|
+
|
|
102
|
+
### Constraints
|
|
103
|
+
|
|
104
|
+
- All swap step recipients must be `ROUTER_AS_RECIPIENT` — the SDK's settlement sweeps need router custody to see the funds.
|
|
105
|
+
- `payerIsUser` is hardcoded to `false`; ingress runs once up-front via `PERMIT2_TRANSFER_FROM`.
|
|
106
|
+
- Routers must end with output in `routing.outputToken`. For exact-output, unused input must end in `routing.inputToken`.
|
|
107
|
+
- The final top-level `SWEEP` is appended by the SDK — don't include it in `swapSteps`.
|
|
108
|
+
|
|
109
|
+
### Per-Hop Slippage
|
|
110
|
+
|
|
111
|
+
Per-hop bounds require Universal Router v2.1.1+ — set `urVersion: UniversalRouterVersion.V2_1_1` on `spec` to enable.
|
|
112
|
+
|
|
113
|
+
`encodeSwaps` accepts per-hop bounds as `minHopPriceX36` on each swap step, matching the contract parameter name. The value is a 1e36-scaled price floor.
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
{
|
|
117
|
+
type: 'V3_SWAP_EXACT_IN',
|
|
118
|
+
// ...
|
|
119
|
+
minHopPriceX36: ['995000000000000000000000000000000000', ...], // one per hop
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
42
123
|
## Signed Routes (Universal Router v2.1)
|
|
43
124
|
|
|
44
125
|
Universal Router v2.1 supports EIP712-signed route execution, enabling gasless transactions and intent-based trading.
|
package/dist/cjs/src/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { SwapRouter } from './swapRouter';
|
|
2
2
|
export type { MigrateV3ToV4Options, SignedRouteOptions, EIP712Payload } from './swapRouter';
|
|
3
|
+
export * from './types/encodeSwaps';
|
|
3
4
|
export * from './entities';
|
|
4
5
|
export * from './utils/routerTradeAdapter';
|
|
5
6
|
export { RoutePlanner, CommandType, COMMAND_DEFINITION, Parser, Subparser } from './utils/routerCommands';
|
|
@@ -8,4 +9,6 @@ export { UNIVERSAL_ROUTER_CREATION_BLOCK, UNIVERSAL_ROUTER_ADDRESS, SWAP_PROXY_A
|
|
|
8
9
|
export { CommandParser, GenericCommandParser } from './utils/commandParser';
|
|
9
10
|
export type { UniversalRouterCommand, UniversalRouterCall, Param, CommandsDefinition } from './utils/commandParser';
|
|
10
11
|
export type { Permit2Permit } from './utils/inputTokens';
|
|
12
|
+
export { normalizeEncodeSwapsSpec } from './utils/normalizeEncodeSwapsSpec';
|
|
13
|
+
export { validateEncodeSwaps } from './utils/validateEncodeSwaps';
|
|
11
14
|
export { NONCE_SKIP_CHECK, generateNonce, EXECUTE_SIGNED_TYPES, getUniversalRouterDomain } from './utils/eip712';
|
package/dist/cjs/src/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getUniversalRouterDomain = exports.EXECUTE_SIGNED_TYPES = exports.generateNonce = exports.NONCE_SKIP_CHECK = exports.GenericCommandParser = exports.CommandParser = exports.isAtLeastV2_1_1 = exports.UniversalRouterVersion = exports.WETH_ADDRESS = exports.ROUTER_AS_RECIPIENT = exports.SWAP_PROXY_ADDRESS = exports.UNIVERSAL_ROUTER_ADDRESS = exports.UNIVERSAL_ROUTER_CREATION_BLOCK = exports.Subparser = exports.Parser = exports.COMMAND_DEFINITION = exports.CommandType = exports.RoutePlanner = exports.SwapRouter = void 0;
|
|
3
|
+
exports.getUniversalRouterDomain = exports.EXECUTE_SIGNED_TYPES = exports.generateNonce = exports.NONCE_SKIP_CHECK = exports.validateEncodeSwaps = exports.normalizeEncodeSwapsSpec = exports.GenericCommandParser = exports.CommandParser = exports.isAtLeastV2_1_1 = exports.UniversalRouterVersion = exports.WETH_ADDRESS = exports.ROUTER_AS_RECIPIENT = exports.SWAP_PROXY_ADDRESS = exports.UNIVERSAL_ROUTER_ADDRESS = exports.UNIVERSAL_ROUTER_CREATION_BLOCK = exports.Subparser = exports.Parser = exports.COMMAND_DEFINITION = exports.CommandType = exports.RoutePlanner = exports.SwapRouter = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
var swapRouter_1 = require("./swapRouter");
|
|
6
6
|
Object.defineProperty(exports, "SwapRouter", { enumerable: true, get: function () { return swapRouter_1.SwapRouter; } });
|
|
7
|
+
tslib_1.__exportStar(require("./types/encodeSwaps"), exports);
|
|
7
8
|
tslib_1.__exportStar(require("./entities"), exports);
|
|
8
9
|
tslib_1.__exportStar(require("./utils/routerTradeAdapter"), exports);
|
|
9
10
|
var routerCommands_1 = require("./utils/routerCommands");
|
|
@@ -23,6 +24,10 @@ Object.defineProperty(exports, "isAtLeastV2_1_1", { enumerable: true, get: funct
|
|
|
23
24
|
var commandParser_1 = require("./utils/commandParser");
|
|
24
25
|
Object.defineProperty(exports, "CommandParser", { enumerable: true, get: function () { return commandParser_1.CommandParser; } });
|
|
25
26
|
Object.defineProperty(exports, "GenericCommandParser", { enumerable: true, get: function () { return commandParser_1.GenericCommandParser; } });
|
|
27
|
+
var normalizeEncodeSwapsSpec_1 = require("./utils/normalizeEncodeSwapsSpec");
|
|
28
|
+
Object.defineProperty(exports, "normalizeEncodeSwapsSpec", { enumerable: true, get: function () { return normalizeEncodeSwapsSpec_1.normalizeEncodeSwapsSpec; } });
|
|
29
|
+
var validateEncodeSwaps_1 = require("./utils/validateEncodeSwaps");
|
|
30
|
+
Object.defineProperty(exports, "validateEncodeSwaps", { enumerable: true, get: function () { return validateEncodeSwaps_1.validateEncodeSwaps; } });
|
|
26
31
|
var eip712_1 = require("./utils/eip712");
|
|
27
32
|
Object.defineProperty(exports, "NONCE_SKIP_CHECK", { enumerable: true, get: function () { return eip712_1.NONCE_SKIP_CHECK; } });
|
|
28
33
|
Object.defineProperty(exports, "generateNonce", { enumerable: true, get: function () { return eip712_1.generateNonce; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AAEnB,qDAA0B;AAC1B,qEAA0C;AAC1C,yDAAyG;AAAhG,8GAAA,YAAY,OAAA;AAAE,6GAAA,WAAW,OAAA;AAAE,oHAAA,kBAAkB,OAAA;AAAE,wGAAA,MAAM,OAAA;AAAE,2GAAA,SAAS,OAAA;AAEzE,+CAQ0B;AAPxB,4HAAA,+BAA+B,OAAA;AAC/B,qHAAA,wBAAwB,OAAA;AACxB,+GAAA,kBAAkB,OAAA;AAClB,gHAAA,mBAAmB,OAAA;AACnB,yGAAA,YAAY,OAAA;AACZ,mHAAA,sBAAsB,OAAA;AACtB,4GAAA,eAAe,OAAA;AAEjB,uDAA2E;AAAlE,8GAAA,aAAa,OAAA;AAAE,qHAAA,oBAAoB,OAAA;AAG5C,yCAAgH;AAAvG,0GAAA,gBAAgB,OAAA;AAAE,uGAAA,aAAa,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AAAE,kHAAA,wBAAwB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AAEnB,8DAAmC;AACnC,qDAA0B;AAC1B,qEAA0C;AAC1C,yDAAyG;AAAhG,8GAAA,YAAY,OAAA;AAAE,6GAAA,WAAW,OAAA;AAAE,oHAAA,kBAAkB,OAAA;AAAE,wGAAA,MAAM,OAAA;AAAE,2GAAA,SAAS,OAAA;AAEzE,+CAQ0B;AAPxB,4HAAA,+BAA+B,OAAA;AAC/B,qHAAA,wBAAwB,OAAA;AACxB,+GAAA,kBAAkB,OAAA;AAClB,gHAAA,mBAAmB,OAAA;AACnB,yGAAA,YAAY,OAAA;AACZ,mHAAA,sBAAsB,OAAA;AACtB,4GAAA,eAAe,OAAA;AAEjB,uDAA2E;AAAlE,8GAAA,aAAa,OAAA;AAAE,qHAAA,oBAAoB,OAAA;AAG5C,6EAA2E;AAAlE,oIAAA,wBAAwB,OAAA;AACjC,mEAAiE;AAAxD,0HAAA,mBAAmB,OAAA;AAC5B,yCAAgH;AAAvG,0GAAA,gBAAgB,OAAA;AAAE,uGAAA,aAAa,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AAAE,kHAAA,wBAAwB,OAAA"}
|
|
@@ -6,6 +6,7 @@ import { Trade as RouterTrade } from '@uniswap/router-sdk';
|
|
|
6
6
|
import { Currency, TradeType } from '@uniswap/sdk-core';
|
|
7
7
|
import { SwapOptions } from './entities/actions/uniswap';
|
|
8
8
|
import { AcrossV4DepositV3Params } from './entities/actions/across';
|
|
9
|
+
import { SwapSpecification, SwapStep } from './types/encodeSwaps';
|
|
9
10
|
import { TypedDataDomain, TypedDataField } from '@ethersproject/abstract-signer';
|
|
10
11
|
export type SwapRouterConfig = {
|
|
11
12
|
sender?: string;
|
|
@@ -40,6 +41,20 @@ export declare abstract class SwapRouter {
|
|
|
40
41
|
static INTERFACE: Interface;
|
|
41
42
|
static PROXY_INTERFACE: Interface;
|
|
42
43
|
static swapCallParameters(trades: RouterTrade<Currency, Currency, TradeType>, options: SwapOptions, bridgeOptions?: AcrossV4DepositV3Params[]): MethodParameters;
|
|
44
|
+
/**
|
|
45
|
+
* Encodes router-provided swap steps inside the SDK safety envelope.
|
|
46
|
+
*
|
|
47
|
+
* Routers own `swapSteps` (V2/V3/V4 swaps, plus any `WRAP_ETH` / `UNWRAP_WETH` required by the route).
|
|
48
|
+
* The SDK owns ingress, fees, final settlement, exact-output refund, and optional `safeMode`.
|
|
49
|
+
*
|
|
50
|
+
* Router contract: end with final output in `spec.routing.outputToken`; for `EXACT_OUTPUT`, unused input
|
|
51
|
+
* must end in `spec.routing.inputToken`. Don't include a top-level `SWEEP` — the SDK appends settlement,
|
|
52
|
+
* refund, and safeMode sweeps itself.
|
|
53
|
+
*
|
|
54
|
+
* Router custody with `payerIsUser = false` is deliberate for safety, even if it costs an extra command
|
|
55
|
+
* or transfer; the SDK does not infer route topology on behalf of routers.
|
|
56
|
+
*/
|
|
57
|
+
static encodeSwaps(spec: SwapSpecification, swapSteps: SwapStep[]): MethodParameters;
|
|
43
58
|
/**
|
|
44
59
|
* Generate EIP712 payload for signed execution (no signing performed)
|
|
45
60
|
* Decodes existing execute() calldata and prepares it for signing
|
|
@@ -80,8 +95,9 @@ export declare abstract class SwapRouter {
|
|
|
80
95
|
*/
|
|
81
96
|
private static encodePlan;
|
|
82
97
|
/**
|
|
83
|
-
*
|
|
98
|
+
* Wraps an inner UR plan in calldata targeting the SwapProxy contract.
|
|
84
99
|
* The proxy pulls ERC20 tokens from the user into the UR, then executes commands.
|
|
85
100
|
*/
|
|
86
101
|
private static encodeProxyPlan;
|
|
102
|
+
private static encodeProxyCall;
|
|
87
103
|
}
|
|
@@ -13,7 +13,14 @@ const uniswap_1 = require("./entities/actions/uniswap");
|
|
|
13
13
|
const routerCommands_1 = require("./utils/routerCommands");
|
|
14
14
|
const inputTokens_1 = require("./utils/inputTokens");
|
|
15
15
|
const constants_1 = require("./utils/constants");
|
|
16
|
+
const getCurrencyAddress_1 = require("./utils/getCurrencyAddress");
|
|
17
|
+
const numbers_1 = require("./utils/numbers");
|
|
18
|
+
const encodeSwapStep_1 = require("./utils/encodeSwapStep");
|
|
19
|
+
const computeEncodeSwapsAmounts_1 = require("./utils/computeEncodeSwapsAmounts");
|
|
20
|
+
const normalizeEncodeSwapsSpec_1 = require("./utils/normalizeEncodeSwapsSpec");
|
|
21
|
+
const validateEncodeSwaps_1 = require("./utils/validateEncodeSwaps");
|
|
16
22
|
const eip712_1 = require("./utils/eip712");
|
|
23
|
+
const DEFAULT_PROXY_DEADLINE_BUFFER_SECONDS = 30 * 60;
|
|
17
24
|
function isMint(options) {
|
|
18
25
|
return Object.keys(options).some((k) => k === 'recipient');
|
|
19
26
|
}
|
|
@@ -52,6 +59,73 @@ class SwapRouter {
|
|
|
52
59
|
deadline: options.deadlineOrPreviousBlockhash ? ethers_1.BigNumber.from(options.deadlineOrPreviousBlockhash) : undefined,
|
|
53
60
|
});
|
|
54
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Encodes router-provided swap steps inside the SDK safety envelope.
|
|
64
|
+
*
|
|
65
|
+
* Routers own `swapSteps` (V2/V3/V4 swaps, plus any `WRAP_ETH` / `UNWRAP_WETH` required by the route).
|
|
66
|
+
* The SDK owns ingress, fees, final settlement, exact-output refund, and optional `safeMode`.
|
|
67
|
+
*
|
|
68
|
+
* Router contract: end with final output in `spec.routing.outputToken`; for `EXACT_OUTPUT`, unused input
|
|
69
|
+
* must end in `spec.routing.inputToken`. Don't include a top-level `SWEEP` — the SDK appends settlement,
|
|
70
|
+
* refund, and safeMode sweeps itself.
|
|
71
|
+
*
|
|
72
|
+
* Router custody with `payerIsUser = false` is deliberate for safety, even if it costs an extra command
|
|
73
|
+
* or transfer; the SDK does not infer route topology on behalf of routers.
|
|
74
|
+
*/
|
|
75
|
+
static encodeSwaps(spec, swapSteps) {
|
|
76
|
+
var _a, _b;
|
|
77
|
+
const normalizedSpec = (0, normalizeEncodeSwapsSpec_1.normalizeEncodeSwapsSpec)(spec);
|
|
78
|
+
const planner = new routerCommands_1.RoutePlanner();
|
|
79
|
+
(0, validateEncodeSwaps_1.validateEncodeSwaps)(normalizedSpec, swapSteps);
|
|
80
|
+
const { exactOrMaxAmountIn, netMinOrExactAmountOut } = (0, computeEncodeSwapsAmounts_1.computeEncodeSwapsAmounts)(normalizedSpec);
|
|
81
|
+
const { routing: { inputToken, outputToken }, } = normalizedSpec;
|
|
82
|
+
// Ingress: pull funds into the router. Native input is paid as msg.value at the bottom
|
|
83
|
+
// instead of via Permit2; ApproveProxy ingress is handled by the outer wrapper at the end.
|
|
84
|
+
if (normalizedSpec.tokenTransferMode === uniswap_1.TokenTransferMode.Permit2) {
|
|
85
|
+
if (normalizedSpec.permit) {
|
|
86
|
+
(0, inputTokens_1.encodePermit)(planner, normalizedSpec.permit);
|
|
87
|
+
}
|
|
88
|
+
if (!inputToken.isNative) {
|
|
89
|
+
planner.addCommand(routerCommands_1.CommandType.PERMIT2_TRANSFER_FROM, [(0, getCurrencyAddress_1.getCurrencyAddress)(inputToken), constants_1.ROUTER_AS_RECIPIENT, exactOrMaxAmountIn], false, normalizedSpec.urVersion);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
for (const step of swapSteps) {
|
|
93
|
+
(0, encodeSwapStep_1.encodeSwapStep)(planner, step, normalizedSpec.urVersion);
|
|
94
|
+
}
|
|
95
|
+
// Fee deducted from gross output before final settlement.
|
|
96
|
+
// Portion uses 1e18 precision on >=v2.1.1 and bps on v2.0; flat is a plain TRANSFER.
|
|
97
|
+
if (((_a = normalizedSpec.fee) === null || _a === void 0 ? void 0 : _a.kind) === 'portion') {
|
|
98
|
+
const feeCommandType = (0, constants_1.isAtLeastV2_1_1)(normalizedSpec.urVersion)
|
|
99
|
+
? routerCommands_1.CommandType.PAY_PORTION_FULL_PRECISION
|
|
100
|
+
: routerCommands_1.CommandType.PAY_PORTION;
|
|
101
|
+
const encodedFee = (0, constants_1.isAtLeastV2_1_1)(normalizedSpec.urVersion)
|
|
102
|
+
? (0, numbers_1.encodeFee1e18)(normalizedSpec.fee.fee)
|
|
103
|
+
: (0, numbers_1.encodeFeeBips)(normalizedSpec.fee.fee);
|
|
104
|
+
planner.addCommand(feeCommandType, [(0, getCurrencyAddress_1.getCurrencyAddress)(outputToken), normalizedSpec.fee.recipient, encodedFee], false, normalizedSpec.urVersion);
|
|
105
|
+
}
|
|
106
|
+
else if (((_b = normalizedSpec.fee) === null || _b === void 0 ? void 0 : _b.kind) === 'flat') {
|
|
107
|
+
planner.addCommand(routerCommands_1.CommandType.TRANSFER, [(0, getCurrencyAddress_1.getCurrencyAddress)(outputToken), normalizedSpec.fee.recipient, normalizedSpec.fee.amount], false, normalizedSpec.urVersion);
|
|
108
|
+
}
|
|
109
|
+
// Assumes routers already normalized final gross output into `routing.outputToken`.
|
|
110
|
+
planner.addCommand(routerCommands_1.CommandType.SWEEP, [(0, getCurrencyAddress_1.getCurrencyAddress)(outputToken), normalizedSpec.recipient, netMinOrExactAmountOut], false, normalizedSpec.urVersion);
|
|
111
|
+
// Assumes routers already normalized unused input into `routing.inputToken`.
|
|
112
|
+
// Exact-output uses max input, so any unused slippage padding is refunded to the recipient.
|
|
113
|
+
if (normalizedSpec.tradeType === sdk_core_1.TradeType.EXACT_OUTPUT) {
|
|
114
|
+
planner.addCommand(routerCommands_1.CommandType.SWEEP, [(0, getCurrencyAddress_1.getCurrencyAddress)(inputToken), normalizedSpec.recipient, 0], false, normalizedSpec.urVersion);
|
|
115
|
+
}
|
|
116
|
+
// safeMode: zero-min ETH sweep recovers any native funds left on the router (dust or unintended msg.value)
|
|
117
|
+
if (normalizedSpec.safeMode) {
|
|
118
|
+
planner.addCommand(routerCommands_1.CommandType.SWEEP, [constants_1.ETH_ADDRESS, normalizedSpec.recipient, 0], false, normalizedSpec.urVersion);
|
|
119
|
+
}
|
|
120
|
+
// ApproveProxy wraps the inner UR plan in an outer proxy.execute() that handles ingress upstream.
|
|
121
|
+
if (normalizedSpec.tokenTransferMode === uniswap_1.TokenTransferMode.ApproveProxy) {
|
|
122
|
+
return SwapRouter.encodeProxyCall(planner, (0, getCurrencyAddress_1.getCurrencyAddress)(inputToken), exactOrMaxAmountIn, normalizedSpec.chainId, normalizedSpec.urVersion, normalizedSpec.deadline);
|
|
123
|
+
}
|
|
124
|
+
// Native input pays via msg.value; ERC20 input is already in the router via Permit2.
|
|
125
|
+
return SwapRouter.encodePlan(planner, inputToken.isNative ? exactOrMaxAmountIn : ethers_1.BigNumber.from(0), {
|
|
126
|
+
deadline: normalizedSpec.deadline ? ethers_1.BigNumber.from(normalizedSpec.deadline) : undefined,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
55
129
|
/**
|
|
56
130
|
* Generate EIP712 payload for signed execution (no signing performed)
|
|
57
131
|
* Decodes existing execute() calldata and prepares it for signing
|
|
@@ -232,25 +306,26 @@ class SwapRouter {
|
|
|
232
306
|
return { calldata, value: nativeCurrencyValue.toHexString() };
|
|
233
307
|
}
|
|
234
308
|
/**
|
|
235
|
-
*
|
|
309
|
+
* Wraps an inner UR plan in calldata targeting the SwapProxy contract.
|
|
236
310
|
* The proxy pulls ERC20 tokens from the user into the UR, then executes commands.
|
|
237
311
|
*/
|
|
238
312
|
static encodeProxyPlan(planner, trade, options) {
|
|
239
313
|
var _a;
|
|
314
|
+
return SwapRouter.encodeProxyCall(planner, trade.trade.inputAmount.currency.address, ethers_1.BigNumber.from(trade.trade.maximumAmountIn(options.slippageTolerance).quotient.toString()), options.chainId, (_a = options.urVersion) !== null && _a !== void 0 ? _a : constants_1.UniversalRouterVersion.V2_0, options.deadlineOrPreviousBlockhash ? ethers_1.BigNumber.from(options.deadlineOrPreviousBlockhash) : undefined);
|
|
315
|
+
}
|
|
316
|
+
static encodeProxyCall(planner, inputToken, inputAmount, chainId, urVersion, deadline) {
|
|
240
317
|
const { commands, inputs } = planner;
|
|
241
|
-
const routerAddress = (0, constants_1.UNIVERSAL_ROUTER_ADDRESS)(
|
|
242
|
-
const
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
? ethers_1.BigNumber.from(options.deadlineOrPreviousBlockhash)
|
|
246
|
-
: ethers_1.BigNumber.from(Math.floor(Date.now() / 1000) + 1800); // 30 min default
|
|
318
|
+
const routerAddress = (0, constants_1.UNIVERSAL_ROUTER_ADDRESS)(urVersion, chainId);
|
|
319
|
+
const resolvedDeadline = deadline
|
|
320
|
+
? ethers_1.BigNumber.from(deadline)
|
|
321
|
+
: ethers_1.BigNumber.from(Math.floor(Date.now() / 1000) + DEFAULT_PROXY_DEADLINE_BUFFER_SECONDS); // 30 min default
|
|
247
322
|
const calldata = SwapRouter.PROXY_INTERFACE.encodeFunctionData('execute', [
|
|
248
323
|
routerAddress,
|
|
249
324
|
inputToken,
|
|
250
325
|
inputAmount,
|
|
251
326
|
commands,
|
|
252
327
|
inputs,
|
|
253
|
-
|
|
328
|
+
resolvedDeadline,
|
|
254
329
|
]);
|
|
255
330
|
return { calldata, value: ethers_1.BigNumber.from(0).toHexString() };
|
|
256
331
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swapRouter.js","sourceRoot":"","sources":["../../../src/swapRouter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"swapRouter.js","sourceRoot":"","sources":["../../../src/swapRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { BigNumberish } from 'ethers';
|
|
2
|
+
import { Currency, CurrencyAmount, Percent, TradeType } from '@uniswap/sdk-core';
|
|
3
|
+
import { type PathKey, type PoolKey } from '@uniswap/v4-sdk';
|
|
4
|
+
import { TokenTransferMode } from '../entities/actions/uniswap';
|
|
5
|
+
import { Permit2Permit } from '../utils/inputTokens';
|
|
6
|
+
import { UniversalRouterVersion } from '../utils/constants';
|
|
7
|
+
export type { PathKey, PoolKey };
|
|
8
|
+
export type Fee = {
|
|
9
|
+
kind: 'portion';
|
|
10
|
+
recipient: string;
|
|
11
|
+
fee: Percent;
|
|
12
|
+
} | {
|
|
13
|
+
kind: 'flat';
|
|
14
|
+
recipient: string;
|
|
15
|
+
amount: BigNumberish;
|
|
16
|
+
};
|
|
17
|
+
export type SwapSpecification = {
|
|
18
|
+
tradeType: TradeType;
|
|
19
|
+
routing: {
|
|
20
|
+
inputToken: Currency;
|
|
21
|
+
outputToken: Currency;
|
|
22
|
+
amount: CurrencyAmount<Currency>;
|
|
23
|
+
quote: CurrencyAmount<Currency>;
|
|
24
|
+
};
|
|
25
|
+
slippageTolerance: Percent;
|
|
26
|
+
recipient?: string;
|
|
27
|
+
fee?: Fee;
|
|
28
|
+
tokenTransferMode?: TokenTransferMode;
|
|
29
|
+
permit?: Permit2Permit;
|
|
30
|
+
chainId?: number;
|
|
31
|
+
deadline?: BigNumberish;
|
|
32
|
+
urVersion?: UniversalRouterVersion;
|
|
33
|
+
safeMode?: boolean;
|
|
34
|
+
};
|
|
35
|
+
export type NormalizedSwapSpecification = Omit<SwapSpecification, 'recipient' | 'tokenTransferMode' | 'urVersion' | 'safeMode'> & {
|
|
36
|
+
recipient: string;
|
|
37
|
+
tokenTransferMode: TokenTransferMode;
|
|
38
|
+
urVersion: UniversalRouterVersion;
|
|
39
|
+
safeMode: boolean;
|
|
40
|
+
};
|
|
41
|
+
export type V2SwapExactIn = {
|
|
42
|
+
type: 'V2_SWAP_EXACT_IN';
|
|
43
|
+
recipient: string;
|
|
44
|
+
amountIn: BigNumberish;
|
|
45
|
+
amountOutMin: BigNumberish;
|
|
46
|
+
path: string[];
|
|
47
|
+
minHopPriceX36?: BigNumberish[];
|
|
48
|
+
};
|
|
49
|
+
export type V2SwapExactOut = {
|
|
50
|
+
type: 'V2_SWAP_EXACT_OUT';
|
|
51
|
+
recipient: string;
|
|
52
|
+
amountOut: BigNumberish;
|
|
53
|
+
amountInMax: BigNumberish;
|
|
54
|
+
path: string[];
|
|
55
|
+
minHopPriceX36?: BigNumberish[];
|
|
56
|
+
};
|
|
57
|
+
export type V3SwapExactIn = {
|
|
58
|
+
type: 'V3_SWAP_EXACT_IN';
|
|
59
|
+
recipient: string;
|
|
60
|
+
amountIn: BigNumberish;
|
|
61
|
+
amountOutMin: BigNumberish;
|
|
62
|
+
path: string;
|
|
63
|
+
minHopPriceX36?: BigNumberish[];
|
|
64
|
+
};
|
|
65
|
+
export type V3SwapExactOut = {
|
|
66
|
+
type: 'V3_SWAP_EXACT_OUT';
|
|
67
|
+
recipient: string;
|
|
68
|
+
amountOut: BigNumberish;
|
|
69
|
+
amountInMax: BigNumberish;
|
|
70
|
+
path: string;
|
|
71
|
+
minHopPriceX36?: BigNumberish[];
|
|
72
|
+
};
|
|
73
|
+
export type V4Swap = {
|
|
74
|
+
type: 'V4_SWAP';
|
|
75
|
+
v4Actions: V4Action[];
|
|
76
|
+
};
|
|
77
|
+
export type WrapEth = {
|
|
78
|
+
type: 'WRAP_ETH';
|
|
79
|
+
recipient: string;
|
|
80
|
+
amount: BigNumberish;
|
|
81
|
+
};
|
|
82
|
+
export type UnwrapWeth = {
|
|
83
|
+
type: 'UNWRAP_WETH';
|
|
84
|
+
recipient: string;
|
|
85
|
+
amountMin: BigNumberish;
|
|
86
|
+
};
|
|
87
|
+
export type SwapStep = V2SwapExactIn | V2SwapExactOut | V3SwapExactIn | V3SwapExactOut | V4Swap | WrapEth | UnwrapWeth;
|
|
88
|
+
export type V4SwapExactIn = {
|
|
89
|
+
action: 'SWAP_EXACT_IN';
|
|
90
|
+
currencyIn: string;
|
|
91
|
+
path: PathKey[];
|
|
92
|
+
amountIn: BigNumberish;
|
|
93
|
+
amountOutMinimum: BigNumberish;
|
|
94
|
+
minHopPriceX36?: BigNumberish[];
|
|
95
|
+
};
|
|
96
|
+
export type V4SwapExactInSingle = {
|
|
97
|
+
action: 'SWAP_EXACT_IN_SINGLE';
|
|
98
|
+
poolKey: PoolKey;
|
|
99
|
+
zeroForOne: boolean;
|
|
100
|
+
amountIn: BigNumberish;
|
|
101
|
+
amountOutMinimum: BigNumberish;
|
|
102
|
+
minHopPriceX36?: BigNumberish;
|
|
103
|
+
hookData: string;
|
|
104
|
+
};
|
|
105
|
+
export type V4SwapExactOut = {
|
|
106
|
+
action: 'SWAP_EXACT_OUT';
|
|
107
|
+
currencyOut: string;
|
|
108
|
+
path: PathKey[];
|
|
109
|
+
amountOut: BigNumberish;
|
|
110
|
+
amountInMaximum: BigNumberish;
|
|
111
|
+
minHopPriceX36?: BigNumberish[];
|
|
112
|
+
};
|
|
113
|
+
export type V4SwapExactOutSingle = {
|
|
114
|
+
action: 'SWAP_EXACT_OUT_SINGLE';
|
|
115
|
+
poolKey: PoolKey;
|
|
116
|
+
zeroForOne: boolean;
|
|
117
|
+
amountOut: BigNumberish;
|
|
118
|
+
amountInMaximum: BigNumberish;
|
|
119
|
+
minHopPriceX36?: BigNumberish;
|
|
120
|
+
hookData: string;
|
|
121
|
+
};
|
|
122
|
+
export type V4Settle = {
|
|
123
|
+
action: 'SETTLE';
|
|
124
|
+
currency: string;
|
|
125
|
+
amount: BigNumberish;
|
|
126
|
+
};
|
|
127
|
+
export type V4SettleAll = {
|
|
128
|
+
action: 'SETTLE_ALL';
|
|
129
|
+
currency: string;
|
|
130
|
+
maxAmount: BigNumberish;
|
|
131
|
+
};
|
|
132
|
+
export type V4Take = {
|
|
133
|
+
action: 'TAKE';
|
|
134
|
+
currency: string;
|
|
135
|
+
recipient: string;
|
|
136
|
+
amount: BigNumberish;
|
|
137
|
+
};
|
|
138
|
+
export type V4TakeAll = {
|
|
139
|
+
action: 'TAKE_ALL';
|
|
140
|
+
currency: string;
|
|
141
|
+
minAmount: BigNumberish;
|
|
142
|
+
};
|
|
143
|
+
export type V4TakePortion = {
|
|
144
|
+
action: 'TAKE_PORTION';
|
|
145
|
+
currency: string;
|
|
146
|
+
recipient: string;
|
|
147
|
+
bips: BigNumberish;
|
|
148
|
+
};
|
|
149
|
+
export type V4Action = V4SwapExactIn | V4SwapExactInSingle | V4SwapExactOut | V4SwapExactOutSingle | V4Settle | V4SettleAll | V4Take | V4TakeAll | V4TakePortion;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encodeSwaps.js","sourceRoot":"","sources":["../../../../src/types/encodeSwaps.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BigNumber } from 'ethers';
|
|
2
|
+
import { NormalizedSwapSpecification } from '../types/encodeSwaps';
|
|
3
|
+
export type EncodeSwapsAmounts = {
|
|
4
|
+
exactOrMaxAmountIn: BigNumber;
|
|
5
|
+
grossMinOrExactAmountOut: BigNumber;
|
|
6
|
+
netMinOrExactAmountOut: BigNumber;
|
|
7
|
+
};
|
|
8
|
+
export declare function computeEncodeSwapsAmounts(spec: NormalizedSwapSpecification): EncodeSwapsAmounts;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.computeEncodeSwapsAmounts = void 0;
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
5
|
+
const sdk_core_1 = require("@uniswap/sdk-core");
|
|
6
|
+
const constants_1 = require("./constants");
|
|
7
|
+
const numbers_1 = require("./numbers");
|
|
8
|
+
// Slippage is applied to the quote: scaled down to a floor for exact-input output,
|
|
9
|
+
// scaled up to a ceiling for exact-output input. The unscaled side is the user's exact value.
|
|
10
|
+
// Portion fees pair with exact-input (1e18 precision on >=v2.1.1, bps on v2.0); flat fees pair with exact-output.
|
|
11
|
+
function computeEncodeSwapsAmounts(spec) {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
const routingAmount = ethers_1.BigNumber.from(spec.routing.amount.quotient.toString());
|
|
14
|
+
const routingQuote = ethers_1.BigNumber.from(spec.routing.quote.quotient.toString());
|
|
15
|
+
const slippageNumerator = ethers_1.BigNumber.from(spec.slippageTolerance.numerator.toString());
|
|
16
|
+
const slippageDenominator = ethers_1.BigNumber.from(spec.slippageTolerance.denominator.toString());
|
|
17
|
+
if (spec.tradeType === sdk_core_1.TradeType.EXACT_INPUT) {
|
|
18
|
+
const grossMinOrExactAmountOut = routingQuote
|
|
19
|
+
.mul(slippageDenominator)
|
|
20
|
+
.div(slippageDenominator.add(slippageNumerator));
|
|
21
|
+
if (((_a = spec.fee) === null || _a === void 0 ? void 0 : _a.kind) === 'portion') {
|
|
22
|
+
const feeAmount = (0, constants_1.isAtLeastV2_1_1)(spec.urVersion)
|
|
23
|
+
? grossMinOrExactAmountOut.mul(ethers_1.BigNumber.from((0, numbers_1.encodeFee1e18)(spec.fee.fee))).div(ethers_1.BigNumber.from(10).pow(18))
|
|
24
|
+
: grossMinOrExactAmountOut.mul(ethers_1.BigNumber.from((0, numbers_1.encodeFeeBips)(spec.fee.fee))).div(10000);
|
|
25
|
+
return {
|
|
26
|
+
exactOrMaxAmountIn: routingAmount,
|
|
27
|
+
grossMinOrExactAmountOut,
|
|
28
|
+
netMinOrExactAmountOut: grossMinOrExactAmountOut.sub(feeAmount),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
exactOrMaxAmountIn: routingAmount,
|
|
33
|
+
grossMinOrExactAmountOut,
|
|
34
|
+
netMinOrExactAmountOut: grossMinOrExactAmountOut,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const exactOrMaxAmountIn = routingQuote.mul(slippageDenominator.add(slippageNumerator)).div(slippageDenominator);
|
|
38
|
+
const grossMinOrExactAmountOut = routingAmount;
|
|
39
|
+
const netMinOrExactAmountOut = ((_b = spec.fee) === null || _b === void 0 ? void 0 : _b.kind) === 'flat' ? grossMinOrExactAmountOut.sub(ethers_1.BigNumber.from(spec.fee.amount)) : grossMinOrExactAmountOut;
|
|
40
|
+
return {
|
|
41
|
+
exactOrMaxAmountIn,
|
|
42
|
+
grossMinOrExactAmountOut,
|
|
43
|
+
netMinOrExactAmountOut,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
exports.computeEncodeSwapsAmounts = computeEncodeSwapsAmounts;
|
|
47
|
+
//# sourceMappingURL=computeEncodeSwapsAmounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeEncodeSwapsAmounts.js","sourceRoot":"","sources":["../../../../src/utils/computeEncodeSwapsAmounts.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAClC,gDAA6C;AAC7C,2CAA6C;AAC7C,uCAAwD;AAWxD,mFAAmF;AACnF,8FAA8F;AAC9F,kHAAkH;AAClH,SAAgB,yBAAyB,CAAC,IAAiC;;IACzE,MAAM,aAAa,GAAG,kBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC7E,MAAM,YAAY,GAAG,kBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC3E,MAAM,iBAAiB,GAAG,kBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;IACrF,MAAM,mBAAmB,GAAG,kBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEzF,IAAI,IAAI,CAAC,SAAS,KAAK,oBAAS,CAAC,WAAW,EAAE;QAC5C,MAAM,wBAAwB,GAAG,YAAY;aAC1C,GAAG,CAAC,mBAAmB,CAAC;aACxB,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAA;QAElD,IAAI,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,MAAK,SAAS,EAAE;YAChC,MAAM,SAAS,GAAG,IAAA,2BAAe,EAAC,IAAI,CAAC,SAAS,CAAC;gBAC/C,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,kBAAS,CAAC,IAAI,CAAC,IAAA,uBAAa,EAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC3G,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,kBAAS,CAAC,IAAI,CAAC,IAAA,uBAAa,EAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAM,CAAC,CAAA;YAEzF,OAAO;gBACL,kBAAkB,EAAE,aAAa;gBACjC,wBAAwB;gBACxB,sBAAsB,EAAE,wBAAwB,CAAC,GAAG,CAAC,SAAS,CAAC;aAChE,CAAA;SACF;QAED,OAAO;YACL,kBAAkB,EAAE,aAAa;YACjC,wBAAwB;YACxB,sBAAsB,EAAE,wBAAwB;SACjD,CAAA;KACF;IAED,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAChH,MAAM,wBAAwB,GAAG,aAAa,CAAA;IAC9C,MAAM,sBAAsB,GAC1B,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,MAAK,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,kBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAA;IAEtH,OAAO;QACL,kBAAkB;QAClB,wBAAwB;QACxB,sBAAsB;KACvB,CAAA;AACH,CAAC;AAxCD,8DAwCC"}
|
|
@@ -488,6 +488,21 @@ exports.CHAIN_CONFIGS = {
|
|
|
488
488
|
},
|
|
489
489
|
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS,
|
|
490
490
|
},
|
|
491
|
+
// megaeth
|
|
492
|
+
[4326]: {
|
|
493
|
+
weth: '0x4200000000000000000000000000000000000006',
|
|
494
|
+
routerConfigs: {
|
|
495
|
+
[UniversalRouterVersion.V2_0]: {
|
|
496
|
+
address: '0x48fd03529d2a91be835f07f6b72f53b4aad6093d',
|
|
497
|
+
creationBlock: 7009661,
|
|
498
|
+
},
|
|
499
|
+
[UniversalRouterVersion.V2_1_1]: {
|
|
500
|
+
address: '0x47837eb80db5908eabba9105626d9b348bea7b02',
|
|
501
|
+
creationBlock: 7009661,
|
|
502
|
+
},
|
|
503
|
+
},
|
|
504
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS,
|
|
505
|
+
},
|
|
491
506
|
// xlayer
|
|
492
507
|
[196]: {
|
|
493
508
|
weth: '0xe538905cf8410324e03A5A23C1c177a474D59b2b',
|