2021-02-14 13:22:42 +01:00
|
|
|
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 {
|
2021-02-23 17:16:57 +01:00
|
|
|
|
2021-02-14 13:22:42 +01:00
|
|
|
event NewRequest(address indexed _sender, address indexed _recipient, address indexed _token, uint256 _value, uint256 _serial);
|
2021-02-23 17:16:57 +01:00
|
|
|
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);
|
2021-02-14 13:22:42 +01:00
|
|
|
|
|
|
|
struct Transaction {
|
|
|
|
uint256 serial;
|
|
|
|
address sender;
|
|
|
|
address recipient;
|
|
|
|
address token;
|
|
|
|
uint256 value;
|
2021-02-23 17:16:57 +01:00
|
|
|
uint256 yay;
|
|
|
|
uint256 nay;
|
|
|
|
uint256 blockNumber;
|
|
|
|
int8 result; // -1 rejected/vetoed, 0 = completed, 1 = voting, 2 = approved
|
2021-02-14 13:22:42 +01:00
|
|
|
}
|
|
|
|
|
2021-02-23 17:16:57 +01:00
|
|
|
function signers(address) external view returns (bool);
|
|
|
|
function vote(uint256, address) external view returns (int8);
|
|
|
|
function voters(uint256) external view returns (address);
|
2021-02-14 13:22:42 +01:00
|
|
|
function count() external view returns (uint256);
|
2021-02-23 17:16:57 +01:00
|
|
|
function quorum() external view returns (uint256);
|
|
|
|
function vetoThreshold() external view returns (uint256);
|
|
|
|
function signerCount() external view returns (uint256);
|
2021-02-14 13:22:42 +01:00
|
|
|
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);
|
2021-02-23 17:16:57 +01:00
|
|
|
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);
|
2021-02-14 13:22:42 +01:00
|
|
|
}
|