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

import "../RouteTypesV2.sol";

interface IRouteExecutorAdapter {
    function validate(RouteTypesV2.RouteLeg calldata leg) external view returns (bool ok, string memory reason);

    function quote(
        RouteTypesV2.RouteLeg calldata leg,
        uint256 amountIn
    ) external view returns (uint256 amountOut, uint256 gasEstimate);

    function execute(
        RouteTypesV2.RouteLeg calldata leg,
        uint256 amountIn
    ) external returns (uint256 amountOut);
}
