mirror of
https://github.com/Instadapp/dsa-connectors-old.git
synced 2024-07-29 22:47:46 +00:00
Major changes
This commit is contained in:
parent
4b90d3dbf1
commit
8bfc8f6ec7
|
@ -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(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user