@etherisc/gif-next 0.0.2-984cc08-642 → 0.0.2-989147f-853
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -13
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1376 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +819 -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 +68 -54
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +273 -1592
- 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 +443 -2515
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +479 -178
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +442 -249
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +413 -390
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +330 -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 +58 -75
- 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 +1288 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +735 -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} +438 -201
- 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 +1407 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +747 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +687 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -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 +1281 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +779 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +727 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1198 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +679 -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 +170 -17
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +208 -229
- 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 +196 -43
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +50 -97
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +323 -258
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +331 -81
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +397 -81
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +142 -54
- 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 +873 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +199 -163
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/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 +109 -29
- 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 +310 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -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 +173 -153
- 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 +767 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +667 -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/{instance/service → distribution}/DistributionServiceManager.sol +15 -12
- package/contracts/distribution/IDistributionComponent.sol +71 -0
- package/contracts/distribution/IDistributionService.sol +87 -0
- package/contracts/instance/BundleManager.sol +15 -14
- package/contracts/instance/IInstance.sol +55 -40
- package/contracts/instance/IInstanceService.sol +49 -16
- package/contracts/instance/Instance.sol +149 -179
- package/contracts/instance/InstanceAccessManager.sol +406 -166
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +101 -26
- package/contracts/instance/InstanceService.sol +192 -253
- package/contracts/instance/InstanceServiceManager.sol +11 -8
- package/contracts/instance/InstanceStore.sol +211 -0
- package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
- package/contracts/instance/base/IKeyValueStore.sol +14 -10
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +44 -47
- package/contracts/instance/base/Lifecycle.sol +28 -7
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -14
- package/contracts/instance/module/IAccess.sol +24 -18
- 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/{instance/service → pool}/BundleServiceManager.sol +15 -12
- 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 +416 -0
- package/contracts/{instance/service → pool}/PoolServiceManager.sol +15 -12
- 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/{instance/service → product}/PolicyServiceManager.sol +16 -13
- 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/{instance/service → product}/ProductServiceManager.sol +16 -13
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +36 -21
- package/contracts/registry/IRegistryService.sol +33 -32
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +160 -89
- package/contracts/registry/RegistryAccessManager.sol +51 -129
- package/contracts/registry/RegistryService.sol +79 -165
- package/contracts/registry/RegistryServiceManager.sol +28 -18
- package/contracts/registry/ReleaseManager.sol +235 -197
- package/contracts/registry/TokenRegistry.sol +21 -15
- 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/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 +64 -82
- package/contracts/shared/PolicyHolder.sol +94 -0
- package/contracts/shared/ProxyManager.sol +126 -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 -619
- 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 -261
- 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/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 -27
- package/contracts/instance/InstanceBase.sol +0 -38
- 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/DistributionService.sol +0 -115
- 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/PoolService.sol +0 -142
- package/contracts/instance/service/ProductService.sol +0 -241
- 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,12 +1,11 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
4
5
|
|
5
|
-
import {NftId, toNftId, zeroNftId} from "../
|
6
|
-
import {VersionPart} from "../
|
7
|
-
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../
|
8
|
-
|
9
|
-
import {ERC165} from "../shared/ERC165.sol";
|
6
|
+
import {NftId, toNftId, zeroNftId} from "../type/NftId.sol";
|
7
|
+
import {VersionPart} from "../type/Version.sol";
|
8
|
+
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
|
10
9
|
|
11
10
|
import {ChainNft} from "./ChainNft.sol";
|
12
11
|
import {IRegistry} from "./IRegistry.sol";
|
@@ -23,39 +22,40 @@ import {ReleaseManager} from "./ReleaseManager.sol";
|
|
23
22
|
// 4) state object by regular service (POLICY, BUNDLE, STAKE)
|
24
23
|
|
25
24
|
contract Registry is
|
26
|
-
ERC165,
|
27
25
|
IRegistry
|
28
26
|
{
|
29
27
|
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
30
28
|
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
31
29
|
string public constant EMPTY_URI = "";
|
32
30
|
|
33
|
-
mapping(NftId nftId => ObjectInfo info)
|
34
|
-
mapping(address object => NftId nftId)
|
31
|
+
mapping(NftId nftId => ObjectInfo info) private _info;
|
32
|
+
mapping(address object => NftId nftId) private _nftIdByAddress;
|
33
|
+
|
34
|
+
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
|
35
35
|
|
36
|
-
mapping(
|
36
|
+
mapping(ObjectType objectType => bool) private _coreTypes;
|
37
37
|
|
38
38
|
mapping(ObjectType objectType => mapping(
|
39
|
-
ObjectType parentType => bool))
|
39
|
+
ObjectType parentType => bool)) private _coreContractCombinations;
|
40
40
|
|
41
41
|
mapping(ObjectType objectType => mapping(
|
42
|
-
ObjectType parentType => bool))
|
42
|
+
ObjectType parentType => bool)) private _coreObjectCombinations;
|
43
43
|
|
44
|
-
NftId
|
45
|
-
ChainNft
|
44
|
+
NftId private _registryNftId;
|
45
|
+
ChainNft private _chainNft;
|
46
46
|
|
47
|
-
ReleaseManager
|
47
|
+
ReleaseManager private _releaseManager;
|
48
48
|
|
49
49
|
modifier onlyRegistryService() {
|
50
50
|
if(!_releaseManager.isActiveRegistryService(msg.sender)) {
|
51
|
-
revert
|
51
|
+
revert ErrorRegistryCallerNotRegistryService();
|
52
52
|
}
|
53
53
|
_;
|
54
54
|
}
|
55
55
|
|
56
56
|
modifier onlyReleaseManager() {
|
57
57
|
if(msg.sender != address(_releaseManager)) {
|
58
|
-
revert
|
58
|
+
revert ErrorRegistryCallerNotReleaseManager();
|
59
59
|
}
|
60
60
|
_;
|
61
61
|
}
|
@@ -65,16 +65,14 @@ contract Registry is
|
|
65
65
|
_releaseManager = ReleaseManager(msg.sender);
|
66
66
|
|
67
67
|
// deploy NFT
|
68
|
-
_chainNft = new ChainNft(address(this))
|
68
|
+
_chainNft = new ChainNft(address(this));
|
69
69
|
|
70
70
|
// initial registry setup
|
71
71
|
_registerProtocol();
|
72
72
|
_registerRegistry();
|
73
73
|
|
74
|
-
// set object parent relations
|
75
|
-
|
76
|
-
|
77
|
-
_registerInterface(type(IRegistry).interfaceId);
|
74
|
+
// set object types and object parent relations
|
75
|
+
_setupValidCoreTypesAndCombinations();
|
78
76
|
}
|
79
77
|
|
80
78
|
function registerService(
|
@@ -86,18 +84,34 @@ contract Registry is
|
|
86
84
|
onlyReleaseManager
|
87
85
|
returns(NftId nftId)
|
88
86
|
{
|
87
|
+
address service = info.objectAddress;
|
89
88
|
/* must be guaranteed by release manager
|
89
|
+
if(service == address(0)) {
|
90
|
+
revert();
|
91
|
+
}
|
92
|
+
|
93
|
+
if(version.eqz()) {
|
94
|
+
revert();
|
95
|
+
}
|
96
|
+
|
90
97
|
if(info.objectType != SERVICE()) {
|
91
98
|
revert();
|
92
99
|
}
|
93
|
-
info.
|
100
|
+
if(info.parentType != REGISTRY()) {
|
101
|
+
revert();
|
102
|
+
}
|
103
|
+
info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
|
94
104
|
*/
|
95
105
|
|
96
|
-
if(
|
97
|
-
revert
|
106
|
+
if(domain.eqz()) {
|
107
|
+
revert ErrorRegistryDomainZero(service);
|
98
108
|
}
|
99
109
|
|
100
|
-
_service[version][domain]
|
110
|
+
if(_service[version][domain] > address(0)) {
|
111
|
+
revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
|
112
|
+
}
|
113
|
+
|
114
|
+
_service[version][domain] = service;
|
101
115
|
|
102
116
|
nftId = _register(info);
|
103
117
|
|
@@ -109,16 +123,52 @@ contract Registry is
|
|
109
123
|
onlyRegistryService
|
110
124
|
returns(NftId nftId)
|
111
125
|
{
|
112
|
-
|
113
|
-
|
114
|
-
|
126
|
+
ObjectType objectType = info.objectType;
|
127
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
128
|
+
|
129
|
+
// only valid core types combinations
|
130
|
+
if(info.objectAddress == address(0))
|
131
|
+
{
|
132
|
+
if(_coreObjectCombinations[objectType][parentType] == false) {
|
133
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
134
|
+
}
|
135
|
+
}
|
136
|
+
else
|
137
|
+
{
|
138
|
+
if(_coreContractCombinations[objectType][parentType] == false) {
|
139
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
140
|
+
}
|
115
141
|
}
|
116
142
|
|
117
143
|
nftId = _register(info);
|
118
144
|
}
|
119
145
|
|
146
|
+
function registerWithCustomType(ObjectInfo memory info)
|
147
|
+
external
|
148
|
+
onlyRegistryService
|
149
|
+
returns(NftId nftId)
|
150
|
+
{
|
151
|
+
ObjectType objectType = info.objectType;
|
152
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
153
|
+
|
154
|
+
if(_coreTypes[objectType]) {
|
155
|
+
revert ErrorRegistryCoreTypeRegistration();
|
156
|
+
}
|
157
|
+
|
158
|
+
if(
|
159
|
+
parentType == PROTOCOL() ||
|
160
|
+
parentType == REGISTRY() ||
|
161
|
+
parentType == SERVICE()
|
162
|
+
) {
|
163
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
164
|
+
}
|
165
|
+
|
166
|
+
_register(info);
|
167
|
+
}
|
168
|
+
|
169
|
+
|
120
170
|
/// @dev earliest GIF major version
|
121
|
-
function
|
171
|
+
function getInitialVersion() external view returns (VersionPart) {
|
122
172
|
return _releaseManager.getInitialVersion();
|
123
173
|
}
|
124
174
|
|
@@ -129,33 +179,36 @@ contract Registry is
|
|
129
179
|
// in this case we might want to have a period where the latest version is
|
130
180
|
// in the process of being set up while the latest active version is 1 major release smaller
|
131
181
|
/// @dev latest GIF major version (might not yet be active)
|
132
|
-
function
|
182
|
+
function getNextVersion() external view returns (VersionPart) {
|
133
183
|
return _releaseManager.getNextVersion();
|
134
184
|
}
|
135
185
|
|
136
186
|
/// @dev latest active GIF release version
|
137
|
-
function
|
187
|
+
function getLatestVersion() external view returns (VersionPart) {
|
138
188
|
return _releaseManager.getLatestVersion();
|
139
189
|
}
|
140
190
|
|
141
|
-
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory)
|
142
|
-
{
|
191
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
|
143
192
|
return _releaseManager.getReleaseInfo(version);
|
144
193
|
}
|
145
194
|
|
146
|
-
function getObjectCount() external view
|
195
|
+
function getObjectCount() external view returns (uint256) {
|
147
196
|
return _chainNft.totalSupply();
|
148
197
|
}
|
149
198
|
|
199
|
+
function getReleaseManagerAddress() external view returns (address) {
|
200
|
+
return address(_releaseManager);
|
201
|
+
}
|
202
|
+
|
150
203
|
function getNftId() external view returns (NftId nftId) {
|
151
204
|
return _registryNftId;
|
152
205
|
}
|
153
206
|
|
154
|
-
function getNftId(address object) external view
|
207
|
+
function getNftId(address object) external view returns (NftId id) {
|
155
208
|
return _nftIdByAddress[object];
|
156
209
|
}
|
157
210
|
|
158
|
-
function ownerOf(NftId nftId) public view
|
211
|
+
function ownerOf(NftId nftId) public view returns (address) {
|
159
212
|
return _chainNft.ownerOf(nftId.toInt());
|
160
213
|
}
|
161
214
|
|
@@ -163,42 +216,62 @@ contract Registry is
|
|
163
216
|
return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
164
217
|
}
|
165
218
|
|
166
|
-
function getObjectInfo(NftId nftId) external view
|
219
|
+
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
167
220
|
return _info[nftId];
|
168
221
|
}
|
169
222
|
|
170
|
-
function getObjectInfo(address object) external view
|
223
|
+
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
171
224
|
return _info[_nftIdByAddress[object]];
|
172
225
|
}
|
173
226
|
|
174
|
-
function isRegistered(NftId nftId) public view
|
227
|
+
function isRegistered(NftId nftId) public view returns (bool) {
|
175
228
|
return _info[nftId].objectType.gtz();
|
176
229
|
}
|
177
230
|
|
178
|
-
function isRegistered(address object) external view
|
231
|
+
function isRegistered(address object) external view returns (bool) {
|
179
232
|
return _nftIdByAddress[object].gtz();
|
180
233
|
}
|
181
234
|
|
182
|
-
function isRegisteredService(address object) external view
|
183
|
-
return
|
235
|
+
function isRegisteredService(address object) external view returns (bool) {
|
236
|
+
return _info[_nftIdByAddress[object]].objectType == SERVICE();
|
237
|
+
}
|
238
|
+
|
239
|
+
function isRegisteredComponent(address object) external view returns (bool) {
|
240
|
+
NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
|
241
|
+
return _info[objectParentNftId].objectType == INSTANCE();
|
242
|
+
}
|
243
|
+
|
244
|
+
function isValidRelease(VersionPart version) external view returns (bool)
|
245
|
+
{
|
246
|
+
return _releaseManager.isValidRelease(version);
|
184
247
|
}
|
185
248
|
|
186
249
|
function getServiceAddress(
|
187
250
|
ObjectType serviceDomain,
|
188
251
|
VersionPart releaseVersion
|
189
|
-
) external view returns (address)
|
252
|
+
) external view returns (address service)
|
190
253
|
{
|
191
|
-
|
254
|
+
service = _service[releaseVersion][serviceDomain];
|
192
255
|
}
|
193
256
|
|
194
|
-
function
|
195
|
-
return _chainNft;
|
257
|
+
function getChainNftAddress() external view override returns (address) {
|
258
|
+
return address(_chainNft);
|
196
259
|
}
|
197
260
|
|
198
261
|
function getOwner() public view returns (address owner) {
|
199
262
|
return ownerOf(address(this));
|
200
263
|
}
|
201
264
|
|
265
|
+
// IERC165
|
266
|
+
|
267
|
+
function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
|
268
|
+
if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
|
269
|
+
return true;
|
270
|
+
}
|
271
|
+
|
272
|
+
return false;
|
273
|
+
}
|
274
|
+
|
202
275
|
// Internals
|
203
276
|
|
204
277
|
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
@@ -218,48 +291,36 @@ contract Registry is
|
|
218
291
|
// special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
|
219
292
|
// special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
|
220
293
|
if(parentAddress == address(0)) {
|
221
|
-
revert
|
294
|
+
revert ErrorRegistryParentAddressZero();
|
222
295
|
}
|
223
296
|
|
224
297
|
address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
|
298
|
+
uint256 tokenId = _chainNft.getNextTokenId();
|
299
|
+
nftId = toNftId(tokenId);
|
225
300
|
|
226
|
-
// TODO does external call
|
227
|
-
// compute next nftId, do all checks and stores, mint() at most end...
|
228
|
-
uint256 mintedTokenId = _chainNft.mint(
|
229
|
-
info.initialOwner,
|
230
|
-
interceptor,
|
231
|
-
EMPTY_URI);
|
232
|
-
nftId = toNftId(mintedTokenId);
|
233
|
-
|
234
|
-
// TODO move nftId out of info struct
|
235
|
-
// getters by nftId -> return struct without nftId
|
236
|
-
// getters by address -> return nftId AND struct
|
237
301
|
info.nftId = nftId;
|
238
302
|
_info[nftId] = info;
|
239
303
|
|
240
304
|
if(info.objectAddress > address(0))
|
241
305
|
{
|
242
|
-
// parent is registered + object-parent types are valid
|
243
|
-
if(_isValidContractCombination[objectType][parentType] == false) {
|
244
|
-
revert InvalidTypesCombination(objectType, parentType);
|
245
|
-
}
|
246
|
-
|
247
306
|
address contractAddress = info.objectAddress;
|
248
307
|
|
249
308
|
if(_nftIdByAddress[contractAddress].gtz()) {
|
250
|
-
revert
|
309
|
+
revert ErrorRegistryContractAlreadyRegistered(contractAddress);
|
251
310
|
}
|
252
311
|
|
253
312
|
_nftIdByAddress[contractAddress] = nftId;
|
254
313
|
}
|
255
|
-
else
|
256
|
-
{
|
257
|
-
if(_isValidObjectCombination[objectType][parentType] == false) {
|
258
|
-
revert InvalidTypesCombination(objectType, parentType);
|
259
|
-
}
|
260
|
-
}
|
261
314
|
|
262
315
|
emit LogRegistration(nftId, parentNftId, objectType, info.isInterceptor, info.objectAddress, info.initialOwner);
|
316
|
+
|
317
|
+
// calls nft receiver(1) and interceptor(2)
|
318
|
+
uint256 mintedTokenId = _chainNft.mint(
|
319
|
+
info.initialOwner,
|
320
|
+
interceptor,
|
321
|
+
EMPTY_URI);
|
322
|
+
assert(mintedTokenId == tokenId);
|
323
|
+
|
263
324
|
}
|
264
325
|
|
265
326
|
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
@@ -370,27 +431,37 @@ contract Registry is
|
|
370
431
|
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
371
432
|
// 3) DO NOT use REGISTRY as object type
|
372
433
|
// 2) DO NOT use PROTOCOL and "zeroObjectType"
|
373
|
-
function
|
434
|
+
function _setupValidCoreTypesAndCombinations()
|
374
435
|
private
|
375
436
|
{
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
437
|
+
_coreTypes[REGISTRY()] = true;
|
438
|
+
_coreTypes[SERVICE()] = true;
|
439
|
+
_coreTypes[TOKEN()] = true;
|
440
|
+
_coreTypes[INSTANCE()] = true;
|
441
|
+
_coreTypes[PRODUCT()] = true;
|
442
|
+
_coreTypes[POOL()] = true;
|
443
|
+
_coreTypes[DISTRIBUTION()] = true;
|
444
|
+
_coreTypes[DISTRIBUTOR()] = true;
|
445
|
+
_coreTypes[ORACLE()] = true;
|
446
|
+
_coreTypes[POLICY()] = true;
|
447
|
+
_coreTypes[BUNDLE()] = true;
|
448
|
+
_coreTypes[STAKE()] = true;
|
449
|
+
|
450
|
+
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
451
|
+
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
452
|
+
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
453
|
+
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
454
|
+
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
382
455
|
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
// product as parent, ONLY approved
|
390
|
-
_isValidObjectCombination[POLICY()][PRODUCT()] = true;
|
456
|
+
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
457
|
+
if(registryId == _chainNft.GLOBAL_REGISTRY_ID())
|
458
|
+
{// we are global registry
|
459
|
+
_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
|
460
|
+
}
|
391
461
|
|
392
|
-
|
393
|
-
|
394
|
-
|
462
|
+
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
463
|
+
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
464
|
+
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|
465
|
+
_coreObjectCombinations[STAKE()][POOL()] = true;
|
395
466
|
}
|
396
|
-
}
|
467
|
+
}
|
@@ -1,207 +1,129 @@
|
|
1
1
|
// SPDX-License-Identifier: UNLICENSED
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
5
5
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
6
|
+
import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
|
7
|
+
import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
8
|
+
|
9
|
+
import {RoleId, RoleIdLib, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE} from "../type/RoleId.sol";
|
6
10
|
|
7
|
-
import {
|
8
|
-
REGISTRY_SERVICE_MANAGER_ROLE,
|
9
|
-
REGISTRY_SERVICE_ADMIN_ROLE,
|
10
|
-
RELEASE_MANAGER_ROLE} from "../types/RoleId.sol";
|
11
|
+
import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
|
11
12
|
|
12
13
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
13
14
|
import {ReleaseManager} from "./ReleaseManager.sol";
|
14
15
|
|
15
16
|
/*
|
16
|
-
|
17
|
-
1) REGISTRAR roles
|
18
|
-
- each one is unique
|
19
|
-
- always have 1 member
|
20
|
-
- one role is set for each function of each version of registry service
|
21
|
-
2) REGISTRY_SERVICE_MANAGER_ROLE aka GIF_MANAGER_ROLE
|
17
|
+
1) GIF_MANAGER_ROLE
|
22
18
|
- can have arbitrary number of members
|
23
19
|
- responsible for services registrations
|
24
20
|
- responsible for token registration and activation
|
25
|
-
|
26
|
-
- admin of
|
21
|
+
2) GIF_ADMIN_ROLE
|
22
|
+
- admin of GIF_MANAGER_ROLE
|
27
23
|
- MUST have 1 member at any time
|
28
24
|
- granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
|
29
|
-
- responsible for
|
30
|
-
- responsible for creation and activation of each release
|
25
|
+
- responsible for creation and activation of releases
|
31
26
|
|
32
27
|
*/
|
33
28
|
|
34
|
-
contract RegistryAccessManager is AccessManaged
|
29
|
+
contract RegistryAccessManager is AccessManaged, Initializable
|
35
30
|
{
|
36
|
-
error
|
37
|
-
error
|
31
|
+
error ErrorRegistryAccessManagerReleaseManagerAuthorityMismatch();
|
32
|
+
error ErrorRegistryAccessManagerTokenRegistryZero();
|
38
33
|
|
39
34
|
uint64 public constant UNIQUE_ROLE_ID_MIN = 1000000;
|
40
35
|
|
41
|
-
AccessManager private immutable _accessManager;
|
42
36
|
address private _releaseManager;
|
43
37
|
address private _tokenRegistry;
|
44
38
|
|
45
39
|
uint64 private _idNext; // role id
|
46
|
-
bool private _isInitialized;
|
47
|
-
|
48
|
-
modifier onlyOnce() {
|
49
|
-
if(_isInitialized) {
|
50
|
-
revert AlreadyInitialized();
|
51
|
-
}
|
52
|
-
_;
|
53
|
-
_isInitialized = true;
|
54
|
-
}
|
55
40
|
|
56
|
-
modifier onlyInitialized() {
|
57
|
-
if(!_isInitialized) {
|
58
|
-
revert NotInitialized();
|
59
|
-
}
|
60
|
-
_;
|
61
|
-
}
|
62
41
|
|
63
|
-
|
42
|
+
// IMPORTNAT: this.authority() must be valid before initialize() function....
|
43
|
+
// -> have constructor and initializer function
|
44
|
+
constructor()
|
64
45
|
AccessManaged(msg.sender)
|
65
46
|
{
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
_idNext = UNIQUE_ROLE_ID_MIN;
|
70
|
-
|
71
|
-
_configureAdminRoleInitial();
|
72
|
-
|
73
|
-
address admin = msg.sender;
|
74
|
-
_grantRole(REGISTRY_SERVICE_ADMIN_ROLE(), admin, 0);
|
75
|
-
_grantRole(REGISTRY_SERVICE_MANAGER_ROLE(), manager, 0);
|
47
|
+
AccessManagerUpgradeableInitializeable accessManager = new AccessManagerUpgradeableInitializeable();
|
48
|
+
accessManager.initialize(address(this));
|
49
|
+
setAuthority(address(accessManager));
|
76
50
|
}
|
77
51
|
|
78
|
-
function initialize(address releaseManager, address tokenRegistry)
|
79
|
-
external
|
80
|
-
|
81
|
-
onlyOnce
|
52
|
+
function initialize(address admin, address manager, address releaseManager, address tokenRegistry)
|
53
|
+
external
|
54
|
+
initializer
|
82
55
|
{
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
56
|
+
// validate input
|
57
|
+
if(IAccessManaged(releaseManager).authority() != authority()) {
|
58
|
+
revert ErrorRegistryAccessManagerReleaseManagerAuthorityMismatch();
|
59
|
+
}
|
60
|
+
if(tokenRegistry == address(0)) {
|
61
|
+
revert ErrorRegistryAccessManagerTokenRegistryZero();
|
62
|
+
}
|
88
63
|
|
89
64
|
_releaseManager = releaseManager;
|
90
65
|
_tokenRegistry = tokenRegistry;
|
66
|
+
_idNext = UNIQUE_ROLE_ID_MIN;
|
91
67
|
|
92
|
-
|
93
|
-
|
94
|
-
_configureReleaseManagerRole();
|
68
|
+
_setAdminRole();
|
69
|
+
_setManagerRole();
|
95
70
|
|
96
|
-
_grantRole(
|
97
|
-
|
71
|
+
_grantRole(GIF_ADMIN_ROLE(), admin, 0);
|
72
|
+
_grantRole(GIF_MANAGER_ROLE(), manager, 0);
|
98
73
|
|
99
|
-
|
100
|
-
function setAndGrantUniqueRole(
|
101
|
-
address account,
|
102
|
-
address target,
|
103
|
-
bytes4[] memory selector
|
104
|
-
)
|
105
|
-
external
|
106
|
-
restricted // RELEASE_MANAGER_ROLE
|
107
|
-
onlyInitialized
|
108
|
-
returns(RoleId)
|
109
|
-
{
|
110
|
-
// TODO questionable check...
|
111
|
-
// target is not part of `runtime`
|
112
|
-
//if(
|
113
|
-
// target == address(this) ||
|
114
|
-
// target == address(_accessManager) ||
|
115
|
-
// target == _releaseManager ||
|
116
|
-
// target == _tokenRegistry)
|
117
|
-
//{ return TargetInvalid(); }
|
118
|
-
|
119
|
-
RoleId roleId = _getNextRoleId();
|
120
|
-
|
121
|
-
_setTargetFunctionRole(target, selector, roleId);
|
122
|
-
_grantRole(roleId, account, 0);
|
74
|
+
_setRoleAdmin(GIF_MANAGER_ROLE(), GIF_ADMIN_ROLE());
|
123
75
|
}
|
124
76
|
|
125
77
|
/*function transferAdmin(address to)
|
126
78
|
external
|
127
|
-
restricted // only with
|
79
|
+
restricted // only with GIF_ADMIN_ROLE or nft owner
|
128
80
|
{
|
129
|
-
_accessManager.revoke(
|
130
|
-
_accesssManager.grant(
|
81
|
+
_accessManager.revoke(GIF_ADMIN_ROLE, );
|
82
|
+
_accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
|
131
83
|
}*/
|
132
84
|
|
133
85
|
//--- view functions ----------------------------------------------------//
|
134
86
|
|
135
|
-
function getAccessManager()
|
136
|
-
external
|
137
|
-
view
|
138
|
-
returns (AccessManager)
|
139
|
-
{
|
140
|
-
return _accessManager;
|
141
|
-
}
|
142
|
-
|
143
87
|
//--- private functions -------------------------------------------------//
|
144
88
|
|
145
|
-
function
|
89
|
+
function _setAdminRole() private
|
146
90
|
{
|
147
91
|
bytes4[] memory functionSelector = new bytes4[](1);
|
148
92
|
|
149
|
-
functionSelector[0] = RegistryAccessManager.initialize.selector;
|
150
|
-
_setTargetFunctionRole(address(this), functionSelector, REGISTRY_SERVICE_ADMIN_ROLE());
|
151
|
-
}
|
152
|
-
|
153
|
-
function _configureAdminRole() private
|
154
|
-
{
|
155
|
-
bytes4[] memory functionSelector = new bytes4[](1);
|
156
|
-
|
157
|
-
// for RegistryServiceProxyManager
|
158
|
-
// TODO upgrading with releaseManager.upgrade()->proxy.upgrade()???
|
159
|
-
//functionSelector[0] = RegistryServiceManager.upgrade.selector;
|
160
|
-
//_setTargetFunctionRole(address(this), functionSelector, REGISTRY_SERVICE_ADMIN_ROLE());
|
161
|
-
|
162
|
-
// for TokenRegistry
|
163
|
-
|
164
93
|
// for ReleaseManager
|
165
94
|
functionSelector[0] = ReleaseManager.createNextRelease.selector;
|
166
|
-
_setTargetFunctionRole(_releaseManager, functionSelector,
|
167
|
-
|
168
|
-
|
95
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
|
96
|
+
|
97
|
+
functionSelector[0] = ReleaseManager.activateNextRelease.selector;
|
98
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
|
169
99
|
}
|
170
100
|
|
171
|
-
function
|
101
|
+
function _setManagerRole() private
|
172
102
|
{
|
173
103
|
bytes4[] memory functionSelector = new bytes4[](1);
|
174
104
|
|
175
105
|
// for TokenRegistry
|
176
106
|
functionSelector[0] = TokenRegistry.setActive.selector;
|
177
|
-
_setTargetFunctionRole(address(_tokenRegistry), functionSelector,
|
107
|
+
_setTargetFunctionRole(address(_tokenRegistry), functionSelector, GIF_MANAGER_ROLE());
|
178
108
|
|
179
109
|
// for ReleaseManager
|
180
110
|
functionSelector[0] = ReleaseManager.registerService.selector;
|
181
|
-
_setTargetFunctionRole(_releaseManager, functionSelector,
|
182
|
-
|
183
|
-
// set admin
|
184
|
-
_setRoleAdmin(REGISTRY_SERVICE_MANAGER_ROLE(), REGISTRY_SERVICE_ADMIN_ROLE());
|
185
|
-
}
|
186
|
-
|
187
|
-
function _configureReleaseManagerRole() private
|
188
|
-
{
|
189
|
-
bytes4[] memory functionSelector = new bytes4[](1);
|
111
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
|
190
112
|
|
191
|
-
functionSelector[0] =
|
192
|
-
_setTargetFunctionRole(
|
113
|
+
functionSelector[0] = ReleaseManager.prepareNextRelease.selector;
|
114
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
|
193
115
|
}
|
194
116
|
|
195
117
|
function _setTargetFunctionRole(address target, bytes4[] memory selectors, RoleId roleId) private {
|
196
|
-
|
118
|
+
AccessManager(authority()).setTargetFunctionRole(target, selectors, roleId.toInt());
|
197
119
|
}
|
198
120
|
|
199
121
|
function _setRoleAdmin(RoleId roleId, RoleId adminRoleId) private {
|
200
|
-
|
122
|
+
AccessManager(authority()).setRoleAdmin(roleId.toInt(), adminRoleId.toInt());
|
201
123
|
}
|
202
124
|
|
203
125
|
function _grantRole(RoleId roleId, address account, uint32 executionDelay) private {
|
204
|
-
|
126
|
+
AccessManager(authority()).grantRole(roleId.toInt(), account, executionDelay);
|
205
127
|
}
|
206
128
|
|
207
129
|
function _getNextRoleId() private returns(RoleId roleId) {
|