// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; contract Valhallau { IUniswapV2Router02 public immutable swapRouter; IERC20 public constant SHIB = IERC20(0x6f8a06447Ff6FcF75d803135a7de15CE88C1d4ec); IERC20 public constant USDT = IERC20(0xc2132D05D31c914a87C6611C10748AEb04B58e8F); uint24 public constant poolFee = 5000; // 0.05% // quickswap router 0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff constructor(IUniswapV2Router02 _swapRouter) { swapRouter = _swapRouter; } function swap(uint256 amountIn) public returns (uint[] memory amounts) { require( USDT.transferFrom(msg.sender, address(this), amountIn), "TransferFrom failed." ); require(USDT.approve(address(swapRouter), amountIn), "Approve failed."); address[] memory path = new address[](2); path[0] = address(USDT); path[1] = address(SHIB); amounts = swapRouter.swapExactTokensForTokens( amountIn, 0, path, address(this), block.timestamp ); return amounts; } }