@synthra-swap/sdk 0.1.4
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 -0
- package/chains.d.ts +1 -0
- package/chains.js +1 -0
- package/core.d.ts +1 -0
- package/core.js +1 -0
- package/dist/chain-registry.d.ts +22 -0
- package/dist/chain-registry.js +315 -0
- package/dist/chain-registry.js.map +1 -0
- package/dist/chains.d.ts +5 -0
- package/dist/chains.js +29 -0
- package/dist/chains.js.map +1 -0
- package/dist/core/addresses.d.ts +21 -0
- package/dist/core/addresses.js +76 -0
- package/dist/core/addresses.js.map +1 -0
- package/dist/core/chains.d.ts +51 -0
- package/dist/core/chains.js +82 -0
- package/dist/core/chains.js.map +1 -0
- package/dist/core/constants.d.ts +12 -0
- package/dist/core/constants.js +20 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/entities/baseCurrency.d.ts +48 -0
- package/dist/core/entities/baseCurrency.js +29 -0
- package/dist/core/entities/baseCurrency.js.map +1 -0
- package/dist/core/entities/currency.d.ts +3 -0
- package/dist/core/entities/currency.js +3 -0
- package/dist/core/entities/currency.js.map +1 -0
- package/dist/core/entities/ether.d.ts +13 -0
- package/dist/core/entities/ether.js +32 -0
- package/dist/core/entities/ether.js.map +1 -0
- package/dist/core/entities/fractions/currencyAmount.d.ts +31 -0
- package/dist/core/entities/fractions/currencyAmount.js +74 -0
- package/dist/core/entities/fractions/currencyAmount.js.map +1 -0
- package/dist/core/entities/fractions/fraction.d.ts +24 -0
- package/dist/core/entities/fractions/fraction.js +106 -0
- package/dist/core/entities/fractions/fraction.js.map +1 -0
- package/dist/core/entities/fractions/index.d.ts +4 -0
- package/dist/core/entities/fractions/index.js +12 -0
- package/dist/core/entities/fractions/index.js.map +1 -0
- package/dist/core/entities/fractions/percent.d.ts +14 -0
- package/dist/core/entities/fractions/percent.js +45 -0
- package/dist/core/entities/fractions/percent.js.map +1 -0
- package/dist/core/entities/fractions/price.d.ts +38 -0
- package/dist/core/entities/fractions/price.js +75 -0
- package/dist/core/entities/fractions/price.js.map +1 -0
- package/dist/core/entities/index.d.ts +7 -0
- package/dist/core/entities/index.js +24 -0
- package/dist/core/entities/index.js.map +1 -0
- package/dist/core/entities/nativeCurrency.d.ts +8 -0
- package/dist/core/entities/nativeCurrency.js +16 -0
- package/dist/core/entities/nativeCurrency.js.map +1 -0
- package/dist/core/entities/nativeOnChain.d.ts +19 -0
- package/dist/core/entities/nativeOnChain.js +141 -0
- package/dist/core/entities/nativeOnChain.js.map +1 -0
- package/dist/core/entities/token.d.ts +48 -0
- package/dist/core/entities/token.js +71 -0
- package/dist/core/entities/token.js.map +1 -0
- package/dist/core/entities/weth9.d.ts +7 -0
- package/dist/core/entities/weth9.js +28 -0
- package/dist/core/entities/weth9.js.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.js +22 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/utils/computePriceImpact.d.ts +8 -0
- package/dist/core/utils/computePriceImpact.js +18 -0
- package/dist/core/utils/computePriceImpact.js.map +1 -0
- package/dist/core/utils/index.d.ts +4 -0
- package/dist/core/utils/index.js +12 -0
- package/dist/core/utils/index.js.map +1 -0
- package/dist/core/utils/sortedInsert.d.ts +1 -0
- package/dist/core/utils/sortedInsert.js +40 -0
- package/dist/core/utils/sortedInsert.js.map +1 -0
- package/dist/core/utils/sqrt.d.ts +7 -0
- package/dist/core/utils/sqrt.js +34 -0
- package/dist/core/utils/sqrt.js.map +1 -0
- package/dist/core/utils/validateAndParseAddress.d.ts +10 -0
- package/dist/core/utils/validateAndParseAddress.js +31 -0
- package/dist/core/utils/validateAndParseAddress.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/universal-router/entities/Command.d.ts +12 -0
- package/dist/universal-router/entities/Command.js +9 -0
- package/dist/universal-router/entities/Command.js.map +1 -0
- package/dist/universal-router/entities/index.d.ts +3 -0
- package/dist/universal-router/entities/index.js +20 -0
- package/dist/universal-router/entities/index.js.map +1 -0
- package/dist/universal-router/entities/protocols/index.d.ts +2 -0
- package/dist/universal-router/entities/protocols/index.js +19 -0
- package/dist/universal-router/entities/protocols/index.js.map +1 -0
- package/dist/universal-router/entities/protocols/uniswap.d.ts +32 -0
- package/dist/universal-router/entities/protocols/uniswap.js +143 -0
- package/dist/universal-router/entities/protocols/uniswap.js.map +1 -0
- package/dist/universal-router/entities/protocols/unwrapWETH.d.ts +12 -0
- package/dist/universal-router/entities/protocols/unwrapWETH.js +35 -0
- package/dist/universal-router/entities/protocols/unwrapWETH.js.map +1 -0
- package/dist/universal-router/entities/trade.d.ts +41 -0
- package/dist/universal-router/entities/trade.js +114 -0
- package/dist/universal-router/entities/trade.js.map +1 -0
- package/dist/universal-router/index.d.ts +5 -0
- package/dist/universal-router/index.js +31 -0
- package/dist/universal-router/index.js.map +1 -0
- package/dist/universal-router/swapRouter.d.ts +29 -0
- package/dist/universal-router/swapRouter.js +102 -0
- package/dist/universal-router/swapRouter.js.map +1 -0
- package/dist/universal-router/utils/constants.d.ts +8 -0
- package/dist/universal-router/utils/constants.js +21 -0
- package/dist/universal-router/utils/constants.js.map +1 -0
- package/dist/universal-router/utils/getNativeCurrencyValue.d.ts +2 -0
- package/dist/universal-router/utils/getNativeCurrencyValue.js +19 -0
- package/dist/universal-router/utils/getNativeCurrencyValue.js.map +1 -0
- package/dist/universal-router/utils/inputTokens.d.ts +16 -0
- package/dist/universal-router/utils/inputTokens.js +44 -0
- package/dist/universal-router/utils/inputTokens.js.map +1 -0
- package/dist/universal-router/utils/numbers.d.ts +6 -0
- package/dist/universal-router/utils/numbers.js +24 -0
- package/dist/universal-router/utils/numbers.js.map +1 -0
- package/dist/universal-router/utils/routerCommands.d.ts +29 -0
- package/dist/universal-router/utils/routerCommands.js +64 -0
- package/dist/universal-router/utils/routerCommands.js.map +1 -0
- package/dist/universal-router/utils/routerTradeAdapter.d.ts +40 -0
- package/dist/universal-router/utils/routerTradeAdapter.js +82 -0
- package/dist/universal-router/utils/routerTradeAdapter.js.map +1 -0
- package/dist/v3/abis.d.ts +6 -0
- package/dist/v3/abis.js +39 -0
- package/dist/v3/abis.js.map +1 -0
- package/dist/v3/constants.d.ts +18 -0
- package/dist/v3/constants.js +26 -0
- package/dist/v3/constants.js.map +1 -0
- package/dist/v3/entities/index.d.ts +7 -0
- package/dist/v3/entities/index.js +24 -0
- package/dist/v3/entities/index.js.map +1 -0
- package/dist/v3/entities/pool.d.ts +81 -0
- package/dist/v3/entities/pool.js +215 -0
- package/dist/v3/entities/pool.js.map +1 -0
- package/dist/v3/entities/position.d.ts +131 -0
- package/dist/v3/entities/position.js +250 -0
- package/dist/v3/entities/position.js.map +1 -0
- package/dist/v3/entities/route.d.ts +26 -0
- package/dist/v3/entities/route.js +77 -0
- package/dist/v3/entities/route.js.map +1 -0
- package/dist/v3/entities/tick.d.ts +13 -0
- package/dist/v3/entities/tick.js +19 -0
- package/dist/v3/entities/tick.js.map +1 -0
- package/dist/v3/entities/tickDataProvider.d.ts +31 -0
- package/dist/v3/entities/tickDataProvider.js +18 -0
- package/dist/v3/entities/tickDataProvider.js.map +1 -0
- package/dist/v3/entities/tickListDataProvider.d.ts +15 -0
- package/dist/v3/entities/tickListDataProvider.js +23 -0
- package/dist/v3/entities/tickListDataProvider.js.map +1 -0
- package/dist/v3/entities/trade.d.ts +220 -0
- package/dist/v3/entities/trade.js +442 -0
- package/dist/v3/entities/trade.js.map +1 -0
- package/dist/v3/index.d.ts +9 -0
- package/dist/v3/index.js +26 -0
- package/dist/v3/index.js.map +1 -0
- package/dist/v3/internalConstants.d.ts +6 -0
- package/dist/v3/internalConstants.js +15 -0
- package/dist/v3/internalConstants.js.map +1 -0
- package/dist/v3/multicall.d.ts +9 -0
- package/dist/v3/multicall.js +20 -0
- package/dist/v3/multicall.js.map +1 -0
- package/dist/v3/nonfungiblePositionManager.d.ts +146 -0
- package/dist/v3/nonfungiblePositionManager.js +231 -0
- package/dist/v3/nonfungiblePositionManager.js.map +1 -0
- package/dist/v3/payments.d.ts +24 -0
- package/dist/v3/payments.js +55 -0
- package/dist/v3/payments.js.map +1 -0
- package/dist/v3/quoter.d.ts +37 -0
- package/dist/v3/quoter.js +76 -0
- package/dist/v3/quoter.js.map +1 -0
- package/dist/v3/selfPermit.d.ts +25 -0
- package/dist/v3/selfPermit.js +37 -0
- package/dist/v3/selfPermit.js.map +1 -0
- package/dist/v3/swapRouter.d.ts +51 -0
- package/dist/v3/swapRouter.js +147 -0
- package/dist/v3/swapRouter.js.map +1 -0
- package/dist/v3/utils/calldata.d.ts +20 -0
- package/dist/v3/utils/calldata.js +22 -0
- package/dist/v3/utils/calldata.js.map +1 -0
- package/dist/v3/utils/computePoolAddress.d.ts +18 -0
- package/dist/v3/utils/computePoolAddress.js +22 -0
- package/dist/v3/utils/computePoolAddress.js.map +1 -0
- package/dist/v3/utils/encodeRouteToPath.d.ts +8 -0
- package/dist/v3/utils/encodeRouteToPath.js +32 -0
- package/dist/v3/utils/encodeRouteToPath.js.map +1 -0
- package/dist/v3/utils/encodeSqrtRatioX96.d.ts +9 -0
- package/dist/v3/utils/encodeSqrtRatioX96.js +22 -0
- package/dist/v3/utils/encodeSqrtRatioX96.js.map +1 -0
- package/dist/v3/utils/fullMath.d.ts +8 -0
- package/dist/v3/utils/fullMath.js +23 -0
- package/dist/v3/utils/fullMath.js.map +1 -0
- package/dist/v3/utils/index.d.ts +17 -0
- package/dist/v3/utils/index.js +34 -0
- package/dist/v3/utils/index.js.map +1 -0
- package/dist/v3/utils/isSorted.d.ts +7 -0
- package/dist/v3/utils/isSorted.js +19 -0
- package/dist/v3/utils/isSorted.js.map +1 -0
- package/dist/v3/utils/liquidityMath.d.ts +8 -0
- package/dist/v3/utils/liquidityMath.js +24 -0
- package/dist/v3/utils/liquidityMath.js.map +1 -0
- package/dist/v3/utils/maxLiquidityForAmounts.d.ts +14 -0
- package/dist/v3/utils/maxLiquidityForAmounts.js +89 -0
- package/dist/v3/utils/maxLiquidityForAmounts.js.map +1 -0
- package/dist/v3/utils/mostSignificantBit.d.ts +2 -0
- package/dist/v3/utils/mostSignificantBit.js +29 -0
- package/dist/v3/utils/mostSignificantBit.js.map +1 -0
- package/dist/v3/utils/nearestUsableTick.d.ts +6 -0
- package/dist/v3/utils/nearestUsableTick.js +27 -0
- package/dist/v3/utils/nearestUsableTick.js.map +1 -0
- package/dist/v3/utils/position.d.ts +8 -0
- package/dist/v3/utils/position.js +23 -0
- package/dist/v3/utils/position.js.map +1 -0
- package/dist/v3/utils/priceTickConversions.d.ts +15 -0
- package/dist/v3/utils/priceTickConversions.js +52 -0
- package/dist/v3/utils/priceTickConversions.js.map +1 -0
- package/dist/v3/utils/sqrtPriceMath.d.ts +13 -0
- package/dist/v3/utils/sqrtPriceMath.js +97 -0
- package/dist/v3/utils/sqrtPriceMath.js.map +1 -0
- package/dist/v3/utils/swapMath.d.ts +9 -0
- package/dist/v3/utils/swapMath.js +79 -0
- package/dist/v3/utils/swapMath.js.map +1 -0
- package/dist/v3/utils/tickLibrary.d.ts +14 -0
- package/dist/v3/utils/tickLibrary.js +53 -0
- package/dist/v3/utils/tickLibrary.js.map +1 -0
- package/dist/v3/utils/tickList.d.ts +23 -0
- package/dist/v3/utils/tickList.js +110 -0
- package/dist/v3/utils/tickList.js.map +1 -0
- package/dist/v3/utils/tickMath.d.ts +34 -0
- package/dist/v3/utils/tickMath.js +127 -0
- package/dist/v3/utils/tickMath.js.map +1 -0
- package/package.json +80 -0
- package/universal-router.d.ts +1 -0
- package/universal-router.js +1 -0
- package/v3.d.ts +1 -0
- package/v3.js +1 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.sortedInsert = void 0;
|
|
7
|
+
const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
|
|
8
|
+
// given an array of items sorted by `comparator`, insert an item into its sort index and constrain the size to
|
|
9
|
+
// `maxSize` by removing the last item
|
|
10
|
+
function sortedInsert(items, add, maxSize, comparator) {
|
|
11
|
+
(0, tiny_invariant_1.default)(maxSize > 0, 'MAX_SIZE_ZERO');
|
|
12
|
+
// this is an invariant because the interface cannot return multiple removed items if items.length exceeds maxSize
|
|
13
|
+
(0, tiny_invariant_1.default)(items.length <= maxSize, 'ITEMS_SIZE');
|
|
14
|
+
// short circuit first item add
|
|
15
|
+
if (items.length === 0) {
|
|
16
|
+
items.push(add);
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
const isFull = items.length === maxSize;
|
|
21
|
+
// short circuit if full and the additional item does not come before the last item
|
|
22
|
+
if (isFull && comparator(items[items.length - 1], add) <= 0) {
|
|
23
|
+
return add;
|
|
24
|
+
}
|
|
25
|
+
let lo = 0, hi = items.length;
|
|
26
|
+
while (lo < hi) {
|
|
27
|
+
const mid = (lo + hi) >>> 1;
|
|
28
|
+
if (comparator(items[mid], add) <= 0) {
|
|
29
|
+
lo = mid + 1;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
hi = mid;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
items.splice(lo, 0, add);
|
|
36
|
+
return isFull ? items.pop() : null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.sortedInsert = sortedInsert;
|
|
40
|
+
//# sourceMappingURL=sortedInsert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sortedInsert.js","sourceRoot":"","sources":["../../../src/core/utils/sortedInsert.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAsC;AAEtC,+GAA+G;AAC/G,sCAAsC;AACtC,SAAgB,YAAY,CAAI,KAAU,EAAE,GAAM,EAAE,OAAe,EAAE,UAAkC;IACrG,IAAA,wBAAS,EAAC,OAAO,GAAG,CAAC,EAAE,eAAe,CAAC,CAAA;IACvC,kHAAkH;IAClH,IAAA,wBAAS,EAAC,KAAK,CAAC,MAAM,IAAI,OAAO,EAAE,YAAY,CAAC,CAAA;IAEhD,+BAA+B;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACf,OAAO,IAAI,CAAA;KACZ;SAAM;QACL,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,OAAO,CAAA;QACvC,mFAAmF;QACnF,IAAI,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YAC3D,OAAO,GAAG,CAAA;SACX;QAED,IAAI,EAAE,GAAG,CAAC,EACR,EAAE,GAAG,KAAK,CAAC,MAAM,CAAA;QAEnB,OAAO,EAAE,GAAG,EAAE,EAAE;YACd,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;YAC3B,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;gBACpC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAA;aACb;iBAAM;gBACL,EAAE,GAAG,GAAG,CAAA;aACT;SACF;QACD,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;QACxB,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAG,CAAC,CAAC,CAAC,IAAI,CAAA;KACpC;AACH,CAAC;AA9BD,oCA8BC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.sqrt = exports.MAX_SAFE_INTEGER = void 0;
|
|
7
|
+
const jsbi_1 = __importDefault(require("jsbi"));
|
|
8
|
+
const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
|
|
9
|
+
exports.MAX_SAFE_INTEGER = jsbi_1.default.BigInt(Number.MAX_SAFE_INTEGER);
|
|
10
|
+
const ZERO = jsbi_1.default.BigInt(0);
|
|
11
|
+
const ONE = jsbi_1.default.BigInt(1);
|
|
12
|
+
const TWO = jsbi_1.default.BigInt(2);
|
|
13
|
+
/**
|
|
14
|
+
* Computes floor(sqrt(value))
|
|
15
|
+
* @param value the value for which to compute the square root, rounded down
|
|
16
|
+
*/
|
|
17
|
+
function sqrt(value) {
|
|
18
|
+
(0, tiny_invariant_1.default)(jsbi_1.default.greaterThanOrEqual(value, ZERO), 'NEGATIVE');
|
|
19
|
+
// rely on built in sqrt if possible
|
|
20
|
+
if (jsbi_1.default.lessThan(value, exports.MAX_SAFE_INTEGER)) {
|
|
21
|
+
return jsbi_1.default.BigInt(Math.floor(Math.sqrt(jsbi_1.default.toNumber(value))));
|
|
22
|
+
}
|
|
23
|
+
let z;
|
|
24
|
+
let x;
|
|
25
|
+
z = value;
|
|
26
|
+
x = jsbi_1.default.add(jsbi_1.default.divide(value, TWO), ONE);
|
|
27
|
+
while (jsbi_1.default.lessThan(x, z)) {
|
|
28
|
+
z = x;
|
|
29
|
+
x = jsbi_1.default.divide(jsbi_1.default.add(jsbi_1.default.divide(value, x), x), TWO);
|
|
30
|
+
}
|
|
31
|
+
return z;
|
|
32
|
+
}
|
|
33
|
+
exports.sqrt = sqrt;
|
|
34
|
+
//# sourceMappingURL=sqrt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqrt.js","sourceRoot":"","sources":["../../../src/core/utils/sqrt.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AACvB,oEAAsC;AAEzB,QAAA,gBAAgB,GAAG,cAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;AAEpE,MAAM,IAAI,GAAG,cAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC3B,MAAM,GAAG,GAAG,cAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC1B,MAAM,GAAG,GAAG,cAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAE1B;;;GAGG;AACH,SAAgB,IAAI,CAAC,KAAW;IAC9B,IAAA,wBAAS,EAAC,cAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,CAAA;IAE3D,oCAAoC;IACpC,IAAI,cAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,wBAAgB,CAAC,EAAE;QAC1C,OAAO,cAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;KAChE;IAED,IAAI,CAAO,CAAA;IACX,IAAI,CAAO,CAAA;IACX,CAAC,GAAG,KAAK,CAAA;IACT,CAAC,GAAG,cAAI,CAAC,GAAG,CAAC,cAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;IAC1C,OAAO,cAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAC1B,CAAC,GAAG,CAAC,CAAA;QACL,CAAC,GAAG,cAAI,CAAC,MAAM,CAAC,cAAI,CAAC,GAAG,CAAC,cAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;KACzD;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAjBD,oBAiBC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates an address and returns the parsed (checksummed) version of that address
|
|
3
|
+
* @param address the unchecksummed hex address
|
|
4
|
+
*/
|
|
5
|
+
export declare function validateAndParseAddress(address: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Checks if an address is valid by checking 0x prefix, length === 42 and hex encoding.
|
|
8
|
+
* @param address the unchecksummed hex address
|
|
9
|
+
*/
|
|
10
|
+
export declare function checkValidAddress(address: string): string;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkValidAddress = exports.validateAndParseAddress = void 0;
|
|
4
|
+
const address_1 = require("@ethersproject/address");
|
|
5
|
+
/**
|
|
6
|
+
* Validates an address and returns the parsed (checksummed) version of that address
|
|
7
|
+
* @param address the unchecksummed hex address
|
|
8
|
+
*/
|
|
9
|
+
function validateAndParseAddress(address) {
|
|
10
|
+
try {
|
|
11
|
+
return (0, address_1.getAddress)(address);
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
throw new Error(`${address} is not a valid address.`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.validateAndParseAddress = validateAndParseAddress;
|
|
18
|
+
// Checks a string starts with 0x, is 42 characters long and contains only hex characters after 0x
|
|
19
|
+
const startsWith0xLen42HexRegex = /^0x[0-9a-fA-F]{40}$/;
|
|
20
|
+
/**
|
|
21
|
+
* Checks if an address is valid by checking 0x prefix, length === 42 and hex encoding.
|
|
22
|
+
* @param address the unchecksummed hex address
|
|
23
|
+
*/
|
|
24
|
+
function checkValidAddress(address) {
|
|
25
|
+
if (startsWith0xLen42HexRegex.test(address)) {
|
|
26
|
+
return address;
|
|
27
|
+
}
|
|
28
|
+
throw new Error(`${address} is not a valid address.`);
|
|
29
|
+
}
|
|
30
|
+
exports.checkValidAddress = checkValidAddress;
|
|
31
|
+
//# sourceMappingURL=validateAndParseAddress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateAndParseAddress.js","sourceRoot":"","sources":["../../../src/core/utils/validateAndParseAddress.ts"],"names":[],"mappings":";;;AAAA,oDAAmD;AAEnD;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,OAAe;IACrD,IAAI;QACF,OAAO,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAA;KAC3B;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,0BAA0B,CAAC,CAAA;KACtD;AACH,CAAC;AAND,0DAMC;AAED,kGAAkG;AAClG,MAAM,yBAAyB,GAAG,qBAAqB,CAAA;AAEvD;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAC3C,OAAO,OAAO,CAAA;KACf;IAED,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,0BAA0B,CAAC,CAAA;AACvD,CAAC;AAND,8CAMC"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
26
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.UniversalRouter = exports.V3 = exports.Core = void 0;
|
|
30
|
+
exports.Core = __importStar(require("./core"));
|
|
31
|
+
exports.V3 = __importStar(require("./v3"));
|
|
32
|
+
exports.UniversalRouter = __importStar(require("./universal-router"));
|
|
33
|
+
__exportStar(require("./core"), exports);
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA8B;AAC9B,2CAA0B;AAC1B,sEAAqD;AACrD,yCAAsB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RoutePlanner } from '../utils/routerCommands';
|
|
2
|
+
export type TradeConfig = {
|
|
3
|
+
allowRevert: boolean;
|
|
4
|
+
};
|
|
5
|
+
export declare enum RouterTradeType {
|
|
6
|
+
UniswapTrade = "UniswapTrade",
|
|
7
|
+
UnwrapWETH = "UnwrapWETH"
|
|
8
|
+
}
|
|
9
|
+
export interface Command {
|
|
10
|
+
tradeType: RouterTradeType;
|
|
11
|
+
encode(planner: RoutePlanner, config: TradeConfig): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RouterTradeType = void 0;
|
|
4
|
+
var RouterTradeType;
|
|
5
|
+
(function (RouterTradeType) {
|
|
6
|
+
RouterTradeType["UniswapTrade"] = "UniswapTrade";
|
|
7
|
+
RouterTradeType["UnwrapWETH"] = "UnwrapWETH";
|
|
8
|
+
})(RouterTradeType = exports.RouterTradeType || (exports.RouterTradeType = {}));
|
|
9
|
+
//# sourceMappingURL=Command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Command.js","sourceRoot":"","sources":["../../../src/universal-router/entities/Command.ts"],"names":[],"mappings":";;;AAMA,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,gDAA6B,CAAA;IAC7B,4CAAyB,CAAA;AAC3B,CAAC,EAHW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAG1B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./trade"), exports);
|
|
18
|
+
__exportStar(require("./protocols"), exports);
|
|
19
|
+
__exportStar(require("./Command"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/universal-router/entities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,8CAA2B;AAC3B,4CAAyB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./uniswap"), exports);
|
|
18
|
+
__exportStar(require("./unwrapWETH"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/universal-router/entities/protocols/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,+CAA4B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { RoutePlanner } from '../../utils/routerCommands';
|
|
2
|
+
import { Permit2Permit } from '../../utils/inputTokens';
|
|
3
|
+
import { Currency, TradeType, Percent } from '../../../core';
|
|
4
|
+
import { Command, RouterTradeType, TradeConfig } from '../Command';
|
|
5
|
+
import { SynthraTrade } from '../trade';
|
|
6
|
+
import { BigNumberish } from 'ethers';
|
|
7
|
+
export type FlatFeeOptions = {
|
|
8
|
+
amount: BigNumberish;
|
|
9
|
+
recipient: string;
|
|
10
|
+
};
|
|
11
|
+
export type SwapOptions = {
|
|
12
|
+
slippageTolerance: Percent;
|
|
13
|
+
recipient?: string;
|
|
14
|
+
deadlineOrPreviousBlockhash?: BigNumberish;
|
|
15
|
+
fee?: {
|
|
16
|
+
fee: Percent;
|
|
17
|
+
recipient: string;
|
|
18
|
+
};
|
|
19
|
+
useRouterBalance?: boolean;
|
|
20
|
+
inputTokenPermit?: Permit2Permit;
|
|
21
|
+
flatFee?: FlatFeeOptions;
|
|
22
|
+
safeMode?: boolean;
|
|
23
|
+
};
|
|
24
|
+
export declare class UniswapTrade implements Command {
|
|
25
|
+
trade: SynthraTrade<Currency, Currency, TradeType>;
|
|
26
|
+
options: SwapOptions;
|
|
27
|
+
readonly tradeType: RouterTradeType;
|
|
28
|
+
readonly payerIsUser: boolean;
|
|
29
|
+
constructor(trade: SynthraTrade<Currency, Currency, TradeType>, options: SwapOptions);
|
|
30
|
+
get inputRequiresWrap(): boolean;
|
|
31
|
+
encode(planner: RoutePlanner, _config: TradeConfig): void;
|
|
32
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UniswapTrade = void 0;
|
|
4
|
+
const routerCommands_1 = require("../../utils/routerCommands");
|
|
5
|
+
const v3_1 = require("../../../v3");
|
|
6
|
+
const core_1 = require("../../../core");
|
|
7
|
+
const Command_1 = require("../Command");
|
|
8
|
+
const constants_1 = require("../../utils/constants");
|
|
9
|
+
const numbers_1 = require("../../utils/numbers");
|
|
10
|
+
const ethers_1 = require("ethers");
|
|
11
|
+
const REFUND_ETH_PRICE_IMPACT_THRESHOLD = new core_1.Percent(50, 100);
|
|
12
|
+
class UniswapTrade {
|
|
13
|
+
constructor(trade, options) {
|
|
14
|
+
this.trade = trade;
|
|
15
|
+
this.options = options;
|
|
16
|
+
this.tradeType = Command_1.RouterTradeType.UniswapTrade;
|
|
17
|
+
if (!!options.fee && !!options.flatFee)
|
|
18
|
+
throw new Error('Only one fee option permitted');
|
|
19
|
+
if (this.inputRequiresWrap)
|
|
20
|
+
this.payerIsUser = false;
|
|
21
|
+
else if (this.options.useRouterBalance)
|
|
22
|
+
this.payerIsUser = false;
|
|
23
|
+
else
|
|
24
|
+
this.payerIsUser = true;
|
|
25
|
+
}
|
|
26
|
+
get inputRequiresWrap() {
|
|
27
|
+
return this.trade.inputAmount.currency.isNative;
|
|
28
|
+
}
|
|
29
|
+
encode(planner, _config) {
|
|
30
|
+
var _a;
|
|
31
|
+
// If the input currency is the native currency, we need to wrap it with the router as the recipient
|
|
32
|
+
if (this.inputRequiresWrap) {
|
|
33
|
+
planner.addCommand(routerCommands_1.CommandType.WRAP_ETH, [
|
|
34
|
+
constants_1.ROUTER_AS_RECIPIENT,
|
|
35
|
+
this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString(),
|
|
36
|
+
]);
|
|
37
|
+
}
|
|
38
|
+
// The overall recipient at the end of the trade, SENDER_AS_RECIPIENT uses the msg.sender
|
|
39
|
+
this.options.recipient = (_a = this.options.recipient) !== null && _a !== void 0 ? _a : constants_1.SENDER_AS_RECIPIENT;
|
|
40
|
+
// flag for whether we want to perform slippage check on aggregate output of multiple routes
|
|
41
|
+
// 1. when there are >2 exact input trades. this is only a heuristic,
|
|
42
|
+
// as it's still more gas-expensive even in this case, but has benefits
|
|
43
|
+
// in that the reversion probability is lower
|
|
44
|
+
const performAggregatedSlippageCheck = this.trade.tradeType === core_1.TradeType.EXACT_INPUT && this.trade.routes.length > 2;
|
|
45
|
+
const outputIsNative = this.trade.outputAmount.currency.isNative;
|
|
46
|
+
const routerMustCustody = performAggregatedSlippageCheck || outputIsNative || hasFeeOption(this.options);
|
|
47
|
+
for (const swap of this.trade.swaps) {
|
|
48
|
+
addV3Swap(planner, swap, this.trade.tradeType, this.options, this.payerIsUser, routerMustCustody);
|
|
49
|
+
}
|
|
50
|
+
let minimumAmountOut = ethers_1.BigNumber.from(this.trade.minimumAmountOut(this.options.slippageTolerance).quotient.toString());
|
|
51
|
+
// The router custodies for 3 reasons: to unwrap, to take a fee, and/or to do a slippage check
|
|
52
|
+
if (routerMustCustody) {
|
|
53
|
+
// If there is a fee, that percentage is sent to the fee recipient
|
|
54
|
+
// In the case where ETH is the output currency, the fee is taken in WETH (for gas reasons)
|
|
55
|
+
if (!!this.options.fee) {
|
|
56
|
+
const feeBips = (0, numbers_1.encodeFeeBips)(this.options.fee.fee);
|
|
57
|
+
planner.addCommand(routerCommands_1.CommandType.PAY_PORTION, [
|
|
58
|
+
this.trade.outputAmount.currency.wrapped.address,
|
|
59
|
+
this.options.fee.recipient,
|
|
60
|
+
feeBips,
|
|
61
|
+
]);
|
|
62
|
+
// If the trade is exact output, and a fee was taken, we must adjust the amount out to be the amount after the fee
|
|
63
|
+
// Otherwise we continue as expected with the trade's normal expected output
|
|
64
|
+
if (this.trade.tradeType === core_1.TradeType.EXACT_OUTPUT) {
|
|
65
|
+
minimumAmountOut = minimumAmountOut.sub(minimumAmountOut.mul(feeBips).div(10000));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// If there is a flat fee, that absolute amount is sent to the fee recipient
|
|
69
|
+
// In the case where ETH is the output currency, the fee is taken in WETH (for gas reasons)
|
|
70
|
+
if (!!this.options.flatFee) {
|
|
71
|
+
const feeAmount = this.options.flatFee.amount;
|
|
72
|
+
if (minimumAmountOut.lt(feeAmount))
|
|
73
|
+
throw new Error('Flat fee amount greater than minimumAmountOut');
|
|
74
|
+
planner.addCommand(routerCommands_1.CommandType.TRANSFER, [
|
|
75
|
+
this.trade.outputAmount.currency.wrapped.address,
|
|
76
|
+
this.options.flatFee.recipient,
|
|
77
|
+
feeAmount,
|
|
78
|
+
]);
|
|
79
|
+
// If the trade is exact output, and a fee was taken, we must adjust the amount out to be the amount after the fee
|
|
80
|
+
// Otherwise we continue as expected with the trade's normal expected output
|
|
81
|
+
if (this.trade.tradeType === core_1.TradeType.EXACT_OUTPUT) {
|
|
82
|
+
minimumAmountOut = minimumAmountOut.sub(feeAmount);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// The remaining tokens that need to be sent to the user after the fee is taken will be caught
|
|
86
|
+
// by this if-else clause.
|
|
87
|
+
if (outputIsNative) {
|
|
88
|
+
planner.addCommand(routerCommands_1.CommandType.UNWRAP_WETH, [this.options.recipient, minimumAmountOut]);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
planner.addCommand(routerCommands_1.CommandType.SWEEP, [
|
|
92
|
+
this.trade.outputAmount.currency.wrapped.address,
|
|
93
|
+
this.options.recipient,
|
|
94
|
+
minimumAmountOut,
|
|
95
|
+
]);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (this.inputRequiresWrap && (this.trade.tradeType === core_1.TradeType.EXACT_OUTPUT || riskOfPartialFill(this.trade))) {
|
|
99
|
+
// for exactOutput swaps that take native currency as input
|
|
100
|
+
// we need to send back the change to the user
|
|
101
|
+
planner.addCommand(routerCommands_1.CommandType.UNWRAP_WETH, [this.options.recipient, 0]);
|
|
102
|
+
}
|
|
103
|
+
if (this.options.safeMode)
|
|
104
|
+
planner.addCommand(routerCommands_1.CommandType.SWEEP, [constants_1.ETH_ADDRESS, this.options.recipient, 0]);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.UniswapTrade = UniswapTrade;
|
|
108
|
+
// encode a V3 swap
|
|
109
|
+
function addV3Swap(planner, { route, inputAmount, outputAmount }, tradeType, options, payerIsUser, routerMustCustody) {
|
|
110
|
+
const trade = v3_1.Trade.createUncheckedTrade({
|
|
111
|
+
route,
|
|
112
|
+
inputAmount,
|
|
113
|
+
outputAmount,
|
|
114
|
+
tradeType,
|
|
115
|
+
});
|
|
116
|
+
const path = (0, v3_1.encodeRouteToPath)(route, trade.tradeType === core_1.TradeType.EXACT_OUTPUT);
|
|
117
|
+
if (tradeType == core_1.TradeType.EXACT_INPUT) {
|
|
118
|
+
planner.addCommand(routerCommands_1.CommandType.V3_SWAP_EXACT_IN, [
|
|
119
|
+
routerMustCustody ? constants_1.ROUTER_AS_RECIPIENT : options.recipient,
|
|
120
|
+
trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),
|
|
121
|
+
trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),
|
|
122
|
+
path,
|
|
123
|
+
payerIsUser,
|
|
124
|
+
]);
|
|
125
|
+
}
|
|
126
|
+
else if (tradeType == core_1.TradeType.EXACT_OUTPUT) {
|
|
127
|
+
planner.addCommand(routerCommands_1.CommandType.V3_SWAP_EXACT_OUT, [
|
|
128
|
+
routerMustCustody ? constants_1.ROUTER_AS_RECIPIENT : options.recipient,
|
|
129
|
+
trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),
|
|
130
|
+
trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),
|
|
131
|
+
path,
|
|
132
|
+
payerIsUser,
|
|
133
|
+
]);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// if price impact is very high, there's a chance of hitting max/min prices resulting in a partial fill of the swap
|
|
137
|
+
function riskOfPartialFill(trade) {
|
|
138
|
+
return trade.priceImpact.greaterThan(REFUND_ETH_PRICE_IMPACT_THRESHOLD);
|
|
139
|
+
}
|
|
140
|
+
function hasFeeOption(swapOptions) {
|
|
141
|
+
return !!swapOptions.fee || !!swapOptions.flatFee;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=uniswap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uniswap.js","sourceRoot":"","sources":["../../../../src/universal-router/entities/protocols/uniswap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BigNumberish } from 'ethers';
|
|
2
|
+
import { RoutePlanner } from '../../utils/routerCommands';
|
|
3
|
+
import { Permit2Permit } from '../../utils/inputTokens';
|
|
4
|
+
import { Command, RouterTradeType, TradeConfig } from '../Command';
|
|
5
|
+
export declare class UnwrapWETH implements Command {
|
|
6
|
+
readonly tradeType: RouterTradeType;
|
|
7
|
+
readonly permit2Data: Permit2Permit;
|
|
8
|
+
readonly wethAddress: string;
|
|
9
|
+
readonly amount: BigNumberish;
|
|
10
|
+
constructor(amount: BigNumberish, chainId: number, permit2?: Permit2Permit);
|
|
11
|
+
encode(planner: RoutePlanner, _: TradeConfig): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.UnwrapWETH = void 0;
|
|
7
|
+
const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
|
|
8
|
+
const routerCommands_1 = require("../../utils/routerCommands");
|
|
9
|
+
const inputTokens_1 = require("../../utils/inputTokens");
|
|
10
|
+
const Command_1 = require("../Command");
|
|
11
|
+
const constants_1 = require("../../utils/constants");
|
|
12
|
+
class UnwrapWETH {
|
|
13
|
+
constructor(amount, chainId, permit2) {
|
|
14
|
+
this.tradeType = Command_1.RouterTradeType.UnwrapWETH;
|
|
15
|
+
this.wethAddress = (0, constants_1.WETH_ADDRESS)(chainId);
|
|
16
|
+
this.amount = amount;
|
|
17
|
+
if (!!permit2) {
|
|
18
|
+
(0, tiny_invariant_1.default)(permit2.details.token.toLowerCase() === this.wethAddress.toLowerCase(), `must be permitting WETH address: ${this.wethAddress}`);
|
|
19
|
+
(0, tiny_invariant_1.default)(permit2.details.amount >= amount, `Did not permit enough WETH for unwrapWETH transaction`);
|
|
20
|
+
this.permit2Data = permit2;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
encode(planner, _) {
|
|
24
|
+
(0, inputTokens_1.encodeInputTokenOptions)(planner, {
|
|
25
|
+
permit2Permit: this.permit2Data,
|
|
26
|
+
permit2TransferFrom: {
|
|
27
|
+
token: this.wethAddress,
|
|
28
|
+
amount: this.amount.toString(),
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
planner.addCommand(routerCommands_1.CommandType.UNWRAP_WETH, [constants_1.ROUTER_AS_RECIPIENT, this.amount]);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.UnwrapWETH = UnwrapWETH;
|
|
35
|
+
//# sourceMappingURL=unwrapWETH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unwrapWETH.js","sourceRoot":"","sources":["../../../../src/universal-router/entities/protocols/unwrapWETH.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAsC;AAEtC,+DAAsE;AACtE,yDAAgF;AAChF,wCAAkE;AAClE,qDAAyE;AAEzE,MAAa,UAAU;IAMrB,YAAY,MAAoB,EAAE,OAAe,EAAE,OAAuB;QALjE,cAAS,GAAoB,yBAAe,CAAC,UAAU,CAAA;QAM9D,IAAI,CAAC,WAAW,GAAG,IAAA,wBAAY,EAAC,OAAO,CAAC,CAAA;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,IAAI,CAAC,CAAC,OAAO,EAAE;YACb,IAAA,wBAAS,EACP,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EACtE,oCAAoC,IAAI,CAAC,WAAW,EAAE,CACvD,CAAA;YACD,IAAA,wBAAS,EAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,uDAAuD,CAAC,CAAA;YACpG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAA;SAC3B;IACH,CAAC;IAED,MAAM,CAAC,OAAqB,EAAE,CAAc;QAC1C,IAAA,qCAAuB,EAAC,OAAO,EAAE;YAC/B,aAAa,EAAE,IAAI,CAAC,WAAW;YAC/B,mBAAmB,EAAE;gBACnB,KAAK,EAAE,IAAI,CAAC,WAAW;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;aAC/B;SACF,CAAC,CAAA;QACF,OAAO,CAAC,UAAU,CAAC,4BAAW,CAAC,WAAW,EAAE,CAAC,+BAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACjF,CAAC;CACF;AA9BD,gCA8BC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Currency, CurrencyAmount, Percent, Price, TradeType } from '../../core';
|
|
2
|
+
import { Route as V3Route } from '../../v3';
|
|
3
|
+
export declare const ONE = 1;
|
|
4
|
+
export declare const ZERO_PERCENT: Percent;
|
|
5
|
+
export declare const ONE_HUNDRED_PERCENT: Percent;
|
|
6
|
+
export declare enum Protocol {
|
|
7
|
+
V3 = "V3"
|
|
8
|
+
}
|
|
9
|
+
export type V3RouteWithAmounts<TInput extends Currency, TOutput extends Currency> = {
|
|
10
|
+
routev3: V3Route<TInput, TOutput>;
|
|
11
|
+
inputAmount: CurrencyAmount<TInput>;
|
|
12
|
+
outputAmount: CurrencyAmount<TOutput>;
|
|
13
|
+
};
|
|
14
|
+
export type SynthraTradeConstructorArgs<TInput extends Currency, TOutput extends Currency, TTradeType extends TradeType> = {
|
|
15
|
+
v3Routes: V3RouteWithAmounts<TInput, TOutput>[];
|
|
16
|
+
tradeType: TTradeType;
|
|
17
|
+
};
|
|
18
|
+
export declare class SynthraTrade<TInput extends Currency, TOutput extends Currency, TTradeType extends TradeType> {
|
|
19
|
+
readonly routes: V3Route<TInput, TOutput>[];
|
|
20
|
+
readonly swaps: {
|
|
21
|
+
route: V3Route<TInput, TOutput>;
|
|
22
|
+
inputAmount: CurrencyAmount<TInput>;
|
|
23
|
+
outputAmount: CurrencyAmount<TOutput>;
|
|
24
|
+
}[];
|
|
25
|
+
readonly tradeType: TTradeType;
|
|
26
|
+
private _inputAmount?;
|
|
27
|
+
private _outputAmount?;
|
|
28
|
+
private _executionPrice?;
|
|
29
|
+
private _priceImpact?;
|
|
30
|
+
constructor({ v3Routes, tradeType }: SynthraTradeConstructorArgs<TInput, TOutput, TTradeType>);
|
|
31
|
+
get inputAmount(): CurrencyAmount<TInput>;
|
|
32
|
+
get outputAmount(): CurrencyAmount<TOutput>;
|
|
33
|
+
get executionPrice(): Price<TInput, TOutput>;
|
|
34
|
+
get inputTax(): Percent;
|
|
35
|
+
get outputTax(): Percent;
|
|
36
|
+
get priceImpact(): Percent;
|
|
37
|
+
minimumAmountOut(slippageTolerance: Percent, amountOut?: CurrencyAmount<TOutput>): CurrencyAmount<TOutput>;
|
|
38
|
+
maximumAmountIn(slippageTolerance: Percent, amountIn?: CurrencyAmount<TInput>): CurrencyAmount<TInput>;
|
|
39
|
+
worstExecutionPrice(slippageTolerance: Percent): Price<TInput, TOutput>;
|
|
40
|
+
}
|
|
41
|
+
export { SynthraTrade as Trade };
|