@etherisc/gif-next 0.0.2-f1fe735-758 → 0.0.2-f2a5ca7-763
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 +13 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +10 -10
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +17 -242
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +106 -90
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +55 -55
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +71 -146
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +32 -16
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +35 -96
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +110 -76
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -125
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +73 -79
- 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 +6 -6
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +13 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +13 -96
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +55 -55
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +40 -40
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +7 -202
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +7 -303
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -36
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +36 -36
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +13 -42
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +50 -50
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +58 -58
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +13 -153
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -73
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +234 -389
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +6 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +24 -16
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +62 -86
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +49 -61
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +13 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +13 -53
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +32 -32
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +6 -6
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +134 -134
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +22 -22
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +8 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
- 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 +4 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
- 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 +21 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/{shared → authorization}/AccessAdmin.sol +135 -303
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +218 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/{registry → authorization}/IServiceAuthorization.sol +5 -5
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/{registry → authorization}/ServiceAuthorization.sol +17 -17
- package/contracts/distribution/BasicDistribution.sol +149 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
- package/contracts/distribution/Distribution.sol +126 -104
- package/contracts/distribution/DistributionService.sol +12 -21
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +17 -35
- package/contracts/distribution/IDistributionService.sol +5 -1
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +8 -9
- package/contracts/instance/IInstanceService.sol +13 -18
- package/contracts/instance/Instance.sol +61 -70
- package/contracts/instance/InstanceAdmin.sol +202 -267
- package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
- package/contracts/instance/InstanceReader.sol +22 -9
- package/contracts/instance/InstanceService.sol +74 -70
- package/contracts/instance/InstanceServiceManager.sol +2 -6
- package/contracts/instance/InstanceStore.sol +5 -1
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/Oracle.sol +61 -49
- package/contracts/oracle/OracleServiceManager.sol +2 -5
- package/contracts/pool/BasicPool.sol +164 -0
- package/contracts/pool/BasicPoolAuthorization.sol +49 -0
- package/contracts/pool/BundleService.sol +14 -26
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IPoolComponent.sol +0 -60
- package/contracts/pool/Pool.sol +143 -131
- package/contracts/pool/PoolService.sol +11 -27
- package/contracts/pool/PoolServiceManager.sol +2 -5
- package/contracts/product/ApplicationService.sol +12 -36
- package/contracts/product/ApplicationServiceManager.sol +2 -2
- package/contracts/product/BasicProduct.sol +82 -0
- package/contracts/product/BasicProductAuthorization.sol +40 -0
- package/contracts/product/ClaimService.sol +5 -31
- package/contracts/product/ClaimServiceManager.sol +2 -2
- package/contracts/product/IProductComponent.sol +6 -9
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +103 -88
- package/contracts/product/ProductService.sol +7 -32
- package/contracts/product/ProductServiceManager.sol +2 -5
- package/contracts/registry/IRegistry.sol +26 -16
- package/contracts/registry/IRegistryService.sol +6 -6
- package/contracts/registry/Registry.sol +81 -87
- package/contracts/registry/RegistryAdmin.sol +118 -88
- package/contracts/registry/RegistryService.sol +4 -18
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +97 -113
- package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/ComponentService.sol +19 -58
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +26 -19
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/Service.sol +3 -4
- package/contracts/staking/IStaking.sol +1 -2
- package/contracts/staking/IStakingService.sol +12 -5
- package/contracts/staking/Staking.sol +11 -14
- package/contracts/staking/StakingManager.sol +2 -6
- package/contracts/staking/StakingReader.sol +12 -16
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/StakingStore.sol +12 -22
- package/contracts/type/ObjectType.sol +37 -7
- package/contracts/type/RoleId.sol +55 -82
- package/contracts/type/UFixed.sol +6 -0
- package/contracts/type/Version.sol +3 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/package.json +3 -3
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1177
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -190
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/shared/AccessManagerCustom.sol +0 -741
- package/contracts/shared/AccessManagerExtended.sol +0 -481
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
| @@ -8,12 +8,12 @@ import {InitializableCustom} from "../shared/InitializableCustom.sol"; | |
| 8 8 |  | 
| 9 9 | 
             
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 10 10 | 
             
            import {VersionPart} from "../type/Version.sol";
         | 
| 11 | 
            -
            import {ObjectType, PROTOCOL, REGISTRY,  | 
| 11 | 
            +
            import {ObjectType, PROTOCOL, REGISTRY, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
         | 
| 12 12 |  | 
| 13 13 | 
             
            import {ChainNft} from "./ChainNft.sol";
         | 
| 14 14 | 
             
            import {IRegistry} from "./IRegistry.sol";
         | 
| 15 15 | 
             
            import {IRegisterable} from "../shared/IRegisterable.sol";
         | 
| 16 | 
            -
            import { | 
| 16 | 
            +
            import {ReleaseRegistry} from "./ReleaseRegistry.sol";
         | 
| 17 17 | 
             
            import {TokenRegistry} from "./TokenRegistry.sol";
         | 
| 18 18 | 
             
            import {RegistryAdmin} from "./RegistryAdmin.sol";
         | 
| 19 19 |  | 
| @@ -27,6 +27,8 @@ import {RegistryAdmin} from "./RegistryAdmin.sol"; | |
| 27 27 | 
             
            // 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
         | 
| 28 28 | 
             
            // 4) state object by regular service (POLICY, BUNDLE, STAKE)
         | 
| 29 29 |  | 
| 30 | 
            +
            /// @title Chain Registry contract implementing IRegistry.
         | 
| 31 | 
            +
            /// @notice See IRegistry for method details.
         | 
| 30 32 | 
             
            contract Registry is
         | 
| 31 33 | 
             
                InitializableCustom,
         | 
| 32 34 | 
             
                IRegistry
         | 
| @@ -58,30 +60,31 @@ contract Registry is | |
| 58 60 |  | 
| 59 61 | 
             
                address public _tokenRegistryAddress;
         | 
| 60 62 | 
             
                address public _stakingAddress;
         | 
| 61 | 
            -
                 | 
| 63 | 
            +
                ReleaseRegistry public _releaseRegistry;
         | 
| 62 64 |  | 
| 63 65 | 
             
                // TODO 
         | 
| 64 | 
            -
                // 1). Registry and  | 
| 66 | 
            +
                // 1). Registry and ReleaseRegistry must be treated as whole single entity. 
         | 
| 65 67 | 
             
                //     But current limitations of EVM does not allow it -> require it to be splitted
         | 
| 66 | 
            -
                // 2). Keep  | 
| 67 | 
            -
                // 3). Delete onlyRegistryService in favor of restricted | 
| 68 | 
            +
                // 2). Keep onlyReleaseRegistry modifier
         | 
| 69 | 
            +
                // 3). Delete onlyRegistryService in favor of restricted
         | 
| 68 70 | 
             
                // 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
         | 
| 69 71 | 
             
                modifier onlyRegistryService() {
         | 
| 70 | 
            -
                    if(! | 
| 72 | 
            +
                    if(!_releaseRegistry.isActiveRegistryService(msg.sender)) {
         | 
| 71 73 | 
             
                        revert ErrorRegistryCallerNotRegistryService();
         | 
| 72 74 | 
             
                    }
         | 
| 73 75 | 
             
                    _;
         | 
| 74 76 | 
             
                }
         | 
| 75 77 |  | 
| 76 78 |  | 
| 77 | 
            -
                modifier  | 
| 78 | 
            -
                    if(msg.sender != address( | 
| 79 | 
            -
                        revert  | 
| 79 | 
            +
                modifier onlyReleaseRegistry() {
         | 
| 80 | 
            +
                    if(msg.sender != address(_releaseRegistry)) {
         | 
| 81 | 
            +
                        revert ErrorRegistryCallerNotReleaseRegistry();
         | 
| 80 82 | 
             
                    }
         | 
| 81 83 | 
             
                    _;
         | 
| 82 84 | 
             
                }
         | 
| 83 85 |  | 
| 84 | 
            -
             | 
| 86 | 
            +
                /// @dev Creates the registry contract and populates it with the protocol and registry objects.
         | 
| 87 | 
            +
                /// Internally deploys the ChainNft contract.
         | 
| 85 88 | 
             
                constructor(RegistryAdmin admin) 
         | 
| 86 89 | 
             
                    InitializableCustom() 
         | 
| 87 90 | 
             
                {
         | 
| @@ -98,91 +101,98 @@ contract Registry is | |
| 98 101 | 
             
                }
         | 
| 99 102 |  | 
| 100 103 |  | 
| 101 | 
            -
                /// @dev  | 
| 102 | 
            -
                /// MUST be called by release  | 
| 104 | 
            +
                /// @dev Wires release registry and token to registry (this contract).
         | 
| 105 | 
            +
                /// MUST be called by release registry.
         | 
| 103 106 | 
             
                function initialize(
         | 
| 104 | 
            -
                    address  | 
| 107 | 
            +
                    address releaseRegistry,
         | 
| 105 108 | 
             
                    address tokenRegistry,
         | 
| 106 109 | 
             
                    address staking
         | 
| 107 110 | 
             
                )
         | 
| 108 111 | 
             
                    external
         | 
| 109 112 | 
             
                    initializer()
         | 
| 110 113 | 
             
                {
         | 
| 111 | 
            -
                     | 
| 114 | 
            +
                    _releaseRegistry = ReleaseRegistry(releaseRegistry);
         | 
| 112 115 | 
             
                    _tokenRegistryAddress = tokenRegistry;
         | 
| 113 116 | 
             
                    _stakingAddress = staking;
         | 
| 114 117 |  | 
| 115 118 | 
             
                    _stakingNftId = _registerStaking();
         | 
| 116 119 | 
             
                }
         | 
| 117 120 |  | 
| 121 | 
            +
                /// @inheritdoc IRegistry
         | 
| 122 | 
            +
                function register(ObjectInfo memory info)
         | 
| 123 | 
            +
                    external
         | 
| 124 | 
            +
                    onlyRegistryService
         | 
| 125 | 
            +
                    returns(NftId nftId)
         | 
| 126 | 
            +
                {
         | 
| 127 | 
            +
                    ObjectType objectType = info.objectType;
         | 
| 128 | 
            +
                    ObjectType parentType = _info[info.parentNftId].objectType;
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                    // check type combinations for core objects
         | 
| 131 | 
            +
                    if(info.objectAddress == address(0)) {
         | 
| 132 | 
            +
                        if(_coreObjectCombinations[objectType][parentType] == false) {
         | 
| 133 | 
            +
                            revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
         | 
| 134 | 
            +
                        }
         | 
| 135 | 
            +
                    }
         | 
| 136 | 
            +
                    // check type combinations for contract objects
         | 
| 137 | 
            +
                    else {
         | 
| 138 | 
            +
                        if(_coreContractCombinations[objectType][parentType] == false) {
         | 
| 139 | 
            +
                            revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
         | 
| 140 | 
            +
                        }
         | 
| 141 | 
            +
                    }
         | 
| 142 | 
            +
             | 
| 143 | 
            +
                    nftId = _register(info);
         | 
| 144 | 
            +
                }
         | 
| 145 | 
            +
             | 
| 146 | 
            +
             | 
| 147 | 
            +
                /// @inheritdoc IRegistry
         | 
| 118 148 | 
             
                function registerService(
         | 
| 119 149 | 
             
                    ObjectInfo memory info, 
         | 
| 120 150 | 
             
                    VersionPart version, 
         | 
| 121 151 | 
             
                    ObjectType domain
         | 
| 122 152 | 
             
                )
         | 
| 123 153 | 
             
                    external
         | 
| 124 | 
            -
                     | 
| 154 | 
            +
                    onlyReleaseRegistry
         | 
| 125 155 | 
             
                    returns(NftId nftId)
         | 
| 126 156 | 
             
                {
         | 
| 157 | 
            +
                    // check service address is defined
         | 
| 127 158 | 
             
                    address service = info.objectAddress;
         | 
| 128 | 
            -
                    /* must be guaranteed by release manager
         | 
| 129 159 | 
             
                    if(service == address(0)) {
         | 
| 130 | 
            -
                        revert();
         | 
| 160 | 
            +
                        revert ErrorRegistryServiceAddressZero();
         | 
| 131 161 | 
             
                    }
         | 
| 132 162 |  | 
| 163 | 
            +
                    // check version is defined
         | 
| 133 164 | 
             
                    if(version.eqz()) {
         | 
| 134 | 
            -
                        revert();
         | 
| 165 | 
            +
                        revert ErrorRegistryServiceVersionZero();
         | 
| 135 166 | 
             
                    }
         | 
| 136 167 |  | 
| 137 | 
            -
                     | 
| 138 | 
            -
                        revert();
         | 
| 139 | 
            -
                    }
         | 
| 140 | 
            -
                    if(info.parentType != REGISTRY()) {
         | 
| 141 | 
            -
                        revert();
         | 
| 142 | 
            -
                    }        
         | 
| 143 | 
            -
                    info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
         | 
| 144 | 
            -
                    */
         | 
| 145 | 
            -
             | 
| 168 | 
            +
                    // check domain is defined
         | 
| 146 169 | 
             
                    if(domain.eqz()) {
         | 
| 147 170 | 
             
                        revert ErrorRegistryDomainZero(service);
         | 
| 148 171 | 
             
                    }
         | 
| 149 172 |  | 
| 150 | 
            -
                     | 
| 173 | 
            +
                    // check contract has not already been registered
         | 
| 174 | 
            +
                    if(_service[version][domain] != address(0)) {
         | 
| 151 175 | 
             
                        revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
         | 
| 152 176 | 
             
                    }
         | 
| 153 | 
            -
                    
         | 
| 154 | 
            -
                    _service[version][domain] = service;
         | 
| 155 177 |  | 
| 178 | 
            +
                    // check service has proper type
         | 
| 179 | 
            +
                    if(info.objectType != SERVICE()) {
         | 
| 180 | 
            +
                        revert ErrorRegistryNotService(service, info.objectType);
         | 
| 181 | 
            +
                    }
         | 
| 182 | 
            +
             | 
| 183 | 
            +
                    // check that parent has registry type
         | 
| 184 | 
            +
                    if(info.parentNftId != _registryNftId) {
         | 
| 185 | 
            +
                        revert ErrorRegistryServiceParentNotRegistry(info.parentNftId);
         | 
| 186 | 
            +
                    }        
         | 
| 187 | 
            +
             | 
| 188 | 
            +
                    _service[version][domain] = service;
         | 
| 156 189 | 
             
                    nftId = _register(info);
         | 
| 157 190 |  | 
| 158 191 | 
             
                    emit LogServiceRegistration(version, domain);
         | 
| 159 192 | 
             
                }
         | 
| 160 193 |  | 
| 161 | 
            -
                function register(ObjectInfo memory info)
         | 
| 162 | 
            -
                    external
         | 
| 163 | 
            -
                    onlyRegistryService
         | 
| 164 | 
            -
                    returns(NftId nftId)
         | 
| 165 | 
            -
                {
         | 
| 166 | 
            -
                    ObjectType objectType = info.objectType;
         | 
| 167 | 
            -
                    ObjectType parentType = _info[info.parentNftId].objectType;
         | 
| 168 | 
            -
             | 
| 169 | 
            -
                    // only valid core types combinations
         | 
| 170 | 
            -
                    if(info.objectAddress == address(0)) 
         | 
| 171 | 
            -
                    {
         | 
| 172 | 
            -
                        if(_coreObjectCombinations[objectType][parentType] == false) {
         | 
| 173 | 
            -
                            revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
         | 
| 174 | 
            -
                        }
         | 
| 175 | 
            -
                    }
         | 
| 176 | 
            -
                    else
         | 
| 177 | 
            -
                    {
         | 
| 178 | 
            -
                        if(_coreContractCombinations[objectType][parentType] == false) {
         | 
| 179 | 
            -
                            revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
         | 
| 180 | 
            -
                        }
         | 
| 181 | 
            -
                    }
         | 
| 182 | 
            -
             | 
| 183 | 
            -
                    nftId = _register(info);
         | 
| 184 | 
            -
                }
         | 
| 185 194 |  | 
| 195 | 
            +
                /// @inheritdoc IRegistry
         | 
| 186 196 | 
             
                function registerWithCustomType(ObjectInfo memory info)
         | 
| 187 197 | 
             
                    external
         | 
| 188 198 | 
             
                    onlyRegistryService
         | 
| @@ -197,7 +207,6 @@ contract Registry is | |
| 197 207 |  | 
| 198 208 | 
             
                    if(
         | 
| 199 209 | 
             
                        parentType == PROTOCOL() ||
         | 
| 200 | 
            -
                        parentType == REGISTRY() ||
         | 
| 201 210 | 
             
                        parentType == SERVICE()
         | 
| 202 211 | 
             
                    ) {
         | 
| 203 212 | 
             
                        revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
         | 
| @@ -209,21 +218,21 @@ contract Registry is | |
| 209 218 |  | 
| 210 219 | 
             
                /// @dev earliest GIF major version 
         | 
| 211 220 | 
             
                function getInitialVersion() external view returns (VersionPart) {
         | 
| 212 | 
            -
                    return  | 
| 221 | 
            +
                    return _releaseRegistry.getInitialVersion();
         | 
| 213 222 | 
             
                }
         | 
| 214 223 |  | 
| 215 224 | 
             
                /// @dev next GIF release version to be released
         | 
| 216 225 | 
             
                function getNextVersion() external view returns (VersionPart) {
         | 
| 217 | 
            -
                    return  | 
| 226 | 
            +
                    return _releaseRegistry.getNextVersion();
         | 
| 218 227 | 
             
                }
         | 
| 219 228 |  | 
| 220 229 | 
             
                /// @dev latest active GIF release version 
         | 
| 221 230 | 
             
                function getLatestVersion() external view returns (VersionPart) { 
         | 
| 222 | 
            -
                    return  | 
| 231 | 
            +
                    return _releaseRegistry.getLatestVersion();
         | 
| 223 232 | 
             
                }
         | 
| 224 233 |  | 
| 225 234 | 
             
                function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
         | 
| 226 | 
            -
                    return  | 
| 235 | 
            +
                    return _releaseRegistry.getReleaseInfo(version);
         | 
| 227 236 | 
             
                }
         | 
| 228 237 |  | 
| 229 238 | 
             
                function getObjectCount() external view returns (uint256) {
         | 
| @@ -277,7 +286,7 @@ contract Registry is | |
| 277 286 |  | 
| 278 287 | 
             
                function isActiveRelease(VersionPart version) external view returns (bool)
         | 
| 279 288 | 
             
                {
         | 
| 280 | 
            -
                    return  | 
| 289 | 
            +
                    return _releaseRegistry.isActiveRelease(version);
         | 
| 281 290 | 
             
                }
         | 
| 282 291 |  | 
| 283 292 | 
             
                function getStakingAddress() external view returns (address staking) {
         | 
| @@ -298,12 +307,8 @@ contract Registry is | |
| 298 307 | 
             
                    service =  _service[releaseVersion][serviceDomain]; 
         | 
| 299 308 | 
             
                }
         | 
| 300 309 |  | 
| 301 | 
            -
                function  | 
| 302 | 
            -
                    return address( | 
| 303 | 
            -
                }
         | 
| 304 | 
            -
             | 
| 305 | 
            -
                function getReleaseManagerAddress() external view returns (address) {
         | 
| 306 | 
            -
                    return address(_releaseManager);
         | 
| 310 | 
            +
                function getReleaseRegistryAddress() external view returns (address) {
         | 
| 311 | 
            +
                    return address(_releaseRegistry);
         | 
| 307 312 | 
             
                }
         | 
| 308 313 |  | 
| 309 314 | 
             
                function getChainNftAddress() external view override returns (address) {
         | 
| @@ -335,7 +340,6 @@ contract Registry is | |
| 335 340 | 
             
                // Internals
         | 
| 336 341 |  | 
| 337 342 | 
             
                /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
         | 
| 338 | 
            -
                // TODO registration of precompile addresses
         | 
| 339 343 | 
             
                function _register(ObjectInfo memory info)
         | 
| 340 344 | 
             
                    internal
         | 
| 341 345 | 
             
                    returns(NftId nftId)
         | 
| @@ -522,22 +526,18 @@ contract Registry is | |
| 522 526 | 
             
                    });
         | 
| 523 527 |  | 
| 524 528 | 
             
                    _nftIdByAddress[_stakingAddress] = stakingNftId;
         | 
| 529 | 
            +
             | 
| 525 530 | 
             
                    // reverts if nftId was already minted
         | 
| 526 531 | 
             
                    _chainNft.mint(stakingOwner, stakingId);
         | 
| 527 532 | 
             
                }
         | 
| 528 533 |  | 
| 529 534 | 
             
                /// @dev defines which object - parent types relations are allowed to register
         | 
| 530 | 
            -
                 | 
| 531 | 
            -
                // 1) EACH object type MUST have only one parent type across ALL mappings
         | 
| 532 | 
            -
                // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
         | 
| 533 | 
            -
                // 3) DO NOT use REGISTRY as object type
         | 
| 534 | 
            -
                // 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
         | 
| 535 | 
            +
                /// EACH object type MUST have only one parent type across ALL mappings
         | 
| 535 536 | 
             
                function _setupValidCoreTypesAndCombinations() 
         | 
| 536 537 | 
             
                    private 
         | 
| 537 538 | 
             
                {
         | 
| 538 539 | 
             
                    _coreTypes[REGISTRY()] = true;
         | 
| 539 540 | 
             
                    _coreTypes[SERVICE()] = true;
         | 
| 540 | 
            -
                    _coreTypes[TOKEN()] = true;
         | 
| 541 541 | 
             
                    _coreTypes[INSTANCE()] = true;
         | 
| 542 542 | 
             
                    _coreTypes[PRODUCT()] = true;
         | 
| 543 543 | 
             
                    _coreTypes[POOL()] = true;
         | 
| @@ -549,28 +549,22 @@ contract Registry is | |
| 549 549 | 
             
                    _coreTypes[STAKING()] = true;
         | 
| 550 550 | 
             
                    _coreTypes[STAKE()] = true;
         | 
| 551 551 |  | 
| 552 | 
            -
                     | 
| 553 | 
            -
                    if( | 
| 554 | 
            -
                         | 
| 555 | 
            -
                        // object is registry from different chain
         | 
| 556 | 
            -
                        // parent is global registry, this contract
         | 
| 557 | 
            -
                        _coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
         | 
| 558 | 
            -
                        //_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
         | 
| 559 | 
            -
                    } else {
         | 
| 560 | 
            -
                        // we are not global registry
         | 
| 561 | 
            -
                        // object is local registry, this contract
         | 
| 562 | 
            -
                        // parent is global registry, object with 0 address or registry from mainnet???
         | 
| 552 | 
            +
                    // only global registry allowed to register registry (after initialization)
         | 
| 553 | 
            +
                    if(block.chainid == 1) {
         | 
| 554 | 
            +
                        _coreContractCombinations[REGISTRY()][REGISTRY()] = true;
         | 
| 563 555 | 
             
                    }
         | 
| 556 | 
            +
             | 
| 557 | 
            +
                    // contracts with registry parent
         | 
| 564 558 | 
             
                    _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
         | 
| 565 | 
            -
                    _coreContractCombinations[TOKEN()][REGISTRY()] = true;
         | 
| 566 | 
            -
                    //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
         | 
| 567 559 | 
             
                    _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
         | 
| 568 560 |  | 
| 561 | 
            +
                    // components with instance parent
         | 
| 569 562 | 
             
                    _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
         | 
| 570 563 | 
             
                    _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
         | 
| 571 564 | 
             
                    _coreContractCombinations[ORACLE()][INSTANCE()] = true;
         | 
| 572 565 | 
             
                    _coreContractCombinations[POOL()][INSTANCE()] = true;
         | 
| 573 566 |  | 
| 567 | 
            +
                    // objects with coponent parents
         | 
| 574 568 | 
             
                    _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
         | 
| 575 569 | 
             
                    _coreObjectCombinations[POLICY()][PRODUCT()] = true;
         | 
| 576 570 | 
             
                    _coreObjectCombinations[BUNDLE()][POOL()] = true;
         | 
| @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: UNLICENSED
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {AccessAdmin} from "../ | 
| 5 | 
            -
            import { | 
| 4 | 
            +
            import {AccessAdmin} from "../authorization/AccessAdmin.sol";
         | 
| 5 | 
            +
            import {IAccess} from "../authorization/IAccess.sol";
         | 
| 6 6 | 
             
            import {IRegistry} from "./IRegistry.sol";
         | 
| 7 7 | 
             
            import {IService} from "../shared/IService.sol";
         | 
| 8 | 
            -
            import {IServiceAuthorization} from " | 
| 8 | 
            +
            import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
         | 
| 9 9 | 
             
            import {IStaking} from "../staking/IStaking.sol";
         | 
| 10 10 | 
             
            import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
         | 
| 11 | 
            -
            import { | 
| 11 | 
            +
            import {ReleaseRegistry} from "./ReleaseRegistry.sol";
         | 
| 12 12 | 
             
            import {RoleId, RoleIdLib, ADMIN_ROLE, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
         | 
| 13 13 | 
             
            import {StakingStore} from "../staking/StakingStore.sol";
         | 
| 14 14 | 
             
            import {STAKING} from "../type/ObjectType.sol";
         | 
| @@ -38,17 +38,21 @@ contract RegistryAdmin is | |
| 38 38 |  | 
| 39 39 | 
             
                string public constant GIF_ADMIN_ROLE_NAME = "GifAdminRole";
         | 
| 40 40 | 
             
                string public constant GIF_MANAGER_ROLE_NAME = "GifManagerRole";
         | 
| 41 | 
            -
                string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
         | 
| 42 41 | 
             
                string public constant POOL_SERVICE_ROLE_NAME = "PoolServiceRole";
         | 
| 42 | 
            +
                string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistryRole";
         | 
| 43 | 
            +
                string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
         | 
| 44 | 
            +
                string public constant STAKING_ROLE_NAME = "StakingRole";
         | 
| 43 45 |  | 
| 44 | 
            -
                string public constant  | 
| 45 | 
            -
                string public constant TOKEN_REGISTRY_TARGET_NAME = " | 
| 46 | 
            -
                string public constant STAKING_TARGET_NAME = " | 
| 47 | 
            -
                string public constant STAKING_STORE_TARGET_NAME = " | 
| 46 | 
            +
                string public constant RELEASE_REGISTRY_TARGET_NAME = "ReleaseRegistry";
         | 
| 47 | 
            +
                string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
         | 
| 48 | 
            +
                string public constant STAKING_TARGET_NAME = "Staking";
         | 
| 49 | 
            +
                string public constant STAKING_STORE_TARGET_NAME = "StakingStore";
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                uint8 public constant MAX_NUM_RELEASES = 99;
         | 
| 48 52 |  | 
| 49 53 | 
             
                mapping(address service => VersionPart majorVersion) private _ServiceRelease;
         | 
| 50 54 |  | 
| 51 | 
            -
                address private  | 
| 55 | 
            +
                address private _releaseRegistry;
         | 
| 52 56 | 
             
                address private _tokenRegistry;
         | 
| 53 57 | 
             
                address private _staking;
         | 
| 54 58 | 
             
                address private _stakingStore;
         | 
| @@ -67,19 +71,19 @@ contract RegistryAdmin is | |
| 67 71 | 
             
                    if (_setupCompleted) { revert ErrorRegistryAdminIsAlreadySetUp(); } 
         | 
| 68 72 | 
             
                    else { _setupCompleted = true; }
         | 
| 69 73 |  | 
| 70 | 
            -
                     | 
| 74 | 
            +
                    _releaseRegistry = registry.getReleaseRegistryAddress();
         | 
| 71 75 | 
             
                    _tokenRegistry = registry.getTokenRegistryAddress();
         | 
| 72 76 | 
             
                    _staking = registry.getStakingAddress();
         | 
| 73 77 | 
             
                    _stakingStore = address(
         | 
| 74 78 | 
             
                        IStaking(_staking).getStakingStore());
         | 
| 75 79 |  | 
| 76 80 | 
             
                    // at this moment all registry contracts are deployed and fully intialized
         | 
| 77 | 
            -
                    _createTarget(_tokenRegistry, TOKEN_REGISTRY_TARGET_NAME);
         | 
| 81 | 
            +
                    _createTarget(_tokenRegistry, TOKEN_REGISTRY_TARGET_NAME, true, false);
         | 
| 78 82 |  | 
| 79 83 | 
             
                    _setupGifAdminRole(gifAdmin);
         | 
| 80 84 | 
             
                    _setupGifManagerRole(gifManager);
         | 
| 81 85 |  | 
| 82 | 
            -
                     | 
| 86 | 
            +
                    _setupReleaseRegistry();
         | 
| 83 87 | 
             
                    _setupStaking();
         | 
| 84 88 | 
             
                }
         | 
| 85 89 |  | 
| @@ -112,50 +116,39 @@ contract RegistryAdmin is | |
| 112 116 | 
             
                function _createServiceTargetAndRole(IService service)
         | 
| 113 117 | 
             
                    private
         | 
| 114 118 | 
             
                {
         | 
| 115 | 
            -
                    ObjectType  | 
| 116 | 
            -
                    string memory baseName = ObjectTypeLib.toName( | 
| 119 | 
            +
                    ObjectType serviceDomain = service.getDomain();
         | 
| 120 | 
            +
                    string memory baseName = ObjectTypeLib.toName(serviceDomain);
         | 
| 117 121 | 
             
                    VersionPart version = service.getVersion().toMajorPart();
         | 
| 118 122 | 
             
                    uint256 versionInt = version.toInt();
         | 
| 119 | 
            -
                    string memory versionName = "_v0";
         | 
| 120 | 
            -
                    string memory versionNumber = ObjectTypeLib.toString(versionInt);
         | 
| 121 | 
            -
             | 
| 122 | 
            -
                    if (versionInt >= 10) {
         | 
| 123 | 
            -
                        versionName = "_v";
         | 
| 124 | 
            -
                    }
         | 
| 125 123 |  | 
| 126 124 | 
             
                    // create service target
         | 
| 127 | 
            -
                    string memory serviceTargetName =  | 
| 128 | 
            -
                         | 
| 129 | 
            -
                            baseName,
         | 
| 130 | 
            -
                            "Service",
         | 
| 131 | 
            -
                            versionName,
         | 
| 132 | 
            -
                            versionNumber));
         | 
| 125 | 
            +
                    string memory serviceTargetName = ObjectTypeLib.toVersionedName(
         | 
| 126 | 
            +
                        baseName, "Service", versionInt);
         | 
| 133 127 |  | 
| 134 128 | 
             
                    _createTarget(
         | 
| 135 129 | 
             
                        address(service), 
         | 
| 136 | 
            -
                        serviceTargetName | 
| 130 | 
            +
                        serviceTargetName,
         | 
| 131 | 
            +
                        true,
         | 
| 132 | 
            +
                        false);
         | 
| 137 133 |  | 
| 138 134 | 
             
                    // create service role
         | 
| 139 | 
            -
                     | 
| 140 | 
            -
                         | 
| 141 | 
            -
                            baseName,
         | 
| 142 | 
            -
                            "ServiceRole",
         | 
| 143 | 
            -
                            versionName,
         | 
| 144 | 
            -
                            versionNumber));
         | 
| 145 | 
            -
             | 
| 146 | 
            -
                    RoleId roleId = RoleIdLib.roleForTypeAndVersion(
         | 
| 147 | 
            -
                        domain, 
         | 
| 135 | 
            +
                    RoleId serviceRoleId = RoleIdLib.roleForTypeAndVersion(
         | 
| 136 | 
            +
                        serviceDomain, 
         | 
| 148 137 | 
             
                        version);
         | 
| 149 138 |  | 
| 150 139 | 
             
                    _createRole(
         | 
| 151 | 
            -
                         | 
| 152 | 
            -
                         | 
| 153 | 
            -
             | 
| 154 | 
            -
             | 
| 155 | 
            -
             | 
| 140 | 
            +
                        serviceRoleId, 
         | 
| 141 | 
            +
                        toRole({
         | 
| 142 | 
            +
                            adminRoleId: ADMIN_ROLE(),
         | 
| 143 | 
            +
                            roleType: RoleType.Contract,
         | 
| 144 | 
            +
                            maxMemberCount: 1,
         | 
| 145 | 
            +
                            name: ObjectTypeLib.toVersionedName(
         | 
| 146 | 
            +
                                baseName, 
         | 
| 147 | 
            +
                                "ServiceRole", 
         | 
| 148 | 
            +
                                versionInt)}));
         | 
| 156 149 |  | 
| 157 150 | 
             
                    _grantRoleToAccount( 
         | 
| 158 | 
            -
                         | 
| 151 | 
            +
                        serviceRoleId,
         | 
| 159 152 | 
             
                        address(service)); 
         | 
| 160 153 | 
             
                }
         | 
| 161 154 |  | 
| @@ -186,7 +179,7 @@ contract RegistryAdmin is | |
| 186 179 | 
             
                        }
         | 
| 187 180 |  | 
| 188 181 | 
             
                        // get authorized functions for authorized domain
         | 
| 189 | 
            -
                         | 
| 182 | 
            +
                        IAccess.FunctionInfo[] memory authorizatedFunctions = serviceAuthorization.getAuthorizedFunctions(
         | 
| 190 183 | 
             
                            serviceDomain, 
         | 
| 191 184 | 
             
                            authorizedDomain);
         | 
| 192 185 |  | 
| @@ -218,29 +211,40 @@ contract RegistryAdmin is | |
| 218 211 | 
             
                //--- private functions -------------------------------------------------//
         | 
| 219 212 |  | 
| 220 213 | 
             
                function _setupGifAdminRole(address gifAdmin) private {
         | 
| 221 | 
            -
                     | 
| 222 | 
            -
                    _createRole( | 
| 223 | 
            -
             | 
| 224 | 
            -
             | 
| 225 | 
            -
             | 
| 226 | 
            -
             | 
| 227 | 
            -
             | 
| 228 | 
            -
             | 
| 229 | 
            -
             | 
| 230 | 
            -
                     | 
| 231 | 
            -
                     | 
| 232 | 
            -
                     | 
| 214 | 
            +
                    
         | 
| 215 | 
            +
                    _createRole(
         | 
| 216 | 
            +
                        GIF_ADMIN_ROLE(), 
         | 
| 217 | 
            +
                        toRole({
         | 
| 218 | 
            +
                            adminRoleId: ADMIN_ROLE(),
         | 
| 219 | 
            +
                            roleType: RoleType.Gif,
         | 
| 220 | 
            +
                            maxMemberCount: 2, // TODO decide on max member count
         | 
| 221 | 
            +
                            name: GIF_ADMIN_ROLE_NAME}));
         | 
| 222 | 
            +
             | 
| 223 | 
            +
                    // for ReleaseRegistry
         | 
| 224 | 
            +
                    FunctionInfo[] memory functions;
         | 
| 225 | 
            +
                    functions = new FunctionInfo[](4);
         | 
| 226 | 
            +
                    functions[0] = toFunction(ReleaseRegistry.createNextRelease.selector, "createNextRelease");
         | 
| 227 | 
            +
                    functions[1] = toFunction(ReleaseRegistry.activateNextRelease.selector, "activateNextRelease");
         | 
| 228 | 
            +
                    functions[2] = toFunction(ReleaseRegistry.pauseRelease.selector, "pauseRelease");
         | 
| 229 | 
            +
                    functions[3] = toFunction(ReleaseRegistry.unpauseRelease.selector, "unpauseRelease");
         | 
| 230 | 
            +
                    _authorizeTargetFunctions(_releaseRegistry, GIF_ADMIN_ROLE(), functions);
         | 
| 233 231 |  | 
| 234 | 
            -
                     | 
| 232 | 
            +
                    _grantRoleToAccount(GIF_ADMIN_ROLE(), gifAdmin);
         | 
| 235 233 | 
             
                }
         | 
| 236 234 |  | 
| 237 235 | 
             
                function _setupGifManagerRole(address gifManager) private {
         | 
| 238 | 
            -
             | 
| 239 | 
            -
                     | 
| 236 | 
            +
             | 
| 237 | 
            +
                    _createRole(
         | 
| 238 | 
            +
                        GIF_MANAGER_ROLE(), 
         | 
| 239 | 
            +
                        toRole({
         | 
| 240 | 
            +
                            adminRoleId: ADMIN_ROLE(),
         | 
| 241 | 
            +
                            roleType: RoleType.Gif,
         | 
| 242 | 
            +
                            maxMemberCount: 1,
         | 
| 243 | 
            +
                            name: GIF_MANAGER_ROLE_NAME}));
         | 
| 240 244 |  | 
| 241 245 | 
             
                    // for TokenRegistry
         | 
| 242 | 
            -
                     | 
| 243 | 
            -
                    functions = new  | 
| 246 | 
            +
                    FunctionInfo[] memory functions;
         | 
| 247 | 
            +
                    functions = new FunctionInfo[](5);
         | 
| 244 248 | 
             
                    functions[0] = toFunction(TokenRegistry.registerToken.selector, "registerToken");
         | 
| 245 249 | 
             
                    functions[1] = toFunction(TokenRegistry.registerRemoteToken.selector, "registerRemoteToken");
         | 
| 246 250 | 
             
                    functions[2] = toFunction(TokenRegistry.setActive.selector, "setActive");
         | 
| @@ -249,42 +253,55 @@ contract RegistryAdmin is | |
| 249 253 | 
             
                    functions[4] = toFunction(TokenRegistry.setActiveWithVersionCheck.selector, "setActiveWithVersionCheck");
         | 
| 250 254 | 
             
                    _authorizeTargetFunctions(_tokenRegistry, GIF_MANAGER_ROLE(), functions);
         | 
| 251 255 |  | 
| 252 | 
            -
                    // for  | 
| 253 | 
            -
                    functions = new  | 
| 254 | 
            -
                    functions[0] = toFunction( | 
| 255 | 
            -
                    functions[1] = toFunction( | 
| 256 | 
            -
                    _authorizeTargetFunctions( | 
| 256 | 
            +
                    // for ReleaseRegistry
         | 
| 257 | 
            +
                    functions = new FunctionInfo[](2);
         | 
| 258 | 
            +
                    functions[0] = toFunction(ReleaseRegistry.prepareNextRelease.selector, "prepareNextRelease");
         | 
| 259 | 
            +
                    functions[1] = toFunction(ReleaseRegistry.registerService.selector, "registerService");
         | 
| 260 | 
            +
                    _authorizeTargetFunctions(_releaseRegistry, GIF_MANAGER_ROLE(), functions);
         | 
| 257 261 |  | 
| 258 | 
            -
                     | 
| 262 | 
            +
                    _grantRoleToAccount(GIF_MANAGER_ROLE(), gifManager);
         | 
| 259 263 | 
             
                }
         | 
| 260 264 |  | 
| 261 265 |  | 
| 262 | 
            -
                function  | 
| 263 | 
            -
                    _createTarget(_releaseManager, RELEASE_MANAGER_TARGET_NAME);
         | 
| 266 | 
            +
                function _setupReleaseRegistry() private {
         | 
| 264 267 |  | 
| 265 | 
            -
                     | 
| 266 | 
            -
                    _createRole(releaseManagerRoleId, ADMIN_ROLE(), RELEASE_MANAGER_TARGET_NAME, 1, true);
         | 
| 267 | 
            -
                    _grantRoleToAccount(releaseManagerRoleId, _releaseManager);
         | 
| 268 | 
            +
                    _createTarget(_releaseRegistry, RELEASE_REGISTRY_TARGET_NAME, true, false);
         | 
| 268 269 |  | 
| 269 | 
            -
                     | 
| 270 | 
            -
                     | 
| 270 | 
            +
                    RoleId releaseRegistryRoleId = RoleIdLib.roleForType(RELEASE());
         | 
| 271 | 
            +
                    _createRole(
         | 
| 272 | 
            +
                        releaseRegistryRoleId, 
         | 
| 273 | 
            +
                        toRole({
         | 
| 274 | 
            +
                            adminRoleId: ADMIN_ROLE(),
         | 
| 275 | 
            +
                            roleType: RoleType.Contract,
         | 
| 276 | 
            +
                            maxMemberCount: 1,
         | 
| 277 | 
            +
                            name: RELEASE_REGISTRY_ROLE_NAME}));
         | 
| 278 | 
            +
             | 
| 279 | 
            +
                    FunctionInfo[] memory functions;
         | 
| 280 | 
            +
                    functions = new FunctionInfo[](2);
         | 
| 271 281 | 
             
                    functions[0] = toFunction(RegistryAdmin.authorizeService.selector, "authorizeService");
         | 
| 272 282 | 
             
                    functions[1] = toFunction(RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
         | 
| 273 | 
            -
                    _authorizeTargetFunctions(address(this),  | 
| 283 | 
            +
                    _authorizeTargetFunctions(address(this), releaseRegistryRoleId, functions);
         | 
| 284 | 
            +
             | 
| 285 | 
            +
                    _grantRoleToAccount(releaseRegistryRoleId, _releaseRegistry);
         | 
| 274 286 | 
             
                }
         | 
| 275 287 |  | 
| 276 288 |  | 
| 277 289 | 
             
                function _setupStaking() private {
         | 
| 278 | 
            -
                    _createTarget(_staking, STAKING_TARGET_NAME);
         | 
| 279 | 
            -
                    _createTarget(_stakingStore, STAKING_STORE_TARGET_NAME);
         | 
| 280 | 
            -
             | 
| 290 | 
            +
                    _createTarget(_staking, STAKING_TARGET_NAME, true, false);
         | 
| 291 | 
            +
                    _createTarget(_stakingStore, STAKING_STORE_TARGET_NAME, true, false);
         | 
| 281 292 |  | 
| 282 293 | 
             
                    // staking function authorization for staking service
         | 
| 283 294 | 
             
                    RoleId stakingServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(STAKING());
         | 
| 284 | 
            -
                    _createRole( | 
| 285 | 
            -
             | 
| 286 | 
            -
             | 
| 287 | 
            -
             | 
| 295 | 
            +
                    _createRole(
         | 
| 296 | 
            +
                        stakingServiceRoleId, 
         | 
| 297 | 
            +
                        toRole({
         | 
| 298 | 
            +
                            adminRoleId: ADMIN_ROLE(),
         | 
| 299 | 
            +
                            roleType: RoleType.Contract,
         | 
| 300 | 
            +
                            maxMemberCount: MAX_NUM_RELEASES,
         | 
| 301 | 
            +
                            name: STAKING_SERVICE_ROLE_NAME}));
         | 
| 302 | 
            +
             | 
| 303 | 
            +
                    FunctionInfo[] memory functions;
         | 
| 304 | 
            +
                    functions = new FunctionInfo[](13);
         | 
| 288 305 | 
             
                    functions[0] = toFunction(IStaking.registerTarget.selector, "registerTarget");
         | 
| 289 306 | 
             
                    functions[1] = toFunction(IStaking.setLockingPeriod.selector, "setLockingPeriod");
         | 
| 290 307 | 
             
                    functions[2] = toFunction(IStaking.setRewardRate.selector, "setRewardRate");
         | 
| @@ -302,20 +319,31 @@ contract RegistryAdmin is | |
| 302 319 |  | 
| 303 320 | 
             
                    // staking function authorization for pool service
         | 
| 304 321 | 
             
                    RoleId poolServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(POOL());
         | 
| 305 | 
            -
                    _createRole( | 
| 322 | 
            +
                    _createRole(
         | 
| 323 | 
            +
                        poolServiceRoleId, 
         | 
| 324 | 
            +
                        toRole({
         | 
| 325 | 
            +
                            adminRoleId: ADMIN_ROLE(),
         | 
| 326 | 
            +
                            roleType: RoleType.Contract,
         | 
| 327 | 
            +
                            maxMemberCount: MAX_NUM_RELEASES,
         | 
| 328 | 
            +
                            name: POOL_SERVICE_ROLE_NAME}));
         | 
| 306 329 |  | 
| 307 330 | 
             
                    // staking function authorizations
         | 
| 308 | 
            -
                    functions = new  | 
| 331 | 
            +
                    functions = new FunctionInfo[](2);
         | 
| 309 332 | 
             
                    functions[0] = toFunction(IStaking.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
         | 
| 310 333 | 
             
                    functions[1] = toFunction(IStaking.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
         | 
| 311 334 | 
             
                    _authorizeTargetFunctions(_staking, poolServiceRoleId, functions);
         | 
| 312 335 |  | 
| 313 336 | 
             
                    // staking store function authorizations
         | 
| 314 337 | 
             
                    RoleId stakingRoleId = RoleIdLib.roleForType(STAKING());
         | 
| 315 | 
            -
                    _createRole( | 
| 316 | 
            -
             | 
| 317 | 
            -
             | 
| 318 | 
            -
             | 
| 338 | 
            +
                    _createRole(
         | 
| 339 | 
            +
                        stakingRoleId, 
         | 
| 340 | 
            +
                        toRole({
         | 
| 341 | 
            +
                            adminRoleId: ADMIN_ROLE(),
         | 
| 342 | 
            +
                            roleType: RoleType.Contract,
         | 
| 343 | 
            +
                            maxMemberCount: 1,
         | 
| 344 | 
            +
                            name: STAKING_ROLE_NAME}));
         | 
| 345 | 
            +
             | 
| 346 | 
            +
                    functions = new FunctionInfo[](14);
         | 
| 319 347 | 
             
                    functions[0] = toFunction(StakingStore.setStakingRate.selector, "setStakingRate");
         | 
| 320 348 | 
             
                    functions[1] = toFunction(StakingStore.createTarget.selector, "createTarget");
         | 
| 321 349 | 
             
                    functions[2] = toFunction(StakingStore.updateTarget.selector, "updateTarget");
         | 
| @@ -331,5 +359,7 @@ contract RegistryAdmin is | |
| 331 359 | 
             
                    functions[12] = toFunction(StakingStore.claimUpTo.selector, "claimUpTo");
         | 
| 332 360 | 
             
                    functions[13] = toFunction(StakingStore.unstakeUpTo.selector, "unstakeUpTo");
         | 
| 333 361 | 
             
                    _authorizeTargetFunctions(_stakingStore, stakingRoleId, functions);
         | 
| 362 | 
            +
             | 
| 363 | 
            +
                    _grantRoleToAccount(stakingRoleId, _staking);
         | 
| 334 364 | 
             
                }
         | 
| 335 365 | 
             
            }
         |