IERC777.sol 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. pragma solidity ^0.5.2;
  2. /**
  3. * @title ERC777 token interface
  4. * @dev See https://eips.ethereum.org/EIPS/eip-777
  5. */
  6. interface IERC777 {
  7. function authorizeOperator(address operator) external;
  8. function revokeOperator(address operator) external;
  9. function send(address to, uint256 amount, bytes calldata data) external;
  10. function operatorSend(
  11. address from,
  12. address to,
  13. uint256 amount,
  14. bytes calldata data,
  15. bytes calldata operatorData
  16. ) external;
  17. function burn(uint256 amount, bytes calldata data) external;
  18. function operatorBurn(
  19. address from,
  20. uint256 amount,
  21. bytes calldata data,
  22. bytes calldata operatorData
  23. ) external;
  24. function name() external view returns (string memory);
  25. function symbol() external view returns (string memory);
  26. function totalSupply() external view returns (uint256);
  27. function balanceOf(address owner) external view returns (uint256);
  28. function granularity() external view returns (uint256);
  29. function defaultOperators() external view returns (address[] memory);
  30. function isOperatorFor(address operator, address tokenHolder) external view returns (bool);
  31. event Sent(
  32. address indexed operator,
  33. address indexed from,
  34. address indexed to,
  35. uint256 amount,
  36. bytes data,
  37. bytes operatorData
  38. );
  39. event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData);
  40. event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData);
  41. event AuthorizedOperator(address indexed operator, address indexed tokenHolder);
  42. event RevokedOperator(address indexed operator, address indexed tokenHolder);
  43. }