interface IPropPair {
/// OPTIONAL — Rialto never calls these; pair & ordering come from config.
function token0() external view returns (address);
function token1() external view returns (address);
/// QUOTE (read-only view). Exact-in only.
/// zeroForOne = true -> selling token0, receiving token1
/// zeroForOne = false -> selling token1, receiving token0
function getAmountOut(bool zeroForOne, uint256 amountIn)
external view returns (uint256 amountOut);
/// SETTLE (state-changing). Called by RialtoRouter only.
function swapExactIn(
bool zeroForOne,
uint256 amountIn,
uint256 amountOutMin,
address to,
uint256 deadline
) external payable returns (uint256 amountOut);
}