title | description | author | discussions-to | status | type | category | created | requires |
---|---|---|---|---|---|---|---|---|
Isonomic Degradable NFTs (IDNFT) |
<Description is one full (short) sentence> |
<a comma separated list of the author's or authors' name + GitHub username (in parenthesis), or name and email (in angle brackets). Example, FirstName LastName (@GitHubUsername), FirstName LastName <[email protected]>, FirstName (@GitHubUsername) and GitHubUsername (@GitHubUsername)> |
<URL> |
Draft |
<Standards Track, Meta, or Informational> |
<Core, Networking, Interface, or ERC> |
<date created on, in ISO 8601 (yyyy-mm-dd) format> |
<EIP number(s)> |
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174.
interface IValocracy {
/**
* @dev Valor ID requested is non-existent.
*/
error NonExistentValor(uint256 valorId);
/**
* @dev Emitted when an account is not initiated in the given address.
*/
error NonExistentAccount(address account);
/**
* @dev Returns the vacancy period.
*/
function vacancy() external view virtual returns (uint256);
/**
* @dev Returns the valor ID linked to the given token ID.
*
* Requirements:
*
* - `valorId` must exist.
*/
function valorIdOf(uint256 tokenId) external view virtual returns (uint256);
/**
* @dev Returns the rarity of the given valor ID.
*/
function rarityOf(uint256 valorId) external view virtual returns (uint256);
/**
* @dev Returns the metadata of the given valor ID.
*/
function metadataOf(
uint256 valorId
) external view virtual returns (string memory);
/**
* @dev Expiration of the account. The governance power
* decays after the vacancy period has passed.
*
* IMPORTANT: After loosing the governance power, what is lost cannot be
* recovered. The account will have to mint new NFTs to start over. Hence,
* the importance of not letting the governance power expire.
*/
function expiryOf(address account) external view virtual returns (uint256);
/**
* @dev Returns the level of governance power of a given account.
*/
function levelOf(address account) external view virtual returns (uint256);
}
TBD
No backward compatibility issues found.
Needs discussion.
Copyright and related rights waived via CC0.