@etherisc/gif-next 0.0.2-683d8b2-607 → 0.0.2-684bde0-724
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 +100 -9
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +673 -262
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
- 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 +549 -209
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +212 -473
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +139 -381
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +772 -316
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +241 -117
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +135 -187
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +579 -137
- 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 +1480 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2045 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -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 +1423 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -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 +560 -66
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +319 -57
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +568 -166
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1034 -311
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -68
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1685 -774
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +332 -227
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +142 -104
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +921 -728
- 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 +152 -350
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
- 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 +129 -129
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +128 -318
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +176 -96
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +194 -421
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +568 -248
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +219 -103
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +374 -36
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +158 -212
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +711 -340
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +148 -392
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +546 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +925 -545
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +229 -105
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +158 -98
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +287 -427
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +472 -235
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +194 -122
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +301 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +348 -16
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +417 -101
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +272 -222
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +196 -163
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +532 -311
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +195 -107
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +249 -329
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +164 -136
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +279 -419
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +780 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +21 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +364 -42
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +169 -37
- 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 +471 -112
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +749 -455
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +140 -88
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -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 +491 -242
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +86 -277
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +590 -542
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +189 -119
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -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 +92 -93
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +535 -240
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +118 -129
- 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 +35 -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 +167 -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 +84 -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 +117 -318
- 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 +41 -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 +141 -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 +86 -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 +341 -133
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +184 -23
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +468 -419
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
- 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 +180 -99
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +91 -67
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +253 -171
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +157 -93
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +209 -149
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +95 -49
- 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 +63 -10
- 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 +98 -37
- 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 +33 -31
- 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 +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +69 -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/String.sol/StrLib.json +50 -2
- 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 +109 -35
- 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 +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +117 -78
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +274 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +47 -0
- package/contracts/authorization/AccessAdmin.sol +456 -266
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +159 -208
- package/contracts/authorization/IAccess.sol +25 -6
- package/contracts/authorization/IAccessAdmin.sol +87 -79
- package/contracts/authorization/IAuthorization.sol +9 -36
- package/contracts/authorization/IServiceAuthorization.sol +57 -17
- package/contracts/authorization/ServiceAuthorization.sol +254 -24
- package/contracts/distribution/BasicDistribution.sol +20 -28
- package/contracts/distribution/BasicDistributionAuthorization.sol +34 -10
- package/contracts/distribution/Distribution.sol +46 -82
- package/contracts/distribution/DistributionService.sol +276 -116
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +11 -14
- package/contracts/distribution/IDistributionService.sol +56 -26
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +433 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +385 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +101 -42
- package/contracts/instance/IInstanceService.sol +52 -31
- package/contracts/instance/Instance.sol +189 -97
- package/contracts/instance/InstanceAdmin.sol +275 -158
- package/contracts/instance/InstanceAuthorizationV3.sol +120 -56
- package/contracts/instance/InstanceReader.sol +478 -251
- package/contracts/instance/InstanceService.sol +298 -229
- 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/BalanceStore.sol +3 -5
- 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 +6 -5
- package/contracts/instance/module/IComponents.sol +30 -20
- package/contracts/instance/module/IDistribution.sol +21 -9
- package/contracts/instance/module/IPolicy.sol +50 -29
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +1 -4
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +21 -24
- package/contracts/oracle/OracleService.sol +117 -85
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +37 -28
- package/contracts/pool/BasicPoolAuthorization.sol +42 -9
- package/contracts/pool/BundleService.sol +213 -91
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +40 -25
- package/contracts/pool/IPoolComponent.sol +20 -10
- package/contracts/pool/IPoolService.sol +97 -77
- package/contracts/pool/Pool.sol +145 -113
- package/contracts/pool/PoolLib.sol +359 -0
- package/contracts/pool/PoolService.sol +413 -235
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +143 -46
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +12 -45
- package/contracts/product/BasicProductAuthorization.sol +33 -10
- package/contracts/product/ClaimService.sol +384 -159
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +29 -3
- package/contracts/product/IClaimService.sol +44 -8
- package/contracts/product/IPolicyService.sol +61 -37
- package/contracts/product/IPricingService.sol +11 -10
- package/contracts/product/IProductComponent.sol +28 -5
- package/contracts/product/IRiskService.sol +37 -0
- package/contracts/product/PolicyService.sol +443 -273
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +90 -84
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +175 -95
- package/contracts/product/RiskService.sol +163 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +49 -31
- package/contracts/registry/IRegistry.sol +69 -27
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +348 -177
- package/contracts/registry/RegistryAdmin.sol +100 -357
- package/contracts/registry/RegistryAuthorization.sol +284 -0
- package/contracts/registry/RegistryService.sol +38 -49
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +262 -275
- package/contracts/registry/ServiceAuthorizationV3.sol +202 -57
- package/contracts/registry/TokenRegistry.sol +12 -13
- package/contracts/shared/Component.sol +65 -136
- package/contracts/shared/ComponentService.sol +441 -343
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ContractLib.sol +311 -0
- package/contracts/shared/IComponent.sol +6 -18
- package/contracts/shared/IComponentService.sol +50 -41
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -27
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +4 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +22 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
- package/contracts/shared/InstanceLinkedComponent.sol +82 -39
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +33 -11
- package/contracts/shared/PolicyHolder.sol +20 -59
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +20 -35
- package/contracts/shared/TokenHandler.sol +310 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +48 -20
- package/contracts/staking/IStakingService.sol +21 -11
- package/contracts/staking/Staking.sol +203 -108
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +95 -45
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +40 -24
- package/contracts/staking/StakingService.sol +96 -39
- package/contracts/staking/StakingServiceManager.sol +6 -5
- package/contracts/staking/StakingStore.sol +3 -2
- package/contracts/staking/TargetManagerLib.sol +8 -4
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +8 -8
- 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 +73 -37
- 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 +61 -55
- package/contracts/type/Seconds.sol +25 -1
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +10 -5
- package/contracts/type/UFixed.sol +56 -126
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +93 -45
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
- package/contracts/upgradeability/Versionable.sol +8 -5
- package/package.json +5 -4
- 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/IProductService.sol/IProductService.json +0 -400
- 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 -1487
- package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.dbg.json +0 -4
- package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.json +0 -1876
- 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/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- 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/MainnetContract.sol/MainnetContract.dbg.json +0 -4
- package/artifacts/contracts/shared/MainnetContract.sol/MainnetContract.json +0 -34
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -460
- 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/IProductService.sol +0 -33
- package/contracts/product/ProductService.sol +0 -99
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/registry/GlobalRegistry.sol +0 -89
- package/contracts/registry/GlobalRegistryAdmin.sol +0 -38
- package/contracts/registry/IGlobalRegistry.sol +0 -17
- package/contracts/shared/ComponentVerifyingService.sol +0 -117
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/shared/MainnetContract.sol +0 -15
|
@@ -1,85 +1,67 @@
|
|
|
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
|
-
|
|
11
|
-
import {NftId} from "../type/NftId.sol";
|
|
12
|
-
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
|
13
|
-
import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
|
14
|
-
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
|
15
|
-
import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
|
|
16
|
-
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
|
17
|
-
import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE, PAUSED, CLOSED} from "../type/StateId.sol";
|
|
18
|
-
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
|
19
|
-
|
|
20
|
-
import {IService} from "../shared/IService.sol";
|
|
21
|
-
import {ILifecycle} from "../shared/ILifecycle.sol";
|
|
22
|
-
import {INftOwnable} from "../shared/INftOwnable.sol";
|
|
23
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
|
24
6
|
|
|
7
|
+
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
|
8
|
+
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
|
25
9
|
import {IRegistry} from "./IRegistry.sol";
|
|
10
|
+
import {IRelease} from "./IRelease.sol";
|
|
26
11
|
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
|
27
|
-
import {
|
|
12
|
+
import {IService} from "../shared/IService.sol";
|
|
28
13
|
import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
|
|
29
|
-
|
|
14
|
+
|
|
15
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
|
16
|
+
import {NftId} from "../type/NftId.sol";
|
|
17
|
+
import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
|
30
18
|
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
|
31
19
|
import {Registry} from "./Registry.sol";
|
|
32
|
-
import {
|
|
20
|
+
import {ReleaseAdmin} from "./ReleaseAdmin.sol";
|
|
33
21
|
import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
import {Seconds} from "../type/Seconds.sol";
|
|
23
|
+
import {StateId, SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED} from "../type/StateId.sol";
|
|
24
|
+
import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
|
25
|
+
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
|
26
|
+
|
|
27
|
+
/// @dev The ReleaseRegistry manages the lifecycle of major GIF releases and their services.
|
|
28
|
+
/// The creation of a new GIF release is a multi-step process:
|
|
29
|
+
/// 1. The creation of a new GIF release is initiated by the GIF admin.
|
|
30
|
+
/// 2. A GIF manager then prepares the release by setting up the service authorization contract.
|
|
31
|
+
/// 3. The GIF manager deploys and registers all related service contracts with the release registry.
|
|
32
|
+
/// 4. The GIF admin verifies and activates the release.
|
|
33
|
+
/// 3. The GIF admin may pause and resume a release.
|
|
37
34
|
contract ReleaseRegistry is
|
|
38
35
|
AccessManaged,
|
|
39
36
|
ReleaseLifecycle,
|
|
40
37
|
IRegistryLinked
|
|
41
38
|
{
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
uint256 public constant INITIAL_GIF_VERSION = 3;
|
|
39
|
+
uint256 public constant INITIAL_GIF_VERSION = 3;// first active release version
|
|
45
40
|
|
|
46
|
-
event LogReleaseCreation(VersionPart
|
|
47
|
-
event LogReleaseActivation(VersionPart
|
|
48
|
-
event LogReleaseDisabled(VersionPart
|
|
49
|
-
event LogReleaseEnabled(VersionPart
|
|
41
|
+
event LogReleaseCreation(IAccessAdmin admin, VersionPart release, bytes32 salt);
|
|
42
|
+
event LogReleaseActivation(VersionPart release);
|
|
43
|
+
event LogReleaseDisabled(VersionPart release);
|
|
44
|
+
event LogReleaseEnabled(VersionPart release);
|
|
50
45
|
|
|
51
46
|
// constructor
|
|
52
47
|
error ErrorReleaseRegistryNotRegistry(Registry registry);
|
|
53
48
|
|
|
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);
|
|
49
|
+
// _verifyServiceAuthorization
|
|
50
|
+
error ErrorReleaseRegistryNotServiceAuth(address notAuth);
|
|
51
|
+
error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
|
|
52
|
+
error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart release);
|
|
62
53
|
|
|
63
54
|
// registerService
|
|
64
|
-
error ErrorReleaseRegistryNoServiceRegistrationExpected();
|
|
65
|
-
error ErrorReleaseRegistryServiceRegistrationDisallowed(StateId currentStateId);
|
|
66
|
-
error ErrorReleaseRegistryServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
|
|
67
|
-
error ErrorReleaseRegistryNotService(address notService);
|
|
68
55
|
error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
|
|
69
56
|
|
|
70
57
|
// 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);
|
|
58
|
+
error ErrorReleaseRegistryRegistryServiceMissing(VersionPart releaseVersion);
|
|
79
59
|
|
|
80
60
|
// _verifyService
|
|
81
|
-
error
|
|
82
|
-
error
|
|
61
|
+
error ErrorReleaseRegistryNotService(address notService);
|
|
62
|
+
error ErrorReleaseRegistryServiceAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
|
63
|
+
error ErrorReleaseRegistryServiceVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
|
64
|
+
error ErrorReleaseRegistryServiceDomainMismatch(IService service, ObjectType expectedDomain, ObjectType actualDomain);
|
|
83
65
|
|
|
84
66
|
// _verifyServiceInfo
|
|
85
67
|
error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
|
|
@@ -89,52 +71,60 @@ contract ReleaseRegistry is
|
|
|
89
71
|
error ErrorReleaseRegistryServiceSelfRegistration(IService service);
|
|
90
72
|
error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
|
|
91
73
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
RegistryAdmin public immutable _admin;
|
|
74
|
+
RegistryAdmin public immutable _registryAdmin;
|
|
95
75
|
Registry public immutable _registry;
|
|
96
|
-
IRegisterable private _staking;
|
|
97
|
-
address private _stakingOwner;
|
|
98
76
|
|
|
99
|
-
mapping(VersionPart
|
|
100
|
-
|
|
77
|
+
mapping(VersionPart release => IRelease.ReleaseInfo info) internal _releaseInfo;
|
|
78
|
+
VersionPart [] internal _release; // array of all created releases
|
|
79
|
+
ReleaseAdmin internal _masterReleaseAdmin;
|
|
101
80
|
|
|
102
|
-
VersionPart
|
|
103
|
-
VersionPart internal
|
|
104
|
-
VersionPart internal _next; // version to create and activate
|
|
105
|
-
mapping(VersionPart verson => StateId releaseState) private _state;
|
|
81
|
+
VersionPart internal _latest; // latest active release
|
|
82
|
+
VersionPart internal _next; // release version to create and activate
|
|
106
83
|
|
|
107
|
-
|
|
108
|
-
uint256 internal
|
|
84
|
+
// counters per release
|
|
85
|
+
uint256 internal _registeredServices = 0;
|
|
86
|
+
uint256 internal _servicesToRegister = 0;
|
|
109
87
|
|
|
88
|
+
// TODO move master relase admin outside constructor (same construction as for registry admin)
|
|
110
89
|
constructor(Registry registry)
|
|
111
90
|
AccessManaged(msg.sender)
|
|
112
91
|
{
|
|
113
|
-
|
|
114
|
-
if(!_isRegistry(address(registry))) {
|
|
92
|
+
if (!ContractLib.isRegistry(address(registry))) {
|
|
115
93
|
revert ErrorReleaseRegistryNotRegistry(registry);
|
|
116
94
|
}
|
|
117
95
|
|
|
118
96
|
setAuthority(registry.getAuthority());
|
|
119
97
|
|
|
120
98
|
_registry = registry;
|
|
121
|
-
|
|
99
|
+
_registryAdmin = RegistryAdmin(_registry.getRegistryAdminAddress());
|
|
100
|
+
_masterReleaseAdmin = new ReleaseAdmin(
|
|
101
|
+
_cloneNewAccessManager());
|
|
122
102
|
|
|
123
|
-
_initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
|
|
124
103
|
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
|
125
104
|
}
|
|
126
105
|
|
|
127
|
-
/// @dev
|
|
128
|
-
///
|
|
106
|
+
/// @dev Initiates the creation of a new GIF release by the GIF admin.
|
|
107
|
+
/// Sets previous release into SKIPPED state if it was created but not activated.
|
|
108
|
+
/// Sets the new release into state SCHEDULED.
|
|
129
109
|
function createNextRelease()
|
|
130
110
|
external
|
|
131
111
|
restricted() // GIF_ADMIN_ROLE
|
|
132
112
|
returns(VersionPart)
|
|
133
113
|
{
|
|
134
|
-
|
|
114
|
+
VersionPart release = _next;
|
|
115
|
+
|
|
116
|
+
if(isValidTransition(RELEASE(), _releaseInfo[release].state, SKIPPED())) {
|
|
117
|
+
_releaseInfo[release].state = SKIPPED();
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
release = VersionPartLib.toVersionPart(release.toInt() + 1);
|
|
121
|
+
_release.push(release);
|
|
122
|
+
|
|
123
|
+
_next = release;
|
|
124
|
+
_releaseInfo[release].version = release;
|
|
125
|
+
_releaseInfo[release].state = getInitialState(RELEASE());
|
|
135
126
|
_servicesToRegister = 0;
|
|
136
127
|
_registeredServices = 0;
|
|
137
|
-
_state[_next] = getInitialState(RELEASE());
|
|
138
128
|
|
|
139
129
|
return _next;
|
|
140
130
|
}
|
|
@@ -146,107 +136,90 @@ contract ReleaseRegistry is
|
|
|
146
136
|
external
|
|
147
137
|
restricted() // GIF_MANAGER_ROLE
|
|
148
138
|
returns(
|
|
149
|
-
|
|
150
|
-
VersionPart
|
|
139
|
+
ReleaseAdmin releaseAdmin,
|
|
140
|
+
VersionPart releaseVersion,
|
|
151
141
|
bytes32 releaseSalt
|
|
152
142
|
)
|
|
153
143
|
{
|
|
154
|
-
|
|
155
|
-
|
|
144
|
+
releaseVersion = _next;
|
|
145
|
+
|
|
146
|
+
// release can transition into DEPLOYING state
|
|
147
|
+
checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
|
|
148
|
+
|
|
149
|
+
// verify authorizations
|
|
150
|
+
uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
|
|
151
|
+
|
|
152
|
+
// create and initialize release admin
|
|
153
|
+
releaseAdmin = _cloneNewReleaseAdmin(serviceAuthorization, releaseVersion);
|
|
154
|
+
releaseSalt = salt;
|
|
156
155
|
|
|
157
156
|
// ensures unique salt
|
|
158
157
|
// TODO CreateX have clones capability also
|
|
159
158
|
// what would releaseSalt look like if used with CreateX in pemissioned mode?
|
|
160
|
-
releaseSalt = keccak256(
|
|
159
|
+
/*releaseSalt = keccak256(
|
|
161
160
|
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
|
-
}
|
|
161
|
+
bytes32(releaseVersion.toInt()),
|
|
162
|
+
salt));*/
|
|
189
163
|
|
|
190
164
|
_servicesToRegister = serviceDomainsCount;
|
|
191
|
-
|
|
165
|
+
_releaseInfo[releaseVersion].state = DEPLOYING();
|
|
166
|
+
_releaseInfo[releaseVersion].salt = releaseSalt;
|
|
167
|
+
// TODO allow for the same serviceAuthorization address to be used for multiple releases?
|
|
168
|
+
_releaseInfo[releaseVersion].auth = serviceAuthorization;
|
|
169
|
+
_releaseInfo[releaseVersion].releaseAdmin = address(releaseAdmin);
|
|
192
170
|
|
|
193
|
-
emit LogReleaseCreation(
|
|
171
|
+
emit LogReleaseCreation(releaseAdmin, releaseVersion, releaseSalt);
|
|
194
172
|
}
|
|
195
173
|
|
|
196
|
-
// TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
|
|
197
174
|
function registerService(IService service)
|
|
198
175
|
external
|
|
199
176
|
restricted // GIF_MANAGER_ROLE
|
|
200
177
|
returns(NftId nftId)
|
|
201
178
|
{
|
|
202
179
|
VersionPart releaseVersion = _next;
|
|
203
|
-
StateId state = _state[releaseVersion];
|
|
204
|
-
|
|
205
|
-
// verify release in state DEPLOYING
|
|
206
|
-
if (!isValidTransition(RELEASE(), state, DEPLOYING())) {
|
|
207
|
-
// TOOD name must represent failed state transition
|
|
208
|
-
revert ErrorReleaseRegistryServiceRegistrationDisallowed(state);
|
|
209
|
-
}
|
|
210
180
|
|
|
211
|
-
|
|
181
|
+
// release can transition to DEPLOYED state
|
|
182
|
+
checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
|
|
212
183
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}
|
|
184
|
+
address releaseAuthority = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin).authority();
|
|
185
|
+
IServiceAuthorization releaseAuthz = _releaseInfo[releaseVersion].auth;
|
|
186
|
+
ObjectType expectedDomain = releaseAuthz.getServiceDomain(_registeredServices);
|
|
217
187
|
|
|
218
|
-
// service can work with release
|
|
188
|
+
// service can work with release registry and release version
|
|
219
189
|
(
|
|
220
190
|
IRegistry.ObjectInfo memory info,
|
|
221
191
|
ObjectType serviceDomain,
|
|
222
192
|
VersionPart serviceVersion
|
|
223
|
-
|
|
193
|
+
//,string memory serviceName
|
|
194
|
+
) = _verifyService(
|
|
195
|
+
service,
|
|
196
|
+
releaseAuthority,
|
|
197
|
+
releaseVersion,
|
|
198
|
+
expectedDomain
|
|
199
|
+
);
|
|
200
|
+
|
|
201
|
+
//_releaseInfo[releaseVersion].addresses.push(address(service)); // TODO get this info from auth contract?
|
|
202
|
+
//_releaseInfo[releaseVersion].domains.push(serviceDomain);
|
|
203
|
+
//_releaseInfo[releaseVersion].names.push(serviceName); // TODO if needed read in _verifyService()
|
|
224
204
|
|
|
225
|
-
//
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
205
|
+
_registeredServices++; // TODO use releaseInfo.someArray.length instead of _registeredServices
|
|
206
|
+
|
|
207
|
+
// release fully deployed
|
|
208
|
+
if(_servicesToRegister == _registeredServices) {
|
|
209
|
+
_releaseInfo[releaseVersion].state = DEPLOYED();
|
|
229
210
|
}
|
|
230
211
|
|
|
231
|
-
// TODO: service address matches defined in release
|
|
212
|
+
// TODO: service address matches defined in release auth (precalculated one)
|
|
213
|
+
// revert ErrorReleaseRegistryServiceAddressMismatch()
|
|
232
214
|
|
|
233
215
|
// setup service authorization
|
|
234
|
-
|
|
235
|
-
|
|
216
|
+
ReleaseAdmin releaseAdmin = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin);
|
|
217
|
+
releaseAdmin.setReleaseLocked(false);
|
|
218
|
+
releaseAdmin.authorizeService(
|
|
236
219
|
service,
|
|
237
220
|
serviceDomain,
|
|
238
221
|
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++;
|
|
222
|
+
releaseAdmin.setReleaseLocked(true);
|
|
250
223
|
|
|
251
224
|
// register service with registry
|
|
252
225
|
nftId = _registry.registerService(info, serviceVersion, serviceDomain);
|
|
@@ -254,79 +227,67 @@ contract ReleaseRegistry is
|
|
|
254
227
|
}
|
|
255
228
|
|
|
256
229
|
|
|
230
|
+
// TODO return activated version
|
|
257
231
|
function activateNextRelease()
|
|
258
232
|
external
|
|
259
233
|
restricted // GIF_ADMIN_ROLE
|
|
260
234
|
{
|
|
261
|
-
VersionPart
|
|
262
|
-
StateId state = _state[version];
|
|
263
|
-
StateId newState = ACTIVE();
|
|
235
|
+
VersionPart release = _next;
|
|
264
236
|
|
|
265
|
-
//
|
|
266
|
-
|
|
267
|
-
revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
|
|
268
|
-
}
|
|
237
|
+
// release can transition to ACTIVE state
|
|
238
|
+
checkTransition(_releaseInfo[release].state, RELEASE(), DEPLOYED(), ACTIVE());
|
|
269
239
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
240
|
+
_latest = release;
|
|
241
|
+
_releaseInfo[release].state = ACTIVE();
|
|
242
|
+
_releaseInfo[release].activatedAt = TimestampLib.blockTimestamp();
|
|
243
|
+
_releaseInfo[release].disabledAt = TimestampLib.max();
|
|
274
244
|
|
|
275
|
-
//
|
|
276
|
-
|
|
245
|
+
// grant special roles for registry/staking/pool services
|
|
246
|
+
// this will enable access to core contracts functions
|
|
247
|
+
|
|
248
|
+
// registry service MUST be registered for each release
|
|
249
|
+
address service = _registry.getServiceAddress(REGISTRY(), release);
|
|
277
250
|
if(service == address(0)) {
|
|
278
|
-
revert
|
|
251
|
+
revert ErrorReleaseRegistryRegistryServiceMissing(release);
|
|
279
252
|
}
|
|
280
253
|
|
|
281
|
-
|
|
282
|
-
_state[version] = newState;
|
|
283
|
-
|
|
284
|
-
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
|
254
|
+
_registryAdmin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
|
|
285
255
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
/// @dev stop all operations with release services
|
|
290
|
-
function pauseRelease(VersionPart version)
|
|
291
|
-
external
|
|
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);
|
|
256
|
+
service = _registry.getServiceAddress(STAKING(), release);
|
|
257
|
+
if(service != address(0)) {
|
|
258
|
+
_registryAdmin.grantServiceRoleForAllVersions(IService(service), STAKING());
|
|
300
259
|
}
|
|
301
260
|
|
|
302
|
-
|
|
261
|
+
service = _registry.getServiceAddress(POOL(), release);
|
|
262
|
+
if(service != address(0)) {
|
|
263
|
+
_registryAdmin.grantServiceRoleForAllVersions(IService(service), POOL());
|
|
264
|
+
}
|
|
303
265
|
|
|
304
|
-
|
|
305
|
-
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
|
|
266
|
+
_setReleaseLocked(release, false);
|
|
306
267
|
|
|
307
|
-
emit
|
|
268
|
+
emit LogReleaseActivation(release);
|
|
308
269
|
}
|
|
309
270
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
restricted // GIF_ADMIN_ROLE
|
|
271
|
+
/// @dev stop/resume operations with restricted functions
|
|
272
|
+
function setActive(VersionPart release, bool active)
|
|
273
|
+
public
|
|
274
|
+
restricted
|
|
315
275
|
{
|
|
316
|
-
StateId state =
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
276
|
+
StateId state = _releaseInfo[release].state;
|
|
277
|
+
|
|
278
|
+
if(active) {
|
|
279
|
+
checkTransition(state, RELEASE(), PAUSED(), ACTIVE());
|
|
280
|
+
_releaseInfo[release].state = ACTIVE();
|
|
281
|
+
_releaseInfo[release].disabledAt = TimestampLib.max();
|
|
282
|
+
emit LogReleaseEnabled(release);
|
|
283
|
+
} else {
|
|
284
|
+
checkTransition(state, RELEASE(), ACTIVE(), PAUSED());
|
|
285
|
+
_releaseInfo[release].state = PAUSED();
|
|
286
|
+
_releaseInfo[release].disabledAt = TimestampLib.blockTimestamp();
|
|
287
|
+
emit LogReleaseDisabled(release);
|
|
322
288
|
}
|
|
323
289
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
_state[version] = newState;
|
|
327
|
-
_releaseInfo[version].disabledAt = zeroTimestamp();
|
|
328
|
-
|
|
329
|
-
emit LogReleaseEnabled(version);
|
|
290
|
+
_setReleaseLocked(release, !active);
|
|
330
291
|
}
|
|
331
292
|
|
|
332
293
|
//--- view functions ----------------------------------------------------//
|
|
@@ -339,44 +300,55 @@ contract ReleaseRegistry is
|
|
|
339
300
|
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
|
340
301
|
}
|
|
341
302
|
|
|
342
|
-
function isActiveRelease(VersionPart
|
|
343
|
-
return
|
|
303
|
+
function isActiveRelease(VersionPart release) public view returns(bool) {
|
|
304
|
+
return _releaseInfo[release].state == ACTIVE();
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
function getReleaseInfo(VersionPart release) external view returns(IRelease.ReleaseInfo memory) {
|
|
308
|
+
return _releaseInfo[release];
|
|
344
309
|
}
|
|
345
310
|
|
|
346
|
-
|
|
347
|
-
|
|
311
|
+
/// @dev Returns the number of created releases.
|
|
312
|
+
/// Releases might be in another state than ACTIVE.
|
|
313
|
+
function releases() external view returns (uint) {
|
|
314
|
+
return _release.length;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/// @dev Returns the n-th release version.
|
|
318
|
+
/// Valid values for idx [0 .. releases() - 1]
|
|
319
|
+
function getVersion(uint256 idx) external view returns (VersionPart release) {
|
|
320
|
+
// return _releases;
|
|
321
|
+
return _release[idx];
|
|
348
322
|
}
|
|
349
323
|
|
|
350
324
|
function getNextVersion() public view returns(VersionPart) {
|
|
351
325
|
return _next;
|
|
352
326
|
}
|
|
353
327
|
|
|
328
|
+
/// @dev Returns the latest activated relase version.
|
|
329
|
+
/// There is no guarantee that the release is not currently paused.
|
|
354
330
|
function getLatestVersion() external view returns(VersionPart) {
|
|
355
331
|
return _latest;
|
|
356
332
|
}
|
|
357
333
|
|
|
358
|
-
function
|
|
359
|
-
return
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
function getState(VersionPart version) external view returns (StateId stateId) {
|
|
363
|
-
return _state[version];
|
|
334
|
+
function getState(VersionPart release) external view returns (StateId stateId) {
|
|
335
|
+
return _releaseInfo[release].state;
|
|
364
336
|
}
|
|
365
337
|
|
|
366
338
|
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
|
367
339
|
return _servicesToRegister - _registeredServices;
|
|
368
340
|
}
|
|
369
341
|
|
|
370
|
-
function getServiceAuthorization(VersionPart
|
|
342
|
+
function getServiceAuthorization(VersionPart release)
|
|
371
343
|
external
|
|
372
344
|
view
|
|
373
345
|
returns (IServiceAuthorization serviceAuthorization)
|
|
374
346
|
{
|
|
375
|
-
return
|
|
347
|
+
return _releaseInfo[release].auth;
|
|
376
348
|
}
|
|
377
349
|
|
|
378
350
|
function getRegistryAdmin() external view returns (address) {
|
|
379
|
-
return address(
|
|
351
|
+
return address(_registryAdmin);
|
|
380
352
|
}
|
|
381
353
|
|
|
382
354
|
//--- IRegistryLinked ------------------------------------------------------//
|
|
@@ -387,58 +359,86 @@ contract ReleaseRegistry is
|
|
|
387
359
|
|
|
388
360
|
//--- private functions ----------------------------------------------------//
|
|
389
361
|
|
|
390
|
-
function
|
|
362
|
+
function _setReleaseLocked(VersionPart release, bool locked)
|
|
391
363
|
private
|
|
392
364
|
{
|
|
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
|
-
}
|
|
365
|
+
ReleaseAdmin(
|
|
366
|
+
_releaseInfo[release].releaseAdmin).setReleaseLocked(locked);
|
|
413
367
|
}
|
|
414
368
|
|
|
415
|
-
function
|
|
369
|
+
function _cloneNewReleaseAdmin(
|
|
370
|
+
IServiceAuthorization serviceAuthorization,
|
|
371
|
+
VersionPart release
|
|
372
|
+
)
|
|
416
373
|
private
|
|
374
|
+
returns (ReleaseAdmin clonedAdmin)
|
|
417
375
|
{
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
376
|
+
// clone and setup release specific release admin
|
|
377
|
+
clonedAdmin = ReleaseAdmin(
|
|
378
|
+
Clones.clone(address(_masterReleaseAdmin)));
|
|
379
|
+
|
|
380
|
+
string memory releaseAdminName = string(
|
|
381
|
+
abi.encodePacked(
|
|
382
|
+
"ReleaseAdminV",
|
|
383
|
+
release.toString()));
|
|
384
|
+
|
|
385
|
+
clonedAdmin.initialize(
|
|
386
|
+
address(_cloneNewAccessManager()),
|
|
387
|
+
releaseAdminName);
|
|
388
|
+
|
|
389
|
+
clonedAdmin.completeSetup(
|
|
390
|
+
address(_registry),
|
|
391
|
+
address(serviceAuthorization),
|
|
392
|
+
release,
|
|
393
|
+
address(this)); // release registry (this contract)
|
|
394
|
+
|
|
395
|
+
// lock release (remains locked until activation)
|
|
396
|
+
clonedAdmin.setReleaseLocked(true);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
function _cloneNewAccessManager()
|
|
401
|
+
private
|
|
402
|
+
returns (address accessManager)
|
|
403
|
+
{
|
|
404
|
+
return Clones.clone(address(_registryAdmin.authority()));
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
function _verifyServiceAuthorization(
|
|
409
|
+
IServiceAuthorization serviceAuthorization,
|
|
410
|
+
VersionPart releaseVersion,
|
|
411
|
+
bytes32 salt
|
|
412
|
+
)
|
|
413
|
+
private
|
|
414
|
+
view
|
|
415
|
+
returns (uint256 serviceDomainsCount)
|
|
416
|
+
{
|
|
417
|
+
// authorization contract supports IServiceAuthorization interface
|
|
418
|
+
if(!ContractLib.supportsInterface(address(serviceAuthorization), type(IServiceAuthorization).interfaceId)) {
|
|
419
|
+
revert ErrorReleaseRegistryNotServiceAuth(address(serviceAuthorization));
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
// authorizaions contract version matches with release version
|
|
423
|
+
VersionPart authVersion = serviceAuthorization.getRelease();
|
|
424
|
+
if (releaseVersion != authVersion) {
|
|
425
|
+
revert ErrorReleaseRegistryServiceAuthVersionMismatch(serviceAuthorization, releaseVersion, authVersion);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
// sanity check to ensure service domain list is not empty
|
|
429
|
+
serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
|
|
430
|
+
if (serviceDomainsCount == 0) {
|
|
431
|
+
revert ErrorReleaseRegistryServiceAuthDomainsZero(serviceAuthorization, releaseVersion);
|
|
438
432
|
}
|
|
439
433
|
}
|
|
440
434
|
|
|
441
|
-
|
|
435
|
+
// TODO get service names
|
|
436
|
+
function _verifyService(
|
|
437
|
+
IService service,
|
|
438
|
+
address expectedAuthority,
|
|
439
|
+
VersionPart expectedVersion,
|
|
440
|
+
ObjectType expectedDomain
|
|
441
|
+
)
|
|
442
442
|
internal
|
|
443
443
|
view
|
|
444
444
|
returns(
|
|
@@ -459,22 +459,25 @@ contract ReleaseRegistry is
|
|
|
459
459
|
|
|
460
460
|
_verifyServiceInfo(service, serviceInfo, owner);
|
|
461
461
|
|
|
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
462
|
if(serviceAuthority != expectedAuthority) {
|
|
467
|
-
revert
|
|
463
|
+
revert ErrorReleaseRegistryServiceAuthorityMismatch(
|
|
468
464
|
service,
|
|
469
465
|
serviceAuthority,
|
|
470
466
|
expectedAuthority);
|
|
471
467
|
}
|
|
472
468
|
|
|
473
|
-
if(serviceVersion !=
|
|
474
|
-
revert
|
|
469
|
+
if(serviceVersion != expectedVersion) {
|
|
470
|
+
revert ErrorReleaseRegistryServiceVersionMismatch(
|
|
475
471
|
service,
|
|
476
472
|
serviceVersion,
|
|
477
|
-
|
|
473
|
+
expectedVersion);
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
if(serviceDomain != expectedDomain) {
|
|
477
|
+
revert ErrorReleaseRegistryServiceDomainMismatch(
|
|
478
|
+
service,
|
|
479
|
+
expectedDomain,
|
|
480
|
+
serviceDomain);
|
|
478
481
|
}
|
|
479
482
|
}
|
|
480
483
|
|
|
@@ -488,7 +491,7 @@ contract ReleaseRegistry is
|
|
|
488
491
|
view
|
|
489
492
|
{
|
|
490
493
|
if(info.objectAddress != address(service)) {
|
|
491
|
-
revert ErrorReleaseRegistryServiceInfoAddressInvalid(service,
|
|
494
|
+
revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, info.objectAddress);
|
|
492
495
|
}
|
|
493
496
|
|
|
494
497
|
if(info.isInterceptor != false) { // service is never interceptor
|
|
@@ -513,21 +516,5 @@ contract ReleaseRegistry is
|
|
|
513
516
|
revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
|
|
514
517
|
}
|
|
515
518
|
}
|
|
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
519
|
}
|
|
533
520
|
|