interface IUniswapV2Router {
function swapExactTokensForETH(
returns (uint[] memory amounts);
interface IDextokenPool {
function swapExactETHForTokens(
) external returns (uint);
IWETH(WETH).deposit.value(amount)();
if (IERC20(WETH).allowance(address(this), pool) < amount) {
IERC20(WETH).safeApprove(pool, MAX);
/// DEXG Swap: WETH to Token
IDextokenPool(pool).swapExactETHForTokens(
/// Uniswap: [Token, ..., WETH]
uint tokenAmount = IERC20(token).balanceOf(address(this));
if (IERC20(token).allowance(address(this), uniV2Router) < tokenAmount) {
IERC20(token).safeApprove(uniV2Router, MAX);
IUniswapV2Router(uniV2Router).swapExactTokensForETH(
msg.sender.transfer(address(this).balance);