@kittycorn-labs/universal-router-sdk 1.1.0 → 1.3.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/dist/test/utils/uniswapData.d.ts +3 -2
- package/dist/universal-router-sdk.cjs.development.js +84 -7
- package/dist/universal-router-sdk.cjs.development.js.map +1 -1
- package/dist/universal-router-sdk.cjs.production.min.js +1 -1
- package/dist/universal-router-sdk.cjs.production.min.js.map +1 -1
- package/dist/universal-router-sdk.esm.js +84 -7
- package/dist/universal-router-sdk.esm.js.map +1 -1
- package/package.json +3 -3
|
@@ -10,6 +10,7 @@ import { Trade, Pair, Route as Route$2 } from '@uniswap/v2-sdk';
|
|
|
10
10
|
import { Protocol, MixedRouteTrade, partitionMixedRouteByProtocol, getOutputOfPools, MixedRoute, MixedRouteSDK, encodeMixedRouteToPath, Trade as Trade$3 } from '@kittycorn-labs/router-sdk';
|
|
11
11
|
import 'jsbi';
|
|
12
12
|
import 'bignumber.js';
|
|
13
|
+
import { getSupportUnderlyingByTokenize, getSupportTokenizeByUnderlying } from '@kittycorn-labs/smart-order-router';
|
|
13
14
|
|
|
14
15
|
function _arrayLikeToArray(r, a) {
|
|
15
16
|
(null == a || a > r.length) && (a = r.length);
|
|
@@ -419,7 +420,7 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
419
420
|
creationBlock: 8940568
|
|
420
421
|
}, _routerConfigs2)
|
|
421
422
|
}, _CHAIN_CONFIGS[11155111] = {
|
|
422
|
-
weth: '
|
|
423
|
+
weth: '0xC558DBdd856501FCd9aaF1E62eae57A9F0629a3c',
|
|
423
424
|
routerConfigs: (_routerConfigs3 = {}, _routerConfigs3[UniversalRouterVersion.V1_2] = {
|
|
424
425
|
address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
|
|
425
426
|
creationBlock: 3543575
|
|
@@ -839,8 +840,85 @@ function addV3Swap(planner, _ref2, tradeType, options, payerIsUser, routerMustCu
|
|
|
839
840
|
planner.addCommand(CommandType.V3_SWAP_EXACT_OUT, [routerMustCustody ? ROUTER_AS_RECIPIENT : options.recipient, trade.minimumAmountOut(options.slippageTolerance).quotient.toString(), trade.maximumAmountIn(options.slippageTolerance).quotient.toString(), path, payerIsUser]);
|
|
840
841
|
}
|
|
841
842
|
}
|
|
842
|
-
function
|
|
843
|
+
function getReducePools(pools, tokenIn, tokenOut) {
|
|
844
|
+
if (pools.length < 3) {
|
|
845
|
+
return pools;
|
|
846
|
+
}
|
|
847
|
+
var chainId = pools[0].chainId;
|
|
848
|
+
var token0 = getSupportUnderlyingByTokenize(chainId, tokenIn); // assume tokenIn is tokenize
|
|
849
|
+
var token1 = getSupportUnderlyingByTokenize(chainId, tokenOut); // assume tokenOut is tokenize
|
|
850
|
+
var isSupport0 = token0 !== undefined;
|
|
851
|
+
var isSupport1 = token1 !== undefined;
|
|
852
|
+
var underlyingIn = isSupport0 ? token0 : tokenIn;
|
|
853
|
+
var underlyingOut = isSupport1 ? token1 : tokenOut;
|
|
854
|
+
// Find reduce pool for
|
|
855
|
+
// - first pool is underlying and tokenize for tokenIn
|
|
856
|
+
// - last pool is underlying and previous tokenize for tokenOut
|
|
857
|
+
if (!isSupport0) {
|
|
858
|
+
var tokenizeIn = getSupportTokenizeByUnderlying(chainId, underlyingIn);
|
|
859
|
+
if (tokenizeIn !== undefined) {
|
|
860
|
+
var reduceFirst = pools[0].token0.equals(underlyingIn) && pools[0].token1.equals(tokenizeIn) || pools[0].token0.equals(tokenizeIn) && pools[0].token1.equals(underlyingIn);
|
|
861
|
+
if (reduceFirst) {
|
|
862
|
+
pools.shift();
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
if (!isSupport1) {
|
|
867
|
+
var tokenizeOut = getSupportTokenizeByUnderlying(chainId, underlyingOut);
|
|
868
|
+
if (tokenizeOut !== undefined) {
|
|
869
|
+
var lastIndex = pools.length - 1;
|
|
870
|
+
var reduceLast = pools[lastIndex].token0.equals(underlyingOut) && pools[lastIndex].token1.equals(tokenizeOut) || pools[lastIndex].token0.equals(tokenizeOut) && pools[lastIndex].token1.equals(underlyingOut);
|
|
871
|
+
if (reduceLast) {
|
|
872
|
+
pools.pop();
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
return pools;
|
|
877
|
+
}
|
|
878
|
+
function buildV4Planner(trade, tradeType, options, payerIsUser, routerMustCustody) {
|
|
843
879
|
var _options$recipient;
|
|
880
|
+
var chainId = trade.route.chainId;
|
|
881
|
+
var currencyIn = trade.route.pathInput;
|
|
882
|
+
var currencyOut = trade.route.pathOutput;
|
|
883
|
+
var slippageToleranceOnSwap = routerMustCustody && tradeType == TradeType.EXACT_INPUT ? undefined : options.slippageTolerance;
|
|
884
|
+
// Make tokens path from pools
|
|
885
|
+
var path = [];
|
|
886
|
+
var nextToken = currencyIn;
|
|
887
|
+
trade.route.pools.forEach(function (pool) {
|
|
888
|
+
if (nextToken.equals(pool.token0)) {
|
|
889
|
+
path.push(pool.token0);
|
|
890
|
+
nextToken = pool.token1;
|
|
891
|
+
} else {
|
|
892
|
+
path.push(pool.token1);
|
|
893
|
+
nextToken = pool.token0;
|
|
894
|
+
}
|
|
895
|
+
});
|
|
896
|
+
var v4Planner = new V4Planner();
|
|
897
|
+
// Add trade swap type with encode pathKeys
|
|
898
|
+
v4Planner.addTrade(trade, slippageToleranceOnSwap);
|
|
899
|
+
// Pay currency in
|
|
900
|
+
v4Planner.addSettle(currencyIn, payerIsUser);
|
|
901
|
+
var token0 = getSupportUnderlyingByTokenize(chainId, currencyIn);
|
|
902
|
+
var isSupport0 = token0 !== undefined;
|
|
903
|
+
// Build action planner for path
|
|
904
|
+
for (var i = 1; i < path.length; i++) {
|
|
905
|
+
var token1 = getSupportUnderlyingByTokenize(chainId, path[i]);
|
|
906
|
+
var isSupport1 = token1 !== undefined;
|
|
907
|
+
if (isSupport0 && path[i].equals(token0)) {
|
|
908
|
+
v4Planner.addTake(path[i - 1], ROUTER_AS_RECIPIENT);
|
|
909
|
+
v4Planner.addSettle(token0, false);
|
|
910
|
+
} else if (isSupport1 && path[i - 1].equals(token1)) {
|
|
911
|
+
v4Planner.addTake(token1, ROUTER_AS_RECIPIENT);
|
|
912
|
+
v4Planner.addSettle(path[i], false);
|
|
913
|
+
}
|
|
914
|
+
isSupport0 = isSupport1;
|
|
915
|
+
token0 = token1;
|
|
916
|
+
}
|
|
917
|
+
// Take currency out
|
|
918
|
+
v4Planner.addTake(currencyOut, routerMustCustody ? ROUTER_AS_RECIPIENT : (_options$recipient = options.recipient) != null ? _options$recipient : SENDER_AS_RECIPIENT);
|
|
919
|
+
return v4Planner;
|
|
920
|
+
}
|
|
921
|
+
function addV4Swap(planner, _ref3, tradeType, options, payerIsUser, routerMustCustody) {
|
|
844
922
|
var inputAmount = _ref3.inputAmount,
|
|
845
923
|
outputAmount = _ref3.outputAmount,
|
|
846
924
|
route = _ref3.route;
|
|
@@ -848,6 +926,8 @@ function addV4Swap(planner, _ref3, tradeType, options, payerIsUser, routerMustCu
|
|
|
848
926
|
var pools = route.pools.map(function (p) {
|
|
849
927
|
return p;
|
|
850
928
|
});
|
|
929
|
+
// reduce pools for tokenize
|
|
930
|
+
pools = getReducePools(pools, inputAmount.currency, outputAmount.currency);
|
|
851
931
|
var v4Route = new Route(pools, inputAmount.currency, outputAmount.currency);
|
|
852
932
|
var trade = Trade$2.createUncheckedTrade({
|
|
853
933
|
route: v4Route,
|
|
@@ -855,11 +935,8 @@ function addV4Swap(planner, _ref3, tradeType, options, payerIsUser, routerMustCu
|
|
|
855
935
|
outputAmount: outputAmount,
|
|
856
936
|
tradeType: tradeType
|
|
857
937
|
});
|
|
858
|
-
|
|
859
|
-
var v4Planner =
|
|
860
|
-
v4Planner.addTrade(trade, slippageToleranceOnSwap);
|
|
861
|
-
v4Planner.addSettle(trade.route.pathInput, payerIsUser);
|
|
862
|
-
v4Planner.addTake(trade.route.pathOutput, routerMustCustody ? ROUTER_AS_RECIPIENT : (_options$recipient = options.recipient) != null ? _options$recipient : SENDER_AS_RECIPIENT);
|
|
938
|
+
// build planner
|
|
939
|
+
var v4Planner = buildV4Planner(trade, tradeType, options, payerIsUser, routerMustCustody);
|
|
863
940
|
planner.addCommand(CommandType.V4_SWAP, [v4Planner.finalize()]);
|
|
864
941
|
}
|
|
865
942
|
// encode a mixed route swap, i.e. including both v2 and v3 pools
|