Query Pool Info
In this simple example, we query the basic information of a pool with given pool tokens and type.
// Solidity
function _getPoolReserves(
address factory,
address tokenA,
address tokenB
) private view returns (
address pool,
uint reserveA,
uint reserveB,
uint16 poolType
) {
pool = IFactory(factory).getPool(tokenA, tokenB);
if (pool.isContract()) { // return empty values if pool not exists
(uint reserve0, uint reserve1) = IBasePool(pool).getReserves();
(reserveA, reserveB) = tokenA < tokenB ? (reserve0, reserve1) : (reserve1, reserve0);
poolType = IBasePool(pool).poolType();
}
}
function _getRoutePool(
address factory,
address tokenA,
address tokenB
) private view returns (
RoutePool memory data
) {
(address contractAddress, uint reserveA, uint reserveB, uint16 poolType) = _getPoolReserves(
factory, tokenA, tokenB
);
if (reserveA != 0) {
data = Pool({
pool: contractAddress,
tokenA: tokenA,
tokenB: tokenB,
poolType: poolType,
reserveA: reserveA,
reserveB: reserveB,
swapFee: IFactory(factory).getSwapFee(contractAddress)
});
}
}
Last updated