// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0; /** * @title SOMA Seizable Security Partition Contract. * @author SOMA.finance. * @notice Interface of the {SeizableSecurityPartition} contract. */ interface ISeizableSecurityPartition { /** * @notice Emitted after a token is seized. * @param operator The address of the operator. * @param from The address that has had tokens seized from. * @param to The seize to address that receives seized tokens. * @param fromId The from partition id of the tokens. * @param toId The to partition id of the tokens. * @param value The amount of tokens seized. * @param data Bytes data associated with the transaction. */ event Seized( address indexed operator, address indexed from, address indexed to, bytes32 fromId, bytes32 toId, uint256 value, bytes data ); /** * @notice Seizes tokens from an account. * @param tokenHolder The account to seize tokens from. * @param fromId The from partition id of the tokens. * @param toId The to partition id of the tokens. * @param amount The amount of tokens to seize from `tokenHolder`. * @param data Bytes data associated with the transaction. * @custom:emits Seized * @custom:requirement The message sender must have the GLOBAL_SEIZE_ROLE or LOCAL_SEIZE_ROLE. */ function seize(address tokenHolder, bytes32 fromId, bytes32 toId, uint256 amount, bytes memory data) external; }