123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- // SPDX-License-Identifier: MIT
- pragma solidity 0.8.28;
- /**
- * @title IPancakeRouter02
- * @dev PancakeSwap V2 Router接口,提供所有交易和流动性管理功能
- */
- interface IPancakeRouter02 {
- /**
- * @dev 获取PancakeSwap Factory合约地址
- * @return Factory合约地址
- */
- function factory() external pure returns (address);
-
- /**
- * @dev 获取WBNB合约地址
- * @return WBNB合约地址
- */
- function WETH() external pure returns (address);
- /**
- * @dev 添加两个代币的流动性
- * @param tokenA 第一个代币地址
- * @param tokenB 第二个代币地址
- * @param amountADesired 期望添加的tokenA数量
- * @param amountBDesired 期望添加的tokenB数量
- * @param amountAMin 最小接受的tokenA数量(滑点保护)
- * @param amountBMin 最小接受的tokenB数量(滑点保护)
- * @param to LP代币接收地址
- * @param deadline 交易截止时间
- * @return amountA 实际添加的tokenA数量
- * @return amountB 实际添加的tokenB数量
- * @return liquidity 获得的LP代币数量
- */
- function addLiquidity(
- address tokenA,
- address tokenB,
- uint256 amountADesired,
- uint256 amountBDesired,
- uint256 amountAMin,
- uint256 amountBMin,
- address to,
- uint256 deadline
- ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
- /**
- * @dev 添加代币和BNB的流动性
- * @param token 代币地址
- * @param amountTokenDesired 期望添加的代币数量
- * @param amountTokenMin 最小接受的代币数量(滑点保护)
- * @param amountETHMin 最小接受的BNB数量(滑点保护)
- * @param to LP代币接收地址
- * @param deadline 交易截止时间
- * @return amountToken 实际添加的代币数量
- * @return amountETH 实际添加的BNB数量
- * @return liquidity 获得的LP代币数量
- */
- function addLiquidityETH(
- address token,
- uint256 amountTokenDesired,
- uint256 amountTokenMin,
- uint256 amountETHMin,
- address to,
- uint256 deadline
- ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
- /**
- * @dev 移除两个代币的流动性
- * @param tokenA 第一个代币地址
- * @param tokenB 第二个代币地址
- * @param liquidity 要移除的LP代币数量
- * @param amountAMin 最小接受的tokenA数量(滑点保护)
- * @param amountBMin 最小接受的tokenB数量(滑点保护)
- * @param to 代币接收地址
- * @param deadline 交易截止时间
- * @return amountA 获得的tokenA数量
- * @return amountB 获得的tokenB数量
- */
- function removeLiquidity(
- address tokenA,
- address tokenB,
- uint256 liquidity,
- uint256 amountAMin,
- uint256 amountBMin,
- address to,
- uint256 deadline
- ) external returns (uint256 amountA, uint256 amountB);
- function removeLiquidityETH(
- address token,
- uint256 liquidity,
- uint256 amountTokenMin,
- uint256 amountETHMin,
- address to,
- uint256 deadline
- ) external returns (uint256 amountToken, uint256 amountETH);
- function removeLiquidityWithPermit(
- address tokenA,
- address tokenB,
- uint256 liquidity,
- uint256 amountAMin,
- uint256 amountBMin,
- address to,
- uint256 deadline,
- bool approveMax,
- uint8 v,
- bytes32 r,
- bytes32 s
- ) external returns (uint256 amountA, uint256 amountB);
- function removeLiquidityETHWithPermit(
- address token,
- uint256 liquidity,
- uint256 amountTokenMin,
- uint256 amountETHMin,
- address to,
- uint256 deadline,
- bool approveMax,
- uint8 v,
- bytes32 r,
- bytes32 s
- ) external returns (uint256 amountToken, uint256 amountETH);
- /**
- * @dev 精确输入代币交换(代币到代币)
- * @param amountIn 输入代币数量
- * @param amountOutMin 最小输出代币数量(滑点保护)
- * @param path 交换路径(代币地址数组)
- * @param to 输出代币接收地址
- * @param deadline 交易截止时间
- * @return amounts 交换路径中每个代币的数量数组
- */
- function swapExactTokensForTokens(
- uint256 amountIn,
- uint256 amountOutMin,
- address[] calldata path,
- address to,
- uint256 deadline
- ) external returns (uint256[] memory amounts);
- function swapTokensForExactTokens(
- uint256 amountOut,
- uint256 amountInMax,
- address[] calldata path,
- address to,
- uint256 deadline
- ) external returns (uint256[] memory amounts);
- /**
- * @dev 精确输入BNB交换(BNB到代币)
- * @param amountOutMin 最小输出代币数量(滑点保护)
- * @param path 交换路径(WBNB地址 + 代币地址数组)
- * @param to 输出代币接收地址
- * @param deadline 交易截止时间
- * @return amounts 交换路径中每个代币的数量数组
- */
- function swapExactETHForTokens(
- uint256 amountOutMin,
- address[] calldata path,
- address to,
- uint256 deadline
- ) external payable returns (uint256[] memory amounts);
- function swapTokensForExactETH(
- uint256 amountOut,
- uint256 amountInMax,
- address[] calldata path,
- address to,
- uint256 deadline
- ) external returns (uint256[] memory amounts);
- /**
- * @dev 精确输入代币交换(代币到BNB)
- * @param amountIn 输入代币数量
- * @param amountOutMin 最小输出BNB数量(滑点保护)
- * @param path 交换路径(代币地址 + WBNB地址数组)
- * @param to 输出BNB接收地址
- * @param deadline 交易截止时间
- * @return amounts 交换路径中每个代币的数量数组
- */
- function swapExactTokensForETH(
- uint256 amountIn,
- uint256 amountOutMin,
- address[] calldata path,
- address to,
- uint256 deadline
- ) external returns (uint256[] memory amounts);
- function swapETHForExactTokens(
- uint256 amountOut,
- address[] calldata path,
- address to,
- uint256 deadline
- ) external payable returns (uint256[] memory amounts);
- function quote(
- uint256 amountA,
- uint256 reserveA,
- uint256 reserveB
- ) external pure returns (uint256 amountB);
- function getAmountOut(
- uint256 amountIn,
- uint256 reserveIn,
- uint256 reserveOut
- ) external pure returns (uint256 amountOut);
- function getAmountIn(
- uint256 amountOut,
- uint256 reserveIn,
- uint256 reserveOut
- ) external pure returns (uint256 amountIn);
- /**
- * @dev 根据输入数量计算输出数量
- * @param amountIn 输入代币数量
- * @param path 交换路径(代币地址数组)
- * @return amounts 交换路径中每个代币的数量数组
- */
- function getAmountsOut(uint256 amountIn, address[] calldata path)
- external
- view
- returns (uint256[] memory amounts);
- function getAmountsIn(uint256 amountOut, address[] calldata path)
- external
- view
- returns (uint256[] memory amounts);
- function removeLiquidityETHSupportingFeeOnTransferTokens(
- address token,
- uint256 liquidity,
- uint256 amountTokenMin,
- uint256 amountETHMin,
- address to,
- uint256 deadline
- ) external returns (uint256 amountETH);
- function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
- address token,
- uint256 liquidity,
- uint256 amountTokenMin,
- uint256 amountETHMin,
- address to,
- uint256 deadline,
- bool approveMax,
- uint8 v,
- bytes32 r,
- bytes32 s
- ) external returns (uint256 amountETH);
- function swapExactTokensForTokensSupportingFeeOnTransferTokens(
- uint256 amountIn,
- uint256 amountOutMin,
- address[] calldata path,
- address to,
- uint256 deadline
- ) external;
- function swapExactETHForTokensSupportingFeeOnTransferTokens(
- uint256 amountOutMin,
- address[] calldata path,
- address to,
- uint256 deadline
- ) external payable;
- function swapExactTokensForETHSupportingFeeOnTransferTokens(
- uint256 amountIn,
- uint256 amountOutMin,
- address[] calldata path,
- address to,
- uint256 deadline
- ) external;
- }
|