// SPDX-License-Identifier: MIT pragma solidity 0.8.0; /** * @dev Standard interface for ZXC smart contact.. */ interface Zxc { // ERC20 /** * @dev Returns the name of the token. */ function name() external view returns (string memory _name); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory _symbol); /** * @dev Returns the number of decimals the token uses. */ function decimals() external view returns (uint8 _decimals); /** * @dev Returns the total token supply. */ function totalSupply() external view returns (uint256 _totalSupply); /** * @dev Returns the account balance of another account with address _owner. * @param _owner The address from which the balance will be retrieved. */ function balanceOf( address _owner ) external view returns (uint256 _balance); /** * @dev Transfers _value amount of tokens to address _to, and MUST fire the Transfer event. The * function SHOULD throw if the _from account balance does not have enough tokens to spend. * @param _to The address of the recipient. * @param _value The amount of token to be transferred. */ function transfer( address _to, uint256 _value ) external returns (bool _success); /** * @dev Transfers _value amount of tokens from address _from to address _to, and MUST fire the * Transfer event. * @param _from The address of the sender. * @param _to The address of the recipient. * @param _value The amount of token to be transferred. */ function transferFrom( address _from, address _to, uint256 _value ) external returns (bool _success); /** * @dev Allows _spender to withdraw from your account multiple times, up to * the _value amount. If this function is called again it overwrites the current * allowance with _value. * @param _spender The address of the account able to transfer the tokens. * @param _value The amount of tokens to be approved for transfer. */ function approve( address _spender, uint256 _value ) external returns (bool _success); /** * @dev Returns the amount which _spender is still allowed to withdraw from _owner. * @param _owner The address of the account owning tokens. * @param _spender The address of the account able to transfer the tokens. */ function allowance( address _owner, address _spender ) external view returns (uint256 _remaining); /** * @dev Allows the current owner to give new owner ability to claim the ownership of the contract. * This differs from the Owner's function in that it allows setting pedingOwner address to 0x0, * which effectively cancels an active claim. * @param _newOwner The address which can claim ownership of the contract. */ function transferOwnership( address _newOwner ) external; /** * @dev Allows the current pending owner to claim the ownership of the contract. It emits * OwnershipTransferred event and resets pending owner to 0. */ function claimOwnership() external; /** * @dev Enables token transfers. */ function enableTransfer() external; /** * @dev Burns a specific amount of tokens. This function is based on BurnableToken implementation * at goo.gl/GZEhaq. * @notice Only owner is allowed to perform this operation. * @param _value The amount of tokens to be burned. */ function burn( uint256 _value ) external; /** * @dev Set crowdsale address which can distribute tokens even when onlyWhenTransferAllowed is * false. * @param crowdsaleAddr Address of token offering contract. */ function setCrowdsaleAddress( address crowdsaleAddr ) external; /** * @dev Triggers when tokens are transferred, including zero value transfers. */ event Transfer( address indexed _from, address indexed _to, uint256 _value ); /** * @dev Triggers on any successful call to approve(address _spender, uint256 _value). */ event Approval( address indexed _owner, address indexed _spender, uint256 _value ); /** * @dev An event which is triggered when tokens are burned. * @param _burner The address which burns tokens. * @param _value The amount of burned tokens. */ event Burn( address indexed _burner, uint256 _value ); }