// SPDX-License-Identifier: UNLICENSED pragma solidity =0.8.18; import "./extensions/partitions/ERC20SecurityPartition.sol"; import "./extensions/MintableSecurity.sol"; import "./ISecurityToken.sol"; import "../Lockdrop/extensions/TokenRecoveryUpgradeable.sol"; /** * @notice Implementation of the {ISecurityToken} interface. */ contract SecurityToken is ISecurityToken, ERC20SecurityPartition, MintableSecurity, TokenRecoveryUpgradeable { constructor() { _disableInitializers(); } /** * @inheritdoc ISecurityToken */ function initialize(string memory domain, string memory name, string memory symbol) external virtual initializer { __ERC20Security_init(domain, name, symbol); __MintableSecurity_init_unchained(); __TokenRecovery__init_unchained(new address[](0)); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC20SecurityPartition, MintableSecurity, TokenRecoveryUpgradeable) returns (bool) { return interfaceId == type(ISecurityToken).interfaceId || super.supportsInterface(interfaceId); } /** * @notice Returns a boolean indicating if the contracts are paused. */ function paused() public view virtual override(ERC20SecurityPartition, SomaContractUpgradeable) returns (bool) { return super.paused(); } function _mint(address to, bytes32 id, uint256 amount, bytes memory data) internal override(ERC20SecurityPartition, MintableSecurity) { super._mint(to, id, amount, data); } function _burn(address from, bytes32 id, uint256 amount, bytes memory data) internal override(ERC20SecurityPartition, MintableSecurity) { super._burn(from, id, amount, data); } }