@etherisc/gif-next 0.0.2-e987ccf-894 → 0.0.2-e9c5694-914
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 +1 -1
 - package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
 - package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
 - package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
 - package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
 - 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 +60 -32
 - package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
 - package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
 - package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
 - package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
 - package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
 - package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
 - package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +151 -249
 - package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
 - package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
 - package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +91 -213
 - package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
 - package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +141 -198
 - package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +107 -107
 - package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
 - package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -66
 - package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
 - package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +29 -0
 - package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
 - package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
 - package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
 - package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
 - package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
 - package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
 - package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
 - package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
 - package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
 - package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
 - package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
 - package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
 - package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
 - package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
 - package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
 - package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
 - package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
 - package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
 - package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
 - package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +165 -138
 - package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +310 -83
 - package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
 - package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
 - package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +207 -241
 - 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 +46 -5
 - package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
 - package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
 - 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 +132 -230
 - package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
 - 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 +73 -61
 - package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
 - package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
 - package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
 - package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +86 -208
 - package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
 - package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
 - package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
 - package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
 - package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +109 -216
 - package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
 - package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleService.sol/BundleService.json +178 -187
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +117 -105
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
 - package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
 - package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +98 -58
 - package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
 - package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +200 -125
 - package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
 - package/artifacts/contracts/pool/Pool.sol/Pool.json +109 -203
 - package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolService.sol/PoolService.json +308 -274
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +108 -88
 - package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
 - package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +71 -152
 - package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -84
 - package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
 - package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +140 -221
 - package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
 - package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +288 -188
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
 - package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
 - package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
 - package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
 - package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
 - package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
 - package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +141 -11
 - package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
 - package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
 - package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
 - package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +131 -78
 - package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
 - package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
 - package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +258 -195
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +114 -98
 - package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
 - package/artifacts/contracts/product/PricingService.sol/PricingService.json +154 -219
 - package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +87 -91
 - package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
 - package/artifacts/contracts/product/Product.sol/Product.json +140 -221
 - package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
 - package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
 - package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
 - package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
 - package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
 - package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
 - package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
 - package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +285 -33
 - package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
 - package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
 - package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
 - package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
 - package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
 - package/artifacts/contracts/registry/Registry.sol/Registry.json +491 -94
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
 - package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
 - package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
 - package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
 - package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
 - package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
 - package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +129 -221
 - package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
 - package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
 - package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
 - package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
 - package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
 - package/artifacts/contracts/shared/Component.sol/Component.json +68 -175
 - package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +351 -263
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +120 -110
 - package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
 - package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
 - package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
 - package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
 - package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -28
 - package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
 - package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
 - package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
 - package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +73 -61
 - package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
 - package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
 - package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
 - package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
 - package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
 - package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
 - package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
 - package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
 - package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
 - package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
 - 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 +29 -0
 - package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
 - package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
 - package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
 - package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +86 -208
 - package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
 - package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
 - package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
 - package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -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 +22 -57
 - package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
 - package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
 - package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
 - package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
 - package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
 - package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
 - package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
 - package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
 - package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
 - package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
 - package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
 - package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -29
 - package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
 - package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +83 -30
 - package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
 - package/artifacts/contracts/staking/Staking.sol/Staking.json +171 -224
 - package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
 - package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +102 -87
 - package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
 - package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
 - package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
 - package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
 - package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -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 +32 -8
 - 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 +28 -4
 - 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 +2 -2
 - 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/NftId.sol/NftIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
 - 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 +19 -19
 - 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 +60 -4
 - package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
 - package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
 - 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/StateId.sol/StateIdLib.json +15 -2
 - 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/MathLib.dbg.json +1 -1
 - package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
 - package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
 - package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
 - package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
 - 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 +55 -70
 - package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
 - package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
 - package/contracts/authorization/AccessAdmin.sol +64 -59
 - package/contracts/authorization/Authorization.sol +111 -39
 - package/contracts/authorization/IAccess.sol +1 -0
 - package/contracts/authorization/IAccessAdmin.sol +4 -3
 - package/contracts/authorization/IAuthorization.sol +13 -7
 - package/contracts/authorization/IServiceAuthorization.sol +3 -1
 - package/contracts/authorization/ReleaseAccessManager.sol +38 -0
 - package/contracts/authorization/ServiceAuthorization.sol +26 -10
 - package/contracts/distribution/BasicDistribution.sol +2 -1
 - package/contracts/distribution/Distribution.sol +7 -17
 - package/contracts/distribution/DistributionService.sol +63 -44
 - package/contracts/distribution/DistributionServiceManager.sol +6 -6
 - package/contracts/distribution/IDistributionComponent.sol +1 -1
 - package/contracts/examples/fire/DamageLevel.sol +59 -0
 - package/contracts/examples/fire/FirePool.sol +73 -0
 - package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
 - package/contracts/examples/fire/FireProduct.sol +415 -0
 - package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
 - package/contracts/examples/fire/FireUSD.sol +26 -0
 - package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
 - package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
 - package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
 - package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
 - package/contracts/instance/IInstance.sol +10 -30
 - package/contracts/instance/IInstanceService.sol +0 -20
 - package/contracts/instance/Instance.sol +29 -51
 - package/contracts/instance/InstanceAdmin.sol +23 -31
 - package/contracts/instance/InstanceAuthorizationV3.sol +10 -19
 - package/contracts/instance/InstanceReader.sol +91 -18
 - package/contracts/instance/InstanceService.sol +23 -77
 - package/contracts/instance/InstanceServiceManager.sol +6 -7
 - package/contracts/instance/InstanceStore.sol +0 -4
 - package/contracts/instance/base/ObjectLifecycle.sol +2 -1
 - package/contracts/instance/module/IComponents.sol +10 -5
 - package/contracts/instance/module/IPolicy.sol +7 -7
 - package/contracts/oracle/BasicOracle.sol +0 -1
 - package/contracts/oracle/IOracleService.sol +2 -1
 - package/contracts/oracle/Oracle.sol +6 -16
 - package/contracts/oracle/OracleService.sol +47 -34
 - package/contracts/oracle/OracleServiceManager.sol +6 -6
 - package/contracts/pool/BasicPool.sol +14 -26
 - package/contracts/pool/BasicPoolAuthorization.sol +0 -1
 - package/contracts/pool/BundleService.sol +83 -28
 - package/contracts/pool/BundleServiceManager.sol +6 -6
 - package/contracts/pool/IBundleService.sol +9 -0
 - package/contracts/pool/IPoolComponent.sol +18 -8
 - package/contracts/pool/IPoolService.sol +21 -14
 - package/contracts/pool/Pool.sol +48 -39
 - package/contracts/pool/PoolService.sol +121 -86
 - package/contracts/pool/PoolServiceManager.sol +4 -4
 - package/contracts/product/ApplicationService.sol +20 -10
 - package/contracts/product/ApplicationServiceManager.sol +4 -4
 - package/contracts/product/BasicProduct.sol +7 -6
 - package/contracts/product/BasicProductAuthorization.sol +0 -1
 - package/contracts/product/ClaimService.sol +310 -114
 - package/contracts/product/ClaimServiceManager.sol +4 -4
 - package/contracts/product/IClaimService.sol +30 -7
 - package/contracts/product/IPolicyService.sol +12 -5
 - package/contracts/product/IPricingService.sol +9 -9
 - package/contracts/product/IProductComponent.sol +23 -3
 - package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -2
 - package/contracts/product/PolicyService.sol +168 -53
 - package/contracts/product/PolicyServiceManager.sol +4 -4
 - package/contracts/product/PricingService.sol +12 -13
 - package/contracts/product/PricingServiceManager.sol +3 -3
 - package/contracts/product/Product.sol +104 -55
 - package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
 - package/contracts/product/RiskServiceManager.sol +39 -0
 - package/contracts/registry/ChainNft.sol +68 -38
 - package/contracts/registry/IRegistry.sol +54 -17
 - package/contracts/registry/IRegistryService.sol +5 -12
 - package/contracts/registry/ITransferInterceptor.sol +1 -2
 - package/contracts/registry/Registry.sol +341 -200
 - package/contracts/registry/RegistryAdmin.sol +124 -50
 - package/contracts/registry/RegistryService.sol +35 -46
 - package/contracts/registry/RegistryServiceManager.sol +2 -2
 - package/contracts/registry/ReleaseLifecycle.sol +6 -3
 - package/contracts/registry/ReleaseRegistry.sol +203 -187
 - package/contracts/registry/ServiceAuthorizationV3.sol +14 -19
 - package/contracts/shared/Component.sol +29 -32
 - package/contracts/shared/ComponentService.sol +241 -137
 - package/contracts/shared/ComponentServiceManager.sol +8 -5
 - package/contracts/shared/ComponentVerifyingService.sol +22 -13
 - package/contracts/shared/ContractLib.sol +38 -0
 - package/contracts/shared/IComponent.sol +6 -2
 - package/contracts/shared/IComponentService.sol +25 -13
 - package/contracts/shared/IInstanceLinkedComponent.sol +2 -17
 - package/contracts/shared/ILifecycle.sol +3 -1
 - package/contracts/shared/INftOwnable.sol +2 -0
 - package/contracts/shared/IPolicyHolder.sol +12 -22
 - package/contracts/shared/IRegisterable.sol +11 -0
 - package/contracts/shared/InitializableERC165.sol +2 -2
 - package/contracts/shared/InstanceLinkedComponent.sol +71 -30
 - package/contracts/shared/KeyValueStore.sol +1 -1
 - package/contracts/shared/Lifecycle.sol +15 -4
 - package/contracts/shared/NftOwnable.sol +26 -6
 - package/contracts/shared/PolicyHolder.sol +15 -52
 - package/contracts/shared/Registerable.sol +19 -9
 - package/contracts/shared/RegistryLinked.sol +3 -2
 - package/contracts/shared/Service.sol +20 -18
 - package/contracts/staking/IStaking.sol +2 -1
 - package/contracts/staking/IStakingService.sol +0 -3
 - package/contracts/staking/StakeManagerLib.sol +18 -0
 - package/contracts/staking/Staking.sol +8 -8
 - package/contracts/staking/StakingManager.sol +8 -6
 - package/contracts/staking/StakingReader.sol +12 -5
 - package/contracts/staking/StakingService.sol +17 -17
 - package/contracts/staking/StakingServiceManager.sol +2 -2
 - package/contracts/staking/TargetManagerLib.sol +7 -3
 - package/contracts/type/Amount.sol +15 -0
 - package/contracts/type/ClaimId.sol +6 -1
 - package/contracts/type/NftId.sol +1 -0
 - package/contracts/type/ObjectType.sol +1 -0
 - package/contracts/type/PayoutId.sol +10 -10
 - package/contracts/type/RiskId.sol +15 -1
 - package/contracts/type/RoleId.sol +0 -12
 - package/contracts/type/Seconds.sol +8 -0
 - package/contracts/type/StateId.sol +15 -1
 - package/contracts/type/UFixed.sol +4 -0
 - package/contracts/upgradeability/ProxyManager.sol +68 -34
 - package/contracts/upgradeability/Versionable.sol +2 -2
 - package/package.json +2 -1
 - package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
 - package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
 - package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
 - package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
 - package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
 - package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
 - package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
 - package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
 - package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
 - package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
 - package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
 - package/contracts/authorization/IModuleAuthorization.sol +0 -21
 - package/contracts/authorization/ModuleAuthorization.sol +0 -78
 - package/contracts/product/ProductServiceManager.sol +0 -39
 - package/contracts/shared/InitializableCustom.sol +0 -177
 
| 
         @@ -6,11 +6,12 @@ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet 
     | 
|
| 
       6 
6 
     | 
    
         
             
            import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
         
     | 
| 
      
 9 
     | 
    
         
            +
            import {ContractLib} from "../shared/ContractLib.sol";
         
     | 
| 
       9 
10 
     | 
    
         
             
            import {IAccessAdmin} from "./IAccessAdmin.sol";
         
     | 
| 
       10 
11 
     | 
    
         
             
            import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
         
     | 
| 
       11 
12 
     | 
    
         
             
            import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
         
     | 
| 
       12 
13 
     | 
    
         
             
            import {Str, StrLib} from "../type/String.sol";
         
     | 
| 
       13 
     | 
    
         
            -
            import { 
     | 
| 
      
 14 
     | 
    
         
            +
            import {TimestampLib} from "../type/Timestamp.sol";
         
     | 
| 
       14 
15 
     | 
    
         | 
| 
       15 
16 
     | 
    
         | 
| 
       16 
17 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -79,9 +80,7 @@ contract AccessAdmin is 
     | 
|
| 
       79 
80 
     | 
    
         
             
                }
         
     | 
| 
       80 
81 
     | 
    
         | 
| 
       81 
82 
     | 
    
         
             
                modifier onlyRoleAdmin(RoleId roleId) {
         
     | 
| 
       82 
     | 
    
         
            -
                     
     | 
| 
       83 
     | 
    
         
            -
                        revert ErrorRoleUnknown(roleId);
         
     | 
| 
       84 
     | 
    
         
            -
                    }
         
     | 
| 
      
 83 
     | 
    
         
            +
                    _checkRoleExists(roleId, false);
         
     | 
| 
       85 
84 
     | 
    
         | 
| 
       86 
85 
     | 
    
         
             
                    if (!hasAdminRole(msg.sender, roleId)) {
         
     | 
| 
       87 
86 
     | 
    
         
             
                        revert ErrorNotAdminOfRole(_roleInfo[roleId].adminRoleId);
         
     | 
| 
         @@ -96,8 +95,8 @@ contract AccessAdmin is 
     | 
|
| 
       96 
95 
     | 
    
         
             
                    _;
         
     | 
| 
       97 
96 
     | 
    
         
             
                }
         
     | 
| 
       98 
97 
     | 
    
         | 
| 
       99 
     | 
    
         
            -
                modifier onlyExistingRole(RoleId roleId) {
         
     | 
| 
       100 
     | 
    
         
            -
                     
     | 
| 
      
 98 
     | 
    
         
            +
                modifier onlyExistingRole(RoleId roleId, bool onlyActiveRole) {
         
     | 
| 
      
 99 
     | 
    
         
            +
                    _checkRoleExists(roleId, onlyActiveRole);
         
     | 
| 
       101 
100 
     | 
    
         
             
                    _;
         
     | 
| 
       102 
101 
     | 
    
         
             
                }
         
     | 
| 
       103 
102 
     | 
    
         | 
| 
         @@ -113,7 +112,6 @@ contract AccessAdmin is 
     | 
|
| 
       113 
112 
     | 
    
         | 
| 
       114 
113 
     | 
    
         
             
                    _setAuthority(address(_authority)); // set authority for oz access managed
         
     | 
| 
       115 
114 
     | 
    
         
             
                    _createAdminAndPublicRoles();
         
     | 
| 
       116 
     | 
    
         
            -
                    _disableInitializers();
         
     | 
| 
       117 
115 
     | 
    
         
             
                }
         
     | 
| 
       118 
116 
     | 
    
         | 
| 
       119 
117 
     | 
    
         
             
                //--- view functions for roles ------------------------------------------//
         
     | 
| 
         @@ -219,18 +217,6 @@ contract AccessAdmin is 
     | 
|
| 
       219 
217 
     | 
    
         
             
                            selector.toBytes4()));
         
     | 
| 
       220 
218 
     | 
    
         
             
                }
         
     | 
| 
       221 
219 
     | 
    
         | 
| 
       222 
     | 
    
         
            -
                function isAccessManaged(address target) public view returns (bool) {
         
     | 
| 
       223 
     | 
    
         
            -
                    if (!_isContract(target)) {
         
     | 
| 
       224 
     | 
    
         
            -
                        return false;
         
     | 
| 
       225 
     | 
    
         
            -
                    }
         
     | 
| 
       226 
     | 
    
         
            -
             
     | 
| 
       227 
     | 
    
         
            -
                    (bool success, ) = target.staticcall(
         
     | 
| 
       228 
     | 
    
         
            -
                        abi.encodeWithSelector(
         
     | 
| 
       229 
     | 
    
         
            -
                            AccessManagedUpgradeable.authority.selector));
         
     | 
| 
       230 
     | 
    
         
            -
             
     | 
| 
       231 
     | 
    
         
            -
                    return success;
         
     | 
| 
       232 
     | 
    
         
            -
                }
         
     | 
| 
       233 
     | 
    
         
            -
             
     | 
| 
       234 
220 
     | 
    
         
             
                function canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
         
     | 
| 
       235 
221 
     | 
    
         
             
                    (can, ) = _authority.canCall(caller, target, selector.toBytes4());
         
     | 
| 
       236 
222 
     | 
    
         
             
                }
         
     | 
| 
         @@ -241,7 +227,8 @@ contract AccessAdmin is 
     | 
|
| 
       241 
227 
     | 
    
         
             
                        adminRoleId: adminRoleId,
         
     | 
| 
       242 
228 
     | 
    
         
             
                        roleType: roleType,
         
     | 
| 
       243 
229 
     | 
    
         
             
                        maxMemberCount: maxMemberCount,
         
     | 
| 
       244 
     | 
    
         
            -
                        createdAt: TimestampLib.blockTimestamp()
         
     | 
| 
      
 230 
     | 
    
         
            +
                        createdAt: TimestampLib.blockTimestamp(),
         
     | 
| 
      
 231 
     | 
    
         
            +
                        pausedAt: TimestampLib.max()
         
     | 
| 
       245 
232 
     | 
    
         
             
                    });
         
     | 
| 
       246 
233 
     | 
    
         
             
                }
         
     | 
| 
       247 
234 
     | 
    
         | 
| 
         @@ -349,7 +336,6 @@ contract AccessAdmin is 
     | 
|
| 
       349 
336 
     | 
    
         
             
                    internal
         
     | 
| 
       350 
337 
     | 
    
         
             
                {
         
     | 
| 
       351 
338 
     | 
    
         
             
                    RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
         
     | 
| 
       352 
     | 
    
         
            -
                    FunctionInfo[] memory functions;
         
     | 
| 
       353 
339 
     | 
    
         | 
| 
       354 
340 
     | 
    
         
             
                    // setup admin role
         
     | 
| 
       355 
341 
     | 
    
         
             
                    _createRoleUnchecked(
         
     | 
| 
         @@ -373,14 +359,6 @@ contract AccessAdmin is 
     | 
|
| 
       373 
359 
     | 
    
         
             
                            name: PUBLIC_ROLE_NAME}));
         
     | 
| 
       374 
360 
     | 
    
         
             
                }
         
     | 
| 
       375 
361 
     | 
    
         | 
| 
       376 
     | 
    
         
            -
                /// @dev check if target exists and reverts if it doesn't
         
     | 
| 
       377 
     | 
    
         
            -
                function _checkTarget(address target)
         
     | 
| 
       378 
     | 
    
         
            -
                    internal
         
     | 
| 
       379 
     | 
    
         
            -
                {
         
     | 
| 
       380 
     | 
    
         
            -
                    if (_targetInfo[target].createdAt.eqz()) {
         
     | 
| 
       381 
     | 
    
         
            -
                        revert ErrorTargetUnknown(target);
         
     | 
| 
       382 
     | 
    
         
            -
                    }
         
     | 
| 
       383 
     | 
    
         
            -
                }
         
     | 
| 
       384 
362 
     | 
    
         | 
| 
       385 
363 
     | 
    
         
             
                /// @dev grant the specified role access to all functions in the provided selector list
         
     | 
| 
       386 
364 
     | 
    
         
             
                function _grantRoleAccessToFunctions(
         
     | 
| 
         @@ -398,22 +376,26 @@ contract AccessAdmin is 
     | 
|
| 
       398 
376 
     | 
    
         
             
                    // implizit logging: rely on OpenZeppelin log TargetFunctionRoleUpdated
         
     | 
| 
       399 
377 
     | 
    
         
             
                }
         
     | 
| 
       400 
378 
     | 
    
         | 
| 
      
 379 
     | 
    
         
            +
             
     | 
| 
       401 
380 
     | 
    
         
             
                /// @dev grant the specified role to the provided account
         
     | 
| 
       402 
381 
     | 
    
         
             
                function _grantRoleToAccount(RoleId roleId, address account)
         
     | 
| 
       403 
382 
     | 
    
         
             
                    internal
         
     | 
| 
      
 383 
     | 
    
         
            +
                    onlyExistingRole(roleId, true)
         
     | 
| 
       404 
384 
     | 
    
         
             
                {
         
     | 
| 
       405 
     | 
    
         
            -
                    _checkRoleId(roleId);
         
     | 
| 
       406 
     | 
    
         
            -
             
     | 
| 
       407 
385 
     | 
    
         
             
                    // check max role members will not be exceeded
         
     | 
| 
       408 
386 
     | 
    
         
             
                    if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
         
     | 
| 
       409 
387 
     | 
    
         
             
                        revert ErrorRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
         
     | 
| 
       410 
388 
     | 
    
         
             
                    }
         
     | 
| 
       411 
389 
     | 
    
         | 
| 
       412 
390 
     | 
    
         
             
                    // check account is contract for contract role
         
     | 
| 
       413 
     | 
    
         
            -
                     
     | 
| 
       414 
     | 
    
         
            -
             
     | 
| 
      
 391 
     | 
    
         
            +
                    if (
         
     | 
| 
      
 392 
     | 
    
         
            +
                        _roleInfo[roleId].roleType == RoleType.Contract &&
         
     | 
| 
      
 393 
     | 
    
         
            +
                        !ContractLib.isContract(account) // will fail in account's constructor
         
     | 
| 
      
 394 
     | 
    
         
            +
                    ) {
         
     | 
| 
      
 395 
     | 
    
         
            +
                        revert ErrorRoleMemberNotContract(roleId, account);
         
     | 
| 
       415 
396 
     | 
    
         
             
                    }
         
     | 
| 
       416 
397 
     | 
    
         | 
| 
      
 398 
     | 
    
         
            +
                    // TODO check account already have roleId
         
     | 
| 
       417 
399 
     | 
    
         
             
                    _roleMembers[roleId].add(account);
         
     | 
| 
       418 
400 
     | 
    
         
             
                    _authority.grantRole(
         
     | 
| 
       419 
401 
     | 
    
         
             
                        RoleId.unwrap(roleId), 
         
     | 
| 
         @@ -426,14 +408,15 @@ contract AccessAdmin is 
     | 
|
| 
       426 
408 
     | 
    
         
             
                /// @dev revoke the specified role from the provided account
         
     | 
| 
       427 
409 
     | 
    
         
             
                function _revokeRoleFromAccount(RoleId roleId, address account)
         
     | 
| 
       428 
410 
     | 
    
         
             
                    internal
         
     | 
| 
      
 411 
     | 
    
         
            +
                    onlyExistingRole(roleId, false)
         
     | 
| 
       429 
412 
     | 
    
         
             
                {
         
     | 
| 
       430 
     | 
    
         
            -
                    _checkRoleId(roleId);
         
     | 
| 
       431 
413 
     | 
    
         | 
| 
       432 
414 
     | 
    
         
             
                    // check role removal is permitted
         
     | 
| 
       433 
415 
     | 
    
         
             
                    if (_roleInfo[roleId].roleType == RoleType.Contract) {
         
     | 
| 
       434 
     | 
    
         
            -
                        revert  
     | 
| 
      
 416 
     | 
    
         
            +
                        revert ErrorRoleMemberRemovalDisabled(roleId, account);
         
     | 
| 
       435 
417 
     | 
    
         
             
                    }
         
     | 
| 
       436 
418 
     | 
    
         | 
| 
      
 419 
     | 
    
         
            +
                    // TODO check account have roleId?
         
     | 
| 
       437 
420 
     | 
    
         
             
                    _roleMembers[roleId].remove(account);
         
     | 
| 
       438 
421 
     | 
    
         
             
                    _authority.revokeRole(
         
     | 
| 
       439 
422 
     | 
    
         
             
                        RoleId.unwrap(roleId), 
         
     | 
| 
         @@ -443,21 +426,6 @@ contract AccessAdmin is 
     | 
|
| 
       443 
426 
     | 
    
         
             
                }
         
     | 
| 
       444 
427 
     | 
    
         | 
| 
       445 
428 
     | 
    
         | 
| 
       446 
     | 
    
         
            -
                function _checkRoleId(RoleId roleId)
         
     | 
| 
       447 
     | 
    
         
            -
                    internal
         
     | 
| 
       448 
     | 
    
         
            -
                {
         
     | 
| 
       449 
     | 
    
         
            -
                    if (_roleInfo[roleId].createdAt.eqz()) {
         
     | 
| 
       450 
     | 
    
         
            -
                        revert ErrorRoleUnknown(roleId);
         
     | 
| 
       451 
     | 
    
         
            -
                    }
         
     | 
| 
       452 
     | 
    
         
            -
             
     | 
| 
       453 
     | 
    
         
            -
                    uint64 roleIdInt = RoleId.unwrap(roleId);
         
     | 
| 
       454 
     | 
    
         
            -
                    if (roleIdInt == _authority.ADMIN_ROLE()
         
     | 
| 
       455 
     | 
    
         
            -
                        || roleIdInt == _authority.PUBLIC_ROLE())
         
     | 
| 
       456 
     | 
    
         
            -
                    {
         
     | 
| 
       457 
     | 
    
         
            -
                        revert ErrorRoleIsLocked(roleId);
         
     | 
| 
       458 
     | 
    
         
            -
                    }
         
     | 
| 
       459 
     | 
    
         
            -
                }
         
     | 
| 
       460 
     | 
    
         
            -
             
     | 
| 
       461 
429 
     | 
    
         
             
                /// @dev Creates a role based on the provided parameters.
         
     | 
| 
       462 
430 
     | 
    
         
             
                /// Checks that the provided role and role id and role name not already used.
         
     | 
| 
       463 
431 
     | 
    
         
             
                function _createRole(
         
     | 
| 
         @@ -548,7 +516,7 @@ contract AccessAdmin is 
     | 
|
| 
       548 
516 
     | 
    
         
             
                    }
         
     | 
| 
       549 
517 
     | 
    
         | 
| 
       550 
518 
     | 
    
         
             
                    // check target is an access managed contract
         
     | 
| 
       551 
     | 
    
         
            -
                    if (!isAccessManaged(target)) {
         
     | 
| 
      
 519 
     | 
    
         
            +
                    if (!ContractLib.isAccessManaged(target)) {
         
     | 
| 
       552 
520 
     | 
    
         
             
                        revert ErrorTargetNotAccessManaged(target);
         
     | 
| 
       553 
521 
     | 
    
         
             
                    }
         
     | 
| 
       554 
522 
     | 
    
         | 
| 
         @@ -576,16 +544,53 @@ contract AccessAdmin is 
     | 
|
| 
       576 
544 
     | 
    
         
             
                    emit LogTargetCreated(target, targetName);
         
     | 
| 
       577 
545 
     | 
    
         
             
                }
         
     | 
| 
       578 
546 
     | 
    
         | 
| 
       579 
     | 
    
         
            -
             
     | 
| 
      
 547 
     | 
    
         
            +
             
     | 
| 
      
 548 
     | 
    
         
            +
                function _setTargetClosed(address target, bool locked)
         
     | 
| 
      
 549 
     | 
    
         
            +
                    internal
         
     | 
| 
      
 550 
     | 
    
         
            +
                {
         
     | 
| 
      
 551 
     | 
    
         
            +
                    _checkTarget(target);
         
     | 
| 
      
 552 
     | 
    
         
            +
             
     | 
| 
      
 553 
     | 
    
         
            +
                    // target locked/unlocked already
         
     | 
| 
      
 554 
     | 
    
         
            +
                    if(_authority.isTargetClosed(target) == locked) {
         
     | 
| 
      
 555 
     | 
    
         
            +
                        revert ErrorTargetAlreadyLocked(target, locked);
         
     | 
| 
      
 556 
     | 
    
         
            +
                    }
         
     | 
| 
      
 557 
     | 
    
         
            +
             
     | 
| 
      
 558 
     | 
    
         
            +
                    _authority.setTargetClosed(target, locked);
         
     | 
| 
      
 559 
     | 
    
         
            +
                }
         
     | 
| 
      
 560 
     | 
    
         
            +
             
     | 
| 
      
 561 
     | 
    
         
            +
             
     | 
| 
      
 562 
     | 
    
         
            +
                function _checkRoleExists(
         
     | 
| 
      
 563 
     | 
    
         
            +
                    RoleId roleId, 
         
     | 
| 
      
 564 
     | 
    
         
            +
                    bool onlyActiveRole
         
     | 
| 
      
 565 
     | 
    
         
            +
                )
         
     | 
| 
       580 
566 
     | 
    
         
             
                    internal
         
     | 
| 
       581 
     | 
    
         
            -
                    view 
     | 
| 
       582 
     | 
    
         
            -
                    returns (bool)
         
     | 
| 
      
 567 
     | 
    
         
            +
                    view
         
     | 
| 
       583 
568 
     | 
    
         
             
                {
         
     | 
| 
       584 
     | 
    
         
            -
                     
     | 
| 
       585 
     | 
    
         
            -
             
     | 
| 
       586 
     | 
    
         
            -
             
     | 
| 
      
 569 
     | 
    
         
            +
                    if (!roleExists(roleId)) {
         
     | 
| 
      
 570 
     | 
    
         
            +
                        revert ErrorRoleUnknown(roleId);
         
     | 
| 
      
 571 
     | 
    
         
            +
                    }
         
     | 
| 
      
 572 
     | 
    
         
            +
             
     | 
| 
      
 573 
     | 
    
         
            +
                    uint64 roleIdInt = RoleId.unwrap(roleId);
         
     | 
| 
      
 574 
     | 
    
         
            +
                    if (roleIdInt == _authority.ADMIN_ROLE()
         
     | 
| 
      
 575 
     | 
    
         
            +
                        || roleIdInt == _authority.PUBLIC_ROLE())
         
     | 
| 
      
 576 
     | 
    
         
            +
                    {
         
     | 
| 
      
 577 
     | 
    
         
            +
                        revert ErrorRoleIsLocked(roleId);
         
     | 
| 
      
 578 
     | 
    
         
            +
                    }
         
     | 
| 
      
 579 
     | 
    
         
            +
             
     | 
| 
      
 580 
     | 
    
         
            +
                    // check if role is disabled
         
     | 
| 
      
 581 
     | 
    
         
            +
                    if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.blockTimestamp()) {
         
     | 
| 
      
 582 
     | 
    
         
            +
                        revert ErrorRoleIsPaused(roleId);
         
     | 
| 
      
 583 
     | 
    
         
            +
                    }
         
     | 
| 
      
 584 
     | 
    
         
            +
                }
         
     | 
| 
      
 585 
     | 
    
         
            +
             
     | 
| 
      
 586 
     | 
    
         
            +
             
     | 
| 
      
 587 
     | 
    
         
            +
                /// @dev check if target exists and reverts if it doesn't
         
     | 
| 
      
 588 
     | 
    
         
            +
                function _checkTarget(address target)
         
     | 
| 
      
 589 
     | 
    
         
            +
                    internal
         
     | 
| 
      
 590 
     | 
    
         
            +
                    view
         
     | 
| 
      
 591 
     | 
    
         
            +
                {
         
     | 
| 
      
 592 
     | 
    
         
            +
                    if (!targetExists(target)) {
         
     | 
| 
      
 593 
     | 
    
         
            +
                        revert ErrorTargetUnknown(target);
         
     | 
| 
       587 
594 
     | 
    
         
             
                    }
         
     | 
| 
       588 
     | 
    
         
            -
                    return size > 0;
         
     | 
| 
       589 
595 
     | 
    
         
             
                }
         
     | 
| 
       590 
     | 
    
         
            -
                
         
     | 
| 
       591 
596 
     | 
    
         
             
            }
         
     | 
| 
         @@ -11,60 +11,74 @@ import {TimestampLib} from "../type/Timestamp.sol"; 
     | 
|
| 
       11 
11 
     | 
    
         
             
            import {VersionPart, VersionPartLib} from "../type/Version.sol";
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            contract Authorization
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
                is IAuthorization
         
     | 
| 
       15 
15 
     | 
    
         
             
            {
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                 string public constant ROLE_NAME_SUFFIX = "Role";
         
     | 
| 
       18 
     | 
    
         
            -
                 string public constant SERVICE_ROLE_NAME_SUFFIX = "ServiceRole";
         
     | 
| 
      
 16 
     | 
    
         
            +
                uint256 public constant GIF_RELEASE = 3;
         
     | 
| 
       19 
17 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
      
 18 
     | 
    
         
            +
                string public constant ROLE_NAME_SUFFIX = "Role";
         
     | 
| 
      
 19 
     | 
    
         
            +
                string public constant SERVICE_ROLE_NAME_SUFFIX = "ServiceRole";
         
     | 
| 
       22 
20 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
                ObjectType[] internal _serviceDomains;
         
     | 
| 
      
 22 
     | 
    
         
            +
                mapping(ObjectType domain => Str target) internal _serviceTarget;
         
     | 
| 
       25 
23 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
                string internal _mainTargetName = "Component";
         
     | 
| 
      
 25 
     | 
    
         
            +
                Str[] internal _targets;
         
     | 
| 
       28 
26 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
      
 27 
     | 
    
         
            +
                mapping(Str target => RoleId roleid) internal _targetRole;
         
     | 
| 
      
 28 
     | 
    
         
            +
                mapping(Str target => bool exists) internal _targetExists;
         
     | 
| 
       31 
29 
     | 
    
         | 
| 
      
 30 
     | 
    
         
            +
                RoleId[] internal _roles;
         
     | 
| 
      
 31 
     | 
    
         
            +
                mapping(RoleId role => RoleInfo info) internal _roleInfo;
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
      
 33 
     | 
    
         
            +
                mapping(Str target => RoleId[] authorizedRoles) internal _authorizedRoles;
         
     | 
| 
      
 34 
     | 
    
         
            +
                mapping(Str target => mapping(RoleId authorizedRole => IAccess.FunctionInfo[] functions)) internal _authorizedFunctions;
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                constructor(string memory mainTargetName) {
         
     | 
| 
      
 38 
     | 
    
         
            +
                    _mainTargetName = mainTargetName;
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                    _setupServiceTargets();
         
     | 
| 
      
 41 
     | 
    
         
            +
                    _setupRoles();
         
     | 
| 
      
 42 
     | 
    
         
            +
                    _setupTargets();
         
     | 
| 
      
 43 
     | 
    
         
            +
                    _setupTargetAuthorizations();
         
     | 
| 
      
 44 
     | 
    
         
            +
                }
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                 function getServiceDomains() external view returns(ObjectType[] memory serviceDomains) {
         
     | 
| 
      
 47 
     | 
    
         
            +
                      return _serviceDomains;
         
     | 
| 
      
 48 
     | 
    
         
            +
                 }
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                 function getServiceRole(ObjectType serviceDomain) public virtual pure returns (RoleId serviceRoleId) {
         
     | 
| 
      
 51 
     | 
    
         
            +
                      return RoleIdLib.roleForTypeAndVersion(
         
     | 
| 
      
 52 
     | 
    
         
            +
                           serviceDomain, 
         
     | 
| 
      
 53 
     | 
    
         
            +
                           getRelease());
         
     | 
| 
       39 
54 
     | 
    
         
             
                 }
         
     | 
| 
       40 
55 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
                 function  
     | 
| 
       42 
     | 
    
         
            -
                      return  
     | 
| 
      
 56 
     | 
    
         
            +
                 function getServiceTarget(ObjectType serviceDomain) external view returns(Str serviceTarget) {
         
     | 
| 
      
 57 
     | 
    
         
            +
                      return _serviceTarget[serviceDomain];
         
     | 
| 
       43 
58 
     | 
    
         
             
                 }
         
     | 
| 
       44 
59 
     | 
    
         | 
| 
       45 
60 
     | 
    
         
             
                 function getRoles() external view returns(RoleId[] memory roles) {
         
     | 
| 
       46 
61 
     | 
    
         
             
                      return _roles;
         
     | 
| 
       47 
62 
     | 
    
         
             
                 }
         
     | 
| 
       48 
63 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
                 function  
     | 
| 
       50 
     | 
    
         
            -
                      return  
     | 
| 
       51 
     | 
    
         
            -
                           serviceDomain, getRelease());
         
     | 
| 
      
 64 
     | 
    
         
            +
                 function roleExists(RoleId roleId) public view returns(bool exists) {
         
     | 
| 
      
 65 
     | 
    
         
            +
                      return _roleInfo[roleId].roleType != RoleType.Undefined;
         
     | 
| 
       52 
66 
     | 
    
         
             
                 }
         
     | 
| 
       53 
67 
     | 
    
         | 
| 
       54 
68 
     | 
    
         
             
                 function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory info) {
         
     | 
| 
       55 
69 
     | 
    
         
             
                      return _roleInfo[roleId];
         
     | 
| 
       56 
70 
     | 
    
         
             
                 }
         
     | 
| 
       57 
71 
     | 
    
         | 
| 
       58 
     | 
    
         
            -
                 function  
     | 
| 
       59 
     | 
    
         
            -
                      return  
     | 
| 
      
 72 
     | 
    
         
            +
                 function getTargetName() public virtual view returns (string memory name) {
         
     | 
| 
      
 73 
     | 
    
         
            +
                      return _mainTargetName;
         
     | 
| 
       60 
74 
     | 
    
         
             
                 }
         
     | 
| 
       61 
75 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
                 function  
     | 
| 
       63 
     | 
    
         
            -
                       
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
                      }
         
     | 
| 
      
 76 
     | 
    
         
            +
                 function getMainTarget() public view returns(Str) {
         
     | 
| 
      
 77 
     | 
    
         
            +
                      return getTarget(_mainTargetName);
         
     | 
| 
      
 78 
     | 
    
         
            +
                 }
         
     | 
| 
       66 
79 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
      
 80 
     | 
    
         
            +
                 function getTarget(string memory targetName) public view returns(Str target) {
         
     | 
| 
      
 81 
     | 
    
         
            +
                      return StrLib.toStr(targetName);
         
     | 
| 
       68 
82 
     | 
    
         
             
                 }
         
     | 
| 
       69 
83 
     | 
    
         | 
| 
       70 
84 
     | 
    
         
             
                 function getTargets() external view returns(Str[] memory targets) {
         
     | 
| 
         @@ -87,26 +101,60 @@ contract Authorization 
     | 
|
| 
       87 
101 
     | 
    
         
             
                      return _authorizedFunctions[target][roleId];
         
     | 
| 
       88 
102 
     | 
    
         
             
                 }
         
     | 
| 
       89 
103 
     | 
    
         | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
      
 104 
     | 
    
         
            +
                function getRelease() public virtual pure returns(VersionPart release) {
         
     | 
| 
      
 105 
     | 
    
         
            +
                    return VersionPartLib.toVersionPart(GIF_RELEASE);
         
     | 
| 
      
 106 
     | 
    
         
            +
                }
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
                 /// @dev Sets up the relevant service targets for the component.
         
     | 
| 
      
 109 
     | 
    
         
            +
                 /// Overwrite this function for a specific component.
         
     | 
| 
      
 110 
     | 
    
         
            +
                 function _setupServiceTargets() internal virtual { }
         
     | 
| 
       93 
111 
     | 
    
         | 
| 
       94 
     | 
    
         
            -
                 /// @dev  
     | 
| 
       95 
     | 
    
         
            -
                 ///  
     | 
| 
      
 112 
     | 
    
         
            +
                 /// @dev Sets up the relevant (non-service) targets for the component.
         
     | 
| 
      
 113 
     | 
    
         
            +
                 /// Overwrite this function for a specific component.
         
     | 
| 
       96 
114 
     | 
    
         
             
                 function _setupTargets() internal virtual { }
         
     | 
| 
       97 
115 
     | 
    
         | 
| 
       98 
     | 
    
         
            -
                 /// @dev  
     | 
| 
      
 116 
     | 
    
         
            +
                 /// @dev Sets up the relevant roles for the component.
         
     | 
| 
      
 117 
     | 
    
         
            +
                 /// Overwrite this function for a specific component.
         
     | 
| 
       99 
118 
     | 
    
         
             
                 function _setupRoles() internal virtual {}
         
     | 
| 
       100 
119 
     | 
    
         | 
| 
       101 
     | 
    
         
            -
                 /// @dev  
     | 
| 
      
 120 
     | 
    
         
            +
                 /// @dev Sets up the relevant target authorizations for the component.
         
     | 
| 
      
 121 
     | 
    
         
            +
                 /// Overwrite this function for a specific realease.
         
     | 
| 
       102 
122 
     | 
    
         
             
                 function _setupTargetAuthorizations() internal virtual {}
         
     | 
| 
       103 
123 
     | 
    
         | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                 /// @dev Add the service target role for the specified service domain
         
     | 
| 
      
 126 
     | 
    
         
            +
                 function _addServiceTargetWithRole(ObjectType serviceDomain) internal {
         
     | 
| 
      
 127 
     | 
    
         
            +
                      // add service domain
         
     | 
| 
      
 128 
     | 
    
         
            +
                      _serviceDomains.push(serviceDomain);
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
                      // get versioned target name
         
     | 
| 
      
 131 
     | 
    
         
            +
                      string memory serviceTargetName = ObjectTypeLib.toVersionedName(
         
     | 
| 
      
 132 
     | 
    
         
            +
                                ObjectTypeLib.toName(serviceDomain), 
         
     | 
| 
      
 133 
     | 
    
         
            +
                                "Service", 
         
     | 
| 
      
 134 
     | 
    
         
            +
                                getRelease().toInt());
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
                      _serviceTarget[serviceDomain] = StrLib.toStr(serviceTargetName);
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                      RoleId serviceRoleId = getServiceRole(serviceDomain);
         
     | 
| 
      
 139 
     | 
    
         
            +
                      string memory serviceRoleName = ObjectTypeLib.toVersionedName(
         
     | 
| 
      
 140 
     | 
    
         
            +
                                ObjectTypeLib.toName(serviceDomain), 
         
     | 
| 
      
 141 
     | 
    
         
            +
                                "ServiceRole", 
         
     | 
| 
      
 142 
     | 
    
         
            +
                                getRelease().toInt());
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
                      _addTargetWithRole(
         
     | 
| 
      
 145 
     | 
    
         
            +
                           serviceTargetName,
         
     | 
| 
      
 146 
     | 
    
         
            +
                           serviceRoleId,
         
     | 
| 
      
 147 
     | 
    
         
            +
                           serviceRoleName);
         
     | 
| 
      
 148 
     | 
    
         
            +
                 }
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
       104 
151 
     | 
    
         
             
                 /// @dev Use this method to to add an authorized role.
         
     | 
| 
       105 
152 
     | 
    
         
             
                 function _addRole(RoleId roleId, RoleInfo memory info) internal {
         
     | 
| 
       106 
153 
     | 
    
         
             
                      _roles.push(roleId);
         
     | 
| 
       107 
154 
     | 
    
         
             
                      _roleInfo[roleId] = info;
         
     | 
| 
       108 
155 
     | 
    
         
             
                 }
         
     | 
| 
       109 
156 
     | 
    
         | 
| 
      
 157 
     | 
    
         
            +
             
     | 
| 
       110 
158 
     | 
    
         
             
                 /// @dev Add a contract role for the provided role id and name.
         
     | 
| 
       111 
159 
     | 
    
         
             
                 function _addContractRole(RoleId roleId, string memory name) internal {
         
     | 
| 
       112 
160 
     | 
    
         
             
                      _addRole(
         
     | 
| 
         @@ -118,6 +166,7 @@ contract Authorization 
     | 
|
| 
       118 
166 
     | 
    
         
             
                                name));
         
     | 
| 
       119 
167 
     | 
    
         
             
                 }
         
     | 
| 
       120 
168 
     | 
    
         | 
| 
      
 169 
     | 
    
         
            +
             
     | 
| 
       121 
170 
     | 
    
         
             
                 /// @dev Add the versioned service role for the specified service domain
         
     | 
| 
       122 
171 
     | 
    
         
             
                 function _addServiceRole(ObjectType serviceDomain) internal {
         
     | 
| 
       123 
172 
     | 
    
         
             
                      _addContractRole(
         
     | 
| 
         @@ -128,14 +177,21 @@ contract Authorization 
     | 
|
| 
       128 
177 
     | 
    
         
             
                                getRelease().toInt()));
         
     | 
| 
       129 
178 
     | 
    
         
             
                 }
         
     | 
| 
       130 
179 
     | 
    
         | 
| 
      
 180 
     | 
    
         
            +
             
     | 
| 
       131 
181 
     | 
    
         
             
                 function _addComponentTargetWithRole(ObjectType componentType) internal {
         
     | 
| 
      
 182 
     | 
    
         
            +
                      _addComponentTargetWithRole(componentType, 0);
         
     | 
| 
      
 183 
     | 
    
         
            +
                 }
         
     | 
| 
      
 184 
     | 
    
         
            +
             
     | 
| 
      
 185 
     | 
    
         
            +
             
     | 
| 
      
 186 
     | 
    
         
            +
                 function _addComponentTargetWithRole(ObjectType componentType, uint64 index) internal {
         
     | 
| 
       132 
187 
     | 
    
         
             
                      _addTargetWithRole(
         
     | 
| 
       133 
188 
     | 
    
         
             
                           getTargetName(), 
         
     | 
| 
       134 
     | 
    
         
            -
                           RoleIdLib.toComponentRoleId(componentType,  
     | 
| 
      
 189 
     | 
    
         
            +
                           RoleIdLib.toComponentRoleId(componentType, index),
         
     | 
| 
       135 
190 
     | 
    
         
             
                           _toTargetRoleName(
         
     | 
| 
       136 
191 
     | 
    
         
             
                                getTargetName()));
         
     | 
| 
       137 
192 
     | 
    
         
             
                 }
         
     | 
| 
       138 
193 
     | 
    
         | 
| 
      
 194 
     | 
    
         
            +
             
     | 
| 
       139 
195 
     | 
    
         
             
                 /// @dev Add a contract role for the provided role id and name.
         
     | 
| 
       140 
196 
     | 
    
         
             
                 function _addCustomRole(RoleId roleId, RoleId adminRoleId, uint32 maxMemberCount, string memory name) internal {
         
     | 
| 
       141 
197 
     | 
    
         
             
                      _addRole(
         
     | 
| 
         @@ -173,11 +229,13 @@ contract Authorization 
     | 
|
| 
       173 
229 
     | 
    
         
             
                      }
         
     | 
| 
       174 
230 
     | 
    
         
             
                 }
         
     | 
| 
       175 
231 
     | 
    
         | 
| 
      
 232 
     | 
    
         
            +
             
     | 
| 
       176 
233 
     | 
    
         
             
                 /// @dev Use this method to to add an authorized target.
         
     | 
| 
       177 
234 
     | 
    
         
             
                 function _addTarget(string memory name) internal {
         
     | 
| 
       178 
235 
     | 
    
         
             
                      _addTargetWithRole(name, RoleIdLib.zero(), "");
         
     | 
| 
       179 
236 
     | 
    
         
             
                 }
         
     | 
| 
       180 
237 
     | 
    
         | 
| 
      
 238 
     | 
    
         
            +
             
     | 
| 
       181 
239 
     | 
    
         
             
                 /// @dev Use this method to authorize the specified role to access the target.
         
     | 
| 
       182 
240 
     | 
    
         
             
                 function _authorizeForTarget(string memory target, RoleId authorizedRoleId)
         
     | 
| 
       183 
241 
     | 
    
         
             
                      internal
         
     | 
| 
         @@ -188,6 +246,7 @@ contract Authorization 
     | 
|
| 
       188 
246 
     | 
    
         
             
                      return _authorizedFunctions[targetStr][authorizedRoleId];
         
     | 
| 
       189 
247 
     | 
    
         
             
                 }
         
     | 
| 
       190 
248 
     | 
    
         | 
| 
      
 249 
     | 
    
         
            +
             
     | 
| 
       191 
250 
     | 
    
         
             
                 /// @dev Use this method to authorize a specific function authorization
         
     | 
| 
       192 
251 
     | 
    
         
             
                 function _authorize(IAccess.FunctionInfo[] storage functions, bytes4 selector, string memory name) internal {
         
     | 
| 
       193 
252 
     | 
    
         
             
                      functions.push(
         
     | 
| 
         @@ -197,13 +256,25 @@ contract Authorization 
     | 
|
| 
       197 
256 
     | 
    
         
             
                                createdAt: TimestampLib.blockTimestamp()}));
         
     | 
| 
       198 
257 
     | 
    
         
             
                 }
         
     | 
| 
       199 
258 
     | 
    
         | 
| 
       200 
     | 
    
         
            -
             
     | 
| 
      
 259 
     | 
    
         
            +
             
     | 
| 
      
 260 
     | 
    
         
            +
                 /// @dev role id for targets registry, staking and instance
         
     | 
| 
      
 261 
     | 
    
         
            +
                 function _toTargetRoleId(ObjectType targetDomain) 
         
     | 
| 
      
 262 
     | 
    
         
            +
                      internal
         
     | 
| 
      
 263 
     | 
    
         
            +
                      pure
         
     | 
| 
      
 264 
     | 
    
         
            +
                      returns (RoleId targetRoleId)
         
     | 
| 
      
 265 
     | 
    
         
            +
                 {
         
     | 
| 
      
 266 
     | 
    
         
            +
                      return RoleIdLib.roleForType(targetDomain);
         
     | 
| 
      
 267 
     | 
    
         
            +
                 }
         
     | 
| 
      
 268 
     | 
    
         
            +
             
     | 
| 
      
 269 
     | 
    
         
            +
             
     | 
| 
      
 270 
     | 
    
         
            +
                 function _toTargetRoleName(string memory targetName) internal pure returns (string memory) {
         
     | 
| 
       201 
271 
     | 
    
         
             
                      return string(
         
     | 
| 
       202 
272 
     | 
    
         
             
                           abi.encodePacked(
         
     | 
| 
       203 
273 
     | 
    
         
             
                                targetName,
         
     | 
| 
       204 
274 
     | 
    
         
             
                                ROLE_NAME_SUFFIX));
         
     | 
| 
       205 
275 
     | 
    
         
             
                 }
         
     | 
| 
       206 
276 
     | 
    
         | 
| 
      
 277 
     | 
    
         
            +
             
     | 
| 
       207 
278 
     | 
    
         
             
                 /// @dev creates a role info object from the provided parameters
         
     | 
| 
       208 
279 
     | 
    
         
             
                 function _toRoleInfo(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) internal view returns (RoleInfo memory info) {
         
     | 
| 
       209 
280 
     | 
    
         
             
                      return RoleInfo({
         
     | 
| 
         @@ -211,7 +282,8 @@ contract Authorization 
     | 
|
| 
       211 
282 
     | 
    
         
             
                           adminRoleId: adminRoleId,
         
     | 
| 
       212 
283 
     | 
    
         
             
                           roleType: roleType,
         
     | 
| 
       213 
284 
     | 
    
         
             
                           maxMemberCount: maxMemberCount,
         
     | 
| 
       214 
     | 
    
         
            -
                           createdAt: TimestampLib.blockTimestamp() 
     | 
| 
      
 285 
     | 
    
         
            +
                           createdAt: TimestampLib.blockTimestamp(),
         
     | 
| 
      
 286 
     | 
    
         
            +
                           pausedAt: TimestampLib.max()});
         
     | 
| 
       215 
287 
     | 
    
         
             
                 }
         
     | 
| 
       216 
288 
     | 
    
         
             
            }
         
     | 
| 
       217 
289 
     | 
    
         | 
| 
         @@ -41,9 +41,10 @@ interface IAccessAdmin is 
     | 
|
| 
       41 
41 
     | 
    
         
             
                // grant/revoke/renounce role
         
     | 
| 
       42 
42 
     | 
    
         
             
                error ErrorRoleUnknown(RoleId roleId);
         
     | 
| 
       43 
43 
     | 
    
         
             
                error ErrorRoleIsLocked(RoleId roleId);
         
     | 
| 
       44 
     | 
    
         
            -
                error  
     | 
| 
      
 44 
     | 
    
         
            +
                error ErrorRoleIsPaused(RoleId roleId);
         
     | 
| 
       45 
45 
     | 
    
         
             
                error ErrorRoleMembersLimitReached(RoleId roleId, uint256 memberCountLimit);
         
     | 
| 
       46 
     | 
    
         
            -
                error  
     | 
| 
      
 46 
     | 
    
         
            +
                error ErrorRoleMemberNotContract(RoleId roleId, address notContract);
         
     | 
| 
      
 47 
     | 
    
         
            +
                error ErrorRoleMemberRemovalDisabled(RoleId roleId, address expectedMember);
         
     | 
| 
       47 
48 
     | 
    
         | 
| 
       48 
49 
     | 
    
         
             
                // create target
         
     | 
| 
       49 
50 
     | 
    
         
             
                error ErrorTargetAlreadyCreated(address target, string name);
         
     | 
| 
         @@ -54,6 +55,7 @@ interface IAccessAdmin is 
     | 
|
| 
       54 
55 
     | 
    
         | 
| 
       55 
56 
     | 
    
         
             
                // lock target
         
     | 
| 
       56 
57 
     | 
    
         
             
                error ErrorTagetNotLockable();
         
     | 
| 
      
 58 
     | 
    
         
            +
                error ErrorTargetAlreadyLocked(address target, bool isLocked);
         
     | 
| 
       57 
59 
     | 
    
         | 
| 
       58 
60 
     | 
    
         
             
                // authorize target functions
         
     | 
| 
       59 
61 
     | 
    
         
             
                error ErrorAuthorizeForAdminRoleInvalid(address target);
         
     | 
| 
         @@ -131,6 +133,5 @@ interface IAccessAdmin is 
     | 
|
| 
       131 
133 
     | 
    
         | 
| 
       132 
134 
     | 
    
         
             
                function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) external view returns (RoleInfo memory);
         
     | 
| 
       133 
135 
     | 
    
         
             
                function toFunction(bytes4 selector, string memory name) external view returns (FunctionInfo memory);
         
     | 
| 
       134 
     | 
    
         
            -
                function isAccessManaged(address target) external view returns (bool);
         
     | 
| 
       135 
136 
     | 
    
         
             
                function deployer() external view returns (address);
         
     | 
| 
       136 
137 
     | 
    
         
             
            }
         
     | 
| 
         @@ -11,16 +11,18 @@ interface IAuthorization is 
     | 
|
| 
       11 
11 
     | 
    
         
             
                 IAccess 
         
     | 
| 
       12 
12 
     | 
    
         
             
            {
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                 /// @dev Returns the  
     | 
| 
       15 
     | 
    
         
            -
                  
     | 
| 
       16 
     | 
    
         
            -
                 function getRelease() external view returns(VersionPart release);
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                 /// @dev Returns the list of involved roles.
         
     | 
| 
       19 
     | 
    
         
            -
                 function getRoles() external view returns(RoleId[] memory roles);
         
     | 
| 
      
 14 
     | 
    
         
            +
                 /// @dev Returns the list of service targets.
         
     | 
| 
      
 15 
     | 
    
         
            +
                 function getServiceDomains() external view returns(ObjectType[] memory serviceDomains);
         
     | 
| 
       20 
16 
     | 
    
         | 
| 
       21 
17 
     | 
    
         
             
                 /// @dev Returns the service role for the specified service domain.
         
     | 
| 
       22 
18 
     | 
    
         
             
                 function getServiceRole(ObjectType serviceDomain) external pure returns (RoleId serviceRoleId);
         
     | 
| 
       23 
19 
     | 
    
         | 
| 
      
 20 
     | 
    
         
            +
                 /// @dev Returns the service target for the specified domain.
         
     | 
| 
      
 21 
     | 
    
         
            +
                 function getServiceTarget(ObjectType serviceDomain) external view returns(Str serviceTarget);
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                 /// @dev Returns the list of involved roles.
         
     | 
| 
      
 24 
     | 
    
         
            +
                 function getRoles() external view returns(RoleId[] memory roles);
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
       24 
26 
     | 
    
         
             
                 /// @dev Returns the name for the provided role id.
         
     | 
| 
       25 
27 
     | 
    
         
             
                 function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory roleInfo);
         
     | 
| 
       26 
28 
     | 
    
         | 
| 
         @@ -33,7 +35,7 @@ interface IAuthorization is 
     | 
|
| 
       33 
35 
     | 
    
         
             
                 function getTargetName() external view returns (string memory name);
         
     | 
| 
       34 
36 
     | 
    
         | 
| 
       35 
37 
     | 
    
         
             
                 /// @dev Returns the main target.
         
     | 
| 
       36 
     | 
    
         
            -
                 function  
     | 
| 
      
 38 
     | 
    
         
            +
                 function getMainTarget() external view returns(Str target);
         
     | 
| 
       37 
39 
     | 
    
         | 
| 
       38 
40 
     | 
    
         
             
                 /// @dev Returns the complete list of targets.
         
     | 
| 
       39 
41 
     | 
    
         
             
                 function getTargets() external view returns(Str[] memory targets);
         
     | 
| 
         @@ -50,5 +52,9 @@ interface IAuthorization is 
     | 
|
| 
       50 
52 
     | 
    
         | 
| 
       51 
53 
     | 
    
         
             
                 /// @dev For the given target and role id the list of authorized functions is returned
         
     | 
| 
       52 
54 
     | 
    
         
             
                 function getAuthorizedFunctions(Str target, RoleId roleId) external view returns(FunctionInfo[] memory authorizatedFunctions);
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                 /// @dev Returns the release (VersionPart) for which the authorizations are defined by this contract.
         
     | 
| 
      
 57 
     | 
    
         
            +
                 /// Matches with the release returned by the linked service authorization.
         
     | 
| 
      
 58 
     | 
    
         
            +
                 function getRelease() external view returns(VersionPart release);
         
     | 
| 
       53 
59 
     | 
    
         
             
            }
         
     | 
| 
       54 
60 
     | 
    
         | 
| 
         @@ -1,11 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // SPDX-License-Identifier: Apache-2.0
         
     | 
| 
       2 
2 
     | 
    
         
             
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
      
 4 
     | 
    
         
            +
            import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
       4 
6 
     | 
    
         
             
            import {IAccess} from "../authorization/IAccess.sol";
         
     | 
| 
       5 
7 
     | 
    
         
             
            import {ObjectType} from "../type/ObjectType.sol";
         
     | 
| 
       6 
8 
     | 
    
         
             
            import {VersionPart} from "../type/Version.sol";
         
     | 
| 
       7 
9 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
            interface IServiceAuthorization {
         
     | 
| 
      
 10 
     | 
    
         
            +
            interface IServiceAuthorization is IERC165 {
         
     | 
| 
       9 
11 
     | 
    
         | 
| 
       10 
12 
     | 
    
         
             
                 /// @dev Returns the commit hash representing the deployed release
         
     | 
| 
       11 
13 
     | 
    
         
             
                 function getCommitHash()
         
     | 
| 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            // SPDX-License-Identifier: UNLICENSED
         
     | 
| 
      
 2 
     | 
    
         
            +
            pragma solidity ^0.8.20;
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            abstract contract ReleaseAccessManager is
         
     | 
| 
      
 7 
     | 
    
         
            +
                AccessManager
         
     | 
| 
      
 8 
     | 
    
         
            +
            {
         
     | 
| 
      
 9 
     | 
    
         
            +
                bool private _releaseIsLocked;
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                function setReleaseLocked(bool locked)
         
     | 
| 
      
 12 
     | 
    
         
            +
                    external
         
     | 
| 
      
 13 
     | 
    
         
            +
                    onlyAuthorized() 
         
     | 
| 
      
 14 
     | 
    
         
            +
                {
         
     | 
| 
      
 15 
     | 
    
         
            +
                    _releaseIsLocked = locked;
         
     | 
| 
      
 16 
     | 
    
         
            +
                }
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                function isReleaseLocked()
         
     | 
| 
      
 19 
     | 
    
         
            +
                    external
         
     | 
| 
      
 20 
     | 
    
         
            +
                    view
         
     | 
| 
      
 21 
     | 
    
         
            +
                    returns (bool isLocked)
         
     | 
| 
      
 22 
     | 
    
         
            +
                {
         
     | 
| 
      
 23 
     | 
    
         
            +
                    return _releaseIsLocked;
         
     | 
| 
      
 24 
     | 
    
         
            +
                }
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                function isTargetClosed(address target)
         
     | 
| 
      
 27 
     | 
    
         
            +
                    public 
         
     | 
| 
      
 28 
     | 
    
         
            +
                    virtual override 
         
     | 
| 
      
 29 
     | 
    
         
            +
                    view 
         
     | 
| 
      
 30 
     | 
    
         
            +
                    returns (bool)
         
     | 
| 
      
 31 
     | 
    
         
            +
                {
         
     | 
| 
      
 32 
     | 
    
         
            +
                    if (_releaseIsLocked) {
         
     | 
| 
      
 33 
     | 
    
         
            +
                        return true;
         
     | 
| 
      
 34 
     | 
    
         
            +
                    }
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                    return super.isTargetClosed(target);
         
     | 
| 
      
 37 
     | 
    
         
            +
                }
         
     | 
| 
      
 38 
     | 
    
         
            +
            }
         
     |