@etherisc/gif-next 0.0.2-ce87da3-250 → 0.0.2-cf22d7b-845
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -84
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +322 -252
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1349 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +249 -174
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +266 -91
- 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 +315 -2127
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +219 -78
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +456 -2872
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +204 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +601 -422
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +287 -280
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +119 -78
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3458 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{ISetup.sol/ISetup.json → IComponents.sol/IComponents.json} +2 -2
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +278 -221
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +480 -213
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1065 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +527 -284
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +124 -98
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +266 -142
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +536 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +408 -219
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +75 -72
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/Product.sol/Product.json +433 -282
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -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 +188 -19
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +305 -85
- 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 +425 -34
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +344 -106
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +93 -54
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +834 -89
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/Component.sol/Component.json +209 -166
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +96 -122
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +222 -104
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +91 -27
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +70 -35
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -23
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +99 -30
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{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 +198 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
- package/contracts/{components → distribution}/Distribution.sol +49 -75
- package/contracts/distribution/DistributionService.sol +298 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/{components → distribution}/IDistributionComponent.sol +11 -37
- package/contracts/{instance/service → distribution}/IDistributionService.sol +25 -25
- package/contracts/instance/BundleManager.sol +15 -14
- package/contracts/instance/IInstance.sol +53 -66
- package/contracts/instance/IInstanceService.sol +40 -18
- package/contracts/instance/Instance.sol +139 -195
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
- package/contracts/instance/InstanceReader.sol +135 -63
- package/contracts/instance/InstanceService.sol +226 -340
- package/contracts/instance/InstanceServiceManager.sol +11 -21
- package/contracts/instance/InstanceStore.sol +260 -0
- package/contracts/instance/base/BalanceStore.sol +118 -0
- package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -14
- package/contracts/instance/module/IAccess.sol +19 -20
- package/contracts/instance/module/IBundle.sol +8 -8
- package/contracts/instance/module/{ISetup.sol → IComponents.sol} +24 -20
- package/contracts/instance/module/IDistribution.sol +7 -5
- package/contracts/instance/module/IPolicy.sol +53 -16
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
- package/contracts/pool/BundleService.sol +296 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +106 -0
- package/contracts/pool/IPoolComponent.sol +112 -0
- package/contracts/pool/IPoolService.sol +150 -0
- package/contracts/pool/Pool.sol +299 -0
- package/contracts/pool/PoolService.sol +453 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +254 -0
- package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
- package/contracts/product/ClaimService.sol +442 -0
- package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
- package/contracts/{instance/service → product}/IApplicationService.sol +16 -36
- package/contracts/product/IClaimService.sol +93 -0
- package/contracts/{instance/service → product}/IPolicyService.sol +37 -48
- package/contracts/product/IPricingService.sol +39 -0
- package/contracts/product/IProductComponent.sol +42 -0
- package/contracts/product/IProductService.sol +33 -0
- package/contracts/product/PolicyService.sol +475 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +301 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/product/Product.sol +377 -0
- package/contracts/product/ProductService.sol +124 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/ChainNft.sol +16 -1
- package/contracts/registry/IRegistry.sol +46 -21
- package/contracts/registry/IRegistryService.sol +39 -37
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +208 -96
- package/contracts/registry/RegistryAdmin.sol +237 -0
- package/contracts/registry/RegistryService.sol +69 -86
- package/contracts/registry/RegistryServiceManager.sol +21 -25
- package/contracts/registry/ReleaseManager.sol +458 -181
- package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
- package/contracts/registry/TokenRegistry.sol +261 -62
- package/contracts/shared/AccessManagerCustom.sol +736 -0
- package/contracts/shared/AccessManagerExtended.sol +470 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/shared/Component.sol +278 -0
- package/contracts/shared/ComponentService.sol +596 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +111 -0
- package/contracts/shared/ERC165.sol +1 -1
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +70 -0
- package/contracts/shared/IComponentService.sol +91 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
- package/contracts/shared/INftOwnable.sol +2 -2
- package/contracts/shared/IPolicyHolder.sol +29 -10
- package/contracts/shared/IRegistryLinked.sol +0 -1
- package/contracts/shared/IService.sol +7 -7
- package/contracts/shared/IVersionable.sol +1 -1
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +144 -0
- package/contracts/shared/KeyValueStore.sol +127 -0
- package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +3 -16
- package/contracts/shared/PolicyHolder.sol +40 -19
- package/contracts/shared/ProxyManager.sol +34 -4
- package/contracts/shared/Registerable.sol +15 -14
- package/contracts/shared/RegistryLinked.sol +0 -5
- package/contracts/shared/Service.sol +29 -10
- package/contracts/shared/TokenHandler.sol +37 -6
- package/contracts/shared/Versionable.sol +1 -1
- package/contracts/staking/IStaking.sol +168 -0
- package/contracts/staking/IStakingService.sol +149 -0
- package/contracts/staking/StakeManagerLib.sol +179 -0
- package/contracts/staking/Staking.sol +551 -0
- package/contracts/staking/StakingManager.sol +54 -0
- package/contracts/staking/StakingReader.sol +187 -0
- package/contracts/staking/StakingService.sol +406 -0
- package/contracts/staking/StakingServiceManager.sol +45 -0
- package/contracts/staking/StakingStore.sol +572 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/{types → type}/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +128 -0
- package/contracts/{types → type}/Blocknumber.sol +21 -3
- package/contracts/{types → type}/ClaimId.sol +25 -2
- package/contracts/{types → type}/Fee.sol +33 -23
- package/contracts/{types → type}/NftId.sol +21 -15
- package/contracts/{types → type}/NftIdSet.sol +2 -2
- package/contracts/{types → type}/ObjectType.sol +20 -7
- package/contracts/{types → type}/PayoutId.sol +33 -5
- package/contracts/{types → type}/Referral.sol +5 -1
- package/contracts/{types → type}/RiskId.sol +1 -1
- package/contracts/{types → type}/RoleId.sol +66 -13
- package/contracts/type/Seconds.sol +81 -0
- package/contracts/{types → type}/StateId.sol +24 -6
- package/contracts/{types → type}/Timestamp.sol +18 -13
- package/contracts/{types → type}/UFixed.sol +1 -0
- package/contracts/{types → type}/Version.sol +2 -1
- 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/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -869
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -657
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1096
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1254
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -753
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -409
- 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/IPoolService.sol/IPoolService.json +0 -347
- 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 -1120
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -717
- 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 -649
- 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 -649
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
- 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 -521
- 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 -104
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
- 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/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
- 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 -241
- package/contracts/components/IComponent.sol +0 -54
- package/contracts/components/IPoolComponent.sol +0 -87
- package/contracts/components/IProductComponent.sol +0 -39
- package/contracts/components/Pool.sol +0 -254
- package/contracts/components/Product.sol +0 -285
- package/contracts/instance/InstanceAccessManager.sol +0 -297
- package/contracts/instance/base/ComponentService.sol +0 -134
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/ApplicationService.sol +0 -268
- package/contracts/instance/service/BundleService.sol +0 -298
- package/contracts/instance/service/BundleServiceManager.sol +0 -51
- package/contracts/instance/service/ClaimService.sol +0 -151
- package/contracts/instance/service/DistributionService.sol +0 -366
- package/contracts/instance/service/DistributionServiceManager.sol +0 -51
- package/contracts/instance/service/IBundleService.sol +0 -54
- package/contracts/instance/service/IClaimService.sol +0 -61
- package/contracts/instance/service/IPoolService.sol +0 -20
- package/contracts/instance/service/IProductService.sol +0 -40
- package/contracts/instance/service/PolicyService.sol +0 -476
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -109
- package/contracts/instance/service/PoolServiceManager.sol +0 -51
- package/contracts/instance/service/ProductService.sol +0 -233
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -216
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -25
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/test/Usdc.sol +0 -26
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NumberId.sol +0 -52
- /package/contracts/{types → type}/DistributorType.sol +0 -0
- /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,220 +1,370 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
|
5
|
+
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
6
|
+
import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
|
7
|
+
import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
4
8
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
9
|
+
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
5
10
|
|
6
|
-
import {NftId} from "../
|
7
|
-
import {RoleId} from "../
|
8
|
-
import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../
|
9
|
-
import {VersionPart, VersionPartLib} from "../
|
10
|
-
import {Timestamp, TimestampLib} from "../
|
11
|
+
import {NftId} from "../type/NftId.sol";
|
12
|
+
import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
13
|
+
import {ObjectType, ObjectTypeLib, zeroObjectType, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
14
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
15
|
+
import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
|
16
|
+
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
17
|
+
import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE} from "../type/StateId.sol";
|
18
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
11
19
|
|
12
20
|
import {IService} from "../shared/IService.sol";
|
21
|
+
import {AccessManagerExtendedWithDisableInitializeable} from "../shared/AccessManagerExtendedWithDisableInitializeable.sol";
|
22
|
+
import {ILifecycle} from "../shared/ILifecycle.sol";
|
23
|
+
import {INftOwnable} from "../shared/INftOwnable.sol";
|
24
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
13
25
|
|
14
26
|
import {IRegistry} from "./IRegistry.sol";
|
15
|
-
import {
|
27
|
+
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
16
28
|
import {IRegistryService} from "./IRegistryService.sol";
|
17
|
-
import {
|
29
|
+
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
30
|
+
import {Registry} from "./Registry.sol";
|
31
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
32
|
+
import {ServiceAuthorizationsLib} from "./ServiceAuthorizationsLib.sol";
|
18
33
|
|
19
34
|
|
20
|
-
contract ReleaseManager is
|
35
|
+
contract ReleaseManager is
|
36
|
+
AccessManaged,
|
37
|
+
ILifecycle,
|
38
|
+
IRegistryLinked
|
21
39
|
{
|
22
40
|
using ObjectTypeLib for ObjectType;
|
23
41
|
|
24
|
-
|
42
|
+
uint256 public constant INITIAL_GIF_VERSION = 3;
|
43
|
+
|
44
|
+
event LogReleaseCreation(VersionPart version, bytes32 salt, AccessManagerExtendedWithDisableInitializeable accessManager);
|
25
45
|
event LogReleaseActivation(VersionPart version);
|
26
46
|
|
47
|
+
// constructor
|
48
|
+
error ErrorReleaseManagerNotRegistry(Registry registry);
|
49
|
+
|
27
50
|
// createNextRelease
|
28
|
-
error
|
29
|
-
|
51
|
+
error ErrorReleaseManagerReleaseCreationDisallowed(StateId currentStateId);
|
52
|
+
|
53
|
+
// prepareRelease
|
54
|
+
error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
|
55
|
+
error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version);
|
56
|
+
|
57
|
+
// register staking
|
58
|
+
//error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
|
30
59
|
|
31
60
|
// registerService
|
32
|
-
error
|
61
|
+
error ErrorReleaseManagerNoServiceRegistrationExpected();
|
62
|
+
error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
|
63
|
+
error ErrorReleaseManagerNotService(IService service);
|
64
|
+
error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
|
33
65
|
|
34
66
|
// activateNextRelease
|
35
|
-
error
|
36
|
-
error
|
67
|
+
error ErrorReleaseManagerReleaseActivationDisallowed(StateId currentStateId);
|
68
|
+
error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
|
69
|
+
error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
70
|
+
error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
|
37
71
|
|
38
|
-
//
|
39
|
-
error
|
40
|
-
error
|
41
|
-
error SelfRegistration();
|
42
|
-
error RegisterableOwnerIsRegistered();
|
72
|
+
// disableRelease
|
73
|
+
error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
|
74
|
+
error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
|
43
75
|
|
44
76
|
// _verifyService
|
45
|
-
error
|
46
|
-
error
|
47
|
-
|
48
|
-
//
|
49
|
-
error
|
50
|
-
error
|
51
|
-
error
|
52
|
-
error
|
53
|
-
|
77
|
+
error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
78
|
+
error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
79
|
+
|
80
|
+
// _verifyServiceInfo
|
81
|
+
error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
|
82
|
+
error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
|
83
|
+
error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
|
84
|
+
error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
|
85
|
+
error ErrorReleaseManagerServiceSelfRegistration(IService service);
|
86
|
+
error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
|
87
|
+
|
88
|
+
// _verifyReleaseAuthorizations
|
89
|
+
error ErrorReleaseManagerReleaseEmpty();
|
90
|
+
error ErrorReleaseManagerReleaseServiceRoleInvalid(uint serviceIdx, address service, RoleId role);
|
91
|
+
|
92
|
+
Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
|
93
|
+
|
94
|
+
RegistryAdmin public immutable _admin;
|
95
|
+
address public immutable _releaseAccessManagerCodeAddress;
|
96
|
+
Registry public immutable _registry;
|
97
|
+
IRegisterable private _staking;
|
98
|
+
address private _stakingOwner;
|
99
|
+
|
100
|
+
mapping(VersionPart version => AccessManagerExtendedWithDisableInitializeable accessManager) internal _releaseAccessManager;
|
101
|
+
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
102
|
+
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
103
|
+
|
104
|
+
VersionPart immutable internal _initial;// first active version
|
105
|
+
VersionPart internal _latest; // latest active version
|
106
|
+
VersionPart internal _next; // version to create and activate
|
107
|
+
StateId internal _state; // current state of release manager
|
108
|
+
|
109
|
+
uint256 internal _awaitingRegistration; // "services left to register" counter
|
110
|
+
|
111
|
+
// deployer of this contract must be gif admin
|
112
|
+
constructor(Registry registry)
|
113
|
+
AccessManaged(msg.sender)
|
114
|
+
{
|
115
|
+
// TODO move this part to RegistryLinked constructor
|
116
|
+
if(!_isRegistry(address(registry))) {
|
117
|
+
revert ErrorReleaseManagerNotRegistry(registry);
|
118
|
+
}
|
54
119
|
|
55
|
-
|
56
|
-
|
120
|
+
_registry = registry;
|
121
|
+
setAuthority(_registry.getAuthority());
|
122
|
+
_admin = RegistryAdmin(_registry.getRegistryAdminAddress());
|
57
123
|
|
58
|
-
|
59
|
-
|
60
|
-
|
124
|
+
_initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
|
125
|
+
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
126
|
+
_state = getInitialState(RELEASE());
|
127
|
+
|
128
|
+
AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager = new AccessManagerExtendedWithDisableInitializeable();
|
129
|
+
masterReleaseAccessManager.initialize(_registry.NFT_LOCK_ADDRESS(), VersionLib.toVersionPart(0));
|
130
|
+
//masterReleaseAccessManager.disable();
|
131
|
+
_releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
|
132
|
+
}
|
61
133
|
|
62
|
-
|
134
|
+
/// @dev skips previous release if was not activated
|
135
|
+
/// sets release manager into state SCHEDULED
|
136
|
+
function createNextRelease()
|
137
|
+
external
|
138
|
+
restricted() // GIF_ADMIN_ROLE
|
139
|
+
returns(VersionPart)
|
140
|
+
{
|
141
|
+
if (!isValidTransition(RELEASE(), _state, SCHEDULED())) {
|
142
|
+
revert ErrorReleaseManagerReleaseCreationDisallowed(_state);
|
143
|
+
}
|
63
144
|
|
64
|
-
|
145
|
+
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
146
|
+
_awaitingRegistration = 0;
|
147
|
+
_state = SCHEDULED();
|
65
148
|
|
66
|
-
|
149
|
+
return _next;
|
150
|
+
}
|
67
151
|
|
68
|
-
|
152
|
+
// TODO order of events
|
153
|
+
function prepareNextRelease(
|
154
|
+
address[] memory addresses,
|
155
|
+
string[] memory names,
|
156
|
+
RoleId[][] memory serviceRoles,
|
157
|
+
string[][] memory serviceRoleNames,
|
158
|
+
RoleId[][] memory functionRoles,
|
159
|
+
string[][] memory functionRoleNames,
|
160
|
+
bytes4[][][] memory selectors,
|
161
|
+
bytes32 salt
|
162
|
+
)
|
163
|
+
external
|
164
|
+
restricted() // GIF_MANAGER_ROLE
|
165
|
+
returns(
|
166
|
+
address releaseAccessManagerAddress,
|
167
|
+
VersionPart version,
|
168
|
+
bytes32 releaseSalt
|
169
|
+
)
|
170
|
+
{
|
171
|
+
version = getNextVersion();
|
69
172
|
|
70
|
-
|
173
|
+
// ensures unique salt
|
174
|
+
releaseSalt = keccak256(
|
175
|
+
bytes.concat(
|
176
|
+
bytes32(version.toInt()),
|
177
|
+
salt));
|
71
178
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
AccessManaged(accessManager.authority())
|
76
|
-
{
|
77
|
-
require(initialVersion.toInt() > 0, "ReleaseManager: initial version is 0");
|
179
|
+
releaseAccessManagerAddress = Clones.cloneDeterministic(_releaseAccessManagerCodeAddress, releaseSalt);
|
180
|
+
AccessManagerExtendedWithDisableInitializeable releaseAccessManager = AccessManagerExtendedWithDisableInitializeable(releaseAccessManagerAddress);
|
181
|
+
releaseAccessManager.initialize(address(this), version);
|
78
182
|
|
79
|
-
|
183
|
+
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
184
|
+
revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
|
185
|
+
}
|
80
186
|
|
81
|
-
|
82
|
-
_next = initialVersion;
|
187
|
+
_verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
|
83
188
|
|
84
|
-
|
189
|
+
if(_awaitingRegistration > 0) {
|
190
|
+
revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
|
191
|
+
}
|
192
|
+
// TODO instead of copying just set ServiceAuthorizationsLib for release and array of domains???
|
193
|
+
_releaseInfo[version].version = version;
|
194
|
+
_releaseInfo[version].salt = releaseSalt;
|
195
|
+
_releaseInfo[version].addresses = addresses;
|
196
|
+
_releaseInfo[version].names = names;
|
197
|
+
_releaseInfo[version].serviceRoles = serviceRoles;
|
198
|
+
_releaseInfo[version].serviceRoleNames = serviceRoleNames;
|
199
|
+
_releaseInfo[version].functionRoles = functionRoles;
|
200
|
+
_releaseInfo[version].functionRoleNames = functionRoleNames;
|
201
|
+
_releaseInfo[version].selectors = selectors;
|
202
|
+
_awaitingRegistration = addresses.length;
|
203
|
+
_state = DEPLOYING();
|
204
|
+
_releaseAccessManager[version] = releaseAccessManager;
|
205
|
+
|
206
|
+
emit LogReleaseCreation(version, releaseSalt, releaseAccessManager);
|
85
207
|
}
|
86
208
|
|
87
|
-
|
88
|
-
function
|
209
|
+
|
210
|
+
function registerService(IService service)
|
89
211
|
external
|
90
|
-
restricted //
|
212
|
+
restricted // GIF_MANAGER_ROLE
|
213
|
+
returns(NftId nftId)
|
91
214
|
{
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
215
|
+
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
216
|
+
revert ErrorReleaseManagerServiceRegistrationDisallowed(_state);
|
217
|
+
}
|
218
|
+
|
219
|
+
(
|
220
|
+
IRegistry.ObjectInfo memory info,
|
221
|
+
ObjectType domain,
|
222
|
+
VersionPart version
|
223
|
+
) = _verifyService(service);
|
224
|
+
|
225
|
+
// redundant with state var
|
226
|
+
if (_awaitingRegistration == 0) {
|
227
|
+
revert ErrorReleaseManagerNoServiceRegistrationExpected();
|
228
|
+
}
|
229
|
+
|
230
|
+
uint serviceIdx = _awaitingRegistration - 1;
|
231
|
+
address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
|
232
|
+
// TODO temp, while typescript addresses computation is not implemented
|
233
|
+
/*if(address(service) != serviceAddress) {
|
234
|
+
revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
|
235
|
+
}*/
|
236
|
+
|
237
|
+
_setServiceAuthorizations(
|
238
|
+
_releaseAccessManager[version],
|
239
|
+
// TODO temp, while typescript addresses computation is not implemented
|
240
|
+
address(service),//serviceAddress,
|
241
|
+
_releaseInfo[version].names[serviceIdx],
|
242
|
+
_releaseInfo[version].serviceRoles[serviceIdx],
|
243
|
+
_releaseInfo[version].serviceRoleNames[serviceIdx],
|
244
|
+
_releaseInfo[version].functionRoles[serviceIdx],
|
245
|
+
_releaseInfo[version].functionRoleNames[serviceIdx],
|
246
|
+
_releaseInfo[version].selectors[serviceIdx]);
|
247
|
+
|
248
|
+
// TODO decide for one of the approaches
|
249
|
+
// // service to service authorization
|
250
|
+
// ServiceAuthorizationsLib.ServiceAuthorization memory authz = ServiceAuthorizationsLib.getAuthorizations(domain);
|
251
|
+
// for(uint8 idx = 0; idx < authz.authorizedRole.length; idx++) {
|
252
|
+
// _accessManager.setTargetFunctionRole(
|
253
|
+
// address(service),
|
254
|
+
// authz.authorizedSelectors[idx],
|
255
|
+
// authz.authorizedRole[idx]);
|
256
|
+
// }
|
257
|
+
|
258
|
+
_awaitingRegistration = serviceIdx;
|
259
|
+
// TODO end state depends on (_awaitingRegistration == 0)
|
260
|
+
_state = DEPLOYING();
|
261
|
+
|
262
|
+
// checked in registry
|
263
|
+
_releaseInfo[version].domains.push(domain);
|
264
|
+
|
265
|
+
nftId = _registry.registerService(info, version, domain);
|
96
266
|
|
97
|
-
|
267
|
+
service.linkToRegisteredNftId();
|
98
268
|
}
|
99
269
|
|
270
|
+
|
100
271
|
function activateNextRelease()
|
101
272
|
external
|
102
273
|
restricted // GIF_ADMIN_ROLE
|
103
274
|
{
|
275
|
+
if (!isValidTransition(RELEASE(), _state, ACTIVE())) {
|
276
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(_state);
|
277
|
+
}
|
278
|
+
|
104
279
|
VersionPart version = _next;
|
105
280
|
address service = _registry.getServiceAddress(REGISTRY(), version);
|
106
281
|
|
107
|
-
// release
|
282
|
+
// release exists, registry service is a MUST
|
283
|
+
//if(_releaseAccessManager[version] == address(0)) {
|
108
284
|
if(service == address(0)) {
|
109
|
-
revert
|
285
|
+
revert ErrorReleaseManagerReleaseNotCreated(version);
|
110
286
|
}
|
111
287
|
|
112
288
|
// release fully deployed
|
113
289
|
if(_awaitingRegistration > 0) {
|
114
|
-
revert
|
290
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
115
291
|
}
|
116
292
|
|
117
|
-
//
|
293
|
+
// release is not activated
|
294
|
+
if(_releaseInfo[version].activatedAt.gtz()) {
|
295
|
+
revert ErrorReleaseManagerReleaseAlreadyActivated(version);
|
296
|
+
}
|
118
297
|
|
119
298
|
_latest = version;
|
299
|
+
_state = ACTIVE();
|
120
300
|
|
121
|
-
|
122
|
-
|
301
|
+
_releaseVersionByAddress[service] = version;
|
302
|
+
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
123
303
|
|
124
304
|
emit LogReleaseActivation(version);
|
125
305
|
}
|
126
306
|
|
127
|
-
//
|
128
|
-
|
129
|
-
// callable once per release after release creation, can not register regular services while registry service is not registered
|
130
|
-
function registerRegistryService(IRegistryService service)
|
307
|
+
// release becomes disabled after delay expiration (can be reenabled before that)
|
308
|
+
function disableRelease(VersionPart version, Seconds disableDelay)
|
131
309
|
external
|
132
|
-
restricted //
|
133
|
-
returns(NftId nftId)
|
310
|
+
restricted // GIF_ADMIN_ROLE
|
134
311
|
{
|
135
|
-
|
136
|
-
|
312
|
+
// release was activated
|
313
|
+
if(_releaseInfo[version].activatedAt.eqz()) {
|
314
|
+
revert ErrorReleaseManagerReleaseNotActivated(version);
|
137
315
|
}
|
138
316
|
|
139
|
-
//
|
140
|
-
|
141
|
-
|
142
|
-
revert UnexpectedServiceAuthority(
|
143
|
-
authority(),
|
144
|
-
serviceAuthority);
|
317
|
+
// release not disabled already
|
318
|
+
if(_releaseInfo[version].disabledAt.gtz()) {
|
319
|
+
revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
|
145
320
|
}
|
146
321
|
|
147
|
-
|
322
|
+
disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
|
148
323
|
|
149
|
-
|
150
|
-
ObjectType domain = REGISTRY();
|
151
|
-
_verifyService(service, version, domain);
|
152
|
-
_createRelease(service.getFunctionConfigs());
|
153
|
-
|
154
|
-
nftId = _registry.registerService(info, version, domain);
|
324
|
+
_releaseAccessManager[version].disable(disableDelay);
|
155
325
|
|
156
|
-
|
157
|
-
service.linkToRegisteredNftId();
|
326
|
+
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
|
158
327
|
}
|
159
|
-
|
160
|
-
|
161
|
-
// TODO removing service from release? -> set _active to false forever, but keep all other records?
|
162
|
-
function registerService(IService service)
|
328
|
+
|
329
|
+
function enableRelease(VersionPart version)
|
163
330
|
external
|
164
|
-
restricted //
|
165
|
-
returns(NftId nftId)
|
331
|
+
restricted // GIF_ADMIN_ROLE
|
166
332
|
{
|
167
|
-
|
168
|
-
|
169
|
-
|
333
|
+
// release was disabled
|
334
|
+
//if(_releaseInfo[version].disabledAt.eqz()) {
|
335
|
+
// revert ErrorReleaseManagerReleaseAlreadyEnabled(version);
|
336
|
+
//}
|
170
337
|
|
171
|
-
|
172
|
-
|
173
|
-
ObjectType domain = _release[version].domains[_awaitingRegistration];// reversed registration order of services specified in RegistryService config
|
174
|
-
_verifyService(service, version, domain);
|
175
|
-
|
176
|
-
// setup and grant unique role if service does registrations
|
177
|
-
bytes4[] memory selectors = _selectors[version][domain];
|
178
|
-
address registryService = _registry.getServiceAddress(REGISTRY(), version);
|
179
|
-
if(selectors.length > 0) {
|
180
|
-
_accessManager.setAndGrantUniqueRole(
|
181
|
-
address(service),
|
182
|
-
registryService,
|
183
|
-
selectors);
|
184
|
-
}
|
338
|
+
// reverts if disable delay expired
|
339
|
+
_releaseAccessManager[version].enable();
|
185
340
|
|
186
|
-
|
187
|
-
|
188
|
-
nftId = _registry.registerService(info, version, domain);
|
189
|
-
|
190
|
-
// external call
|
191
|
-
service.linkToRegisteredNftId();
|
341
|
+
_releaseInfo[version].disabledAt = zeroTimestamp();
|
192
342
|
}
|
193
343
|
|
194
344
|
//--- view functions ----------------------------------------------------//
|
195
345
|
|
196
|
-
function
|
197
|
-
|
198
|
-
|
346
|
+
function predictDeterministicAddress(
|
347
|
+
address implementation,
|
348
|
+
bytes32 salt,
|
349
|
+
address deployer
|
350
|
+
) external pure returns (address predicted) {
|
351
|
+
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
199
352
|
}
|
200
353
|
|
201
|
-
function
|
202
|
-
|
203
|
-
return
|
354
|
+
function isActiveRegistryService(address service) external view returns(bool) {
|
355
|
+
VersionPart version = _releaseVersionByAddress[service];
|
356
|
+
return isActiveRelease(version);
|
204
357
|
}
|
205
358
|
|
206
|
-
function
|
207
|
-
|
208
|
-
return (address(_registry));
|
359
|
+
function isActiveRelease(VersionPart version) public view returns(bool) {
|
360
|
+
return _releaseInfo[version].activatedAt.gtz();
|
209
361
|
}
|
210
362
|
|
211
|
-
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory)
|
212
|
-
|
213
|
-
return _release[version];
|
363
|
+
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
364
|
+
return _releaseInfo[version];
|
214
365
|
}
|
215
366
|
|
216
|
-
function getNextVersion() public view returns(VersionPart)
|
217
|
-
{
|
367
|
+
function getNextVersion() public view returns(VersionPart) {
|
218
368
|
return _next;
|
219
369
|
}
|
220
370
|
|
@@ -226,97 +376,224 @@ contract ReleaseManager is AccessManaged
|
|
226
376
|
return _initial;
|
227
377
|
}
|
228
378
|
|
379
|
+
function getState() external view returns (StateId stateId) {
|
380
|
+
return _state;
|
381
|
+
}
|
382
|
+
|
383
|
+
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
384
|
+
return _awaitingRegistration;
|
385
|
+
}
|
386
|
+
|
387
|
+
function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
|
388
|
+
return _releaseAccessManager[version];
|
389
|
+
}
|
390
|
+
// TODO tokenr registry knows nothing about adfmin, only registry
|
391
|
+
function getRegistryAdmin() external view returns (address) {
|
392
|
+
return address(_admin);
|
393
|
+
}
|
394
|
+
|
395
|
+
//--- IRegistryLinked ------------------------------------------------------//
|
396
|
+
|
397
|
+
function getRegistry() external view returns (IRegistry) {
|
398
|
+
return _registry;
|
399
|
+
}
|
400
|
+
|
401
|
+
//--- ILifecycle -----------------------------------------------------------//
|
402
|
+
|
403
|
+
function hasLifecycle(ObjectType objectType) external pure returns (bool) { return objectType == RELEASE(); }
|
404
|
+
|
405
|
+
function getInitialState(ObjectType objectType) public pure returns (StateId stateId) {
|
406
|
+
if (objectType == RELEASE()) {
|
407
|
+
stateId = INITIAL();
|
408
|
+
}
|
409
|
+
}
|
410
|
+
|
411
|
+
function isValidTransition(
|
412
|
+
ObjectType objectType,
|
413
|
+
StateId fromId,
|
414
|
+
StateId toId
|
415
|
+
)
|
416
|
+
public
|
417
|
+
pure
|
418
|
+
returns (bool isValid)
|
419
|
+
{
|
420
|
+
if (objectType != RELEASE()) { return false; }
|
421
|
+
|
422
|
+
if (fromId == INITIAL() && toId == SCHEDULED()) { return true; }
|
423
|
+
if (fromId == SCHEDULED() && toId == DEPLOYING()) { return true; }
|
424
|
+
if (fromId == DEPLOYING() && toId == SCHEDULED()) { return true; }
|
425
|
+
if (fromId == DEPLOYING() && toId == DEPLOYING()) { return true; }
|
426
|
+
if (fromId == DEPLOYING() && toId == ACTIVE()) { return true; }
|
427
|
+
|
428
|
+
return false;
|
429
|
+
}
|
430
|
+
|
229
431
|
//--- private functions ----------------------------------------------------//
|
230
432
|
|
231
|
-
function
|
433
|
+
function _verifyService(IService service)
|
434
|
+
internal
|
435
|
+
view
|
436
|
+
returns(
|
437
|
+
IRegistry.ObjectInfo memory serviceInfo,
|
438
|
+
ObjectType serviceDomain,
|
439
|
+
VersionPart serviceVersion
|
440
|
+
)
|
441
|
+
{
|
442
|
+
if(!service.supportsInterface(type(IService).interfaceId)) {
|
443
|
+
revert ErrorReleaseManagerNotService(service);
|
444
|
+
}
|
445
|
+
|
446
|
+
address owner = msg.sender;
|
447
|
+
address serviceAuthority = service.authority();
|
448
|
+
serviceVersion = service.getVersion().toMajorPart();
|
449
|
+
serviceDomain = service.getDomain();// checked in registry
|
450
|
+
serviceInfo = service.getInitialInfo();
|
451
|
+
|
452
|
+
_verifyServiceInfo(service, serviceInfo, owner);
|
453
|
+
|
454
|
+
VersionPart releaseVersion = getNextVersion(); // never 0
|
455
|
+
address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
|
456
|
+
|
457
|
+
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
458
|
+
if(serviceAuthority != releaseAuthority) {
|
459
|
+
revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
|
460
|
+
service,
|
461
|
+
serviceAuthority,
|
462
|
+
releaseAuthority);
|
463
|
+
}
|
464
|
+
|
465
|
+
if(serviceVersion != releaseVersion) {
|
466
|
+
revert ErrorReleaseManagerServiceReleaseVersionMismatch(
|
467
|
+
service,
|
468
|
+
serviceVersion,
|
469
|
+
releaseVersion);
|
470
|
+
}
|
471
|
+
}
|
472
|
+
|
473
|
+
|
474
|
+
function _verifyServiceInfo(
|
232
475
|
IService service,
|
233
|
-
|
476
|
+
IRegistry.ObjectInfo memory info,
|
234
477
|
address expectedOwner // assume always valid, can not be 0
|
235
478
|
)
|
236
479
|
internal
|
237
|
-
|
238
|
-
returns(
|
239
|
-
IRegistry.ObjectInfo memory info
|
240
|
-
)
|
480
|
+
view
|
241
481
|
{
|
242
|
-
info
|
243
|
-
|
244
|
-
|
482
|
+
if(info.objectAddress != address(service)) {
|
483
|
+
revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
|
484
|
+
}
|
485
|
+
|
486
|
+
if(info.isInterceptor != false) { // service is never interceptor
|
487
|
+
revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
|
488
|
+
}
|
245
489
|
|
246
|
-
if(info.objectType !=
|
247
|
-
revert
|
490
|
+
if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
|
491
|
+
revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
|
248
492
|
}
|
249
493
|
|
250
494
|
address owner = info.initialOwner;
|
251
495
|
|
252
496
|
if(owner != expectedOwner) { // registerable owner protection
|
253
|
-
revert
|
497
|
+
revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
|
254
498
|
}
|
255
499
|
|
256
500
|
if(owner == address(service)) {
|
257
|
-
revert
|
501
|
+
revert ErrorReleaseManagerServiceSelfRegistration(service);
|
258
502
|
}
|
259
503
|
|
260
504
|
if(_registry.isRegistered(owner)) {
|
261
|
-
revert
|
505
|
+
revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
|
262
506
|
}
|
263
507
|
}
|
264
508
|
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
509
|
+
|
510
|
+
function _verifyReleaseAuthorizations(
|
511
|
+
address[] memory serviceAddress,
|
512
|
+
RoleId[][] memory serviceRoles,
|
513
|
+
RoleId[][] memory functionRoles,
|
514
|
+
bytes4[][][] memory selectors
|
269
515
|
)
|
270
516
|
internal
|
271
|
-
|
272
|
-
returns(ObjectType)
|
517
|
+
pure
|
273
518
|
{
|
274
|
-
if(
|
275
|
-
revert
|
519
|
+
if(serviceAddress.length == 0) {
|
520
|
+
revert ErrorReleaseManagerReleaseEmpty();
|
276
521
|
}
|
277
522
|
|
278
|
-
|
279
|
-
|
523
|
+
for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
|
524
|
+
{
|
525
|
+
for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
|
526
|
+
{
|
527
|
+
RoleId role = serviceRoles[serviceIdx][roleIdx];
|
528
|
+
if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
|
529
|
+
revert ErrorReleaseManagerReleaseServiceRoleInvalid(serviceIdx, serviceAddress[serviceIdx], role);
|
530
|
+
}
|
531
|
+
}
|
280
532
|
}
|
281
533
|
|
282
|
-
|
534
|
+
// TODO no duplicate service "domain" role per release
|
535
|
+
// TODO no duplicate service roles per service
|
536
|
+
// TODO no duplicate service function roles per service
|
537
|
+
// TODO no duplicate service function selectors per service
|
283
538
|
}
|
284
539
|
|
285
|
-
|
286
|
-
|
540
|
+
function _setServiceAuthorizations(
|
541
|
+
AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
|
542
|
+
address serviceAddress,
|
543
|
+
string memory serviceName,
|
544
|
+
RoleId[] memory serviceRoles,
|
545
|
+
string[] memory serviceRoleNames,
|
546
|
+
RoleId[] memory functionRoles,
|
547
|
+
string[] memory functionRoleNames,
|
548
|
+
bytes4[][] memory selectors
|
549
|
+
)
|
287
550
|
internal
|
288
551
|
{
|
289
|
-
|
552
|
+
accessManager.createTarget(serviceAddress, serviceName);
|
553
|
+
|
554
|
+
for(uint idx = 0; idx < functionRoles.length; idx++)
|
555
|
+
{
|
556
|
+
uint64 roleInt = functionRoles[idx].toInt();
|
557
|
+
|
558
|
+
if(!accessManager.isRoleExists(roleInt)) {
|
559
|
+
accessManager.createRole(roleInt, functionRoleNames[idx]);
|
560
|
+
}
|
290
561
|
|
291
|
-
|
292
|
-
|
562
|
+
accessManager.setTargetFunctionRole(
|
563
|
+
serviceAddress,
|
564
|
+
selectors[idx],
|
565
|
+
functionRoles[idx].toInt());
|
293
566
|
}
|
294
|
-
|
295
|
-
|
296
|
-
for(uint idx = 0; idx < config.length; idx++)
|
567
|
+
|
568
|
+
for(uint idx = 0; idx < serviceRoles.length; idx++)
|
297
569
|
{
|
298
|
-
|
299
|
-
|
300
|
-
if(
|
301
|
-
|
302
|
-
domain.eqz()
|
303
|
-
) { revert ConfigServiceDomainInvalid(idx, domain); }
|
304
|
-
|
305
|
-
bytes4[] memory selectors = config[idx].selectors;
|
306
|
-
|
307
|
-
// TODO can be zero -> e.g. duplicate domain, first with zero selector, second with non zero selector -> need to check _release[version].domains.contains(domain) instead
|
308
|
-
// no overwrite
|
309
|
-
if(_selectors[version][domain].length > 0) {
|
310
|
-
revert SelectorAlreadyExists(version, domain);
|
570
|
+
uint64 roleInt = serviceRoles[idx].toInt();
|
571
|
+
|
572
|
+
if(!accessManager.isRoleExists(roleInt)) {
|
573
|
+
accessManager.createRole(roleInt, serviceRoleNames[idx]);
|
311
574
|
}
|
312
|
-
|
313
|
-
|
314
|
-
|
575
|
+
|
576
|
+
accessManager.grantRole(
|
577
|
+
serviceRoles[idx].toInt(),
|
578
|
+
serviceAddress,
|
579
|
+
0);
|
580
|
+
}
|
581
|
+
}
|
582
|
+
|
583
|
+
// returns true iff a the address passes some simple proxy tests.
|
584
|
+
function _isRegistry(address registryAddress) internal view returns (bool) {
|
585
|
+
|
586
|
+
// zero address is certainly not registry
|
587
|
+
if (registryAddress == address(0)) {
|
588
|
+
return false;
|
589
|
+
}
|
590
|
+
// TODO try catch and return false in case of revert
|
591
|
+
// a just panic
|
592
|
+
// check if contract returns a zero nft id for its own address
|
593
|
+
if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
|
594
|
+
return false;
|
315
595
|
}
|
316
|
-
// TODO set when activated?
|
317
|
-
_release[version].createdAt = TimestampLib.blockTimestamp();
|
318
|
-
//_release[version].updatedAt = TimestampLib.blockTimestamp();
|
319
596
|
|
320
|
-
|
597
|
+
return true;
|
321
598
|
}
|
322
599
|
}
|