abis.rs•1.79 kB
use alloy::sol;
// Define ERC20 ABI using alloy's macro with RPC attribute
sol! {
#[allow(missing_docs)]
#[sol(rpc)]
contract ERC20 {
function balanceOf(address owner) public view returns (uint256);
function totalSupply() public view returns (uint256);
function transfer(address to, uint256 amount) public returns (bool);
function allowance(address owner, address spender) public view returns (uint256);
function approve(address owner,address spender) public view returns (bool);
function decimals() public view returns (uint8);
}
}
// Define Uniswap V3 SwapRouter ABI
sol! {
#[allow(missing_docs)]
#[sol(rpc)]
contract UniswapV3SwapRouter {
struct ExactInputParams {
bytes path;
address recipient;
uint256 amountIn;
uint256 amountOutMinimum;
}
function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut);
}
}
// Define Uniswap V3 Factory ABI
sol! {
#[allow(missing_docs)]
#[sol(rpc)]
contract UniswapV3Factory {
function getPool(address tokenA, address tokenB, uint24 fee) external view returns (address pool);
}
}
// Define Uniswap V3 Pool ABI
sol! {
#[allow(missing_docs)]
#[sol(rpc)]
contract UniswapV3Pool {
function slot0() external view returns (
uint160 sqrtPriceX96,
int24 tick,
uint16 observationIndex,
uint16 observationCardinality,
uint16 observationCardinalityNext,
uint8 feeProtocol,
bool unlocked
);
function token0() external view returns (address);
function token1() external view returns (address);
}
}