// SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.2; import "../modules/IRegistry.sol"; interface IComponent { enum ComponentType { Oracle, Product, Riskpool } enum ComponentState { Created, Proposed, Declined, Active, Paused, Suspended, Archived } event LogComponentCreated ( bytes32 componentName, IComponent.ComponentType componentType, address componentAddress, address registryAddress); function setId(uint256 id) external; function getName() external view returns(bytes32); function getId() external view returns(uint256); function getType() external view returns(ComponentType); function getState() external view returns(ComponentState); function getOwner() external view returns(address); function isProduct() external view returns(bool); function isOracle() external view returns(bool); function isRiskpool() external view returns(bool); function getRegistry() external view returns(IRegistry); function proposalCallback() external; function approvalCallback() external; function declineCallback() external; function suspendCallback() external; function resumeCallback() external; function pauseCallback() external; function unpauseCallback() external; function archiveCallback() external; }