// SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.2; import "../components/IComponent.sol"; import "../modules/IBundle.sol"; import "../modules/IPolicy.sol"; import "../modules/IPool.sol"; import "../tokens/IBundleToken.sol"; import "./IComponentOwnerService.sol"; import "./IInstanceOperatorService.sol"; import "./IOracleService.sol"; import "./IProductService.sol"; import "./IRiskpoolService.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; interface IInstanceService { // instance function getChainId() external view returns(uint256 chainId); function getChainName() external view returns(string memory chainName); function getInstanceId() external view returns(bytes32 instanceId); function getInstanceOperator() external view returns(address instanceOperator); // registry function getComponentOwnerService() external view returns(IComponentOwnerService service); function getInstanceOperatorService() external view returns(IInstanceOperatorService service); function getOracleService() external view returns(IOracleService service); function getProductService() external view returns(IProductService service); function getRiskpoolService() external view returns(IRiskpoolService service); function contracts() external view returns (uint256 numberOfContracts); function contractName(uint256 idx) external view returns (bytes32 name); // access function getDefaultAdminRole() external view returns(bytes32 role); function getProductOwnerRole() external view returns(bytes32 role); function getOracleProviderRole() external view returns(bytes32 role); function getRiskpoolKeeperRole() external view returns(bytes32 role); function hasRole(bytes32 role, address principal) external view returns (bool roleIsAssigned); // component function products() external view returns(uint256 numberOfProducts); function oracles() external view returns(uint256 numberOfOracles); function riskpools() external view returns(uint256 numberOfRiskpools); function getComponentId(address componentAddress) external view returns(uint256 componentId); function getComponent(uint256 componentId) external view returns(IComponent component); function getComponentType(uint256 componentId) external view returns(IComponent.ComponentType componentType); function getComponentState(uint256 componentId) external view returns(IComponent.ComponentState componentState); // service staking function getStakingRequirements(uint256 componentId) external view returns(bytes memory data); function getStakedAssets(uint256 componentId) external view returns(bytes memory data); // riskpool function getRiskpool(uint256 riskpoolId) external view returns(IPool.Pool memory riskPool); function getFullCollateralizationLevel() external view returns (uint256); function getCapital(uint256 riskpoolId) external view returns(uint256 capitalAmount); function getTotalValueLocked(uint256 riskpoolId) external view returns(uint256 totalValueLockedAmount); function getCapacity(uint256 riskpoolId) external view returns(uint256 capacityAmount); function getBalance(uint256 riskpoolId) external view returns(uint256 balanceAmount); function activeBundles(uint256 riskpoolId) external view returns(uint256 numberOfActiveBundles); function getActiveBundleId(uint256 riskpoolId, uint256 bundleIdx) external view returns(uint256 bundleId); function getMaximumNumberOfActiveBundles(uint256 riskpoolId) external view returns(uint256 maximumNumberOfActiveBundles); // bundles function getBundleToken() external view returns(IBundleToken token); function bundles() external view returns(uint256 numberOfBundles); function getBundle(uint256 bundleId) external view returns(IBundle.Bundle memory bundle); function unburntBundles(uint256 riskpoolId) external view returns(uint256 numberOfUnburntBundles); // policy function processIds() external view returns(uint256 numberOfProcessIds); function getMetadata(bytes32 processId) external view returns(IPolicy.Metadata memory metadata); function getApplication(bytes32 processId) external view returns(IPolicy.Application memory application); function getPolicy(bytes32 processId) external view returns(IPolicy.Policy memory policy); function claims(bytes32 processId) external view returns(uint256 numberOfClaims); function payouts(bytes32 processId) external view returns(uint256 numberOfPayouts); function getClaim(bytes32 processId, uint256 claimId) external view returns (IPolicy.Claim memory claim); function getPayout(bytes32 processId, uint256 payoutId) external view returns (IPolicy.Payout memory payout); // treasury function getTreasuryAddress() external view returns(address treasuryAddress); function getInstanceWallet() external view returns(address walletAddress); function getRiskpoolWallet(uint256 riskpoolId) external view returns(address walletAddress); function getComponentToken(uint256 componentId) external view returns(IERC20 token); function getFeeFractionFullUnit() external view returns(uint256 fullUnit); }