@uniswap/universal-router-sdk 5.9.0 → 5.11.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 +12 -2
- package/dist/cjs/src/entities/actions/uniswap.js +12 -1
- package/dist/cjs/src/entities/actions/uniswap.js.map +1 -1
- package/dist/cjs/src/index.d.ts +2 -0
- package/dist/cjs/src/index.js +3 -1
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/swapRouter.d.ts +16 -3
- package/dist/cjs/src/swapRouter.js +28 -5
- package/dist/cjs/src/swapRouter.js.map +1 -1
- package/dist/cjs/src/types/encodeSwaps.d.ts +14 -1
- package/dist/cjs/src/utils/directTransfers.d.ts +14 -0
- package/dist/cjs/src/utils/directTransfers.js +264 -0
- package/dist/cjs/src/utils/directTransfers.js.map +1 -0
- package/dist/cjs/src/utils/encodeSwapStep.js +5 -5
- package/dist/cjs/src/utils/encodeSwapStep.js.map +1 -1
- package/dist/cjs/src/utils/encodeV4Action.js +2 -2
- package/dist/cjs/src/utils/encodeV4Action.js.map +1 -1
- package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.js +3 -2
- package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.js.map +1 -1
- package/dist/cjs/src/utils/validateEncodeSwaps.js +86 -24
- package/dist/cjs/src/utils/validateEncodeSwaps.js.map +1 -1
- package/dist/esm/src/entities/actions/uniswap.js +11 -1
- package/dist/esm/src/entities/actions/uniswap.js.map +1 -1
- package/dist/esm/src/index.d.ts +2 -0
- package/dist/esm/src/index.js +1 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/swapRouter.d.ts +16 -3
- package/dist/esm/src/swapRouter.js +28 -5
- package/dist/esm/src/swapRouter.js.map +1 -1
- package/dist/esm/src/types/encodeSwaps.d.ts +14 -1
- package/dist/esm/src/utils/directTransfers.d.ts +14 -0
- package/dist/esm/src/utils/directTransfers.js +253 -0
- package/dist/esm/src/utils/directTransfers.js.map +1 -0
- package/dist/esm/src/utils/encodeSwapStep.js +5 -5
- package/dist/esm/src/utils/encodeSwapStep.js.map +1 -1
- package/dist/esm/src/utils/encodeV4Action.js +2 -2
- package/dist/esm/src/utils/encodeV4Action.js.map +1 -1
- package/dist/esm/src/utils/normalizeEncodeSwapsSpec.js +3 -2
- package/dist/esm/src/utils/normalizeEncodeSwapsSpec.js.map +1 -1
- package/dist/esm/src/utils/validateEncodeSwaps.js +86 -24
- package/dist/esm/src/utils/validateEncodeSwaps.js.map +1 -1
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/swapRouter.d.ts +16 -3
- package/dist/types/src/types/encodeSwaps.d.ts +14 -1
- package/dist/types/src/utils/directTransfers.d.ts +14 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directTransfers.js","sourceRoot":"","sources":["../../../../src/utils/directTransfers.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,34 +3,34 @@ import { isAtLeastV2_1_1 } from './constants';
|
|
|
3
3
|
import { CommandType } from './routerCommands';
|
|
4
4
|
import { encodeV4Action } from './encodeV4Action';
|
|
5
5
|
import { toV4URVersion } from './toV4URVersion';
|
|
6
|
-
//
|
|
6
|
+
// payerIsUser defaults to false (router custody); validateEncodeSwaps gates when true is allowed
|
|
7
7
|
export function encodeSwapStep(planner, step, urVersion) {
|
|
8
8
|
var _a, _b, _c, _d;
|
|
9
9
|
const useV2_1_1 = isAtLeastV2_1_1(urVersion);
|
|
10
10
|
switch (step.type) {
|
|
11
11
|
case 'V2_SWAP_EXACT_IN': {
|
|
12
|
-
const params = [step.recipient, step.amountIn, step.amountOutMin, step.path,
|
|
12
|
+
const params = [step.recipient, step.amountIn, step.amountOutMin, step.path, step.payerIsUser === true];
|
|
13
13
|
if (useV2_1_1)
|
|
14
14
|
params.push((_a = step.minHopPriceX36) !== null && _a !== void 0 ? _a : []);
|
|
15
15
|
planner.addCommand(CommandType.V2_SWAP_EXACT_IN, params, false, urVersion);
|
|
16
16
|
return;
|
|
17
17
|
}
|
|
18
18
|
case 'V2_SWAP_EXACT_OUT': {
|
|
19
|
-
const params = [step.recipient, step.amountOut, step.amountInMax, step.path,
|
|
19
|
+
const params = [step.recipient, step.amountOut, step.amountInMax, step.path, step.payerIsUser === true];
|
|
20
20
|
if (useV2_1_1)
|
|
21
21
|
params.push((_b = step.minHopPriceX36) !== null && _b !== void 0 ? _b : []);
|
|
22
22
|
planner.addCommand(CommandType.V2_SWAP_EXACT_OUT, params, false, urVersion);
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
25
|
case 'V3_SWAP_EXACT_IN': {
|
|
26
|
-
const params = [step.recipient, step.amountIn, step.amountOutMin, step.path,
|
|
26
|
+
const params = [step.recipient, step.amountIn, step.amountOutMin, step.path, step.payerIsUser === true];
|
|
27
27
|
if (useV2_1_1)
|
|
28
28
|
params.push((_c = step.minHopPriceX36) !== null && _c !== void 0 ? _c : []);
|
|
29
29
|
planner.addCommand(CommandType.V3_SWAP_EXACT_IN, params, false, urVersion);
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
32
|
case 'V3_SWAP_EXACT_OUT': {
|
|
33
|
-
const params = [step.recipient, step.amountOut, step.amountInMax, step.path,
|
|
33
|
+
const params = [step.recipient, step.amountOut, step.amountInMax, step.path, step.payerIsUser === true];
|
|
34
34
|
if (useV2_1_1)
|
|
35
35
|
params.push((_d = step.minHopPriceX36) !== null && _d !== void 0 ? _d : []);
|
|
36
36
|
planner.addCommand(CommandType.V3_SWAP_EXACT_OUT, params, false, urVersion);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encodeSwapStep.js","sourceRoot":"","sources":["../../../../src/utils/encodeSwapStep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAA0B,eAAe,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAA;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,
|
|
1
|
+
{"version":3,"file":"encodeSwapStep.js","sourceRoot":"","sources":["../../../../src/utils/encodeSwapStep.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,8 +63,8 @@ export function encodeV4Action(v4Action, urVersion) {
|
|
|
63
63
|
],
|
|
64
64
|
};
|
|
65
65
|
case 'SETTLE':
|
|
66
|
-
// payerIsUser
|
|
67
|
-
return { action, params: [v4Action.currency, v4Action.amount,
|
|
66
|
+
// payerIsUser defaults to false (router custody); validateEncodeSwaps gates when true is allowed
|
|
67
|
+
return { action, params: [v4Action.currency, v4Action.amount, v4Action.payerIsUser === true] };
|
|
68
68
|
case 'SETTLE_ALL':
|
|
69
69
|
return { action, params: [v4Action.currency, v4Action.maxAmount] };
|
|
70
70
|
case 'TAKE':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encodeV4Action.js","sourceRoot":"","sources":["../../../../src/utils/encodeV4Action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAA0B,eAAe,EAAE,MAAM,aAAa,CAAA;AAGrE,MAAM,mBAAmB,GAA+B,MAAM,CAAC,WAAW,CACxE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAChC,CAAA;AAE/B,MAAM,UAAU,cAAc,CAC5B,QAAkB,EAClB,SAAkC;;IAElC,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACnD,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAElF,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;IAE5C,QAAQ,QAAQ,CAAC,MAAM,EAAE;QACvB,KAAK,eAAe;YAClB,OAAO;gBACL,MAAM;gBACN,MAAM,EAAE;oBACN;wBACE,UAAU,EAAE,QAAQ,CAAC,UAAU;wBAC/B,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,GAAG,CAAC,SAAS,IAAI,EAAE,cAAc,EAAE,MAAA,QAAQ,CAAC,cAAc,mCAAI,EAAE,EAAE,CAAC;wBACnE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;qBAC5C;iBACF;aACF,CAAA;QACH,KAAK,sBAAsB;YACzB,OAAO;gBACL,MAAM;gBACN,MAAM,EAAE;oBACN;wBACE,OAAO,EAAE,QAAQ,CAAC,OAAO;wBACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;wBAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;wBAC3C,GAAG,CAAC,SAAS,IAAI,EAAE,cAAc,EAAE,MAAA,QAAQ,CAAC,cAAc,mCAAI,CAAC,EAAE,CAAC;wBAClE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;qBAC5B;iBACF;aACF,CAAA;QACH,KAAK,gBAAgB;YACnB,OAAO;gBACL,MAAM;gBACN,MAAM,EAAE;oBACN;wBACE,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,GAAG,CAAC,SAAS,IAAI,EAAE,cAAc,EAAE,MAAA,QAAQ,CAAC,cAAc,mCAAI,EAAE,EAAE,CAAC;wBACnE,SAAS,EAAE,QAAQ,CAAC,SAAS;wBAC7B,eAAe,EAAE,QAAQ,CAAC,eAAe;qBAC1C;iBACF;aACF,CAAA;QACH,KAAK,uBAAuB;YAC1B,OAAO;gBACL,MAAM;gBACN,MAAM,EAAE;oBACN;wBACE,OAAO,EAAE,QAAQ,CAAC,OAAO;wBACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;wBAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;wBAC7B,eAAe,EAAE,QAAQ,CAAC,eAAe;wBACzC,GAAG,CAAC,SAAS,IAAI,EAAE,cAAc,EAAE,MAAA,QAAQ,CAAC,cAAc,mCAAI,CAAC,EAAE,CAAC;wBAClE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;qBAC5B;iBACF;aACF,CAAA;QACH,KAAK,QAAQ;YACX,
|
|
1
|
+
{"version":3,"file":"encodeV4Action.js","sourceRoot":"","sources":["../../../../src/utils/encodeV4Action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { TokenTransferMode } from '../entities/actions/uniswap';
|
|
2
2
|
import { SENDER_AS_RECIPIENT, UniversalRouterVersion } from './constants';
|
|
3
|
-
// Fills the
|
|
3
|
+
// Fills the five optional fields that `validateEncodeSwaps` and `computeEncodeSwapsAmounts` require.
|
|
4
4
|
export function normalizeEncodeSwapsSpec(spec) {
|
|
5
|
-
var _a, _b, _c, _d;
|
|
5
|
+
var _a, _b, _c, _d, _e;
|
|
6
6
|
return {
|
|
7
7
|
...spec,
|
|
8
8
|
recipient: (_a = spec.recipient) !== null && _a !== void 0 ? _a : SENDER_AS_RECIPIENT,
|
|
9
9
|
tokenTransferMode: (_b = spec.tokenTransferMode) !== null && _b !== void 0 ? _b : TokenTransferMode.Permit2,
|
|
10
10
|
urVersion: (_c = spec.urVersion) !== null && _c !== void 0 ? _c : UniversalRouterVersion.V2_0,
|
|
11
11
|
safeMode: (_d = spec.safeMode) !== null && _d !== void 0 ? _d : false,
|
|
12
|
+
allowDirectTransfers: (_e = spec.allowDirectTransfers) !== null && _e !== void 0 ? _e : false,
|
|
12
13
|
};
|
|
13
14
|
}
|
|
14
15
|
//# sourceMappingURL=normalizeEncodeSwapsSpec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeEncodeSwapsSpec.js","sourceRoot":"","sources":["../../../../src/utils/normalizeEncodeSwapsSpec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAE/D,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEzE,qGAAqG;AACrG,MAAM,UAAU,wBAAwB,CAAC,IAAuB;;IAC9D,OAAO;QACL,GAAG,IAAI;QACP,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,mBAAmB;QAChD,iBAAiB,EAAE,MAAA,IAAI,CAAC,iBAAiB,mCAAI,iBAAiB,CAAC,OAAO;QACtE,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,sBAAsB,CAAC,IAAI;QACxD,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,KAAK;
|
|
1
|
+
{"version":3,"file":"normalizeEncodeSwapsSpec.js","sourceRoot":"","sources":["../../../../src/utils/normalizeEncodeSwapsSpec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAE/D,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEzE,qGAAqG;AACrG,MAAM,UAAU,wBAAwB,CAAC,IAAuB;;IAC9D,OAAO;QACL,GAAG,IAAI;QACP,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,mBAAmB;QAChD,iBAAiB,EAAE,MAAA,IAAI,CAAC,iBAAiB,mCAAI,iBAAiB,CAAC,OAAO;QACtE,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,sBAAsB,CAAC,IAAI;QACxD,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,KAAK;QAChC,oBAAoB,EAAE,MAAA,IAAI,CAAC,oBAAoB,mCAAI,KAAK;KACzD,CAAA;AACH,CAAC"}
|
|
@@ -2,20 +2,10 @@ import { BigNumber } from 'ethers';
|
|
|
2
2
|
import invariant from 'tiny-invariant';
|
|
3
3
|
import { TradeType } from '@uniswap/sdk-core';
|
|
4
4
|
import { TokenTransferMode } from '../entities/actions/uniswap';
|
|
5
|
-
import { ROUTER_AS_RECIPIENT, SENDER_AS_RECIPIENT, UniversalRouterVersion, ZERO_ADDRESS } from './constants';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if (!path.startsWith('0x'))
|
|
10
|
-
return undefined;
|
|
11
|
-
const byteLength = (path.length - 2) / 2;
|
|
12
|
-
if (byteLength < 43)
|
|
13
|
-
return undefined;
|
|
14
|
-
const variableSegmentLength = byteLength - 20;
|
|
15
|
-
if (variableSegmentLength < 23 || variableSegmentLength % 23 !== 0)
|
|
16
|
-
return undefined;
|
|
17
|
-
return variableSegmentLength / 23;
|
|
18
|
-
}
|
|
5
|
+
import { MAX_UINT160, ROUTER_AS_RECIPIENT, SENDER_AS_RECIPIENT, UniversalRouterVersion, ZERO_ADDRESS, } from './constants';
|
|
6
|
+
import { getCurrencyAddress } from './getCurrencyAddress';
|
|
7
|
+
import { getV3HopCount, hasUserPaidFlag, stepUserPaidPulls } from './directTransfers';
|
|
8
|
+
import { computeEncodeSwapsAmounts } from './computeEncodeSwapsAmounts';
|
|
19
9
|
function hasV4MinHopPriceX36(action) {
|
|
20
10
|
switch (action.action) {
|
|
21
11
|
case 'SWAP_EXACT_IN':
|
|
@@ -42,22 +32,52 @@ function validateV4HopCounts(actions) {
|
|
|
42
32
|
function assertRouterRecipient(recipient) {
|
|
43
33
|
invariant(recipient === ROUTER_AS_RECIPIENT, 'STEP_RECIPIENT_MUST_BE_ROUTER');
|
|
44
34
|
}
|
|
45
|
-
|
|
46
|
-
|
|
35
|
+
// `routerOnlyError` is the surface's legacy flag-off code (steps vs v4 actions)
|
|
36
|
+
function checkRecipient(spec, recipient, routerOnlyError) {
|
|
37
|
+
var _a;
|
|
38
|
+
invariant(typeof recipient === 'string', routerOnlyError);
|
|
39
|
+
if (recipient === ROUTER_AS_RECIPIENT)
|
|
40
|
+
return;
|
|
41
|
+
invariant(spec.allowDirectTransfers, routerOnlyError);
|
|
42
|
+
invariant(((_a = spec.fee) === null || _a === void 0 ? void 0 : _a.kind) !== 'portion', 'PORTION_FEE_REQUIRES_ROUTER_CUSTODY');
|
|
43
|
+
invariant(recipient.toLowerCase() === spec.recipient.toLowerCase(), 'STEP_RECIPIENT_NOT_ALLOWED');
|
|
47
44
|
}
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
function validateV4Recipients(actions, spec) {
|
|
46
|
+
var _a;
|
|
50
47
|
for (const action of actions) {
|
|
51
48
|
switch (action.action) {
|
|
52
49
|
case 'TAKE':
|
|
53
50
|
case 'TAKE_PORTION':
|
|
54
|
-
|
|
51
|
+
// fees are sdk-authored (the envelope's PAY_PORTION); a step-level TAKE_PORTION never pays the fee recipient
|
|
52
|
+
checkRecipient(spec, action.recipient, 'V4_ACTION_RECIPIENT_MUST_BE_ROUTER');
|
|
53
|
+
break;
|
|
54
|
+
case 'TAKE_ALL':
|
|
55
|
+
// TAKE_ALL pays msgSender on-chain; any other spec recipient would be the
|
|
56
|
+
// wrong payee while still reducing their sweep floor.
|
|
57
|
+
invariant(spec.allowDirectTransfers, 'TAKE_ALL_REQUIRES_DIRECT_TRANSFERS');
|
|
58
|
+
invariant(((_a = spec.fee) === null || _a === void 0 ? void 0 : _a.kind) !== 'portion', 'PORTION_FEE_REQUIRES_ROUTER_CUSTODY');
|
|
59
|
+
// strict equality: the all-numeric sentinel has no checksum variant; anything else fails closed
|
|
60
|
+
invariant(spec.recipient === SENDER_AS_RECIPIENT, 'TAKE_ALL_REQUIRES_SENDER_RECIPIENT');
|
|
55
61
|
break;
|
|
56
62
|
default:
|
|
57
63
|
break;
|
|
58
64
|
}
|
|
59
65
|
}
|
|
60
66
|
}
|
|
67
|
+
const HEX_BYTES = /^0x([0-9a-fA-F]{2})*$/;
|
|
68
|
+
// ethers rejects non-hex hookData (e.g. '') deep inside abi encoding; fail loudly here instead
|
|
69
|
+
function validateV4HookData(actions) {
|
|
70
|
+
for (const action of actions) {
|
|
71
|
+
if (action.action === 'SWAP_EXACT_IN_SINGLE' || action.action === 'SWAP_EXACT_OUT_SINGLE') {
|
|
72
|
+
invariant(HEX_BYTES.test(action.hookData), 'V4_HOOK_DATA_INVALID');
|
|
73
|
+
}
|
|
74
|
+
if (action.action === 'SWAP_EXACT_IN' || action.action === 'SWAP_EXACT_OUT') {
|
|
75
|
+
for (const hop of action.path) {
|
|
76
|
+
invariant(HEX_BYTES.test(hop.hookData), 'V4_HOOK_DATA_INVALID');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
61
81
|
export function validateEncodeSwaps(spec, swapSteps) {
|
|
62
82
|
var _a, _b, _c, _d;
|
|
63
83
|
invariant(swapSteps.length > 0, 'EMPTY_SWAP_STEPS');
|
|
@@ -102,8 +122,18 @@ export function validateEncodeSwaps(spec, swapSteps) {
|
|
|
102
122
|
invariant(!(((_d = spec.fee) === null || _d === void 0 ? void 0 : _d.kind) === 'portion' &&
|
|
103
123
|
spec.urVersion === UniversalRouterVersion.V2_0 &&
|
|
104
124
|
!spec.fee.fee.multiply(10000).remainder.equalTo(0)), 'FRACTIONAL_BPS_PORTION_FEE_UNSUPPORTED_ON_V2_0');
|
|
105
|
-
// per-step: capability-gate by UR version, recipients must be router custody
|
|
125
|
+
// per-step: capability-gate by UR version, recipients must be router custody (or the spec
|
|
126
|
+
// recipient under allowDirectTransfers), per-hop arrays must match hop counts
|
|
106
127
|
for (const step of swapSteps) {
|
|
128
|
+
if (!spec.allowDirectTransfers) {
|
|
129
|
+
invariant(!hasUserPaidFlag(step), 'PAYER_IS_USER_REQUIRES_DIRECT_TRANSFERS');
|
|
130
|
+
if (step.type === 'V4_SWAP') {
|
|
131
|
+
for (const action of step.v4Actions) {
|
|
132
|
+
invariant(action.action !== 'SETTLE_ALL', 'SETTLE_ALL_REQUIRES_DIRECT_TRANSFERS');
|
|
133
|
+
invariant(action.action !== 'TAKE_ALL', 'TAKE_ALL_REQUIRES_DIRECT_TRANSFERS');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
107
137
|
if (spec.urVersion === UniversalRouterVersion.V2_0) {
|
|
108
138
|
invariant(!('minHopPriceX36' in step) || step.minHopPriceX36 === undefined, 'MIN_HOP_PRICE_X36_UNSUPPORTED_ON_V2_0');
|
|
109
139
|
invariant(!(step.type === 'V4_SWAP' && step.v4Actions.some(hasV4MinHopPriceX36)), 'MIN_HOP_PRICE_X36_UNSUPPORTED_ON_V2_0');
|
|
@@ -111,27 +141,59 @@ export function validateEncodeSwaps(spec, swapSteps) {
|
|
|
111
141
|
switch (step.type) {
|
|
112
142
|
case 'V2_SWAP_EXACT_IN':
|
|
113
143
|
case 'V2_SWAP_EXACT_OUT':
|
|
114
|
-
|
|
144
|
+
checkRecipient(spec, step.recipient, 'STEP_RECIPIENT_MUST_BE_ROUTER');
|
|
115
145
|
invariant(!step.minHopPriceX36 || step.minHopPriceX36.length === step.path.length - 1, 'V2_MIN_HOP_PRICE_X36_LENGTH_MISMATCH');
|
|
116
146
|
break;
|
|
117
147
|
case 'V3_SWAP_EXACT_IN':
|
|
118
148
|
case 'V3_SWAP_EXACT_OUT': {
|
|
119
|
-
|
|
149
|
+
checkRecipient(spec, step.recipient, 'STEP_RECIPIENT_MUST_BE_ROUTER');
|
|
120
150
|
const hopCount = getV3HopCount(step.path);
|
|
121
151
|
invariant(hopCount === undefined || !step.minHopPriceX36 || step.minHopPriceX36.length === hopCount, 'V3_MIN_HOP_PRICE_X36_LENGTH_MISMATCH');
|
|
122
152
|
break;
|
|
123
153
|
}
|
|
124
154
|
case 'WRAP_ETH':
|
|
125
|
-
|
|
155
|
+
// router-only in both regimes: this is the input-side transition, not an outbound payout
|
|
126
156
|
assertRouterRecipient(step.recipient);
|
|
127
157
|
break;
|
|
158
|
+
case 'UNWRAP_WETH':
|
|
159
|
+
checkRecipient(spec, step.recipient, 'STEP_RECIPIENT_MUST_BE_ROUTER');
|
|
160
|
+
break;
|
|
128
161
|
case 'V4_SWAP':
|
|
129
162
|
validateV4HopCounts(step.v4Actions);
|
|
130
|
-
|
|
163
|
+
validateV4HookData(step.v4Actions);
|
|
164
|
+
validateV4Recipients(step.v4Actions, spec);
|
|
131
165
|
break;
|
|
132
166
|
default:
|
|
133
167
|
break;
|
|
134
168
|
}
|
|
135
169
|
}
|
|
170
|
+
// inbound budget: user-paid pulls must be concrete input-token amounts whose combined
|
|
171
|
+
// maxima fit within exactOrMaxAmountIn; the encoder then ingresses only the remainder,
|
|
172
|
+
// so total user outflow can never exceed the spec's input
|
|
173
|
+
if (spec.allowDirectTransfers && swapSteps.some((step) => stepUserPaidPulls(step).length > 0)) {
|
|
174
|
+
// permit2-based direct pulls need a plain ERC20 input owned by the tx sender
|
|
175
|
+
invariant(!spec.routing.inputToken.isNative, 'DIRECT_TRANSFERS_NATIVE_INPUT');
|
|
176
|
+
invariant(!spec.nativeErc20Input, 'DIRECT_TRANSFERS_NATIVE_ERC20_INPUT');
|
|
177
|
+
invariant(spec.tokenTransferMode === TokenTransferMode.Permit2, 'DIRECT_TRANSFERS_REQUIRES_PERMIT2');
|
|
178
|
+
const { exactOrMaxAmountIn } = computeEncodeSwapsAmounts(spec);
|
|
179
|
+
const inputTokenAddress = getCurrencyAddress(spec.routing.inputToken).toLowerCase();
|
|
180
|
+
let userPaidTotal = BigNumber.from(0);
|
|
181
|
+
swapSteps.forEach((step, stepIndex) => {
|
|
182
|
+
for (const pull of stepUserPaidPulls(step)) {
|
|
183
|
+
// concrete amounts only: bans ALREADY_PAID/OPEN_DELTA (0), CONTRACT_BALANCE (2^255),
|
|
184
|
+
// and anything permit2's uint160 cannot move
|
|
185
|
+
invariant(pull.maxAmount.gt(0) && pull.maxAmount.lte(MAX_UINT160), `USER_PAID_AMOUNT_OUT_OF_RANGE (step ${stepIndex})`);
|
|
186
|
+
invariant(typeof pull.token === 'string', `USER_PAID_MALFORMED_PATH (step ${stepIndex})`);
|
|
187
|
+
invariant(pull.token.toLowerCase() === inputTokenAddress, `USER_PAID_INPUT_TOKEN_MISMATCH (step ${stepIndex})`);
|
|
188
|
+
userPaidTotal = userPaidTotal.add(pull.maxAmount);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
invariant(userPaidTotal.lte(exactOrMaxAmountIn), 'USER_PAID_EXCEEDS_MAX_INPUT');
|
|
192
|
+
// keeps the permit2 allowance an on-chain outer ceiling equal to the budget
|
|
193
|
+
if (spec.permit) {
|
|
194
|
+
invariant(spec.permit.details.token.toLowerCase() === inputTokenAddress, 'PERMIT_TOKEN_MISMATCH');
|
|
195
|
+
invariant(BigNumber.from(spec.permit.details.amount).gte(exactOrMaxAmountIn), 'PERMIT_AMOUNT_INSUFFICIENT');
|
|
196
|
+
}
|
|
197
|
+
}
|
|
136
198
|
}
|
|
137
199
|
//# sourceMappingURL=validateEncodeSwaps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateEncodeSwaps.js","sourceRoot":"","sources":["../../../../src/utils/validateEncodeSwaps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,SAAS,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"validateEncodeSwaps.js","sourceRoot":"","sources":["../../../../src/utils/validateEncodeSwaps.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,5 +10,7 @@ export { CommandParser, GenericCommandParser } from './utils/commandParser';
|
|
|
10
10
|
export type { UniversalRouterCommand, UniversalRouterCall, Param, CommandsDefinition } from './utils/commandParser';
|
|
11
11
|
export type { Permit2Permit } from './utils/inputTokens';
|
|
12
12
|
export { normalizeEncodeSwapsSpec } from './utils/normalizeEncodeSwapsSpec';
|
|
13
|
+
export { computeEncodeSwapsAmounts } from './utils/computeEncodeSwapsAmounts';
|
|
14
|
+
export type { EncodeSwapsAmounts } from './utils/computeEncodeSwapsAmounts';
|
|
13
15
|
export { validateEncodeSwaps } from './utils/validateEncodeSwaps';
|
|
14
16
|
export { NONCE_SKIP_CHECK, generateNonce, EXECUTE_SIGNED_TYPES, getUniversalRouterDomain } from './utils/eip712';
|
|
@@ -47,12 +47,25 @@ export declare abstract class SwapRouter {
|
|
|
47
47
|
* Routers own `swapSteps` (V2/V3/V4 swaps, plus any `WRAP_ETH` / `UNWRAP_WETH` required by the route).
|
|
48
48
|
* The SDK owns ingress, fees, final settlement, exact-output refund, and optional `safeMode`.
|
|
49
49
|
*
|
|
50
|
+
* Two validation regimes:
|
|
51
|
+
* - Default (router custody): the single SDK ingress pull is the only user withdrawal and every step
|
|
52
|
+
* recipient must be the router; the final SWEEP floor enforces the minimum output.
|
|
53
|
+
* - `allowDirectTransfers`: steps may pull input straight from the user (`payerIsUser`,
|
|
54
|
+
* v4 SETTLE_ALL) and pay output straight to `recipient` (step recipients, v4 TAKE/TAKE_ALL,
|
|
55
|
+
* UNWRAP_WETH). Direct pulls may total at most exactOrMaxAmountIn — ingress pulls the
|
|
56
|
+
* remainder — and direct output minimums count toward the SWEEP floor. Portion fees still
|
|
57
|
+
* require output custody. Step amounts are never trusted, only counted or capped.
|
|
58
|
+
*
|
|
59
|
+
* Direct-transfer caveats:
|
|
60
|
+
* - Fee-on-transfer output: output minimums bind the amount each swap *produces* (pre-transfer), not the
|
|
61
|
+
* recipient's post-tax balance. A FoT token's own transfer tax reduces the final balance below the
|
|
62
|
+
* minimum — inherent to such tokens and expected when swapping into one, not a shortfall to guard.
|
|
63
|
+
* - A flat fee is a plain TRANSFER, so routing must keep at least the fee amount in router custody
|
|
64
|
+
* (not route 100% of output directly), or the fee TRANSFER reverts.
|
|
65
|
+
*
|
|
50
66
|
* Router contract: end with final output in `spec.routing.outputToken`; for `EXACT_OUTPUT`, unused input
|
|
51
67
|
* must end in `spec.routing.inputToken`. Don't include a top-level `SWEEP` — the SDK appends settlement,
|
|
52
68
|
* 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
69
|
*/
|
|
57
70
|
static encodeSwaps(spec: SwapSpecification, swapSteps: SwapStep[]): MethodParameters;
|
|
58
71
|
/**
|
|
@@ -39,12 +39,20 @@ export type SwapSpecification = {
|
|
|
39
39
|
* Incompatible with native input, permit, and TokenTransferMode.ApproveProxy.
|
|
40
40
|
*/
|
|
41
41
|
nativeErc20Input?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Lets steps pull input straight from the user and pay output straight to `recipient`
|
|
44
|
+
* (instead of router custody), still validated so the user never pays more than
|
|
45
|
+
* `exactOrMaxAmountIn` or receives less than the minimum output. Default false.
|
|
46
|
+
* See `SwapRouter.encodeSwaps`.
|
|
47
|
+
*/
|
|
48
|
+
allowDirectTransfers?: boolean;
|
|
42
49
|
};
|
|
43
|
-
export type NormalizedSwapSpecification = Omit<SwapSpecification, 'recipient' | 'tokenTransferMode' | 'urVersion' | 'safeMode'> & {
|
|
50
|
+
export type NormalizedSwapSpecification = Omit<SwapSpecification, 'recipient' | 'tokenTransferMode' | 'urVersion' | 'safeMode' | 'allowDirectTransfers'> & {
|
|
44
51
|
recipient: string;
|
|
45
52
|
tokenTransferMode: TokenTransferMode;
|
|
46
53
|
urVersion: UniversalRouterVersion;
|
|
47
54
|
safeMode: boolean;
|
|
55
|
+
allowDirectTransfers: boolean;
|
|
48
56
|
};
|
|
49
57
|
export type V2SwapExactIn = {
|
|
50
58
|
type: 'V2_SWAP_EXACT_IN';
|
|
@@ -53,6 +61,7 @@ export type V2SwapExactIn = {
|
|
|
53
61
|
amountOutMin: BigNumberish;
|
|
54
62
|
path: string[];
|
|
55
63
|
minHopPriceX36?: BigNumberish[];
|
|
64
|
+
payerIsUser?: boolean;
|
|
56
65
|
};
|
|
57
66
|
export type V2SwapExactOut = {
|
|
58
67
|
type: 'V2_SWAP_EXACT_OUT';
|
|
@@ -61,6 +70,7 @@ export type V2SwapExactOut = {
|
|
|
61
70
|
amountInMax: BigNumberish;
|
|
62
71
|
path: string[];
|
|
63
72
|
minHopPriceX36?: BigNumberish[];
|
|
73
|
+
payerIsUser?: boolean;
|
|
64
74
|
};
|
|
65
75
|
export type V3SwapExactIn = {
|
|
66
76
|
type: 'V3_SWAP_EXACT_IN';
|
|
@@ -69,6 +79,7 @@ export type V3SwapExactIn = {
|
|
|
69
79
|
amountOutMin: BigNumberish;
|
|
70
80
|
path: string;
|
|
71
81
|
minHopPriceX36?: BigNumberish[];
|
|
82
|
+
payerIsUser?: boolean;
|
|
72
83
|
};
|
|
73
84
|
export type V3SwapExactOut = {
|
|
74
85
|
type: 'V3_SWAP_EXACT_OUT';
|
|
@@ -77,6 +88,7 @@ export type V3SwapExactOut = {
|
|
|
77
88
|
amountInMax: BigNumberish;
|
|
78
89
|
path: string;
|
|
79
90
|
minHopPriceX36?: BigNumberish[];
|
|
91
|
+
payerIsUser?: boolean;
|
|
80
92
|
};
|
|
81
93
|
export type V4Swap = {
|
|
82
94
|
type: 'V4_SWAP';
|
|
@@ -131,6 +143,7 @@ export type V4Settle = {
|
|
|
131
143
|
action: 'SETTLE';
|
|
132
144
|
currency: string;
|
|
133
145
|
amount: BigNumberish;
|
|
146
|
+
payerIsUser?: boolean;
|
|
134
147
|
};
|
|
135
148
|
export type V4SettleAll = {
|
|
136
149
|
action: 'SETTLE_ALL';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BigNumber } from 'ethers';
|
|
2
|
+
import { NormalizedSwapSpecification, SwapStep } from '../types/encodeSwaps';
|
|
3
|
+
export type UserPaidPull = {
|
|
4
|
+
token: string | undefined;
|
|
5
|
+
maxAmount: BigNumber;
|
|
6
|
+
};
|
|
7
|
+
export declare function getV3HopCount(path: string): number | undefined;
|
|
8
|
+
export declare function v3PathFirstToken(path: string): string | undefined;
|
|
9
|
+
export declare function v3PathLastToken(path: string): string | undefined;
|
|
10
|
+
export declare function hasUserPaidFlag(step: SwapStep): boolean;
|
|
11
|
+
export declare function stepUserPaidPulls(step: SwapStep): UserPaidPull[];
|
|
12
|
+
export declare function sumUserPaidMax(steps: SwapStep[]): BigNumber;
|
|
13
|
+
export declare function sumDirectOutputMin(steps: SwapStep[], recipient: string, outputTokenAddress: string): BigNumber;
|
|
14
|
+
export declare function directTransferSweepFloor(spec: NormalizedSwapSpecification, netMin: BigNumber, swapSteps: SwapStep[], outputTokenAddress: string): BigNumber;
|