Redeemer
Permissioned contract for redeeming iBGT tokens for BERA via the Infrared protocol.
Only authorized redeemers can call the redemption function. Assumes 1:1 iBGT to BGT ratio and BERA as native token.
State Variables
bgt
Address of the BGT token.
address public immutable bgt;
ibgt
Address of the iBGT token.
address public immutable ibgt;
infrared
Address of the Infrared protocol contract.
InfraredV1_7 public immutable infrared;
governance
Governance address for managing redeemers.
address public immutable governance;
redeemers
Mapping of authorized redeemers.
mapping(address user => bool isRedeemer) public redeemers;
Functions
onlyRedeemer
Modifier to restrict access to authorized redeemers.
modifier onlyRedeemer();
onlyGovernance
Modifier to restrict access to governance.
modifier onlyGovernance();
constructor
Constructor to initialize the contract.
constructor(
address _governance,
address _bgt,
address _infrared,
address[] memory _redeemers
);
Parameters
Name | Type | Description |
---|---|---|
_governance | address | Address of the governance controller. |
_bgt | address | Address of the BGT token. |
_infrared | address | Address of the Infrared protocol. |
_redeemers | address[] | Array of initial authorized redeemers. |
redeemIbgtForBera
Redeems iBGT for BERA.
Caller must approve this contract for iBGT. Checks unboosted BGT availability on Infrared. Burns iBGT, calls Infrared to redeem, and transfers BERA to the caller.
function redeemIbgtForBera(uint256 amount) external onlyRedeemer;
Parameters
Name | Type | Description |
---|---|---|
amount | uint256 | The amount of iBGT to redeem. |
addRedeemer
Adds a new redeemer.
function addRedeemer(address redeemer) external onlyGovernance;
Parameters
Name | Type | Description |
---|---|---|
redeemer | address | The address to add as a redeemer. |
removeRedeemer
Removes an existing redeemer.
function removeRedeemer(address redeemer) external onlyGovernance;
Parameters
Name | Type | Description |
---|---|---|
redeemer | address | The address to remove as a redeemer. |
receive
Fallback to receive BERA from Infrared.
receive() external payable;
Events
IbgtRedeemed
Event emitted when iBGT is redeemed for BERA.
event IbgtRedeemed(address indexed user, uint256 amount);
Parameters
Name | Type | Description |
---|---|---|
user | address | The user who redeemed. |
amount | uint256 | The amount of iBGT redeemed. |
RedeemerAdded
Event emitted when a redeemer is added.
event RedeemerAdded(address indexed redeemer);
Parameters
Name | Type | Description |
---|---|---|
redeemer | address | The added redeemer address. |
RedeemerRemoved
Event emitted when a redeemer is removed.
event RedeemerRemoved(address indexed redeemer);
Parameters
Name | Type | Description |
---|---|---|
redeemer | address | The removed redeemer address. |
Errors
Unauthorized
Error thrown when caller is not authorized.
error Unauthorized();
InvalidAmount
Error thrown for zero amount
error InvalidAmount();
InvalidAddress
Error thrown for invalid address
error InvalidAddress();
InsufficientUnboostedBGT
Error thrown when insufficient unboosted BGT is available for redemption.
error InsufficientUnboostedBGT();