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