@etherisc/gif-next 0.0.2-c9b0563-536 → 0.0.2-ca77f81-925
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -16
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1191 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Distribution.sol/Distribution.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +303 -252
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +843 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +61 -122
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +237 -1565
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +368 -197
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +440 -2595
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +683 -329
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +505 -384
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +369 -108
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
- 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 +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +320 -261
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +273 -285
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +379 -334
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1269 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → product/BasicProduct.sol/BasicProduct.json} +765 -214
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +211 -230
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +251 -297
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +270 -215
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +344 -327
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +126 -167
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1257 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +159 -21
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +360 -218
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +395 -35
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +506 -254
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -95
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +703 -91
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +349 -82
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1487 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +178 -242
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Component.sol/Component.json → shared/IComponent.sol/IComponent.json} +192 -217
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +255 -185
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -30
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +84 -154
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +108 -35
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -75
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +131 -60
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +188 -157
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
- package/contracts/authorization/AccessAdmin.sol +591 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +218 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/authorization/IAccessAdmin.sol +136 -0
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/authorization/IServiceAuthorization.sol +38 -0
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/authorization/ServiceAuthorization.sol +90 -0
- package/contracts/distribution/BasicDistribution.sol +149 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
- package/contracts/distribution/Distribution.sol +283 -0
- package/contracts/distribution/DistributionService.sol +302 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/distribution/IDistributionComponent.sol +48 -0
- package/contracts/distribution/IDistributionService.sol +85 -0
- package/contracts/instance/BundleManager.sol +15 -14
- package/contracts/instance/IInstance.sol +59 -45
- package/contracts/instance/IInstanceService.sol +71 -20
- package/contracts/instance/Instance.sol +176 -191
- package/contracts/instance/InstanceAdmin.sol +266 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
- package/contracts/instance/InstanceReader.sol +173 -61
- package/contracts/instance/InstanceService.sol +323 -315
- package/contracts/instance/InstanceServiceManager.sol +12 -22
- package/contracts/instance/InstanceStore.sol +276 -0
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +106 -0
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +13 -18
- package/contracts/instance/module/IAccess.sol +19 -21
- package/contracts/instance/module/IBundle.sol +8 -8
- package/contracts/instance/module/IComponents.sol +52 -0
- package/contracts/instance/module/IDistribution.sol +7 -4
- package/contracts/instance/module/IPolicy.sol +56 -17
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +32 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +157 -0
- package/contracts/oracle/OracleService.sol +278 -0
- package/contracts/oracle/OracleServiceManager.sol +42 -0
- package/contracts/pool/BasicPool.sol +164 -0
- package/contracts/pool/BasicPoolAuthorization.sol +49 -0
- package/contracts/pool/BundleService.sol +296 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +106 -0
- package/contracts/pool/IPoolComponent.sol +52 -0
- package/contracts/pool/IPoolService.sol +150 -0
- package/contracts/pool/Pool.sol +311 -0
- package/contracts/pool/PoolService.sol +452 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +254 -0
- package/contracts/product/ApplicationServiceManager.sol +38 -0
- package/contracts/product/BasicProduct.sol +82 -0
- package/contracts/product/BasicProductAuthorization.sol +40 -0
- package/contracts/product/ClaimService.sol +442 -0
- package/contracts/product/ClaimServiceManager.sol +38 -0
- package/contracts/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +99 -0
- package/contracts/product/IPolicyService.sol +78 -0
- package/contracts/product/IPricingService.sol +39 -0
- package/contracts/product/IProductComponent.sol +39 -0
- package/contracts/product/IProductService.sol +33 -0
- package/contracts/product/PolicyService.sol +475 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +300 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/product/Product.sol +392 -0
- package/contracts/product/ProductService.sol +124 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/ChainNft.sol +16 -1
- package/contracts/registry/IRegistry.sol +44 -21
- package/contracts/registry/IRegistryService.sol +42 -38
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +223 -97
- package/contracts/registry/RegistryAdmin.sol +365 -0
- package/contracts/registry/RegistryService.sol +108 -104
- package/contracts/registry/RegistryServiceManager.sol +22 -31
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseManager.sol +355 -200
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/registry/TokenRegistry.sol +263 -60
- package/contracts/shared/Component.sol +281 -0
- package/contracts/shared/ComponentService.sol +581 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/ERC165.sol +15 -13
- package/contracts/shared/IComponent.sol +70 -0
- package/contracts/shared/IComponentService.sol +102 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
- package/contracts/shared/INftOwnable.sol +13 -12
- package/contracts/shared/IPolicyHolder.sol +45 -0
- package/contracts/shared/IRegisterable.sol +3 -3
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +14 -5
- package/contracts/shared/IVersionable.sol +5 -48
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +151 -0
- package/contracts/shared/KeyValueStore.sol +131 -0
- package/contracts/shared/Lifecycle.sol +77 -0
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +59 -91
- package/contracts/shared/PolicyHolder.sol +102 -0
- package/contracts/shared/ProxyManager.sol +131 -26
- package/contracts/shared/Registerable.sol +19 -30
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +54 -31
- package/contracts/shared/TokenHandler.sol +37 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/staking/IStaking.sol +168 -0
- package/contracts/staking/IStakingService.sol +153 -0
- package/contracts/staking/StakeManagerLib.sol +231 -0
- package/contracts/staking/Staking.sol +513 -0
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +54 -0
- package/contracts/staking/StakingReader.sol +187 -0
- package/contracts/staking/StakingService.sol +411 -0
- package/contracts/staking/StakingServiceManager.sol +44 -0
- package/contracts/staking/StakingStore.sol +615 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/{types → type}/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +128 -0
- package/contracts/{types → type}/Blocknumber.sol +21 -3
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/{types → type}/DistributorType.sol +2 -2
- package/contracts/{types → type}/Fee.sol +33 -23
- package/contracts/{types → type}/NftId.sol +21 -15
- package/contracts/{types → type}/NftIdSet.sol +2 -2
- package/contracts/type/ObjectType.sol +275 -0
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +5 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/{types → type}/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +174 -0
- package/contracts/type/Seconds.sol +81 -0
- package/contracts/type/Selector.sol +102 -0
- package/contracts/{types → type}/StateId.sol +34 -4
- package/contracts/type/String.sol +53 -0
- package/contracts/{types → type}/Timestamp.sol +23 -14
- package/contracts/{types → type}/UFixed.sol +7 -0
- package/contracts/{types → type}/Version.sol +2 -1
- package/package.json +6 -3
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -455
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1034
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1102
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
- package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/contracts/components/Component.sol +0 -216
- package/contracts/components/Distribution.sol +0 -153
- package/contracts/components/IComponent.sol +0 -43
- package/contracts/components/IDistributionComponent.sol +0 -47
- package/contracts/components/IPoolComponent.sol +0 -51
- package/contracts/components/IProductComponent.sol +0 -39
- package/contracts/components/Pool.sol +0 -208
- package/contracts/components/Product.sol +0 -266
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/InstanceAccessManager.sol +0 -298
- package/contracts/instance/base/ComponentService.sol +0 -134
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/base/Lifecycle.sol +0 -100
- package/contracts/instance/module/ISetup.sol +0 -46
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/BundleService.sol +0 -293
- package/contracts/instance/service/BundleServiceManager.sol +0 -51
- package/contracts/instance/service/DistributionService.sol +0 -106
- package/contracts/instance/service/DistributionServiceManager.sol +0 -51
- package/contracts/instance/service/IBundleService.sol +0 -44
- package/contracts/instance/service/IDistributionService.sol +0 -12
- package/contracts/instance/service/IPolicyService.sol +0 -94
- package/contracts/instance/service/IPoolService.sol +0 -20
- package/contracts/instance/service/IProductService.sol +0 -40
- package/contracts/instance/service/PolicyService.sol +0 -538
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -110
- package/contracts/instance/service/PoolServiceManager.sol +0 -51
- package/contracts/instance/service/ProductService.sol +0 -233
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -216
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -25
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/test/Usdc.sol +0 -26
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NumberId.sol +0 -52
- package/contracts/types/ObjectType.sol +0 -152
- package/contracts/types/RoleId.sol +0 -90
- /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,225 +1,357 @@
|
|
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
|
+
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";
|
4
8
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
9
|
+
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
5
10
|
|
6
|
-
import {NftId} from "../
|
7
|
-
import {RoleId} from "../
|
8
|
-
import {ObjectType, ObjectTypeLib,
|
9
|
-
import {VersionPart, VersionPartLib} from "../
|
10
|
-
import {Timestamp, TimestampLib} from "../
|
11
|
+
import {NftId} from "../type/NftId.sol";
|
12
|
+
import {RoleId, 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";
|
11
19
|
|
12
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";
|
13
24
|
|
14
25
|
import {IRegistry} from "./IRegistry.sol";
|
15
|
-
import {
|
26
|
+
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
16
27
|
import {IRegistryService} from "./IRegistryService.sol";
|
17
|
-
import {
|
18
|
-
|
19
|
-
|
20
|
-
|
28
|
+
import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
|
29
|
+
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
30
|
+
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
31
|
+
import {Registry} from "./Registry.sol";
|
32
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
33
|
+
import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
|
34
|
+
|
35
|
+
// TODO rename to something that does not end with 'Manager'
|
36
|
+
// everywhere else *Manager points to an upgradeable contract
|
37
|
+
contract ReleaseManager is
|
38
|
+
AccessManaged,
|
39
|
+
ReleaseLifecycle,
|
40
|
+
IRegistryLinked
|
21
41
|
{
|
22
42
|
using ObjectTypeLib for ObjectType;
|
23
43
|
|
24
|
-
|
44
|
+
uint256 public constant INITIAL_GIF_VERSION = 3;
|
45
|
+
|
46
|
+
event LogReleaseCreation(VersionPart version, bytes32 salt);
|
25
47
|
event LogReleaseActivation(VersionPart version);
|
48
|
+
event LogReleaseDisabled(VersionPart version);
|
49
|
+
event LogReleaseEnabled(VersionPart version);
|
50
|
+
|
51
|
+
// constructor
|
52
|
+
error ErrorReleaseManagerNotRegistry(Registry registry);
|
26
53
|
|
27
54
|
// createNextRelease
|
28
|
-
error
|
29
|
-
|
55
|
+
error ErrorReleaseManagerReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
|
56
|
+
|
57
|
+
// prepareRelease
|
58
|
+
error ErrorReleaseManagerReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
|
59
|
+
error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
|
60
|
+
error ErrorReleaseManagerVersionMismatch(VersionPart expected, VersionPart actual);
|
61
|
+
error ErrorReleaseManagerNoDomains(VersionPart version);
|
30
62
|
|
31
63
|
// registerService
|
32
|
-
error
|
64
|
+
error ErrorReleaseManagerNoServiceRegistrationExpected();
|
65
|
+
error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
|
66
|
+
error ErrorReleaseManagerServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
|
67
|
+
error ErrorReleaseManagerNotService(address notService);
|
68
|
+
error ErrorReleaseManagerServiceAddressMismatch(address expected, address actual);
|
33
69
|
|
34
70
|
// activateNextRelease
|
35
|
-
error
|
36
|
-
error
|
37
|
-
|
38
|
-
|
39
|
-
error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
|
40
|
-
error NotRegisterableOwner(address notOwner);
|
41
|
-
error SelfRegistration();
|
42
|
-
error RegisterableOwnerIsRegistered();
|
71
|
+
error ErrorReleaseManagerReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
|
72
|
+
error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
|
73
|
+
error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
74
|
+
error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
|
43
75
|
|
44
|
-
//
|
45
|
-
error
|
46
|
-
error
|
47
|
-
|
48
|
-
// _verifyAndStoreConfig
|
49
|
-
error ConfigMissing();
|
50
|
-
error ConfigServiceDomainInvalid(uint configArrayIndex, ObjectType domain);
|
51
|
-
error ConfigSelectorZero(uint configArrayIndex);
|
52
|
-
error SelectorAlreadyExists(VersionPart releaseVersion, ObjectType serviceDomain);
|
76
|
+
// disableRelease
|
77
|
+
error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
|
78
|
+
error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
|
53
79
|
|
80
|
+
// _verifyService
|
81
|
+
error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
82
|
+
error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
54
83
|
|
55
|
-
|
56
|
-
|
84
|
+
// _verifyServiceInfo
|
85
|
+
error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
|
86
|
+
error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
|
87
|
+
error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
|
88
|
+
error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
|
89
|
+
error ErrorReleaseManagerServiceSelfRegistration(IService service);
|
90
|
+
error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
|
57
91
|
|
58
|
-
|
59
|
-
VersionPart _latest;// latest active version
|
60
|
-
VersionPart _next;// version to create and activate
|
92
|
+
Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
|
61
93
|
|
62
|
-
|
94
|
+
RegistryAdmin public immutable _admin;
|
95
|
+
Registry public immutable _registry;
|
96
|
+
IRegisterable private _staking;
|
97
|
+
address private _stakingOwner;
|
63
98
|
|
64
|
-
mapping(VersionPart version =>
|
99
|
+
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
100
|
+
mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
|
65
101
|
|
66
|
-
|
102
|
+
// TODO check where/why this is used
|
103
|
+
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
67
104
|
|
68
|
-
|
105
|
+
VersionPart private _initial;// first active version
|
106
|
+
VersionPart internal _latest; // latest active version
|
107
|
+
VersionPart internal _next; // version to create and activate
|
108
|
+
mapping(VersionPart verson => StateId releaseState) private _state;
|
69
109
|
|
70
|
-
|
110
|
+
uint256 internal _registeredServices;
|
111
|
+
uint256 internal _servicesToRegister;
|
71
112
|
|
72
|
-
constructor(
|
73
|
-
|
74
|
-
VersionPart initialVersion)
|
75
|
-
AccessManaged(accessManager.authority())
|
113
|
+
constructor(Registry registry)
|
114
|
+
AccessManaged(msg.sender)
|
76
115
|
{
|
77
|
-
|
116
|
+
// TODO move this part to RegistryLinked constructor
|
117
|
+
if(!_isRegistry(address(registry))) {
|
118
|
+
revert ErrorReleaseManagerNotRegistry(registry);
|
119
|
+
}
|
78
120
|
|
79
|
-
|
121
|
+
setAuthority(registry.getAuthority());
|
80
122
|
|
81
|
-
|
82
|
-
|
123
|
+
_registry = registry;
|
124
|
+
_admin = RegistryAdmin(_registry.getRegistryAdminAddress());
|
83
125
|
|
84
|
-
|
126
|
+
_initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
|
127
|
+
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
85
128
|
}
|
86
129
|
|
87
130
|
/// @dev skips previous release if was not activated
|
131
|
+
/// sets next release into state SCHEDULED
|
88
132
|
function createNextRelease()
|
89
133
|
external
|
90
|
-
restricted // GIF_ADMIN_ROLE
|
134
|
+
restricted() // GIF_ADMIN_ROLE
|
135
|
+
returns(VersionPart)
|
136
|
+
{
|
137
|
+
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
138
|
+
_servicesToRegister = 0;
|
139
|
+
_registeredServices = 0;
|
140
|
+
_state[_next] = getInitialState(RELEASE());
|
141
|
+
|
142
|
+
return _next;
|
143
|
+
}
|
144
|
+
|
145
|
+
function prepareNextRelease(
|
146
|
+
IServiceAuthorization serviceAuthorization,
|
147
|
+
bytes32 salt
|
148
|
+
)
|
149
|
+
external
|
150
|
+
restricted() // GIF_MANAGER_ROLE
|
151
|
+
returns(
|
152
|
+
address authority,
|
153
|
+
VersionPart version,
|
154
|
+
bytes32 releaseSalt
|
155
|
+
)
|
91
156
|
{
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
157
|
+
authority = _admin.authority();
|
158
|
+
version = _next;
|
159
|
+
|
160
|
+
// ensures unique salt
|
161
|
+
// TODO CreateX have clones capability also
|
162
|
+
// what would releaseSalt look like if used with CreateX in pemissioned mode?
|
163
|
+
releaseSalt = keccak256(
|
164
|
+
bytes.concat(
|
165
|
+
bytes32(version.toInt()),
|
166
|
+
salt));
|
167
|
+
|
168
|
+
// verify release in state SCHEDULED
|
169
|
+
if (!isValidTransition(RELEASE(), _state[version], DEPLOYING())) {
|
170
|
+
revert ErrorReleaseManagerReleasePreparationDisallowed(version, _state[version]);
|
171
|
+
}
|
172
|
+
|
173
|
+
_state[version] = DEPLOYING();
|
174
|
+
|
175
|
+
// verify authorizaion contract release matches with expected version
|
176
|
+
VersionPart releaseVersion = serviceAuthorization.getRelease();
|
177
|
+
if (releaseVersion != version) {
|
178
|
+
revert ErrorReleaseManagerVersionMismatch(version, releaseVersion);
|
179
|
+
}
|
180
|
+
|
181
|
+
|
182
|
+
// sanity check to ensure service domain list is not empty
|
183
|
+
uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
|
184
|
+
if (serviceDomainsCount == 0) {
|
185
|
+
revert ErrorReleaseManagerNoDomains(version);
|
186
|
+
}
|
96
187
|
|
97
|
-
|
188
|
+
// verify prepareNextRelease is only called once per release
|
189
|
+
if(_servicesToRegister > 0) {
|
190
|
+
revert ErrorReleaseManagerReleaseAlreadyPrepared(version, _state[version]);
|
191
|
+
}
|
192
|
+
|
193
|
+
_servicesToRegister = serviceDomainsCount;
|
194
|
+
_serviceAuthorization[version] = serviceAuthorization;
|
195
|
+
|
196
|
+
emit LogReleaseCreation(version, releaseSalt);
|
98
197
|
}
|
99
198
|
|
199
|
+
// TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
|
200
|
+
function registerService(IService service)
|
201
|
+
external
|
202
|
+
restricted // GIF_MANAGER_ROLE
|
203
|
+
returns(NftId nftId)
|
204
|
+
{
|
205
|
+
VersionPart releaseVersion = _next;
|
206
|
+
StateId state = _state[releaseVersion];
|
207
|
+
|
208
|
+
// verify release in state DEPLOYING
|
209
|
+
if (!isValidTransition(RELEASE(), state, DEPLOYING())) {
|
210
|
+
// TOOD name must represent failed state transition
|
211
|
+
revert ErrorReleaseManagerServiceRegistrationDisallowed(state);
|
212
|
+
}
|
213
|
+
|
214
|
+
_state[releaseVersion] = DEPLOYING();
|
215
|
+
|
216
|
+
// not all services are registered
|
217
|
+
if (_servicesToRegister == _registeredServices) {
|
218
|
+
revert ErrorReleaseManagerNoServiceRegistrationExpected();
|
219
|
+
}
|
220
|
+
|
221
|
+
// service can work with release manager
|
222
|
+
(
|
223
|
+
IRegistry.ObjectInfo memory info,
|
224
|
+
ObjectType serviceDomain,
|
225
|
+
VersionPart serviceVersion
|
226
|
+
) = _verifyService(service);
|
227
|
+
|
228
|
+
// service domain matches defined in release config
|
229
|
+
ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
|
230
|
+
if (serviceDomain != expectedDomain) {
|
231
|
+
revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, serviceDomain);
|
232
|
+
}
|
233
|
+
|
234
|
+
// register service with registry
|
235
|
+
nftId = _registry.registerService(info, serviceVersion, serviceDomain);
|
236
|
+
service.linkToRegisteredNftId();
|
237
|
+
_registeredServices++;
|
238
|
+
|
239
|
+
// setup service authorization
|
240
|
+
_admin.authorizeService(
|
241
|
+
_serviceAuthorization[releaseVersion],
|
242
|
+
service);
|
243
|
+
|
244
|
+
// TODO consider to extend this to REGISTRY
|
245
|
+
// special roles for registry/staking/pool service
|
246
|
+
if (serviceDomain == STAKING() || serviceDomain == POOL()) {
|
247
|
+
// TODO rename to grantServiceDomainRole()
|
248
|
+
_admin.grantServiceRoleForAllVersions(service, serviceDomain);
|
249
|
+
}
|
250
|
+
}
|
251
|
+
|
252
|
+
|
100
253
|
function activateNextRelease()
|
101
254
|
external
|
102
255
|
restricted // GIF_ADMIN_ROLE
|
103
256
|
{
|
104
257
|
VersionPart version = _next;
|
105
|
-
|
258
|
+
StateId state = _state[version];
|
259
|
+
StateId newState = ACTIVE();
|
106
260
|
|
107
|
-
// release
|
108
|
-
if(
|
109
|
-
revert
|
261
|
+
// verify release in state DEPLOYING
|
262
|
+
if (!isValidTransition(RELEASE(), state, newState)) {
|
263
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
|
110
264
|
}
|
111
265
|
|
112
266
|
// release fully deployed
|
113
|
-
if(
|
114
|
-
revert
|
267
|
+
if(_registeredServices < _servicesToRegister) {
|
268
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
|
115
269
|
}
|
116
270
|
|
117
|
-
//
|
271
|
+
// release exists, registry service MUST exist
|
272
|
+
address service = _registry.getServiceAddress(REGISTRY(), version);
|
273
|
+
if(service == address(0)) {
|
274
|
+
revert ErrorReleaseManagerReleaseNotCreated(version);
|
275
|
+
}
|
118
276
|
|
119
277
|
_latest = version;
|
278
|
+
_state[version] = newState;
|
120
279
|
|
121
|
-
|
122
|
-
|
280
|
+
_releaseVersionByAddress[service] = version;
|
281
|
+
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
123
282
|
|
124
283
|
emit LogReleaseActivation(version);
|
125
284
|
}
|
126
285
|
|
127
|
-
|
128
|
-
|
129
|
-
// callable once per release after release creation, can not register regular services while registry service is not registered
|
130
|
-
function registerRegistryService(IRegistryService service)
|
286
|
+
/// @dev stop all operations with release services
|
287
|
+
function pauseRelease(VersionPart version)
|
131
288
|
external
|
132
|
-
restricted //
|
133
|
-
returns(NftId nftId)
|
289
|
+
restricted // GIF_ADMIN_ROLE
|
134
290
|
{
|
135
|
-
|
136
|
-
|
137
|
-
}
|
291
|
+
StateId state = _state[version];
|
292
|
+
StateId newState = PAUSED();
|
138
293
|
|
139
|
-
//
|
140
|
-
|
141
|
-
|
142
|
-
revert UnexpectedServiceAuthority(
|
143
|
-
authority(),
|
144
|
-
serviceAuthority);
|
294
|
+
// verify release in state ACTIVE
|
295
|
+
if (!isValidTransition(RELEASE(), state, newState)) {
|
296
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
|
145
297
|
}
|
146
298
|
|
147
|
-
|
299
|
+
// TODO come up with a substitute
|
300
|
+
//_releaseAccessManager[version].disable();
|
148
301
|
|
149
|
-
|
150
|
-
|
151
|
-
_verifyServiceInfo(info, version, domain);
|
152
|
-
|
153
|
-
// data: config bytes
|
154
|
-
_createRelease(service.getFunctionConfigs());
|
302
|
+
_state[version] = newState;
|
303
|
+
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
|
155
304
|
|
156
|
-
|
157
|
-
|
158
|
-
nftId = _registry.registerService(info, version, domain);
|
159
|
-
|
160
|
-
// external call
|
161
|
-
service.linkToRegisteredNftId();
|
305
|
+
emit LogReleaseDisabled(version);
|
162
306
|
}
|
163
307
|
|
164
|
-
// TODO
|
165
|
-
|
166
|
-
function
|
308
|
+
// TODO consider revert if some delay is expired -> becomes disabled automatically
|
309
|
+
/// @dev resume operations with release services
|
310
|
+
function unpauseRelease(VersionPart version)
|
167
311
|
external
|
168
|
-
restricted //
|
169
|
-
returns(NftId nftId)
|
312
|
+
restricted // GIF_ADMIN_ROLE
|
170
313
|
{
|
171
|
-
|
172
|
-
|
173
|
-
}
|
314
|
+
StateId state = _state[version];
|
315
|
+
StateId newState = ACTIVE();
|
174
316
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
_verifyServiceInfo(info, version, domain);
|
179
|
-
|
180
|
-
// setup and grant unique role if service does registrations
|
181
|
-
bytes4[] memory selector = new bytes4[](1);
|
182
|
-
selector[0] = _selector[version][domain];
|
183
|
-
address registryService = _registry.getServiceAddress(REGISTRY(), version);
|
184
|
-
if(selector[0] != 0) {
|
185
|
-
_accessManager.setAndGrantUniqueRole(
|
186
|
-
address(service),
|
187
|
-
registryService,
|
188
|
-
selector);
|
317
|
+
// verify release in state PAUSED
|
318
|
+
if (!isValidTransition(RELEASE(), state, newState)) {
|
319
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
|
189
320
|
}
|
190
|
-
|
191
|
-
_awaitingRegistration--;
|
192
321
|
|
193
|
-
|
322
|
+
// TODO come up with a substitute
|
323
|
+
// _releaseAccessManager[version].enable();
|
324
|
+
|
325
|
+
_state[version] = newState;
|
326
|
+
_releaseInfo[version].disabledAt = zeroTimestamp();
|
194
327
|
|
195
|
-
|
196
|
-
service.linkToRegisteredNftId();
|
328
|
+
emit LogReleaseEnabled(version);
|
197
329
|
}
|
198
330
|
|
199
331
|
//--- view functions ----------------------------------------------------//
|
200
332
|
|
201
|
-
function
|
202
|
-
|
203
|
-
|
333
|
+
function predictDeterministicAddress(
|
334
|
+
address implementation,
|
335
|
+
bytes32 salt,
|
336
|
+
address deployer
|
337
|
+
) external pure returns (address predicted) {
|
338
|
+
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
204
339
|
}
|
205
340
|
|
206
|
-
function
|
207
|
-
|
208
|
-
return
|
341
|
+
function isActiveRegistryService(address service) external view returns(bool) {
|
342
|
+
VersionPart version = _releaseVersionByAddress[service];
|
343
|
+
return isActiveRelease(version);
|
209
344
|
}
|
210
345
|
|
211
|
-
function
|
212
|
-
|
213
|
-
return (address(_registry));
|
346
|
+
function isActiveRelease(VersionPart version) public view returns(bool) {
|
347
|
+
return _state[version] == ACTIVE();
|
214
348
|
}
|
215
349
|
|
216
|
-
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory)
|
217
|
-
|
218
|
-
return _release[version];
|
350
|
+
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
351
|
+
return _releaseInfo[version];
|
219
352
|
}
|
220
353
|
|
221
|
-
function getNextVersion() public view returns(VersionPart)
|
222
|
-
{
|
354
|
+
function getNextVersion() public view returns(VersionPart) {
|
223
355
|
return _next;
|
224
356
|
}
|
225
357
|
|
@@ -231,102 +363,125 @@ contract ReleaseManager is AccessManaged
|
|
231
363
|
return _initial;
|
232
364
|
}
|
233
365
|
|
366
|
+
function getState(VersionPart version) external view returns (StateId stateId) {
|
367
|
+
return _state[version];
|
368
|
+
}
|
369
|
+
|
370
|
+
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
371
|
+
return _servicesToRegister - _registeredServices;
|
372
|
+
}
|
373
|
+
|
374
|
+
function getServiceAuthorization(VersionPart version)
|
375
|
+
external
|
376
|
+
view
|
377
|
+
returns (IServiceAuthorization serviceAuthorization)
|
378
|
+
{
|
379
|
+
return _serviceAuthorization[version];
|
380
|
+
}
|
381
|
+
|
382
|
+
function getRegistryAdmin() external view returns (address) {
|
383
|
+
return address(_admin);
|
384
|
+
}
|
385
|
+
|
386
|
+
//--- IRegistryLinked ------------------------------------------------------//
|
387
|
+
|
388
|
+
function getRegistry() external view returns (IRegistry) {
|
389
|
+
return _registry;
|
390
|
+
}
|
391
|
+
|
234
392
|
//--- private functions ----------------------------------------------------//
|
235
393
|
|
236
|
-
function
|
237
|
-
IService service,
|
238
|
-
ObjectType expectedType,
|
239
|
-
address expectedOwner // assume always valid, can not be 0
|
240
|
-
)
|
394
|
+
function _verifyService(IService service)
|
241
395
|
internal
|
242
|
-
|
396
|
+
view
|
243
397
|
returns(
|
244
|
-
IRegistry.ObjectInfo memory
|
398
|
+
IRegistry.ObjectInfo memory serviceInfo,
|
399
|
+
ObjectType serviceDomain,
|
400
|
+
VersionPart serviceVersion
|
245
401
|
)
|
246
402
|
{
|
247
|
-
|
248
|
-
|
249
|
-
info.isInterceptor = false; // service is never interceptor, at least now
|
250
|
-
|
251
|
-
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
252
|
-
revert UnexpectedRegisterableType(expectedType, info.objectType);
|
403
|
+
if(!service.supportsInterface(type(IService).interfaceId)) {
|
404
|
+
revert ErrorReleaseManagerNotService(address(service));
|
253
405
|
}
|
254
406
|
|
255
|
-
address owner =
|
407
|
+
address owner = msg.sender;
|
408
|
+
address serviceAuthority = service.authority();
|
409
|
+
serviceVersion = service.getVersion().toMajorPart();
|
410
|
+
serviceDomain = service.getDomain();// checked in registry
|
411
|
+
serviceInfo = service.getInitialInfo();
|
256
412
|
|
257
|
-
|
258
|
-
revert NotRegisterableOwner(expectedOwner);
|
259
|
-
}
|
413
|
+
_verifyServiceInfo(service, serviceInfo, owner);
|
260
414
|
|
261
|
-
|
262
|
-
|
415
|
+
VersionPart releaseVersion = _next; // never 0
|
416
|
+
address expectedAuthority = _admin.authority(); // can be zero if registering service when release is not created
|
417
|
+
|
418
|
+
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
419
|
+
if(serviceAuthority != expectedAuthority) {
|
420
|
+
revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
|
421
|
+
service,
|
422
|
+
serviceAuthority,
|
423
|
+
expectedAuthority);
|
263
424
|
}
|
264
|
-
|
265
|
-
if(
|
266
|
-
revert
|
425
|
+
|
426
|
+
if(serviceVersion != releaseVersion) {
|
427
|
+
revert ErrorReleaseManagerServiceReleaseVersionMismatch(
|
428
|
+
service,
|
429
|
+
serviceVersion,
|
430
|
+
releaseVersion);
|
267
431
|
}
|
268
432
|
}
|
269
433
|
|
434
|
+
|
270
435
|
function _verifyServiceInfo(
|
436
|
+
IService service,
|
271
437
|
IRegistry.ObjectInfo memory info,
|
272
|
-
|
273
|
-
ObjectType expectedDomain
|
438
|
+
address expectedOwner // assume always valid, can not be 0
|
274
439
|
)
|
275
440
|
internal
|
276
441
|
view
|
277
|
-
returns(ObjectType)
|
278
442
|
{
|
279
|
-
(
|
280
|
-
|
281
|
-
|
282
|
-
|
443
|
+
if(info.objectAddress != address(service)) {
|
444
|
+
revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
|
445
|
+
}
|
446
|
+
|
447
|
+
if(info.isInterceptor != false) { // service is never interceptor
|
448
|
+
revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
|
449
|
+
}
|
283
450
|
|
284
|
-
if(
|
285
|
-
revert
|
451
|
+
if(info.objectType != SERVICE()) {
|
452
|
+
revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
|
286
453
|
}
|
287
454
|
|
288
|
-
|
289
|
-
|
455
|
+
address owner = info.initialOwner;
|
456
|
+
|
457
|
+
if(owner != expectedOwner) { // registerable owner protection
|
458
|
+
revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
|
290
459
|
}
|
291
460
|
|
292
|
-
|
461
|
+
if(owner == address(service)) {
|
462
|
+
revert ErrorReleaseManagerServiceSelfRegistration(service);
|
463
|
+
}
|
464
|
+
|
465
|
+
if(_registry.isRegistered(owner)) {
|
466
|
+
revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
|
467
|
+
}
|
293
468
|
}
|
294
469
|
|
295
|
-
|
296
|
-
function
|
297
|
-
internal
|
298
|
-
{
|
299
|
-
VersionPart version = getNextVersion();
|
470
|
+
/// @dev returns true iff a the address passes some simple proxy tests.
|
471
|
+
function _isRegistry(address registryAddress) internal view returns (bool) {
|
300
472
|
|
301
|
-
|
302
|
-
|
473
|
+
// zero address is certainly not registry
|
474
|
+
if (registryAddress == address(0)) {
|
475
|
+
return false;
|
303
476
|
}
|
304
|
-
//
|
305
|
-
|
306
|
-
|
307
|
-
{
|
308
|
-
|
309
|
-
bytes4 selector = config[idx].selector;
|
310
|
-
|
311
|
-
// not "registry service" / zero domain
|
312
|
-
if(
|
313
|
-
domain == REGISTRY() ||
|
314
|
-
domain.eqz()
|
315
|
-
) { revert ConfigServiceDomainInvalid(idx, domain); }
|
316
|
-
|
317
|
-
// TODO can be zero -> e.g. duplicate domain, first with zero selector, second with non zero selector -> need to check _release[version].domains.contains(domain) instead
|
318
|
-
// no overwrite
|
319
|
-
if(_selector[version][domain] > 0) {
|
320
|
-
revert SelectorAlreadyExists(version, domain);
|
321
|
-
}
|
322
|
-
|
323
|
-
_selector[version][domain] = selector;
|
324
|
-
_release[version].domains.push(domain);
|
477
|
+
// TODO try catch and return false in case of revert
|
478
|
+
// or just panic
|
479
|
+
// check if contract returns a zero nft id for its own address
|
480
|
+
if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
|
481
|
+
return false;
|
325
482
|
}
|
326
|
-
// TODO set when activated?
|
327
|
-
_release[version].createdAt = TimestampLib.blockTimestamp();
|
328
|
-
//_release[version].updatedAt = TimestampLib.blockTimestamp();
|
329
483
|
|
330
|
-
|
484
|
+
return true;
|
331
485
|
}
|
332
486
|
}
|
487
|
+
|