Major changes

This commit is contained in:
Thrilok Kumar 2020-05-28 03:53:38 +05:30
parent 4b90d3dbf1
commit 8bfc8f6ec7

View File

@ -19,14 +19,6 @@ interface IUniswapV2Router01 {
address to, address to,
uint deadline uint deadline
) external returns (uint amountA, uint amountB, uint liquidity); ) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity( function removeLiquidity(
address tokenA, address tokenA,
address tokenB, address tokenB,
@ -36,33 +28,6 @@ interface IUniswapV2Router01 {
address to, address to,
uint deadline uint deadline
) external returns (uint amountA, uint amountB); ) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens( function swapExactTokensForTokens(
uint amountIn, uint amountIn,
uint amountOutMin, uint amountOutMin,
@ -77,20 +42,6 @@ interface IUniswapV2Router01 {
address to, address to,
uint deadline uint deadline
) external returns (uint[] memory amounts); ) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
@ -217,28 +168,32 @@ contract LiquidityHelpers is UniswapHelpers {
} }
function _addLiquidity( function _addLiquidity(
address[] memory tokens, address tokenA,
uint[] memory _amts, address tokenB,
uint[] memory slippages, uint _amt,
uint unitAmt,
uint slippage,
uint deadline uint deadline
) internal returns (uint _amtA, uint _amtB, uint _liquidity) { ) internal returns (uint _amtA, uint _amtB, uint _liquidity) {
IUniswapV2Router01 router = IUniswapV2Router01(getUniswapAddr()); IUniswapV2Router01 router = IUniswapV2Router01(getUniswapAddr());
TokenInterface[] memory _tokens = changeEthToWeth(tokens); (TokenInterface _tokenA, TokenInterface _tokenB) = changeEthAddress(tokenA, tokenB);
_amts[0] = _amts[0] == uint(-1) ? getTokenBalace(tokens[0]) : _amts[0];
_amts[1] = _amts[1] == uint(-1) ? getTokenBalace(tokens[0]) : _amts[1];
convertEthToWeth(_tokens[0], _amts[0]); _amtA = _amt == uint(-1) ? getTokenBalace(tokenA) : _amt;
convertEthToWeth(_tokens[1], _amts[1]); uint _amtA18 = convertTo18(_tokenA.decimals(), _amtA);
_tokens[0].approve(address(router), _amts[0]); _amtB = convert18ToDec(_tokenB.decimals(), wmul(unitAmt, _amtA18));
_tokens[0].approve(address(router), _amts[1]);
convertEthToWeth(_tokenA, _amtA);
convertEthToWeth(_tokenB, _amtB);
_tokenA.approve(address(router), _amtA);
_tokenB.approve(address(router), _amtB);
(_amtA, _amtB, _liquidity) = router.addLiquidity( (_amtA, _amtB, _liquidity) = router.addLiquidity(
address(_tokens[0]), address(_tokenA),
address(_tokens[1]), address(_tokenB),
_amts[0], _amtA,
_amts[1], _amtB,
getMinAmount(_tokens[0], _amts[0], slippages[0]), getMinAmount(_tokenA, _amtB, slippage),
getMinAmount(_tokens[1], _amts[1], slippages[1]), getMinAmount(_tokenB, _amtB, slippage),
address(this), address(this),
now + deadline // TODO - deadline? now + deadline // TODO - deadline?
); );
@ -281,7 +236,7 @@ contract UniswapLiquidity is LiquidityHelpers {
uint amtA, uint amtA,
uint amtB, uint amtB,
uint uniAmount, uint uniAmount,
uint[] getId, uint getId,
uint setId uint setId
); );
@ -296,31 +251,32 @@ contract UniswapLiquidity is LiquidityHelpers {
); );
function emitDeposit( function emitDeposit(
address[] memory tokens, address tokenA,
address tokenB,
uint _amtA, uint _amtA,
uint _amtB, uint _amtB,
uint _uniAmt, uint _uniAmt,
uint[] memory getIds, uint getId,
uint setId uint setId
) internal { ) internal {
emit LogDepositLiquidity( emit LogDepositLiquidity(
tokens[0], tokenA,
tokens[1], tokenB,
_amtA, _amtA,
_amtB, _amtB,
_uniAmt, _uniAmt,
getIds, getId,
setId setId
); );
bytes32 _eventCode = keccak256("LogDepositLiquidity(address,address,uint256,uint256,uint256,uint256[],uint256)"); bytes32 _eventCode = keccak256("LogDepositLiquidity(address,address,uint256,uint256,uint256,uint256[],uint256)");
bytes memory _eventParam = abi.encode( bytes memory _eventParam = abi.encode(
tokens[0], tokenA,
tokens[1], tokenB,
_amtA, _amtA,
_amtB, _amtB,
_uniAmt, _uniAmt,
getIds, getId,
setId setId
); );
emitEvent(_eventCode, _eventParam); emitEvent(_eventCode, _eventParam);
@ -357,27 +313,27 @@ contract UniswapLiquidity is LiquidityHelpers {
} }
function deposit( function deposit(
address[] calldata tokens, address tokenA,
uint[] calldata amts, address tokenB,
uint[] calldata slippages, uint amtA,
uint unitAmt,
uint slippage,
uint deadline, uint deadline,
uint[] calldata getIds, uint getId,
uint setId uint setId
) external payable { ) external payable {
require(tokens.length == 2 && amts.length == 2, "length-is-not-two"); uint _amt = getUint(getId, amtA);
uint[] memory _amts = new uint[](2);
for (uint i = 0; i < getIds.length; i++) {
_amts[i] = getUint(getIds[i], amts[i]);
}
(uint _amtA, uint _amtB, uint _uniAmt) = _addLiquidity( (uint _amtA, uint _amtB, uint _uniAmt) = _addLiquidity(
tokens, tokenA,
_amts, tokenB,
slippages, _amt,
unitAmt,
slippage,
deadline deadline
); );
setUint(setId, _uniAmt); setUint(setId, _uniAmt);
emitDeposit(tokens, _amtA, _amtB, _uniAmt, getIds, setId); emitDeposit(tokenA, tokenB, _amtA, _amtB, _uniAmt, getId, setId);
} }
function withdraw( function withdraw(