@etherisc/gif-next 0.0.2-f13c010-035 → 0.0.2-f15b559-661
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -6
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +148 -62
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -21
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +82 -12
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +108 -188
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +244 -190
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +82 -56
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -73
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +101 -164
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +152 -33
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +256 -296
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +139 -131
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +638 -301
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -39
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +163 -56
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +375 -99
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +586 -215
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +412 -372
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +44 -58
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +152 -33
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +127 -331
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +53 -87
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +56 -136
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +164 -217
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -353
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -51
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -179
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +74 -64
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +37 -7
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +211 -180
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +76 -50
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +163 -175
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +114 -77
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +62 -24
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +88 -40
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +262 -220
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +318 -52
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +225 -439
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +74 -64
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +125 -282
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +289 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +70 -30
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +56 -3
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +33 -33
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +58 -46
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +101 -49
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +47 -25
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +177 -84
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +277 -229
- package/contracts/authorization/IAccessAdmin.sol +13 -7
- package/contracts/authorization/IAuthorization.sol +15 -1
- package/contracts/distribution/BasicDistribution.sol +13 -11
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +42 -38
- package/contracts/distribution/DistributionService.sol +54 -51
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +19 -19
- package/contracts/examples/fire/FirePool.sol +22 -5
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +32 -10
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +33 -3
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +51 -25
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +13 -9
- package/contracts/instance/IInstanceService.sol +9 -9
- package/contracts/instance/Instance.sol +33 -18
- package/contracts/instance/InstanceAdmin.sol +242 -84
- package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
- package/contracts/instance/InstanceReader.sol +174 -32
- package/contracts/instance/InstanceService.sol +73 -82
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +4 -4
- package/contracts/instance/module/IDistribution.sol +2 -1
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/Oracle.sol +1 -1
- package/contracts/oracle/OracleService.sol +92 -73
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +24 -3
- package/contracts/pool/BasicPoolAuthorization.sol +27 -8
- package/contracts/pool/BundleService.sol +47 -145
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +58 -60
- package/contracts/pool/Pool.sol +106 -96
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +427 -214
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +15 -15
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +9 -11
- package/contracts/product/BasicProductAuthorization.sol +24 -10
- package/contracts/product/ClaimService.sol +157 -137
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +26 -11
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/IRiskService.sol +5 -8
- package/contracts/product/PolicyService.sol +244 -253
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +23 -19
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +66 -52
- package/contracts/product/RiskService.sol +79 -31
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +10 -15
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/Registry.sol +16 -3
- package/contracts/registry/RegistryAdmin.sol +132 -226
- package/contracts/registry/RegistryService.sol +3 -3
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +129 -119
- package/contracts/registry/ServiceAuthorizationV3.sol +93 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +61 -105
- package/contracts/shared/ComponentService.sol +301 -295
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +16 -14
- package/contracts/shared/ContractLib.sol +224 -9
- package/contracts/shared/IComponent.sol +4 -17
- package/contracts/shared/IComponentService.sol +16 -25
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/IRegisterable.sol +15 -4
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +4 -20
- package/contracts/shared/NftOwnable.sol +4 -4
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +44 -20
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +263 -105
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +5 -8
- package/contracts/staking/IStakingService.sol +8 -0
- package/contracts/staking/StakeManagerLib.sol +1 -1
- package/contracts/staking/Staking.sol +62 -33
- package/contracts/staking/StakingReader.sol +1 -1
- package/contracts/staking/StakingService.sol +35 -12
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +48 -21
- package/contracts/type/RiskId.sol +26 -8
- package/contracts/type/RoleId.sol +24 -4
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +1 -1
- package/package.json +3 -3
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +0 -206
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/ComponentServiceHelperLib.sol +0 -118
| @@ -1,32 +1,37 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            import {IBundle} from "../instance/module/IBundle.sol";
         | 
| 7 | 
            +
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 8 | 
            +
            import {IDistribution} from "../instance/module/IDistribution.sol";
         | 
| 9 | 
            +
            import {IInstance} from "./IInstance.sol";
         | 
| 10 | 
            +
            import {IKeyValueStore} from "../shared/IKeyValueStore.sol";
         | 
| 11 | 
            +
            import {IOracle} from "../oracle/IOracle.sol";
         | 
| 12 | 
            +
            import {IPolicy} from "../instance/module/IPolicy.sol";
         | 
| 13 | 
            +
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 14 | 
            +
            import {IRisk} from "../instance/module/IRisk.sol";
         | 
| 15 | 
            +
            import {TimestampLib} from "../type/Timestamp.sol";
         | 
| 16 | 
            +
             | 
| 4 17 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 18 | 
            +
            import {BundleSet} from "./BundleSet.sol";
         | 
| 19 | 
            +
            import {BUNDLE, COMPONENT, DISTRIBUTOR, DISTRIBUTION, FEE, PREMIUM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
         | 
| 5 20 | 
             
            import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
         | 
| 6 21 | 
             
            import {DistributorType} from "../type/DistributorType.sol";
         | 
| 22 | 
            +
            import {InstanceStore} from "./InstanceStore.sol";
         | 
| 7 23 | 
             
            import {Key32} from "../type/Key32.sol";
         | 
| 8 24 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 9 | 
            -
            import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PREMIUM, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
         | 
| 10 25 | 
             
            import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
         | 
| 11 26 | 
             
            import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
         | 
| 12 27 | 
             
            import {RequestId} from "../type/RequestId.sol";
         | 
| 13 28 | 
             
            import {RiskId} from "../type/RiskId.sol";
         | 
| 29 | 
            +
            import {RiskSet} from "./RiskSet.sol";
         | 
| 14 30 | 
             
            import {RoleId} from "../type/RoleId.sol";
         | 
| 15 31 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| 32 | 
            +
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 16 33 | 
             
            import {UFixed, UFixedLib} from "../type/UFixed.sol";
         | 
| 17 34 |  | 
| 18 | 
            -
            import {IBundle} from "../instance/module/IBundle.sol";
         | 
| 19 | 
            -
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 20 | 
            -
            import {IDistribution} from "../instance/module/IDistribution.sol";
         | 
| 21 | 
            -
            import {IInstance} from "./IInstance.sol";
         | 
| 22 | 
            -
            import {IKeyValueStore} from "../shared/IKeyValueStore.sol";
         | 
| 23 | 
            -
            import {IOracle} from "../oracle/IOracle.sol";
         | 
| 24 | 
            -
            import {IPolicy} from "../instance/module/IPolicy.sol";
         | 
| 25 | 
            -
            import {IRisk} from "../instance/module/IRisk.sol";
         | 
| 26 | 
            -
            import {TimestampLib} from "../type/Timestamp.sol";
         | 
| 27 | 
            -
             | 
| 28 | 
            -
            import {InstanceStore} from "./InstanceStore.sol";
         | 
| 29 | 
            -
            import {BundleSet} from "./BundleSet.sol";
         | 
| 30 35 |  | 
| 31 36 |  | 
| 32 37 | 
             
            contract InstanceReader {
         | 
| @@ -36,9 +41,12 @@ contract InstanceReader { | |
| 36 41 |  | 
| 37 42 | 
             
                bool private _initialized = false;
         | 
| 38 43 |  | 
| 44 | 
            +
                IRegistry internal _registry;
         | 
| 39 45 | 
             
                IInstance internal _instance;
         | 
| 46 | 
            +
             | 
| 40 47 | 
             
                InstanceStore internal _store;
         | 
| 41 48 | 
             
                BundleSet internal _bundleSet;
         | 
| 49 | 
            +
                RiskSet internal _riskSet;
         | 
| 42 50 |  | 
| 43 51 | 
             
                /// @dev This initializer needs to be called from the instance itself.
         | 
| 44 52 | 
             
                function initialize() public {
         | 
| @@ -49,19 +57,49 @@ contract InstanceReader { | |
| 49 57 | 
             
                    initializeWithInstance(msg.sender);
         | 
| 50 58 | 
             
                }
         | 
| 51 59 |  | 
| 52 | 
            -
                 | 
| 53 | 
            -
             | 
| 60 | 
            +
                function initializeWithInstance(address instanceAddress)
         | 
| 61 | 
            +
                    public
         | 
| 62 | 
            +
                {
         | 
| 54 63 | 
             
                    if(_initialized) {
         | 
| 55 64 | 
             
                        revert ErrorInstanceReaderAlreadyInitialized();
         | 
| 56 65 | 
             
                    }
         | 
| 57 66 |  | 
| 58 67 | 
             
                    _initialized = true;
         | 
| 59 68 | 
             
                    _instance = IInstance(instanceAddress);
         | 
| 69 | 
            +
                    _registry = _instance.getRegistry();
         | 
| 70 | 
            +
             | 
| 60 71 | 
             
                    _store = _instance.getInstanceStore();
         | 
| 61 72 | 
             
                    _bundleSet = _instance.getBundleSet();
         | 
| 73 | 
            +
                    _riskSet = _instance.getRiskSet();
         | 
| 62 74 | 
             
                }
         | 
| 63 75 |  | 
| 64 76 |  | 
| 77 | 
            +
                // instance level functions
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                function getRegistry() public view returns (IRegistry registry) {
         | 
| 80 | 
            +
                    return _registry;
         | 
| 81 | 
            +
                }
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                function getInstanceNftId() public view returns (NftId instanceNftid) {
         | 
| 84 | 
            +
                    return _registry.getNftIdForAddress(address(_instance));
         | 
| 85 | 
            +
                }
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                function getInstance() public view returns (IInstance instance) {
         | 
| 88 | 
            +
                    return _instance;
         | 
| 89 | 
            +
                }
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                function components() public view returns (uint256 componentCount) {
         | 
| 92 | 
            +
                    return _instance.getInstanceAdmin().components();
         | 
| 93 | 
            +
                }
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                function products() public view returns (uint256 productCount) {
         | 
| 96 | 
            +
                    return _instance.products();
         | 
| 97 | 
            +
                }
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                function getProductNftId(uint256 idx) public view returns (NftId productNftId) {
         | 
| 100 | 
            +
                    return _instance.getProductNftId(idx);
         | 
| 101 | 
            +
                }
         | 
| 102 | 
            +
             | 
| 65 103 | 
             
                // module specific functions
         | 
| 66 104 |  | 
| 67 105 | 
             
                function getPolicyInfo(NftId policyNftId)
         | 
| @@ -102,10 +140,18 @@ contract InstanceReader { | |
| 102 140 | 
             
                    return _store.getState(toPremiumKey(policyNftId));
         | 
| 103 141 | 
             
                }
         | 
| 104 142 |  | 
| 143 | 
            +
                function bundles(NftId poolNftId)
         | 
| 144 | 
            +
                    public
         | 
| 145 | 
            +
                    view
         | 
| 146 | 
            +
                    returns (uint256 bundleCount)
         | 
| 147 | 
            +
                {
         | 
| 148 | 
            +
                    return _bundleSet.bundles(poolNftId);
         | 
| 149 | 
            +
                }
         | 
| 150 | 
            +
             | 
| 105 151 | 
             
                function activeBundles(NftId poolNftId)
         | 
| 106 152 | 
             
                    public
         | 
| 107 153 | 
             
                    view
         | 
| 108 | 
            -
                    returns (uint256  | 
| 154 | 
            +
                    returns (uint256 bundleCount)
         | 
| 109 155 | 
             
                {
         | 
| 110 156 | 
             
                    return _bundleSet.activeBundles(poolNftId);
         | 
| 111 157 | 
             
                }
         | 
| @@ -118,6 +164,14 @@ contract InstanceReader { | |
| 118 164 | 
             
                    return _bundleSet.getActiveBundleNftId(poolNftId, idx);
         | 
| 119 165 | 
             
                }
         | 
| 120 166 |  | 
| 167 | 
            +
                function getBundleNftId(NftId poolNftId, uint256 idx)
         | 
| 168 | 
            +
                    public
         | 
| 169 | 
            +
                    view
         | 
| 170 | 
            +
                    returns (NftId bundleNftId)
         | 
| 171 | 
            +
                {
         | 
| 172 | 
            +
                    return _bundleSet.getBundleNftId(poolNftId, idx);
         | 
| 173 | 
            +
                }
         | 
| 174 | 
            +
             | 
| 121 175 | 
             
                function getBundleState(NftId bundleNftId)
         | 
| 122 176 | 
             
                    public
         | 
| 123 177 | 
             
                    view
         | 
| @@ -145,7 +199,7 @@ contract InstanceReader { | |
| 145 199 | 
             
                function claims(NftId policyNftId)
         | 
| 146 200 | 
             
                    public
         | 
| 147 201 | 
             
                    view
         | 
| 148 | 
            -
                    returns (uint16  | 
| 202 | 
            +
                    returns (uint16 claimCount)
         | 
| 149 203 | 
             
                {
         | 
| 150 204 | 
             
                    return getPolicyInfo(policyNftId).claimsCount;
         | 
| 151 205 | 
             
                }
         | 
| @@ -183,7 +237,7 @@ contract InstanceReader { | |
| 183 237 | 
             
                function payouts(NftId policyNftId, ClaimId claimId)
         | 
| 184 238 | 
             
                    public
         | 
| 185 239 | 
             
                    view
         | 
| 186 | 
            -
                    returns (uint24  | 
| 240 | 
            +
                    returns (uint24 payoutCount)
         | 
| 187 241 | 
             
                {
         | 
| 188 242 | 
             
                    return getClaimInfo(policyNftId, claimId).payoutsCount;
         | 
| 189 243 | 
             
                }
         | 
| @@ -226,6 +280,38 @@ contract InstanceReader { | |
| 226 280 | 
             
                    return _store.getState(payoutId.toKey32(policyNftId));
         | 
| 227 281 | 
             
                }
         | 
| 228 282 |  | 
| 283 | 
            +
                function risks(NftId productNftId)
         | 
| 284 | 
            +
                    public
         | 
| 285 | 
            +
                    view
         | 
| 286 | 
            +
                    returns (uint256 riskCount)
         | 
| 287 | 
            +
                {
         | 
| 288 | 
            +
                    return _riskSet.risks(productNftId);
         | 
| 289 | 
            +
                }
         | 
| 290 | 
            +
             | 
| 291 | 
            +
                function getRiskId(NftId productNftId, uint256 idx)
         | 
| 292 | 
            +
                    public
         | 
| 293 | 
            +
                    view
         | 
| 294 | 
            +
                    returns (RiskId riskId)
         | 
| 295 | 
            +
                {
         | 
| 296 | 
            +
                    return _riskSet.getRiskId(productNftId, idx);
         | 
| 297 | 
            +
                }
         | 
| 298 | 
            +
             | 
| 299 | 
            +
                function activeRisks(NftId productNftId)
         | 
| 300 | 
            +
                    public
         | 
| 301 | 
            +
                    view
         | 
| 302 | 
            +
                    returns (uint256 activeRiskCount)
         | 
| 303 | 
            +
                {
         | 
| 304 | 
            +
                    return _riskSet.activeRisks(productNftId);
         | 
| 305 | 
            +
                }
         | 
| 306 | 
            +
             | 
| 307 | 
            +
                function getActiveRiskId(NftId productNftId, uint256 idx)
         | 
| 308 | 
            +
                    public
         | 
| 309 | 
            +
                    view
         | 
| 310 | 
            +
                    returns (RiskId riskId)
         | 
| 311 | 
            +
                {
         | 
| 312 | 
            +
                    return _riskSet.getActiveRiskId(productNftId, idx);
         | 
| 313 | 
            +
                }
         | 
| 314 | 
            +
             | 
| 229 315 | 
             
                function getRiskInfo(RiskId riskId)
         | 
| 230 316 | 
             
                    public 
         | 
| 231 317 | 
             
                    view 
         | 
| @@ -237,32 +323,68 @@ contract InstanceReader { | |
| 237 323 | 
             
                    }
         | 
| 238 324 | 
             
                }
         | 
| 239 325 |  | 
| 240 | 
            -
                function  | 
| 326 | 
            +
                function getRiskState(RiskId riskId)
         | 
| 327 | 
            +
                    public 
         | 
| 328 | 
            +
                    view 
         | 
| 329 | 
            +
                    returns (StateId stateId)
         | 
| 330 | 
            +
                {
         | 
| 331 | 
            +
                    bytes memory data = _store.getData(riskId.toKey32());
         | 
| 332 | 
            +
                    return _store.getState(riskId.toKey32());
         | 
| 333 | 
            +
                }
         | 
| 334 | 
            +
             | 
| 335 | 
            +
                function policiesForRisk(RiskId riskId)
         | 
| 241 336 | 
             
                    public
         | 
| 242 337 | 
             
                    view
         | 
| 243 | 
            -
                    returns ( | 
| 338 | 
            +
                    returns (uint256 linkedPolicies)
         | 
| 244 339 | 
             
                {
         | 
| 245 | 
            -
                     | 
| 340 | 
            +
                    return _riskSet.linkedPolicies(riskId);
         | 
| 341 | 
            +
                }
         | 
| 246 342 |  | 
| 247 | 
            -
             | 
| 248 | 
            -
             | 
| 249 | 
            -
             | 
| 343 | 
            +
                function getPolicyNftIdForRisk(RiskId riskId, uint256 idx)
         | 
| 344 | 
            +
                    public
         | 
| 345 | 
            +
                    view
         | 
| 346 | 
            +
                    returns (NftId linkedPolicyNftId)
         | 
| 347 | 
            +
                {
         | 
| 348 | 
            +
                    return _riskSet.getLinkedPolicyNftId(riskId, idx);
         | 
| 349 | 
            +
                }
         | 
| 350 | 
            +
             | 
| 351 | 
            +
             | 
| 352 | 
            +
                function getToken(NftId componentNftId)
         | 
| 353 | 
            +
                    public
         | 
| 354 | 
            +
                    view
         | 
| 355 | 
            +
                    returns (IERC20Metadata token)
         | 
| 356 | 
            +
                {
         | 
| 357 | 
            +
                    TokenHandler tokenHandler = getTokenHandler(componentNftId);
         | 
| 358 | 
            +
                    if (address(tokenHandler) != address(0)) {
         | 
| 359 | 
            +
                        return tokenHandler.TOKEN();
         | 
| 250 360 | 
             
                    }
         | 
| 251 361 | 
             
                }
         | 
| 252 362 |  | 
| 363 | 
            +
             | 
| 364 | 
            +
                function getWallet(NftId componentNftId)
         | 
| 365 | 
            +
                    public
         | 
| 366 | 
            +
                    view
         | 
| 367 | 
            +
                    returns (address wallet)
         | 
| 368 | 
            +
                {
         | 
| 369 | 
            +
                    TokenHandler tokenHandler = getTokenHandler(componentNftId);
         | 
| 370 | 
            +
                    if (address(tokenHandler) != address(0)) {
         | 
| 371 | 
            +
                        return tokenHandler.getWallet();
         | 
| 372 | 
            +
                    }
         | 
| 373 | 
            +
                }
         | 
| 374 | 
            +
             | 
| 375 | 
            +
             | 
| 253 376 | 
             
                function getTokenHandler(NftId componentNftId)
         | 
| 254 377 | 
             
                    public
         | 
| 255 378 | 
             
                    view
         | 
| 256 | 
            -
                    returns ( | 
| 379 | 
            +
                    returns (TokenHandler tokenHandler)
         | 
| 257 380 | 
             
                {
         | 
| 258 381 | 
             
                    bytes memory data = _store.getData(toComponentKey(componentNftId));
         | 
| 259 | 
            -
             | 
| 260 382 | 
             
                    if (data.length > 0) {
         | 
| 261 | 
            -
                         | 
| 262 | 
            -
                        return address(info.tokenHandler);
         | 
| 383 | 
            +
                        return abi.decode(data, (IComponents.ComponentInfo)).tokenHandler;
         | 
| 263 384 | 
             
                    }
         | 
| 264 385 | 
             
                }
         | 
| 265 386 |  | 
| 387 | 
            +
             | 
| 266 388 | 
             
                function getBundleInfo(NftId bundleNftId)
         | 
| 267 389 | 
             
                    public 
         | 
| 268 390 | 
             
                    view 
         | 
| @@ -330,6 +452,17 @@ contract InstanceReader { | |
| 330 452 | 
             
                    }
         | 
| 331 453 | 
             
                }
         | 
| 332 454 |  | 
| 455 | 
            +
                function getFeeInfo(NftId productNftId)
         | 
| 456 | 
            +
                    public
         | 
| 457 | 
            +
                    view
         | 
| 458 | 
            +
                    returns (IComponents.FeeInfo memory feeInfo)
         | 
| 459 | 
            +
                {
         | 
| 460 | 
            +
                    bytes memory data = _store.getData(toFeeKey(productNftId));
         | 
| 461 | 
            +
                    if (data.length > 0) {
         | 
| 462 | 
            +
                        return abi.decode(data, (IComponents.FeeInfo));
         | 
| 463 | 
            +
                    }
         | 
| 464 | 
            +
                }
         | 
| 465 | 
            +
             | 
| 333 466 | 
             
                function getPoolInfo(NftId poolNftId)
         | 
| 334 467 | 
             
                    public
         | 
| 335 468 | 
             
                    view
         | 
| @@ -440,7 +573,7 @@ contract InstanceReader { | |
| 440 573 | 
             
                }
         | 
| 441 574 |  | 
| 442 575 |  | 
| 443 | 
            -
                function  | 
| 576 | 
            +
                function isLocked(address target) public view returns (bool) {
         | 
| 444 577 | 
             
                    return _instance.getInstanceAdmin().isTargetLocked(target);
         | 
| 445 578 | 
             
                }
         | 
| 446 579 |  | 
| @@ -476,15 +609,24 @@ contract InstanceReader { | |
| 476 609 | 
             
                    return productNftId.toKey32(PRODUCT());
         | 
| 477 610 | 
             
                }
         | 
| 478 611 |  | 
| 479 | 
            -
                 | 
| 480 | 
            -
             | 
| 481 | 
            -
                    return _instance;
         | 
| 612 | 
            +
                function toFeeKey(NftId productNftId) public pure returns (Key32) { 
         | 
| 613 | 
            +
                    return productNftId.toKey32(FEE());
         | 
| 482 614 | 
             
                }
         | 
| 483 615 |  | 
| 616 | 
            +
                // low level function
         | 
| 617 | 
            +
             | 
| 484 618 | 
             
                function getInstanceStore() external view returns (IKeyValueStore store) {
         | 
| 485 619 | 
             
                    return _store;
         | 
| 486 620 | 
             
                }
         | 
| 487 621 |  | 
| 622 | 
            +
                function getBundleSet() external view returns (BundleSet bundleSet) {
         | 
| 623 | 
            +
                    return _bundleSet;
         | 
| 624 | 
            +
                }
         | 
| 625 | 
            +
             | 
| 626 | 
            +
                function getRiskSet() external view returns (RiskSet riskSet) {
         | 
| 627 | 
            +
                    return _riskSet;
         | 
| 628 | 
            +
                }
         | 
| 629 | 
            +
             | 
| 488 630 | 
             
                function toUFixed(uint256 value, int8 exp) public pure returns (UFixed) {
         | 
| 489 631 | 
             
                    return UFixedLib.toUFixed(value, exp);
         | 
| 490 632 | 
             
                }
         | 
| @@ -2,32 +2,26 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
         | 
| 5 | 
            -
            import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
         | 
| 6 5 |  | 
| 6 | 
            +
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 7 7 | 
             
            import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
         | 
| 8 8 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 9 9 | 
             
            import {BundleSet} from "./BundleSet.sol";
         | 
| 10 | 
            +
            import {RiskSet} from "./RiskSet.sol";
         | 
| 10 11 | 
             
            import {ChainNft} from "../registry/ChainNft.sol";
         | 
| 11 12 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 12 13 | 
             
            import {RoleId} from "../type/RoleId.sol";
         | 
| 13 | 
            -
            import { | 
| 14 | 
            -
            import { | 
| 15 | 
            -
            import {ADMIN_ROLE} from "../type/RoleId.sol";
         | 
| 16 | 
            -
            import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
         | 
| 14 | 
            +
            import {UFixed} from "../type/UFixed.sol";
         | 
| 15 | 
            +
            import {ObjectType, INSTANCE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
         | 
| 17 16 |  | 
| 18 17 | 
             
            import {Service} from "../shared/Service.sol";
         | 
| 19 | 
            -
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         | 
| 20 | 
            -
            import {IService} from "../shared/IService.sol";
         | 
| 21 | 
            -
             | 
| 22 | 
            -
            import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
         | 
| 23 | 
            -
            import {IPoolComponent} from "../pool/IPoolComponent.sol";
         | 
| 24 | 
            -
            import {IProductComponent} from "../product/IProductComponent.sol";
         | 
| 25 18 |  | 
| 26 19 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 27 20 | 
             
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 28 21 | 
             
            import {IStakingService} from "../staking/IStakingService.sol";
         | 
| 29 22 | 
             
            import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
         | 
| 30 23 |  | 
| 24 | 
            +
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 31 25 | 
             
            import {Instance} from "./Instance.sol";
         | 
| 32 26 | 
             
            import {IInstance} from "./IInstance.sol";
         | 
| 33 27 | 
             
            import {InstanceAdmin} from "./InstanceAdmin.sol";
         | 
| @@ -35,7 +29,7 @@ import {IInstanceService} from "./IInstanceService.sol"; | |
| 35 29 | 
             
            import {InstanceReader} from "./InstanceReader.sol";
         | 
| 36 30 | 
             
            import {InstanceStore} from "./InstanceStore.sol";
         | 
| 37 31 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 38 | 
            -
            import {VersionPart | 
| 32 | 
            +
            import {VersionPart} from "../type/Version.sol";
         | 
| 39 33 |  | 
| 40 34 |  | 
| 41 35 | 
             
            contract InstanceService is
         | 
| @@ -48,12 +42,14 @@ contract InstanceService is | |
| 48 42 |  | 
| 49 43 | 
             
                IRegistryService internal _registryService;
         | 
| 50 44 | 
             
                IStakingService internal _stakingService;
         | 
| 45 | 
            +
                IComponentService internal _componentService;
         | 
| 51 46 |  | 
| 52 47 | 
             
                address internal _masterAccessManager;
         | 
| 53 48 | 
             
                address internal _masterInstanceAdmin;
         | 
| 54 49 | 
             
                address internal _masterInstance;
         | 
| 55 50 | 
             
                address internal _masterInstanceReader;
         | 
| 56 51 | 
             
                address internal _masterInstanceBundleSet;
         | 
| 52 | 
            +
                address internal _masterInstanceRiskSet;
         | 
| 57 53 | 
             
                address internal _masterInstanceStore;
         | 
| 58 54 |  | 
| 59 55 |  | 
| @@ -85,6 +81,7 @@ contract InstanceService is | |
| 85 81 | 
             
                    _;
         | 
| 86 82 | 
             
                }
         | 
| 87 83 |  | 
| 84 | 
            +
             | 
| 88 85 | 
             
                // TODO check component - service - instance version match
         | 
| 89 86 | 
             
                modifier onlyComponent() {
         | 
| 90 87 | 
             
                    if (! getRegistry().isRegisteredComponent(msg.sender)) {
         | 
| @@ -95,9 +92,10 @@ contract InstanceService is | |
| 95 92 |  | 
| 96 93 | 
             
                function createInstance()
         | 
| 97 94 | 
             
                    external 
         | 
| 95 | 
            +
                    restricted()
         | 
| 98 96 | 
             
                    returns (
         | 
| 99 | 
            -
                         | 
| 100 | 
            -
                        NftId  | 
| 97 | 
            +
                        IInstance instance,
         | 
| 98 | 
            +
                        NftId instanceNftId
         | 
| 101 99 | 
             
                    )
         | 
| 102 100 | 
             
                {
         | 
| 103 101 | 
             
                    // tx sender will become instance owner
         | 
| @@ -105,30 +103,35 @@ contract InstanceService is | |
| 105 103 |  | 
| 106 104 | 
             
                    // create instance admin and instance
         | 
| 107 105 | 
             
                    InstanceAdmin instanceAdmin = _createInstanceAdmin();
         | 
| 108 | 
            -
                     | 
| 106 | 
            +
                    instance = _createInstance(instanceAdmin, instanceOwner);
         | 
| 109 107 |  | 
| 110 108 | 
             
                    // register cloned instance with registry
         | 
| 111 | 
            -
                     | 
| 112 | 
            -
                         | 
| 109 | 
            +
                    instanceNftId = _registryService.registerInstance(
         | 
| 110 | 
            +
                        instance, instanceOwner).nftId;
         | 
| 113 111 |  | 
| 114 112 | 
             
                    // register cloned instance as staking target
         | 
| 115 113 | 
             
                    _stakingService.createInstanceTarget(
         | 
| 116 | 
            -
                         | 
| 114 | 
            +
                        instanceNftId,
         | 
| 117 115 | 
             
                        TargetManagerLib.getDefaultLockingPeriod(),
         | 
| 118 116 | 
             
                        TargetManagerLib.getDefaultRewardRate());
         | 
| 119 117 |  | 
| 120 118 | 
             
                    // MUST be set after instance is set up and registered
         | 
| 121 | 
            -
                     | 
| 119 | 
            +
                    IAuthorization instanceAuthorization = InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization();
         | 
| 120 | 
            +
                    VersionPart release = AccessManagerCloneable(authority()).getRelease();
         | 
| 121 | 
            +
                    instanceAdmin.completeSetup(
         | 
| 122 | 
            +
                        address(instance),
         | 
| 123 | 
            +
                        address(instanceAuthorization));
         | 
| 122 124 |  | 
| 123 125 | 
             
                    emit LogInstanceCloned(
         | 
| 124 | 
            -
                         | 
| 125 | 
            -
                        address( | 
| 126 | 
            +
                        instanceNftId,
         | 
| 127 | 
            +
                        address(instance));
         | 
| 126 128 | 
             
                }
         | 
| 127 129 |  | 
| 128 130 |  | 
| 129 131 | 
             
                function setStakingLockingPeriod(Seconds stakeLockingPeriod)
         | 
| 130 132 | 
             
                    external
         | 
| 131 133 | 
             
                    virtual
         | 
| 134 | 
            +
                    restricted()
         | 
| 132 135 | 
             
                    onlyInstance()
         | 
| 133 136 | 
             
                {
         | 
| 134 137 | 
             
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| @@ -141,6 +144,7 @@ contract InstanceService is | |
| 141 144 | 
             
                function setStakingRewardRate(UFixed rewardRate)
         | 
| 142 145 | 
             
                    external
         | 
| 143 146 | 
             
                    virtual
         | 
| 147 | 
            +
                    restricted()
         | 
| 144 148 | 
             
                    onlyInstance()
         | 
| 145 149 | 
             
                {
         | 
| 146 150 | 
             
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| @@ -153,6 +157,7 @@ contract InstanceService is | |
| 153 157 | 
             
                function refillStakingRewardReserves(address rewardProvider, Amount dipAmount)
         | 
| 154 158 | 
             
                    external
         | 
| 155 159 | 
             
                    virtual
         | 
| 160 | 
            +
                    restricted()
         | 
| 156 161 | 
             
                    onlyInstance()
         | 
| 157 162 | 
             
                {
         | 
| 158 163 | 
             
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| @@ -166,6 +171,7 @@ contract InstanceService is | |
| 166 171 | 
             
                function withdrawStakingRewardReserves(Amount dipAmount)
         | 
| 167 172 | 
             
                    external
         | 
| 168 173 | 
             
                    virtual
         | 
| 174 | 
            +
                    restricted()
         | 
| 169 175 | 
             
                    onlyInstance()
         | 
| 170 176 | 
             
                    returns (Amount newBalance)
         | 
| 171 177 | 
             
                {
         | 
| @@ -175,46 +181,31 @@ contract InstanceService is | |
| 175 181 | 
             
                        dipAmount);
         | 
| 176 182 | 
             
                }
         | 
| 177 183 |  | 
| 178 | 
            -
             | 
| 179 | 
            -
             | 
| 180 | 
            -
                     | 
| 181 | 
            -
                     | 
| 182 | 
            -
                     | 
| 184 | 
            +
                function upgradeInstanceReader(NftId instanceNftId) 
         | 
| 185 | 
            +
                    external 
         | 
| 186 | 
            +
                    nonReentrant()
         | 
| 187 | 
            +
                    restricted()
         | 
| 188 | 
            +
                    onlyInstanceOwner(instanceNftId) 
         | 
| 189 | 
            +
                    onlyNftOfType(instanceNftId, INSTANCE())
         | 
| 183 190 | 
             
                {
         | 
| 184 | 
            -
                    // checks
         | 
| 185 | 
            -
                    address componentAddress = msg.sender;
         | 
| 186 | 
            -
             | 
| 187 | 
            -
                    if (!IInstanceLinkedComponent(componentAddress).supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
         | 
| 188 | 
            -
                        revert ErrorInstanceServiceComponentNotInstanceLinked(componentAddress);
         | 
| 189 | 
            -
                    }
         | 
| 190 | 
            -
             | 
| 191 191 | 
             
                    IRegistry registry = getRegistry();
         | 
| 192 | 
            -
                     | 
| 193 | 
            -
             | 
| 194 | 
            -
                     | 
| 195 | 
            -
             | 
| 196 | 
            -
             | 
| 197 | 
            -
                     | 
| 198 | 
            -
                    // TODO refactor/implement
         | 
| 199 | 
            -
                    // instance.getInstanceAdmin().setTargetLockedByService(
         | 
| 200 | 
            -
                    //     componentAddress, 
         | 
| 201 | 
            -
                    //     locked);
         | 
| 202 | 
            -
                }
         | 
| 203 | 
            -
             | 
| 204 | 
            -
             | 
| 205 | 
            -
                function getMasterInstanceReader() external view returns (address) {
         | 
| 206 | 
            -
                    return _masterInstanceReader;
         | 
| 192 | 
            +
                    IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
         | 
| 193 | 
            +
                    Instance instance = Instance(instanceInfo.objectAddress);
         | 
| 194 | 
            +
                    
         | 
| 195 | 
            +
                    InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
         | 
| 196 | 
            +
                    upgradedInstanceReaderClone.initializeWithInstance(address(instance));
         | 
| 197 | 
            +
                    instance.setInstanceReader(upgradedInstanceReaderClone);
         | 
| 207 198 | 
             
                }
         | 
| 208 199 |  | 
| 209 200 | 
             
                function setAndRegisterMasterInstance(address instanceAddress)
         | 
| 210 | 
            -
             | 
| 211 | 
            -
             | 
| 212 | 
            -
             | 
| 201 | 
            +
                    external 
         | 
| 202 | 
            +
                    onlyOwner()
         | 
| 203 | 
            +
                    returns(NftId masterInstanceNftId)
         | 
| 213 204 | 
             
                {
         | 
| 214 205 | 
             
                    if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
         | 
| 215 206 | 
             
                    if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
         | 
| 216 207 | 
             
                    if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
         | 
| 217 | 
            -
             | 
| 208 | 
            +
                    if(_masterInstanceRiskSet != address(0)) { revert ErrorInstanceServiceMasterRiskSetAlreadySet(); }
         | 
| 218 209 | 
             
                    if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
         | 
| 219 210 |  | 
| 220 211 | 
             
                    IInstance instance = IInstance(instanceAddress);
         | 
| @@ -223,28 +214,34 @@ contract InstanceService is | |
| 223 214 | 
             
                    address instanceAdminAddress = address(instanceAdmin);
         | 
| 224 215 | 
             
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| 225 216 | 
             
                    address instanceReaderAddress = address(instanceReader);
         | 
| 226 | 
            -
                    BundleSet  | 
| 227 | 
            -
                    address  | 
| 217 | 
            +
                    BundleSet bundleSet = instance.getBundleSet();
         | 
| 218 | 
            +
                    address bundleSetAddress = address(bundleSet);
         | 
| 219 | 
            +
                    RiskSet riskSet = instance.getRiskSet();
         | 
| 220 | 
            +
                    address riskSetAddress = address(riskSet);
         | 
| 228 221 | 
             
                    InstanceStore instanceStore = instance.getInstanceStore();
         | 
| 229 222 | 
             
                    address instanceStoreAddress = address(instanceStore);
         | 
| 230 223 |  | 
| 231 224 | 
             
                    if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
         | 
| 232 225 | 
             
                    if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
         | 
| 233 226 | 
             
                    if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
         | 
| 234 | 
            -
                    if( | 
| 227 | 
            +
                    if(bundleSetAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
         | 
| 228 | 
            +
                    if(riskSetAddress == address(0)) { revert ErrorInstanceServiceRiskSetZero(); }
         | 
| 235 229 | 
             
                    if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
         | 
| 236 230 |  | 
| 237 231 | 
             
                    if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
         | 
| 238 | 
            -
                    if( | 
| 232 | 
            +
                    if(bundleSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
         | 
| 233 | 
            +
                    if(riskSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceRiskSetAuthorityMismatch(); }
         | 
| 239 234 | 
             
                    if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
         | 
| 240 | 
            -
                    if( | 
| 235 | 
            +
                    if(bundleSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceBundleSetInstanceMismatch(); }
         | 
| 236 | 
            +
                    if(riskSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceRiskSetInstanceMismatch(); }
         | 
| 241 237 | 
             
                    if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
         | 
| 242 238 |  | 
| 243 239 | 
             
                    _masterAccessManager = accessManagerAddress;
         | 
| 244 240 | 
             
                    _masterInstanceAdmin = instanceAdminAddress;
         | 
| 245 241 | 
             
                    _masterInstance = instanceAddress;
         | 
| 246 242 | 
             
                    _masterInstanceReader = instanceReaderAddress;
         | 
| 247 | 
            -
                    _masterInstanceBundleSet =  | 
| 243 | 
            +
                    _masterInstanceBundleSet = bundleSetAddress;
         | 
| 244 | 
            +
                    _masterInstanceRiskSet = riskSetAddress;
         | 
| 248 245 | 
             
                    _masterInstanceStore = instanceStoreAddress;
         | 
| 249 246 |  | 
| 250 247 | 
             
                    IInstance masterInstance = IInstance(_masterInstance);
         | 
| @@ -252,7 +249,10 @@ contract InstanceService is | |
| 252 249 | 
             
                    masterInstanceNftId = info.nftId;
         | 
| 253 250 | 
             
                }
         | 
| 254 251 |  | 
| 255 | 
            -
                function upgradeMasterInstanceReader(address instanceReaderAddress) | 
| 252 | 
            +
                function upgradeMasterInstanceReader(address instanceReaderAddress)
         | 
| 253 | 
            +
                    external
         | 
| 254 | 
            +
                    onlyOwner
         | 
| 255 | 
            +
                {
         | 
| 256 256 | 
             
                    if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
         | 
| 257 257 | 
             
                    if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
         | 
| 258 258 | 
             
                    if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
         | 
| @@ -263,18 +263,8 @@ contract InstanceService is | |
| 263 263 | 
             
                    _masterInstanceReader = instanceReaderAddress;
         | 
| 264 264 | 
             
                }
         | 
| 265 265 |  | 
| 266 | 
            -
                function  | 
| 267 | 
            -
                     | 
| 268 | 
            -
                    onlyInstanceOwner(instanceNftId) 
         | 
| 269 | 
            -
                    onlyNftOfType(instanceNftId, INSTANCE())
         | 
| 270 | 
            -
                {
         | 
| 271 | 
            -
                    IRegistry registry = getRegistry();
         | 
| 272 | 
            -
                    IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
         | 
| 273 | 
            -
                    Instance instance = Instance(instanceInfo.objectAddress);
         | 
| 274 | 
            -
                    
         | 
| 275 | 
            -
                    InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
         | 
| 276 | 
            -
                    upgradedInstanceReaderClone.initializeWithInstance(address(instance));
         | 
| 277 | 
            -
                    instance.setInstanceReader(upgradedInstanceReaderClone);
         | 
| 266 | 
            +
                function getMasterInstanceReader() external view returns (address) {
         | 
| 267 | 
            +
                    return _masterInstanceReader;
         | 
| 278 268 | 
             
                }
         | 
| 279 269 |  | 
| 280 270 | 
             
                /// @dev create new cloned instance admin
         | 
| @@ -285,19 +275,16 @@ contract InstanceService is | |
| 285 275 | 
             
                    returns (InstanceAdmin clonedInstanceAdmin)
         | 
| 286 276 | 
             
                {
         | 
| 287 277 | 
             
                    // start with setting up a new OZ access manager
         | 
| 278 | 
            +
                    // TODO consider _masterInstanceAdmin.authority() instead of _masterAccessManager
         | 
| 288 279 | 
             
                    AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
         | 
| 289 280 | 
             
                        Clones.clone(_masterAccessManager));
         | 
| 290 281 |  | 
| 291 282 | 
             
                    // set up the instance admin
         | 
| 292 283 | 
             
                    clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
         | 
| 293 | 
            -
                    clonedAccessManager.initialize(
         | 
| 294 | 
            -
                        address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
         | 
| 295 | 
            -
             | 
| 296 | 
            -
                    address authorization = address(
         | 
| 297 | 
            -
                        InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
         | 
| 298 284 | 
             
                    clonedInstanceAdmin.initialize(
         | 
| 299 285 | 
             
                        clonedAccessManager,
         | 
| 300 | 
            -
                         | 
| 286 | 
            +
                        getRegistry(),
         | 
| 287 | 
            +
                        getRelease());
         | 
| 301 288 | 
             
                }
         | 
| 302 289 |  | 
| 303 290 |  | 
| @@ -309,21 +296,24 @@ contract InstanceService is | |
| 309 296 | 
             
                )
         | 
| 310 297 | 
             
                    internal
         | 
| 311 298 | 
             
                    virtual
         | 
| 312 | 
            -
                    returns ( | 
| 299 | 
            +
                    returns (IInstance)
         | 
| 313 300 | 
             
                {
         | 
| 314 301 | 
             
                    InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
         | 
| 315 302 | 
             
                    BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
         | 
| 303 | 
            +
                    RiskSet clonedRiskSet = RiskSet(Clones.clone(_masterInstanceRiskSet));
         | 
| 316 304 | 
             
                    InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
         | 
| 317 305 |  | 
| 318 306 | 
             
                    // clone instance
         | 
| 319 | 
            -
                    clonedInstance = Instance(Clones.clone(_masterInstance));
         | 
| 307 | 
            +
                    Instance clonedInstance = Instance(Clones.clone(_masterInstance));
         | 
| 320 308 | 
             
                    clonedInstance.initialize(
         | 
| 321 309 | 
             
                        instanceAdmin,
         | 
| 322 310 | 
             
                        clonedInstanceStore,
         | 
| 323 311 | 
             
                        clonedBundleSet,
         | 
| 312 | 
            +
                        clonedRiskSet,
         | 
| 324 313 | 
             
                        clonedInstanceReader,
         | 
| 325 314 | 
             
                        getRegistry(),
         | 
| 326 315 | 
             
                        instanceOwner);
         | 
| 316 | 
            +
                    return clonedInstance;
         | 
| 327 317 | 
             
                }
         | 
| 328 318 |  | 
| 329 319 |  | 
| @@ -366,14 +356,15 @@ contract InstanceService is | |
| 366 356 | 
             
                    initializer()
         | 
| 367 357 | 
             
                {
         | 
| 368 358 | 
             
                    (
         | 
| 369 | 
            -
                        address  | 
| 370 | 
            -
                        address  | 
| 359 | 
            +
                        address authority,
         | 
| 360 | 
            +
                        address registry
         | 
| 371 361 | 
             
                    ) = abi.decode(data, (address, address));
         | 
| 372 362 |  | 
| 373 | 
            -
                     | 
| 363 | 
            +
                    __Service_init(authority, registry, owner);
         | 
| 374 364 |  | 
| 375 365 | 
             
                    _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
         | 
| 376 366 | 
             
                    _stakingService = IStakingService(_getServiceAddress(STAKING()));
         | 
| 367 | 
            +
                    _componentService = IComponentService(_getServiceAddress(COMPONENT()));
         | 
| 377 368 |  | 
| 378 369 | 
             
                    _registerInterface(type(IInstanceService).interfaceId);
         | 
| 379 370 | 
             
                }
         |