@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
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { MixedRouteTrade, Trade as RouterTrade } from '@kittycorn-labs/router-sdk';
|
|
2
2
|
import { Trade as V2Trade, Pair } from '@uniswap/v2-sdk';
|
|
3
3
|
import { Trade as V3Trade, Pool, FeeAmount } from '@uniswap/v3-sdk';
|
|
4
|
-
import { Trade as V4Trade } from '@kittycorn-labs/v4-sdk';
|
|
4
|
+
import { Pool as V4Pool, Trade as V4Trade } from '@kittycorn-labs/v4-sdk';
|
|
5
5
|
import { SwapOptions } from '../../src';
|
|
6
|
-
import { TradeType, Ether, Token, Currency } from '@
|
|
6
|
+
import { TradeType, Ether, Token, Currency, ChainId } from '@kittycorn-labs/sdk-core';
|
|
7
7
|
export declare const ETHER: Ether;
|
|
8
8
|
export declare const WETH: Token;
|
|
9
9
|
export declare const DAI: Token;
|
|
@@ -19,6 +19,7 @@ declare type UniswapPools = {
|
|
|
19
19
|
export declare function getUniswapPools(forkBlock?: number): Promise<UniswapPools>;
|
|
20
20
|
export declare function getPair(tokenA: Token, tokenB: Token, blockNumber: number): Promise<Pair>;
|
|
21
21
|
export declare function getPool(tokenA: Token, tokenB: Token, feeAmount: FeeAmount, blockNumber: number): Promise<Pool>;
|
|
22
|
+
export declare function getPoolTokenize(chainId: ChainId, tokenize: Token): V4Pool;
|
|
22
23
|
export declare function swapOptions(options: Partial<SwapOptions>): SwapOptions;
|
|
23
24
|
export declare function buildTrade(trades: (V2Trade<Currency, Currency, TradeType> | V3Trade<Currency, Currency, TradeType> | V4Trade<Currency, Currency, TradeType> | MixedRouteTrade<Currency, Currency, TradeType>)[]): RouterTrade<Currency, Currency, TradeType>;
|
|
24
25
|
export {};
|
|
@@ -16,6 +16,7 @@ var v2Sdk = require('@uniswap/v2-sdk');
|
|
|
16
16
|
var routerSdk = require('@kittycorn-labs/router-sdk');
|
|
17
17
|
require('jsbi');
|
|
18
18
|
require('bignumber.js');
|
|
19
|
+
var smartOrderRouter = require('@kittycorn-labs/smart-order-router');
|
|
19
20
|
|
|
20
21
|
function _arrayLikeToArray(r, a) {
|
|
21
22
|
(null == a || a > r.length) && (a = r.length);
|
|
@@ -415,7 +416,7 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
415
416
|
creationBlock: 8940568
|
|
416
417
|
}, _routerConfigs2)
|
|
417
418
|
}, _CHAIN_CONFIGS[11155111] = {
|
|
418
|
-
weth: '
|
|
419
|
+
weth: '0xC558DBdd856501FCd9aaF1E62eae57A9F0629a3c',
|
|
419
420
|
routerConfigs: (_routerConfigs3 = {}, _routerConfigs3[exports.UniversalRouterVersion.V1_2] = {
|
|
420
421
|
address: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
|
|
421
422
|
creationBlock: 3543575
|
|
@@ -835,8 +836,85 @@ function addV3Swap(planner, _ref2, tradeType, options, payerIsUser, routerMustCu
|
|
|
835
836
|
planner.addCommand(exports.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]);
|
|
836
837
|
}
|
|
837
838
|
}
|
|
838
|
-
function
|
|
839
|
+
function getReducePools(pools, tokenIn, tokenOut) {
|
|
840
|
+
if (pools.length < 3) {
|
|
841
|
+
return pools;
|
|
842
|
+
}
|
|
843
|
+
var chainId = pools[0].chainId;
|
|
844
|
+
var token0 = smartOrderRouter.getSupportUnderlyingByTokenize(chainId, tokenIn); // assume tokenIn is tokenize
|
|
845
|
+
var token1 = smartOrderRouter.getSupportUnderlyingByTokenize(chainId, tokenOut); // assume tokenOut is tokenize
|
|
846
|
+
var isSupport0 = token0 !== undefined;
|
|
847
|
+
var isSupport1 = token1 !== undefined;
|
|
848
|
+
var underlyingIn = isSupport0 ? token0 : tokenIn;
|
|
849
|
+
var underlyingOut = isSupport1 ? token1 : tokenOut;
|
|
850
|
+
// Find reduce pool for
|
|
851
|
+
// - first pool is underlying and tokenize for tokenIn
|
|
852
|
+
// - last pool is underlying and previous tokenize for tokenOut
|
|
853
|
+
if (!isSupport0) {
|
|
854
|
+
var tokenizeIn = smartOrderRouter.getSupportTokenizeByUnderlying(chainId, underlyingIn);
|
|
855
|
+
if (tokenizeIn !== undefined) {
|
|
856
|
+
var reduceFirst = pools[0].token0.equals(underlyingIn) && pools[0].token1.equals(tokenizeIn) || pools[0].token0.equals(tokenizeIn) && pools[0].token1.equals(underlyingIn);
|
|
857
|
+
if (reduceFirst) {
|
|
858
|
+
pools.shift();
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
if (!isSupport1) {
|
|
863
|
+
var tokenizeOut = smartOrderRouter.getSupportTokenizeByUnderlying(chainId, underlyingOut);
|
|
864
|
+
if (tokenizeOut !== undefined) {
|
|
865
|
+
var lastIndex = pools.length - 1;
|
|
866
|
+
var reduceLast = pools[lastIndex].token0.equals(underlyingOut) && pools[lastIndex].token1.equals(tokenizeOut) || pools[lastIndex].token0.equals(tokenizeOut) && pools[lastIndex].token1.equals(underlyingOut);
|
|
867
|
+
if (reduceLast) {
|
|
868
|
+
pools.pop();
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
return pools;
|
|
873
|
+
}
|
|
874
|
+
function buildV4Planner(trade, tradeType, options, payerIsUser, routerMustCustody) {
|
|
839
875
|
var _options$recipient;
|
|
876
|
+
var chainId = trade.route.chainId;
|
|
877
|
+
var currencyIn = trade.route.pathInput;
|
|
878
|
+
var currencyOut = trade.route.pathOutput;
|
|
879
|
+
var slippageToleranceOnSwap = routerMustCustody && tradeType == sdkCore.TradeType.EXACT_INPUT ? undefined : options.slippageTolerance;
|
|
880
|
+
// Make tokens path from pools
|
|
881
|
+
var path = [];
|
|
882
|
+
var nextToken = currencyIn;
|
|
883
|
+
trade.route.pools.forEach(function (pool) {
|
|
884
|
+
if (nextToken.equals(pool.token0)) {
|
|
885
|
+
path.push(pool.token0);
|
|
886
|
+
nextToken = pool.token1;
|
|
887
|
+
} else {
|
|
888
|
+
path.push(pool.token1);
|
|
889
|
+
nextToken = pool.token0;
|
|
890
|
+
}
|
|
891
|
+
});
|
|
892
|
+
var v4Planner = new v4Sdk.V4Planner();
|
|
893
|
+
// Add trade swap type with encode pathKeys
|
|
894
|
+
v4Planner.addTrade(trade, slippageToleranceOnSwap);
|
|
895
|
+
// Pay currency in
|
|
896
|
+
v4Planner.addSettle(currencyIn, payerIsUser);
|
|
897
|
+
var token0 = smartOrderRouter.getSupportUnderlyingByTokenize(chainId, currencyIn);
|
|
898
|
+
var isSupport0 = token0 !== undefined;
|
|
899
|
+
// Build action planner for path
|
|
900
|
+
for (var i = 1; i < path.length; i++) {
|
|
901
|
+
var token1 = smartOrderRouter.getSupportUnderlyingByTokenize(chainId, path[i]);
|
|
902
|
+
var isSupport1 = token1 !== undefined;
|
|
903
|
+
if (isSupport0 && path[i].equals(token0)) {
|
|
904
|
+
v4Planner.addTake(path[i - 1], ROUTER_AS_RECIPIENT);
|
|
905
|
+
v4Planner.addSettle(token0, false);
|
|
906
|
+
} else if (isSupport1 && path[i - 1].equals(token1)) {
|
|
907
|
+
v4Planner.addTake(token1, ROUTER_AS_RECIPIENT);
|
|
908
|
+
v4Planner.addSettle(path[i], false);
|
|
909
|
+
}
|
|
910
|
+
isSupport0 = isSupport1;
|
|
911
|
+
token0 = token1;
|
|
912
|
+
}
|
|
913
|
+
// Take currency out
|
|
914
|
+
v4Planner.addTake(currencyOut, routerMustCustody ? ROUTER_AS_RECIPIENT : (_options$recipient = options.recipient) != null ? _options$recipient : SENDER_AS_RECIPIENT);
|
|
915
|
+
return v4Planner;
|
|
916
|
+
}
|
|
917
|
+
function addV4Swap(planner, _ref3, tradeType, options, payerIsUser, routerMustCustody) {
|
|
840
918
|
var inputAmount = _ref3.inputAmount,
|
|
841
919
|
outputAmount = _ref3.outputAmount,
|
|
842
920
|
route = _ref3.route;
|
|
@@ -844,6 +922,8 @@ function addV4Swap(planner, _ref3, tradeType, options, payerIsUser, routerMustCu
|
|
|
844
922
|
var pools = route.pools.map(function (p) {
|
|
845
923
|
return p;
|
|
846
924
|
});
|
|
925
|
+
// reduce pools for tokenize
|
|
926
|
+
pools = getReducePools(pools, inputAmount.currency, outputAmount.currency);
|
|
847
927
|
var v4Route = new v4Sdk.Route(pools, inputAmount.currency, outputAmount.currency);
|
|
848
928
|
var trade = v4Sdk.Trade.createUncheckedTrade({
|
|
849
929
|
route: v4Route,
|
|
@@ -851,11 +931,8 @@ function addV4Swap(planner, _ref3, tradeType, options, payerIsUser, routerMustCu
|
|
|
851
931
|
outputAmount: outputAmount,
|
|
852
932
|
tradeType: tradeType
|
|
853
933
|
});
|
|
854
|
-
|
|
855
|
-
var v4Planner =
|
|
856
|
-
v4Planner.addTrade(trade, slippageToleranceOnSwap);
|
|
857
|
-
v4Planner.addSettle(trade.route.pathInput, payerIsUser);
|
|
858
|
-
v4Planner.addTake(trade.route.pathOutput, routerMustCustody ? ROUTER_AS_RECIPIENT : (_options$recipient = options.recipient) != null ? _options$recipient : SENDER_AS_RECIPIENT);
|
|
934
|
+
// build planner
|
|
935
|
+
var v4Planner = buildV4Planner(trade, tradeType, options, payerIsUser, routerMustCustody);
|
|
859
936
|
planner.addCommand(exports.CommandType.V4_SWAP, [v4Planner.finalize()]);
|
|
860
937
|
}
|
|
861
938
|
// encode a mixed route swap, i.e. including both v2 and v3 pools
|