// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.8.0; import '../libraries/Types.sol'; /// @dev Candidate registry interface /// @author Alexandas interface ICandidateRegistry { /// @dev emit when candidate registered /// @param candidate candidate address event Register(address candidate); /// @dev register a candidate with node manifest /// @param manifest node manifest function register(string memory manifest) external; /// @dev return a candidate /// @param candidate candidate address /// @return candidate information function candidateInfo(address candidate) external view returns(Types.CandidateInfo memory); /// @dev return a candidate address for a specific node manifest /// @param manifest node manifest /// @return candidate address function manifestMap(string memory manifest) external view returns(address); /// @dev return whether a candidate is registered /// @param candidate candidate address /// @return whether the candidate is registered function isCandidateRegistered(address candidate) external view returns (bool); /// @dev return grade of a candidate /// @param candidate candidate address /// @return candidate grade function gradeOf(address candidate) external view returns (Types.Grade); }