// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import "../RouteTypesV2.sol"; import "../LiquidityPoolETH.sol"; interface IEnhancedSwapRouterV2 { function executeRoute(RouteTypesV2.RoutePlan calldata plan) external payable returns (uint256 amountOut); function quoteConfiguredProviders(address tokenIn, address tokenOut, uint256 amountIn) external view returns (RouteTypesV2.ProviderQuote[] memory quotes); function quoteConfiguredProvider( address tokenIn, address tokenOut, uint256 amountIn, RouteTypesV2.Provider provider ) external view returns (RouteTypesV2.ProviderQuote memory quote); function swapTokenToToken(address tokenIn, address tokenOut, uint256 amountIn, uint256 amountOutMin) external returns (uint256 amountOut); function swapToStablecoin( LiquidityPoolETH.AssetType inputAsset, address stablecoinToken, uint256 amountIn, uint256 amountOutMin ) external payable returns (uint256 amountOut); }