Files
smom-dbis-138/contracts/iso4217w/interfaces/IBurnController.sol
2026-03-02 12:14:09 -08:00

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);
}