// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0; /** * @title SOMA Token Rewards Contract. * @author SOMA.finance * @notice Interface for the {TokenRecovery} contract. */ interface ITokenRecovery { /** * @notice Emitted when tokens are recovered. * @param token The address of the recovered tokens. * @param to The address that the tokens are being sent to. * @param amount The amount of tokens recovered. * @param sender The address of the message sender. */ event TokensRecovered(address indexed token, address indexed to, uint256 amount, address indexed sender); /** * @notice Returns the Token Recovery Upgradeable TOKEN_RECOVERY_ROLE. */ function TOKEN_RECOVERY_ROLE() external pure returns (bytes32); /** * @notice Recovers tokens and transfers these tokens to `to`. * @param token The address of the recovered tokens. * @param to The address that the tokens are being sent to. * @param amount The amount of tokens recovered. * @custom:emits TokensRecovered * @custom:requirement The function caller must have the TOKEN_RECOVERY_ROLE. * @custom:requirement `token` must not be a disabled token. */ function recoverTokens(address token, address to, uint256 amount) external; }