pragma solidity >=0.6.12; // Author: Louis Holbrook 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 NewExecution(uint256 serial); event NewRejection(uint256 serial); event TransferFail(uint256 serial); struct Transaction { uint256 serial; address sender; address recipient; address token; uint256 value; } function approvers() external view returns (address[] memory); function count() 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 createRequest(address _recipient, address _token, uint256 _value) external returns (uint256); function executeRequest(uint256 _serial) external returns (bool); function rejectRequest(uint256 _serial) external returns (bool); }