// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; interface IeMoneyToken { function initialize( string calldata name, string calldata symbol, uint8 decimals, address issuer, address policyManager, address debtRegistry, address complianceRegistry ) external; // view function freeBalanceOf(address account) external view returns (uint256); // callable/recallable function mint(address to, uint256 amount, bytes32 reasonCode) external; function burn(address from, uint256 amount, bytes32 reasonCode) external; function clawback( address from, address to, uint256 amount, bytes32 reasonCode ) external; function forceTransfer( address from, address to, uint256 amount, bytes32 reasonCode ) external; // events event Minted(address indexed to, uint256 amount, bytes32 reasonCode); event Burned(address indexed from, uint256 amount, bytes32 reasonCode); event Clawback( address indexed from, address indexed to, uint256 amount, bytes32 reasonCode ); event ForcedTransfer( address indexed from, address indexed to, uint256 amount, bytes32 reasonCode ); }