// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface ILiquidityProvider {
    function getQuote(address tokenIn, address tokenOut, uint256 amountIn) 
        external view returns (uint256 amountOut, uint256 slippageBps);
    function executeSwap(address tokenIn, address tokenOut, uint256 amountIn, uint256 minAmountOut) 
        external returns (uint256 amountOut);
    function supportsTokenPair(address tokenIn, address tokenOut) external view returns (bool);
    function providerName() external pure returns (string memory);
    function estimateGas(address tokenIn, address tokenOut, uint256 amountIn) external view returns (uint256);
}
