123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- // SPDX-License-Identifier: MIT
- pragma solidity 0.8.28;
- /**
- * @title IPancakePair
- * @dev PancakeSwap V2 Pair接口,代表一个交易对合约
- */
- interface IPancakePair {
- /**
- * @dev 授权事件
- * @param owner 代币所有者
- * @param spender 被授权者
- * @param value 授权数量
- */
- event Approval(address indexed owner, address indexed spender, uint value);
-
- /**
- * @dev 转账事件
- * @param from 发送方
- * @param to 接收方
- * @param value 转账数量
- */
- event Transfer(address indexed from, address indexed to, uint value);
- // ERC20标准函数
- /**
- * @dev 获取LP代币名称
- * @return LP代币名称
- */
- function name() external pure returns (string memory);
-
- /**
- * @dev 获取LP代币符号
- * @return LP代币符号
- */
- function symbol() external pure returns (string memory);
-
- /**
- * @dev 获取LP代币小数位数
- * @return LP代币小数位数
- */
- function decimals() external pure returns (uint8);
-
- /**
- * @dev 获取LP代币总供应量
- * @return LP代币总供应量
- */
- function totalSupply() external view returns (uint);
-
- /**
- * @dev 获取指定地址的LP代币余额
- * @param owner 地址
- * @return LP代币余额
- */
- function balanceOf(address owner) external view returns (uint);
-
- /**
- * @dev 获取授权额度
- * @param owner 代币所有者
- * @param spender 被授权者
- * @return 授权额度
- */
- function allowance(address owner, address spender) external view returns (uint);
- /**
- * @dev 授权函数
- * @param spender 被授权者
- * @param value 授权数量
- * @return 是否成功
- */
- function approve(address spender, uint value) external returns (bool);
-
- /**
- * @dev 转账函数
- * @param to 接收方
- * @param value 转账数量
- * @return 是否成功
- */
- function transfer(address to, uint value) external returns (bool);
-
- /**
- * @dev 授权转账函数
- * @param from 发送方
- * @param to 接收方
- * @param value 转账数量
- * @return 是否成功
- */
- function transferFrom(address from, address to, uint value) external returns (bool);
- /**
- * @dev 获取域名分隔符(用于签名验证)
- * @return 域名分隔符
- */
- function DOMAIN_SEPARATOR() external view returns (bytes32);
-
- /**
- * @dev 获取许可类型哈希
- * @return 许可类型哈希
- */
- function PERMIT_TYPEHASH() external pure returns (bytes32);
-
- /**
- * @dev 获取地址的nonce值
- * @param owner 地址
- * @return nonce值
- */
- function nonces(address owner) external view returns (uint);
- /**
- * @dev 使用签名进行授权
- * @param owner 代币所有者
- * @param spender 被授权者
- * @param value 授权数量
- * @param deadline 截止时间
- * @param v 签名v值
- * @param r 签名r值
- * @param s 签名s值
- */
- function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
- /**
- * @dev 铸造LP代币事件
- * @param sender 铸造者
- * @param amount0 添加的token0数量
- * @param amount1 添加的token1数量
- */
- event Mint(address indexed sender, uint amount0, uint amount1);
-
- /**
- * @dev 销毁LP代币事件
- * @param sender 销毁者
- * @param amount0 移除的token0数量
- * @param amount1 移除的token1数量
- * @param to 代币接收地址
- */
- event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
-
- /**
- * @dev 交换事件
- * @param sender 交换者
- * @param amount0In 输入的token0数量
- * @param amount1In 输入的token1数量
- * @param amount0Out 输出的token0数量
- * @param amount1Out 输出的token1数量
- * @param to 输出代币接收地址
- */
- event Swap(
- address indexed sender,
- uint amount0In,
- uint amount1In,
- uint amount0Out,
- uint amount1Out,
- address indexed to
- );
-
- /**
- * @dev 储备同步事件
- * @param reserve0 token0储备量
- * @param reserve1 token1储备量
- */
- event Sync(uint112 reserve0, uint112 reserve1);
- /**
- * @dev 获取最小流动性数量
- * @return 最小流动性数量
- */
- function MINIMUM_LIQUIDITY() external pure returns (uint);
-
- /**
- * @dev 获取Factory合约地址
- * @return Factory合约地址
- */
- function factory() external view returns (address);
-
- /**
- * @dev 获取token0地址
- * @return token0地址
- */
- function token0() external view returns (address);
-
- /**
- * @dev 获取token1地址
- * @return token1地址
- */
- function token1() external view returns (address);
-
- /**
- * @dev 获取当前储备量
- * @return reserve0 token0储备量
- * @return reserve1 token1储备量
- * @return blockTimestampLast 最后更新的区块时间戳
- */
- function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
-
- /**
- * @dev 获取token0的累积价格
- * @return token0累积价格
- */
- function price0CumulativeLast() external view returns (uint);
-
- /**
- * @dev 获取token1的累积价格
- * @return token1累积价格
- */
- function price1CumulativeLast() external view returns (uint);
-
- /**
- * @dev 获取最后的k值(用于计算手续费)
- * @return 最后的k值
- */
- function kLast() external view returns (uint);
- /**
- * @dev 铸造LP代币(添加流动性)
- * @param to LP代币接收地址
- * @return liquidity 铸造的LP代币数量
- */
- function mint(address to) external returns (uint liquidity);
-
- /**
- * @dev 销毁LP代币(移除流动性)
- * @param to 代币接收地址
- * @return amount0 获得的token0数量
- * @return amount1 获得的token1数量
- */
- function burn(address to) external returns (uint amount0, uint amount1);
-
- /**
- * @dev 执行代币交换
- * @param amount0Out 输出的token0数量
- * @param amount1Out 输出的token1数量
- * @param to 输出代币接收地址
- * @param data 回调数据
- */
- function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
-
- /**
- * @dev 提取多余的代币(防止储备不平衡)
- * @param to 代币接收地址
- */
- function skim(address to) external;
-
- /**
- * @dev 同步储备量
- */
- function sync() external;
- /**
- * @dev 初始化交易对
- * @param _token0 第一个代币地址
- * @param _token1 第二个代币地址
- */
- function initialize(address _token0, address _token1) external;
- }
|