@etherisc/gif-next 0.0.2-9dd1984-554 → 0.0.2-9dd41ff-671
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 +10 -14
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1395 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1575 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +851 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +73 -83
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +269 -1417
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +264 -218
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +459 -2504
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +746 -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 +432 -280
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +415 -380
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +362 -95
- 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 +13 -159
- 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 +291 -276
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1095 -0
- 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/pool/Pool.sol/Pool.json +1426 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1641 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +779 -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/IDistributionService.sol/IDistributionService.json → product/IApplicationService.sol/IApplicationService.json} +219 -172
- 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 +182 -302
- 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} +241 -230
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +239 -169
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +72 -166
- 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/product/Product.sol/Product.json +1217 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +883 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +711 -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 +209 -17
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +222 -227
- 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 +235 -43
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +305 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +338 -251
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +351 -84
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +566 -78
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +148 -62
- 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 +1747 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1765 -0
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/{components/Pool.sol/Pool.json → shared/Component.sol/Component.json} +360 -326
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +215 -160
- 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/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 +1594 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/IComponent.sol/IComponent.json} +163 -218
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
- 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 +71 -165
- 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/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -47
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +342 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -53
- 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 +189 -150
- 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 +2 -152
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/{components/Component.sol/Component.json → staking/IStakingService.sol/IStakingService.json} +219 -194
- 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/distribution/Distribution.sol +285 -0
- package/contracts/distribution/DistributionService.sol +351 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/distribution/IDistributionComponent.sol +71 -0
- package/contracts/distribution/IDistributionService.sol +87 -0
- package/contracts/instance/BundleManager.sol +22 -25
- package/contracts/instance/IInstance.sol +55 -38
- package/contracts/instance/IInstanceService.sol +50 -17
- package/contracts/instance/Instance.sol +151 -183
- package/contracts/instance/InstanceAdmin.sol +354 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +320 -0
- package/contracts/instance/InstanceReader.sol +102 -49
- package/contracts/instance/InstanceService.sol +200 -247
- 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} +16 -35
- package/contracts/instance/module/IAccess.sol +17 -21
- 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 -22
- 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/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +93 -0
- package/contracts/product/IPolicyService.sol +80 -0
- package/contracts/product/IPricingService.sol +37 -0
- package/contracts/product/IProductComponent.sol +41 -0
- 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/product/Product.sol +379 -0
- 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 +42 -21
- package/contracts/registry/IRegistryService.sol +36 -35
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +165 -96
- package/contracts/registry/RegistryAdmin.sol +143 -0
- package/contracts/registry/RegistryService.sol +81 -169
- package/contracts/registry/RegistryServiceManager.sol +22 -24
- package/contracts/registry/ReleaseManager.sol +321 -198
- package/contracts/registry/TokenRegistry.sol +23 -15
- 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 +125 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/shared/Component.sol +271 -0
- package/contracts/shared/ComponentService.sol +141 -0
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +17 -0
- package/contracts/shared/IComponent.sol +90 -0
- package/contracts/shared/INftOwnable.sol +12 -11
- package/contracts/shared/IPolicyHolder.sol +40 -0
- package/contracts/shared/IRegisterable.sol +4 -4
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +6 -4
- package/contracts/shared/IVersionable.sol +5 -48
- package/contracts/shared/NftOwnable.sol +68 -87
- package/contracts/shared/PolicyHolder.sol +94 -0
- package/contracts/shared/ProxyManager.sol +131 -25
- package/contracts/shared/Registerable.sol +26 -41
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +33 -21
- package/contracts/shared/TokenHandler.sol +14 -6
- package/contracts/shared/Versionable.sol +4 -92
- 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}/DistributorType.sol +2 -2
- 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 +17 -7
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +4 -0
- package/contracts/type/RoleId.sol +139 -0
- 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 +3 -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 -413
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
- 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/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/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1047
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -100
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1094
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -436
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -764
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -424
- 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 -1219
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -492
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -798
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -424
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -848
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -424
- 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 -305
- 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 -600
- 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/Component.sol +0 -177
- package/contracts/components/Distribution.sol +0 -154
- package/contracts/components/IComponent.sol +0 -37
- package/contracts/components/IDistributionComponent.sol +0 -44
- package/contracts/components/IPoolComponent.sol +0 -66
- package/contracts/components/IProductComponent.sol +0 -35
- package/contracts/components/Pool.sol +0 -258
- package/contracts/components/Product.sol +0 -295
- 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/AccessManagerUpgradeableInitializeable.sol +0 -23
- package/contracts/instance/IInstanceBase.sol +0 -25
- package/contracts/instance/InstanceAccessManager.sol +0 -303
- package/contracts/instance/InstanceBase.sol +0 -39
- package/contracts/instance/base/ComponentService.sol +0 -133
- package/contracts/instance/base/IInstanceBase.sol +0 -21
- package/contracts/instance/service/BundleService.sol +0 -293
- package/contracts/instance/service/BundleServiceManager.sol +0 -51
- package/contracts/instance/service/DistributionService.sol +0 -115
- 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/PolicyService.sol +0 -538
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -142
- package/contracts/instance/service/PoolServiceManager.sol +0 -51
- package/contracts/instance/service/ProductService.sol +0 -241
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -210
- 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/RoleId.sol +0 -90
- /package/contracts/{types → type}/AddressSet.sol +0 -0
- /package/contracts/{types → type}/Key32.sol +0 -0
- /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -1,220 +1,309 @@
|
|
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";
|
5
6
|
|
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 "../
|
7
|
+
import {NftId} from "../type/NftId.sol";
|
8
|
+
import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
9
|
+
import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
|
10
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
11
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
11
12
|
|
12
13
|
import {IService} from "../shared/IService.sol";
|
14
|
+
import {AccessManagerExtendedWithDisableInitializeable} from "../shared/AccessManagerExtendedWithDisableInitializeable.sol";
|
13
15
|
|
14
16
|
import {IRegistry} from "./IRegistry.sol";
|
15
17
|
import {Registry} from "./Registry.sol";
|
16
18
|
import {IRegistryService} from "./IRegistryService.sol";
|
17
|
-
import {
|
19
|
+
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
18
20
|
|
19
21
|
|
20
22
|
contract ReleaseManager is AccessManaged
|
21
23
|
{
|
22
24
|
using ObjectTypeLib for ObjectType;
|
23
25
|
|
24
|
-
event LogReleaseCreation(
|
26
|
+
event LogReleaseCreation(
|
27
|
+
VersionPart version,
|
28
|
+
bytes32 salt,
|
29
|
+
AccessManagerExtendedWithDisableInitializeable releaseAccessManager
|
30
|
+
);
|
25
31
|
event LogReleaseActivation(VersionPart version);
|
26
32
|
|
27
|
-
// createNextRelease
|
28
|
-
error NotRegistryService();
|
29
|
-
error UnexpectedServiceAuthority(address expected, address found);
|
30
33
|
|
34
|
+
// prepareRelease
|
35
|
+
error ErrorReleaseManagerReleaseEmpty();
|
36
|
+
error ErrorReleaseManagerReleaseAlreadyCreated(VersionPart version);
|
37
|
+
|
31
38
|
// registerService
|
32
|
-
error
|
39
|
+
error ErrorReleaseManagerNotService(IService service);
|
40
|
+
error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
|
33
41
|
|
34
42
|
// activateNextRelease
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
// _getAndVerifyContractInfo
|
39
|
-
error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
|
40
|
-
error NotRegisterableOwner(address notOwner);
|
41
|
-
error SelfRegistration();
|
42
|
-
error RegisterableOwnerIsRegistered();
|
43
|
+
error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
|
44
|
+
error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
45
|
+
error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
|
43
46
|
|
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);
|
47
|
+
// disableRelease
|
48
|
+
error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
|
49
|
+
error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
|
53
50
|
|
51
|
+
// _verifyService
|
52
|
+
error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
53
|
+
error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
54
54
|
|
55
|
-
|
56
|
-
|
55
|
+
// _verifyServiceInfo
|
56
|
+
error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
|
57
|
+
error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
|
58
|
+
error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
|
59
|
+
error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
|
60
|
+
error ErrorReleaseManagerServiceSelfRegistration(IService service);
|
61
|
+
error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
|
57
62
|
|
58
|
-
|
59
|
-
|
63
|
+
// _verifyServiceAuthorizations
|
64
|
+
error ErrorReleaseManagerServiceRoleInvalid(address service, RoleId role);
|
60
65
|
|
61
|
-
|
66
|
+
RegistryAdmin public immutable _admin;
|
67
|
+
address public immutable _releaseAccessManagerCodeAddress;
|
68
|
+
IRegistry public immutable _registry;
|
62
69
|
|
63
|
-
mapping(VersionPart version =>
|
70
|
+
mapping(VersionPart version => AccessManagerExtendedWithDisableInitializeable accessManager) internal _releaseAccessManager;
|
71
|
+
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
72
|
+
mapping(address registryService => bool isActive) internal _active;// have access to registry
|
64
73
|
|
65
|
-
|
74
|
+
VersionPart immutable internal _initial;// first active version
|
75
|
+
VersionPart internal _latest;// latest active version
|
76
|
+
VersionPart internal _next;// version to create and activate
|
66
77
|
|
67
|
-
|
78
|
+
uint internal _awaitingRegistration; // "services left to register" counter
|
68
79
|
|
69
80
|
constructor(
|
70
|
-
|
81
|
+
RegistryAdmin admin,
|
71
82
|
VersionPart initialVersion)
|
72
|
-
AccessManaged(
|
83
|
+
AccessManaged(admin.authority())
|
73
84
|
{
|
74
|
-
|
75
|
-
|
76
|
-
_accessManager = accessManager;
|
77
|
-
|
85
|
+
_admin = admin;
|
78
86
|
_initial = initialVersion;
|
79
|
-
|
87
|
+
_next = VersionPartLib.toVersionPart(initialVersion.toInt() - 1);
|
80
88
|
_registry = new Registry();
|
89
|
+
|
90
|
+
AccessManagerExtendedWithDisableInitializeable releaseAccessManager = new AccessManagerExtendedWithDisableInitializeable();
|
91
|
+
releaseAccessManager.initialize(address(0x1), VersionLib.toVersionPart(0));
|
92
|
+
_releaseAccessManagerCodeAddress = address(releaseAccessManager);
|
81
93
|
}
|
82
94
|
|
83
|
-
|
84
|
-
|
85
|
-
function createNextRelease(IRegistryService service)
|
95
|
+
/// @dev skips previous release if it was not activated
|
96
|
+
function createNextRelease()
|
86
97
|
external
|
87
98
|
restricted // GIF_ADMIN_ROLE
|
88
|
-
returns(
|
99
|
+
returns(VersionPart version)
|
100
|
+
{
|
101
|
+
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
102
|
+
_awaitingRegistration = 0;
|
103
|
+
}
|
104
|
+
|
105
|
+
function prepareNextRelease(
|
106
|
+
address[] memory addresses,
|
107
|
+
string[] memory names,
|
108
|
+
RoleId[][] memory serviceRoles,
|
109
|
+
string[][] memory serviceRoleNames,
|
110
|
+
RoleId[][] memory functionRoles,
|
111
|
+
string[][] memory functionRoleNames,
|
112
|
+
bytes4[][][] memory selectors,
|
113
|
+
bytes32 salt
|
114
|
+
)
|
115
|
+
external
|
116
|
+
restricted // GIF_MANAGER_ROLE
|
117
|
+
returns(address releaseAccessManagerAddress, VersionPart version, bytes32 releaseSalt)
|
89
118
|
{
|
90
|
-
if(
|
91
|
-
revert
|
119
|
+
if(addresses.length == 0) {
|
120
|
+
revert ErrorReleaseManagerReleaseEmpty();
|
92
121
|
}
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
revert UnexpectedServiceAuthority(
|
97
|
-
authority(),
|
98
|
-
serviceAuthority);
|
122
|
+
|
123
|
+
if(_awaitingRegistration > 0) {
|
124
|
+
revert ErrorReleaseManagerReleaseAlreadyCreated(version);
|
99
125
|
}
|
100
126
|
|
101
|
-
(
|
102
|
-
IRegistry.ObjectInfo memory info,
|
103
|
-
bytes memory data
|
104
|
-
) = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
|
127
|
+
_verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
|
105
128
|
|
106
|
-
|
107
|
-
ObjectType domain = REGISTRY();
|
108
|
-
_verifyServiceInfo(info, version, domain);
|
129
|
+
version = getNextVersion();
|
109
130
|
|
110
|
-
|
131
|
+
_releaseInfo[version].version = version;
|
132
|
+
_releaseInfo[version].addresses = addresses;
|
133
|
+
_releaseInfo[version].names = names;
|
134
|
+
_releaseInfo[version].serviceRoles = serviceRoles;
|
135
|
+
_releaseInfo[version].serviceRoleNames = serviceRoleNames;
|
136
|
+
_releaseInfo[version].functionRoles = functionRoles;
|
137
|
+
_releaseInfo[version].functionRoleNames = functionRoleNames;
|
138
|
+
_releaseInfo[version].selectors = selectors;
|
139
|
+
_awaitingRegistration = addresses.length;
|
111
140
|
|
112
|
-
//
|
113
|
-
|
114
|
-
|
141
|
+
// ensures unique salt
|
142
|
+
releaseSalt = keccak256(
|
143
|
+
bytes.concat(
|
144
|
+
bytes32(version.toInt()),
|
145
|
+
salt));
|
115
146
|
|
116
|
-
|
117
|
-
|
147
|
+
releaseAccessManagerAddress = Clones.cloneDeterministic(_releaseAccessManagerCodeAddress, releaseSalt);
|
148
|
+
AccessManagerExtendedWithDisableInitializeable releaseAccessManager = AccessManagerExtendedWithDisableInitializeable(releaseAccessManagerAddress);
|
149
|
+
releaseAccessManager.initialize(address(this), version);
|
118
150
|
|
119
|
-
|
151
|
+
_releaseAccessManager[version] = releaseAccessManager;
|
152
|
+
|
153
|
+
emit LogReleaseCreation(version, releaseSalt, releaseAccessManager);
|
120
154
|
}
|
121
155
|
|
122
|
-
// TODO adding service to release -> synchronized with proxy upgrades or simple addServiceToRelease(service, version, selector)?
|
123
|
-
// TODO removing service from release? -> set _active to false forever, but keep all other records?
|
124
156
|
function registerService(IService service)
|
125
157
|
external
|
126
158
|
restricted // GIF_MANAGER_ROLE
|
127
159
|
returns(NftId nftId)
|
128
160
|
{
|
129
|
-
if(!service.supportsInterface(type(IService).interfaceId)) {
|
130
|
-
revert NotService();
|
131
|
-
}
|
132
|
-
|
133
161
|
(
|
134
|
-
IRegistry.ObjectInfo memory info,
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
// setup and grant unique role if service does registrations
|
143
|
-
address registryService = _registry.getServiceAddress(REGISTRY(), version);
|
144
|
-
bytes4[] memory selector = new bytes4[](1);
|
145
|
-
selector[0] = _selector[version][domain];
|
146
|
-
if(selector[0] != 0) {
|
147
|
-
_accessManager.setAndGrantUniqueRole(
|
148
|
-
address(service),
|
149
|
-
registryService,
|
150
|
-
selector);
|
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
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
151
170
|
}
|
152
171
|
|
153
|
-
_awaitingRegistration
|
172
|
+
uint serviceIdx = _awaitingRegistration - 1;
|
173
|
+
address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
|
174
|
+
// TODO temp, while typescript addresses computation is not implemented
|
175
|
+
/*if(address(service) != serviceAddress) {
|
176
|
+
revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
|
177
|
+
}*/
|
154
178
|
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
179
|
+
_setServiceAuthorizations(
|
180
|
+
_releaseAccessManager[version],
|
181
|
+
// TODO temp, while typescript addresses computation is not implemented
|
182
|
+
address(service),//serviceAddress,
|
183
|
+
_releaseInfo[version].names[serviceIdx],
|
184
|
+
_releaseInfo[version].serviceRoles[serviceIdx],
|
185
|
+
_releaseInfo[version].serviceRoleNames[serviceIdx],
|
186
|
+
_releaseInfo[version].functionRoles[serviceIdx],
|
187
|
+
_releaseInfo[version].functionRoleNames[serviceIdx],
|
188
|
+
_releaseInfo[version].selectors[serviceIdx]);
|
159
189
|
|
160
|
-
|
161
|
-
|
190
|
+
_awaitingRegistration = serviceIdx;
|
191
|
+
_releaseInfo[version].domains.push(domain);// checked in registry
|
162
192
|
|
163
193
|
nftId = _registry.registerService(info, version, domain);
|
164
194
|
|
165
|
-
|
166
|
-
service.linkToRegisteredNftId();
|
195
|
+
service.linkToRegisteredNftId();
|
167
196
|
}
|
168
197
|
|
169
|
-
|
198
|
+
function activateNextRelease()
|
170
199
|
external
|
171
200
|
restricted // GIF_ADMIN_ROLE
|
172
201
|
{
|
173
|
-
VersionPart version =
|
202
|
+
VersionPart version = _next;
|
174
203
|
address service = _registry.getServiceAddress(REGISTRY(), version);
|
175
204
|
|
176
|
-
// release
|
205
|
+
// release exists, registry service is a MUST
|
206
|
+
//if(_releaseAccessManager[version] == address(0)) {
|
177
207
|
if(service == address(0)) {
|
178
|
-
revert
|
208
|
+
revert ErrorReleaseManagerReleaseNotCreated(version);
|
179
209
|
}
|
180
210
|
|
181
211
|
// release fully deployed
|
182
212
|
if(_awaitingRegistration > 0) {
|
183
|
-
revert
|
213
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
184
214
|
}
|
185
215
|
|
186
|
-
//
|
216
|
+
// release is not activated
|
217
|
+
if(_releaseInfo[version].activatedAt.gtz()) {
|
218
|
+
revert ErrorReleaseManagerReleaseAlreadyActivated(version);
|
219
|
+
}
|
187
220
|
|
188
221
|
_latest = version;
|
222
|
+
|
189
223
|
_active[service] = true;
|
224
|
+
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
190
225
|
|
191
|
-
LogReleaseActivation(version);
|
192
|
-
}
|
226
|
+
emit LogReleaseActivation(version);
|
227
|
+
}
|
228
|
+
|
229
|
+
// TODO rename activatedAt to createdAt
|
230
|
+
// consider lastActivatedAt
|
231
|
+
function disableRelease(VersionPart version)
|
232
|
+
external
|
233
|
+
restricted // GIF_ADMIN_ROLE
|
234
|
+
{
|
235
|
+
// release was activated
|
236
|
+
if(_releaseInfo[version].activatedAt.eqz()) {
|
237
|
+
revert ErrorReleaseManagerReleaseNotActivated(version);
|
238
|
+
}
|
193
239
|
|
194
|
-
|
240
|
+
// release not disabled already
|
241
|
+
if(_releaseInfo[version].disabledAt.gtz()) {
|
242
|
+
revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
|
243
|
+
}
|
195
244
|
|
196
|
-
|
245
|
+
// disable release access manager
|
246
|
+
_releaseAccessManager[version].disable();
|
247
|
+
|
248
|
+
// disable registry service
|
249
|
+
address registryServiceAddress = _registry.getServiceAddress(REGISTRY(), version);
|
250
|
+
_active[registryServiceAddress] = false;
|
251
|
+
|
252
|
+
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
|
253
|
+
}
|
254
|
+
// TODO consider reenable delay (few month), after expiration can not enable back
|
255
|
+
// after expiration release is not maintained in case of error:
|
256
|
+
// 1). we will not emeregency shutdown because of no fixing will be done -> right
|
257
|
+
// 2). we can shutdown but it never be enabled afterwards
|
258
|
+
function enableRelease(VersionPart version)
|
259
|
+
external
|
260
|
+
restricted // GIF_ADMIN_ROLE
|
197
261
|
{
|
262
|
+
// release not disabled already
|
263
|
+
if(_releaseInfo[version].disabledAt.eqz()) {
|
264
|
+
//revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
|
265
|
+
}
|
266
|
+
|
267
|
+
// disable release access manager
|
268
|
+
_releaseAccessManager[version].enable();
|
269
|
+
|
270
|
+
// disable registry service
|
271
|
+
address registryServiceAddress = _registry.getServiceAddress(REGISTRY(), version);
|
272
|
+
_active[registryServiceAddress] = true;
|
273
|
+
|
274
|
+
_releaseInfo[version].disabledAt = zeroTimestamp();
|
275
|
+
}
|
276
|
+
|
277
|
+
//--- view functions ----------------------------------------------------//
|
278
|
+
|
279
|
+
function predictDeterministicAddress(
|
280
|
+
address implementation,
|
281
|
+
bytes32 salt,
|
282
|
+
address deployer
|
283
|
+
) external pure returns (address predicted) {
|
284
|
+
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
285
|
+
}
|
286
|
+
|
287
|
+
function isActiveRegistryService(address service) external view returns(bool) {
|
198
288
|
return _active[service];
|
199
289
|
}
|
200
290
|
|
201
|
-
function
|
202
|
-
|
203
|
-
return (address(_registry));
|
291
|
+
function isActiveRelease(VersionPart version) external view returns(bool) {
|
292
|
+
return _releaseInfo[version].disabledAt.gtz() ? false : _releaseInfo[version].activatedAt.gtz();
|
204
293
|
}
|
205
294
|
|
206
|
-
|
295
|
+
|
296
|
+
function getRegistry() external view returns(address)
|
207
297
|
{
|
208
|
-
return
|
298
|
+
return (address(_registry));
|
209
299
|
}
|
210
300
|
|
211
|
-
function
|
212
|
-
|
213
|
-
|
301
|
+
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
302
|
+
return _releaseInfo[version];
|
303
|
+
}
|
214
304
|
|
215
|
-
|
216
|
-
|
217
|
-
VersionPartLib.toVersionPart(latest + 1);
|
305
|
+
function getNextVersion() public view returns(VersionPart) {
|
306
|
+
return _next;
|
218
307
|
}
|
219
308
|
|
220
309
|
function getLatestVersion() external view returns(VersionPart) {
|
@@ -225,118 +314,152 @@ contract ReleaseManager is AccessManaged
|
|
225
314
|
return _initial;
|
226
315
|
}
|
227
316
|
|
317
|
+
function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
|
318
|
+
return _releaseAccessManager[version];
|
319
|
+
}
|
320
|
+
|
228
321
|
//--- private functions ----------------------------------------------------//
|
229
322
|
|
230
|
-
function
|
323
|
+
function _verifyService(IService service)
|
324
|
+
internal
|
325
|
+
returns(
|
326
|
+
IRegistry.ObjectInfo memory serviceInfo,
|
327
|
+
ObjectType serviceDomain,
|
328
|
+
VersionPart serviceVersion
|
329
|
+
)
|
330
|
+
{
|
331
|
+
if(!service.supportsInterface(type(IService).interfaceId)) {
|
332
|
+
revert ErrorReleaseManagerNotService(service);
|
333
|
+
}
|
334
|
+
|
335
|
+
address owner = msg.sender;
|
336
|
+
address serviceAuthority = service.authority();
|
337
|
+
serviceVersion = service.getVersion().toMajorPart();
|
338
|
+
serviceDomain = service.getDomain();// checked in registry
|
339
|
+
serviceInfo = service.getInitialInfo();
|
340
|
+
|
341
|
+
_verifyServiceInfo(service, serviceInfo, owner);
|
342
|
+
|
343
|
+
VersionPart releaseVersion = getNextVersion(); // never 0
|
344
|
+
address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
|
345
|
+
|
346
|
+
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
347
|
+
if(serviceAuthority != releaseAuthority) {
|
348
|
+
revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
|
349
|
+
service,
|
350
|
+
serviceAuthority,
|
351
|
+
releaseAuthority);
|
352
|
+
}
|
353
|
+
|
354
|
+
if(serviceVersion != releaseVersion) {
|
355
|
+
revert ErrorReleaseManagerServiceReleaseVersionMismatch(
|
356
|
+
service,
|
357
|
+
serviceVersion,
|
358
|
+
releaseVersion);
|
359
|
+
}
|
360
|
+
}
|
361
|
+
|
362
|
+
function _verifyServiceInfo(
|
231
363
|
IService service,
|
232
|
-
|
364
|
+
IRegistry.ObjectInfo memory info,
|
233
365
|
address expectedOwner // assume always valid, can not be 0
|
234
366
|
)
|
235
367
|
internal
|
236
368
|
view
|
237
|
-
returns(
|
238
|
-
IRegistry.ObjectInfo memory info,
|
239
|
-
bytes memory data
|
240
|
-
)
|
241
369
|
{
|
242
|
-
(info
|
243
|
-
|
244
|
-
|
370
|
+
if(info.objectAddress != address(service)) {
|
371
|
+
revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
|
372
|
+
}
|
373
|
+
|
374
|
+
if(info.isInterceptor != false) { // service is never interceptor
|
375
|
+
revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
|
376
|
+
}
|
245
377
|
|
246
|
-
if(info.objectType !=
|
247
|
-
revert
|
378
|
+
if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
|
379
|
+
revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
|
248
380
|
}
|
249
381
|
|
250
382
|
address owner = info.initialOwner;
|
251
383
|
|
252
384
|
if(owner != expectedOwner) { // registerable owner protection
|
253
|
-
revert
|
385
|
+
revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
|
254
386
|
}
|
255
387
|
|
256
388
|
if(owner == address(service)) {
|
257
|
-
revert
|
389
|
+
revert ErrorReleaseManagerServiceSelfRegistration(service);
|
258
390
|
}
|
259
|
-
|
260
|
-
/*if(owner == address(0)) { // never 0
|
261
|
-
revert();// RegisterableOwnerIsZero();
|
262
|
-
}*/
|
263
391
|
|
264
392
|
if(_registry.isRegistered(owner)) {
|
265
|
-
revert
|
393
|
+
revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
|
266
394
|
}
|
267
|
-
|
268
|
-
/*NftId parentNftId = info.parentNftId;
|
269
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
270
|
-
|
271
|
-
if(parentInfo.objectType != parentType) { // parent registration + type
|
272
|
-
revert InvalidParent(parentNftId);
|
273
|
-
}*/
|
274
|
-
|
275
|
-
return(info, data);
|
276
395
|
}
|
277
396
|
|
278
|
-
function
|
279
|
-
|
280
|
-
|
281
|
-
|
397
|
+
function _verifyReleaseAuthorizations(
|
398
|
+
address[] memory serviceAddress,
|
399
|
+
RoleId[][] memory serviceRoles,
|
400
|
+
RoleId[][] memory functionRoles,
|
401
|
+
bytes4[][][] memory selectors
|
282
402
|
)
|
283
403
|
internal
|
284
404
|
view
|
285
|
-
returns(ObjectType)
|
286
405
|
{
|
287
|
-
(
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
if(expectedDomain.gtz()) {
|
297
|
-
if(domain != expectedDomain) {
|
298
|
-
revert UnexpectedServiceDomain(expectedDomain, domain);
|
406
|
+
for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
|
407
|
+
{
|
408
|
+
for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
|
409
|
+
{
|
410
|
+
RoleId role = serviceRoles[serviceIdx][roleIdx];
|
411
|
+
if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
|
412
|
+
revert ErrorReleaseManagerServiceRoleInvalid(serviceAddress[serviceIdx], role);
|
413
|
+
}
|
299
414
|
}
|
300
415
|
}
|
301
|
-
|
302
|
-
|
416
|
+
// TODO no duplicate service "domain" role per release
|
417
|
+
// TODO no duplicate service roles per service
|
418
|
+
// TODO no duplicate service function roles per service
|
419
|
+
// TODO no duplicate service function selectors per service
|
303
420
|
}
|
304
421
|
|
305
|
-
|
306
|
-
|
422
|
+
function _setServiceAuthorizations(
|
423
|
+
AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
|
424
|
+
address serviceAddress,
|
425
|
+
string memory serviceName,
|
426
|
+
RoleId[] memory serviceRoles,
|
427
|
+
string[] memory serviceRoleNames,
|
428
|
+
RoleId[] memory functionRoles,
|
429
|
+
string[] memory functionRoleNames,
|
430
|
+
bytes4[][] memory selectors
|
431
|
+
)
|
307
432
|
internal
|
308
433
|
{
|
309
|
-
|
310
|
-
IRegistryService.FunctionConfig[] memory config = abi.decode(configBytes, (IRegistryService.FunctionConfig[]));
|
434
|
+
accessManager.createTarget(serviceAddress, serviceName);
|
311
435
|
|
312
|
-
|
313
|
-
revert ConfigMissing();
|
314
|
-
}
|
315
|
-
// always in release
|
316
|
-
_release[version].domains.push(REGISTRY());
|
317
|
-
for(uint idx = 0; idx < config.length; idx++)
|
436
|
+
for(uint idx = 0; idx < functionRoles.length; idx++)
|
318
437
|
{
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
if(
|
324
|
-
domain == REGISTRY() ||
|
325
|
-
domain.eqz()
|
326
|
-
) { revert ConfigServiceDomainInvalid(idx, domain); }
|
327
|
-
|
328
|
-
// no overwrite
|
329
|
-
if(_selector[version][domain] > 0) {
|
330
|
-
revert SelectorAlreadyExists(version, domain);
|
438
|
+
uint64 roleInt = functionRoles[idx].toInt();
|
439
|
+
|
440
|
+
if(!accessManager.isRoleExists(roleInt)) {
|
441
|
+
accessManager.createRole(roleInt, functionRoleNames[idx]);
|
331
442
|
}
|
332
|
-
|
333
|
-
|
334
|
-
|
443
|
+
|
444
|
+
accessManager.setTargetFunctionRole(
|
445
|
+
serviceAddress,
|
446
|
+
selectors[idx],
|
447
|
+
roleInt);
|
335
448
|
}
|
336
|
-
|
337
|
-
|
338
|
-
|
449
|
+
|
450
|
+
for(uint idx = 0; idx < serviceRoles.length; idx++)
|
451
|
+
{
|
452
|
+
uint64 roleInt = serviceRoles[idx].toInt();
|
339
453
|
|
340
|
-
|
454
|
+
if(!accessManager.isRoleExists(roleInt)) {
|
455
|
+
accessManager.createRole(roleInt, serviceRoleNames[idx]);
|
456
|
+
}
|
457
|
+
|
458
|
+
accessManager.grantRole(
|
459
|
+
serviceRoles[idx].toInt(),
|
460
|
+
serviceAddress,
|
461
|
+
0);
|
462
|
+
}
|
463
|
+
|
341
464
|
}
|
342
|
-
}
|
465
|
+
}
|