@etherisc/gif-next 0.0.2-f347f00-614 → 0.0.2-f36fd21-685
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 +30 -2
- 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 +100 -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 +29 -5
- 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 +1548 -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 +46 -228
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +269 -90
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +83 -55
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -132
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +134 -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 -81
- 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 +84 -101
- 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 +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
- 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 +1185 -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 +43 -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 +43 -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 +1520 -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 +220 -54
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +72 -40
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +102 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -195
- 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 +43 -296
- 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 +1318 -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/IPolicyService.sol/IPolicyService.json +13 -0
- 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 +32 -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 +64 -51
- 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 +63 -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 +32 -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 +239 -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 +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
- 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 +44 -12
- 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 +271 -86
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -61
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- 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/IComponentService.sol/IComponentService.json +153 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
- 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/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -53
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
- 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 +42 -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 +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
- 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 +146 -165
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -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 +37 -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 +17 -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 +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -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 -294
- 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 +34 -60
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/{registry → authorization}/IServiceAuthorization.sol +7 -4
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -14
- package/contracts/distribution/BasicDistribution.sol +138 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +144 -110
- package/contracts/distribution/DistributionService.sol +71 -31
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +25 -39
- package/contracts/distribution/IDistributionService.sol +17 -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 +204 -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 +13 -5
- package/contracts/instance/base/ObjectLifecycle.sol +106 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
- package/contracts/instance/module/IComponents.sol +0 -1
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +72 -51
- package/contracts/oracle/OracleServiceManager.sol +2 -5
- package/contracts/pool/BasicPool.sol +164 -0
- package/contracts/pool/BasicPoolAuthorization.sol +55 -0
- package/contracts/pool/BundleService.sol +72 -27
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IBundleService.sol +14 -0
- package/contracts/pool/IPoolComponent.sol +6 -60
- package/contracts/pool/Pool.sol +160 -131
- package/contracts/pool/PoolService.sol +12 -30
- 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 +52 -0
- package/contracts/product/BasicProductAuthorization.sol +43 -0
- package/contracts/product/ClaimService.sol +7 -32
- package/contracts/product/ClaimServiceManager.sol +2 -2
- package/contracts/product/IPolicyService.sol +2 -0
- package/contracts/product/IProductComponent.sol +7 -9
- package/contracts/product/PolicyService.sol +28 -4
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +112 -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 +85 -85
- package/contracts/registry/RegistryAdmin.sol +118 -86
- package/contracts/registry/RegistryService.sol +4 -18
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseRegistry.sol +485 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +13 -14
- package/contracts/shared/ComponentService.sol +102 -68
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
- package/contracts/shared/IKeyValueStore.sol +1 -0
- package/contracts/shared/ILifecycle.sol +1 -2
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +47 -19
- package/contracts/shared/KeyValueStore.sol +6 -2
- package/contracts/shared/Lifecycle.sol +16 -69
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +2 -2
- package/contracts/shared/PolicyHolder.sol +2 -5
- 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 +20 -17
- package/contracts/staking/StakingLifecycle.sol +23 -0
- 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 +15 -23
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/ObjectType.sol +37 -7
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RoleId.sol +55 -82
- package/contracts/type/UFixed.sol +34 -9
- 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 +6 -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 -1218
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -166
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1554
- 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/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- 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/registry/ReleaseManager.sol +0 -521
- 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,24 +60,31 @@ contract Registry is | |
| 58 60 |  | 
| 59 61 | 
             
                address public _tokenRegistryAddress;
         | 
| 60 62 | 
             
                address public _stakingAddress;
         | 
| 61 | 
            -
                 | 
| 62 | 
            -
             | 
| 63 | 
            +
                ReleaseRegistry public _releaseRegistry;
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                // TODO 
         | 
| 66 | 
            +
                // 1). Registry and ReleaseRegistry must be treated as whole single entity. 
         | 
| 67 | 
            +
                //     But current limitations of EVM does not allow it -> require it to be splitted
         | 
| 68 | 
            +
                // 2). Keep onlyReleaseRegistry modifier
         | 
| 69 | 
            +
                // 3). Delete onlyRegistryService in favor of restricted
         | 
| 70 | 
            +
                // 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
         | 
| 63 71 | 
             
                modifier onlyRegistryService() {
         | 
| 64 | 
            -
                    if(! | 
| 72 | 
            +
                    if(!_releaseRegistry.isActiveRegistryService(msg.sender)) {
         | 
| 65 73 | 
             
                        revert ErrorRegistryCallerNotRegistryService();
         | 
| 66 74 | 
             
                    }
         | 
| 67 75 | 
             
                    _;
         | 
| 68 76 | 
             
                }
         | 
| 69 77 |  | 
| 70 78 |  | 
| 71 | 
            -
                modifier  | 
| 72 | 
            -
                    if(msg.sender != address( | 
| 73 | 
            -
                        revert  | 
| 79 | 
            +
                modifier onlyReleaseRegistry() {
         | 
| 80 | 
            +
                    if(msg.sender != address(_releaseRegistry)) {
         | 
| 81 | 
            +
                        revert ErrorRegistryCallerNotReleaseRegistry();
         | 
| 74 82 | 
             
                    }
         | 
| 75 83 | 
             
                    _;
         | 
| 76 84 | 
             
                }
         | 
| 77 85 |  | 
| 78 | 
            -
             | 
| 86 | 
            +
                /// @dev Creates the registry contract and populates it with the protocol and registry objects.
         | 
| 87 | 
            +
                /// Internally deploys the ChainNft contract.
         | 
| 79 88 | 
             
                constructor(RegistryAdmin admin) 
         | 
| 80 89 | 
             
                    InitializableCustom() 
         | 
| 81 90 | 
             
                {
         | 
| @@ -92,91 +101,98 @@ contract Registry is | |
| 92 101 | 
             
                }
         | 
| 93 102 |  | 
| 94 103 |  | 
| 95 | 
            -
                /// @dev  | 
| 96 | 
            -
                /// MUST be called by release  | 
| 104 | 
            +
                /// @dev Wires release registry and token to registry (this contract).
         | 
| 105 | 
            +
                /// MUST be called by release registry.
         | 
| 97 106 | 
             
                function initialize(
         | 
| 98 | 
            -
                    address  | 
| 107 | 
            +
                    address releaseRegistry,
         | 
| 99 108 | 
             
                    address tokenRegistry,
         | 
| 100 109 | 
             
                    address staking
         | 
| 101 110 | 
             
                )
         | 
| 102 111 | 
             
                    external
         | 
| 103 112 | 
             
                    initializer()
         | 
| 104 113 | 
             
                {
         | 
| 105 | 
            -
                     | 
| 114 | 
            +
                    _releaseRegistry = ReleaseRegistry(releaseRegistry);
         | 
| 106 115 | 
             
                    _tokenRegistryAddress = tokenRegistry;
         | 
| 107 116 | 
             
                    _stakingAddress = staking;
         | 
| 108 117 |  | 
| 109 118 | 
             
                    _stakingNftId = _registerStaking();
         | 
| 110 119 | 
             
                }
         | 
| 111 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
         | 
| 112 148 | 
             
                function registerService(
         | 
| 113 149 | 
             
                    ObjectInfo memory info, 
         | 
| 114 150 | 
             
                    VersionPart version, 
         | 
| 115 151 | 
             
                    ObjectType domain
         | 
| 116 152 | 
             
                )
         | 
| 117 153 | 
             
                    external
         | 
| 118 | 
            -
                     | 
| 154 | 
            +
                    onlyReleaseRegistry
         | 
| 119 155 | 
             
                    returns(NftId nftId)
         | 
| 120 156 | 
             
                {
         | 
| 157 | 
            +
                    // check service address is defined
         | 
| 121 158 | 
             
                    address service = info.objectAddress;
         | 
| 122 | 
            -
                    /* must be guaranteed by release manager
         | 
| 123 159 | 
             
                    if(service == address(0)) {
         | 
| 124 | 
            -
                        revert();
         | 
| 160 | 
            +
                        revert ErrorRegistryServiceAddressZero();
         | 
| 125 161 | 
             
                    }
         | 
| 126 162 |  | 
| 163 | 
            +
                    // check version is defined
         | 
| 127 164 | 
             
                    if(version.eqz()) {
         | 
| 128 | 
            -
                        revert();
         | 
| 165 | 
            +
                        revert ErrorRegistryServiceVersionZero();
         | 
| 129 166 | 
             
                    }
         | 
| 130 167 |  | 
| 131 | 
            -
                     | 
| 132 | 
            -
                        revert();
         | 
| 133 | 
            -
                    }
         | 
| 134 | 
            -
                    if(info.parentType != REGISTRY()) {
         | 
| 135 | 
            -
                        revert();
         | 
| 136 | 
            -
                    }        
         | 
| 137 | 
            -
                    info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
         | 
| 138 | 
            -
                    */
         | 
| 139 | 
            -
             | 
| 168 | 
            +
                    // check domain is defined
         | 
| 140 169 | 
             
                    if(domain.eqz()) {
         | 
| 141 170 | 
             
                        revert ErrorRegistryDomainZero(service);
         | 
| 142 171 | 
             
                    }
         | 
| 143 172 |  | 
| 144 | 
            -
                     | 
| 173 | 
            +
                    // check contract has not already been registered
         | 
| 174 | 
            +
                    if(_service[version][domain] != address(0)) {
         | 
| 145 175 | 
             
                        revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
         | 
| 146 176 | 
             
                    }
         | 
| 147 | 
            -
                    
         | 
| 148 | 
            -
                    _service[version][domain] = service;
         | 
| 149 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;
         | 
| 150 189 | 
             
                    nftId = _register(info);
         | 
| 151 190 |  | 
| 152 191 | 
             
                    emit LogServiceRegistration(version, domain);
         | 
| 153 192 | 
             
                }
         | 
| 154 193 |  | 
| 155 | 
            -
                function register(ObjectInfo memory info)
         | 
| 156 | 
            -
                    external
         | 
| 157 | 
            -
                    onlyRegistryService
         | 
| 158 | 
            -
                    returns(NftId nftId)
         | 
| 159 | 
            -
                {
         | 
| 160 | 
            -
                    ObjectType objectType = info.objectType;
         | 
| 161 | 
            -
                    ObjectType parentType = _info[info.parentNftId].objectType;
         | 
| 162 | 
            -
             | 
| 163 | 
            -
                    // only valid core types combinations
         | 
| 164 | 
            -
                    if(info.objectAddress == address(0)) 
         | 
| 165 | 
            -
                    {
         | 
| 166 | 
            -
                        if(_coreObjectCombinations[objectType][parentType] == false) {
         | 
| 167 | 
            -
                            revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
         | 
| 168 | 
            -
                        }
         | 
| 169 | 
            -
                    }
         | 
| 170 | 
            -
                    else
         | 
| 171 | 
            -
                    {
         | 
| 172 | 
            -
                        if(_coreContractCombinations[objectType][parentType] == false) {
         | 
| 173 | 
            -
                            revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
         | 
| 174 | 
            -
                        }
         | 
| 175 | 
            -
                    }
         | 
| 176 | 
            -
             | 
| 177 | 
            -
                    nftId = _register(info);
         | 
| 178 | 
            -
                }
         | 
| 179 194 |  | 
| 195 | 
            +
                /// @inheritdoc IRegistry
         | 
| 180 196 | 
             
                function registerWithCustomType(ObjectInfo memory info)
         | 
| 181 197 | 
             
                    external
         | 
| 182 198 | 
             
                    onlyRegistryService
         | 
| @@ -191,7 +207,6 @@ contract Registry is | |
| 191 207 |  | 
| 192 208 | 
             
                    if(
         | 
| 193 209 | 
             
                        parentType == PROTOCOL() ||
         | 
| 194 | 
            -
                        parentType == REGISTRY() ||
         | 
| 195 210 | 
             
                        parentType == SERVICE()
         | 
| 196 211 | 
             
                    ) {
         | 
| 197 212 | 
             
                        revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
         | 
| @@ -203,21 +218,21 @@ contract Registry is | |
| 203 218 |  | 
| 204 219 | 
             
                /// @dev earliest GIF major version 
         | 
| 205 220 | 
             
                function getInitialVersion() external view returns (VersionPart) {
         | 
| 206 | 
            -
                    return  | 
| 221 | 
            +
                    return _releaseRegistry.getInitialVersion();
         | 
| 207 222 | 
             
                }
         | 
| 208 223 |  | 
| 209 224 | 
             
                /// @dev next GIF release version to be released
         | 
| 210 225 | 
             
                function getNextVersion() external view returns (VersionPart) {
         | 
| 211 | 
            -
                    return  | 
| 226 | 
            +
                    return _releaseRegistry.getNextVersion();
         | 
| 212 227 | 
             
                }
         | 
| 213 228 |  | 
| 214 229 | 
             
                /// @dev latest active GIF release version 
         | 
| 215 230 | 
             
                function getLatestVersion() external view returns (VersionPart) { 
         | 
| 216 | 
            -
                    return  | 
| 231 | 
            +
                    return _releaseRegistry.getLatestVersion();
         | 
| 217 232 | 
             
                }
         | 
| 218 233 |  | 
| 219 234 | 
             
                function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
         | 
| 220 | 
            -
                    return  | 
| 235 | 
            +
                    return _releaseRegistry.getReleaseInfo(version);
         | 
| 221 236 | 
             
                }
         | 
| 222 237 |  | 
| 223 238 | 
             
                function getObjectCount() external view returns (uint256) {
         | 
| @@ -271,7 +286,7 @@ contract Registry is | |
| 271 286 |  | 
| 272 287 | 
             
                function isActiveRelease(VersionPart version) external view returns (bool)
         | 
| 273 288 | 
             
                {
         | 
| 274 | 
            -
                    return  | 
| 289 | 
            +
                    return _releaseRegistry.isActiveRelease(version);
         | 
| 275 290 | 
             
                }
         | 
| 276 291 |  | 
| 277 292 | 
             
                function getStakingAddress() external view returns (address staking) {
         | 
| @@ -292,12 +307,8 @@ contract Registry is | |
| 292 307 | 
             
                    service =  _service[releaseVersion][serviceDomain]; 
         | 
| 293 308 | 
             
                }
         | 
| 294 309 |  | 
| 295 | 
            -
                function  | 
| 296 | 
            -
                    return address( | 
| 297 | 
            -
                }
         | 
| 298 | 
            -
             | 
| 299 | 
            -
                function getReleaseManagerAddress() external view returns (address) {
         | 
| 300 | 
            -
                    return address(_releaseManager);
         | 
| 310 | 
            +
                function getReleaseRegistryAddress() external view returns (address) {
         | 
| 311 | 
            +
                    return address(_releaseRegistry);
         | 
| 301 312 | 
             
                }
         | 
| 302 313 |  | 
| 303 314 | 
             
                function getChainNftAddress() external view override returns (address) {
         | 
| @@ -329,7 +340,6 @@ contract Registry is | |
| 329 340 | 
             
                // Internals
         | 
| 330 341 |  | 
| 331 342 | 
             
                /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
         | 
| 332 | 
            -
                // TODO registration of precompile addresses
         | 
| 333 343 | 
             
                function _register(ObjectInfo memory info)
         | 
| 334 344 | 
             
                    internal
         | 
| 335 345 | 
             
                    returns(NftId nftId)
         | 
| @@ -516,22 +526,18 @@ contract Registry is | |
| 516 526 | 
             
                    });
         | 
| 517 527 |  | 
| 518 528 | 
             
                    _nftIdByAddress[_stakingAddress] = stakingNftId;
         | 
| 529 | 
            +
             | 
| 519 530 | 
             
                    // reverts if nftId was already minted
         | 
| 520 531 | 
             
                    _chainNft.mint(stakingOwner, stakingId);
         | 
| 521 532 | 
             
                }
         | 
| 522 533 |  | 
| 523 534 | 
             
                /// @dev defines which object - parent types relations are allowed to register
         | 
| 524 | 
            -
                 | 
| 525 | 
            -
                // 1) EACH object type MUST have only one parent type across ALL mappings
         | 
| 526 | 
            -
                // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
         | 
| 527 | 
            -
                // 3) DO NOT use REGISTRY as object type
         | 
| 528 | 
            -
                // 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
         | 
| 535 | 
            +
                /// EACH object type MUST have only one parent type across ALL mappings
         | 
| 529 536 | 
             
                function _setupValidCoreTypesAndCombinations() 
         | 
| 530 537 | 
             
                    private 
         | 
| 531 538 | 
             
                {
         | 
| 532 539 | 
             
                    _coreTypes[REGISTRY()] = true;
         | 
| 533 540 | 
             
                    _coreTypes[SERVICE()] = true;
         | 
| 534 | 
            -
                    _coreTypes[TOKEN()] = true;
         | 
| 535 541 | 
             
                    _coreTypes[INSTANCE()] = true;
         | 
| 536 542 | 
             
                    _coreTypes[PRODUCT()] = true;
         | 
| 537 543 | 
             
                    _coreTypes[POOL()] = true;
         | 
| @@ -543,28 +549,22 @@ contract Registry is | |
| 543 549 | 
             
                    _coreTypes[STAKING()] = true;
         | 
| 544 550 | 
             
                    _coreTypes[STAKE()] = true;
         | 
| 545 551 |  | 
| 546 | 
            -
                     | 
| 547 | 
            -
                    if( | 
| 548 | 
            -
                         | 
| 549 | 
            -
                        // object is registry from different chain
         | 
| 550 | 
            -
                        // parent is global registry, this contract
         | 
| 551 | 
            -
                        _coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
         | 
| 552 | 
            -
                        //_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
         | 
| 553 | 
            -
                    } else {
         | 
| 554 | 
            -
                        // we are not global registry
         | 
| 555 | 
            -
                        // object is local registry, this contract
         | 
| 556 | 
            -
                        // 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;
         | 
| 557 555 | 
             
                    }
         | 
| 556 | 
            +
             | 
| 557 | 
            +
                    // contracts with registry parent
         | 
| 558 558 | 
             
                    _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
         | 
| 559 | 
            -
                    _coreContractCombinations[TOKEN()][REGISTRY()] = true;
         | 
| 560 | 
            -
                    //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
         | 
| 561 559 | 
             
                    _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
         | 
| 562 560 |  | 
| 561 | 
            +
                    // components with instance parent
         | 
| 563 562 | 
             
                    _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
         | 
| 564 563 | 
             
                    _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
         | 
| 565 564 | 
             
                    _coreContractCombinations[ORACLE()][INSTANCE()] = true;
         | 
| 566 565 | 
             
                    _coreContractCombinations[POOL()][INSTANCE()] = true;
         | 
| 567 566 |  | 
| 567 | 
            +
                    // objects with coponent parents
         | 
| 568 568 | 
             
                    _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
         | 
| 569 569 | 
             
                    _coreObjectCombinations[POLICY()][PRODUCT()] = true;
         | 
| 570 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,27 +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 | 
            -
                     | 
| 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);
         | 
| 231 231 |  | 
| 232 | 
            -
                     | 
| 232 | 
            +
                    _grantRoleToAccount(GIF_ADMIN_ROLE(), gifAdmin);
         | 
| 233 233 | 
             
                }
         | 
| 234 234 |  | 
| 235 235 | 
             
                function _setupGifManagerRole(address gifManager) private {
         | 
| 236 | 
            -
             | 
| 237 | 
            -
                     | 
| 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}));
         | 
| 238 244 |  | 
| 239 245 | 
             
                    // for TokenRegistry
         | 
| 240 | 
            -
                     | 
| 241 | 
            -
                    functions = new  | 
| 246 | 
            +
                    FunctionInfo[] memory functions;
         | 
| 247 | 
            +
                    functions = new FunctionInfo[](5);
         | 
| 242 248 | 
             
                    functions[0] = toFunction(TokenRegistry.registerToken.selector, "registerToken");
         | 
| 243 249 | 
             
                    functions[1] = toFunction(TokenRegistry.registerRemoteToken.selector, "registerRemoteToken");
         | 
| 244 250 | 
             
                    functions[2] = toFunction(TokenRegistry.setActive.selector, "setActive");
         | 
| @@ -247,42 +253,55 @@ contract RegistryAdmin is | |
| 247 253 | 
             
                    functions[4] = toFunction(TokenRegistry.setActiveWithVersionCheck.selector, "setActiveWithVersionCheck");
         | 
| 248 254 | 
             
                    _authorizeTargetFunctions(_tokenRegistry, GIF_MANAGER_ROLE(), functions);
         | 
| 249 255 |  | 
| 250 | 
            -
                    // for  | 
| 251 | 
            -
                    functions = new  | 
| 252 | 
            -
                    functions[0] = toFunction( | 
| 253 | 
            -
                    functions[1] = toFunction( | 
| 254 | 
            -
                    _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);
         | 
| 255 261 |  | 
| 256 | 
            -
                     | 
| 262 | 
            +
                    _grantRoleToAccount(GIF_MANAGER_ROLE(), gifManager);
         | 
| 257 263 | 
             
                }
         | 
| 258 264 |  | 
| 259 265 |  | 
| 260 | 
            -
                function  | 
| 261 | 
            -
                    _createTarget(_releaseManager, RELEASE_MANAGER_TARGET_NAME);
         | 
| 266 | 
            +
                function _setupReleaseRegistry() private {
         | 
| 262 267 |  | 
| 263 | 
            -
                     | 
| 264 | 
            -
                    _createRole(releaseManagerRoleId, ADMIN_ROLE(), RELEASE_MANAGER_TARGET_NAME, 1, true);
         | 
| 265 | 
            -
                    _grantRoleToAccount(releaseManagerRoleId, _releaseManager);
         | 
| 268 | 
            +
                    _createTarget(_releaseRegistry, RELEASE_REGISTRY_TARGET_NAME, true, false);
         | 
| 266 269 |  | 
| 267 | 
            -
                     | 
| 268 | 
            -
                     | 
| 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);
         | 
| 269 281 | 
             
                    functions[0] = toFunction(RegistryAdmin.authorizeService.selector, "authorizeService");
         | 
| 270 282 | 
             
                    functions[1] = toFunction(RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
         | 
| 271 | 
            -
                    _authorizeTargetFunctions(address(this),  | 
| 283 | 
            +
                    _authorizeTargetFunctions(address(this), releaseRegistryRoleId, functions);
         | 
| 284 | 
            +
             | 
| 285 | 
            +
                    _grantRoleToAccount(releaseRegistryRoleId, _releaseRegistry);
         | 
| 272 286 | 
             
                }
         | 
| 273 287 |  | 
| 274 288 |  | 
| 275 289 | 
             
                function _setupStaking() private {
         | 
| 276 | 
            -
                    _createTarget(_staking, STAKING_TARGET_NAME);
         | 
| 277 | 
            -
                    _createTarget(_stakingStore, STAKING_STORE_TARGET_NAME);
         | 
| 278 | 
            -
             | 
| 290 | 
            +
                    _createTarget(_staking, STAKING_TARGET_NAME, true, false);
         | 
| 291 | 
            +
                    _createTarget(_stakingStore, STAKING_STORE_TARGET_NAME, true, false);
         | 
| 279 292 |  | 
| 280 293 | 
             
                    // staking function authorization for staking service
         | 
| 281 294 | 
             
                    RoleId stakingServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(STAKING());
         | 
| 282 | 
            -
                    _createRole( | 
| 283 | 
            -
             | 
| 284 | 
            -
             | 
| 285 | 
            -
             | 
| 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);
         | 
| 286 305 | 
             
                    functions[0] = toFunction(IStaking.registerTarget.selector, "registerTarget");
         | 
| 287 306 | 
             
                    functions[1] = toFunction(IStaking.setLockingPeriod.selector, "setLockingPeriod");
         | 
| 288 307 | 
             
                    functions[2] = toFunction(IStaking.setRewardRate.selector, "setRewardRate");
         | 
| @@ -300,20 +319,31 @@ contract RegistryAdmin is | |
| 300 319 |  | 
| 301 320 | 
             
                    // staking function authorization for pool service
         | 
| 302 321 | 
             
                    RoleId poolServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(POOL());
         | 
| 303 | 
            -
                    _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}));
         | 
| 304 329 |  | 
| 305 330 | 
             
                    // staking function authorizations
         | 
| 306 | 
            -
                    functions = new  | 
| 331 | 
            +
                    functions = new FunctionInfo[](2);
         | 
| 307 332 | 
             
                    functions[0] = toFunction(IStaking.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
         | 
| 308 333 | 
             
                    functions[1] = toFunction(IStaking.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
         | 
| 309 334 | 
             
                    _authorizeTargetFunctions(_staking, poolServiceRoleId, functions);
         | 
| 310 335 |  | 
| 311 336 | 
             
                    // staking store function authorizations
         | 
| 312 337 | 
             
                    RoleId stakingRoleId = RoleIdLib.roleForType(STAKING());
         | 
| 313 | 
            -
                    _createRole( | 
| 314 | 
            -
             | 
| 315 | 
            -
             | 
| 316 | 
            -
             | 
| 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);
         | 
| 317 347 | 
             
                    functions[0] = toFunction(StakingStore.setStakingRate.selector, "setStakingRate");
         | 
| 318 348 | 
             
                    functions[1] = toFunction(StakingStore.createTarget.selector, "createTarget");
         | 
| 319 349 | 
             
                    functions[2] = toFunction(StakingStore.updateTarget.selector, "updateTarget");
         | 
| @@ -329,5 +359,7 @@ contract RegistryAdmin is | |
| 329 359 | 
             
                    functions[12] = toFunction(StakingStore.claimUpTo.selector, "claimUpTo");
         | 
| 330 360 | 
             
                    functions[13] = toFunction(StakingStore.unstakeUpTo.selector, "unstakeUpTo");
         | 
| 331 361 | 
             
                    _authorizeTargetFunctions(_stakingStore, stakingRoleId, functions);
         | 
| 362 | 
            +
             | 
| 363 | 
            +
                    _grantRoleToAccount(stakingRoleId, _staking);
         | 
| 332 364 | 
             
                }
         | 
| 333 365 | 
             
            }
         |