// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; interface IPolicyManager { // token config getters function isPaused(address token) external view returns (bool); function bridgeOnly(address token) external view returns (bool); function bridge(address token) external view returns (address); function lienMode(address token) external view returns (uint8); // 0 off, 1 hard, 2 encumbered function isTokenFrozen(address token, address account) external view returns (bool); // decision function canTransfer( address token, address from, address to, uint256 amount ) external view returns (bool allowed, bytes32 reasonCode); // setters function setPaused(address token, bool paused) external; function setBridgeOnly(address token, bool enabled) external; function setBridge(address token, address bridgeAddr) external; function setLienMode(address token, uint8 mode) external; function freeze(address token, address account, bool frozen) external; event TokenPaused(address indexed token, bool paused); event BridgeOnlySet(address indexed token, bool enabled); event BridgeSet(address indexed token, address bridge); event LienModeSet(address indexed token, uint8 mode); event TokenFreeze(address indexed token, address indexed account, bool frozen); event TokenConfigured(address indexed token, bool paused, bool bridgeOnly, address bridge, uint8 lienMode); }