Created
January 3, 2024 18:22
-
-
Save radeksvarz/4ed54b99cd60f73b73f3984b9be2c239 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// SPDX-License-Identifier: MIT | |
pragma solidity >=0.8.4 <0.9.0; | |
interface IXERC20minimal { | |
/** | |
* @notice Emits when a limit is set | |
* | |
* @param _mintingLimit The updated minting limit we are setting to the bridge | |
* @param _burningLimit The updated burning limit we are setting to the bridge | |
* @param _bridge The address of the bridge we are setting the limit too | |
*/ | |
event BridgeLimitsSet(uint256 _mintingLimit, uint256 _burningLimit, address indexed _bridge); | |
/** | |
* @notice Reverts when a user with too low of a limit tries to call mint/burn | |
*/ | |
error IXERC20_NotHighEnoughLimits(); | |
struct Bridge { | |
BridgeParameters minterParams; | |
BridgeParameters burnerParams; | |
} | |
struct BridgeParameters { | |
uint256 timestamp; | |
uint256 ratePerSecond; | |
uint256 maxLimit; | |
uint256 currentLimit; | |
} | |
/** | |
* @notice Updates the limits of any bridge | |
* @dev Can only be called by the owner | |
* @param _mintingLimit The updated minting limit we are setting to the bridge | |
* @param _burningLimit The updated burning limit we are setting to the bridge | |
* @param _bridge The address of the bridge we are setting the limits too | |
*/ | |
function setBridgeLimits(address _bridge, uint256 _mintingLimit, uint256 _burningLimit) external; | |
/** | |
* @notice Returns the max limit of a minter | |
* | |
* @param _bridge The bridge we are viewing the limits of | |
* @return _limit The limit the bridge has | |
*/ | |
function mintingMaxLimitOf(address _bridge) external view returns (uint256 _limit); | |
/** | |
* @notice Returns the max limit of a bridge | |
* | |
* @param _bridge the bridge we are viewing the limits of | |
* @return _limit The limit the bridge has | |
*/ | |
function burningMaxLimitOf(address _bridge) external view returns (uint256 _limit); | |
/** | |
* @notice Returns the current limit of a minter | |
* | |
* @param _bridge The bridge we are viewing the limits of | |
* @return _limit The limit the minter has | |
*/ | |
function mintingCurrentLimitOf(address _bridge) external view returns (uint256 _limit); | |
/** | |
* @notice Returns the current limit of a bridge | |
* | |
* @param _bridge the bridge we are viewing the limits of | |
* @return _limit The limit the bridge has | |
*/ | |
function burningCurrentLimitOf(address _bridge) external view returns (uint256 _limit); | |
/** | |
* @notice Mints tokens for a user | |
* @dev Can only be called by a bridge | |
* @param _user The address of the user who needs tokens minted | |
* @param _amount The amount of tokens being minted | |
*/ | |
function mint(address _user, uint256 _amount) external; | |
/** | |
* @notice Burns tokens for a user | |
* @dev Can only be called by a bridge | |
* @param _user The address of the user who needs tokens burned | |
* @param _amount The amount of tokens being burned | |
*/ | |
function burn(address _user, uint256 _amount) external; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment