laconicd/tests-solidity/suites/staking/contracts/standards/ERC900.sol
Brett Sun c9639c3860
tests: add solidity test suites (#487)
* tests: add solidity test suite

* tests: remove require strings

* Update tests-solidity/init-test-node.sh

* Update tests-solidity/init-test-node.sh

Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
2020-09-01 17:16:28 -04:00

56 lines
2.1 KiB
Solidity

pragma solidity ^0.5.17;
// Interface for ERC900: https://eips.ethereum.org/EIPS/eip-900
interface ERC900 {
event Staked(address indexed user, uint256 amount, uint256 total, bytes data);
event Unstaked(address indexed user, uint256 amount, uint256 total, bytes data);
/**
* @dev Stake a certain amount of tokens
* @param _amount Amount of tokens to be staked
* @param _data Optional data that can be used to add signalling information in more complex staking applications
*/
function stake(uint256 _amount, bytes calldata _data) external;
/**
* @dev Stake a certain amount of tokens in favor of someone
* @param _user Address to stake an amount of tokens to
* @param _amount Amount of tokens to be staked
* @param _data Optional data that can be used to add signalling information in more complex staking applications
*/
function stakeFor(address _user, uint256 _amount, bytes calldata _data) external;
/**
* @dev Unstake a certain amount of tokens
* @param _amount Amount of tokens to be unstaked
* @param _data Optional data that can be used to add signalling information in more complex staking applications
*/
function unstake(uint256 _amount, bytes calldata _data) external;
/**
* @dev Tell the total amount of tokens staked for an address
* @param _addr Address querying the total amount of tokens staked for
* @return Total amount of tokens staked for an address
*/
function totalStakedFor(address _addr) external view returns (uint256);
/**
* @dev Tell the total amount of tokens staked
* @return Total amount of tokens staked
*/
function totalStaked() external view returns (uint256);
/**
* @dev Tell the address of the token used for staking
* @return Address of the token used for staking
*/
function token() external view returns (address);
/*
* @dev Tell if the current registry supports historic information or not
* @return True if the optional history functions are implemented, false otherwise
*/
function supportsHistory() external pure returns (bool);
}