@etherisc/gif-next 0.0.2-f18fb8b-243 → 0.0.2-f1e0c66-773
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 +14 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +69 -26
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +237 -74
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +66 -38
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +102 -0
- 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 -6
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -5
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +9 -9
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +73 -73
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +54 -59
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +15 -15
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +6 -6
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +66 -76
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +46 -16
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +30 -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 +30 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +43 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +221 -55
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +55 -23
- 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 -0
- 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 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +2 -2
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +2 -2
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +2 -2
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +2 -2
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +2 -2
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +2 -2
- 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 +19 -0
- 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 +26 -26
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +7 -2
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +19 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +2 -2
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +2 -2
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +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 +95 -23
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +88 -88
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +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 +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +271 -62
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +60 -32
- 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 +19 -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/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/{ERC165.sol/ERC165.json → InitializableERC165.sol/InitializableERC165.json} +4 -4
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -0
- 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/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- 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 +2 -2
- 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 +12 -2
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +36 -36
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +19 -19
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +2 -2
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +2 -2
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +20 -15
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +7 -2
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/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 +39 -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/{shared → upgradeability}/ProxyManager.sol/ProxyManager.json +3 -3
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +22 -10
- package/contracts/distribution/DistributionService.sol +61 -26
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +8 -4
- package/contracts/distribution/IDistributionService.sol +12 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +5 -5
- package/contracts/instance/IInstanceService.sol +5 -5
- package/contracts/instance/Instance.sol +4 -4
- package/contracts/instance/InstanceAdmin.sol +2 -2
- package/contracts/instance/InstanceAuthorizationV3.sol +13 -11
- package/contracts/instance/InstanceService.sol +10 -10
- package/contracts/instance/InstanceServiceManager.sol +2 -6
- package/contracts/instance/InstanceStore.sol +2 -1
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
- package/contracts/instance/module/IComponents.sol +0 -1
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +15 -6
- package/contracts/oracle/OracleServiceManager.sol +2 -5
- package/contracts/pool/BasicPoolAuthorization.sol +6 -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 -0
- package/contracts/pool/Pool.sol +18 -1
- package/contracts/pool/PoolService.sol +11 -29
- 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 +3 -33
- package/contracts/product/BasicProductAuthorization.sol +3 -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 +1 -0
- 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 +10 -1
- package/contracts/product/ProductService.sol +7 -32
- package/contracts/product/ProductServiceManager.sol +2 -5
- package/contracts/registry/IRegistry.sol +26 -13
- package/contracts/registry/IRegistryService.sol +6 -6
- package/contracts/registry/Registry.sol +80 -82
- package/contracts/registry/RegistryAdmin.sol +23 -23
- package/contracts/registry/RegistryService.sol +4 -18
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +48 -50
- package/contracts/registry/ServiceAuthorizationV3.sol +5 -5
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +13 -14
- package/contracts/shared/ComponentService.sol +82 -12
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +6 -0
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +21 -0
- 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/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/Amount.sol +12 -5
- package/contracts/type/ObjectType.sol +3 -7
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/UFixed.sol +29 -10
- 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 +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- 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/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- /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  | 
| 68 | 
            +
                // 2). Keep onlyReleaseRegistry modifier
         | 
| 67 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,8 +307,8 @@ contract Registry is | |
| 298 307 | 
             
                    service =  _service[releaseVersion][serviceDomain]; 
         | 
| 299 308 | 
             
                }
         | 
| 300 309 |  | 
| 301 | 
            -
                function  | 
| 302 | 
            -
                    return address( | 
| 310 | 
            +
                function getReleaseRegistryAddress() external view returns (address) {
         | 
| 311 | 
            +
                    return address(_releaseRegistry);
         | 
| 303 312 | 
             
                }
         | 
| 304 313 |  | 
| 305 314 | 
             
                function getChainNftAddress() external view override returns (address) {
         | 
| @@ -331,7 +340,6 @@ contract Registry is | |
| 331 340 | 
             
                // Internals
         | 
| 332 341 |  | 
| 333 342 | 
             
                /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
         | 
| 334 | 
            -
                // TODO registration of precompile addresses
         | 
| 335 343 | 
             
                function _register(ObjectInfo memory info)
         | 
| 336 344 | 
             
                    internal
         | 
| 337 345 | 
             
                    returns(NftId nftId)
         | 
| @@ -518,22 +526,18 @@ contract Registry is | |
| 518 526 | 
             
                    });
         | 
| 519 527 |  | 
| 520 528 | 
             
                    _nftIdByAddress[_stakingAddress] = stakingNftId;
         | 
| 529 | 
            +
             | 
| 521 530 | 
             
                    // reverts if nftId was already minted
         | 
| 522 531 | 
             
                    _chainNft.mint(stakingOwner, stakingId);
         | 
| 523 532 | 
             
                }
         | 
| 524 533 |  | 
| 525 534 | 
             
                /// @dev defines which object - parent types relations are allowed to register
         | 
| 526 | 
            -
                 | 
| 527 | 
            -
                // 1) EACH object type MUST have only one parent type across ALL mappings
         | 
| 528 | 
            -
                // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
         | 
| 529 | 
            -
                // 3) DO NOT use REGISTRY as object type
         | 
| 530 | 
            -
                // 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
         | 
| 535 | 
            +
                /// EACH object type MUST have only one parent type across ALL mappings
         | 
| 531 536 | 
             
                function _setupValidCoreTypesAndCombinations() 
         | 
| 532 537 | 
             
                    private 
         | 
| 533 538 | 
             
                {
         | 
| 534 539 | 
             
                    _coreTypes[REGISTRY()] = true;
         | 
| 535 540 | 
             
                    _coreTypes[SERVICE()] = true;
         | 
| 536 | 
            -
                    _coreTypes[TOKEN()] = true;
         | 
| 537 541 | 
             
                    _coreTypes[INSTANCE()] = true;
         | 
| 538 542 | 
             
                    _coreTypes[PRODUCT()] = true;
         | 
| 539 543 | 
             
                    _coreTypes[POOL()] = true;
         | 
| @@ -545,28 +549,22 @@ contract Registry is | |
| 545 549 | 
             
                    _coreTypes[STAKING()] = true;
         | 
| 546 550 | 
             
                    _coreTypes[STAKE()] = true;
         | 
| 547 551 |  | 
| 548 | 
            -
                     | 
| 549 | 
            -
                    if( | 
| 550 | 
            -
                         | 
| 551 | 
            -
                        // object is registry from different chain
         | 
| 552 | 
            -
                        // parent is global registry, this contract
         | 
| 553 | 
            -
                        _coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
         | 
| 554 | 
            -
                        //_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
         | 
| 555 | 
            -
                    } else {
         | 
| 556 | 
            -
                        // we are not global registry
         | 
| 557 | 
            -
                        // object is local registry, this contract
         | 
| 558 | 
            -
                        // 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;
         | 
| 559 555 | 
             
                    }
         | 
| 556 | 
            +
             | 
| 557 | 
            +
                    // contracts with registry parent
         | 
| 560 558 | 
             
                    _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
         | 
| 561 | 
            -
                    _coreContractCombinations[TOKEN()][REGISTRY()] = true;
         | 
| 562 | 
            -
                    //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
         | 
| 563 559 | 
             
                    _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
         | 
| 564 560 |  | 
| 561 | 
            +
                    // components with instance parent
         | 
| 565 562 | 
             
                    _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
         | 
| 566 563 | 
             
                    _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
         | 
| 567 564 | 
             
                    _coreContractCombinations[ORACLE()][INSTANCE()] = true;
         | 
| 568 565 | 
             
                    _coreContractCombinations[POOL()][INSTANCE()] = true;
         | 
| 569 566 |  | 
| 567 | 
            +
                    // objects with coponent parents
         | 
| 570 568 | 
             
                    _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
         | 
| 571 569 | 
             
                    _coreObjectCombinations[POLICY()][PRODUCT()] = true;
         | 
| 572 570 | 
             
                    _coreObjectCombinations[BUNDLE()][POOL()] = true;
         | 
| @@ -8,7 +8,7 @@ import {IService} from "../shared/IService.sol"; | |
| 8 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";
         | 
| @@ -39,11 +39,11 @@ contract RegistryAdmin is | |
| 39 39 | 
             
                string public constant GIF_ADMIN_ROLE_NAME = "GifAdminRole";
         | 
| 40 40 | 
             
                string public constant GIF_MANAGER_ROLE_NAME = "GifManagerRole";
         | 
| 41 41 | 
             
                string public constant POOL_SERVICE_ROLE_NAME = "PoolServiceRole";
         | 
| 42 | 
            -
                string public constant  | 
| 42 | 
            +
                string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistryRole";
         | 
| 43 43 | 
             
                string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
         | 
| 44 44 | 
             
                string public constant STAKING_ROLE_NAME = "StakingRole";
         | 
| 45 45 |  | 
| 46 | 
            -
                string public constant  | 
| 46 | 
            +
                string public constant RELEASE_REGISTRY_TARGET_NAME = "ReleaseRegistry";
         | 
| 47 47 | 
             
                string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
         | 
| 48 48 | 
             
                string public constant STAKING_TARGET_NAME = "Staking";
         | 
| 49 49 | 
             
                string public constant STAKING_STORE_TARGET_NAME = "StakingStore";
         | 
| @@ -52,7 +52,7 @@ contract RegistryAdmin is | |
| 52 52 |  | 
| 53 53 | 
             
                mapping(address service => VersionPart majorVersion) private _ServiceRelease;
         | 
| 54 54 |  | 
| 55 | 
            -
                address private  | 
| 55 | 
            +
                address private _releaseRegistry;
         | 
| 56 56 | 
             
                address private _tokenRegistry;
         | 
| 57 57 | 
             
                address private _staking;
         | 
| 58 58 | 
             
                address private _stakingStore;
         | 
| @@ -71,7 +71,7 @@ contract RegistryAdmin is | |
| 71 71 | 
             
                    if (_setupCompleted) { revert ErrorRegistryAdminIsAlreadySetUp(); } 
         | 
| 72 72 | 
             
                    else { _setupCompleted = true; }
         | 
| 73 73 |  | 
| 74 | 
            -
                     | 
| 74 | 
            +
                    _releaseRegistry = registry.getReleaseRegistryAddress();
         | 
| 75 75 | 
             
                    _tokenRegistry = registry.getTokenRegistryAddress();
         | 
| 76 76 | 
             
                    _staking = registry.getStakingAddress();
         | 
| 77 77 | 
             
                    _stakingStore = address(
         | 
| @@ -83,7 +83,7 @@ contract RegistryAdmin is | |
| 83 83 | 
             
                    _setupGifAdminRole(gifAdmin);
         | 
| 84 84 | 
             
                    _setupGifManagerRole(gifManager);
         | 
| 85 85 |  | 
| 86 | 
            -
                     | 
| 86 | 
            +
                    _setupReleaseRegistry();
         | 
| 87 87 | 
             
                    _setupStaking();
         | 
| 88 88 | 
             
                }
         | 
| 89 89 |  | 
| @@ -220,14 +220,14 @@ contract RegistryAdmin is | |
| 220 220 | 
             
                            maxMemberCount: 2, // TODO decide on max member count
         | 
| 221 221 | 
             
                            name: GIF_ADMIN_ROLE_NAME}));
         | 
| 222 222 |  | 
| 223 | 
            -
                    // for  | 
| 223 | 
            +
                    // for ReleaseRegistry
         | 
| 224 224 | 
             
                    FunctionInfo[] memory functions;
         | 
| 225 225 | 
             
                    functions = new FunctionInfo[](4);
         | 
| 226 | 
            -
                    functions[0] = toFunction( | 
| 227 | 
            -
                    functions[1] = toFunction( | 
| 228 | 
            -
                    functions[2] = toFunction( | 
| 229 | 
            -
                    functions[3] = toFunction( | 
| 230 | 
            -
                    _authorizeTargetFunctions( | 
| 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 | 
             
                }
         | 
| @@ -253,36 +253,36 @@ contract RegistryAdmin is | |
| 253 253 | 
             
                    functions[4] = toFunction(TokenRegistry.setActiveWithVersionCheck.selector, "setActiveWithVersionCheck");
         | 
| 254 254 | 
             
                    _authorizeTargetFunctions(_tokenRegistry, GIF_MANAGER_ROLE(), functions);
         | 
| 255 255 |  | 
| 256 | 
            -
                    // for  | 
| 256 | 
            +
                    // for ReleaseRegistry
         | 
| 257 257 | 
             
                    functions = new FunctionInfo[](2);
         | 
| 258 | 
            -
                    functions[0] = toFunction( | 
| 259 | 
            -
                    functions[1] = toFunction( | 
| 260 | 
            -
                    _authorizeTargetFunctions( | 
| 258 | 
            +
                    functions[0] = toFunction(ReleaseRegistry.prepareNextRelease.selector, "prepareNextRelease");
         | 
| 259 | 
            +
                    functions[1] = toFunction(ReleaseRegistry.registerService.selector, "registerService");
         | 
| 260 | 
            +
                    _authorizeTargetFunctions(_releaseRegistry, GIF_MANAGER_ROLE(), functions);
         | 
| 261 261 |  | 
| 262 262 | 
             
                    _grantRoleToAccount(GIF_MANAGER_ROLE(), gifManager);
         | 
| 263 263 | 
             
                }
         | 
| 264 264 |  | 
| 265 265 |  | 
| 266 | 
            -
                function  | 
| 266 | 
            +
                function _setupReleaseRegistry() private {
         | 
| 267 267 |  | 
| 268 | 
            -
                    _createTarget( | 
| 268 | 
            +
                    _createTarget(_releaseRegistry, RELEASE_REGISTRY_TARGET_NAME, true, false);
         | 
| 269 269 |  | 
| 270 | 
            -
                    RoleId  | 
| 270 | 
            +
                    RoleId releaseRegistryRoleId = RoleIdLib.roleForType(RELEASE());
         | 
| 271 271 | 
             
                    _createRole(
         | 
| 272 | 
            -
                         | 
| 272 | 
            +
                        releaseRegistryRoleId, 
         | 
| 273 273 | 
             
                        toRole({
         | 
| 274 274 | 
             
                            adminRoleId: ADMIN_ROLE(),
         | 
| 275 275 | 
             
                            roleType: RoleType.Contract,
         | 
| 276 276 | 
             
                            maxMemberCount: 1,
         | 
| 277 | 
            -
                            name:  | 
| 277 | 
            +
                            name: RELEASE_REGISTRY_ROLE_NAME}));
         | 
| 278 278 |  | 
| 279 279 | 
             
                    FunctionInfo[] memory functions;
         | 
| 280 280 | 
             
                    functions = new FunctionInfo[](2);
         | 
| 281 281 | 
             
                    functions[0] = toFunction(RegistryAdmin.authorizeService.selector, "authorizeService");
         | 
| 282 282 | 
             
                    functions[1] = toFunction(RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
         | 
| 283 | 
            -
                    _authorizeTargetFunctions(address(this),  | 
| 283 | 
            +
                    _authorizeTargetFunctions(address(this), releaseRegistryRoleId, functions);
         | 
| 284 284 |  | 
| 285 | 
            -
                    _grantRoleToAccount( | 
| 285 | 
            +
                    _grantRoleToAccount(releaseRegistryRoleId, _releaseRegistry);
         | 
| 286 286 | 
             
                }
         | 
| 287 287 |  | 
| 288 288 |  | 
| @@ -1,32 +1,18 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
         | 
| 5 | 
            -
            // import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            import {IRegistry} from "./IRegistry.sol";
         | 
| 8 | 
            -
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 9 | 
            -
             | 
| 10 4 | 
             
            import {IComponent} from "../../contracts/shared/IComponent.sol";
         | 
| 5 | 
            +
            import {IDistributionComponent} from "../../contracts/distribution/IDistributionComponent.sol";
         | 
| 6 | 
            +
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 11 7 | 
             
            import {IPoolComponent} from "../../contracts/pool/IPoolComponent.sol";
         | 
| 12 8 | 
             
            import {IProductComponent} from "../../contracts/product/IProductComponent.sol";
         | 
| 13 | 
            -
            import {IDistributionComponent} from "../../contracts/distribution/IDistributionComponent.sol";
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            import {IVersionable} from "../../contracts/shared/IVersionable.sol";
         | 
| 16 | 
            -
            import {Versionable} from "../../contracts/shared/Versionable.sol";
         | 
| 17 9 | 
             
            import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
         | 
| 10 | 
            +
            import {IRegistry} from "./IRegistry.sol";
         | 
| 11 | 
            +
            import {IRegistryService} from "./IRegistryService.sol";
         | 
| 18 12 |  | 
| 19 | 
            -
            import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/type/RoleId.sol";
         | 
| 20 13 | 
             
            import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE} from "../../contracts/type/ObjectType.sol";
         | 
| 21 | 
            -
            import {StateId, ACTIVE, PAUSED} from "../../contracts/type/StateId.sol";
         | 
| 22 14 | 
             
            import {NftId, NftIdLib} from "../../contracts/type/NftId.sol";
         | 
| 23 | 
            -
            import {Fee, FeeLib} from "../../contracts/type/Fee.sol";
         | 
| 24 | 
            -
            import {Version, VersionPart, VersionLib} from "../../contracts/type/Version.sol";
         | 
| 25 | 
            -
             | 
| 26 15 | 
             
            import {Service} from "../shared/Service.sol";
         | 
| 27 | 
            -
            import {IService} from "../shared/IService.sol";
         | 
| 28 | 
            -
            import {IRegistryService} from "./IRegistryService.sol";
         | 
| 29 | 
            -
            import {Registry} from "./Registry.sol";
         | 
| 30 16 |  | 
| 31 17 | 
             
            contract RegistryService is
         | 
| 32 18 | 
             
                Service,
         | 
| @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IVersionable} from "../ | 
| 5 | 
            -
            import {ProxyManager} from "../ | 
| 4 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 5 | 
            +
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         | 
| 6 6 | 
             
            import {RegistryService} from "./RegistryService.sol";
         | 
| 7 7 |  | 
| 8 8 | 
             
            contract RegistryServiceManager is
         |