@etherisc/gif-next 0.0.2-df73b56-462 → 0.0.2-e016345-525
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -6
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +944 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +746 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +711 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +96 -37
- 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/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 +60 -13
- 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/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -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 +159 -209
- 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 +99 -125
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +175 -86
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +104 -60
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +87 -108
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +52 -0
- 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 +1441 -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 +1991 -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 +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +187 -169
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +131 -157
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +262 -202
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +562 -252
- 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 +147 -42
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +116 -48
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +53 -101
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +149 -60
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +186 -125
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -85
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +514 -88
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +113 -148
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +72 -40
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +185 -124
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -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 +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +119 -169
- 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 +82 -103
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +95 -121
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +142 -79
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +92 -36
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +95 -149
- 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 +143 -150
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +86 -66
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +48 -33
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +82 -142
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +272 -185
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +95 -160
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +408 -263
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +109 -41
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +114 -45
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -36
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +156 -141
- 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 +183 -90
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +102 -58
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +63 -7
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +64 -8
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +96 -19
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +139 -119
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +215 -125
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +102 -54
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +165 -107
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +85 -45
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +152 -137
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -26
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -30
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +91 -15
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
- 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 +135 -51
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +203 -162
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +89 -172
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +65 -29
- 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 +123 -225
- 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 +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +72 -80
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +478 -477
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +96 -72
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +42 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
- 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/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +61 -64
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +425 -261
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +82 -103
- 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 +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -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 +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +94 -120
- 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 +18 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +3 -3
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +66 -8
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +42 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +79 -100
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +158 -170
- 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 +81 -51
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +82 -53
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +69 -33
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +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 +2 -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 +99 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/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/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +244 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +42 -0
- package/contracts/authorization/AccessAdmin.sol +86 -62
- package/contracts/authorization/Authorization.sol +111 -39
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -2
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +8 -7
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +32 -40
- package/contracts/distribution/DistributionService.sol +80 -59
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- 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 +436 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +37 -6
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +24 -23
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +38 -34
- package/contracts/instance/IInstance.sol +11 -3
- package/contracts/instance/IInstanceService.sol +7 -29
- package/contracts/instance/Instance.sol +36 -26
- package/contracts/instance/InstanceAdmin.sol +38 -38
- package/contracts/instance/InstanceAuthorizationV3.sol +50 -32
- package/contracts/instance/InstanceReader.sol +168 -19
- package/contracts/instance/InstanceService.sol +51 -126
- package/contracts/instance/RiskSet.sol +119 -0
- package/contracts/instance/base/ObjectSet.sol +24 -25
- package/contracts/instance/module/IComponents.sol +7 -5
- package/contracts/instance/module/IPolicy.sol +4 -3
- package/contracts/instance/module/IRisk.sol +1 -0
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +4 -15
- package/contracts/oracle/OracleService.sol +104 -76
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +12 -2
- package/contracts/pool/BundleService.sol +68 -81
- package/contracts/pool/IBundleService.sol +2 -14
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +30 -37
- package/contracts/pool/Pool.sol +123 -120
- package/contracts/pool/PoolService.sol +261 -154
- package/contracts/product/ApplicationService.sol +28 -16
- package/contracts/product/BasicProduct.sol +8 -12
- package/contracts/product/BasicProductAuthorization.sol +1 -3
- package/contracts/product/ClaimService.sol +110 -69
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +3 -2
- package/contracts/product/IPolicyService.sol +18 -5
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +23 -3
- package/contracts/product/PolicyService.sol +277 -187
- package/contracts/product/PricingService.sol +8 -8
- package/contracts/product/Product.sol +76 -75
- package/contracts/product/RiskService.sol +14 -3
- package/contracts/registry/ChainNft.sol +6 -9
- package/contracts/registry/IRegistry.sol +8 -3
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +29 -6
- package/contracts/registry/RegistryAdmin.sol +28 -35
- package/contracts/registry/RegistryService.sol +33 -44
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +202 -208
- package/contracts/registry/ServiceAuthorizationV3.sol +28 -52
- package/contracts/shared/Component.sol +56 -105
- package/contracts/shared/ComponentService.sol +376 -324
- package/contracts/shared/ComponentVerifyingService.sol +27 -16
- package/contracts/shared/ContractLib.sol +196 -10
- package/contracts/shared/IComponent.sol +6 -14
- package/contracts/shared/IComponentService.sol +45 -37
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InstanceLinkedComponent.sol +68 -43
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +23 -3
- package/contracts/shared/PolicyHolder.sol +4 -0
- package/contracts/shared/Registerable.sol +15 -7
- package/contracts/shared/RegistryLinked.sol +6 -12
- package/contracts/shared/Service.sol +4 -7
- package/contracts/shared/TokenHandler.sol +316 -66
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +9 -4
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/Staking.sol +41 -24
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +56 -23
- package/contracts/type/Amount.sol +15 -0
- 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 +11 -0
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +30 -4
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/StateId.sol +14 -1
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +2 -1
- 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/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,45 +1,34 @@
|
|
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
|
-
import {ILifecycle} from "../shared/ILifecycle.sol";
|
22
|
-
import {INftOwnable} from "../shared/INftOwnable.sol";
|
23
16
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
24
17
|
|
25
18
|
import {IRegistry} from "./IRegistry.sol";
|
26
19
|
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
27
|
-
import {IRegistryService} from "./IRegistryService.sol";
|
28
20
|
import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
|
29
|
-
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
30
21
|
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
31
22
|
import {Registry} from "./Registry.sol";
|
32
|
-
import {TokenRegistry} from "./TokenRegistry.sol";
|
33
23
|
import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
|
34
24
|
|
25
|
+
|
35
26
|
contract ReleaseRegistry is
|
36
27
|
AccessManaged,
|
37
28
|
ReleaseLifecycle,
|
38
29
|
IRegistryLinked
|
39
30
|
{
|
40
|
-
|
41
|
-
|
42
|
-
uint256 public constant INITIAL_GIF_VERSION = 3;
|
31
|
+
uint256 public constant INITIAL_GIF_VERSION = 3;// first active version
|
43
32
|
|
44
33
|
event LogReleaseCreation(VersionPart version, bytes32 salt);
|
45
34
|
event LogReleaseActivation(VersionPart version);
|
@@ -49,35 +38,22 @@ contract ReleaseRegistry is
|
|
49
38
|
// constructor
|
50
39
|
error ErrorReleaseRegistryNotRegistry(Registry registry);
|
51
40
|
|
52
|
-
//
|
53
|
-
error
|
54
|
-
|
55
|
-
|
56
|
-
error ErrorReleaseRegistryReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
|
57
|
-
error ErrorReleaseRegistryReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
|
58
|
-
error ErrorReleaseRegistryVersionMismatch(VersionPart expected, VersionPart actual);
|
59
|
-
error ErrorReleaseRegistryNoDomains(VersionPart version);
|
41
|
+
// _verifyServiceAuthorization
|
42
|
+
error ErrorReleaseRegistryNotServiceAuth(address notAuth);
|
43
|
+
error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
|
44
|
+
error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart version);
|
60
45
|
|
61
46
|
// registerService
|
62
|
-
error ErrorReleaseRegistryNoServiceRegistrationExpected();
|
63
|
-
error ErrorReleaseRegistryServiceRegistrationDisallowed(StateId currentStateId);
|
64
|
-
error ErrorReleaseRegistryServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
|
65
|
-
error ErrorReleaseRegistryNotService(address notService);
|
66
47
|
error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
|
67
48
|
|
68
49
|
// activateNextRelease
|
69
|
-
error
|
70
|
-
error ErrorReleaseRegistryReleaseNotCreated(VersionPart releaseVersion);
|
71
|
-
error ErrorReleaseRegistryReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
72
|
-
error ErrorReleaseRegistryReleaseAlreadyActivated(VersionPart releaseVersion);
|
73
|
-
|
74
|
-
// disableRelease
|
75
|
-
error ErrorReleaseRegistryReleaseNotActivated(VersionPart releaseVersion);
|
76
|
-
error ErrorReleaseRegistryReleaseAlreadyDisabled(VersionPart releaseVersion);
|
50
|
+
error ErrorReleaseRegistryRegistryServiceMissing(VersionPart releaseVersion);
|
77
51
|
|
78
52
|
// _verifyService
|
79
|
-
error
|
80
|
-
error
|
53
|
+
error ErrorReleaseRegistryNotService(address notService);
|
54
|
+
error ErrorReleaseRegistryServiceAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
55
|
+
error ErrorReleaseRegistryServiceVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
56
|
+
error ErrorReleaseRegistryServiceDomainMismatch(IService service, ObjectType expectedDomain, ObjectType actualDomain);
|
81
57
|
|
82
58
|
// _verifyServiceInfo
|
83
59
|
error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
|
@@ -87,23 +63,13 @@ contract ReleaseRegistry is
|
|
87
63
|
error ErrorReleaseRegistryServiceSelfRegistration(IService service);
|
88
64
|
error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
|
89
65
|
|
90
|
-
Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
|
91
|
-
|
92
66
|
RegistryAdmin public immutable _admin;
|
93
67
|
Registry public immutable _registry;
|
94
|
-
IRegisterable private _staking;
|
95
|
-
address private _stakingOwner;
|
96
68
|
|
97
69
|
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
98
|
-
|
99
|
-
|
100
|
-
// TODO check where/why this is used
|
101
|
-
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
102
|
-
|
103
|
-
VersionPart private _initial;// first active version
|
70
|
+
VersionPart [] internal _release; // array of all created releases
|
104
71
|
VersionPart internal _latest; // latest active version
|
105
72
|
VersionPart internal _next; // version to create and activate
|
106
|
-
mapping(VersionPart verson => StateId releaseState) private _state;
|
107
73
|
|
108
74
|
uint256 internal _registeredServices;
|
109
75
|
uint256 internal _servicesToRegister;
|
@@ -111,8 +77,7 @@ contract ReleaseRegistry is
|
|
111
77
|
constructor(Registry registry)
|
112
78
|
AccessManaged(msg.sender)
|
113
79
|
{
|
114
|
-
|
115
|
-
if(!_isRegistry(address(registry))) {
|
80
|
+
if (!ContractLib.isRegistry(address(registry))) {
|
116
81
|
revert ErrorReleaseRegistryNotRegistry(registry);
|
117
82
|
}
|
118
83
|
|
@@ -121,21 +86,30 @@ contract ReleaseRegistry is
|
|
121
86
|
_registry = registry;
|
122
87
|
_admin = RegistryAdmin(_registry.getRegistryAdminAddress());
|
123
88
|
|
124
|
-
_initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
|
125
89
|
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
126
90
|
}
|
127
91
|
|
128
|
-
/// @dev
|
92
|
+
/// @dev sets previous release into SKIPPED state if it was created but not activated
|
129
93
|
/// sets next release into state SCHEDULED
|
130
94
|
function createNextRelease()
|
131
95
|
external
|
132
96
|
restricted() // GIF_ADMIN_ROLE
|
133
97
|
returns(VersionPart)
|
134
98
|
{
|
135
|
-
|
99
|
+
VersionPart version = _next;
|
100
|
+
|
101
|
+
if(isValidTransition(RELEASE(), _releaseInfo[version].state, SKIPPED())) {
|
102
|
+
_releaseInfo[version].state = SKIPPED();
|
103
|
+
}
|
104
|
+
|
105
|
+
version = VersionPartLib.toVersionPart(version.toInt() + 1);
|
106
|
+
_release.push(version);
|
107
|
+
|
108
|
+
_next = version;
|
109
|
+
_releaseInfo[version].version = version;
|
110
|
+
_releaseInfo[version].state = getInitialState(RELEASE());
|
136
111
|
_servicesToRegister = 0;
|
137
112
|
_registeredServices = 0;
|
138
|
-
_state[_next] = getInitialState(RELEASE());
|
139
113
|
|
140
114
|
return _next;
|
141
115
|
}
|
@@ -147,51 +121,36 @@ contract ReleaseRegistry is
|
|
147
121
|
external
|
148
122
|
restricted() // GIF_MANAGER_ROLE
|
149
123
|
returns(
|
150
|
-
address
|
151
|
-
VersionPart
|
124
|
+
address releaseAuthority,
|
125
|
+
VersionPart releaseVersion,
|
152
126
|
bytes32 releaseSalt
|
153
127
|
)
|
154
128
|
{
|
155
|
-
|
156
|
-
version = _next;
|
129
|
+
releaseVersion = _next;
|
157
130
|
|
131
|
+
// release can transition into DEPLOYING state
|
132
|
+
checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
|
133
|
+
|
134
|
+
uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
|
135
|
+
|
136
|
+
releaseAuthority = _admin.authority();
|
137
|
+
releaseSalt = salt;
|
158
138
|
// ensures unique salt
|
159
139
|
// TODO CreateX have clones capability also
|
160
140
|
// what would releaseSalt look like if used with CreateX in pemissioned mode?
|
161
|
-
releaseSalt = keccak256(
|
141
|
+
/*releaseSalt = keccak256(
|
162
142
|
bytes.concat(
|
163
|
-
bytes32(
|
164
|
-
salt))
|
165
|
-
|
166
|
-
// verify release in state SCHEDULED
|
167
|
-
if (!isValidTransition(RELEASE(), _state[version], DEPLOYING())) {
|
168
|
-
revert ErrorReleaseRegistryReleasePreparationDisallowed(version, _state[version]);
|
169
|
-
}
|
170
|
-
|
171
|
-
_state[version] = DEPLOYING();
|
172
|
-
|
173
|
-
// verify authorizaion contract release matches with expected version
|
174
|
-
VersionPart releaseVersion = serviceAuthorization.getRelease();
|
175
|
-
if (releaseVersion != version) {
|
176
|
-
revert ErrorReleaseRegistryVersionMismatch(version, releaseVersion);
|
177
|
-
}
|
178
|
-
|
179
|
-
|
180
|
-
// sanity check to ensure service domain list is not empty
|
181
|
-
uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
|
182
|
-
if (serviceDomainsCount == 0) {
|
183
|
-
revert ErrorReleaseRegistryNoDomains(version);
|
184
|
-
}
|
185
|
-
|
186
|
-
// verify prepareNextRelease is only called once per release
|
187
|
-
if(_servicesToRegister > 0) {
|
188
|
-
revert ErrorReleaseRegistryReleaseAlreadyPrepared(version, _state[version]);
|
189
|
-
}
|
143
|
+
bytes32(releaseVersion.toInt()),
|
144
|
+
salt));*/
|
190
145
|
|
191
146
|
_servicesToRegister = serviceDomainsCount;
|
192
|
-
|
147
|
+
_releaseInfo[releaseVersion].state = DEPLOYING();
|
148
|
+
_releaseInfo[releaseVersion].salt = releaseSalt;
|
149
|
+
// TODO allow for the same serviceAuthorization address to be used for multiple releases?
|
150
|
+
_releaseInfo[releaseVersion].auth = serviceAuthorization;
|
151
|
+
//_releaseInfo[releaseVersion].authority = releaseAuthority;
|
193
152
|
|
194
|
-
emit LogReleaseCreation(
|
153
|
+
emit LogReleaseCreation(releaseVersion, releaseSalt);
|
195
154
|
}
|
196
155
|
|
197
156
|
function registerService(IService service)
|
@@ -200,135 +159,124 @@ contract ReleaseRegistry is
|
|
200
159
|
returns(NftId nftId)
|
201
160
|
{
|
202
161
|
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
162
|
|
211
|
-
|
163
|
+
// release can transition to DEPLOYED state
|
164
|
+
checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
|
212
165
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
}
|
166
|
+
address releaseAuthority = _admin.authority();
|
167
|
+
IServiceAuthorization serviceAuth = _releaseInfo[releaseVersion].auth;
|
168
|
+
ObjectType expectedDomain = serviceAuth.getServiceDomain(_registeredServices);
|
217
169
|
|
218
|
-
// service can work with release
|
170
|
+
// service can work with release registry and release version
|
219
171
|
(
|
220
172
|
IRegistry.ObjectInfo memory info,
|
221
173
|
ObjectType serviceDomain,
|
222
174
|
VersionPart serviceVersion
|
223
|
-
|
175
|
+
//,string memory serviceName
|
176
|
+
) = _verifyService(
|
177
|
+
service,
|
178
|
+
releaseAuthority,
|
179
|
+
releaseVersion,
|
180
|
+
expectedDomain
|
181
|
+
);
|
224
182
|
|
225
|
-
//
|
226
|
-
|
227
|
-
if
|
228
|
-
|
183
|
+
//_releaseInfo[releaseVersion].addresses.push(address(service)); // TODO get this info from auth contract?
|
184
|
+
//_releaseInfo[releaseVersion].domains.push(serviceDomain);
|
185
|
+
//_releaseInfo[releaseVersion].names.push(serviceName); // TODO if needed read in _verifyService()
|
186
|
+
|
187
|
+
_registeredServices++; // TODO use releaseInfo.someArray.length instead of _registeredServices
|
188
|
+
|
189
|
+
// release fully deployed
|
190
|
+
if(_servicesToRegister == _registeredServices) {
|
191
|
+
_releaseInfo[releaseVersion].state = DEPLOYED();
|
229
192
|
}
|
230
193
|
|
231
|
-
//
|
232
|
-
//
|
233
|
-
nftId = _registry.registerService(info, serviceVersion, serviceDomain);
|
234
|
-
service.linkToRegisteredNftId();
|
235
|
-
_registeredServices++;
|
194
|
+
// TODO: service address matches defined in release auth (precalculated one)
|
195
|
+
// revert ErrorReleaseRegistryServiceAddressMismatch()
|
236
196
|
|
237
197
|
// setup service authorization
|
238
|
-
// !!! TODO service A can call service B while release is not active
|
239
198
|
_admin.authorizeService(
|
240
|
-
|
199
|
+
serviceAuth,
|
241
200
|
service,
|
242
201
|
serviceDomain,
|
243
|
-
|
244
|
-
|
245
|
-
// special roles for registry/staking/pool service
|
246
|
-
// !!! TODO registry service allowed to call registry while release is not activated (same for staking/pool service and staking)
|
247
|
-
if (
|
248
|
-
serviceDomain == REGISTRY() ||
|
249
|
-
serviceDomain == STAKING() ||
|
250
|
-
serviceDomain == POOL())
|
251
|
-
{
|
252
|
-
_admin.grantServiceRoleForAllVersions(service, serviceDomain);
|
253
|
-
}
|
254
|
-
}
|
255
|
-
|
202
|
+
releaseVersion);
|
256
203
|
|
204
|
+
// register service with registry
|
205
|
+
nftId = _registry.registerService(info, serviceVersion, serviceDomain);
|
206
|
+
service.linkToRegisteredNftId();
|
207
|
+
}
|
208
|
+
// TODO return activated version
|
257
209
|
function activateNextRelease()
|
258
210
|
external
|
259
211
|
restricted // GIF_ADMIN_ROLE
|
260
212
|
{
|
261
213
|
VersionPart version = _next;
|
262
|
-
StateId state = _state[version];
|
263
|
-
StateId newState = ACTIVE();
|
264
214
|
|
265
|
-
//
|
266
|
-
|
267
|
-
revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
|
268
|
-
}
|
215
|
+
// release can transition to ACTIVE state
|
216
|
+
checkTransition(_releaseInfo[version].state, RELEASE(), DEPLOYED(), ACTIVE());
|
269
217
|
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
218
|
+
_latest = version;
|
219
|
+
_releaseInfo[version].state = ACTIVE();
|
220
|
+
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
221
|
+
|
222
|
+
// grant special roles for registry/staking/pool services
|
223
|
+
// this will enable access to core contracts functions
|
274
224
|
|
275
|
-
//
|
225
|
+
// registry service MUST be registered for each release
|
276
226
|
address service = _registry.getServiceAddress(REGISTRY(), version);
|
277
227
|
if(service == address(0)) {
|
278
|
-
revert
|
228
|
+
revert ErrorReleaseRegistryRegistryServiceMissing(version);
|
279
229
|
}
|
280
230
|
|
281
|
-
|
282
|
-
_state[version] = newState;
|
231
|
+
_admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
|
283
232
|
|
284
|
-
|
285
|
-
|
233
|
+
service = _registry.getServiceAddress(STAKING(), version);
|
234
|
+
if(service != address(0)) {
|
235
|
+
_admin.grantServiceRoleForAllVersions(IService(service), STAKING());
|
236
|
+
}
|
237
|
+
|
238
|
+
service = _registry.getServiceAddress(POOL(), version);
|
239
|
+
if(service != address(0)) {
|
240
|
+
_admin.grantServiceRoleForAllVersions(IService(service), POOL());
|
241
|
+
}
|
242
|
+
|
243
|
+
// TODO may run out of gas
|
244
|
+
// TODO test how many service can be locked in one transaction
|
245
|
+
// -> add to docs + each release must test for this -> add to release version tests (in test call with some gas limit?)
|
246
|
+
_setReleaseLocked(version, false);
|
286
247
|
|
287
248
|
emit LogReleaseActivation(version);
|
288
249
|
}
|
289
250
|
|
290
251
|
/// @dev stop all operations with release services
|
291
252
|
function pauseRelease(VersionPart version)
|
292
|
-
external
|
253
|
+
external
|
293
254
|
restricted // GIF_ADMIN_ROLE
|
294
255
|
{
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
// verify release in state ACTIVE
|
299
|
-
if (!isValidTransition(RELEASE(), state, newState)) {
|
300
|
-
revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
|
301
|
-
}
|
256
|
+
// release can transition to PAUSED state
|
257
|
+
checkTransition(_releaseInfo[version].state, RELEASE(), ACTIVE(), PAUSED());
|
302
258
|
|
303
|
-
|
304
|
-
//_releaseAccessManager[version].disable();
|
305
|
-
|
306
|
-
_state[version] = newState;
|
259
|
+
_releaseInfo[version].state = PAUSED();
|
307
260
|
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
|
308
261
|
|
262
|
+
_setReleaseLocked(version, true);
|
263
|
+
|
309
264
|
emit LogReleaseDisabled(version);
|
310
265
|
}
|
311
266
|
|
312
|
-
// TODO consider revert if some delay is expired -> becomes disabled automatically
|
313
267
|
/// @dev resume operations with release services
|
314
268
|
function unpauseRelease(VersionPart version)
|
315
269
|
external
|
316
270
|
restricted // GIF_ADMIN_ROLE
|
317
271
|
{
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
// verify release in state PAUSED
|
322
|
-
if (!isValidTransition(RELEASE(), state, newState)) {
|
323
|
-
revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
|
324
|
-
}
|
325
|
-
|
326
|
-
// TODO come up with a substitute
|
327
|
-
// _releaseAccessManager[version].enable();
|
272
|
+
// release can transition to ACTIVE state
|
273
|
+
checkTransition(_releaseInfo[version].state, RELEASE(), PAUSED(), ACTIVE());
|
328
274
|
|
329
|
-
|
275
|
+
_releaseInfo[version].state = ACTIVE();
|
330
276
|
_releaseInfo[version].disabledAt = zeroTimestamp();
|
331
277
|
|
278
|
+
_setReleaseLocked(version, false);
|
279
|
+
|
332
280
|
emit LogReleaseEnabled(version);
|
333
281
|
}
|
334
282
|
|
@@ -342,33 +290,39 @@ contract ReleaseRegistry is
|
|
342
290
|
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
343
291
|
}
|
344
292
|
|
345
|
-
function isActiveRegistryService(address service) external view returns(bool) {
|
346
|
-
VersionPart version = _releaseVersionByAddress[service];
|
347
|
-
return isActiveRelease(version);
|
348
|
-
}
|
349
|
-
|
350
293
|
function isActiveRelease(VersionPart version) public view returns(bool) {
|
351
|
-
return
|
294
|
+
return _releaseInfo[version].state == ACTIVE();
|
352
295
|
}
|
353
296
|
|
354
297
|
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
355
298
|
return _releaseInfo[version];
|
356
299
|
}
|
357
300
|
|
301
|
+
/// @dev Returns the number of created releases.
|
302
|
+
/// Releases might be in another state than ACTIVE.
|
303
|
+
function releases() external view returns (uint) {
|
304
|
+
return _release.length;
|
305
|
+
}
|
306
|
+
|
307
|
+
/// @dev Returns the n-th release version.
|
308
|
+
/// Valid values for idx [0 .. releases() - 1]
|
309
|
+
function getVersion(uint256 idx) external view returns (VersionPart version) {
|
310
|
+
// return _releases;
|
311
|
+
return _release[idx];
|
312
|
+
}
|
313
|
+
|
358
314
|
function getNextVersion() public view returns(VersionPart) {
|
359
315
|
return _next;
|
360
316
|
}
|
361
317
|
|
318
|
+
/// @dev Returns the latest activated relase version.
|
319
|
+
/// There is no guarantee that the release is not currently paused.
|
362
320
|
function getLatestVersion() external view returns(VersionPart) {
|
363
321
|
return _latest;
|
364
322
|
}
|
365
323
|
|
366
|
-
function getInitialVersion() external view returns(VersionPart) {
|
367
|
-
return _initial;
|
368
|
-
}
|
369
|
-
|
370
324
|
function getState(VersionPart version) external view returns (StateId stateId) {
|
371
|
-
return
|
325
|
+
return _releaseInfo[version].state;
|
372
326
|
}
|
373
327
|
|
374
328
|
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
@@ -380,7 +334,7 @@ contract ReleaseRegistry is
|
|
380
334
|
view
|
381
335
|
returns (IServiceAuthorization serviceAuthorization)
|
382
336
|
{
|
383
|
-
return
|
337
|
+
return _releaseInfo[version].auth;
|
384
338
|
}
|
385
339
|
|
386
340
|
function getRegistryAdmin() external view returns (address) {
|
@@ -395,7 +349,61 @@ contract ReleaseRegistry is
|
|
395
349
|
|
396
350
|
//--- private functions ----------------------------------------------------//
|
397
351
|
|
398
|
-
|
352
|
+
// close / open service targets instead of revoking / granting roles
|
353
|
+
function _setReleaseLocked(VersionPart version, bool locked)
|
354
|
+
private
|
355
|
+
{
|
356
|
+
address service;
|
357
|
+
ObjectType domain;
|
358
|
+
IServiceAuthorization auth = _releaseInfo[version].auth;
|
359
|
+
|
360
|
+
ObjectType[] memory domains = auth.getServiceDomains();
|
361
|
+
for(uint idx = 0; idx < domains.length; idx++)
|
362
|
+
{
|
363
|
+
domain = domains[idx];
|
364
|
+
service = _registry.getServiceAddress(domain, version);
|
365
|
+
assert(service != address(0));
|
366
|
+
|
367
|
+
_admin.setServiceLocked(IService(service), locked);
|
368
|
+
}
|
369
|
+
|
370
|
+
// TODO add check for active/disabled release to core contracts functions interacting with releases
|
371
|
+
}
|
372
|
+
|
373
|
+
function _verifyServiceAuthorization(
|
374
|
+
IServiceAuthorization serviceAuthorization,
|
375
|
+
VersionPart releaseVersion,
|
376
|
+
bytes32 salt
|
377
|
+
)
|
378
|
+
private
|
379
|
+
view
|
380
|
+
returns (uint256 serviceDomainsCount)
|
381
|
+
{
|
382
|
+
// authorization contract supports IServiceAuthorization interface
|
383
|
+
if(!serviceAuthorization.supportsInterface(type(IServiceAuthorization).interfaceId)) {
|
384
|
+
revert ErrorReleaseRegistryNotServiceAuth(address(serviceAuthorization));
|
385
|
+
}
|
386
|
+
|
387
|
+
// authorizaions contract version matches with release version
|
388
|
+
VersionPart authVersion = serviceAuthorization.getRelease();
|
389
|
+
if (releaseVersion != authVersion) {
|
390
|
+
revert ErrorReleaseRegistryServiceAuthVersionMismatch(serviceAuthorization, releaseVersion, authVersion);
|
391
|
+
}
|
392
|
+
|
393
|
+
// sanity check to ensure service domain list is not empty
|
394
|
+
serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
|
395
|
+
if (serviceDomainsCount == 0) {
|
396
|
+
revert ErrorReleaseRegistryServiceAuthDomainsZero(serviceAuthorization, releaseVersion);
|
397
|
+
}
|
398
|
+
}
|
399
|
+
|
400
|
+
// TODO get service names
|
401
|
+
function _verifyService(
|
402
|
+
IService service,
|
403
|
+
address expectedAuthority,
|
404
|
+
VersionPart expectedVersion,
|
405
|
+
ObjectType expectedDomain
|
406
|
+
)
|
399
407
|
internal
|
400
408
|
view
|
401
409
|
returns(
|
@@ -416,22 +424,25 @@ contract ReleaseRegistry is
|
|
416
424
|
|
417
425
|
_verifyServiceInfo(service, serviceInfo, owner);
|
418
426
|
|
419
|
-
VersionPart releaseVersion = _next; // never 0
|
420
|
-
address expectedAuthority = _admin.authority(); // can be zero if registering service when release is not created
|
421
|
-
|
422
|
-
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
423
427
|
if(serviceAuthority != expectedAuthority) {
|
424
|
-
revert
|
428
|
+
revert ErrorReleaseRegistryServiceAuthorityMismatch(
|
425
429
|
service,
|
426
430
|
serviceAuthority,
|
427
431
|
expectedAuthority);
|
428
432
|
}
|
429
433
|
|
430
|
-
if(serviceVersion !=
|
431
|
-
revert
|
434
|
+
if(serviceVersion != expectedVersion) {
|
435
|
+
revert ErrorReleaseRegistryServiceVersionMismatch(
|
432
436
|
service,
|
433
437
|
serviceVersion,
|
434
|
-
|
438
|
+
expectedVersion);
|
439
|
+
}
|
440
|
+
|
441
|
+
if(serviceDomain != expectedDomain) {
|
442
|
+
revert ErrorReleaseRegistryServiceDomainMismatch(
|
443
|
+
service,
|
444
|
+
expectedDomain,
|
445
|
+
serviceDomain);
|
435
446
|
}
|
436
447
|
}
|
437
448
|
|
@@ -445,7 +456,7 @@ contract ReleaseRegistry is
|
|
445
456
|
view
|
446
457
|
{
|
447
458
|
if(info.objectAddress != address(service)) {
|
448
|
-
revert ErrorReleaseRegistryServiceInfoAddressInvalid(service,
|
459
|
+
revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, info.objectAddress);
|
449
460
|
}
|
450
461
|
|
451
462
|
if(info.isInterceptor != false) { // service is never interceptor
|
@@ -470,22 +481,5 @@ contract ReleaseRegistry is
|
|
470
481
|
revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
|
471
482
|
}
|
472
483
|
}
|
473
|
-
|
474
|
-
/// @dev returns true iff a the address passes some simple proxy tests.
|
475
|
-
function _isRegistry(address registryAddress) internal view returns (bool) {
|
476
|
-
|
477
|
-
// zero address is certainly not registry
|
478
|
-
if (registryAddress == address(0)) {
|
479
|
-
return false;
|
480
|
-
}
|
481
|
-
// TODO try catch and return false in case of revert
|
482
|
-
// or just panic
|
483
|
-
// check if contract returns a zero nft id for its own address
|
484
|
-
if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
|
485
|
-
return false;
|
486
|
-
}
|
487
|
-
|
488
|
-
return true;
|
489
|
-
}
|
490
484
|
}
|
491
485
|
|