CryndexAsset.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/interfaces/IERC1363.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
interface ICryndexAsset is IERC20, IERC20Metadata, IERC1363 {
/// @notice Calculates the average price of the asset using Chainlink aggregators
/// @return The average price in TARGET_PRECISION decimals
function getAssetPrice() external view returns (uint256);
/// @notice Returns the class of the asset to which the price is pegged
/// @return Class of asset
function getAssetClass() external view returns (string memory);
/// @notice Returns the Chainlink price feed aggregators
/// @return The address of the aggregators
function getAggregators() external view returns (address[] memory);
/// @notice Returns the multipliers of each price feed
/// @return The multipliers of each price feed
function getMultipliers() external view returns (uint256[] memory);
/// @notice Mints new tokens to a specified address
/// @param to The address to receive the newly minted tokens
/// @param amount The amount of tokens to mint (in wei)
function mint(address to, uint256 amount) external;
/// @notice Burns tokens from a specified address
/// @param account Address from where to burn the tokens
/// @param amount Amount of tokens to burn (in wei, e.g., 1e18 for 1 token with 18 decimals)
function burn(address account, uint256 amount) external;
/// @notice Adds an account that can mint new tokens
/// @notice account The address of the account to acquire the role
function addMinter(address account) external;
/// @notice Removes an account that can mint new tokens
/// @notice account The address of the account from whom to remove the role
function removeMinter(address account) external;
/// @notice Adds an account that can burn tokens
/// @notice account The address of the account to acquire the role
function addBurner(address account) external;
/// @notice Removes an account that can mint and burn tokens
/// @notice account The address of the account from whom to remove the role
function removeBurner(address account) external;
}
Last updated