// SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.2; import "../modules/ITreasury.sol"; interface IInstanceOperatorService { // registry function prepareRelease(bytes32 newRelease) external; function register(bytes32 contractName, address contractAddress) external; function deregister(bytes32 contractName) external; function registerInRelease(bytes32 release, bytes32 contractName, address contractAddress) external; function deregisterInRelease(bytes32 release, bytes32 contractName) external; // access function createRole(bytes32 role) external; function invalidateRole(bytes32 role) external; function grantRole(bytes32 role, address principal) external; function revokeRole(bytes32 role, address principal) external; // component function approve(uint256 id) external; function decline(uint256 id) external; function suspend(uint256 id) external; function resume(uint256 id) external; function archive(uint256 id) external; // service staking function setDefaultStaking(uint16 componentType, bytes calldata data) external; function adjustStakingRequirements(uint256 id, bytes calldata data) external; // treasury function suspendTreasury() external; function resumeTreasury() external; function setInstanceWallet(address walletAddress) external; function setRiskpoolWallet(uint256 riskpoolId, address walletAddress) external; function setProductToken(uint256 productId, address erc20Address) external; function setPremiumFees(ITreasury.FeeSpecification calldata feeSpec) external; function setCapitalFees(ITreasury.FeeSpecification calldata feeSpec) external; function createFeeSpecification( uint256 componentId, uint256 fixedFee, uint256 fractionalFee, bytes calldata feeCalculationData ) external view returns(ITreasury.FeeSpecification memory); }