@etherisc/gif-next 0.0.2-e9c5694-914 → 0.0.2-ea09fbf-195
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 +103 -55
 - 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 +2 -2
 - 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 +37 -5
 - package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
 - 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 +106 -186
 - package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
 - 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 +154 -108
 - package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -53
 - 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 +50 -3
 - 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 +49 -17
 - package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
 - package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +258 -290
 - package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
 - 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 +137 -129
 - package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -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 +502 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
 - package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +630 -317
 - package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -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 +94 -47
 - 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 +131 -56
 - package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +239 -92
 - package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +478 -197
 - 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 +410 -370
 - 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/ObjectSetHelper.sol/ObjectSetHelperLib.dbg.json +4 -0
 - package/artifacts/contracts/instance/base/ObjectSetHelper.sol/ObjectSetHelperLib.json +168 -0
 - package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
 - 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 +2 -2
 - 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 +49 -17
 - package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleService.sol/BundleService.json +128 -226
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -74
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +46 -60
 - 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 +104 -78
 - 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/PoolService.sol/PoolService.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolService.sol/PoolService.json +175 -174
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +64 -38
 - 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 +2 -2
 - package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +251 -144
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +79 -57
 - 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 +143 -3
 - package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
 - package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -22
 - 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 +27 -3
 - package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +158 -140
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +73 -47
 - 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 +88 -73
 - package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -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 +31 -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 +69 -40
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -213
 - 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 +1795 -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 +310 -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 +250 -421
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +71 -61
 - 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 +134 -248
 - 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 +388 -35
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
 - package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
 - package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
 - 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 +27 -3
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
 - 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 +2 -2
 - package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingService.sol/StakingService.json +73 -50
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +46 -24
 - 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 +62 -5
 - package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +3 -3
 - 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/SelectorSetLib.dbg.json +1 -1
 - 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 +136 -73
 - package/contracts/authorization/AccessManagerCloneable.sol +136 -3
 - package/contracts/authorization/IAccessAdmin.sol +6 -3
 - package/contracts/distribution/BasicDistribution.sol +6 -6
 - package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
 - package/contracts/distribution/Distribution.sol +32 -30
 - package/contracts/distribution/DistributionService.sol +34 -32
 - package/contracts/distribution/DistributionServiceManager.sol +1 -1
 - package/contracts/distribution/IDistributionService.sol +5 -6
 - package/contracts/examples/fire/FirePool.sol +22 -5
 - package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
 - package/contracts/examples/fire/FireProduct.sol +31 -8
 - package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
 - package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
 - package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
 - package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
 - package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
 - package/contracts/examples/unpermissioned/SimpleProduct.sol +40 -21
 - package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
 - package/contracts/instance/BundleSet.sol +42 -38
 - package/contracts/instance/IInstance.sol +8 -8
 - package/contracts/instance/IInstanceService.sol +9 -9
 - package/contracts/instance/Instance.sol +20 -17
 - package/contracts/instance/InstanceAdmin.sol +96 -47
 - package/contracts/instance/InstanceAuthorizationV3.sol +45 -14
 - package/contracts/instance/InstanceReader.sol +108 -7
 - 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/ObjectSetHelper.sol +30 -0
 - package/contracts/instance/module/IComponents.sol +4 -4
 - package/contracts/instance/module/IPolicy.sol +2 -1
 - package/contracts/instance/module/IRisk.sol +3 -0
 - 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 +12 -1
 - package/contracts/pool/BundleService.sol +26 -94
 - package/contracts/pool/BundleServiceManager.sol +1 -1
 - package/contracts/pool/IBundleService.sol +2 -24
 - package/contracts/pool/IPoolComponent.sol +1 -7
 - package/contracts/pool/IPoolService.sol +12 -26
 - package/contracts/pool/Pool.sol +112 -102
 - package/contracts/pool/PoolService.sol +171 -100
 - 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 +1 -2
 - package/contracts/product/ClaimService.sol +147 -51
 - package/contracts/product/ClaimServiceManager.sol +1 -1
 - package/contracts/product/IApplicationService.sol +5 -2
 - package/contracts/product/IClaimService.sol +13 -0
 - package/contracts/product/IPolicyService.sol +17 -7
 - package/contracts/product/IProductComponent.sol +4 -1
 - package/contracts/product/PolicyService.sol +244 -199
 - 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 +47 -39
 - package/contracts/product/RiskService.sol +78 -23
 - package/contracts/product/RiskServiceManager.sol +1 -1
 - package/contracts/registry/ChainNft.sol +4 -2
 - package/contracts/registry/IRegistry.sol +8 -15
 - package/contracts/registry/IRelease.sol +26 -0
 - package/contracts/registry/Registry.sol +12 -3
 - package/contracts/registry/RegistryAdmin.sol +121 -225
 - 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 +88 -40
 - package/contracts/registry/TokenRegistry.sol +6 -8
 - package/contracts/shared/Component.sol +59 -98
 - package/contracts/shared/ComponentService.sol +206 -251
 - package/contracts/shared/ComponentServiceManager.sol +1 -1
 - package/contracts/shared/ComponentVerifyingService.sol +15 -13
 - package/contracts/shared/ContractLib.sol +223 -9
 - package/contracts/shared/IComponent.sol +4 -17
 - package/contracts/shared/IComponentService.sol +20 -24
 - 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 +2 -18
 - 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 +316 -66
 - package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
 - package/contracts/staking/IStaking.sol +9 -4
 - package/contracts/staking/Staking.sol +62 -33
 - package/contracts/staking/StakingService.sol +41 -9
 - 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 +32 -18
 - package/contracts/type/RiskId.sol +23 -6
 - package/contracts/type/RoleId.sol +5 -2
 - 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/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
 
| 
         @@ -1,20 +1,18 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // SPDX-License-Identifier: Apache-2.0
         
     | 
| 
       2 
2 
     | 
    
         
             
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            import {IInstance} from "./IInstance.sol";
         
     | 
| 
       5 
     | 
    
         
            -
            import {INSTANCE} from "../type/ObjectType.sol";
         
     | 
| 
       6 
     | 
    
         
            -
            import {InstanceReader} from "./InstanceReader.sol";
         
     | 
| 
       7 
     | 
    
         
            -
            import {IPolicy} from "../instance/module/IPolicy.sol";
         
     | 
| 
       8 
     | 
    
         
            -
            import {IRegistry} from "../registry/IRegistry.sol";
         
     | 
| 
       9 
4 
     | 
    
         
             
            import {LibNftIdSet} from "../type/NftIdSet.sol";
         
     | 
| 
       10 
     | 
    
         
            -
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
       11 
     | 
    
         
            -
            import { 
     | 
| 
      
 5 
     | 
    
         
            +
            import {NftId, NftIdLib} from "../type/NftId.sol";
         
     | 
| 
      
 6 
     | 
    
         
            +
            import {Key32} from "../type/Key32.sol";
         
     | 
| 
      
 7 
     | 
    
         
            +
            import {BUNDLE} from "../type/ObjectType.sol";
         
     | 
| 
       12 
8 
     | 
    
         | 
| 
       13 
9 
     | 
    
         
             
            import {ObjectSet} from "./base/ObjectSet.sol";
         
     | 
| 
      
 10 
     | 
    
         
            +
            import {ObjectSetHelperLib} from "./base/ObjectSetHelper.sol";
         
     | 
| 
       14 
11 
     | 
    
         | 
| 
       15 
12 
     | 
    
         
             
            contract BundleSet is 
         
     | 
| 
       16 
13 
     | 
    
         
             
                ObjectSet
         
     | 
| 
       17 
14 
     | 
    
         
             
            {
         
     | 
| 
      
 15 
     | 
    
         
            +
                using LibNftIdSet for LibNftIdSet.Set;
         
     | 
| 
       18 
16 
     | 
    
         | 
| 
       19 
17 
     | 
    
         
             
                event LogBundleSetPolicyLinked(NftId bundleNftId, NftId policyNftId);
         
     | 
| 
       20 
18 
     | 
    
         
             
                event LogBundleSetPolicyUnlinked(NftId bundleNftId, NftId policyNftId);
         
     | 
| 
         @@ -34,93 +32,99 @@ contract BundleSet is 
     | 
|
| 
       34 
32 
     | 
    
         
             
                mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
         
     | 
| 
       35 
33 
     | 
    
         | 
| 
       36 
34 
     | 
    
         
             
                /// @dev links a policy to its bundle
         
     | 
| 
       37 
     | 
    
         
            -
                 
     | 
| 
       38 
     | 
    
         
            -
                function linkPolicy(NftId policyNftId) external restricted() {
         
     | 
| 
       39 
     | 
    
         
            -
                    NftId bundleNftId = _instance.getInstanceReader().getPolicyInfo(policyNftId).bundleNftId;
         
     | 
| 
       40 
     | 
    
         
            -
                    // decision will likely depend on the decision what to check here and what in the service
         
     | 
| 
       41 
     | 
    
         
            -
                    NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
         
     | 
| 
      
 35 
     | 
    
         
            +
                function linkPolicy(NftId poolNftId, NftId bundleNftId, NftId policyNftId) external restricted() {
         
     | 
| 
       42 
36 
     | 
    
         | 
| 
       43 
37 
     | 
    
         
             
                    // ensure bundle is unlocked (in active set) and registered with this instance
         
     | 
| 
       44 
     | 
    
         
            -
                    if (!_isActive(poolNftId, bundleNftId)) {
         
     | 
| 
      
 38 
     | 
    
         
            +
                    if (!_isActive(poolNftId, _toBundleKey32(bundleNftId))) {
         
     | 
| 
       45 
39 
     | 
    
         
             
                        revert ErrorBundleSetBundleLocked(bundleNftId, policyNftId);
         
     | 
| 
       46 
40 
     | 
    
         
             
                    }
         
     | 
| 
       47 
41 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
                     
     | 
| 
      
 42 
     | 
    
         
            +
                    _activePolicies[bundleNftId].add(policyNftId);
         
     | 
| 
       49 
43 
     | 
    
         
             
                    emit LogBundleSetPolicyLinked(bundleNftId, policyNftId);
         
     | 
| 
       50 
44 
     | 
    
         
             
                }
         
     | 
| 
       51 
45 
     | 
    
         | 
| 
       52 
46 
     | 
    
         | 
| 
       53 
47 
     | 
    
         
             
                /// @dev unlinks a policy from its bundle
         
     | 
| 
       54 
     | 
    
         
            -
                 
     | 
| 
       55 
     | 
    
         
            -
                // - the policy MUST be past its expiry period and it MUST NOT have any open claims
         
     | 
| 
       56 
     | 
    
         
            -
                // - the policy's payoutAmount MUST be equal to its sumInsuredAmount and MUST NOT have any open claims
         
     | 
| 
       57 
     | 
    
         
            -
                function unlinkPolicy(NftId policyNftId) external restricted() {
         
     | 
| 
       58 
     | 
    
         
            -
                    IPolicy.PolicyInfo memory policyInfo = _instance.getInstanceReader().getPolicyInfo(policyNftId);
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                    NftId bundleNftId = policyInfo.bundleNftId;
         
     | 
| 
       61 
     | 
    
         
            -
                    // decision will likely depend on the decision what to check here and what in the service
         
     | 
| 
       62 
     | 
    
         
            -
                    NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
         
     | 
| 
      
 48 
     | 
    
         
            +
                function unlinkPolicy(NftId poolNftId, NftId bundleNftId, NftId policyNftId) external restricted() {
         
     | 
| 
       63 
49 
     | 
    
         | 
| 
       64 
50 
     | 
    
         
             
                    // ensure bundle is registered with this instance
         
     | 
| 
       65 
     | 
    
         
            -
                    if (!_contains(poolNftId, bundleNftId)) {
         
     | 
| 
      
 51 
     | 
    
         
            +
                    if (!_contains(poolNftId, _toBundleKey32(bundleNftId))) {
         
     | 
| 
       66 
52 
     | 
    
         
             
                        revert ErrorBundleSetBundleUnknown(bundleNftId);
         
     | 
| 
       67 
53 
     | 
    
         
             
                    }
         
     | 
| 
       68 
54 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
                     
     | 
| 
       70 
     | 
    
         
            -
                    emit LogBundleSetPolicyUnlinked( 
     | 
| 
      
 55 
     | 
    
         
            +
                    _activePolicies[bundleNftId].remove(policyNftId);
         
     | 
| 
      
 56 
     | 
    
         
            +
                    emit LogBundleSetPolicyUnlinked(bundleNftId, policyNftId);
         
     | 
| 
       71 
57 
     | 
    
         
             
                }
         
     | 
| 
       72 
58 
     | 
    
         | 
| 
       73 
59 
     | 
    
         | 
| 
       74 
60 
     | 
    
         
             
                /// @dev add a new bundle to a pool registerd with this instance
         
     | 
| 
       75 
61 
     | 
    
         
             
                // the corresponding pool is fetched via instance reader
         
     | 
| 
       76 
62 
     | 
    
         
             
                function add(NftId bundleNftId) external restricted() {
         
     | 
| 
       77 
     | 
    
         
            -
                    NftId poolNftId =  
     | 
| 
      
 63 
     | 
    
         
            +
                    NftId poolNftId = ObjectSetHelperLib.getPoolNftId(_instanceAddress, bundleNftId);
         
     | 
| 
       78 
64 
     | 
    
         | 
| 
       79 
65 
     | 
    
         
             
                    // ensure pool is registered with instance
         
     | 
| 
       80 
66 
     | 
    
         
             
                    if(poolNftId.eqz()) {
         
     | 
| 
       81 
67 
     | 
    
         
             
                        revert ErrorBundleSetBundleNotRegistered(bundleNftId);
         
     | 
| 
       82 
68 
     | 
    
         
             
                    }
         
     | 
| 
       83 
69 
     | 
    
         | 
| 
       84 
     | 
    
         
            -
                    _add(poolNftId, bundleNftId);
         
     | 
| 
      
 70 
     | 
    
         
            +
                    _add(poolNftId, _toBundleKey32(bundleNftId));
         
     | 
| 
       85 
71 
     | 
    
         
             
                    emit LogBundleSetBundleAdded(poolNftId, bundleNftId);
         
     | 
| 
       86 
72 
     | 
    
         
             
                }
         
     | 
| 
       87 
73 
     | 
    
         | 
| 
       88 
74 
     | 
    
         | 
| 
       89 
75 
     | 
    
         
             
                /// @dev unlocked (active) bundles are available to collateralize new policies
         
     | 
| 
       90 
76 
     | 
    
         
             
                function unlock(NftId bundleNftId) external restricted() {
         
     | 
| 
       91 
     | 
    
         
            -
                    NftId poolNftId =  
     | 
| 
       92 
     | 
    
         
            -
                    _activate(poolNftId, bundleNftId);
         
     | 
| 
      
 77 
     | 
    
         
            +
                    NftId poolNftId = ObjectSetHelperLib.getPoolNftId(_instanceAddress, bundleNftId);
         
     | 
| 
      
 78 
     | 
    
         
            +
                    _activate(poolNftId, _toBundleKey32(bundleNftId));
         
     | 
| 
       93 
79 
     | 
    
         
             
                    emit LogBundleSetBundleUnlocked(poolNftId, bundleNftId);
         
     | 
| 
       94 
80 
     | 
    
         
             
                }
         
     | 
| 
       95 
81 
     | 
    
         | 
| 
       96 
82 
     | 
    
         
             
                /// @dev locked (deactivated) bundles may not collateralize any new policies
         
     | 
| 
       97 
83 
     | 
    
         
             
                function lock(NftId bundleNftId) external restricted() {
         
     | 
| 
       98 
     | 
    
         
            -
                    NftId poolNftId =  
     | 
| 
       99 
     | 
    
         
            -
                    _deactivate(poolNftId, bundleNftId);
         
     | 
| 
      
 84 
     | 
    
         
            +
                    NftId poolNftId = ObjectSetHelperLib.getPoolNftId(_instanceAddress, bundleNftId);
         
     | 
| 
      
 85 
     | 
    
         
            +
                    _deactivate(poolNftId, _toBundleKey32(bundleNftId));
         
     | 
| 
       100 
86 
     | 
    
         
             
                    emit LogBundleSetBundleLocked(poolNftId, bundleNftId);
         
     | 
| 
       101 
87 
     | 
    
         
             
                }
         
     | 
| 
       102 
88 
     | 
    
         | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                function checkBundle(NftId productNftId, NftId bundleId)
         
     | 
| 
      
 91 
     | 
    
         
            +
                    public
         
     | 
| 
      
 92 
     | 
    
         
            +
                    view 
         
     | 
| 
      
 93 
     | 
    
         
            +
                    returns (bool exists, bool active)
         
     | 
| 
      
 94 
     | 
    
         
            +
                {
         
     | 
| 
      
 95 
     | 
    
         
            +
                    Key32 bundleKey32 = bundleId.toKey32(BUNDLE());
         
     | 
| 
      
 96 
     | 
    
         
            +
                    exists = _contains(productNftId, bundleKey32);
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
                    if (exists) {
         
     | 
| 
      
 99 
     | 
    
         
            +
                        active = _isActive(productNftId, bundleKey32);
         
     | 
| 
      
 100 
     | 
    
         
            +
                    }
         
     | 
| 
      
 101 
     | 
    
         
            +
                }
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
       103 
103 
     | 
    
         
             
                function bundles(NftId poolNftId) external view returns(uint256) {
         
     | 
| 
       104 
104 
     | 
    
         
             
                    return _objects(poolNftId);
         
     | 
| 
       105 
105 
     | 
    
         
             
                }
         
     | 
| 
       106 
106 
     | 
    
         | 
| 
       107 
     | 
    
         
            -
                function getBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId 
     | 
| 
       108 
     | 
    
         
            -
                    return _getObject(poolNftId, idx);
         
     | 
| 
      
 107 
     | 
    
         
            +
                function getBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId) {
         
     | 
| 
      
 108 
     | 
    
         
            +
                    return NftIdLib.toNftId(_getObject(poolNftId, idx).toKeyId());
         
     | 
| 
       109 
109 
     | 
    
         
             
                }
         
     | 
| 
       110 
110 
     | 
    
         | 
| 
       111 
111 
     | 
    
         
             
                function activeBundles(NftId poolNftId) external view returns(uint256) {
         
     | 
| 
       112 
112 
     | 
    
         
             
                    return _activeObjs(poolNftId);
         
     | 
| 
       113 
113 
     | 
    
         
             
                }
         
     | 
| 
       114 
114 
     | 
    
         | 
| 
       115 
     | 
    
         
            -
                function getActiveBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId 
     | 
| 
       116 
     | 
    
         
            -
                    return _getActiveObject(poolNftId, idx);
         
     | 
| 
      
 115 
     | 
    
         
            +
                function getActiveBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId) {
         
     | 
| 
      
 116 
     | 
    
         
            +
                    return NftIdLib.toNftId(_getActiveObject(poolNftId, idx).toKeyId());
         
     | 
| 
       117 
117 
     | 
    
         
             
                }
         
     | 
| 
       118 
118 
     | 
    
         | 
| 
       119 
119 
     | 
    
         
             
                function activePolicies(NftId bundleNftId) external view returns(uint256) {
         
     | 
| 
       120 
     | 
    
         
            -
                    return  
     | 
| 
      
 120 
     | 
    
         
            +
                    return _activePolicies[bundleNftId].size();
         
     | 
| 
       121 
121 
     | 
    
         
             
                }
         
     | 
| 
       122 
122 
     | 
    
         | 
| 
       123 
123 
     | 
    
         
             
                function getActivePolicy(NftId bundleNftId, uint256 idx) external view returns(NftId policyNftId) {
         
     | 
| 
       124 
     | 
    
         
            -
                    return  
     | 
| 
      
 124 
     | 
    
         
            +
                    return _activePolicies[bundleNftId].getElementAt(idx);
         
     | 
| 
      
 125 
     | 
    
         
            +
                }
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
                function _toBundleKey32(NftId nftId) private pure returns (Key32) {
         
     | 
| 
      
 128 
     | 
    
         
            +
                    return nftId.toKey32(BUNDLE());
         
     | 
| 
       125 
129 
     | 
    
         
             
                }
         
     | 
| 
       126 
130 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1,26 +1,21 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // SPDX-License-Identifier: Apache-2.0
         
     | 
| 
       2 
2 
     | 
    
         
             
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
4 
     | 
    
         
             
            import {Amount} from "../type/Amount.sol";
         
     | 
| 
       7 
5 
     | 
    
         
             
            import {BundleSet} from "./BundleSet.sol";
         
     | 
| 
      
 6 
     | 
    
         
            +
            import {RiskSet} from "./RiskSet.sol";
         
     | 
| 
       8 
7 
     | 
    
         
             
            import {InstanceAdmin} from "./InstanceAdmin.sol";
         
     | 
| 
       9 
8 
     | 
    
         
             
            import {InstanceReader} from "./InstanceReader.sol";
         
     | 
| 
       10 
9 
     | 
    
         
             
            import {InstanceStore} from "./InstanceStore.sol";
         
     | 
| 
       11 
10 
     | 
    
         
             
            import {IRegisterable} from "../shared/IRegisterable.sol";
         
     | 
| 
       12 
     | 
    
         
            -
            import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
         
     | 
| 
       13 
11 
     | 
    
         
             
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
       14 
12 
     | 
    
         
             
            import {RoleId} from "../type/RoleId.sol";
         
     | 
| 
       15 
13 
     | 
    
         
             
            import {Seconds} from "../type/Seconds.sol";
         
     | 
| 
       16 
14 
     | 
    
         
             
            import {UFixed} from "../type/UFixed.sol";
         
     | 
| 
       17 
     | 
    
         
            -
            import {VersionPart} from "../type/Version.sol";
         
     | 
| 
       18 
15 
     | 
    
         | 
| 
       19 
16 
     | 
    
         | 
| 
       20 
17 
     | 
    
         
             
            interface IInstance is 
         
     | 
| 
       21 
     | 
    
         
            -
                IRegisterable 
     | 
| 
       22 
     | 
    
         
            -
                ITransferInterceptor, 
         
     | 
| 
       23 
     | 
    
         
            -
                IAccessManaged
         
     | 
| 
      
 18 
     | 
    
         
            +
                IRegisterable
         
     | 
| 
       24 
19 
     | 
    
         
             
            {
         
     | 
| 
       25 
20 
     | 
    
         
             
                error ErrorInstanceInstanceAdminZero();
         
     | 
| 
       26 
21 
     | 
    
         
             
                error ErrorInstanceInstanceAdminAlreadySet(address InstanceAdmin);
         
     | 
| 
         @@ -30,6 +25,10 @@ interface IInstance is 
     | 
|
| 
       30 
25 
     | 
    
         
             
                error ErrorInstanceBundleSetInstanceMismatch(address instance);
         
     | 
| 
       31 
26 
     | 
    
         
             
                error ErrorInstanceBundleSetAuthorityMismatch(address instanceAuthority);
         
     | 
| 
       32 
27 
     | 
    
         | 
| 
      
 28 
     | 
    
         
            +
                error ErrorInstanceRiskSetAlreadySet(address instanceRiskSet);
         
     | 
| 
      
 29 
     | 
    
         
            +
                error ErrorInstanceRiskSetInstanceMismatch(address instance);
         
     | 
| 
      
 30 
     | 
    
         
            +
                error ErrorInstanceRiskSetAuthorityMismatch(address instanceAuthority);
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
       33 
32 
     | 
    
         
             
                error ErrorInstanceInstanceReaderInstanceMismatch(address instanceAuthority);
         
     | 
| 
       34 
33 
     | 
    
         | 
| 
       35 
34 
     | 
    
         
             
                error ErrorInstanceInstanceStoreAlreadySet(address instanceStore);
         
     | 
| 
         @@ -48,7 +47,7 @@ interface IInstance is 
     | 
|
| 
       48 
47 
     | 
    
         | 
| 
       49 
48 
     | 
    
         
             
                function createTarget(address target, string memory name) external;
         
     | 
| 
       50 
49 
     | 
    
         
             
                function setTargetFunctionRole(string memory targetName, bytes4[] calldata selectors, RoleId roleId) external;
         
     | 
| 
       51 
     | 
    
         
            -
                function  
     | 
| 
      
 50 
     | 
    
         
            +
                function setLocked(address target, bool locked) external;
         
     | 
| 
       52 
51 
     | 
    
         | 
| 
       53 
52 
     | 
    
         
             
                function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
         
     | 
| 
       54 
53 
     | 
    
         
             
                function setStakingRewardRate(UFixed rewardRate) external;
         
     | 
| 
         @@ -61,6 +60,7 @@ interface IInstance is 
     | 
|
| 
       61 
60 
     | 
    
         
             
                // get instance release and supporting contracts
         
     | 
| 
       62 
61 
     | 
    
         
             
                function getInstanceReader() external view returns (InstanceReader);
         
     | 
| 
       63 
62 
     | 
    
         
             
                function getBundleSet() external view returns (BundleSet);
         
     | 
| 
      
 63 
     | 
    
         
            +
                function getRiskSet() external view returns (RiskSet);
         
     | 
| 
       64 
64 
     | 
    
         
             
                function getInstanceAdmin() external view returns (InstanceAdmin);
         
     | 
| 
       65 
65 
     | 
    
         
             
                function getInstanceStore() external view returns (InstanceStore);
         
     | 
| 
       66 
66 
     | 
    
         
             
            }
         
     | 
| 
         @@ -2,13 +2,10 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            import {Amount} from "../type/Amount.sol";
         
     | 
| 
       5 
     | 
    
         
            -
            import { 
     | 
| 
       6 
     | 
    
         
            -
            import {Instance} from "./Instance.sol";
         
     | 
| 
       7 
     | 
    
         
            -
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         
     | 
| 
      
 5 
     | 
    
         
            +
            import {IInstance} from "./IInstance.sol";
         
     | 
| 
       8 
6 
     | 
    
         
             
            import {IService} from "../shared/IService.sol";
         
     | 
| 
       9 
7 
     | 
    
         
             
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
       10 
8 
     | 
    
         
             
            import {ObjectType} from "../type/ObjectType.sol";
         
     | 
| 
       11 
     | 
    
         
            -
            import {RoleId} from "../type/RoleId.sol";
         
     | 
| 
       12 
9 
     | 
    
         
             
            import {Seconds} from "../type/Seconds.sol";
         
     | 
| 
       13 
10 
     | 
    
         
             
            import {UFixed} from "../type/UFixed.sol";
         
     | 
| 
       14 
11 
     | 
    
         
             
            import {VersionPart} from "../type/Version.sol";
         
     | 
| 
         @@ -25,6 +22,7 @@ interface IInstanceService is IService { 
     | 
|
| 
       25 
22 
     | 
    
         
             
                error ErrorInstanceServiceMasterInstanceAlreadySet();
         
     | 
| 
       26 
23 
     | 
    
         
             
                error ErrorInstanceServiceMasterInstanceAdminAlreadySet();
         
     | 
| 
       27 
24 
     | 
    
         
             
                error ErrorInstanceServiceMasterBundleSetAlreadySet();
         
     | 
| 
      
 25 
     | 
    
         
            +
                error ErrorInstanceServiceMasterRiskSetAlreadySet();
         
     | 
| 
       28 
26 
     | 
    
         
             
                error ErrorInstanceServiceInstanceAddressZero();
         
     | 
| 
       29 
27 
     | 
    
         | 
| 
       30 
28 
     | 
    
         
             
                error ErrorInstanceServiceMasterInstanceReaderNotSet();
         
     | 
| 
         @@ -36,12 +34,15 @@ interface IInstanceService is IService { 
     | 
|
| 
       36 
34 
     | 
    
         
             
                error ErrorInstanceServiceInstanceAdminZero();
         
     | 
| 
       37 
35 
     | 
    
         
             
                error ErrorInstanceServiceInstanceReaderZero();
         
     | 
| 
       38 
36 
     | 
    
         
             
                error ErrorInstanceServiceBundleSetZero();
         
     | 
| 
      
 37 
     | 
    
         
            +
                error ErrorInstanceServiceRiskSetZero();
         
     | 
| 
       39 
38 
     | 
    
         
             
                error ErrorInstanceServiceInstanceStoreZero();
         
     | 
| 
       40 
39 
     | 
    
         | 
| 
       41 
40 
     | 
    
         
             
                error ErrorInstanceServiceInstanceAuthorityMismatch();
         
     | 
| 
       42 
41 
     | 
    
         
             
                error ErrorInstanceServiceBundleSetAuthorityMismatch();
         
     | 
| 
      
 42 
     | 
    
         
            +
                error ErrorInstanceServiceRiskSetAuthorityMismatch();
         
     | 
| 
       43 
43 
     | 
    
         
             
                error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
         
     | 
| 
       44 
     | 
    
         
            -
                error  
     | 
| 
      
 44 
     | 
    
         
            +
                error ErrorInstanceServiceBundleSetInstanceMismatch();
         
     | 
| 
      
 45 
     | 
    
         
            +
                error ErrorInstanceServiceRiskSetInstanceMismatch();
         
     | 
| 
       45 
46 
     | 
    
         
             
                error ErrorInstanceServiceInstanceStoreAuthorityMismatch();
         
     | 
| 
       46 
47 
     | 
    
         | 
| 
       47 
48 
     | 
    
         
             
                error ErrorInstanceServiceRequestUnauhorized(address caller);
         
     | 
| 
         @@ -55,11 +56,12 @@ interface IInstanceService is IService { 
     | 
|
| 
       55 
56 
     | 
    
         
             
                function createInstance()
         
     | 
| 
       56 
57 
     | 
    
         
             
                    external 
         
     | 
| 
       57 
58 
     | 
    
         
             
                    returns (
         
     | 
| 
       58 
     | 
    
         
            -
                         
     | 
| 
       59 
     | 
    
         
            -
                        Instance clonedInstance,
         
     | 
| 
      
 59 
     | 
    
         
            +
                        IInstance instance,
         
     | 
| 
       60 
60 
     | 
    
         
             
                        NftId instanceNftId
         
     | 
| 
       61 
61 
     | 
    
         
             
                    );
         
     | 
| 
       62 
62 
     | 
    
         | 
| 
      
 63 
     | 
    
         
            +
                function upgradeInstanceReader(NftId instanceNftId) external;
         
     | 
| 
      
 64 
     | 
    
         
            +
                function upgradeMasterInstanceReader(address instanceReaderAddress) external;
         
     | 
| 
       63 
65 
     | 
    
         | 
| 
       64 
66 
     | 
    
         
             
                function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
         
     | 
| 
       65 
67 
     | 
    
         
             
                function setStakingRewardRate(UFixed rewardRate) external;
         
     | 
| 
         @@ -67,6 +69,4 @@ interface IInstanceService is IService { 
     | 
|
| 
       67 
69 
     | 
    
         | 
| 
       68 
70 
     | 
    
         
             
                /// @dev Defunds the staking reward reserves for the specified target.
         
     | 
| 
       69 
71 
     | 
    
         
             
                function withdrawStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
                function setComponentLocked(bool locked) external;
         
     | 
| 
       72 
72 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1,10 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // SPDX-License-Identifier: Apache-2.0
         
     | 
| 
       2 
2 
     | 
    
         
             
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
4 
     | 
    
         
             
            import {Amount} from "../type/Amount.sol";
         
     | 
| 
       7 
5 
     | 
    
         
             
            import {BundleSet} from "./BundleSet.sol";
         
     | 
| 
      
 6 
     | 
    
         
            +
            import {RiskSet} from "./RiskSet.sol";
         
     | 
| 
       8 
7 
     | 
    
         
             
            import {COMPONENT, INSTANCE} from "../type/ObjectType.sol";
         
     | 
| 
       9 
8 
     | 
    
         
             
            import {IInstance} from "./IInstance.sol";
         
     | 
| 
       10 
9 
     | 
    
         
             
            import {IComponentService} from "../shared/IComponentService.sol";
         
     | 
| 
         @@ -18,11 +17,9 @@ import {Registerable} from "../shared/Registerable.sol"; 
     | 
|
| 
       18 
17 
     | 
    
         
             
            import {RoleId} from "../type/RoleId.sol";
         
     | 
| 
       19 
18 
     | 
    
         
             
            import {Seconds} from "../type/Seconds.sol";
         
     | 
| 
       20 
19 
     | 
    
         
             
            import {UFixed} from "../type/UFixed.sol";
         
     | 
| 
       21 
     | 
    
         
            -
            import {VersionPart, VersionPartLib} from "../type/Version.sol";
         
     | 
| 
       22 
20 
     | 
    
         | 
| 
       23 
21 
     | 
    
         
             
            contract Instance is
         
     | 
| 
       24 
22 
     | 
    
         
             
                IInstance,
         
     | 
| 
       25 
     | 
    
         
            -
                AccessManagedUpgradeable,
         
     | 
| 
       26 
23 
     | 
    
         
             
                Registerable
         
     | 
| 
       27 
24 
     | 
    
         
             
            {
         
     | 
| 
       28 
25 
     | 
    
         
             
                bool private _initialized;
         
     | 
| 
         @@ -31,7 +28,8 @@ contract Instance is 
     | 
|
| 
       31 
28 
     | 
    
         
             
                IInstanceService internal _instanceService;
         
     | 
| 
       32 
29 
     | 
    
         
             
                InstanceAdmin internal _instanceAdmin;
         
     | 
| 
       33 
30 
     | 
    
         
             
                InstanceReader internal _instanceReader;
         
     | 
| 
       34 
     | 
    
         
            -
                BundleSet internal  
     | 
| 
      
 31 
     | 
    
         
            +
                BundleSet internal _bundleSet;
         
     | 
| 
      
 32 
     | 
    
         
            +
                RiskSet internal _riskSet;
         
     | 
| 
       35 
33 
     | 
    
         
             
                InstanceStore internal _instanceStore;
         
     | 
| 
       36 
34 
     | 
    
         | 
| 
       37 
35 
     | 
    
         
             
                modifier onlyChainNft() {
         
     | 
| 
         @@ -44,7 +42,8 @@ contract Instance is 
     | 
|
| 
       44 
42 
     | 
    
         
             
                function initialize(
         
     | 
| 
       45 
43 
     | 
    
         
             
                    InstanceAdmin instanceAdmin, 
         
     | 
| 
       46 
44 
     | 
    
         
             
                    InstanceStore instanceStore,
         
     | 
| 
       47 
     | 
    
         
            -
                    BundleSet  
     | 
| 
      
 45 
     | 
    
         
            +
                    BundleSet bundleSet,
         
     | 
| 
      
 46 
     | 
    
         
            +
                    RiskSet riskSet,
         
     | 
| 
       48 
47 
     | 
    
         
             
                    InstanceReader instanceReader,
         
     | 
| 
       49 
48 
     | 
    
         
             
                    IRegistry registry, 
         
     | 
| 
       50 
49 
     | 
    
         
             
                    address initialOwner
         
     | 
| 
         @@ -52,16 +51,15 @@ contract Instance is 
     | 
|
| 
       52 
51 
     | 
    
         
             
                    external 
         
     | 
| 
       53 
52 
     | 
    
         
             
                    initializer()
         
     | 
| 
       54 
53 
     | 
    
         
             
                {
         
     | 
| 
       55 
     | 
    
         
            -
                     
     | 
| 
       56 
     | 
    
         
            -
                    if(_instanceAdmin.authority() == address(0)) {
         
     | 
| 
      
 54 
     | 
    
         
            +
                    if(address(instanceAdmin) == address(0)) {
         
     | 
| 
       57 
55 
     | 
    
         
             
                        revert ErrorInstanceInstanceAdminZero();
         
     | 
| 
       58 
56 
     | 
    
         
             
                    }
         
     | 
| 
       59 
57 
     | 
    
         | 
| 
       60 
     | 
    
         
            -
                     
     | 
| 
       61 
     | 
    
         
            -
                    __AccessManaged_init(_instanceAdmin.authority());
         
     | 
| 
      
 58 
     | 
    
         
            +
                    _instanceAdmin = instanceAdmin;
         
     | 
| 
       62 
59 
     | 
    
         | 
| 
       63 
60 
     | 
    
         
             
                    // setup instance object info
         
     | 
| 
       64 
     | 
    
         
            -
                     
     | 
| 
      
 61 
     | 
    
         
            +
                    __Registerable_init(
         
     | 
| 
      
 62 
     | 
    
         
            +
                        instanceAdmin.authority(),
         
     | 
| 
       65 
63 
     | 
    
         
             
                        address(registry), 
         
     | 
| 
       66 
64 
     | 
    
         
             
                        registry.getNftId(), 
         
     | 
| 
       67 
65 
     | 
    
         
             
                        INSTANCE(), 
         
     | 
| 
         @@ -71,12 +69,14 @@ contract Instance is 
     | 
|
| 
       71 
69 
     | 
    
         | 
| 
       72 
70 
     | 
    
         
             
                    // store instance supporting contracts
         
     | 
| 
       73 
71 
     | 
    
         
             
                    _instanceStore = instanceStore;
         
     | 
| 
       74 
     | 
    
         
            -
                     
     | 
| 
      
 72 
     | 
    
         
            +
                    _bundleSet = bundleSet;
         
     | 
| 
      
 73 
     | 
    
         
            +
                    _riskSet = riskSet;
         
     | 
| 
       75 
74 
     | 
    
         
             
                    _instanceReader = instanceReader;
         
     | 
| 
       76 
75 
     | 
    
         | 
| 
       77 
76 
     | 
    
         
             
                    // initialize instance supporting contracts
         
     | 
| 
       78 
77 
     | 
    
         
             
                    _instanceStore.initialize();
         
     | 
| 
       79 
     | 
    
         
            -
                     
     | 
| 
      
 78 
     | 
    
         
            +
                    _bundleSet.initialize(instanceAdmin.authority(), address(registry));
         
     | 
| 
      
 79 
     | 
    
         
            +
                    _riskSet.initialize(instanceAdmin.authority(), address(registry));
         
     | 
| 
       80 
80 
     | 
    
         
             
                    _instanceReader.initialize();
         
     | 
| 
       81 
81 
     | 
    
         | 
| 
       82 
82 
     | 
    
         
             
                    _componentService = IComponentService(
         
     | 
| 
         @@ -181,12 +181,11 @@ contract Instance is 
     | 
|
| 
       181 
181 
     | 
    
         
             
                    // _instanceAdmin.setTargetFunctionRoleByInstance(targetName, selectors, roleId);
         
     | 
| 
       182 
182 
     | 
    
         
             
                }
         
     | 
| 
       183 
183 
     | 
    
         | 
| 
       184 
     | 
    
         
            -
                function  
     | 
| 
      
 184 
     | 
    
         
            +
                function setLocked(address target, bool locked)
         
     | 
| 
       185 
185 
     | 
    
         
             
                    external 
         
     | 
| 
       186 
186 
     | 
    
         
             
                    onlyOwner()
         
     | 
| 
       187 
187 
     | 
    
         
             
                {
         
     | 
| 
       188 
     | 
    
         
            -
                     
     | 
| 
       189 
     | 
    
         
            -
                    // _instanceAdmin.setTargetLockedByInstance(target, locked);
         
     | 
| 
      
 188 
     | 
    
         
            +
                    _componentService.setLockedFromInstance(target, locked);
         
     | 
| 
       190 
189 
     | 
    
         
             
                }
         
     | 
| 
       191 
190 
     | 
    
         | 
| 
       192 
191 
     | 
    
         
             
                //--- ITransferInterceptor ----------------------------------------------//
         
     | 
| 
         @@ -217,7 +216,11 @@ contract Instance is 
     | 
|
| 
       217 
216 
     | 
    
         
             
                }
         
     | 
| 
       218 
217 
     | 
    
         | 
| 
       219 
218 
     | 
    
         
             
                function getBundleSet() external view returns (BundleSet) {
         
     | 
| 
       220 
     | 
    
         
            -
                    return  
     | 
| 
      
 219 
     | 
    
         
            +
                    return _bundleSet;
         
     | 
| 
      
 220 
     | 
    
         
            +
                }
         
     | 
| 
      
 221 
     | 
    
         
            +
             
     | 
| 
      
 222 
     | 
    
         
            +
                function getRiskSet() external view returns (RiskSet) {
         
     | 
| 
      
 223 
     | 
    
         
            +
                    return _riskSet;
         
     | 
| 
       221 
224 
     | 
    
         
             
                }
         
     | 
| 
       222 
225 
     | 
    
         | 
| 
       223 
226 
     | 
    
         
             
                function getInstanceAdmin() external view returns (InstanceAdmin) {
         
     | 
| 
         @@ -1,22 +1,19 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // SPDX-License-Identifier: UNLICENSED
         
     | 
| 
       2 
2 
     | 
    
         
             
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
         
     | 
| 
       5 
4 
     | 
    
         | 
| 
       6 
5 
     | 
    
         
             
            import {AccessAdmin} from "../authorization/AccessAdmin.sol";
         
     | 
| 
       7 
6 
     | 
    
         
             
            import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
         
     | 
| 
       8 
     | 
    
         
            -
            import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
         
     | 
| 
       9 
7 
     | 
    
         
             
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         
     | 
| 
       10 
8 
     | 
    
         
             
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         
     | 
| 
       11 
9 
     | 
    
         
             
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         
     | 
| 
       12 
10 
     | 
    
         
             
            import {IRegistry} from "../registry/IRegistry.sol";
         
     | 
| 
       13 
11 
     | 
    
         
             
            import {IInstance} from "./IInstance.sol";
         
     | 
| 
       14 
     | 
    
         
            -
            import { 
     | 
| 
       15 
     | 
    
         
            -
            import { 
     | 
| 
       16 
     | 
    
         
            -
            import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
         
     | 
| 
      
 12 
     | 
    
         
            +
            import {ObjectType} from "../type/ObjectType.sol";
         
     | 
| 
      
 13 
     | 
    
         
            +
            import {RoleId, RoleIdLib} from "../type/RoleId.sol";
         
     | 
| 
       17 
14 
     | 
    
         
             
            import {Str, StrLib} from "../type/String.sol";
         
     | 
| 
       18 
15 
     | 
    
         
             
            import {TokenHandler} from "../shared/TokenHandler.sol";
         
     | 
| 
       19 
     | 
    
         
            -
            import {VersionPart} from "../type/Version.sol";
         
     | 
| 
      
 16 
     | 
    
         
            +
            import {VersionPart, VersionPartLib} from "../type/Version.sol";
         
     | 
| 
       20 
17 
     | 
    
         | 
| 
       21 
18 
     | 
    
         | 
| 
       22 
19 
     | 
    
         
             
            contract InstanceAdmin is
         
     | 
| 
         @@ -26,77 +23,86 @@ contract InstanceAdmin is 
     | 
|
| 
       26 
23 
     | 
    
         
             
                string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
         
     | 
| 
       27 
24 
     | 
    
         
             
                string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
         
     | 
| 
       28 
25 
     | 
    
         
             
                string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
         
     | 
| 
      
 26 
     | 
    
         
            +
                string public constant RISK_SET_TAGET_NAME = "RiskSet";
         
     | 
| 
       29 
27 
     | 
    
         | 
| 
       30 
28 
     | 
    
         
             
                uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
         
     | 
| 
       31 
29 
     | 
    
         | 
| 
      
 30 
     | 
    
         
            +
                error ErrorInstanceAdminCallerNotInstanceOwner(address caller);
         
     | 
| 
      
 31 
     | 
    
         
            +
                error ErrorInstanceAdminInstanceAlreadyLocked();
         
     | 
| 
       32 
32 
     | 
    
         
             
                error ErrorInstanceAdminNotRegistered(address target);
         
     | 
| 
       33 
33 
     | 
    
         
             
                error ErrorInstanceAdminAlreadyAuthorized(address target);
         
     | 
| 
       34 
34 
     | 
    
         
             
                error ErrorInstanceAdminReleaseMismatch();
         
     | 
| 
       35 
35 
     | 
    
         
             
                error ErrorInstanceAdminExpectedTargetMissing(string targetName);
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
                IInstance _instance;
         
     | 
| 
      
 37 
     | 
    
         
            +
                IInstance internal _instance;
         
     | 
| 
       38 
38 
     | 
    
         
             
                IRegistry internal _registry;
         
     | 
| 
       39 
     | 
    
         
            -
                uint64 _idNext;
         
     | 
| 
      
 39 
     | 
    
         
            +
                uint64 internal _idNext;
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
                IAuthorization _instanceAuthorization;
         
     | 
| 
      
 41 
     | 
    
         
            +
                IAuthorization internal _instanceAuthorization;
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                modifier onlyInstanceOwner() {        
         
     | 
| 
      
 45 
     | 
    
         
            +
                    if(msg.sender != _registry.ownerOf(address(_instance))) {
         
     | 
| 
      
 46 
     | 
    
         
            +
                        revert ErrorInstanceAdminCallerNotInstanceOwner(msg.sender);
         
     | 
| 
      
 47 
     | 
    
         
            +
                    }
         
     | 
| 
      
 48 
     | 
    
         
            +
                    _;
         
     | 
| 
      
 49 
     | 
    
         
            +
                }
         
     | 
| 
       42 
50 
     | 
    
         | 
| 
       43 
51 
     | 
    
         
             
                /// @dev Only used for master instance admin.
         
     | 
| 
       44 
52 
     | 
    
         
             
                /// Contracts created via constructor come with disabled initializers.
         
     | 
| 
       45 
53 
     | 
    
         
             
                constructor(
         
     | 
| 
       46 
54 
     | 
    
         
             
                    address instanceAuthorization
         
     | 
| 
       47 
     | 
    
         
            -
                )
         
     | 
| 
       48 
     | 
    
         
            -
                     
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
      
 55 
     | 
    
         
            +
                ) {
         
     | 
| 
      
 56 
     | 
    
         
            +
                    initialize(new AccessManagerCloneable());
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
       50 
58 
     | 
    
         
             
                    _instanceAuthorization = IAuthorization(instanceAuthorization);
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                    _disableInitializers();
         
     | 
| 
       51 
61 
     | 
    
         
             
                }
         
     | 
| 
       52 
62 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                /// Internally the function creates an instance specific OpenZeppelin AccessManager that is used as the authority
         
     | 
| 
       55 
     | 
    
         
            -
                /// for the inststance authorizatios.
         
     | 
| 
       56 
     | 
    
         
            -
                /// Important: Initialization of this instance admin is only complete after calling function initializeInstance. 
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
       57 
64 
     | 
    
         
             
                function initialize(
         
     | 
| 
       58 
     | 
    
         
            -
                    AccessManagerCloneable  
     | 
| 
       59 
     | 
    
         
            -
                     
     | 
| 
      
 65 
     | 
    
         
            +
                    AccessManagerCloneable clonedAccessManager,
         
     | 
| 
      
 66 
     | 
    
         
            +
                    IRegistry registry,
         
     | 
| 
      
 67 
     | 
    
         
            +
                    VersionPart release
         
     | 
| 
       60 
68 
     | 
    
         
             
                )
         
     | 
| 
       61 
69 
     | 
    
         
             
                    external
         
     | 
| 
       62 
     | 
    
         
            -
                    initializer() 
     | 
| 
      
 70 
     | 
    
         
            +
                    initializer()
         
     | 
| 
       63 
71 
     | 
    
         
             
                {
         
     | 
| 
       64 
     | 
    
         
            -
                     
     | 
| 
       65 
     | 
    
         
            -
                    _initializeAuthority(address(accessManager));
         
     | 
| 
      
 72 
     | 
    
         
            +
                    __AccessAdmin_init(clonedAccessManager);
         
     | 
| 
       66 
73 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
                     
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
      
 74 
     | 
    
         
            +
                    clonedAccessManager.completeSetup(
         
     | 
| 
      
 75 
     | 
    
         
            +
                        address(registry), 
         
     | 
| 
      
 76 
     | 
    
         
            +
                        release); 
         
     | 
| 
       69 
77 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
                     
     | 
| 
       71 
     | 
    
         
            -
                    _instanceAuthorization = IAuthorization(instanceAuthorization);
         
     | 
| 
      
 78 
     | 
    
         
            +
                    _registry = registry;
         
     | 
| 
       72 
79 
     | 
    
         
             
                }
         
     | 
| 
       73 
80 
     | 
    
         | 
| 
       74 
     | 
    
         
            -
                function _checkTargetIsReadyForAuthorization(address target)
         
     | 
| 
       75 
     | 
    
         
            -
                    internal
         
     | 
| 
       76 
     | 
    
         
            -
                    view
         
     | 
| 
       77 
     | 
    
         
            -
                {
         
     | 
| 
       78 
     | 
    
         
            -
                    if (address(_registry) != address(0) && !_registry.isRegistered(target)) {
         
     | 
| 
       79 
     | 
    
         
            -
                        revert ErrorInstanceAdminNotRegistered(target);
         
     | 
| 
       80 
     | 
    
         
            -
                    }
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
                    if (targetExists(target)) {
         
     | 
| 
       83 
     | 
    
         
            -
                        revert ErrorInstanceAdminAlreadyAuthorized(target);
         
     | 
| 
       84 
     | 
    
         
            -
                    }
         
     | 
| 
       85 
     | 
    
         
            -
                }
         
     | 
| 
       86 
81 
     | 
    
         | 
| 
       87 
     | 
    
         
            -
                /// @dev Completes the initialization of this instance admin using the provided instance.
         
     | 
| 
      
 82 
     | 
    
         
            +
                /// @dev Completes the initialization of this instance admin using the provided instance, registry and version.
         
     | 
| 
      
 83 
     | 
    
         
            +
                /// Important: Initialization of instance admin is only complete after calling this function. 
         
     | 
| 
       88 
84 
     | 
    
         
             
                /// Important: The instance MUST be registered and all instance supporting contracts must be wired to this instance.
         
     | 
| 
       89 
     | 
    
         
            -
                function  
     | 
| 
      
 85 
     | 
    
         
            +
                function completeSetup(
         
     | 
| 
      
 86 
     | 
    
         
            +
                    address instance,
         
     | 
| 
      
 87 
     | 
    
         
            +
                    address authorization
         
     | 
| 
      
 88 
     | 
    
         
            +
                )
         
     | 
| 
       90 
89 
     | 
    
         
             
                    external
         
     | 
| 
      
 90 
     | 
    
         
            +
                    reinitializer(uint64(getRelease().toInt()))
         
     | 
| 
      
 91 
     | 
    
         
            +
                    onlyDeployer()
         
     | 
| 
       91 
92 
     | 
    
         
             
                {
         
     | 
| 
       92 
     | 
    
         
            -
                    _checkTargetIsReadyForAuthorization(instanceAddress);
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
93 
     | 
    
         
             
                    _idNext = CUSTOM_ROLE_ID_MIN;
         
     | 
| 
       95 
     | 
    
         
            -
                    _instance = IInstance( 
     | 
| 
       96 
     | 
    
         
            -
                     
     | 
| 
      
 94 
     | 
    
         
            +
                    _instance = IInstance(instance);
         
     | 
| 
      
 95 
     | 
    
         
            +
                    _instanceAuthorization = IAuthorization(authorization);
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                    // AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
         
     | 
| 
      
 98 
     | 
    
         
            +
                    // accessManager.completeSetup(
         
     | 
| 
      
 99 
     | 
    
         
            +
                    //     address(_registry), 
         
     | 
| 
      
 100 
     | 
    
         
            +
                    //     release); 
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
                    _checkTargetIsReadyForAuthorization(instance);
         
     | 
| 
       97 
103 
     | 
    
         | 
| 
       98 
104 
     | 
    
         
             
                    // check matching releases
         
     | 
| 
       99 
     | 
    
         
            -
                    if (_instanceAuthorization.getRelease() !=  
     | 
| 
      
 105 
     | 
    
         
            +
                    if (_instanceAuthorization.getRelease() != getRelease()) {
         
     | 
| 
       100 
106 
     | 
    
         
             
                        revert ErrorInstanceAdminReleaseMismatch();
         
     | 
| 
       101 
107 
     | 
    
         
             
                    }
         
     | 
| 
       102 
108 
     | 
    
         | 
| 
         @@ -114,10 +120,15 @@ contract InstanceAdmin is 
     | 
|
| 
       114 
120 
     | 
    
         
             
                )
         
     | 
| 
       115 
121 
     | 
    
         
             
                    external
         
     | 
| 
       116 
122 
     | 
    
         
             
                {
         
     | 
| 
      
 123 
     | 
    
         
            +
                    // !!! TODO add caller restrictions?
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
       117 
125 
     | 
    
         
             
                    _checkTargetIsReadyForAuthorization(address(component));
         
     | 
| 
       118 
126 
     | 
    
         | 
| 
       119 
127 
     | 
    
         
             
                    // get authorization specification
         
     | 
| 
       120 
128 
     | 
    
         
             
                    IAuthorization authorization = component.getAuthorization();
         
     | 
| 
      
 129 
     | 
    
         
            +
                    string memory targetName = authorization.getTargetName();
         
     | 
| 
      
 130 
     | 
    
         
            +
                    _checkTargetIsReadyForAuthorization(address(component));
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
       121 
132 
     | 
    
         | 
| 
       122 
133 
     | 
    
         
             
                    // create roles
         
     | 
| 
       123 
134 
     | 
    
         
             
                    _createRoles(authorization);
         
     | 
| 
         @@ -125,13 +136,13 @@ contract InstanceAdmin is 
     | 
|
| 
       125 
136 
     | 
    
         
             
                    // create component target
         
     | 
| 
       126 
137 
     | 
    
         
             
                    _createTarget(
         
     | 
| 
       127 
138 
     | 
    
         
             
                        address(component), 
         
     | 
| 
       128 
     | 
    
         
            -
                         
     | 
| 
      
 139 
     | 
    
         
            +
                        targetName, 
         
     | 
| 
       129 
140 
     | 
    
         
             
                        true, // checkAuthority
         
     | 
| 
       130 
141 
     | 
    
         
             
                        false); // custom
         
     | 
| 
       131 
142 
     | 
    
         | 
| 
       132 
143 
     | 
    
         
             
                    _createTarget(
         
     | 
| 
       133 
144 
     | 
    
         
             
                        address(component.getTokenHandler()), 
         
     | 
| 
       134 
     | 
    
         
            -
                        string(abi.encodePacked( 
     | 
| 
      
 145 
     | 
    
         
            +
                        string(abi.encodePacked(targetName, "TH")), 
         
     | 
| 
       135 
146 
     | 
    
         
             
                        true, 
         
     | 
| 
       136 
147 
     | 
    
         
             
                        false);
         
     | 
| 
       137 
148 
     | 
    
         | 
| 
         @@ -173,6 +184,28 @@ contract InstanceAdmin is 
     | 
|
| 
       173 
184 
     | 
    
         
             
                    _grantRoleToAccount(roleId, account);
         
     | 
| 
       174 
185 
     | 
    
         
             
                }
         
     | 
| 
       175 
186 
     | 
    
         | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
      
 188 
     | 
    
         
            +
                function setInstanceLocked(bool locked)
         
     | 
| 
      
 189 
     | 
    
         
            +
                    external
         
     | 
| 
      
 190 
     | 
    
         
            +
                    onlyInstanceOwner()
         
     | 
| 
      
 191 
     | 
    
         
            +
                {
         
     | 
| 
      
 192 
     | 
    
         
            +
                    AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
         
     | 
| 
      
 193 
     | 
    
         
            +
             
     | 
| 
      
 194 
     | 
    
         
            +
                    if(accessManager.isLocked() == locked) {
         
     | 
| 
      
 195 
     | 
    
         
            +
                        revert ErrorInstanceAdminInstanceAlreadyLocked();
         
     | 
| 
      
 196 
     | 
    
         
            +
                    }
         
     | 
| 
      
 197 
     | 
    
         
            +
                    accessManager.setLocked(locked);
         
     | 
| 
      
 198 
     | 
    
         
            +
                }
         
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
      
 200 
     | 
    
         
            +
                function setTargetLocked(address target, bool locked) 
         
     | 
| 
      
 201 
     | 
    
         
            +
                    external 
         
     | 
| 
      
 202 
     | 
    
         
            +
                    restricted()
         
     | 
| 
      
 203 
     | 
    
         
            +
                {
         
     | 
| 
      
 204 
     | 
    
         
            +
                    _setTargetClosed(target, locked);
         
     | 
| 
      
 205 
     | 
    
         
            +
                }
         
     | 
| 
      
 206 
     | 
    
         
            +
             
     | 
| 
      
 207 
     | 
    
         
            +
             
     | 
| 
      
 208 
     | 
    
         
            +
             
     | 
| 
       176 
209 
     | 
    
         
             
                /// @dev Returns the instance authorization specification used to set up this instance admin.
         
     | 
| 
       177 
210 
     | 
    
         
             
                function getInstanceAuthorization()
         
     | 
| 
       178 
211 
     | 
    
         
             
                    external
         
     | 
| 
         @@ -182,6 +215,21 @@ contract InstanceAdmin is 
     | 
|
| 
       182 
215 
     | 
    
         
             
                    return _instanceAuthorization;
         
     | 
| 
       183 
216 
     | 
    
         
             
                }
         
     | 
| 
       184 
217 
     | 
    
         | 
| 
      
 218 
     | 
    
         
            +
                // ------------------- Internal functions ------------------- //
         
     | 
| 
      
 219 
     | 
    
         
            +
             
     | 
| 
      
 220 
     | 
    
         
            +
                function _checkTargetIsReadyForAuthorization(address target)
         
     | 
| 
      
 221 
     | 
    
         
            +
                    internal
         
     | 
| 
      
 222 
     | 
    
         
            +
                    view
         
     | 
| 
      
 223 
     | 
    
         
            +
                {
         
     | 
| 
      
 224 
     | 
    
         
            +
                    if (!_registry.isRegistered(target)) {
         
     | 
| 
      
 225 
     | 
    
         
            +
                        revert ErrorInstanceAdminNotRegistered(target);
         
     | 
| 
      
 226 
     | 
    
         
            +
                    }
         
     | 
| 
      
 227 
     | 
    
         
            +
             
     | 
| 
      
 228 
     | 
    
         
            +
                    if (targetExists(target)) {
         
     | 
| 
      
 229 
     | 
    
         
            +
                        revert ErrorInstanceAdminAlreadyAuthorized(target);
         
     | 
| 
      
 230 
     | 
    
         
            +
                    }
         
     | 
| 
      
 231 
     | 
    
         
            +
                }
         
     | 
| 
      
 232 
     | 
    
         
            +
             
     | 
| 
       185 
233 
     | 
    
         | 
| 
       186 
234 
     | 
    
         
             
                function _createRoles(IAuthorization authorization)
         
     | 
| 
       187 
235 
     | 
    
         
             
                    internal
         
     | 
| 
         @@ -242,7 +290,7 @@ contract InstanceAdmin is 
     | 
|
| 
       242 
290 
     | 
    
         
             
                    _createTarget(
         
     | 
| 
       243 
291 
     | 
    
         
             
                        target, 
         
     | 
| 
       244 
292 
     | 
    
         
             
                        targetName, 
         
     | 
| 
       245 
     | 
    
         
            -
                        false, // check authority TODO check normal targets, don't check service targets (they share authority with  
     | 
| 
      
 293 
     | 
    
         
            +
                        false, // check authority TODO check normal targets, don't check service targets (they share authority with release admin)
         
     | 
| 
       246 
294 
     | 
    
         
             
                        false);
         
     | 
| 
       247 
295 
     | 
    
         | 
| 
       248 
296 
     | 
    
         
             
                    // assign target role if defined
         
     | 
| 
         @@ -260,6 +308,7 @@ contract InstanceAdmin is 
     | 
|
| 
       260 
308 
     | 
    
         
             
                    _checkAndCreateTargetWithRole(address(_instance.getInstanceStore()), INSTANCE_STORE_TARGET_NAME);
         
     | 
| 
       261 
309 
     | 
    
         
             
                    _checkAndCreateTargetWithRole(address(_instance.getInstanceAdmin()), INSTANCE_ADMIN_TARGET_NAME);
         
     | 
| 
       262 
310 
     | 
    
         
             
                    _checkAndCreateTargetWithRole(address(_instance.getBundleSet()), BUNDLE_SET_TARGET_NAME);
         
     | 
| 
      
 311 
     | 
    
         
            +
                    _checkAndCreateTargetWithRole(address(_instance.getRiskSet()), RISK_SET_TAGET_NAME);
         
     | 
| 
       263 
312 
     | 
    
         | 
| 
       264 
313 
     | 
    
         
             
                    // create targets for services that need to access the module targets
         
     | 
| 
       265 
314 
     | 
    
         
             
                    ObjectType[] memory serviceDomains = _instanceAuthorization.getServiceDomains();
         
     |