@fenine/universal-router-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +331 -0
- package/dist/cjs/src/entities/Command.d.ts +12 -0
- package/dist/cjs/src/entities/Command.js +9 -0
- package/dist/cjs/src/entities/Command.js.map +1 -0
- package/dist/cjs/src/entities/actions/across.d.ts +21 -0
- package/dist/cjs/src/entities/actions/across.js +7 -0
- package/dist/cjs/src/entities/actions/across.js.map +1 -0
- package/dist/cjs/src/entities/actions/index.d.ts +3 -0
- package/dist/cjs/src/entities/actions/index.js +7 -0
- package/dist/cjs/src/entities/actions/index.js.map +1 -0
- package/dist/cjs/src/entities/actions/uniswap.d.ts +38 -0
- package/dist/cjs/src/entities/actions/uniswap.js +545 -0
- package/dist/cjs/src/entities/actions/uniswap.js.map +1 -0
- package/dist/cjs/src/entities/actions/unwrapWETH.d.ts +12 -0
- package/dist/cjs/src/entities/actions/unwrapWETH.js +33 -0
- package/dist/cjs/src/entities/actions/unwrapWETH.js.map +1 -0
- package/dist/cjs/src/entities/index.d.ts +2 -0
- package/dist/cjs/src/entities/index.js +6 -0
- package/dist/cjs/src/entities/index.js.map +1 -0
- package/dist/cjs/src/index.d.ts +14 -0
- package/dist/cjs/src/index.js +36 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/swapRouter.d.ts +103 -0
- package/dist/cjs/src/swapRouter.js +338 -0
- package/dist/cjs/src/swapRouter.js.map +1 -0
- package/dist/cjs/src/types/encodeSwaps.d.ts +149 -0
- package/dist/cjs/src/types/encodeSwaps.js +3 -0
- package/dist/cjs/src/types/encodeSwaps.js.map +1 -0
- package/dist/cjs/src/utils/commandParser.d.ts +34 -0
- package/dist/cjs/src/utils/commandParser.js +145 -0
- package/dist/cjs/src/utils/commandParser.js.map +1 -0
- package/dist/cjs/src/utils/computeEncodeSwapsAmounts.d.ts +8 -0
- package/dist/cjs/src/utils/computeEncodeSwapsAmounts.js +47 -0
- package/dist/cjs/src/utils/computeEncodeSwapsAmounts.js.map +1 -0
- package/dist/cjs/src/utils/constants.d.ts +39 -0
- package/dist/cjs/src/utils/constants.js +560 -0
- package/dist/cjs/src/utils/constants.js.map +1 -0
- package/dist/cjs/src/utils/eip712.d.ts +17 -0
- package/dist/cjs/src/utils/eip712.js +43 -0
- package/dist/cjs/src/utils/eip712.js.map +1 -0
- package/dist/cjs/src/utils/encodeSwapStep.d.ts +4 -0
- package/dist/cjs/src/utils/encodeSwapStep.js +61 -0
- package/dist/cjs/src/utils/encodeSwapStep.js.map +1 -0
- package/dist/cjs/src/utils/encodeV4Action.d.ts +8 -0
- package/dist/cjs/src/utils/encodeV4Action.js +97 -0
- package/dist/cjs/src/utils/encodeV4Action.js.map +1 -0
- package/dist/cjs/src/utils/getCurrencyAddress.d.ts +2 -0
- package/dist/cjs/src/utils/getCurrencyAddress.js +9 -0
- package/dist/cjs/src/utils/getCurrencyAddress.js.map +1 -0
- package/dist/cjs/src/utils/inputTokens.d.ts +23 -0
- package/dist/cjs/src/utils/inputTokens.js +58 -0
- package/dist/cjs/src/utils/inputTokens.js.map +1 -0
- package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.d.ts +2 -0
- package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.js +18 -0
- package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.js.map +1 -0
- package/dist/cjs/src/utils/numbers.d.ts +7 -0
- package/dist/cjs/src/utils/numbers.js +27 -0
- package/dist/cjs/src/utils/numbers.js.map +1 -0
- package/dist/cjs/src/utils/pathCurrency.d.ts +3 -0
- package/dist/cjs/src/utils/pathCurrency.js +27 -0
- package/dist/cjs/src/utils/pathCurrency.js.map +1 -0
- package/dist/cjs/src/utils/routerCommands.d.ts +77 -0
- package/dist/cjs/src/utils/routerCommands.js +334 -0
- package/dist/cjs/src/utils/routerCommands.js.map +1 -0
- package/dist/cjs/src/utils/routerTradeAdapter.d.ts +73 -0
- package/dist/cjs/src/utils/routerTradeAdapter.js +139 -0
- package/dist/cjs/src/utils/routerTradeAdapter.js.map +1 -0
- package/dist/cjs/src/utils/validateEncodeSwaps.d.ts +2 -0
- package/dist/cjs/src/utils/validateEncodeSwaps.js +135 -0
- package/dist/cjs/src/utils/validateEncodeSwaps.js.map +1 -0
- package/dist/esm/src/entities/Command.d.ts +12 -0
- package/dist/esm/src/entities/Command.js +6 -0
- package/dist/esm/src/entities/Command.js.map +1 -0
- package/dist/esm/src/entities/actions/across.d.ts +21 -0
- package/dist/esm/src/entities/actions/across.js +3 -0
- package/dist/esm/src/entities/actions/across.js.map +1 -0
- package/dist/esm/src/entities/actions/index.d.ts +3 -0
- package/dist/esm/src/entities/actions/index.js +4 -0
- package/dist/esm/src/entities/actions/index.js.map +1 -0
- package/dist/esm/src/entities/actions/uniswap.d.ts +38 -0
- package/dist/esm/src/entities/actions/uniswap.js +541 -0
- package/dist/esm/src/entities/actions/uniswap.js.map +1 -0
- package/dist/esm/src/entities/actions/unwrapWETH.d.ts +12 -0
- package/dist/esm/src/entities/actions/unwrapWETH.js +28 -0
- package/dist/esm/src/entities/actions/unwrapWETH.js.map +1 -0
- package/dist/esm/src/entities/index.d.ts +2 -0
- package/dist/esm/src/entities/index.js +3 -0
- package/dist/esm/src/entities/index.js.map +1 -0
- package/dist/esm/src/index.d.ts +14 -0
- package/dist/esm/src/index.js +11 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/swapRouter.d.ts +103 -0
- package/dist/esm/src/swapRouter.js +333 -0
- package/dist/esm/src/swapRouter.js.map +1 -0
- package/dist/esm/src/types/encodeSwaps.d.ts +149 -0
- package/dist/esm/src/types/encodeSwaps.js +2 -0
- package/dist/esm/src/types/encodeSwaps.js.map +1 -0
- package/dist/esm/src/utils/commandParser.d.ts +34 -0
- package/dist/esm/src/utils/commandParser.js +137 -0
- package/dist/esm/src/utils/commandParser.js.map +1 -0
- package/dist/esm/src/utils/computeEncodeSwapsAmounts.d.ts +8 -0
- package/dist/esm/src/utils/computeEncodeSwapsAmounts.js +43 -0
- package/dist/esm/src/utils/computeEncodeSwapsAmounts.js.map +1 -0
- package/dist/esm/src/utils/constants.d.ts +39 -0
- package/dist/esm/src/utils/constants.js +552 -0
- package/dist/esm/src/utils/constants.js.map +1 -0
- package/dist/esm/src/utils/eip712.d.ts +17 -0
- package/dist/esm/src/utils/eip712.js +38 -0
- package/dist/esm/src/utils/eip712.js.map +1 -0
- package/dist/esm/src/utils/encodeSwapStep.d.ts +4 -0
- package/dist/esm/src/utils/encodeSwapStep.js +57 -0
- package/dist/esm/src/utils/encodeSwapStep.js.map +1 -0
- package/dist/esm/src/utils/encodeV4Action.d.ts +8 -0
- package/dist/esm/src/utils/encodeV4Action.js +92 -0
- package/dist/esm/src/utils/encodeV4Action.js.map +1 -0
- package/dist/esm/src/utils/getCurrencyAddress.d.ts +2 -0
- package/dist/esm/src/utils/getCurrencyAddress.js +5 -0
- package/dist/esm/src/utils/getCurrencyAddress.js.map +1 -0
- package/dist/esm/src/utils/inputTokens.d.ts +23 -0
- package/dist/esm/src/utils/inputTokens.js +51 -0
- package/dist/esm/src/utils/inputTokens.js.map +1 -0
- package/dist/esm/src/utils/normalizeEncodeSwapsSpec.d.ts +2 -0
- package/dist/esm/src/utils/normalizeEncodeSwapsSpec.js +14 -0
- package/dist/esm/src/utils/normalizeEncodeSwapsSpec.js.map +1 -0
- package/dist/esm/src/utils/numbers.d.ts +7 -0
- package/dist/esm/src/utils/numbers.js +19 -0
- package/dist/esm/src/utils/numbers.js.map +1 -0
- package/dist/esm/src/utils/pathCurrency.d.ts +3 -0
- package/dist/esm/src/utils/pathCurrency.js +23 -0
- package/dist/esm/src/utils/pathCurrency.js.map +1 -0
- package/dist/esm/src/utils/routerCommands.d.ts +77 -0
- package/dist/esm/src/utils/routerCommands.js +329 -0
- package/dist/esm/src/utils/routerCommands.js.map +1 -0
- package/dist/esm/src/utils/routerTradeAdapter.d.ts +73 -0
- package/dist/esm/src/utils/routerTradeAdapter.js +134 -0
- package/dist/esm/src/utils/routerTradeAdapter.js.map +1 -0
- package/dist/esm/src/utils/validateEncodeSwaps.d.ts +2 -0
- package/dist/esm/src/utils/validateEncodeSwaps.js +130 -0
- package/dist/esm/src/utils/validateEncodeSwaps.js.map +1 -0
- package/dist/types/src/entities/Command.d.ts +12 -0
- package/dist/types/src/entities/actions/across.d.ts +21 -0
- package/dist/types/src/entities/actions/index.d.ts +3 -0
- package/dist/types/src/entities/actions/uniswap.d.ts +38 -0
- package/dist/types/src/entities/actions/unwrapWETH.d.ts +12 -0
- package/dist/types/src/entities/index.d.ts +2 -0
- package/dist/types/src/index.d.ts +14 -0
- package/dist/types/src/swapRouter.d.ts +103 -0
- package/dist/types/src/types/encodeSwaps.d.ts +149 -0
- package/dist/types/src/utils/commandParser.d.ts +34 -0
- package/dist/types/src/utils/computeEncodeSwapsAmounts.d.ts +8 -0
- package/dist/types/src/utils/constants.d.ts +39 -0
- package/dist/types/src/utils/eip712.d.ts +17 -0
- package/dist/types/src/utils/encodeSwapStep.d.ts +4 -0
- package/dist/types/src/utils/encodeV4Action.d.ts +8 -0
- package/dist/types/src/utils/getCurrencyAddress.d.ts +2 -0
- package/dist/types/src/utils/inputTokens.d.ts +23 -0
- package/dist/types/src/utils/normalizeEncodeSwapsSpec.d.ts +2 -0
- package/dist/types/src/utils/numbers.d.ts +7 -0
- package/dist/types/src/utils/pathCurrency.d.ts +3 -0
- package/dist/types/src/utils/routerCommands.d.ts +77 -0
- package/dist/types/src/utils/routerTradeAdapter.d.ts +73 -0
- package/dist/types/src/utils/validateEncodeSwaps.d.ts +2 -0
- package/package.json +78 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateEncodeSwaps = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const ethers_1 = require("ethers");
|
|
6
|
+
const tiny_invariant_1 = tslib_1.__importDefault(require("tiny-invariant"));
|
|
7
|
+
const sdk_core_1 = require("@fenine/sdk-core");
|
|
8
|
+
const uniswap_1 = require("../entities/actions/uniswap");
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
// V3 path: 20-byte address + N × (3-byte fee + 20-byte address); minimum is 43 bytes (single hop, N=1)
|
|
11
|
+
// Returns N or undefined if malformed
|
|
12
|
+
function getV3HopCount(path) {
|
|
13
|
+
if (!path.startsWith('0x'))
|
|
14
|
+
return undefined;
|
|
15
|
+
const byteLength = (path.length - 2) / 2;
|
|
16
|
+
if (byteLength < 43)
|
|
17
|
+
return undefined;
|
|
18
|
+
const variableSegmentLength = byteLength - 20;
|
|
19
|
+
if (variableSegmentLength < 23 || variableSegmentLength % 23 !== 0)
|
|
20
|
+
return undefined;
|
|
21
|
+
return variableSegmentLength / 23;
|
|
22
|
+
}
|
|
23
|
+
function hasV4MinHopPriceX36(action) {
|
|
24
|
+
switch (action.action) {
|
|
25
|
+
case 'SWAP_EXACT_IN':
|
|
26
|
+
case 'SWAP_EXACT_OUT':
|
|
27
|
+
case 'SWAP_EXACT_IN_SINGLE':
|
|
28
|
+
case 'SWAP_EXACT_OUT_SINGLE':
|
|
29
|
+
return action.minHopPriceX36 !== undefined;
|
|
30
|
+
default:
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function validateV4HopCounts(actions) {
|
|
35
|
+
for (const action of actions) {
|
|
36
|
+
switch (action.action) {
|
|
37
|
+
case 'SWAP_EXACT_IN':
|
|
38
|
+
case 'SWAP_EXACT_OUT':
|
|
39
|
+
(0, tiny_invariant_1.default)(!action.minHopPriceX36 || action.minHopPriceX36.length === action.path.length, 'V4_MIN_HOP_PRICE_X36_LENGTH_MISMATCH');
|
|
40
|
+
break;
|
|
41
|
+
default:
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function assertRouterRecipient(recipient) {
|
|
47
|
+
(0, tiny_invariant_1.default)(recipient === constants_1.ROUTER_AS_RECIPIENT, 'STEP_RECIPIENT_MUST_BE_ROUTER');
|
|
48
|
+
}
|
|
49
|
+
function assertRouterActionRecipient(recipient) {
|
|
50
|
+
(0, tiny_invariant_1.default)(recipient === constants_1.ROUTER_AS_RECIPIENT, 'V4_ACTION_RECIPIENT_MUST_BE_ROUTER');
|
|
51
|
+
}
|
|
52
|
+
// V4 actions that take a recipient must use router custody so the SDK's settlement sweeps see the funds
|
|
53
|
+
function validateV4Recipients(actions) {
|
|
54
|
+
for (const action of actions) {
|
|
55
|
+
switch (action.action) {
|
|
56
|
+
case 'TAKE':
|
|
57
|
+
case 'TAKE_PORTION':
|
|
58
|
+
assertRouterActionRecipient(action.recipient);
|
|
59
|
+
break;
|
|
60
|
+
default:
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function validateEncodeSwaps(spec, swapSteps) {
|
|
66
|
+
var _a, _b, _c, _d;
|
|
67
|
+
(0, tiny_invariant_1.default)(swapSteps.length > 0, 'EMPTY_SWAP_STEPS');
|
|
68
|
+
const amountCurrency = spec.routing.amount.currency.wrapped;
|
|
69
|
+
const quoteCurrency = spec.routing.quote.currency.wrapped;
|
|
70
|
+
const inputCurrency = spec.routing.inputToken.wrapped;
|
|
71
|
+
const outputCurrency = spec.routing.outputToken.wrapped;
|
|
72
|
+
(0, tiny_invariant_1.default)(!spec.slippageTolerance.lessThan(0), 'SLIPPAGE_TOLERANCE');
|
|
73
|
+
(0, tiny_invariant_1.default)(spec.recipient !== constants_1.ZERO_ADDRESS, 'RECIPIENT_CANNOT_BE_ZERO');
|
|
74
|
+
(0, tiny_invariant_1.default)(spec.recipient !== constants_1.ROUTER_AS_RECIPIENT, 'RECIPIENT_CANNOT_BE_ROUTER');
|
|
75
|
+
// routing.amount is on the exact side of the trade; routing.quote is on the slippage side
|
|
76
|
+
if (spec.tradeType === sdk_core_1.TradeType.EXACT_INPUT) {
|
|
77
|
+
(0, tiny_invariant_1.default)(amountCurrency.equals(inputCurrency), 'INVALID_ROUTING_AMOUNT_CURRENCY');
|
|
78
|
+
(0, tiny_invariant_1.default)(quoteCurrency.equals(outputCurrency), 'INVALID_ROUTING_QUOTE_CURRENCY');
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
(0, tiny_invariant_1.default)(amountCurrency.equals(outputCurrency), 'INVALID_ROUTING_AMOUNT_CURRENCY');
|
|
82
|
+
(0, tiny_invariant_1.default)(quoteCurrency.equals(inputCurrency), 'INVALID_ROUTING_QUOTE_CURRENCY');
|
|
83
|
+
}
|
|
84
|
+
// ApproveProxy ingress lives upstream in the proxy contract: needs chain id, ERC20 input, no permit2, explicit recipient
|
|
85
|
+
if (spec.tokenTransferMode === uniswap_1.TokenTransferMode.ApproveProxy) {
|
|
86
|
+
(0, tiny_invariant_1.default)(!!spec.chainId, 'PROXY_MISSING_CHAIN_ID');
|
|
87
|
+
(0, tiny_invariant_1.default)(!spec.routing.inputToken.isNative, 'PROXY_NATIVE_INPUT');
|
|
88
|
+
(0, tiny_invariant_1.default)(!spec.permit, 'PROXY_PERMIT_CONFLICT');
|
|
89
|
+
(0, tiny_invariant_1.default)(spec.recipient !== constants_1.SENDER_AS_RECIPIENT, 'PROXY_EXPLICIT_RECIPIENT_REQUIRED');
|
|
90
|
+
}
|
|
91
|
+
// permit2 is ERC20-only; native input pays via msg.value
|
|
92
|
+
(0, tiny_invariant_1.default)(!(spec.routing.inputToken.isNative && spec.permit), 'NATIVE_INPUT_PERMIT');
|
|
93
|
+
// portion fees pair with exact-input (% of variable output); flat fees pair with exact-output (fixed deduction from the target)
|
|
94
|
+
(0, tiny_invariant_1.default)(!(((_a = spec.fee) === null || _a === void 0 ? void 0 : _a.kind) === 'portion' && spec.tradeType !== sdk_core_1.TradeType.EXACT_INPUT), 'INVALID_PORTION_FEE_TRADE_TYPE');
|
|
95
|
+
(0, tiny_invariant_1.default)(!(((_b = spec.fee) === null || _b === void 0 ? void 0 : _b.kind) === 'flat' && spec.tradeType !== sdk_core_1.TradeType.EXACT_OUTPUT), 'INVALID_FLAT_FEE_TRADE_TYPE');
|
|
96
|
+
(0, tiny_invariant_1.default)(!(((_c = spec.fee) === null || _c === void 0 ? void 0 : _c.kind) === 'flat' &&
|
|
97
|
+
ethers_1.BigNumber.from(spec.fee.amount).gt(ethers_1.BigNumber.from(spec.routing.amount.quotient.toString()))), 'FLAT_FEE_GT_AMOUNT');
|
|
98
|
+
// v2.0 PAY_PORTION takes whole bps; fractional bps need >=v2.1.1's PAY_PORTION_FULL_PRECISION
|
|
99
|
+
(0, tiny_invariant_1.default)(!(((_d = spec.fee) === null || _d === void 0 ? void 0 : _d.kind) === 'portion' &&
|
|
100
|
+
spec.urVersion === constants_1.UniversalRouterVersion.V2_0 &&
|
|
101
|
+
!spec.fee.fee.multiply(10000).remainder.equalTo(0)), 'FRACTIONAL_BPS_PORTION_FEE_UNSUPPORTED_ON_V2_0');
|
|
102
|
+
// per-step: capability-gate by UR version, recipients must be router custody, per-hop arrays must match hop counts
|
|
103
|
+
for (const step of swapSteps) {
|
|
104
|
+
if (spec.urVersion === constants_1.UniversalRouterVersion.V2_0) {
|
|
105
|
+
(0, tiny_invariant_1.default)(!('minHopPriceX36' in step) || step.minHopPriceX36 === undefined, 'MIN_HOP_PRICE_X36_UNSUPPORTED_ON_V2_0');
|
|
106
|
+
(0, tiny_invariant_1.default)(!(step.type === 'V4_SWAP' && step.v4Actions.some(hasV4MinHopPriceX36)), 'MIN_HOP_PRICE_X36_UNSUPPORTED_ON_V2_0');
|
|
107
|
+
}
|
|
108
|
+
switch (step.type) {
|
|
109
|
+
case 'V2_SWAP_EXACT_IN':
|
|
110
|
+
case 'V2_SWAP_EXACT_OUT':
|
|
111
|
+
assertRouterRecipient(step.recipient);
|
|
112
|
+
(0, tiny_invariant_1.default)(!step.minHopPriceX36 || step.minHopPriceX36.length === step.path.length - 1, 'V2_MIN_HOP_PRICE_X36_LENGTH_MISMATCH');
|
|
113
|
+
break;
|
|
114
|
+
case 'V3_SWAP_EXACT_IN':
|
|
115
|
+
case 'V3_SWAP_EXACT_OUT': {
|
|
116
|
+
assertRouterRecipient(step.recipient);
|
|
117
|
+
const hopCount = getV3HopCount(step.path);
|
|
118
|
+
(0, tiny_invariant_1.default)(hopCount === undefined || !step.minHopPriceX36 || step.minHopPriceX36.length === hopCount, 'V3_MIN_HOP_PRICE_X36_LENGTH_MISMATCH');
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
case 'WRAP_ETH':
|
|
122
|
+
case 'UNWRAP_WETH':
|
|
123
|
+
assertRouterRecipient(step.recipient);
|
|
124
|
+
break;
|
|
125
|
+
case 'V4_SWAP':
|
|
126
|
+
validateV4HopCounts(step.v4Actions);
|
|
127
|
+
validateV4Recipients(step.v4Actions);
|
|
128
|
+
break;
|
|
129
|
+
default:
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
exports.validateEncodeSwaps = validateEncodeSwaps;
|
|
135
|
+
//# sourceMappingURL=validateEncodeSwaps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateEncodeSwaps.js","sourceRoot":"","sources":["../../../../src/utils/validateEncodeSwaps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RoutePlanner } from '../utils/routerCommands';
|
|
2
|
+
export type TradeConfig = {
|
|
3
|
+
allowRevert: boolean;
|
|
4
|
+
};
|
|
5
|
+
export declare enum RouterActionType {
|
|
6
|
+
UniswapTrade = "UniswapTrade",
|
|
7
|
+
UnwrapWETH = "UnwrapWETH"
|
|
8
|
+
}
|
|
9
|
+
export interface Command {
|
|
10
|
+
tradeType: RouterActionType;
|
|
11
|
+
encode(planner: RoutePlanner, config: TradeConfig): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Command.js","sourceRoot":"","sources":["../../../../src/entities/Command.ts"],"names":[],"mappings":"AAMA,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iDAA6B,CAAA;IAC7B,6CAAyB,CAAA;AAC3B,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BigNumberish } from 'ethers';
|
|
2
|
+
/**
|
|
3
|
+
* Parameters for Across V4 Deposit V3 command
|
|
4
|
+
* Used for cross-chain bridging via Across Protocol V3 SpokePool
|
|
5
|
+
*/
|
|
6
|
+
export type AcrossV4DepositV3Params = {
|
|
7
|
+
depositor: string;
|
|
8
|
+
recipient: string;
|
|
9
|
+
inputToken: string;
|
|
10
|
+
outputToken: string;
|
|
11
|
+
inputAmount: BigNumberish;
|
|
12
|
+
outputAmount: BigNumberish;
|
|
13
|
+
destinationChainId: number;
|
|
14
|
+
exclusiveRelayer: string;
|
|
15
|
+
quoteTimestamp: number;
|
|
16
|
+
fillDeadline: number;
|
|
17
|
+
exclusivityDeadline: number;
|
|
18
|
+
message: string;
|
|
19
|
+
useNative: boolean;
|
|
20
|
+
};
|
|
21
|
+
export { CONTRACT_BALANCE } from '../../utils/constants';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"across.js","sourceRoot":"","sources":["../../../../../src/entities/actions/across.ts"],"names":[],"mappings":"AAsBA,mDAAmD;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/actions/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { RoutePlanner } from '../../utils/routerCommands';
|
|
2
|
+
import { Trade as RouterTrade, SwapOptions as RouterSwapOptions } from '@uniswap/router-sdk';
|
|
3
|
+
import { Permit2Permit } from '../../utils/inputTokens';
|
|
4
|
+
import { Currency, TradeType } from '@fenine/sdk-core';
|
|
5
|
+
import { Command, RouterActionType, TradeConfig } from '../Command';
|
|
6
|
+
import { UniversalRouterVersion } from '../../utils/constants';
|
|
7
|
+
import { BigNumberish } from 'ethers';
|
|
8
|
+
export type FlatFeeOptions = {
|
|
9
|
+
amount: BigNumberish;
|
|
10
|
+
recipient: string;
|
|
11
|
+
};
|
|
12
|
+
export declare enum TokenTransferMode {
|
|
13
|
+
Permit2 = "Permit2",
|
|
14
|
+
ApproveProxy = "ApproveProxy"
|
|
15
|
+
}
|
|
16
|
+
export type SwapOptions = Omit<RouterSwapOptions, 'inputTokenPermit'> & {
|
|
17
|
+
useRouterBalance?: boolean;
|
|
18
|
+
inputTokenPermit?: Permit2Permit;
|
|
19
|
+
flatFee?: FlatFeeOptions;
|
|
20
|
+
safeMode?: boolean;
|
|
21
|
+
urVersion?: UniversalRouterVersion;
|
|
22
|
+
tokenTransferMode?: TokenTransferMode;
|
|
23
|
+
chainId?: number;
|
|
24
|
+
};
|
|
25
|
+
export declare class UniswapTrade implements Command {
|
|
26
|
+
trade: RouterTrade<Currency, Currency, TradeType>;
|
|
27
|
+
options: SwapOptions;
|
|
28
|
+
readonly tradeType: RouterActionType;
|
|
29
|
+
readonly payerIsUser: boolean;
|
|
30
|
+
constructor(trade: RouterTrade<Currency, Currency, TradeType>, options: SwapOptions);
|
|
31
|
+
get isAllV4(): boolean;
|
|
32
|
+
get inputRequiresWrap(): boolean;
|
|
33
|
+
get inputRequiresUnwrap(): boolean;
|
|
34
|
+
get outputRequiresWrap(): boolean;
|
|
35
|
+
get outputRequiresUnwrap(): boolean;
|
|
36
|
+
get outputRequiresTransition(): boolean;
|
|
37
|
+
encode(planner: RoutePlanner, _config: TradeConfig): void;
|
|
38
|
+
}
|