interface_inheritance.sol 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. pragma solidity ^0.8.4;
  2. interface IUniswapV2Router01 {
  3. function factory() external pure returns (address);
  4. function WETH() external pure returns (address);
  5. function createSomething(address tokenA, address tokenB) external returns (address);
  6. }
  7. interface IUniswapV2Router02 is IUniswapV2Router01 {
  8. function removeLiquidityETHSupportingFeeOnTransferTokens(
  9. address token,
  10. uint liquidity,
  11. uint amountTokenMin,
  12. uint amountETHMin,
  13. address to,
  14. uint deadline
  15. ) external returns (uint amountETH);
  16. }
  17. interface IUniswapV2Factory {
  18. function createPair(address tokenA, address tokenB) external returns (address);
  19. }
  20. contract BABYLINK {
  21. IUniswapV2Router02 public uniswapV2Router;
  22. address public uniswapV2Pair;
  23. constructor () {
  24. IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E); //Prod
  25. uniswapV2Router = _uniswapV2Router;
  26. }
  27. function changeRouterVersion(address newRouterAddress) public returns(address newPairAddress) {
  28. IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress);
  29. if(newPairAddress == address(0)) //Create If Doesnt exist
  30. {
  31. newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
  32. .createPair(address(this), _uniswapV2Router.WETH());
  33. uniswapV2Pair = _uniswapV2Router.createSomething({tokenA: address(this), tokenB:_uniswapV2Router.WETH()});
  34. }
  35. }
  36. }
  37. // ---- Expect: diagnostics ----