cic-contracts/TransferAuthorization.sol

49 lines
2.1 KiB
Solidity

pragma solidity >=0.6.12;
// Author: Louis Holbrook <dev@holbrook.no> 0826EDA1702D1E87C6E2875121D2E7BB88C2A746
// SPDX-License-Identifier: GPL-3.0-or-later
// File-version: 2
interface TransferAuthorization {
event NewRequest(address indexed _sender, address indexed _recipient, address indexed _token, uint256 _value, uint256 _serial);
event Executed(uint256 _serial);
event TransferFail(uint256 _serial);
event QuorumSet(uint256 _quorum, uint256 _vetoThreshold, uint256 _signerCount);
event SignerAdded(address _signer);
event SignerRemoved(address _signer);
event Vetoed(uint256 indexed _serial, uint256 _yays, uint256 _nays);
event Approved(uint256 indexed _serial, uint256 _yays, uint256 _nays);
event Rejected(uint256 indexed _serial, uint256 _yays, uint256 _nays);
struct Transaction {
uint256 serial;
address sender;
address recipient;
address token;
uint256 value;
uint256 yay;
uint256 nay;
uint256 blockNumber;
int8 result; // -1 rejected/vetoed, 0 = completed, 1 = voting, 2 = approved
}
function signers(address) external view returns (bool);
function vote(uint256, address) external view returns (int8);
function voters(uint256) external view returns (address);
function count() external view returns (uint256);
function quorum() external view returns (uint256);
function vetoThreshold() external view returns (uint256);
function signerCount() external view returns (uint256);
function lastSerial() external view returns (uint256);
function nextSerial() external view returns (uint256);
function getSerialAt(uint256 _idx) external view returns (uint256);
function requests(uint256 _serial) external view returns (Transaction memory);
function requestSenderIndex(address _sender, uint256 _idx) external view returns (uint256);
function requestRecipientIndex(address _recipient, uint256 _idx) external view returns (uint256);
function createRequest(address _sender, address _recipient, address _token, uint256 _value) external returns (uint256);
function yay(uint256 _serial) external returns (bool);
function nay(uint256 _serial) external returns (bool);
}