@etherisc/gif-next 0.0.2-bfb44e0-483 → 0.0.2-c00cf5d-513
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 +8 -84
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +206 -244
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1583 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +855 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +206 -156
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +380 -196
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +68 -54
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +277 -1998
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +172 -230
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +389 -2735
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +692 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +188 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +443 -255
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +217 -479
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +246 -129
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +93 -14
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -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/IComponents.sol/IComponents.json +10 -0
- 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/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1307 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +767 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +273 -336
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +386 -185
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +363 -303
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1649 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +783 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +937 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +719 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1405 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +819 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +109 -254
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +174 -307
- 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} +235 -237
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +212 -164
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +67 -174
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1300 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +811 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1023 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +759 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/Product.sol/Product.json +166 -239
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +891 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +715 -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 +123 -19
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +212 -240
- 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 +146 -34
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +292 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +245 -314
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +240 -123
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +597 -86
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +44 -92
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/Component.sol/Component.json +146 -151
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +118 -222
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +190 -74
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +4 -43
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +4 -43
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -34
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +66 -173
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -150
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +19 -91
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -47
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +226 -95
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +32 -89
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -36
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +92 -212
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -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 +0 -150
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +523 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +786 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +699 -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 +281 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
- 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 +166 -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/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
- 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/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/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -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/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
- 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/{types → type}/UFixed.sol/UFixedLib.json +3 -3
- 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/{components → distribution}/Distribution.sol +47 -60
- package/contracts/distribution/DistributionService.sol +351 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/{components → distribution}/IDistributionComponent.sol +8 -37
- package/contracts/distribution/IDistributionService.sol +87 -0
- package/contracts/instance/BundleManager.sol +15 -14
- package/contracts/instance/IInstance.sol +52 -59
- package/contracts/instance/IInstanceService.sol +32 -19
- package/contracts/instance/Instance.sol +138 -185
- package/contracts/instance/InstanceAdmin.sol +330 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +320 -0
- package/contracts/instance/InstanceReader.sol +101 -26
- package/contracts/instance/InstanceService.sol +173 -307
- package/contracts/instance/InstanceServiceManager.sol +12 -22
- package/contracts/instance/InstanceStore.sol +211 -0
- package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
- package/contracts/instance/base/IKeyValueStore.sol +14 -10
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +44 -47
- package/contracts/instance/base/Lifecycle.sol +28 -7
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -14
- package/contracts/instance/module/IAccess.sol +19 -20
- package/contracts/instance/module/IBundle.sol +11 -8
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +7 -4
- package/contracts/instance/module/IPolicy.sol +50 -17
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/instance/module/ISetup.sol +9 -23
- package/contracts/instance/module/ITreasury.sol +2 -2
- package/contracts/pool/BundleService.sol +384 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +118 -0
- package/contracts/pool/IPoolComponent.sol +114 -0
- package/contracts/pool/IPoolService.sol +114 -0
- package/contracts/pool/Pool.sol +302 -0
- package/contracts/pool/PoolService.sol +404 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +187 -0
- package/contracts/product/ApplicationServiceManager.sol +38 -0
- package/contracts/product/ClaimService.sol +443 -0
- package/contracts/product/ClaimServiceManager.sol +38 -0
- package/contracts/{instance/service → product}/IApplicationService.sol +16 -36
- package/contracts/product/IClaimService.sol +93 -0
- package/contracts/product/IPolicyService.sol +80 -0
- package/contracts/product/IPricingService.sol +37 -0
- package/contracts/{components → product}/IProductComponent.sol +13 -11
- package/contracts/{instance/service → product}/IProductService.sol +10 -10
- package/contracts/product/PolicyService.sol +378 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +276 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/{components → product}/Product.sol +186 -85
- package/contracts/product/ProductService.sol +212 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +31 -17
- package/contracts/registry/IRegistryService.sol +32 -38
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +70 -67
- package/contracts/registry/RegistryAdmin.sol +141 -0
- package/contracts/registry/RegistryService.sol +65 -94
- package/contracts/registry/RegistryServiceManager.sol +22 -24
- package/contracts/registry/ReleaseManager.sol +318 -188
- package/contracts/registry/TokenRegistry.sol +19 -14
- package/contracts/shared/AccessManagerCustom.sol +736 -0
- package/contracts/shared/AccessManagerExtended.sol +469 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/{components → shared}/Component.sol +121 -86
- package/contracts/shared/ComponentService.sol +142 -0
- package/contracts/shared/ERC165.sol +2 -1
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +90 -0
- package/contracts/shared/INftOwnable.sol +5 -10
- package/contracts/shared/IPolicyHolder.sol +24 -10
- package/contracts/shared/IRegistryLinked.sol +0 -4
- package/contracts/shared/IService.sol +6 -4
- package/contracts/shared/IVersionable.sol +5 -48
- package/contracts/shared/NftOwnable.sol +20 -93
- package/contracts/shared/PolicyHolder.sol +31 -18
- package/contracts/shared/ProxyManager.sol +129 -24
- package/contracts/shared/Registerable.sol +14 -20
- package/contracts/shared/RegistryLinked.sol +5 -26
- package/contracts/shared/Service.sol +30 -18
- package/contracts/shared/TokenHandler.sol +14 -6
- package/contracts/shared/Versionable.sol +1 -90
- package/contracts/staking/IStakingService.sol +102 -0
- package/contracts/staking/StakingService.sol +169 -0
- package/contracts/staking/StakingServiceManager.sol +40 -0
- package/contracts/type/Amount.sol +109 -0
- package/contracts/{types → type}/Blocknumber.sol +1 -0
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/{types → type}/Fee.sol +17 -8
- package/contracts/{types → type}/NftId.sol +8 -0
- package/contracts/{types → type}/NftIdSet.sol +1 -1
- package/contracts/{types → type}/ObjectType.sol +13 -7
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +4 -0
- package/contracts/{types → type}/RoleId.sol +62 -13
- package/contracts/type/Seconds.sol +54 -0
- package/contracts/{types → type}/StateId.sol +7 -2
- package/contracts/{types → type}/Timestamp.sol +18 -13
- package/contracts/{types → type}/UFixed.sol +1 -0
- package/contracts/{types → type}/Version.sol +1 -0
- package/package.json +1 -1
- 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/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/IA.sol/ISharedA.json +0 -37
- 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/ISM.json +0 -124
- 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 -984
- 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/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1117
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1318
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -586
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1176
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -602
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
- 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 -1378
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -642
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -957
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -574
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1007
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -574
- 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 -446
- 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 -759
- 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/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/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/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- 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/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/contracts/components/IComponent.sol +0 -50
- package/contracts/components/IPoolComponent.sol +0 -87
- package/contracts/components/Pool.sol +0 -254
- 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 -297
- package/contracts/instance/base/ComponentService.sol +0 -134
- package/contracts/instance/service/ApplicationService.sol +0 -268
- package/contracts/instance/service/BundleService.sol +0 -298
- package/contracts/instance/service/BundleServiceManager.sol +0 -51
- package/contracts/instance/service/DistributionService.sol +0 -274
- package/contracts/instance/service/DistributionServiceManager.sol +0 -51
- package/contracts/instance/service/IBundleService.sol +0 -54
- package/contracts/instance/service/IDistributionService.sol +0 -65
- package/contracts/instance/service/IPolicyService.sol +0 -88
- package/contracts/instance/service/IPoolService.sol +0 -20
- package/contracts/instance/service/PolicyService.sol +0 -524
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -109
- 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/TestToken.sol +0 -26
- 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 → type}/AddressSet.sol +0 -0
- /package/contracts/{types → type}/DistributorType.sol +0 -0
- /package/contracts/{types → type}/Key32.sol +0 -0
- /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -1,100 +1,199 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
4
5
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
6
|
+
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
5
7
|
|
6
|
-
import {NftId} from "../
|
7
|
-
import {RoleId} from "../
|
8
|
-
import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../
|
9
|
-
import {VersionPart, VersionPartLib} from "../
|
10
|
-
import {Timestamp, TimestampLib} from "../
|
8
|
+
import {NftId} from "../type/NftId.sol";
|
9
|
+
import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
10
|
+
import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
|
11
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
12
|
+
import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
|
13
|
+
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
11
14
|
|
12
15
|
import {IService} from "../shared/IService.sol";
|
16
|
+
import {AccessManagerExtendedWithDisableInitializeable} from "../shared/AccessManagerExtendedWithDisableInitializeable.sol";
|
13
17
|
|
14
18
|
import {IRegistry} from "./IRegistry.sol";
|
15
19
|
import {Registry} from "./Registry.sol";
|
16
20
|
import {IRegistryService} from "./IRegistryService.sol";
|
17
|
-
import {
|
21
|
+
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
18
22
|
|
19
23
|
|
20
24
|
contract ReleaseManager is AccessManaged
|
21
25
|
{
|
22
26
|
using ObjectTypeLib for ObjectType;
|
27
|
+
using TimestampLib for Timestamp;
|
23
28
|
|
24
|
-
event LogReleaseCreation(
|
29
|
+
event LogReleaseCreation(
|
30
|
+
VersionPart version,
|
31
|
+
bytes32 salt,
|
32
|
+
address releaseAccessManager
|
33
|
+
);
|
25
34
|
event LogReleaseActivation(VersionPart version);
|
26
35
|
|
27
|
-
// createNextRelease
|
28
|
-
error NotRegistryService();
|
29
|
-
error UnexpectedServiceAuthority(address expected, address found);
|
30
36
|
|
37
|
+
// prepareRelease
|
38
|
+
error ErrorReleaseManagerReleaseAlreadyCreated(VersionPart version);
|
39
|
+
|
31
40
|
// registerService
|
32
|
-
error
|
41
|
+
error ErrorReleaseManagerNotService(IService service);
|
42
|
+
error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
|
33
43
|
|
34
44
|
// activateNextRelease
|
35
|
-
error
|
36
|
-
error
|
37
|
-
|
38
|
-
// _getAndVerifyContractInfo
|
39
|
-
error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
|
40
|
-
error NotRegisterableOwner(address notOwner);
|
41
|
-
error SelfRegistration();
|
42
|
-
error RegisterableOwnerIsRegistered();
|
45
|
+
error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
|
46
|
+
error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
47
|
+
error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
|
43
48
|
|
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);
|
49
|
+
// disableRelease
|
50
|
+
error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
|
51
|
+
error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
|
53
52
|
|
53
|
+
// _verifyService
|
54
|
+
error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
55
|
+
error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
54
56
|
|
55
|
-
|
56
|
-
|
57
|
+
// _verifyServiceInfo
|
58
|
+
error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
|
59
|
+
error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
|
60
|
+
error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
|
61
|
+
error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
|
62
|
+
error ErrorReleaseManagerServiceSelfRegistration(IService service);
|
63
|
+
error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
|
57
64
|
|
58
|
-
|
59
|
-
|
60
|
-
|
65
|
+
// _verifyServiceAuthorizations
|
66
|
+
error ErrorReleaseManagerReleaseEmpty();
|
67
|
+
error ErrorReleaseManagerServiceRoleInvalid(address service, RoleId role);
|
61
68
|
|
62
|
-
|
69
|
+
Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
|
63
70
|
|
64
|
-
|
71
|
+
RegistryAdmin public immutable _admin;
|
72
|
+
address public immutable _releaseAccessManagerCodeAddress;
|
73
|
+
IRegistry public immutable _registry;
|
65
74
|
|
66
|
-
|
75
|
+
mapping(VersionPart version => AccessManagerExtendedWithDisableInitializeable accessManager) internal _releaseAccessManager;
|
76
|
+
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
77
|
+
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
67
78
|
|
68
|
-
|
79
|
+
VersionPart immutable internal _initial;// first active version
|
80
|
+
VersionPart internal _latest;// latest active version
|
81
|
+
VersionPart internal _next;// version to create and activate
|
69
82
|
|
70
|
-
|
83
|
+
uint internal _awaitingRegistration; // "services left to register" counter
|
71
84
|
|
72
85
|
constructor(
|
73
|
-
|
74
|
-
VersionPart initialVersion
|
75
|
-
|
86
|
+
RegistryAdmin admin,
|
87
|
+
VersionPart initialVersion,
|
88
|
+
AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager)
|
89
|
+
AccessManaged(admin.authority())
|
76
90
|
{
|
77
|
-
|
78
|
-
|
79
|
-
_accessManager = accessManager;
|
80
|
-
|
91
|
+
_admin = admin;
|
81
92
|
_initial = initialVersion;
|
82
|
-
_next = initialVersion;
|
83
|
-
|
93
|
+
_next = VersionPartLib.toVersionPart(initialVersion.toInt() - 1);
|
84
94
|
_registry = new Registry();
|
95
|
+
_releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
|
85
96
|
}
|
86
97
|
|
87
|
-
/// @dev skips previous release if was not activated
|
88
|
-
function createNextRelease()
|
98
|
+
/// @dev skips previous release if it was not activated
|
99
|
+
function createNextRelease()
|
89
100
|
external
|
90
101
|
restricted // GIF_ADMIN_ROLE
|
102
|
+
returns(VersionPart version)
|
91
103
|
{
|
92
|
-
|
93
|
-
VersionPartLib.toVersionPart(_next.toInt() + 1);
|
94
|
-
// disallow registration of regular services for next version while registry service is not registered
|
104
|
+
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
95
105
|
_awaitingRegistration = 0;
|
106
|
+
}
|
107
|
+
|
108
|
+
function prepareNextRelease(
|
109
|
+
address[] memory addresses,
|
110
|
+
string[] memory names,
|
111
|
+
RoleId[][] memory serviceRoles,
|
112
|
+
string[][] memory serviceRoleNames,
|
113
|
+
RoleId[][] memory functionRoles,
|
114
|
+
string[][] memory functionRoleNames,
|
115
|
+
bytes4[][][] memory selectors,
|
116
|
+
bytes32 salt
|
117
|
+
)
|
118
|
+
external
|
119
|
+
restricted // GIF_MANAGER_ROLE
|
120
|
+
returns(address releaseAccessManagerAddress, VersionPart version, bytes32 releaseSalt)
|
121
|
+
{
|
122
|
+
_verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
|
123
|
+
|
124
|
+
version = getNextVersion();
|
96
125
|
|
97
|
-
|
126
|
+
// ensures unique salt
|
127
|
+
releaseSalt = keccak256(
|
128
|
+
bytes.concat(
|
129
|
+
bytes32(version.toInt()),
|
130
|
+
salt));
|
131
|
+
|
132
|
+
releaseAccessManagerAddress = Clones.cloneDeterministic(_releaseAccessManagerCodeAddress, releaseSalt);
|
133
|
+
AccessManagerExtendedWithDisableInitializeable releaseAccessManager = AccessManagerExtendedWithDisableInitializeable(releaseAccessManagerAddress);
|
134
|
+
releaseAccessManager.initialize(address(this), version);
|
135
|
+
|
136
|
+
if(_awaitingRegistration > 0) {
|
137
|
+
revert ErrorReleaseManagerReleaseAlreadyCreated(version);
|
138
|
+
}
|
139
|
+
|
140
|
+
_releaseInfo[version].version = version;
|
141
|
+
_releaseInfo[version].salt = releaseSalt;
|
142
|
+
_releaseInfo[version].addresses = addresses;
|
143
|
+
_releaseInfo[version].names = names;
|
144
|
+
_releaseInfo[version].serviceRoles = serviceRoles;
|
145
|
+
_releaseInfo[version].serviceRoleNames = serviceRoleNames;
|
146
|
+
_releaseInfo[version].functionRoles = functionRoles;
|
147
|
+
_releaseInfo[version].functionRoleNames = functionRoleNames;
|
148
|
+
_releaseInfo[version].selectors = selectors;
|
149
|
+
_awaitingRegistration = addresses.length;
|
150
|
+
|
151
|
+
_releaseAccessManager[version] = releaseAccessManager;
|
152
|
+
|
153
|
+
emit LogReleaseCreation(version, releaseSalt, releaseAccessManagerAddress);
|
154
|
+
}
|
155
|
+
|
156
|
+
function registerService(IService service)
|
157
|
+
external
|
158
|
+
restricted // GIF_MANAGER_ROLE
|
159
|
+
returns(NftId nftId)
|
160
|
+
{
|
161
|
+
(
|
162
|
+
IRegistry.ObjectInfo memory info,
|
163
|
+
ObjectType domain,
|
164
|
+
VersionPart version
|
165
|
+
) = _verifyService(service);
|
166
|
+
|
167
|
+
if(_awaitingRegistration == 0) {
|
168
|
+
// TODO either release is not created or registration is finished
|
169
|
+
// or just let it panic on underflow?
|
170
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
171
|
+
}
|
172
|
+
|
173
|
+
uint serviceIdx = _awaitingRegistration - 1;
|
174
|
+
address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
|
175
|
+
// TODO temp, while typescript addresses computation is not implemented
|
176
|
+
/*if(address(service) != serviceAddress) {
|
177
|
+
revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
|
178
|
+
}*/
|
179
|
+
|
180
|
+
_setServiceAuthorizations(
|
181
|
+
_releaseAccessManager[version],
|
182
|
+
// TODO temp, while typescript addresses computation is not implemented
|
183
|
+
address(service),//serviceAddress,
|
184
|
+
_releaseInfo[version].names[serviceIdx],
|
185
|
+
_releaseInfo[version].serviceRoles[serviceIdx],
|
186
|
+
_releaseInfo[version].serviceRoleNames[serviceIdx],
|
187
|
+
_releaseInfo[version].functionRoles[serviceIdx],
|
188
|
+
_releaseInfo[version].functionRoleNames[serviceIdx],
|
189
|
+
_releaseInfo[version].selectors[serviceIdx]);
|
190
|
+
|
191
|
+
_awaitingRegistration = serviceIdx;
|
192
|
+
_releaseInfo[version].domains.push(domain);// checked in registry
|
193
|
+
|
194
|
+
nftId = _registry.registerService(info, version, domain);
|
195
|
+
|
196
|
+
service.linkToRegisteredNftId();
|
98
197
|
}
|
99
198
|
|
100
199
|
function activateNextRelease()
|
@@ -104,122 +203,99 @@ contract ReleaseManager is AccessManaged
|
|
104
203
|
VersionPart version = _next;
|
105
204
|
address service = _registry.getServiceAddress(REGISTRY(), version);
|
106
205
|
|
107
|
-
// release
|
206
|
+
// release exists, registry service is a MUST
|
207
|
+
//if(_releaseAccessManager[version] == address(0)) {
|
108
208
|
if(service == address(0)) {
|
109
|
-
revert
|
209
|
+
revert ErrorReleaseManagerReleaseNotCreated(version);
|
110
210
|
}
|
111
211
|
|
112
212
|
// release fully deployed
|
113
213
|
if(_awaitingRegistration > 0) {
|
114
|
-
revert
|
214
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
115
215
|
}
|
116
216
|
|
117
|
-
//
|
217
|
+
// release is not activated
|
218
|
+
if(_releaseInfo[version].activatedAt.gtz()) {
|
219
|
+
revert ErrorReleaseManagerReleaseAlreadyActivated(version);
|
220
|
+
}
|
118
221
|
|
119
222
|
_latest = version;
|
120
223
|
|
121
|
-
|
122
|
-
|
224
|
+
_releaseVersionByAddress[service] = version;
|
225
|
+
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
123
226
|
|
124
227
|
emit LogReleaseActivation(version);
|
125
228
|
}
|
126
229
|
|
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)
|
230
|
+
// release becomes disabled after delay expiration (can be reenabled before that)
|
231
|
+
function disableRelease(VersionPart version, Seconds disableDelay)
|
131
232
|
external
|
132
|
-
restricted //
|
133
|
-
returns(NftId nftId)
|
233
|
+
restricted // GIF_ADMIN_ROLE
|
134
234
|
{
|
135
|
-
|
136
|
-
|
235
|
+
// release was activated
|
236
|
+
if(_releaseInfo[version].activatedAt.eqz()) {
|
237
|
+
revert ErrorReleaseManagerReleaseNotActivated(version);
|
137
238
|
}
|
138
239
|
|
139
|
-
//
|
140
|
-
|
141
|
-
|
142
|
-
revert UnexpectedServiceAuthority(
|
143
|
-
authority(),
|
144
|
-
serviceAuthority);
|
240
|
+
// release not disabled already
|
241
|
+
if(_releaseInfo[version].disabledAt.gtz()) {
|
242
|
+
revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
|
145
243
|
}
|
146
244
|
|
147
|
-
|
148
|
-
|
149
|
-
VersionPart version = _next;
|
150
|
-
ObjectType domain = REGISTRY();
|
151
|
-
_verifyServiceInfo(info, version, domain);
|
245
|
+
disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
|
152
246
|
|
153
|
-
|
154
|
-
_createRelease(service.getFunctionConfigs());
|
247
|
+
_releaseAccessManager[version].disable(disableDelay);
|
155
248
|
|
156
|
-
|
157
|
-
|
158
|
-
nftId = _registry.registerService(info, version, domain);
|
159
|
-
|
160
|
-
// external call
|
161
|
-
service.linkToRegisteredNftId();
|
249
|
+
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
|
162
250
|
}
|
163
|
-
|
164
|
-
|
165
|
-
// TODO removing service from release? -> set _active to false forever, but keep all other records?
|
166
|
-
function registerService(IService service)
|
251
|
+
|
252
|
+
function enableRelease(VersionPart version)
|
167
253
|
external
|
168
|
-
restricted //
|
169
|
-
returns(NftId nftId)
|
254
|
+
restricted // GIF_ADMIN_ROLE
|
170
255
|
{
|
171
|
-
|
172
|
-
|
173
|
-
|
256
|
+
// release was disabled
|
257
|
+
//if(_releaseInfo[version].disabledAt.eqz()) {
|
258
|
+
// revert ErrorReleaseManagerReleaseAlreadyEnabled(version);
|
259
|
+
//}
|
174
260
|
|
175
|
-
|
176
|
-
|
177
|
-
ObjectType domain = _release[version].domains[_awaitingRegistration];// reversed registration order of services specified in RegistryService config
|
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);
|
189
|
-
}
|
261
|
+
// reverts if disable delay expired
|
262
|
+
_releaseAccessManager[version].enable();
|
190
263
|
|
191
|
-
|
192
|
-
|
193
|
-
nftId = _registry.registerService(info, version, domain);
|
194
|
-
|
195
|
-
// external call
|
196
|
-
service.linkToRegisteredNftId();
|
264
|
+
_releaseInfo[version].disabledAt = zeroTimestamp();
|
197
265
|
}
|
198
266
|
|
199
267
|
//--- view functions ----------------------------------------------------//
|
200
268
|
|
201
|
-
function
|
202
|
-
|
203
|
-
|
269
|
+
function predictDeterministicAddress(
|
270
|
+
address implementation,
|
271
|
+
bytes32 salt,
|
272
|
+
address deployer
|
273
|
+
) external pure returns (address predicted) {
|
274
|
+
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
204
275
|
}
|
205
276
|
|
206
|
-
function
|
207
|
-
|
208
|
-
return
|
277
|
+
function isActiveRegistryService(address service) external view returns(bool) {
|
278
|
+
VersionPart version = _releaseVersionByAddress[service];
|
279
|
+
return isActiveRelease(version);
|
209
280
|
}
|
210
281
|
|
211
|
-
function
|
282
|
+
function isActiveRelease(VersionPart version) public view returns(bool) {
|
283
|
+
if(_releaseInfo[version].activatedAt.eqz()) { return false; }
|
284
|
+
if(_releaseInfo[version].disabledAt.eqz()) { return true; }
|
285
|
+
return ltTimestamp(TimestampLib.blockTimestamp(), _releaseInfo[version].disabledAt);
|
286
|
+
}
|
287
|
+
|
288
|
+
|
289
|
+
function getRegistry() external view returns(address)
|
212
290
|
{
|
213
291
|
return (address(_registry));
|
214
292
|
}
|
215
293
|
|
216
|
-
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory)
|
217
|
-
|
218
|
-
return _release[version];
|
294
|
+
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
295
|
+
return _releaseInfo[version];
|
219
296
|
}
|
220
297
|
|
221
|
-
function getNextVersion() public view returns(VersionPart)
|
222
|
-
{
|
298
|
+
function getNextVersion() public view returns(VersionPart) {
|
223
299
|
return _next;
|
224
300
|
}
|
225
301
|
|
@@ -231,102 +307,156 @@ contract ReleaseManager is AccessManaged
|
|
231
307
|
return _initial;
|
232
308
|
}
|
233
309
|
|
310
|
+
function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
|
311
|
+
return _releaseAccessManager[version];
|
312
|
+
}
|
313
|
+
|
234
314
|
//--- private functions ----------------------------------------------------//
|
235
315
|
|
236
|
-
function
|
316
|
+
function _verifyService(IService service)
|
317
|
+
internal
|
318
|
+
returns(
|
319
|
+
IRegistry.ObjectInfo memory serviceInfo,
|
320
|
+
ObjectType serviceDomain,
|
321
|
+
VersionPart serviceVersion
|
322
|
+
)
|
323
|
+
{
|
324
|
+
if(!service.supportsInterface(type(IService).interfaceId)) {
|
325
|
+
revert ErrorReleaseManagerNotService(service);
|
326
|
+
}
|
327
|
+
|
328
|
+
address owner = msg.sender;
|
329
|
+
address serviceAuthority = service.authority();
|
330
|
+
serviceVersion = service.getVersion().toMajorPart();
|
331
|
+
serviceDomain = service.getDomain();// checked in registry
|
332
|
+
serviceInfo = service.getInitialInfo();
|
333
|
+
|
334
|
+
_verifyServiceInfo(service, serviceInfo, owner);
|
335
|
+
|
336
|
+
VersionPart releaseVersion = getNextVersion(); // never 0
|
337
|
+
address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
|
338
|
+
|
339
|
+
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
340
|
+
if(serviceAuthority != releaseAuthority) {
|
341
|
+
revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
|
342
|
+
service,
|
343
|
+
serviceAuthority,
|
344
|
+
releaseAuthority);
|
345
|
+
}
|
346
|
+
|
347
|
+
if(serviceVersion != releaseVersion) {
|
348
|
+
revert ErrorReleaseManagerServiceReleaseVersionMismatch(
|
349
|
+
service,
|
350
|
+
serviceVersion,
|
351
|
+
releaseVersion);
|
352
|
+
}
|
353
|
+
}
|
354
|
+
|
355
|
+
function _verifyServiceInfo(
|
237
356
|
IService service,
|
238
|
-
|
357
|
+
IRegistry.ObjectInfo memory info,
|
239
358
|
address expectedOwner // assume always valid, can not be 0
|
240
359
|
)
|
241
360
|
internal
|
242
|
-
|
243
|
-
returns(
|
244
|
-
IRegistry.ObjectInfo memory info
|
245
|
-
)
|
361
|
+
view
|
246
362
|
{
|
247
|
-
info
|
248
|
-
|
249
|
-
|
363
|
+
if(info.objectAddress != address(service)) {
|
364
|
+
revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
|
365
|
+
}
|
250
366
|
|
251
|
-
if(info.
|
252
|
-
revert
|
367
|
+
if(info.isInterceptor != false) { // service is never interceptor
|
368
|
+
revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
|
369
|
+
}
|
370
|
+
|
371
|
+
if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
|
372
|
+
revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
|
253
373
|
}
|
254
374
|
|
255
375
|
address owner = info.initialOwner;
|
256
376
|
|
257
377
|
if(owner != expectedOwner) { // registerable owner protection
|
258
|
-
revert
|
378
|
+
revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
|
259
379
|
}
|
260
380
|
|
261
381
|
if(owner == address(service)) {
|
262
|
-
revert
|
382
|
+
revert ErrorReleaseManagerServiceSelfRegistration(service);
|
263
383
|
}
|
264
384
|
|
265
385
|
if(_registry.isRegistered(owner)) {
|
266
|
-
revert
|
386
|
+
revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
|
267
387
|
}
|
268
388
|
}
|
269
389
|
|
270
|
-
function
|
271
|
-
|
272
|
-
|
273
|
-
|
390
|
+
function _verifyReleaseAuthorizations(
|
391
|
+
address[] memory serviceAddress,
|
392
|
+
RoleId[][] memory serviceRoles,
|
393
|
+
RoleId[][] memory functionRoles,
|
394
|
+
bytes4[][][] memory selectors
|
274
395
|
)
|
275
396
|
internal
|
276
397
|
view
|
277
|
-
returns(ObjectType)
|
278
398
|
{
|
279
|
-
(
|
280
|
-
|
281
|
-
VersionPart version
|
282
|
-
) = abi.decode(info.data, (ObjectType, VersionPart));
|
283
|
-
|
284
|
-
if(version != expectedVersion) {
|
285
|
-
revert UnexpectedServiceVersion(expectedVersion, version);
|
399
|
+
if(serviceAddress.length == 0) {
|
400
|
+
revert ErrorReleaseManagerReleaseEmpty();
|
286
401
|
}
|
287
402
|
|
288
|
-
|
289
|
-
|
403
|
+
for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
|
404
|
+
{
|
405
|
+
for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
|
406
|
+
{
|
407
|
+
RoleId role = serviceRoles[serviceIdx][roleIdx];
|
408
|
+
if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
|
409
|
+
revert ErrorReleaseManagerServiceRoleInvalid(serviceAddress[serviceIdx], role);
|
410
|
+
}
|
411
|
+
}
|
290
412
|
}
|
291
|
-
|
292
|
-
|
413
|
+
// TODO no duplicate service "domain" role per release
|
414
|
+
// TODO no duplicate service roles per service
|
415
|
+
// TODO no duplicate service function roles per service
|
416
|
+
// TODO no duplicate service function selectors per service
|
293
417
|
}
|
294
418
|
|
295
|
-
|
296
|
-
|
419
|
+
function _setServiceAuthorizations(
|
420
|
+
AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
|
421
|
+
address serviceAddress,
|
422
|
+
string memory serviceName,
|
423
|
+
RoleId[] memory serviceRoles,
|
424
|
+
string[] memory serviceRoleNames,
|
425
|
+
RoleId[] memory functionRoles,
|
426
|
+
string[] memory functionRoleNames,
|
427
|
+
bytes4[][] memory selectors
|
428
|
+
)
|
297
429
|
internal
|
298
430
|
{
|
299
|
-
|
431
|
+
accessManager.createTarget(serviceAddress, serviceName);
|
300
432
|
|
301
|
-
|
302
|
-
revert ConfigMissing();
|
303
|
-
}
|
304
|
-
// always in release
|
305
|
-
_release[version].domains.push(REGISTRY());
|
306
|
-
for(uint idx = 0; idx < config.length; idx++)
|
433
|
+
for(uint idx = 0; idx < functionRoles.length; idx++)
|
307
434
|
{
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
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);
|
435
|
+
uint64 roleInt = functionRoles[idx].toInt();
|
436
|
+
|
437
|
+
if(!accessManager.isRoleExists(roleInt)) {
|
438
|
+
accessManager.createRole(roleInt, functionRoleNames[idx]);
|
321
439
|
}
|
322
|
-
|
323
|
-
|
324
|
-
|
440
|
+
|
441
|
+
accessManager.setTargetFunctionRole(
|
442
|
+
serviceAddress,
|
443
|
+
selectors[idx],
|
444
|
+
roleInt);
|
325
445
|
}
|
326
|
-
|
327
|
-
|
328
|
-
|
446
|
+
|
447
|
+
for(uint idx = 0; idx < serviceRoles.length; idx++)
|
448
|
+
{
|
449
|
+
uint64 roleInt = serviceRoles[idx].toInt();
|
329
450
|
|
330
|
-
|
451
|
+
if(!accessManager.isRoleExists(roleInt)) {
|
452
|
+
accessManager.createRole(roleInt, serviceRoleNames[idx]);
|
453
|
+
}
|
454
|
+
|
455
|
+
accessManager.grantRole(
|
456
|
+
serviceRoles[idx].toInt(),
|
457
|
+
serviceAddress,
|
458
|
+
0);
|
459
|
+
}
|
460
|
+
|
331
461
|
}
|
332
|
-
}
|
462
|
+
}
|