IPancakePair.sol 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity 0.8.28;
  3. /**
  4. * @title IPancakePair
  5. * @dev PancakeSwap V2 Pair接口,代表一个交易对合约
  6. */
  7. interface IPancakePair {
  8. /**
  9. * @dev 授权事件
  10. * @param owner 代币所有者
  11. * @param spender 被授权者
  12. * @param value 授权数量
  13. */
  14. event Approval(address indexed owner, address indexed spender, uint value);
  15. /**
  16. * @dev 转账事件
  17. * @param from 发送方
  18. * @param to 接收方
  19. * @param value 转账数量
  20. */
  21. event Transfer(address indexed from, address indexed to, uint value);
  22. // ERC20标准函数
  23. /**
  24. * @dev 获取LP代币名称
  25. * @return LP代币名称
  26. */
  27. function name() external pure returns (string memory);
  28. /**
  29. * @dev 获取LP代币符号
  30. * @return LP代币符号
  31. */
  32. function symbol() external pure returns (string memory);
  33. /**
  34. * @dev 获取LP代币小数位数
  35. * @return LP代币小数位数
  36. */
  37. function decimals() external pure returns (uint8);
  38. /**
  39. * @dev 获取LP代币总供应量
  40. * @return LP代币总供应量
  41. */
  42. function totalSupply() external view returns (uint);
  43. /**
  44. * @dev 获取指定地址的LP代币余额
  45. * @param owner 地址
  46. * @return LP代币余额
  47. */
  48. function balanceOf(address owner) external view returns (uint);
  49. /**
  50. * @dev 获取授权额度
  51. * @param owner 代币所有者
  52. * @param spender 被授权者
  53. * @return 授权额度
  54. */
  55. function allowance(address owner, address spender) external view returns (uint);
  56. /**
  57. * @dev 授权函数
  58. * @param spender 被授权者
  59. * @param value 授权数量
  60. * @return 是否成功
  61. */
  62. function approve(address spender, uint value) external returns (bool);
  63. /**
  64. * @dev 转账函数
  65. * @param to 接收方
  66. * @param value 转账数量
  67. * @return 是否成功
  68. */
  69. function transfer(address to, uint value) external returns (bool);
  70. /**
  71. * @dev 授权转账函数
  72. * @param from 发送方
  73. * @param to 接收方
  74. * @param value 转账数量
  75. * @return 是否成功
  76. */
  77. function transferFrom(address from, address to, uint value) external returns (bool);
  78. /**
  79. * @dev 获取域名分隔符(用于签名验证)
  80. * @return 域名分隔符
  81. */
  82. function DOMAIN_SEPARATOR() external view returns (bytes32);
  83. /**
  84. * @dev 获取许可类型哈希
  85. * @return 许可类型哈希
  86. */
  87. function PERMIT_TYPEHASH() external pure returns (bytes32);
  88. /**
  89. * @dev 获取地址的nonce值
  90. * @param owner 地址
  91. * @return nonce值
  92. */
  93. function nonces(address owner) external view returns (uint);
  94. /**
  95. * @dev 使用签名进行授权
  96. * @param owner 代币所有者
  97. * @param spender 被授权者
  98. * @param value 授权数量
  99. * @param deadline 截止时间
  100. * @param v 签名v值
  101. * @param r 签名r值
  102. * @param s 签名s值
  103. */
  104. function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
  105. /**
  106. * @dev 铸造LP代币事件
  107. * @param sender 铸造者
  108. * @param amount0 添加的token0数量
  109. * @param amount1 添加的token1数量
  110. */
  111. event Mint(address indexed sender, uint amount0, uint amount1);
  112. /**
  113. * @dev 销毁LP代币事件
  114. * @param sender 销毁者
  115. * @param amount0 移除的token0数量
  116. * @param amount1 移除的token1数量
  117. * @param to 代币接收地址
  118. */
  119. event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
  120. /**
  121. * @dev 交换事件
  122. * @param sender 交换者
  123. * @param amount0In 输入的token0数量
  124. * @param amount1In 输入的token1数量
  125. * @param amount0Out 输出的token0数量
  126. * @param amount1Out 输出的token1数量
  127. * @param to 输出代币接收地址
  128. */
  129. event Swap(
  130. address indexed sender,
  131. uint amount0In,
  132. uint amount1In,
  133. uint amount0Out,
  134. uint amount1Out,
  135. address indexed to
  136. );
  137. /**
  138. * @dev 储备同步事件
  139. * @param reserve0 token0储备量
  140. * @param reserve1 token1储备量
  141. */
  142. event Sync(uint112 reserve0, uint112 reserve1);
  143. /**
  144. * @dev 获取最小流动性数量
  145. * @return 最小流动性数量
  146. */
  147. function MINIMUM_LIQUIDITY() external pure returns (uint);
  148. /**
  149. * @dev 获取Factory合约地址
  150. * @return Factory合约地址
  151. */
  152. function factory() external view returns (address);
  153. /**
  154. * @dev 获取token0地址
  155. * @return token0地址
  156. */
  157. function token0() external view returns (address);
  158. /**
  159. * @dev 获取token1地址
  160. * @return token1地址
  161. */
  162. function token1() external view returns (address);
  163. /**
  164. * @dev 获取当前储备量
  165. * @return reserve0 token0储备量
  166. * @return reserve1 token1储备量
  167. * @return blockTimestampLast 最后更新的区块时间戳
  168. */
  169. function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
  170. /**
  171. * @dev 获取token0的累积价格
  172. * @return token0累积价格
  173. */
  174. function price0CumulativeLast() external view returns (uint);
  175. /**
  176. * @dev 获取token1的累积价格
  177. * @return token1累积价格
  178. */
  179. function price1CumulativeLast() external view returns (uint);
  180. /**
  181. * @dev 获取最后的k值(用于计算手续费)
  182. * @return 最后的k值
  183. */
  184. function kLast() external view returns (uint);
  185. /**
  186. * @dev 铸造LP代币(添加流动性)
  187. * @param to LP代币接收地址
  188. * @return liquidity 铸造的LP代币数量
  189. */
  190. function mint(address to) external returns (uint liquidity);
  191. /**
  192. * @dev 销毁LP代币(移除流动性)
  193. * @param to 代币接收地址
  194. * @return amount0 获得的token0数量
  195. * @return amount1 获得的token1数量
  196. */
  197. function burn(address to) external returns (uint amount0, uint amount1);
  198. /**
  199. * @dev 执行代币交换
  200. * @param amount0Out 输出的token0数量
  201. * @param amount1Out 输出的token1数量
  202. * @param to 输出代币接收地址
  203. * @param data 回调数据
  204. */
  205. function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
  206. /**
  207. * @dev 提取多余的代币(防止储备不平衡)
  208. * @param to 代币接收地址
  209. */
  210. function skim(address to) external;
  211. /**
  212. * @dev 同步储备量
  213. */
  214. function sync() external;
  215. /**
  216. * @dev 初始化交易对
  217. * @param _token0 第一个代币地址
  218. * @param _token1 第二个代币地址
  219. */
  220. function initialize(address _token0, address _token1) external;
  221. }