ghost-dao-contracts/dependencies/@uniswap-v2-periphery-1.1.0-beta.0/contracts/test/RouterEventEmitter.sol
2025-10-07 14:20:56 +03:00

98 lines
3.1 KiB
Solidity

pragma solidity =0.6.6;
import '../interfaces/IUniswapV2Router01.sol';
contract RouterEventEmitter {
event Amounts(uint[] amounts);
receive() external payable {}
function swapExactTokensForTokens(
address router,
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external {
(bool success, bytes memory returnData) = router.delegatecall(abi.encodeWithSelector(
IUniswapV2Router01(router).swapExactTokensForTokens.selector, amountIn, amountOutMin, path, to, deadline
));
assert(success);
emit Amounts(abi.decode(returnData, (uint[])));
}
function swapTokensForExactTokens(
address router,
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external {
(bool success, bytes memory returnData) = router.delegatecall(abi.encodeWithSelector(
IUniswapV2Router01(router).swapTokensForExactTokens.selector, amountOut, amountInMax, path, to, deadline
));
assert(success);
emit Amounts(abi.decode(returnData, (uint[])));
}
function swapExactETHForTokens(
address router,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable {
(bool success, bytes memory returnData) = router.delegatecall(abi.encodeWithSelector(
IUniswapV2Router01(router).swapExactETHForTokens.selector, amountOutMin, path, to, deadline
));
assert(success);
emit Amounts(abi.decode(returnData, (uint[])));
}
function swapTokensForExactETH(
address router,
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external {
(bool success, bytes memory returnData) = router.delegatecall(abi.encodeWithSelector(
IUniswapV2Router01(router).swapTokensForExactETH.selector, amountOut, amountInMax, path, to, deadline
));
assert(success);
emit Amounts(abi.decode(returnData, (uint[])));
}
function swapExactTokensForETH(
address router,
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external {
(bool success, bytes memory returnData) = router.delegatecall(abi.encodeWithSelector(
IUniswapV2Router01(router).swapExactTokensForETH.selector, amountIn, amountOutMin, path, to, deadline
));
assert(success);
emit Amounts(abi.decode(returnData, (uint[])));
}
function swapETHForExactTokens(
address router,
uint amountOut,
address[] calldata path,
address to,
uint deadline
) external payable {
(bool success, bytes memory returnData) = router.delegatecall(abi.encodeWithSelector(
IUniswapV2Router01(router).swapETHForExactTokens.selector, amountOut, path, to, deadline
));
assert(success);
emit Amounts(abi.decode(returnData, (uint[])));
}
}