@etherisc/gif-next 0.0.2-71cf987-554 → 0.0.2-7202758-806
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -6
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +75 -38
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +114 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +37 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -186
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +154 -108
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -53
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +101 -164
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +258 -290
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +137 -129
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +630 -317
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +94 -47
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +131 -56
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +197 -107
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +478 -197
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +103 -81
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -31
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +410 -370
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +44 -58
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +128 -226
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -74
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +46 -60
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +104 -78
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +175 -174
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +64 -38
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +251 -144
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +79 -57
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +143 -3
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -22
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +158 -140
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +73 -47
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +163 -175
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +88 -73
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -24
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +28 -4
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +66 -42
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +153 -91
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +197 -98
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +110 -86
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +250 -421
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +71 -61
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +134 -248
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +27 -3
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +58 -46
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +73 -50
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +46 -24
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +3 -3
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +86 -28
- package/contracts/authorization/AccessManagerCloneable.sol +85 -16
- package/contracts/authorization/IAccessAdmin.sol +6 -2
- package/contracts/distribution/BasicDistribution.sol +6 -6
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +32 -30
- package/contracts/distribution/DistributionService.sol +34 -32
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +22 -5
- package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
- package/contracts/examples/fire/FireProduct.sol +31 -8
- package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +40 -21
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +8 -8
- package/contracts/instance/IInstanceService.sol +9 -9
- package/contracts/instance/Instance.sol +20 -17
- package/contracts/instance/InstanceAdmin.sol +57 -26
- package/contracts/instance/InstanceAuthorizationV3.sol +45 -14
- package/contracts/instance/InstanceReader.sol +108 -7
- package/contracts/instance/InstanceService.sol +71 -79
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +4 -4
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/Oracle.sol +1 -1
- package/contracts/oracle/OracleService.sol +92 -73
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +24 -3
- package/contracts/pool/BasicPoolAuthorization.sol +12 -1
- package/contracts/pool/BundleService.sol +26 -94
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +2 -24
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +12 -26
- package/contracts/pool/Pool.sol +112 -102
- package/contracts/pool/PoolService.sol +171 -100
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +15 -15
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +9 -11
- package/contracts/product/BasicProductAuthorization.sol +1 -2
- package/contracts/product/ClaimService.sol +147 -51
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +13 -0
- package/contracts/product/IPolicyService.sol +17 -7
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/PolicyService.sol +244 -199
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +23 -19
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +47 -39
- package/contracts/product/RiskService.sol +78 -23
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +8 -17
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/Registry.sol +12 -3
- package/contracts/registry/RegistryAdmin.sol +17 -6
- package/contracts/registry/RegistryService.sol +3 -3
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +34 -37
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +88 -82
- package/contracts/registry/ServiceAuthorizationV3.sol +88 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +59 -98
- package/contracts/shared/ComponentService.sol +206 -251
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +15 -13
- package/contracts/shared/ContractLib.sol +223 -9
- package/contracts/shared/IComponent.sol +4 -17
- package/contracts/shared/IComponentService.sol +20 -24
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/IRegisterable.sol +15 -4
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +2 -18
- package/contracts/shared/NftOwnable.sol +4 -4
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +44 -20
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +316 -66
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +9 -4
- package/contracts/staking/Staking.sol +62 -33
- package/contracts/staking/StakingService.sol +41 -9
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +32 -18
- package/contracts/type/RiskId.sol +23 -6
- package/contracts/type/RoleId.sol +2 -2
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +1 -1
- package/package.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
@@ -11,6 +11,7 @@ import {IStaking} from "../staking/IStaking.sol";
|
|
11
11
|
import {ObjectType, ObjectTypeLib, ALL, REGISTRY, STAKING, POOL, RELEASE} from "../type/ObjectType.sol";
|
12
12
|
import {ReleaseRegistry} from "./ReleaseRegistry.sol";
|
13
13
|
import {RoleId, RoleIdLib, ADMIN_ROLE, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
14
|
+
import {Staking} from "../staking/Staking.sol";
|
14
15
|
import {StakingStore} from "../staking/StakingStore.sol";
|
15
16
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
16
17
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
@@ -30,7 +31,9 @@ import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
|
30
31
|
- responsible for creation, activation and locking/unlocking of releases
|
31
32
|
*/
|
32
33
|
|
33
|
-
/// @dev
|
34
|
+
/// @dev The RegistryAdmin contract implements the central authorization for the GIF core contracts.
|
35
|
+
/// These are the release independent registry and staking contracts and their respective helper contracts.
|
36
|
+
/// The RegistryAdmin also manages the access from service contracts to the GIF core contracts
|
34
37
|
contract RegistryAdmin is
|
35
38
|
AccessAdmin
|
36
39
|
{
|
@@ -50,6 +53,7 @@ contract RegistryAdmin is
|
|
50
53
|
string public constant REGISTRY_TARGET_NAME = "Registry";
|
51
54
|
string public constant RELEASE_REGISTRY_TARGET_NAME = "ReleaseRegistry";
|
52
55
|
string public constant STAKING_TARGET_NAME = "Staking";
|
56
|
+
string public constant STAKING_TH_TARGET_NAME = "StakingTH";
|
53
57
|
string public constant STAKING_STORE_TARGET_NAME = "StakingStore";
|
54
58
|
string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
|
55
59
|
string public constant TOKEN_HANDLER_TARGET_NAME = "TokenHandler";
|
@@ -71,12 +75,16 @@ contract RegistryAdmin is
|
|
71
75
|
address gifAdmin,
|
72
76
|
address gifManager
|
73
77
|
)
|
74
|
-
|
78
|
+
public
|
79
|
+
virtual
|
75
80
|
reinitializer(type(uint8).max)
|
76
81
|
onlyDeployer()
|
77
82
|
{
|
78
83
|
AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
|
79
|
-
accessManager.completeSetup(
|
84
|
+
accessManager.completeSetup(
|
85
|
+
address(registry),
|
86
|
+
VersionPartLib.toVersionPart(type(uint8).max),
|
87
|
+
false);
|
80
88
|
|
81
89
|
_registry = address(registry);
|
82
90
|
_releaseRegistry = registry.getReleaseRegistryAddress();
|
@@ -298,7 +306,7 @@ contract RegistryAdmin is
|
|
298
306
|
name: STAKING_SERVICE_ROLE_NAME}));
|
299
307
|
|
300
308
|
// grant permissions to the staking service role for staking contract
|
301
|
-
functions = new FunctionInfo[](
|
309
|
+
functions = new FunctionInfo[](11);
|
302
310
|
functions[0] = toFunction(IStaking.registerTarget.selector, "registerTarget");
|
303
311
|
functions[1] = toFunction(IStaking.setLockingPeriod.selector, "setLockingPeriod");
|
304
312
|
functions[2] = toFunction(IStaking.setRewardRate.selector, "setRewardRate");
|
@@ -310,8 +318,6 @@ contract RegistryAdmin is
|
|
310
318
|
functions[8] = toFunction(IStaking.restake.selector, "restake");
|
311
319
|
functions[9] = toFunction(IStaking.updateRewards.selector, "updateRewards");
|
312
320
|
functions[10] = toFunction(IStaking.claimRewards.selector, "claimRewards");
|
313
|
-
functions[11] = toFunction(IStaking.collectDipAmount.selector, "collectDipAmount");
|
314
|
-
functions[12] = toFunction(IStaking.transferDipAmount.selector, "transferDipAmount");
|
315
321
|
_authorizeTargetFunctions(_staking, stakingServiceRoleId, functions);
|
316
322
|
|
317
323
|
// create pool service role
|
@@ -329,5 +335,10 @@ contract RegistryAdmin is
|
|
329
335
|
functions[0] = toFunction(IStaking.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
|
330
336
|
functions[1] = toFunction(IStaking.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
|
331
337
|
_authorizeTargetFunctions(_staking, poolServiceRoleId, functions);
|
338
|
+
|
339
|
+
// grant permissions to public role for staking contract
|
340
|
+
functions = new FunctionInfo[](1);
|
341
|
+
functions[0] = toFunction(Staking.approveTokenHandler.selector, "approveTokenHandler");
|
342
|
+
_authorizeTargetFunctions(_staking, PUBLIC_ROLE(), functions);
|
332
343
|
}
|
333
344
|
}
|
@@ -33,11 +33,11 @@ contract RegistryService is
|
|
33
33
|
initializer()
|
34
34
|
{
|
35
35
|
(
|
36
|
-
address
|
37
|
-
address
|
36
|
+
address authority,
|
37
|
+
address registry
|
38
38
|
) = abi.decode(data, (address, address));
|
39
39
|
|
40
|
-
|
40
|
+
__Service_init(authority, registry, owner);
|
41
41
|
_registerInterface(type(IRegistryService).interfaceId);
|
42
42
|
}
|
43
43
|
|
@@ -31,7 +31,7 @@ contract RegistryServiceManager is
|
|
31
31
|
}
|
32
32
|
|
33
33
|
RegistryService srv = new RegistryService{ salt: salt }();
|
34
|
-
bytes memory data = abi.encode(
|
34
|
+
bytes memory data = abi.encode(authority, registry);
|
35
35
|
IVersionable versionable = initialize(
|
36
36
|
registry,
|
37
37
|
address(srv),
|
@@ -2,22 +2,26 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {AccessAdmin} from "../authorization/AccessAdmin.sol";
|
5
|
+
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
5
6
|
import {IAccess} from "../authorization/IAccess.sol";
|
6
|
-
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
7
7
|
import {IService} from "../shared/IService.sol";
|
8
8
|
import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
|
9
|
-
import {ObjectType, ObjectTypeLib, ALL
|
9
|
+
import {ObjectType, ObjectTypeLib, ALL} from "../type/ObjectType.sol";
|
10
10
|
import {RoleId, RoleIdLib, ADMIN_ROLE, RELEASE_REGISTRY_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
11
|
-
import {VersionPart
|
12
|
-
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
13
|
-
|
11
|
+
import {VersionPart} from "../type/Version.sol";
|
14
12
|
|
13
|
+
/// @dev The ReleaseAdmin contract implements the central authorization for the services of a specific release.
|
14
|
+
/// There is one ReleaseAdmin contract per major GIF release.
|
15
|
+
/// Locking/unlocking of all services of a release is implemented in function setReleaseLocked.
|
15
16
|
contract ReleaseAdmin is
|
16
17
|
AccessAdmin
|
17
18
|
{
|
19
|
+
event LogReleaseAdminReleaseLockChanged(VersionPart release, bool locked);
|
20
|
+
event LogReleaseAdminServiceLockChanged(VersionPart release, address service, bool locked);
|
21
|
+
|
18
22
|
error ErrorReleaseAdminCallerNotReleaseRegistry(address caller);
|
19
23
|
error ErrorReleaseAdminNotService(address notService);
|
20
|
-
error
|
24
|
+
error ErrorReleaseAdminReleaseLockAlreadySetTo(bool locked);
|
21
25
|
|
22
26
|
/// @dev release core roles
|
23
27
|
string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistryRole";
|
@@ -33,6 +37,7 @@ contract ReleaseAdmin is
|
|
33
37
|
}
|
34
38
|
_;
|
35
39
|
}
|
40
|
+
|
36
41
|
/// @dev Only used for master release admin.
|
37
42
|
/// Contracts created via constructor come with disabled initializers.
|
38
43
|
constructor() {
|
@@ -41,15 +46,17 @@ contract ReleaseAdmin is
|
|
41
46
|
}
|
42
47
|
|
43
48
|
function completeSetup(
|
44
|
-
address registry,
|
49
|
+
address registry,
|
45
50
|
address releaseRegistry,
|
46
|
-
VersionPart
|
51
|
+
VersionPart release
|
47
52
|
)
|
48
53
|
external
|
49
|
-
reinitializer(uint64(
|
54
|
+
reinitializer(uint64(release.toInt()))
|
50
55
|
{
|
51
|
-
AccessManagerCloneable
|
52
|
-
|
56
|
+
AccessManagerCloneable(
|
57
|
+
authority()).completeSetup(
|
58
|
+
registry,
|
59
|
+
release);
|
53
60
|
|
54
61
|
_setupReleaseRegistry(releaseRegistry);
|
55
62
|
}
|
@@ -78,7 +85,16 @@ contract ReleaseAdmin is
|
|
78
85
|
external
|
79
86
|
onlyReleaseRegistry()
|
80
87
|
{
|
81
|
-
|
88
|
+
// checks
|
89
|
+
AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
|
90
|
+
if(accessManager.isLocked() == locked) {
|
91
|
+
revert ErrorReleaseAdminReleaseLockAlreadySetTo(locked);
|
92
|
+
}
|
93
|
+
|
94
|
+
// effects
|
95
|
+
accessManager.setLocked(locked);
|
96
|
+
|
97
|
+
emit LogReleaseAdminReleaseLockChanged(getRelease(), locked);
|
82
98
|
}
|
83
99
|
|
84
100
|
/// @dev Lock/unlock specific service of release.
|
@@ -94,17 +110,12 @@ contract ReleaseAdmin is
|
|
94
110
|
}
|
95
111
|
|
96
112
|
_setTargetClosed(address(service), locked);
|
97
|
-
}
|
98
113
|
|
99
|
-
|
100
|
-
|
101
|
-
restricted // only with GIF_ADMIN_ROLE or nft owner
|
102
|
-
{
|
103
|
-
_accessManager.revoke(GIF_ADMIN_ROLE, );
|
104
|
-
_accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
|
105
|
-
}*/
|
114
|
+
emit LogReleaseAdminServiceLockChanged(service.getRelease(), address(service), locked);
|
115
|
+
}
|
106
116
|
|
107
117
|
//--- view functions ----------------------------------------------------//
|
118
|
+
|
108
119
|
/*
|
109
120
|
function getReleaseAdminRole() external view returns (RoleId) {
|
110
121
|
return GIF_ADMIN_ROLE();
|
@@ -207,17 +218,6 @@ contract ReleaseAdmin is
|
|
207
218
|
}
|
208
219
|
}
|
209
220
|
|
210
|
-
function _setReleaseLocked(bool locked)
|
211
|
-
private
|
212
|
-
{
|
213
|
-
AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
|
214
|
-
if(accessManager.isLocked() == locked) {
|
215
|
-
revert ErrorReleaseAdminReleaseAlreadyLocked();
|
216
|
-
}
|
217
|
-
|
218
|
-
accessManager.setLocked(locked);
|
219
|
-
}
|
220
|
-
|
221
221
|
//--- private initialization functions -------------------------------------------//
|
222
222
|
|
223
223
|
function _setupReleaseRegistry(address releaseRegistry)
|
@@ -226,11 +226,8 @@ contract ReleaseAdmin is
|
|
226
226
|
{
|
227
227
|
_createTarget(address(this), RELEASE_ADMIN_TARGET_NAME, false, false);
|
228
228
|
|
229
|
-
// TODO why release registry role is calculated?
|
230
|
-
//RoleId releaseRegistryRoleId = RoleIdLib.roleForType(RELEASE());
|
231
|
-
RoleId releaseRegistryRoleId = RELEASE_REGISTRY_ROLE();
|
232
229
|
_createRole(
|
233
|
-
|
230
|
+
RELEASE_REGISTRY_ROLE(),
|
234
231
|
toRole({
|
235
232
|
adminRoleId: ADMIN_ROLE(),
|
236
233
|
roleType: RoleType.Contract,
|
@@ -241,8 +238,8 @@ contract ReleaseAdmin is
|
|
241
238
|
functions = new FunctionInfo[](2);
|
242
239
|
functions[0] = toFunction(ReleaseAdmin.authorizeService.selector, "authorizeService");
|
243
240
|
functions[1] = toFunction(ReleaseAdmin.setServiceLocked.selector, "setServiceLocked");
|
244
|
-
_authorizeTargetFunctions(address(this),
|
241
|
+
_authorizeTargetFunctions(address(this), RELEASE_REGISTRY_ROLE(), functions);
|
245
242
|
|
246
|
-
_grantRoleToAccount(
|
243
|
+
_grantRoleToAccount(RELEASE_REGISTRY_ROLE(), releaseRegistry);
|
247
244
|
}
|
248
245
|
}
|
@@ -5,6 +5,8 @@ import {RELEASE} from "../type/ObjectType.sol";
|
|
5
5
|
import {SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED, CLOSED} from "../type/StateId.sol";
|
6
6
|
import {Lifecycle} from "../shared/Lifecycle.sol";
|
7
7
|
|
8
|
+
/// @dev Release lifeycle state machine.
|
9
|
+
/// Helper contract for ReleaseRegistry.
|
8
10
|
contract ReleaseLifecycle is
|
9
11
|
Lifecycle
|
10
12
|
{
|
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
5
5
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
6
6
|
|
7
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
7
8
|
import {NftId} from "../type/NftId.sol";
|
8
9
|
import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
9
10
|
import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
@@ -17,6 +18,7 @@ import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
|
17
18
|
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
18
19
|
|
19
20
|
import {IRegistry} from "./IRegistry.sol";
|
21
|
+
import {IRelease} from "./IRelease.sol";
|
20
22
|
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
21
23
|
import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
|
22
24
|
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
@@ -24,18 +26,24 @@ import {Registry} from "./Registry.sol";
|
|
24
26
|
import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
|
25
27
|
import {ReleaseAdmin} from "./ReleaseAdmin.sol";
|
26
28
|
|
27
|
-
|
29
|
+
/// @dev The ReleaseRegistry manages the lifecycle of major GIF releases and their services.
|
30
|
+
/// The creation of a new GIF release is a multi-step process:
|
31
|
+
/// 1. The creation of a new GIF release is initiated by the GIF admin.
|
32
|
+
/// 2. A GIF manager then prepares the release by setting up the service authorization contract.
|
33
|
+
/// 3. The GIF manager deploys and registers all related service contracts with the release registry.
|
34
|
+
/// 4. The GIF admin verifies and activates the release.
|
35
|
+
/// 3. The GIF admin may pause and resume a release.
|
28
36
|
contract ReleaseRegistry is
|
29
37
|
AccessManaged,
|
30
38
|
ReleaseLifecycle,
|
31
39
|
IRegistryLinked
|
32
40
|
{
|
33
|
-
uint256 public constant INITIAL_GIF_VERSION = 3;// first active version
|
41
|
+
uint256 public constant INITIAL_GIF_VERSION = 3;// first active release version
|
34
42
|
|
35
|
-
event LogReleaseCreation(IAccessAdmin admin, VersionPart
|
36
|
-
event LogReleaseActivation(VersionPart
|
37
|
-
event LogReleaseDisabled(VersionPart
|
38
|
-
event LogReleaseEnabled(VersionPart
|
43
|
+
event LogReleaseCreation(IAccessAdmin admin, VersionPart release, bytes32 salt);
|
44
|
+
event LogReleaseActivation(VersionPart release);
|
45
|
+
event LogReleaseDisabled(VersionPart release);
|
46
|
+
event LogReleaseEnabled(VersionPart release);
|
39
47
|
|
40
48
|
// constructor
|
41
49
|
error ErrorReleaseRegistryNotRegistry(Registry registry);
|
@@ -43,7 +51,7 @@ contract ReleaseRegistry is
|
|
43
51
|
// _verifyServiceAuthorization
|
44
52
|
error ErrorReleaseRegistryNotServiceAuth(address notAuth);
|
45
53
|
error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
|
46
|
-
error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart
|
54
|
+
error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart release);
|
47
55
|
|
48
56
|
// registerService
|
49
57
|
error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
|
@@ -68,21 +76,21 @@ contract ReleaseRegistry is
|
|
68
76
|
RegistryAdmin public immutable _admin;
|
69
77
|
Registry public immutable _registry;
|
70
78
|
|
71
|
-
mapping(VersionPart
|
79
|
+
mapping(VersionPart release => IRelease.ReleaseInfo info) internal _releaseInfo;
|
72
80
|
VersionPart [] internal _release; // array of all created releases
|
73
|
-
ReleaseAdmin _masterReleaseAdmin;
|
81
|
+
ReleaseAdmin internal _masterReleaseAdmin;
|
74
82
|
|
75
|
-
VersionPart internal _latest; // latest active
|
76
|
-
VersionPart internal _next; // version to create and activate
|
83
|
+
VersionPart internal _latest; // latest active release
|
84
|
+
VersionPart internal _next; // release version to create and activate
|
77
85
|
|
78
|
-
|
79
|
-
uint256 internal
|
86
|
+
// counters per release
|
87
|
+
uint256 internal _registeredServices = 0;
|
88
|
+
uint256 internal _servicesToRegister = 0;
|
80
89
|
|
81
90
|
constructor(Registry registry)
|
82
91
|
AccessManaged(msg.sender)
|
83
92
|
{
|
84
|
-
|
85
|
-
if(!_isRegistry(address(registry))) {
|
93
|
+
if (!ContractLib.isRegistry(address(registry))) {
|
86
94
|
revert ErrorReleaseRegistryNotRegistry(registry);
|
87
95
|
}
|
88
96
|
|
@@ -96,25 +104,26 @@ contract ReleaseRegistry is
|
|
96
104
|
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
97
105
|
}
|
98
106
|
|
99
|
-
/// @dev
|
100
|
-
///
|
107
|
+
/// @dev Initiates the creation of a new GIF release by the GIF admin.
|
108
|
+
/// Sets previous release into SKIPPED state if it was created but not activated.
|
109
|
+
/// Sets the new release into state SCHEDULED.
|
101
110
|
function createNextRelease()
|
102
111
|
external
|
103
112
|
restricted() // GIF_ADMIN_ROLE
|
104
113
|
returns(VersionPart)
|
105
114
|
{
|
106
|
-
VersionPart
|
115
|
+
VersionPart release = _next;
|
107
116
|
|
108
|
-
if(isValidTransition(RELEASE(), _releaseInfo[
|
109
|
-
_releaseInfo[
|
117
|
+
if(isValidTransition(RELEASE(), _releaseInfo[release].state, SKIPPED())) {
|
118
|
+
_releaseInfo[release].state = SKIPPED();
|
110
119
|
}
|
111
120
|
|
112
|
-
|
113
|
-
_release.push(
|
121
|
+
release = VersionPartLib.toVersionPart(release.toInt() + 1);
|
122
|
+
_release.push(release);
|
114
123
|
|
115
|
-
_next =
|
116
|
-
_releaseInfo[
|
117
|
-
_releaseInfo[
|
124
|
+
_next = release;
|
125
|
+
_releaseInfo[release].version = release;
|
126
|
+
_releaseInfo[release].state = getInitialState(RELEASE());
|
118
127
|
_servicesToRegister = 0;
|
119
128
|
_registeredServices = 0;
|
120
129
|
|
@@ -128,7 +137,7 @@ contract ReleaseRegistry is
|
|
128
137
|
external
|
129
138
|
restricted() // GIF_MANAGER_ROLE
|
130
139
|
returns(
|
131
|
-
|
140
|
+
ReleaseAdmin releaseAdmin,
|
132
141
|
VersionPart releaseVersion,
|
133
142
|
bytes32 releaseSalt
|
134
143
|
)
|
@@ -142,8 +151,9 @@ contract ReleaseRegistry is
|
|
142
151
|
uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
|
143
152
|
|
144
153
|
// create and initialize release admin
|
145
|
-
releaseAdmin =
|
154
|
+
releaseAdmin = _cloneNewReleaseAdmin(releaseVersion);
|
146
155
|
releaseSalt = salt;
|
156
|
+
|
147
157
|
// ensures unique salt
|
148
158
|
// TODO CreateX have clones capability also
|
149
159
|
// what would releaseSalt look like if used with CreateX in pemissioned mode?
|
@@ -157,7 +167,7 @@ contract ReleaseRegistry is
|
|
157
167
|
_releaseInfo[releaseVersion].salt = releaseSalt;
|
158
168
|
// TODO allow for the same serviceAuthorization address to be used for multiple releases?
|
159
169
|
_releaseInfo[releaseVersion].auth = serviceAuthorization;
|
160
|
-
_releaseInfo[releaseVersion].
|
170
|
+
_releaseInfo[releaseVersion].releaseAdmin = address(releaseAdmin);
|
161
171
|
|
162
172
|
emit LogReleaseCreation(releaseAdmin, releaseVersion, releaseSalt);
|
163
173
|
}
|
@@ -172,7 +182,7 @@ contract ReleaseRegistry is
|
|
172
182
|
// release can transition to DEPLOYED state
|
173
183
|
checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
|
174
184
|
|
175
|
-
address releaseAuthority = _releaseInfo[releaseVersion].
|
185
|
+
address releaseAuthority = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin).authority();
|
176
186
|
IServiceAuthorization releaseAuth = _releaseInfo[releaseVersion].auth;
|
177
187
|
ObjectType expectedDomain = releaseAuth.getServiceDomain(_registeredServices);
|
178
188
|
|
@@ -204,7 +214,7 @@ contract ReleaseRegistry is
|
|
204
214
|
// revert ErrorReleaseRegistryServiceAddressMismatch()
|
205
215
|
|
206
216
|
// setup service authorization
|
207
|
-
ReleaseAdmin releaseAdmin = ReleaseAdmin(
|
217
|
+
ReleaseAdmin releaseAdmin = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin);
|
208
218
|
releaseAdmin.setReleaseLocked(false);
|
209
219
|
releaseAdmin.authorizeService(
|
210
220
|
releaseAuth,
|
@@ -217,66 +227,69 @@ contract ReleaseRegistry is
|
|
217
227
|
nftId = _registry.registerService(info, serviceVersion, serviceDomain);
|
218
228
|
service.linkToRegisteredNftId();
|
219
229
|
}
|
230
|
+
|
231
|
+
|
220
232
|
// TODO return activated version
|
221
233
|
function activateNextRelease()
|
222
234
|
external
|
223
235
|
restricted // GIF_ADMIN_ROLE
|
224
236
|
{
|
225
|
-
VersionPart
|
237
|
+
VersionPart release = _next;
|
226
238
|
|
227
239
|
// release can transition to ACTIVE state
|
228
|
-
checkTransition(_releaseInfo[
|
240
|
+
checkTransition(_releaseInfo[release].state, RELEASE(), DEPLOYED(), ACTIVE());
|
229
241
|
|
230
|
-
_latest =
|
231
|
-
_releaseInfo[
|
232
|
-
_releaseInfo[
|
242
|
+
_latest = release;
|
243
|
+
_releaseInfo[release].state = ACTIVE();
|
244
|
+
_releaseInfo[release].activatedAt = TimestampLib.blockTimestamp();
|
245
|
+
_releaseInfo[release].disabledAt = TimestampLib.max();
|
233
246
|
|
234
247
|
// grant special roles for registry/staking/pool services
|
235
248
|
// this will enable access to core contracts functions
|
236
249
|
|
237
250
|
// registry service MUST be registered for each release
|
238
|
-
address service = _registry.getServiceAddress(REGISTRY(),
|
251
|
+
address service = _registry.getServiceAddress(REGISTRY(), release);
|
239
252
|
if(service == address(0)) {
|
240
|
-
revert ErrorReleaseRegistryRegistryServiceMissing(
|
253
|
+
revert ErrorReleaseRegistryRegistryServiceMissing(release);
|
241
254
|
}
|
242
255
|
|
243
256
|
_admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
|
244
257
|
|
245
|
-
service = _registry.getServiceAddress(STAKING(),
|
258
|
+
service = _registry.getServiceAddress(STAKING(), release);
|
246
259
|
if(service != address(0)) {
|
247
260
|
_admin.grantServiceRoleForAllVersions(IService(service), STAKING());
|
248
261
|
}
|
249
262
|
|
250
|
-
service = _registry.getServiceAddress(POOL(),
|
263
|
+
service = _registry.getServiceAddress(POOL(), release);
|
251
264
|
if(service != address(0)) {
|
252
265
|
_admin.grantServiceRoleForAllVersions(IService(service), POOL());
|
253
266
|
}
|
254
267
|
|
255
|
-
_setReleaseLocked(
|
268
|
+
_setReleaseLocked(release, false);
|
256
269
|
|
257
|
-
emit LogReleaseActivation(
|
270
|
+
emit LogReleaseActivation(release);
|
258
271
|
}
|
259
272
|
|
260
273
|
/// @dev stop/resume operations with restricted functions
|
261
|
-
function setActive(VersionPart
|
274
|
+
function setActive(VersionPart release, bool active)
|
262
275
|
public
|
263
276
|
restricted
|
264
277
|
{
|
265
|
-
StateId state = _releaseInfo[
|
278
|
+
StateId state = _releaseInfo[release].state;
|
266
279
|
|
267
280
|
if(active) {
|
268
281
|
checkTransition(state, RELEASE(), PAUSED(), ACTIVE());
|
269
|
-
_releaseInfo[
|
270
|
-
_releaseInfo[
|
271
|
-
emit LogReleaseEnabled(
|
282
|
+
_releaseInfo[release].state = ACTIVE();
|
283
|
+
_releaseInfo[release].disabledAt = TimestampLib.max();
|
284
|
+
emit LogReleaseEnabled(release);
|
272
285
|
} else {
|
273
286
|
checkTransition(state, RELEASE(), ACTIVE(), PAUSED());
|
274
|
-
_releaseInfo[
|
275
|
-
_releaseInfo[
|
276
|
-
emit LogReleaseDisabled(
|
287
|
+
_releaseInfo[release].state = PAUSED();
|
288
|
+
_releaseInfo[release].disabledAt = TimestampLib.blockTimestamp();
|
289
|
+
emit LogReleaseDisabled(release);
|
277
290
|
}
|
278
291
|
|
279
|
-
_setReleaseLocked(
|
292
|
+
_setReleaseLocked(release, !active);
|
280
293
|
}
|
281
294
|
|
282
295
|
//--- view functions ----------------------------------------------------//
|
@@ -289,12 +302,12 @@ contract ReleaseRegistry is
|
|
289
302
|
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
290
303
|
}
|
291
304
|
|
292
|
-
function isActiveRelease(VersionPart
|
293
|
-
return _releaseInfo[
|
305
|
+
function isActiveRelease(VersionPart release) public view returns(bool) {
|
306
|
+
return _releaseInfo[release].state == ACTIVE();
|
294
307
|
}
|
295
308
|
|
296
|
-
function getReleaseInfo(VersionPart
|
297
|
-
return _releaseInfo[
|
309
|
+
function getReleaseInfo(VersionPart release) external view returns(IRelease.ReleaseInfo memory) {
|
310
|
+
return _releaseInfo[release];
|
298
311
|
}
|
299
312
|
|
300
313
|
/// @dev Returns the number of created releases.
|
@@ -305,7 +318,7 @@ contract ReleaseRegistry is
|
|
305
318
|
|
306
319
|
/// @dev Returns the n-th release version.
|
307
320
|
/// Valid values for idx [0 .. releases() - 1]
|
308
|
-
function getVersion(uint256 idx) external view returns (VersionPart
|
321
|
+
function getVersion(uint256 idx) external view returns (VersionPart release) {
|
309
322
|
// return _releases;
|
310
323
|
return _release[idx];
|
311
324
|
}
|
@@ -320,20 +333,20 @@ contract ReleaseRegistry is
|
|
320
333
|
return _latest;
|
321
334
|
}
|
322
335
|
|
323
|
-
function getState(VersionPart
|
324
|
-
return _releaseInfo[
|
336
|
+
function getState(VersionPart release) external view returns (StateId stateId) {
|
337
|
+
return _releaseInfo[release].state;
|
325
338
|
}
|
326
339
|
|
327
340
|
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
328
341
|
return _servicesToRegister - _registeredServices;
|
329
342
|
}
|
330
343
|
|
331
|
-
function getServiceAuthorization(VersionPart
|
344
|
+
function getServiceAuthorization(VersionPart release)
|
332
345
|
external
|
333
346
|
view
|
334
347
|
returns (IServiceAuthorization serviceAuthorization)
|
335
348
|
{
|
336
|
-
return _releaseInfo[
|
349
|
+
return _releaseInfo[release].auth;
|
337
350
|
}
|
338
351
|
|
339
352
|
function getRegistryAdmin() external view returns (address) {
|
@@ -348,32 +361,41 @@ contract ReleaseRegistry is
|
|
348
361
|
|
349
362
|
//--- private functions ----------------------------------------------------//
|
350
363
|
|
351
|
-
function _setReleaseLocked(VersionPart
|
364
|
+
function _setReleaseLocked(VersionPart release, bool locked)
|
352
365
|
private
|
353
366
|
{
|
354
|
-
ReleaseAdmin
|
355
|
-
|
367
|
+
ReleaseAdmin(
|
368
|
+
_releaseInfo[release].releaseAdmin).setReleaseLocked(locked);
|
356
369
|
}
|
357
370
|
|
358
|
-
|
371
|
+
|
372
|
+
function _cloneNewReleaseAdmin(VersionPart release)
|
359
373
|
private
|
360
374
|
returns (ReleaseAdmin clonedAdmin)
|
361
375
|
{
|
362
|
-
AccessManagerCloneable
|
376
|
+
AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
|
363
377
|
Clones.clone(
|
364
378
|
_masterReleaseAdmin.authority()
|
365
379
|
)
|
366
380
|
);
|
381
|
+
|
367
382
|
clonedAdmin = ReleaseAdmin(
|
368
383
|
Clones.clone(
|
369
384
|
address(_masterReleaseAdmin)
|
370
385
|
)
|
371
386
|
);
|
372
|
-
|
373
|
-
clonedAdmin.
|
387
|
+
|
388
|
+
clonedAdmin.initialize(clonedAccessManager);
|
389
|
+
clonedAdmin.completeSetup(
|
390
|
+
address(_registry),
|
391
|
+
address(this), // release registry (this contract)
|
392
|
+
release);
|
393
|
+
|
394
|
+
// lock release (remains locked until activation)
|
374
395
|
clonedAdmin.setReleaseLocked(true);
|
375
396
|
}
|
376
397
|
|
398
|
+
|
377
399
|
function _verifyServiceAuthorization(
|
378
400
|
IServiceAuthorization serviceAuthorization,
|
379
401
|
VersionPart releaseVersion,
|
@@ -485,21 +507,5 @@ contract ReleaseRegistry is
|
|
485
507
|
revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
|
486
508
|
}
|
487
509
|
}
|
488
|
-
|
489
|
-
/// @dev returns true iff a the address passes some simple proxy tests.
|
490
|
-
function _isRegistry(address registryAddress) internal view returns (bool) {
|
491
|
-
|
492
|
-
// zero address is certainly not registry
|
493
|
-
if (registryAddress == address(0)) {
|
494
|
-
return false;
|
495
|
-
}
|
496
|
-
// TODO try catch and return false in case of revert or just panic
|
497
|
-
// check if contract returns a zero nft id for its own address
|
498
|
-
if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
|
499
|
-
return false;
|
500
|
-
}
|
501
|
-
|
502
|
-
return true;
|
503
|
-
}
|
504
510
|
}
|
505
511
|
|