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

/**
 * @title ISwapRouter - Uniswap V3 SwapRouter Interface
 * @notice Minimal interface for Uniswap V3 SwapRouter
 * @dev Matches the legacy Uniswap V3 SwapRouter exactInputSingle / exactInput ABI.
 */
interface ISwapRouter {
    struct ExactInputSingleParams {
        address tokenIn;
        address tokenOut;
        uint24 fee;
        address recipient;
        uint256 deadline;
        uint256 amountIn;
        uint256 amountOutMinimum;
        uint160 sqrtPriceLimitX96;
    }

    struct ExactInputParams {
        bytes path;
        address recipient;
        uint256 deadline;
        uint256 amountIn;
        uint256 amountOutMinimum;
    }

    function exactInputSingle(ExactInputSingleParams calldata params)
        external
        payable
        returns (uint256 amountOut);

    function exactInput(ExactInputParams calldata params)
        external
        payable
        returns (uint256 amountOut);
}
