// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0; /** * @title SOMA Seizable Security Contract. * @author SOMA.finance. * @notice Interface of the {SeizableSecurity} contract. */ interface ISeizableSecurity { /** * @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 value The amount of tokens seized. */ event Seized(address indexed operator, address indexed from, address indexed to, uint256 value); /** * @notice Seizes tokens from an account. * @param tokenHolder The account to seize tokens from. * @param amount The amount of tokens to seize from `tokenHolder`. * @custom:emits Seized * @custom:requirement The message sender must have the GLOBAL_SEIZE_ROLE or LOCAL_SEIZE_ROLE. */ function seize(address tokenHolder, uint256 amount) external; }