@etherisc/gif-next 0.0.2-d696c44-627 → 0.0.2-d6a50e7-658
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 +158 -70
- 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 +67 -11
- 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 +97 -37
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
- 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 +173 -375
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +123 -317
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +336 -229
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +143 -109
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +135 -139
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +198 -33
- 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 +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -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 +470 -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 +502 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2408 -0
- 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 +130 -61
- 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 +165 -157
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +317 -143
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -84
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +919 -315
- 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 +619 -492
- 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/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +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 +84 -24
- 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 +114 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +434 -201
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +163 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +270 -27
- 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 +448 -217
- 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/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +569 -396
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -91
- 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 +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +435 -212
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +145 -107
- 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 +318 -8
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +361 -113
- 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} +57 -4
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +455 -318
- 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 +637 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +315 -34
- 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 +521 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +275 -160
- 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 +1795 -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 +412 -246
- 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 +559 -558
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +137 -121
- 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 +492 -212
- 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 +697 -25
- 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 +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 +55 -23
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
- 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 +100 -171
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +98 -84
- 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 +118 -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/Seconds.sol/SecondsLib.json +50 -2
- 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/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 +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +192 -124
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +111 -40
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +10 -6
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +12 -22
- package/contracts/distribution/BasicDistributionAuthorization.sol +6 -2
- package/contracts/distribution/Distribution.sol +37 -50
- package/contracts/distribution/DistributionService.sol +152 -97
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +6 -3
- package/contracts/distribution/IDistributionService.sol +23 -8
- 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 +438 -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 +107 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +370 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +16 -36
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +47 -66
- package/contracts/instance/InstanceAdmin.sol +133 -73
- package/contracts/instance/InstanceAuthorizationV3.sol +55 -32
- package/contracts/instance/InstanceReader.sol +218 -27
- package/contracts/instance/InstanceService.sol +125 -164
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- 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 +0 -1
- 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/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 +8 -11
- package/contracts/pool/BasicPool.sol +38 -27
- package/contracts/pool/BasicPoolAuthorization.sol +22 -3
- package/contracts/pool/BundleService.sol +226 -97
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +33 -18
- package/contracts/pool/IPoolComponent.sol +20 -10
- package/contracts/pool/IPoolService.sol +53 -50
- package/contracts/pool/Pool.sol +150 -116
- package/contracts/pool/PoolService.sol +343 -179
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +83 -78
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +13 -44
- package/contracts/product/BasicProductAuthorization.sol +3 -2
- package/contracts/product/ClaimService.sol +425 -159
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +6 -2
- package/contracts/product/IClaimService.sol +44 -7
- package/contracts/product/IPolicyService.sol +46 -34
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +28 -5
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +520 -259
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +66 -62
- package/contracts/product/PricingServiceManager.sol +6 -9
- package/contracts/product/Product.sol +160 -89
- package/contracts/product/RiskService.sol +151 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +58 -28
- 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 +353 -203
- package/contracts/registry/RegistryAdmin.sol +161 -182
- package/contracts/registry/RegistryService.sol +41 -66
- package/contracts/registry/RegistryServiceManager.sol +5 -5
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +258 -234
- package/contracts/registry/ServiceAuthorizationV3.sol +94 -52
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +71 -126
- package/contracts/shared/ComponentService.sol +441 -358
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +28 -17
- package/contracts/shared/ContractLib.sol +252 -0
- package/contracts/shared/IComponent.sol +8 -17
- package/contracts/shared/IComponentService.sol +47 -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 +4 -6
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +80 -34
- 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 +18 -36
- package/contracts/shared/TokenHandler.sol +357 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +12 -6
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +85 -70
- package/contracts/staking/StakingManager.sol +10 -11
- package/contracts/staking/StakingReader.sol +17 -13
- package/contracts/staking/StakingService.sol +64 -36
- package/contracts/staking/StakingServiceManager.sol +4 -4
- package/contracts/staking/StakingStore.sol +5 -15
- 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 +36 -17
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +35 -4
- package/contracts/type/RoleId.sol +4 -13
- package/contracts/type/Seconds.sol +21 -1
- 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/{shared → upgradeability}/ProxyManager.sol +71 -37
- package/contracts/{shared → 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/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/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- 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/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- 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/product/ProductService.sol +0 -124
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +0 -0
@@ -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, 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
|
-
|
41
|
+
uint256 public constant INITIAL_GIF_VERSION = 3;// first active release version
|
43
42
|
|
44
|
-
|
45
|
-
|
46
|
-
event
|
47
|
-
event
|
48
|
-
event LogReleaseDisabled(VersionPart version);
|
49
|
-
event LogReleaseEnabled(VersionPart version);
|
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,32 +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
|
-
|
103
|
-
|
83
|
+
VersionPart internal _latest; // latest active release
|
84
|
+
VersionPart internal _next; // release version to create and activate
|
104
85
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
mapping(VersionPart verson => StateId releaseState) private _state;
|
109
|
-
|
110
|
-
uint256 internal _registeredServices;
|
111
|
-
uint256 internal _servicesToRegister;
|
86
|
+
// counters per release
|
87
|
+
uint256 internal _registeredServices = 0;
|
88
|
+
uint256 internal _servicesToRegister = 0;
|
112
89
|
|
113
90
|
constructor(Registry registry)
|
114
91
|
AccessManaged(msg.sender)
|
115
92
|
{
|
116
|
-
|
117
|
-
if(!_isRegistry(address(registry))) {
|
93
|
+
if (!ContractLib.isRegistry(address(registry))) {
|
118
94
|
revert ErrorReleaseRegistryNotRegistry(registry);
|
119
95
|
}
|
120
96
|
|
@@ -123,21 +99,33 @@ contract ReleaseRegistry is
|
|
123
99
|
_registry = registry;
|
124
100
|
_admin = RegistryAdmin(_registry.getRegistryAdminAddress());
|
125
101
|
|
126
|
-
|
102
|
+
_masterReleaseAdmin = new ReleaseAdmin();
|
103
|
+
|
127
104
|
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
128
105
|
}
|
129
106
|
|
130
|
-
/// @dev
|
131
|
-
///
|
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.
|
132
110
|
function createNextRelease()
|
133
111
|
external
|
134
112
|
restricted() // GIF_ADMIN_ROLE
|
135
113
|
returns(VersionPart)
|
136
114
|
{
|
137
|
-
|
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());
|
138
127
|
_servicesToRegister = 0;
|
139
128
|
_registeredServices = 0;
|
140
|
-
_state[_next] = getInitialState(RELEASE());
|
141
129
|
|
142
130
|
return _next;
|
143
131
|
}
|
@@ -149,183 +137,159 @@ contract ReleaseRegistry is
|
|
149
137
|
external
|
150
138
|
restricted() // GIF_MANAGER_ROLE
|
151
139
|
returns(
|
152
|
-
|
153
|
-
VersionPart
|
140
|
+
ReleaseAdmin releaseAdmin,
|
141
|
+
VersionPart releaseVersion,
|
154
142
|
bytes32 releaseSalt
|
155
143
|
)
|
156
144
|
{
|
157
|
-
|
158
|
-
|
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;
|
159
156
|
|
160
157
|
// ensures unique salt
|
161
158
|
// TODO CreateX have clones capability also
|
162
159
|
// what would releaseSalt look like if used with CreateX in pemissioned mode?
|
163
|
-
releaseSalt = keccak256(
|
160
|
+
/*releaseSalt = keccak256(
|
164
161
|
bytes.concat(
|
165
|
-
bytes32(
|
166
|
-
salt))
|
167
|
-
|
168
|
-
// verify release in state SCHEDULED
|
169
|
-
if (!isValidTransition(RELEASE(), _state[version], DEPLOYING())) {
|
170
|
-
revert ErrorReleaseRegistryReleasePreparationDisallowed(version, _state[version]);
|
171
|
-
}
|
172
|
-
|
173
|
-
_state[version] = DEPLOYING();
|
174
|
-
|
175
|
-
// verify authorizaion contract release matches with expected version
|
176
|
-
VersionPart releaseVersion = serviceAuthorization.getRelease();
|
177
|
-
if (releaseVersion != version) {
|
178
|
-
revert ErrorReleaseRegistryVersionMismatch(version, releaseVersion);
|
179
|
-
}
|
180
|
-
|
181
|
-
|
182
|
-
// sanity check to ensure service domain list is not empty
|
183
|
-
uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
|
184
|
-
if (serviceDomainsCount == 0) {
|
185
|
-
revert ErrorReleaseRegistryNoDomains(version);
|
186
|
-
}
|
187
|
-
|
188
|
-
// verify prepareNextRelease is only called once per release
|
189
|
-
if(_servicesToRegister > 0) {
|
190
|
-
revert ErrorReleaseRegistryReleaseAlreadyPrepared(version, _state[version]);
|
191
|
-
}
|
162
|
+
bytes32(releaseVersion.toInt()),
|
163
|
+
salt));*/
|
192
164
|
|
193
165
|
_servicesToRegister = serviceDomainsCount;
|
194
|
-
|
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);
|
195
171
|
|
196
|
-
emit LogReleaseCreation(
|
172
|
+
emit LogReleaseCreation(releaseAdmin, releaseVersion, releaseSalt);
|
197
173
|
}
|
198
174
|
|
199
|
-
// TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
|
200
175
|
function registerService(IService service)
|
201
176
|
external
|
202
177
|
restricted // GIF_MANAGER_ROLE
|
203
178
|
returns(NftId nftId)
|
204
179
|
{
|
205
180
|
VersionPart releaseVersion = _next;
|
206
|
-
StateId state = _state[releaseVersion];
|
207
181
|
|
208
|
-
//
|
209
|
-
|
210
|
-
// TOOD name must represent failed state transition
|
211
|
-
revert ErrorReleaseRegistryServiceRegistrationDisallowed(state);
|
212
|
-
}
|
213
|
-
|
214
|
-
_state[releaseVersion] = DEPLOYING();
|
182
|
+
// release can transition to DEPLOYED state
|
183
|
+
checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
|
215
184
|
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
}
|
185
|
+
address releaseAuthority = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin).authority();
|
186
|
+
IServiceAuthorization releaseAuth = _releaseInfo[releaseVersion].auth;
|
187
|
+
ObjectType expectedDomain = releaseAuth.getServiceDomain(_registeredServices);
|
220
188
|
|
221
|
-
// service can work with release
|
189
|
+
// service can work with release registry and release version
|
222
190
|
(
|
223
191
|
IRegistry.ObjectInfo memory info,
|
224
192
|
ObjectType serviceDomain,
|
225
193
|
VersionPart serviceVersion
|
226
|
-
|
194
|
+
//,string memory serviceName
|
195
|
+
) = _verifyService(
|
196
|
+
service,
|
197
|
+
releaseAuthority,
|
198
|
+
releaseVersion,
|
199
|
+
expectedDomain
|
200
|
+
);
|
227
201
|
|
228
|
-
//
|
229
|
-
|
230
|
-
if
|
231
|
-
|
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();
|
232
211
|
}
|
233
212
|
|
213
|
+
// TODO: service address matches defined in release auth (precalculated one)
|
214
|
+
// revert ErrorReleaseRegistryServiceAddressMismatch()
|
215
|
+
|
216
|
+
// setup service authorization
|
217
|
+
ReleaseAdmin releaseAdmin = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin);
|
218
|
+
releaseAdmin.setReleaseLocked(false);
|
219
|
+
releaseAdmin.authorizeService(
|
220
|
+
releaseAuth,
|
221
|
+
service,
|
222
|
+
serviceDomain,
|
223
|
+
releaseVersion);
|
224
|
+
releaseAdmin.setReleaseLocked(true);
|
225
|
+
|
234
226
|
// register service with registry
|
235
227
|
nftId = _registry.registerService(info, serviceVersion, serviceDomain);
|
236
228
|
service.linkToRegisteredNftId();
|
237
|
-
_registeredServices++;
|
238
|
-
|
239
|
-
// setup service authorization
|
240
|
-
_admin.authorizeService(
|
241
|
-
_serviceAuthorization[releaseVersion],
|
242
|
-
service);
|
243
|
-
|
244
|
-
// TODO consider to extend this to REGISTRY
|
245
|
-
// special roles for registry/staking/pool service
|
246
|
-
if (serviceDomain == STAKING() || serviceDomain == POOL()) {
|
247
|
-
// TODO rename to grantServiceDomainRole()
|
248
|
-
_admin.grantServiceRoleForAllVersions(service, serviceDomain);
|
249
|
-
}
|
250
229
|
}
|
251
230
|
|
252
231
|
|
232
|
+
// TODO return activated version
|
253
233
|
function activateNextRelease()
|
254
234
|
external
|
255
235
|
restricted // GIF_ADMIN_ROLE
|
256
236
|
{
|
257
|
-
VersionPart
|
258
|
-
StateId state = _state[version];
|
259
|
-
StateId newState = ACTIVE();
|
237
|
+
VersionPart release = _next;
|
260
238
|
|
261
|
-
//
|
262
|
-
|
263
|
-
revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
|
264
|
-
}
|
239
|
+
// release can transition to ACTIVE state
|
240
|
+
checkTransition(_releaseInfo[release].state, RELEASE(), DEPLOYED(), ACTIVE());
|
265
241
|
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
242
|
+
_latest = release;
|
243
|
+
_releaseInfo[release].state = ACTIVE();
|
244
|
+
_releaseInfo[release].activatedAt = TimestampLib.blockTimestamp();
|
245
|
+
_releaseInfo[release].disabledAt = TimestampLib.max();
|
270
246
|
|
271
|
-
//
|
272
|
-
|
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);
|
273
252
|
if(service == address(0)) {
|
274
|
-
revert
|
253
|
+
revert ErrorReleaseRegistryRegistryServiceMissing(release);
|
275
254
|
}
|
276
255
|
|
277
|
-
|
278
|
-
_state[version] = newState;
|
279
|
-
|
280
|
-
_releaseVersionByAddress[service] = version;
|
281
|
-
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
256
|
+
_admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
|
282
257
|
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
/// @dev stop all operations with release services
|
287
|
-
function pauseRelease(VersionPart version)
|
288
|
-
external
|
289
|
-
restricted // GIF_ADMIN_ROLE
|
290
|
-
{
|
291
|
-
StateId state = _state[version];
|
292
|
-
StateId newState = PAUSED();
|
293
|
-
|
294
|
-
// verify release in state ACTIVE
|
295
|
-
if (!isValidTransition(RELEASE(), state, newState)) {
|
296
|
-
revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
|
258
|
+
service = _registry.getServiceAddress(STAKING(), release);
|
259
|
+
if(service != address(0)) {
|
260
|
+
_admin.grantServiceRoleForAllVersions(IService(service), STAKING());
|
297
261
|
}
|
298
262
|
|
299
|
-
|
300
|
-
|
263
|
+
service = _registry.getServiceAddress(POOL(), release);
|
264
|
+
if(service != address(0)) {
|
265
|
+
_admin.grantServiceRoleForAllVersions(IService(service), POOL());
|
266
|
+
}
|
301
267
|
|
302
|
-
|
303
|
-
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
|
268
|
+
_setReleaseLocked(release, false);
|
304
269
|
|
305
|
-
emit
|
270
|
+
emit LogReleaseActivation(release);
|
306
271
|
}
|
307
272
|
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
restricted // GIF_ADMIN_ROLE
|
273
|
+
/// @dev stop/resume operations with restricted functions
|
274
|
+
function setActive(VersionPart release, bool active)
|
275
|
+
public
|
276
|
+
restricted
|
313
277
|
{
|
314
|
-
StateId state =
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
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);
|
320
290
|
}
|
321
291
|
|
322
|
-
|
323
|
-
// _releaseAccessManager[version].enable();
|
324
|
-
|
325
|
-
_state[version] = newState;
|
326
|
-
_releaseInfo[version].disabledAt = zeroTimestamp();
|
327
|
-
|
328
|
-
emit LogReleaseEnabled(version);
|
292
|
+
_setReleaseLocked(release, !active);
|
329
293
|
}
|
330
294
|
|
331
295
|
//--- view functions ----------------------------------------------------//
|
@@ -338,45 +302,51 @@ contract ReleaseRegistry is
|
|
338
302
|
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
339
303
|
}
|
340
304
|
|
341
|
-
function
|
342
|
-
|
343
|
-
|
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];
|
344
311
|
}
|
345
312
|
|
346
|
-
|
347
|
-
|
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;
|
348
317
|
}
|
349
318
|
|
350
|
-
|
351
|
-
|
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];
|
352
324
|
}
|
353
325
|
|
354
326
|
function getNextVersion() public view returns(VersionPart) {
|
355
327
|
return _next;
|
356
328
|
}
|
357
329
|
|
330
|
+
/// @dev Returns the latest activated relase version.
|
331
|
+
/// There is no guarantee that the release is not currently paused.
|
358
332
|
function getLatestVersion() external view returns(VersionPart) {
|
359
333
|
return _latest;
|
360
334
|
}
|
361
335
|
|
362
|
-
function
|
363
|
-
return
|
364
|
-
}
|
365
|
-
|
366
|
-
function getState(VersionPart version) external view returns (StateId stateId) {
|
367
|
-
return _state[version];
|
336
|
+
function getState(VersionPart release) external view returns (StateId stateId) {
|
337
|
+
return _releaseInfo[release].state;
|
368
338
|
}
|
369
339
|
|
370
340
|
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
371
341
|
return _servicesToRegister - _registeredServices;
|
372
342
|
}
|
373
343
|
|
374
|
-
function getServiceAuthorization(VersionPart
|
344
|
+
function getServiceAuthorization(VersionPart release)
|
375
345
|
external
|
376
346
|
view
|
377
347
|
returns (IServiceAuthorization serviceAuthorization)
|
378
348
|
{
|
379
|
-
return
|
349
|
+
return _releaseInfo[release].auth;
|
380
350
|
}
|
381
351
|
|
382
352
|
function getRegistryAdmin() external view returns (address) {
|
@@ -391,7 +361,75 @@ contract ReleaseRegistry is
|
|
391
361
|
|
392
362
|
//--- private functions ----------------------------------------------------//
|
393
363
|
|
394
|
-
function
|
364
|
+
function _setReleaseLocked(VersionPart release, bool locked)
|
365
|
+
private
|
366
|
+
{
|
367
|
+
ReleaseAdmin(
|
368
|
+
_releaseInfo[release].releaseAdmin).setReleaseLocked(locked);
|
369
|
+
}
|
370
|
+
|
371
|
+
|
372
|
+
function _cloneNewReleaseAdmin(VersionPart release)
|
373
|
+
private
|
374
|
+
returns (ReleaseAdmin clonedAdmin)
|
375
|
+
{
|
376
|
+
AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
|
377
|
+
Clones.clone(
|
378
|
+
_masterReleaseAdmin.authority()
|
379
|
+
)
|
380
|
+
);
|
381
|
+
|
382
|
+
clonedAdmin = ReleaseAdmin(
|
383
|
+
Clones.clone(
|
384
|
+
address(_masterReleaseAdmin)
|
385
|
+
)
|
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);
|
423
|
+
}
|
424
|
+
}
|
425
|
+
|
426
|
+
// TODO get service names
|
427
|
+
function _verifyService(
|
428
|
+
IService service,
|
429
|
+
address expectedAuthority,
|
430
|
+
VersionPart expectedVersion,
|
431
|
+
ObjectType expectedDomain
|
432
|
+
)
|
395
433
|
internal
|
396
434
|
view
|
397
435
|
returns(
|
@@ -412,22 +450,25 @@ contract ReleaseRegistry is
|
|
412
450
|
|
413
451
|
_verifyServiceInfo(service, serviceInfo, owner);
|
414
452
|
|
415
|
-
VersionPart releaseVersion = _next; // never 0
|
416
|
-
address expectedAuthority = _admin.authority(); // can be zero if registering service when release is not created
|
417
|
-
|
418
|
-
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
419
453
|
if(serviceAuthority != expectedAuthority) {
|
420
|
-
revert
|
454
|
+
revert ErrorReleaseRegistryServiceAuthorityMismatch(
|
421
455
|
service,
|
422
456
|
serviceAuthority,
|
423
457
|
expectedAuthority);
|
424
458
|
}
|
425
459
|
|
426
|
-
if(serviceVersion !=
|
427
|
-
revert
|
460
|
+
if(serviceVersion != expectedVersion) {
|
461
|
+
revert ErrorReleaseRegistryServiceVersionMismatch(
|
428
462
|
service,
|
429
463
|
serviceVersion,
|
430
|
-
|
464
|
+
expectedVersion);
|
465
|
+
}
|
466
|
+
|
467
|
+
if(serviceDomain != expectedDomain) {
|
468
|
+
revert ErrorReleaseRegistryServiceDomainMismatch(
|
469
|
+
service,
|
470
|
+
expectedDomain,
|
471
|
+
serviceDomain);
|
431
472
|
}
|
432
473
|
}
|
433
474
|
|
@@ -441,7 +482,7 @@ contract ReleaseRegistry is
|
|
441
482
|
view
|
442
483
|
{
|
443
484
|
if(info.objectAddress != address(service)) {
|
444
|
-
revert ErrorReleaseRegistryServiceInfoAddressInvalid(service,
|
485
|
+
revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, info.objectAddress);
|
445
486
|
}
|
446
487
|
|
447
488
|
if(info.isInterceptor != false) { // service is never interceptor
|
@@ -466,22 +507,5 @@ contract ReleaseRegistry is
|
|
466
507
|
revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
|
467
508
|
}
|
468
509
|
}
|
469
|
-
|
470
|
-
/// @dev returns true iff a the address passes some simple proxy tests.
|
471
|
-
function _isRegistry(address registryAddress) internal view returns (bool) {
|
472
|
-
|
473
|
-
// zero address is certainly not registry
|
474
|
-
if (registryAddress == address(0)) {
|
475
|
-
return false;
|
476
|
-
}
|
477
|
-
// TODO try catch and return false in case of revert
|
478
|
-
// or just panic
|
479
|
-
// check if contract returns a zero nft id for its own address
|
480
|
-
if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
|
481
|
-
return false;
|
482
|
-
}
|
483
|
-
|
484
|
-
return true;
|
485
|
-
}
|
486
510
|
}
|
487
511
|
|