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