43 lines
1.4 KiB
Solidity
43 lines
1.4 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.20;
|
|
|
|
/**
|
|
* @title IBurnController
|
|
* @notice Interface for burning ISO-4217 W tokens on redemption
|
|
* @dev Burn-before-release sequence for on-demand redemption at par
|
|
*/
|
|
interface IBurnController {
|
|
/**
|
|
* @notice Redeem tokens (burn and release fiat)
|
|
* @param token Token address
|
|
* @param from Redeemer address
|
|
* @param amount Amount to redeem (in token decimals)
|
|
* @return redemptionId Redemption ID for tracking
|
|
*/
|
|
function redeem(address token, address from, uint256 amount) external returns (bytes32 redemptionId);
|
|
|
|
/**
|
|
* @notice Burn tokens without redemption (emergency/transfer)
|
|
* @param token Token address
|
|
* @param from Source address
|
|
* @param amount Amount to burn
|
|
*/
|
|
function burn(address token, address from, uint256 amount) external;
|
|
|
|
/**
|
|
* @notice Check if redemption is allowed
|
|
* @param token Token address
|
|
* @param amount Amount to redeem
|
|
* @return redeemable True if redemption is allowed
|
|
*/
|
|
function canRedeem(address token, uint256 amount) external view returns (bool redeemable);
|
|
|
|
event Redeemed(
|
|
address indexed token,
|
|
address indexed from,
|
|
uint256 amount,
|
|
bytes32 indexed redemptionId
|
|
);
|
|
event Burned(address indexed token, address indexed from, uint256 amount);
|
|
}
|