@etherisc/gif-next 0.0.2-eb7c077-523 → 0.0.2-eba4d8b-925
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 +46 -8
- 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 +203 -77
- 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 +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
- 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 +142 -44
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +194 -377
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +140 -315
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +404 -289
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +147 -109
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +154 -139
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +255 -90
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1475 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2032 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1479 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2432 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -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 +158 -57
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +194 -154
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +446 -143
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +997 -303
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +131 -266
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +102 -92
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +623 -496
- 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 +46 -5
- 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/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +139 -335
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
- 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 +128 -126
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +115 -303
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +162 -387
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +330 -203
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +143 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +206 -29
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +143 -195
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +464 -312
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +128 -370
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +653 -532
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +163 -97
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +258 -396
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +415 -234
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +140 -114
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +250 -198
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +67 -8
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +459 -309
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +230 -312
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +256 -394
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +659 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +732 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +22 -3
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +343 -32
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- 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/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +447 -117
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +319 -262
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +428 -235
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +579 -495
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +143 -107
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
- 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 +89 -88
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +547 -224
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +117 -126
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +104 -303
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +134 -125
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +77 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -366
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +122 -95
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +122 -164
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +99 -85
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +153 -107
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -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 +61 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +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/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 +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
- 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 +71 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +232 -133
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +321 -202
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +17 -10
- package/contracts/authorization/IAuthorization.sol +27 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +17 -25
- package/contracts/distribution/BasicDistributionAuthorization.sol +26 -9
- package/contracts/distribution/Distribution.sol +46 -40
- package/contracts/distribution/DistributionService.sol +163 -93
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +9 -5
- package/contracts/distribution/IDistributionService.sol +37 -21
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +90 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +437 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +21 -37
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +59 -66
- package/contracts/instance/InstanceAdmin.sol +256 -85
- package/contracts/instance/InstanceAuthorizationV3.sol +56 -45
- package/contracts/instance/InstanceReader.sol +275 -43
- package/contracts/instance/InstanceService.sol +125 -164
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +24 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +11 -4
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +14 -15
- package/contracts/instance/module/IDistribution.sol +2 -2
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +21 -22
- package/contracts/oracle/OracleService.sol +113 -81
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +38 -27
- package/contracts/pool/BasicPoolAuthorization.sol +36 -9
- package/contracts/pool/BundleService.sol +194 -83
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +31 -22
- package/contracts/pool/IPoolComponent.sol +20 -10
- package/contracts/pool/IPoolService.sol +90 -75
- package/contracts/pool/Pool.sol +145 -111
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +540 -219
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +72 -43
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +13 -44
- package/contracts/product/BasicProductAuthorization.sol +25 -9
- package/contracts/product/ClaimService.sol +367 -151
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +6 -2
- package/contracts/product/IClaimService.sol +44 -8
- package/contracts/product/IPolicyService.sol +53 -36
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +28 -5
- package/contracts/product/{IProductService.sol → IRiskService.sol} +6 -9
- package/contracts/product/PolicyService.sol +476 -269
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +66 -62
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +169 -92
- package/contracts/product/RiskService.sol +144 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +58 -27
- package/contracts/registry/IRegistry.sol +58 -25
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +341 -178
- package/contracts/registry/RegistryAdmin.sol +142 -235
- package/contracts/registry/RegistryService.sol +37 -48
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +244 -266
- package/contracts/registry/ServiceAuthorizationV3.sol +99 -52
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +74 -128
- package/contracts/shared/ComponentService.sol +453 -342
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +28 -17
- package/contracts/shared/ContractLib.sol +253 -0
- package/contracts/shared/IComponent.sol +8 -17
- package/contracts/shared/IComponentService.sol +49 -39
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -27
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +81 -35
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +31 -11
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +55 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +15 -32
- package/contracts/shared/TokenHandler.sol +309 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +7 -9
- package/contracts/staking/IStakingService.sol +8 -3
- package/contracts/staking/StakeManagerLib.sol +19 -26
- package/contracts/staking/Staking.sol +76 -60
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +13 -6
- package/contracts/staking/StakingService.sol +54 -35
- package/contracts/staking/StakingServiceManager.sol +6 -5
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +7 -0
- package/contracts/type/ObjectType.sol +52 -20
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +10 -5
- package/contracts/type/UFixed.sol +35 -122
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +4 -3
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.dbg.json +0 -4
- package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.json +0 -1503
- package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.dbg.json +0 -4
- package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.json +0 -1881
- package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.dbg.json +0 -4
- package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.json +0 -974
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.dbg.json +0 -4
- package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.json +0 -34
- package/artifacts/contracts/shared/MainnetId.sol/MainnetId.dbg.json +0 -4
- package/artifacts/contracts/shared/MainnetId.sol/MainnetId.json +0 -24
- package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.dbg.json +0 -4
- package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.json +0 -34
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/ProductService.sol +0 -99
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/registry/GlobalRegistry.sol +0 -95
- package/contracts/registry/GlobalRegistryAdmin.sol +0 -38
- package/contracts/registry/IGlobalRegistry.sol +0 -17
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/shared/MainnetId.sol +0 -29
@@ -1,85 +1,69 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
|
5
4
|
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
6
|
-
import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
|
7
|
-
import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
8
5
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
9
|
-
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
10
6
|
|
7
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
11
8
|
import {NftId} from "../type/NftId.sol";
|
12
|
-
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
13
9
|
import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
14
|
-
import {
|
15
|
-
import {
|
16
|
-
import {
|
17
|
-
import {
|
18
|
-
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
10
|
+
import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
11
|
+
import {Seconds} from "../type/Seconds.sol";
|
12
|
+
import {StateId, SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED} from "../type/StateId.sol";
|
13
|
+
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
19
14
|
|
20
15
|
import {IService} from "../shared/IService.sol";
|
21
|
-
|
22
|
-
import {
|
23
|
-
import {
|
16
|
+
|
17
|
+
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
18
|
+
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
24
19
|
|
25
20
|
import {IRegistry} from "./IRegistry.sol";
|
21
|
+
import {IRelease} from "./IRelease.sol";
|
26
22
|
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
27
|
-
import {IRegistryService} from "./IRegistryService.sol";
|
28
23
|
import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
|
29
|
-
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
30
24
|
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
31
25
|
import {Registry} from "./Registry.sol";
|
32
|
-
import {TokenRegistry} from "./TokenRegistry.sol";
|
33
26
|
import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
|
34
|
-
|
35
|
-
|
36
|
-
|
27
|
+
import {ReleaseAdmin} from "./ReleaseAdmin.sol";
|
28
|
+
|
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.
|
37
36
|
contract ReleaseRegistry is
|
38
37
|
AccessManaged,
|
39
38
|
ReleaseLifecycle,
|
40
39
|
IRegistryLinked
|
41
40
|
{
|
42
|
-
|
43
|
-
|
44
|
-
uint256 public constant INITIAL_GIF_VERSION = 3;
|
41
|
+
uint256 public constant INITIAL_GIF_VERSION = 3;// first active release version
|
45
42
|
|
46
|
-
event LogReleaseCreation(VersionPart
|
47
|
-
event LogReleaseActivation(VersionPart
|
48
|
-
event LogReleaseDisabled(VersionPart
|
49
|
-
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);
|
50
47
|
|
51
48
|
// constructor
|
52
49
|
error ErrorReleaseRegistryNotRegistry(Registry registry);
|
53
50
|
|
54
|
-
//
|
55
|
-
error
|
56
|
-
|
57
|
-
|
58
|
-
error ErrorReleaseRegistryReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
|
59
|
-
error ErrorReleaseRegistryReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
|
60
|
-
error ErrorReleaseRegistryVersionMismatch(VersionPart expected, VersionPart actual);
|
61
|
-
error ErrorReleaseRegistryNoDomains(VersionPart version);
|
51
|
+
// _verifyServiceAuthorization
|
52
|
+
error ErrorReleaseRegistryNotServiceAuth(address notAuth);
|
53
|
+
error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
|
54
|
+
error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart release);
|
62
55
|
|
63
56
|
// registerService
|
64
|
-
error ErrorReleaseRegistryNoServiceRegistrationExpected();
|
65
|
-
error ErrorReleaseRegistryServiceRegistrationDisallowed(StateId currentStateId);
|
66
|
-
error ErrorReleaseRegistryServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
|
67
|
-
error ErrorReleaseRegistryNotService(address notService);
|
68
57
|
error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
|
69
58
|
|
70
59
|
// activateNextRelease
|
71
|
-
error
|
72
|
-
error ErrorReleaseRegistryReleaseNotCreated(VersionPart releaseVersion);
|
73
|
-
error ErrorReleaseRegistryReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
74
|
-
error ErrorReleaseRegistryReleaseAlreadyActivated(VersionPart releaseVersion);
|
75
|
-
|
76
|
-
// disableRelease
|
77
|
-
error ErrorReleaseRegistryReleaseNotActivated(VersionPart releaseVersion);
|
78
|
-
error ErrorReleaseRegistryReleaseAlreadyDisabled(VersionPart releaseVersion);
|
60
|
+
error ErrorReleaseRegistryRegistryServiceMissing(VersionPart releaseVersion);
|
79
61
|
|
80
62
|
// _verifyService
|
81
|
-
error
|
82
|
-
error
|
63
|
+
error ErrorReleaseRegistryNotService(address notService);
|
64
|
+
error ErrorReleaseRegistryServiceAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
65
|
+
error ErrorReleaseRegistryServiceVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
66
|
+
error ErrorReleaseRegistryServiceDomainMismatch(IService service, ObjectType expectedDomain, ObjectType actualDomain);
|
83
67
|
|
84
68
|
// _verifyServiceInfo
|
85
69
|
error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
|
@@ -89,29 +73,24 @@ contract ReleaseRegistry is
|
|
89
73
|
error ErrorReleaseRegistryServiceSelfRegistration(IService service);
|
90
74
|
error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
|
91
75
|
|
92
|
-
Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
|
93
|
-
|
94
76
|
RegistryAdmin public immutable _admin;
|
95
77
|
Registry public immutable _registry;
|
96
|
-
IRegisterable private _staking;
|
97
|
-
address private _stakingOwner;
|
98
78
|
|
99
|
-
mapping(VersionPart
|
100
|
-
|
79
|
+
mapping(VersionPart release => IRelease.ReleaseInfo info) internal _releaseInfo;
|
80
|
+
VersionPart [] internal _release; // array of all created releases
|
81
|
+
ReleaseAdmin internal _masterReleaseAdmin;
|
101
82
|
|
102
|
-
VersionPart
|
103
|
-
VersionPart internal
|
104
|
-
VersionPart internal _next; // version to create and activate
|
105
|
-
mapping(VersionPart verson => StateId releaseState) private _state;
|
83
|
+
VersionPart internal _latest; // latest active release
|
84
|
+
VersionPart internal _next; // release version to create and activate
|
106
85
|
|
107
|
-
|
108
|
-
uint256 internal
|
86
|
+
// counters per release
|
87
|
+
uint256 internal _registeredServices = 0;
|
88
|
+
uint256 internal _servicesToRegister = 0;
|
109
89
|
|
110
90
|
constructor(Registry registry)
|
111
91
|
AccessManaged(msg.sender)
|
112
92
|
{
|
113
|
-
|
114
|
-
if(!_isRegistry(address(registry))) {
|
93
|
+
if (!ContractLib.isRegistry(address(registry))) {
|
115
94
|
revert ErrorReleaseRegistryNotRegistry(registry);
|
116
95
|
}
|
117
96
|
|
@@ -120,21 +99,33 @@ contract ReleaseRegistry is
|
|
120
99
|
_registry = registry;
|
121
100
|
_admin = RegistryAdmin(_registry.getRegistryAdminAddress());
|
122
101
|
|
123
|
-
|
102
|
+
_masterReleaseAdmin = new ReleaseAdmin();
|
103
|
+
|
124
104
|
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
125
105
|
}
|
126
106
|
|
127
|
-
/// @dev
|
128
|
-
///
|
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.
|
129
110
|
function createNextRelease()
|
130
111
|
external
|
131
112
|
restricted() // GIF_ADMIN_ROLE
|
132
113
|
returns(VersionPart)
|
133
114
|
{
|
134
|
-
|
115
|
+
VersionPart release = _next;
|
116
|
+
|
117
|
+
if(isValidTransition(RELEASE(), _releaseInfo[release].state, SKIPPED())) {
|
118
|
+
_releaseInfo[release].state = SKIPPED();
|
119
|
+
}
|
120
|
+
|
121
|
+
release = VersionPartLib.toVersionPart(release.toInt() + 1);
|
122
|
+
_release.push(release);
|
123
|
+
|
124
|
+
_next = release;
|
125
|
+
_releaseInfo[release].version = release;
|
126
|
+
_releaseInfo[release].state = getInitialState(RELEASE());
|
135
127
|
_servicesToRegister = 0;
|
136
128
|
_registeredServices = 0;
|
137
|
-
_state[_next] = getInitialState(RELEASE());
|
138
129
|
|
139
130
|
return _next;
|
140
131
|
}
|
@@ -146,107 +137,91 @@ contract ReleaseRegistry is
|
|
146
137
|
external
|
147
138
|
restricted() // GIF_MANAGER_ROLE
|
148
139
|
returns(
|
149
|
-
|
150
|
-
VersionPart
|
140
|
+
ReleaseAdmin releaseAdmin,
|
141
|
+
VersionPart releaseVersion,
|
151
142
|
bytes32 releaseSalt
|
152
143
|
)
|
153
144
|
{
|
154
|
-
|
155
|
-
|
145
|
+
releaseVersion = _next;
|
146
|
+
|
147
|
+
// release can transition into DEPLOYING state
|
148
|
+
checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
|
149
|
+
|
150
|
+
// verify authorizations
|
151
|
+
uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
|
152
|
+
|
153
|
+
// create and initialize release admin
|
154
|
+
releaseAdmin = _cloneNewReleaseAdmin(releaseVersion);
|
155
|
+
releaseSalt = salt;
|
156
156
|
|
157
157
|
// ensures unique salt
|
158
158
|
// TODO CreateX have clones capability also
|
159
159
|
// what would releaseSalt look like if used with CreateX in pemissioned mode?
|
160
|
-
releaseSalt = keccak256(
|
160
|
+
/*releaseSalt = keccak256(
|
161
161
|
bytes.concat(
|
162
|
-
bytes32(
|
163
|
-
salt))
|
164
|
-
|
165
|
-
// verify release in state SCHEDULED
|
166
|
-
if (!isValidTransition(RELEASE(), _state[version], DEPLOYING())) {
|
167
|
-
revert ErrorReleaseRegistryReleasePreparationDisallowed(version, _state[version]);
|
168
|
-
}
|
169
|
-
|
170
|
-
_state[version] = DEPLOYING();
|
171
|
-
|
172
|
-
// verify authorizaion contract release matches with expected version
|
173
|
-
VersionPart releaseVersion = serviceAuthorization.getRelease();
|
174
|
-
if (releaseVersion != version) {
|
175
|
-
revert ErrorReleaseRegistryVersionMismatch(version, releaseVersion);
|
176
|
-
}
|
177
|
-
|
178
|
-
|
179
|
-
// sanity check to ensure service domain list is not empty
|
180
|
-
uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
|
181
|
-
if (serviceDomainsCount == 0) {
|
182
|
-
revert ErrorReleaseRegistryNoDomains(version);
|
183
|
-
}
|
184
|
-
|
185
|
-
// verify prepareNextRelease is only called once per release
|
186
|
-
if(_servicesToRegister > 0) {
|
187
|
-
revert ErrorReleaseRegistryReleaseAlreadyPrepared(version, _state[version]);
|
188
|
-
}
|
162
|
+
bytes32(releaseVersion.toInt()),
|
163
|
+
salt));*/
|
189
164
|
|
190
165
|
_servicesToRegister = serviceDomainsCount;
|
191
|
-
|
166
|
+
_releaseInfo[releaseVersion].state = DEPLOYING();
|
167
|
+
_releaseInfo[releaseVersion].salt = releaseSalt;
|
168
|
+
// TODO allow for the same serviceAuthorization address to be used for multiple releases?
|
169
|
+
_releaseInfo[releaseVersion].auth = serviceAuthorization;
|
170
|
+
_releaseInfo[releaseVersion].releaseAdmin = address(releaseAdmin);
|
192
171
|
|
193
|
-
emit LogReleaseCreation(
|
172
|
+
emit LogReleaseCreation(releaseAdmin, releaseVersion, releaseSalt);
|
194
173
|
}
|
195
174
|
|
196
|
-
// TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
|
197
175
|
function registerService(IService service)
|
198
176
|
external
|
199
177
|
restricted // GIF_MANAGER_ROLE
|
200
178
|
returns(NftId nftId)
|
201
179
|
{
|
202
180
|
VersionPart releaseVersion = _next;
|
203
|
-
StateId state = _state[releaseVersion];
|
204
181
|
|
205
|
-
//
|
206
|
-
|
207
|
-
// TOOD name must represent failed state transition
|
208
|
-
revert ErrorReleaseRegistryServiceRegistrationDisallowed(state);
|
209
|
-
}
|
210
|
-
|
211
|
-
_state[releaseVersion] = DEPLOYING();
|
182
|
+
// release can transition to DEPLOYED state
|
183
|
+
checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
|
212
184
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
}
|
185
|
+
address releaseAuthority = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin).authority();
|
186
|
+
IServiceAuthorization releaseAuth = _releaseInfo[releaseVersion].auth;
|
187
|
+
ObjectType expectedDomain = releaseAuth.getServiceDomain(_registeredServices);
|
217
188
|
|
218
|
-
// service can work with release
|
189
|
+
// service can work with release registry and release version
|
219
190
|
(
|
220
191
|
IRegistry.ObjectInfo memory info,
|
221
192
|
ObjectType serviceDomain,
|
222
193
|
VersionPart serviceVersion
|
223
|
-
|
194
|
+
//,string memory serviceName
|
195
|
+
) = _verifyService(
|
196
|
+
service,
|
197
|
+
releaseAuthority,
|
198
|
+
releaseVersion,
|
199
|
+
expectedDomain
|
200
|
+
);
|
224
201
|
|
225
|
-
//
|
226
|
-
|
227
|
-
if
|
228
|
-
|
202
|
+
//_releaseInfo[releaseVersion].addresses.push(address(service)); // TODO get this info from auth contract?
|
203
|
+
//_releaseInfo[releaseVersion].domains.push(serviceDomain);
|
204
|
+
//_releaseInfo[releaseVersion].names.push(serviceName); // TODO if needed read in _verifyService()
|
205
|
+
|
206
|
+
_registeredServices++; // TODO use releaseInfo.someArray.length instead of _registeredServices
|
207
|
+
|
208
|
+
// release fully deployed
|
209
|
+
if(_servicesToRegister == _registeredServices) {
|
210
|
+
_releaseInfo[releaseVersion].state = DEPLOYED();
|
229
211
|
}
|
230
212
|
|
231
|
-
// TODO: service address matches defined in release
|
213
|
+
// TODO: service address matches defined in release auth (precalculated one)
|
214
|
+
// revert ErrorReleaseRegistryServiceAddressMismatch()
|
232
215
|
|
233
216
|
// setup service authorization
|
234
|
-
|
235
|
-
|
217
|
+
ReleaseAdmin releaseAdmin = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin);
|
218
|
+
releaseAdmin.setReleaseLocked(false);
|
219
|
+
releaseAdmin.authorizeService(
|
220
|
+
releaseAuth,
|
236
221
|
service,
|
237
222
|
serviceDomain,
|
238
223
|
releaseVersion);
|
239
|
-
|
240
|
-
// special roles for registry/staking/pool service
|
241
|
-
if (
|
242
|
-
serviceDomain == REGISTRY() ||
|
243
|
-
serviceDomain == STAKING() ||
|
244
|
-
serviceDomain == POOL())
|
245
|
-
{
|
246
|
-
_admin.grantServiceRoleForAllVersions(service, serviceDomain);
|
247
|
-
}
|
248
|
-
|
249
|
-
_registeredServices++;
|
224
|
+
releaseAdmin.setReleaseLocked(true);
|
250
225
|
|
251
226
|
// register service with registry
|
252
227
|
nftId = _registry.registerService(info, serviceVersion, serviceDomain);
|
@@ -254,79 +229,67 @@ contract ReleaseRegistry is
|
|
254
229
|
}
|
255
230
|
|
256
231
|
|
232
|
+
// TODO return activated version
|
257
233
|
function activateNextRelease()
|
258
234
|
external
|
259
235
|
restricted // GIF_ADMIN_ROLE
|
260
236
|
{
|
261
|
-
VersionPart
|
262
|
-
StateId state = _state[version];
|
263
|
-
StateId newState = ACTIVE();
|
237
|
+
VersionPart release = _next;
|
264
238
|
|
265
|
-
//
|
266
|
-
|
267
|
-
revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
|
268
|
-
}
|
239
|
+
// release can transition to ACTIVE state
|
240
|
+
checkTransition(_releaseInfo[release].state, RELEASE(), DEPLOYED(), ACTIVE());
|
269
241
|
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
242
|
+
_latest = release;
|
243
|
+
_releaseInfo[release].state = ACTIVE();
|
244
|
+
_releaseInfo[release].activatedAt = TimestampLib.blockTimestamp();
|
245
|
+
_releaseInfo[release].disabledAt = TimestampLib.max();
|
274
246
|
|
275
|
-
//
|
276
|
-
|
247
|
+
// grant special roles for registry/staking/pool services
|
248
|
+
// this will enable access to core contracts functions
|
249
|
+
|
250
|
+
// registry service MUST be registered for each release
|
251
|
+
address service = _registry.getServiceAddress(REGISTRY(), release);
|
277
252
|
if(service == address(0)) {
|
278
|
-
revert
|
253
|
+
revert ErrorReleaseRegistryRegistryServiceMissing(release);
|
279
254
|
}
|
280
255
|
|
281
|
-
|
282
|
-
_state[version] = newState;
|
283
|
-
|
284
|
-
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
285
|
-
|
286
|
-
emit LogReleaseActivation(version);
|
287
|
-
}
|
256
|
+
_admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
|
288
257
|
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
restricted // GIF_ADMIN_ROLE
|
293
|
-
{
|
294
|
-
StateId state = _state[version];
|
295
|
-
StateId newState = PAUSED();
|
296
|
-
|
297
|
-
// verify release in state ACTIVE
|
298
|
-
if (!isValidTransition(RELEASE(), state, newState)) {
|
299
|
-
revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
|
258
|
+
service = _registry.getServiceAddress(STAKING(), release);
|
259
|
+
if(service != address(0)) {
|
260
|
+
_admin.grantServiceRoleForAllVersions(IService(service), STAKING());
|
300
261
|
}
|
301
262
|
|
302
|
-
|
263
|
+
service = _registry.getServiceAddress(POOL(), release);
|
264
|
+
if(service != address(0)) {
|
265
|
+
_admin.grantServiceRoleForAllVersions(IService(service), POOL());
|
266
|
+
}
|
303
267
|
|
304
|
-
|
305
|
-
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
|
268
|
+
_setReleaseLocked(release, false);
|
306
269
|
|
307
|
-
emit
|
270
|
+
emit LogReleaseActivation(release);
|
308
271
|
}
|
309
272
|
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
restricted // GIF_ADMIN_ROLE
|
273
|
+
/// @dev stop/resume operations with restricted functions
|
274
|
+
function setActive(VersionPart release, bool active)
|
275
|
+
public
|
276
|
+
restricted
|
315
277
|
{
|
316
|
-
StateId state =
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
278
|
+
StateId state = _releaseInfo[release].state;
|
279
|
+
|
280
|
+
if(active) {
|
281
|
+
checkTransition(state, RELEASE(), PAUSED(), ACTIVE());
|
282
|
+
_releaseInfo[release].state = ACTIVE();
|
283
|
+
_releaseInfo[release].disabledAt = TimestampLib.max();
|
284
|
+
emit LogReleaseEnabled(release);
|
285
|
+
} else {
|
286
|
+
checkTransition(state, RELEASE(), ACTIVE(), PAUSED());
|
287
|
+
_releaseInfo[release].state = PAUSED();
|
288
|
+
_releaseInfo[release].disabledAt = TimestampLib.blockTimestamp();
|
289
|
+
emit LogReleaseDisabled(release);
|
322
290
|
}
|
323
291
|
|
324
|
-
|
325
|
-
|
326
|
-
_state[version] = newState;
|
327
|
-
_releaseInfo[version].disabledAt = zeroTimestamp();
|
328
|
-
|
329
|
-
emit LogReleaseEnabled(version);
|
292
|
+
_setReleaseLocked(release, !active);
|
330
293
|
}
|
331
294
|
|
332
295
|
//--- view functions ----------------------------------------------------//
|
@@ -339,40 +302,51 @@ contract ReleaseRegistry is
|
|
339
302
|
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
340
303
|
}
|
341
304
|
|
342
|
-
function isActiveRelease(VersionPart
|
343
|
-
return
|
305
|
+
function isActiveRelease(VersionPart release) public view returns(bool) {
|
306
|
+
return _releaseInfo[release].state == ACTIVE();
|
307
|
+
}
|
308
|
+
|
309
|
+
function getReleaseInfo(VersionPart release) external view returns(IRelease.ReleaseInfo memory) {
|
310
|
+
return _releaseInfo[release];
|
311
|
+
}
|
312
|
+
|
313
|
+
/// @dev Returns the number of created releases.
|
314
|
+
/// Releases might be in another state than ACTIVE.
|
315
|
+
function releases() external view returns (uint) {
|
316
|
+
return _release.length;
|
344
317
|
}
|
345
318
|
|
346
|
-
|
347
|
-
|
319
|
+
/// @dev Returns the n-th release version.
|
320
|
+
/// Valid values for idx [0 .. releases() - 1]
|
321
|
+
function getVersion(uint256 idx) external view returns (VersionPart release) {
|
322
|
+
// return _releases;
|
323
|
+
return _release[idx];
|
348
324
|
}
|
349
325
|
|
350
326
|
function getNextVersion() public view returns(VersionPart) {
|
351
327
|
return _next;
|
352
328
|
}
|
353
329
|
|
330
|
+
/// @dev Returns the latest activated relase version.
|
331
|
+
/// There is no guarantee that the release is not currently paused.
|
354
332
|
function getLatestVersion() external view returns(VersionPart) {
|
355
333
|
return _latest;
|
356
334
|
}
|
357
335
|
|
358
|
-
function
|
359
|
-
return
|
360
|
-
}
|
361
|
-
|
362
|
-
function getState(VersionPart version) external view returns (StateId stateId) {
|
363
|
-
return _state[version];
|
336
|
+
function getState(VersionPart release) external view returns (StateId stateId) {
|
337
|
+
return _releaseInfo[release].state;
|
364
338
|
}
|
365
339
|
|
366
340
|
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
367
341
|
return _servicesToRegister - _registeredServices;
|
368
342
|
}
|
369
343
|
|
370
|
-
function getServiceAuthorization(VersionPart
|
344
|
+
function getServiceAuthorization(VersionPart release)
|
371
345
|
external
|
372
346
|
view
|
373
347
|
returns (IServiceAuthorization serviceAuthorization)
|
374
348
|
{
|
375
|
-
return
|
349
|
+
return _releaseInfo[release].auth;
|
376
350
|
}
|
377
351
|
|
378
352
|
function getRegistryAdmin() external view returns (address) {
|
@@ -387,58 +361,75 @@ contract ReleaseRegistry is
|
|
387
361
|
|
388
362
|
//--- private functions ----------------------------------------------------//
|
389
363
|
|
390
|
-
function
|
364
|
+
function _setReleaseLocked(VersionPart release, bool locked)
|
391
365
|
private
|
392
366
|
{
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
ObjectType[] memory domains = _serviceAuthorization[version].getServiceDomains();
|
397
|
-
for(uint idx = 0; idx < domains.length; idx++)
|
398
|
-
{
|
399
|
-
domain = domains[idx];
|
400
|
-
service = _registry.getServiceAddress(domain, version);
|
401
|
-
_admin.revokeServiceRole(IService(service), domain, version);
|
402
|
-
|
403
|
-
// special roles for registry/staking/pool service
|
404
|
-
if(
|
405
|
-
domain == REGISTRY() ||
|
406
|
-
domain == STAKING() ||
|
407
|
-
domain == POOL()
|
408
|
-
)
|
409
|
-
{
|
410
|
-
_admin.revokeServiceRoleForAllVersions(IService(service), domain);
|
411
|
-
}
|
412
|
-
}
|
367
|
+
ReleaseAdmin(
|
368
|
+
_releaseInfo[release].releaseAdmin).setReleaseLocked(locked);
|
413
369
|
}
|
414
370
|
|
415
|
-
|
371
|
+
|
372
|
+
function _cloneNewReleaseAdmin(VersionPart release)
|
416
373
|
private
|
374
|
+
returns (ReleaseAdmin clonedAdmin)
|
417
375
|
{
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
_admin.grantServiceRole(IService(service), domain, version);
|
428
|
-
|
429
|
-
// special roles for registry/staking/pool service
|
430
|
-
if(
|
431
|
-
domain == REGISTRY() ||
|
432
|
-
domain == STAKING() ||
|
433
|
-
domain == POOL()
|
376
|
+
AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
|
377
|
+
Clones.clone(
|
378
|
+
_masterReleaseAdmin.authority()
|
379
|
+
)
|
380
|
+
);
|
381
|
+
|
382
|
+
clonedAdmin = ReleaseAdmin(
|
383
|
+
Clones.clone(
|
384
|
+
address(_masterReleaseAdmin)
|
434
385
|
)
|
435
|
-
|
436
|
-
|
437
|
-
|
386
|
+
);
|
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)
|
395
|
+
clonedAdmin.setReleaseLocked(true);
|
396
|
+
}
|
397
|
+
|
398
|
+
|
399
|
+
function _verifyServiceAuthorization(
|
400
|
+
IServiceAuthorization serviceAuthorization,
|
401
|
+
VersionPart releaseVersion,
|
402
|
+
bytes32 salt
|
403
|
+
)
|
404
|
+
private
|
405
|
+
view
|
406
|
+
returns (uint256 serviceDomainsCount)
|
407
|
+
{
|
408
|
+
// authorization contract supports IServiceAuthorization interface
|
409
|
+
if(!serviceAuthorization.supportsInterface(type(IServiceAuthorization).interfaceId)) {
|
410
|
+
revert ErrorReleaseRegistryNotServiceAuth(address(serviceAuthorization));
|
411
|
+
}
|
412
|
+
|
413
|
+
// authorizaions contract version matches with release version
|
414
|
+
VersionPart authVersion = serviceAuthorization.getRelease();
|
415
|
+
if (releaseVersion != authVersion) {
|
416
|
+
revert ErrorReleaseRegistryServiceAuthVersionMismatch(serviceAuthorization, releaseVersion, authVersion);
|
417
|
+
}
|
418
|
+
|
419
|
+
// sanity check to ensure service domain list is not empty
|
420
|
+
serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
|
421
|
+
if (serviceDomainsCount == 0) {
|
422
|
+
revert ErrorReleaseRegistryServiceAuthDomainsZero(serviceAuthorization, releaseVersion);
|
438
423
|
}
|
439
424
|
}
|
440
425
|
|
441
|
-
|
426
|
+
// TODO get service names
|
427
|
+
function _verifyService(
|
428
|
+
IService service,
|
429
|
+
address expectedAuthority,
|
430
|
+
VersionPart expectedVersion,
|
431
|
+
ObjectType expectedDomain
|
432
|
+
)
|
442
433
|
internal
|
443
434
|
view
|
444
435
|
returns(
|
@@ -459,22 +450,25 @@ contract ReleaseRegistry is
|
|
459
450
|
|
460
451
|
_verifyServiceInfo(service, serviceInfo, owner);
|
461
452
|
|
462
|
-
VersionPart releaseVersion = _next; // never 0
|
463
|
-
address expectedAuthority = _admin.authority(); // can be zero if registering service when release is not created
|
464
|
-
|
465
|
-
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
466
453
|
if(serviceAuthority != expectedAuthority) {
|
467
|
-
revert
|
454
|
+
revert ErrorReleaseRegistryServiceAuthorityMismatch(
|
468
455
|
service,
|
469
456
|
serviceAuthority,
|
470
457
|
expectedAuthority);
|
471
458
|
}
|
472
459
|
|
473
|
-
if(serviceVersion !=
|
474
|
-
revert
|
460
|
+
if(serviceVersion != expectedVersion) {
|
461
|
+
revert ErrorReleaseRegistryServiceVersionMismatch(
|
475
462
|
service,
|
476
463
|
serviceVersion,
|
477
|
-
|
464
|
+
expectedVersion);
|
465
|
+
}
|
466
|
+
|
467
|
+
if(serviceDomain != expectedDomain) {
|
468
|
+
revert ErrorReleaseRegistryServiceDomainMismatch(
|
469
|
+
service,
|
470
|
+
expectedDomain,
|
471
|
+
serviceDomain);
|
478
472
|
}
|
479
473
|
}
|
480
474
|
|
@@ -488,7 +482,7 @@ contract ReleaseRegistry is
|
|
488
482
|
view
|
489
483
|
{
|
490
484
|
if(info.objectAddress != address(service)) {
|
491
|
-
revert ErrorReleaseRegistryServiceInfoAddressInvalid(service,
|
485
|
+
revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, info.objectAddress);
|
492
486
|
}
|
493
487
|
|
494
488
|
if(info.isInterceptor != false) { // service is never interceptor
|
@@ -513,21 +507,5 @@ contract ReleaseRegistry is
|
|
513
507
|
revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
|
514
508
|
}
|
515
509
|
}
|
516
|
-
|
517
|
-
/// @dev returns true iff a the address passes some simple proxy tests.
|
518
|
-
function _isRegistry(address registryAddress) internal view returns (bool) {
|
519
|
-
|
520
|
-
// zero address is certainly not registry
|
521
|
-
if (registryAddress == address(0)) {
|
522
|
-
return false;
|
523
|
-
}
|
524
|
-
// TODO try catch and return false in case of revert or just panic
|
525
|
-
// check if contract returns a zero nft id for its own address
|
526
|
-
if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
|
527
|
-
return false;
|
528
|
-
}
|
529
|
-
|
530
|
-
return true;
|
531
|
-
}
|
532
510
|
}
|
533
511
|
|