@etherisc/gif-next 0.0.2-fca9315-260 → 0.0.2-fd4931b-974
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 +1410 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1343 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +799 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Pool.sol/Pool.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +366 -367
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +808 -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 +267 -1594
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +285 -211
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +412 -2526
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +480 -166
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +610 -421
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +438 -399
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +348 -106
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3468 -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 +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/{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 +1091 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +723 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +257 -288
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +565 -186
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1044 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1559 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1411 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +719 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +820 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +699 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1264 -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/IPoolService.sol/IPoolService.json → product/IApplicationService.sol/IApplicationService.json} +211 -212
- 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 +237 -302
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +530 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +351 -311
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +112 -172
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1132 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +731 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +969 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +755 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → product/Product.sol/Product.json} +857 -214
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +673 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +675 -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 +158 -13
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +337 -225
- 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 +277 -30
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +74 -61
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +465 -267
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +334 -93
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +634 -69
- 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 +448 -50
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/Component.sol/Component.json} +321 -280
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1461 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +765 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +215 -226
- 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/IDistributionComponent.sol/IDistributionComponent.json → shared/IComponent.sol/IComponent.json} +205 -228
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +854 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Component.sol/Component.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +203 -160
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -1
- 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 +27 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -29
- 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 -160
- 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/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1030 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -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 +314 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +102 -35
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -74
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +125 -60
- 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 +172 -160
- 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/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1770 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → staking/IStakingService.sol/IStakingService.json} +261 -238
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2500 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +844 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +263 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +960 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +694 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +308 -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 +16 -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 +185 -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 +148 -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 +263 -0
- package/contracts/distribution/DistributionService.sol +298 -0
- package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +15 -12
- package/contracts/distribution/IDistributionComponent.sol +66 -0
- package/contracts/distribution/IDistributionService.sol +81 -0
- package/contracts/instance/BundleManager.sol +15 -14
- package/contracts/instance/IInstance.sol +49 -44
- package/contracts/instance/IInstanceService.sol +57 -15
- package/contracts/instance/Instance.sol +138 -179
- package/contracts/instance/InstanceAccessManager.sol +406 -161
- package/contracts/instance/InstanceAuthorizationsLib.sol +336 -0
- package/contracts/instance/InstanceReader.sol +135 -62
- package/contracts/instance/InstanceService.sol +240 -305
- package/contracts/instance/InstanceServiceManager.sol +12 -22
- 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 +24 -18
- package/contracts/instance/module/IBundle.sol +8 -8
- package/contracts/instance/module/IComponents.sol +52 -0
- package/contracts/instance/module/IDistribution.sol +7 -4
- package/contracts/instance/module/IPolicy.sol +56 -17
- 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 +147 -0
- package/contracts/pool/Pool.sol +299 -0
- package/contracts/pool/PoolService.sol +424 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +254 -0
- package/contracts/product/ApplicationServiceManager.sol +38 -0
- package/contracts/product/ClaimService.sol +437 -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 +78 -0
- 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 +473 -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 +15 -1
- package/contracts/registry/IRegistry.sol +38 -18
- package/contracts/registry/IRegistryService.sol +41 -38
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +193 -82
- package/contracts/registry/RegistryAccessManager.sol +72 -121
- package/contracts/registry/RegistryService.sol +164 -98
- package/contracts/registry/RegistryServiceManager.sol +28 -18
- package/contracts/registry/ReleaseManager.sol +390 -192
- package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
- package/contracts/registry/TokenRegistry.sol +263 -56
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/shared/Component.sol +286 -0
- package/contracts/shared/ComponentService.sol +595 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +111 -0
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/IComponent.sol +74 -0
- package/contracts/shared/IComponentService.sol +91 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +14 -10
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
- package/contracts/shared/INftOwnable.sol +12 -11
- package/contracts/shared/IPolicyHolder.sol +45 -0
- package/contracts/shared/IRegisterable.sol +3 -3
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +6 -4
- package/contracts/shared/IVersionable.sol +5 -48
- package/contracts/shared/InstanceLinkedComponent.sol +145 -0
- package/contracts/shared/KeyValueStore.sol +130 -0
- package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
- package/contracts/shared/NftIdSetManager.sol +69 -0
- package/contracts/shared/NftOwnable.sol +64 -85
- package/contracts/shared/PolicyHolder.sol +101 -0
- package/contracts/shared/ProxyManager.sol +126 -25
- package/contracts/shared/Registerable.sol +19 -30
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +37 -20
- package/contracts/shared/TokenHandler.sol +37 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/staking/IStaking.sol +113 -0
- package/contracts/staking/IStakingService.sol +122 -0
- package/contracts/staking/Staking.sol +348 -0
- package/contracts/staking/StakingManager.sol +52 -0
- package/contracts/staking/StakingReader.sol +92 -0
- package/contracts/staking/StakingService.sol +294 -0
- package/contracts/staking/StakingServiceManager.sol +44 -0
- package/contracts/staking/TargetManagerLib.sol +141 -0
- package/contracts/type/Amount.sol +114 -0
- package/contracts/{types → type}/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/{types → type}/DistributorType.sol +2 -2
- package/contracts/{types → type}/Fee.sol +32 -22
- package/contracts/{types → type}/NftId.sol +17 -11
- package/contracts/{types → type}/NftIdSet.sol +1 -1
- package/contracts/{types → type}/ObjectType.sol +26 -9
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +4 -0
- package/contracts/type/RoleId.sol +143 -0
- package/contracts/type/Seconds.sol +63 -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 +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 -455
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
- package/artifacts/contracts/instance/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/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1102
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
- 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 -1227
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
- 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 -313
- 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 -608
- 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 -216
- package/contracts/components/Distribution.sol +0 -150
- package/contracts/components/IComponent.sol +0 -43
- package/contracts/components/IDistributionComponent.sol +0 -47
- package/contracts/components/IPoolComponent.sol +0 -60
- package/contracts/components/IProductComponent.sol +0 -39
- package/contracts/components/Pool.sol +0 -227
- package/contracts/components/Product.sol +0 -265
- 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/base/ComponentService.sol +0 -134
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/module/ISetup.sol +0 -46
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/BundleService.sol +0 -293
- package/contracts/instance/service/BundleServiceManager.sol +0 -51
- package/contracts/instance/service/DistributionService.sol +0 -106
- 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/IProductService.sol +0 -40
- package/contracts/instance/service/PolicyService.sol +0 -538
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -110
- package/contracts/instance/service/PoolServiceManager.sol +0 -51
- package/contracts/instance/service/ProductService.sol +0 -234
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- 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/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,225 +1,331 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
5
|
+
import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
|
4
6
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
5
7
|
|
6
|
-
import {
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import {VersionPart, VersionPartLib} from "../types/Version.sol";
|
10
|
-
import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
|
11
|
-
|
12
|
-
import {IService} from "../shared/IService.sol";
|
13
|
-
|
8
|
+
import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
|
9
|
+
import {ILifecycle} from "../shared/ILifecycle.sol";
|
10
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
14
11
|
import {IRegistry} from "./IRegistry.sol";
|
15
|
-
import {Registry} from "./Registry.sol";
|
16
12
|
import {IRegistryService} from "./IRegistryService.sol";
|
13
|
+
import {IService} from "../shared/IService.sol";
|
14
|
+
import {IStaking} from "../staking/IStaking.sol";
|
15
|
+
import {NftId} from "../type/NftId.sol";
|
16
|
+
import {ObjectType, ObjectTypeLib, zeroObjectType, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
17
|
+
import {Registry} from "./Registry.sol";
|
17
18
|
import {RegistryAccessManager} from "./RegistryAccessManager.sol";
|
18
|
-
|
19
|
-
|
20
|
-
|
19
|
+
import {RoleId, ADMIN_ROLE} from "../type/RoleId.sol";
|
20
|
+
import {ServiceAuthorizationsLib} from "./ServiceAuthorizationsLib.sol";
|
21
|
+
import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE} from "../type/StateId.sol";
|
22
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
23
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
24
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
25
|
+
|
26
|
+
// gif admin is not technical, should sent simple txs
|
27
|
+
// foundation creates
|
28
|
+
// other guy deployes
|
29
|
+
// other guy checks (can precompute addresses and compare with what deployed)
|
30
|
+
// foundation activates
|
31
|
+
// TODO add function to deactivate releases
|
32
|
+
// TODO in next pr add getVersion() to releaseAccessManager only, set in initialize()
|
33
|
+
// TODO in next pr make single base for registry access manager, release access manager and instance access manager
|
34
|
+
|
35
|
+
contract ReleaseManager is
|
36
|
+
AccessManaged,
|
37
|
+
ILifecycle
|
21
38
|
{
|
22
39
|
using ObjectTypeLib for ObjectType;
|
23
40
|
|
24
|
-
event LogReleaseCreation(VersionPart version);
|
41
|
+
event LogReleaseCreation(VersionPart version, bytes32 salt, AccessManagerUpgradeableInitializeable accessManager);
|
25
42
|
event LogReleaseActivation(VersionPart version);
|
26
43
|
|
27
44
|
// createNextRelease
|
28
|
-
error
|
29
|
-
|
45
|
+
error ErrorReleaseManagerReleaseCreationDisallowed(StateId currentStateId);
|
46
|
+
|
47
|
+
// prepareRelease
|
48
|
+
error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
|
49
|
+
error ErrorReleaseManagerReleaseEmpty();
|
50
|
+
error ErrorReleaseManagerReleaseAlreadyCreated(VersionPart version);
|
51
|
+
|
52
|
+
// register staking
|
53
|
+
error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
|
30
54
|
|
31
55
|
// registerService
|
32
|
-
error
|
56
|
+
error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
|
57
|
+
error ErrorReleaseManagerNotService(IService service);
|
58
|
+
error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
|
33
59
|
|
34
60
|
// activateNextRelease
|
35
|
-
error
|
36
|
-
error
|
61
|
+
error ErrorReleaseManagerActivationDisallowed(StateId currentStateId);
|
62
|
+
error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
|
63
|
+
error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
64
|
+
error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
|
37
65
|
|
38
|
-
//
|
39
|
-
error
|
40
|
-
error
|
41
|
-
error SelfRegistration();
|
42
|
-
error RegisterableOwnerIsRegistered();
|
66
|
+
// _verifyService
|
67
|
+
error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
68
|
+
error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
43
69
|
|
44
70
|
// _verifyServiceInfo
|
45
|
-
error
|
46
|
-
error
|
47
|
-
|
48
|
-
|
49
|
-
error
|
50
|
-
error
|
51
|
-
error ConfigSelectorZero(uint configArrayIndex);
|
52
|
-
error SelectorAlreadyExists(VersionPart releaseVersion, ObjectType serviceDomain);
|
53
|
-
|
54
|
-
|
55
|
-
RegistryAccessManager private immutable _accessManager;
|
56
|
-
IRegistry private immutable _registry;
|
71
|
+
error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
|
72
|
+
error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
|
73
|
+
error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
|
74
|
+
error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
|
75
|
+
error ErrorReleaseManagerServiceSelfRegistration(IService service);
|
76
|
+
error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
|
57
77
|
|
58
|
-
|
59
|
-
|
60
|
-
VersionPart _next;// version to create and activate
|
78
|
+
// _verifyServiceAuthorizations
|
79
|
+
error ErrorReleaseManagerServiceRoleInvalid(address service, RoleId role);
|
61
80
|
|
62
|
-
|
81
|
+
RegistryAccessManager public immutable _accessManager;
|
82
|
+
Registry public immutable _registry;
|
83
|
+
TokenRegistry private immutable _tokenRegistry;
|
84
|
+
IStaking private _staking;
|
63
85
|
|
64
|
-
mapping(VersionPart version =>
|
86
|
+
mapping(VersionPart version => AccessManagerUpgradeableInitializeable accessManager) internal _releaseAccessManager;
|
87
|
+
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
88
|
+
mapping(address registryService => bool isActive) internal _active;// have access to registry
|
65
89
|
|
66
|
-
|
90
|
+
VersionPart immutable internal _initial;// first active version
|
91
|
+
VersionPart internal _latest; // latest active version
|
92
|
+
VersionPart internal _next; // version to create and activate
|
93
|
+
StateId internal _state; // current state of release manager
|
67
94
|
|
68
|
-
|
95
|
+
uint256 internal _awaitingRegistration; // "services left to register" counter
|
69
96
|
|
70
|
-
mapping(VersionPart version => bool isValid) _valid; // TODO refactor to use _active only
|
71
97
|
|
72
98
|
constructor(
|
73
99
|
RegistryAccessManager accessManager,
|
74
|
-
VersionPart initialVersion
|
100
|
+
VersionPart initialVersion,
|
101
|
+
address dipTokenAddress
|
102
|
+
)
|
75
103
|
AccessManaged(accessManager.authority())
|
76
104
|
{
|
77
|
-
require(initialVersion.toInt() > 0, "ReleaseManager: initial version is 0");
|
78
|
-
|
79
105
|
_accessManager = accessManager;
|
80
|
-
|
81
106
|
_initial = initialVersion;
|
82
|
-
_next = initialVersion;
|
107
|
+
_next = VersionPartLib.toVersionPart(initialVersion.toInt() - 1);
|
108
|
+
_state = getInitialState(RELEASE());
|
83
109
|
|
84
110
|
_registry = new Registry();
|
111
|
+
_tokenRegistry = new TokenRegistry(
|
112
|
+
address(_registry),
|
113
|
+
dipTokenAddress);
|
114
|
+
|
115
|
+
_registry.setTokenRegistry(address(_tokenRegistry));
|
85
116
|
}
|
86
117
|
|
118
|
+
|
87
119
|
/// @dev skips previous release if was not activated
|
120
|
+
/// sets release manager into state SCHEDULED
|
88
121
|
function createNextRelease()
|
89
122
|
external
|
90
123
|
restricted // GIF_ADMIN_ROLE
|
124
|
+
returns(VersionPart version)
|
91
125
|
{
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
_awaitingRegistration = 0;
|
126
|
+
if (!isValidTransition(RELEASE(), _state, SCHEDULED())) {
|
127
|
+
revert ErrorReleaseManagerReleaseCreationDisallowed(_state);
|
128
|
+
}
|
96
129
|
|
97
|
-
|
130
|
+
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
131
|
+
_awaitingRegistration = 0;
|
132
|
+
_state = SCHEDULED();
|
98
133
|
}
|
99
134
|
|
100
|
-
|
101
|
-
|
102
|
-
|
135
|
+
|
136
|
+
function prepareNextRelease(
|
137
|
+
address[] memory addresses,
|
138
|
+
RoleId[][] memory serviceRoles,
|
139
|
+
RoleId[][] memory functionRoles,
|
140
|
+
bytes4[][][] memory selectors,
|
141
|
+
bytes32 salt
|
142
|
+
)
|
143
|
+
external
|
144
|
+
restricted() // GIF_MANAGER_ROLE
|
145
|
+
returns(
|
146
|
+
address releaseAccessManagerAddress,
|
147
|
+
VersionPart version,
|
148
|
+
bytes32 releaseSalt
|
149
|
+
)
|
103
150
|
{
|
104
|
-
|
105
|
-
|
151
|
+
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
152
|
+
revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
|
153
|
+
}
|
106
154
|
|
107
|
-
|
108
|
-
|
109
|
-
revert ReleaseNotCreated();
|
155
|
+
if(addresses.length == 0) {
|
156
|
+
revert ErrorReleaseManagerReleaseEmpty();
|
110
157
|
}
|
111
158
|
|
112
|
-
// release fully deployed
|
113
159
|
if(_awaitingRegistration > 0) {
|
114
|
-
revert
|
160
|
+
revert ErrorReleaseManagerReleaseAlreadyCreated(version);
|
115
161
|
}
|
116
162
|
|
117
|
-
|
163
|
+
_verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
|
118
164
|
|
119
|
-
|
165
|
+
version = getNextVersion();
|
120
166
|
|
121
|
-
|
122
|
-
|
167
|
+
_releaseInfo[version].version = version;
|
168
|
+
_releaseInfo[version].addresses = addresses;
|
169
|
+
_releaseInfo[version].serviceRoles = serviceRoles;
|
170
|
+
_releaseInfo[version].functionRoles = functionRoles;
|
171
|
+
_releaseInfo[version].selectors = selectors;
|
172
|
+
_awaitingRegistration = addresses.length;
|
173
|
+
_state = DEPLOYING();
|
123
174
|
|
124
|
-
|
175
|
+
version = getNextVersion();
|
176
|
+
// ensures unique salt
|
177
|
+
releaseSalt = keccak256(
|
178
|
+
bytes.concat(
|
179
|
+
bytes32(version.toInt()),
|
180
|
+
salt));
|
181
|
+
|
182
|
+
releaseAccessManagerAddress = Clones.cloneDeterministic(_accessManager.authority(), releaseSalt);
|
183
|
+
AccessManagerUpgradeableInitializeable releaseAccessManager = AccessManagerUpgradeableInitializeable(releaseAccessManagerAddress);
|
184
|
+
|
185
|
+
_releaseAccessManager[version] = releaseAccessManager;
|
186
|
+
|
187
|
+
releaseAccessManager.initialize(address(this));
|
188
|
+
|
189
|
+
emit LogReleaseCreation(version, releaseSalt, releaseAccessManager);
|
125
190
|
}
|
126
191
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
192
|
+
|
193
|
+
function registerStaking(
|
194
|
+
address stakingAddress,
|
195
|
+
address stakingOwner
|
196
|
+
)
|
131
197
|
external
|
132
|
-
restricted //
|
198
|
+
restricted // GIF_ADMIN_ROLE
|
133
199
|
returns(NftId nftId)
|
134
200
|
{
|
135
|
-
|
136
|
-
|
137
|
-
}
|
201
|
+
// TODO add verify staking contract
|
202
|
+
_staking = IStaking(stakingAddress);
|
138
203
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
revert UnexpectedServiceAuthority(
|
143
|
-
authority(),
|
144
|
-
serviceAuthority);
|
145
|
-
}
|
204
|
+
nftId = _registry.registerStaking(
|
205
|
+
stakingAddress,
|
206
|
+
stakingOwner);
|
146
207
|
|
147
|
-
|
208
|
+
_staking.linkToRegisteredNftId();
|
209
|
+
}
|
148
210
|
|
149
|
-
VersionPart version = _next;
|
150
|
-
ObjectType domain = REGISTRY();
|
151
|
-
_verifyServiceInfo(info, version, domain);
|
152
211
|
|
153
|
-
|
154
|
-
|
212
|
+
function registerService(IService service)
|
213
|
+
external
|
214
|
+
restricted // GIF_MANAGER_ROLE
|
215
|
+
returns(NftId nftId)
|
216
|
+
{
|
217
|
+
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
218
|
+
revert ErrorReleaseManagerServiceRegistrationDisallowed(_state);
|
219
|
+
}
|
220
|
+
|
221
|
+
(
|
222
|
+
IRegistry.ObjectInfo memory info,
|
223
|
+
ObjectType domain,
|
224
|
+
VersionPart version
|
225
|
+
) = _verifyService(service);
|
226
|
+
|
227
|
+
require(_awaitingRegistration > 0, "_awaitingRegistration == 0");
|
228
|
+
|
229
|
+
uint serviceIdx = _awaitingRegistration - 1;
|
230
|
+
address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
|
231
|
+
// TODO temp, while typescript addresses computation is not implemented
|
232
|
+
/*if(address(service) != serviceAddress) {
|
233
|
+
revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
|
234
|
+
}*/
|
235
|
+
|
236
|
+
_setServiceAuthorizations(
|
237
|
+
_releaseAccessManager[version],
|
238
|
+
// TODO temp, while typescript addresses computation is not implemented
|
239
|
+
address(service),//serviceAddress,
|
240
|
+
_releaseInfo[version].serviceRoles[serviceIdx],
|
241
|
+
_releaseInfo[version].functionRoles[serviceIdx],
|
242
|
+
_releaseInfo[version].selectors[serviceIdx]);
|
243
|
+
|
244
|
+
// TODO decide for one of the approaches
|
245
|
+
// // service to service authorization
|
246
|
+
// ServiceAuthorizationsLib.ServiceAuthorization memory authz = ServiceAuthorizationsLib.getAuthorizations(domain);
|
247
|
+
// for(uint8 idx = 0; idx < authz.authorizedRole.length; idx++) {
|
248
|
+
// _accessManager.setTargetFunctionRole(
|
249
|
+
// address(service),
|
250
|
+
// authz.authorizedSelectors[idx],
|
251
|
+
// authz.authorizedRole[idx]);
|
252
|
+
// }
|
253
|
+
|
254
|
+
_awaitingRegistration = serviceIdx;
|
255
|
+
_state = DEPLOYING();
|
256
|
+
|
257
|
+
// checked in registry
|
258
|
+
_releaseInfo[version].domains.push(domain);
|
155
259
|
|
156
|
-
//setTargetClosed(service, true);
|
157
|
-
|
158
260
|
nftId = _registry.registerService(info, version, domain);
|
159
261
|
|
160
|
-
// external call
|
161
262
|
service.linkToRegisteredNftId();
|
162
263
|
}
|
163
264
|
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
restricted // GIF_MANAGER_ROLE
|
169
|
-
returns(NftId nftId)
|
265
|
+
|
266
|
+
function activateNextRelease()
|
267
|
+
external
|
268
|
+
restricted // GIF_ADMIN_ROLE
|
170
269
|
{
|
171
|
-
if(!
|
172
|
-
revert
|
270
|
+
if (!isValidTransition(RELEASE(), _state, ACTIVE())) {
|
271
|
+
revert ErrorReleaseManagerActivationDisallowed(_state);
|
173
272
|
}
|
174
273
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
selector[0] = _selector[version][domain];
|
183
|
-
address registryService = _registry.getServiceAddress(REGISTRY(), version);
|
184
|
-
if(selector[0] != 0) {
|
185
|
-
_accessManager.setAndGrantUniqueRole(
|
186
|
-
address(service),
|
187
|
-
registryService,
|
188
|
-
selector);
|
274
|
+
VersionPart version = _next;
|
275
|
+
address service = _registry.getServiceAddress(REGISTRY(), version);
|
276
|
+
|
277
|
+
// release exists, registry service is a MUST
|
278
|
+
//if(_releaseAccessManager[version] == address(0)) {
|
279
|
+
if(service == address(0)) {
|
280
|
+
revert ErrorReleaseManagerReleaseNotCreated(version);
|
189
281
|
}
|
190
|
-
|
191
|
-
_awaitingRegistration--;
|
192
282
|
|
193
|
-
|
283
|
+
// release fully deployed
|
284
|
+
if(_awaitingRegistration > 0) {
|
285
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
286
|
+
}
|
287
|
+
|
288
|
+
// release is not activated
|
289
|
+
if(_releaseInfo[version].activatedAt.gtz()) {
|
290
|
+
revert ErrorReleaseManagerReleaseAlreadyActivated(version);
|
291
|
+
}
|
194
292
|
|
195
|
-
|
196
|
-
|
293
|
+
_latest = version;
|
294
|
+
_state = ACTIVE();
|
295
|
+
|
296
|
+
_active[service] = true;
|
297
|
+
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
298
|
+
|
299
|
+
emit LogReleaseActivation(version);
|
197
300
|
}
|
198
301
|
|
199
302
|
//--- view functions ----------------------------------------------------//
|
200
303
|
|
201
|
-
function
|
202
|
-
|
304
|
+
function predictDeterministicAddress(
|
305
|
+
address implementation,
|
306
|
+
bytes32 salt,
|
307
|
+
address deployer
|
308
|
+
) external pure returns (address predicted) {
|
309
|
+
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
310
|
+
}
|
311
|
+
|
312
|
+
function isActiveRegistryService(address service) external view returns(bool) {
|
203
313
|
return _active[service];
|
204
314
|
}
|
205
315
|
|
206
|
-
function isValidRelease(VersionPart version) external view returns(bool)
|
207
|
-
|
208
|
-
return _valid[version];
|
316
|
+
function isValidRelease(VersionPart version) external view returns(bool) {
|
317
|
+
return _releaseInfo[version].activatedAt.gtz();
|
209
318
|
}
|
210
319
|
|
211
|
-
function
|
212
|
-
{
|
320
|
+
function getRegistryAddress() external view returns(address) {
|
213
321
|
return (address(_registry));
|
214
322
|
}
|
215
323
|
|
216
|
-
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory)
|
217
|
-
|
218
|
-
return _release[version];
|
324
|
+
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
325
|
+
return _releaseInfo[version];
|
219
326
|
}
|
220
327
|
|
221
|
-
function getNextVersion() public view returns(VersionPart)
|
222
|
-
{
|
328
|
+
function getNextVersion() public view returns(VersionPart) {
|
223
329
|
return _next;
|
224
330
|
}
|
225
331
|
|
@@ -231,102 +337,194 @@ contract ReleaseManager is AccessManaged
|
|
231
337
|
return _initial;
|
232
338
|
}
|
233
339
|
|
340
|
+
function getState() external view returns (StateId stateId) {
|
341
|
+
return _state;
|
342
|
+
}
|
343
|
+
|
344
|
+
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
345
|
+
return _awaitingRegistration;
|
346
|
+
}
|
347
|
+
|
348
|
+
function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerUpgradeableInitializeable) {
|
349
|
+
return _releaseAccessManager[version];
|
350
|
+
}
|
351
|
+
|
352
|
+
//--- ILifecycle -----------------------------------------------------------//
|
353
|
+
|
354
|
+
function hasLifecycle(ObjectType objectType) external view returns (bool) { return objectType == RELEASE(); }
|
355
|
+
|
356
|
+
function getInitialState(ObjectType objectType) public view returns (StateId stateId) {
|
357
|
+
if (objectType == RELEASE()) {
|
358
|
+
stateId = INITIAL();
|
359
|
+
}
|
360
|
+
}
|
361
|
+
|
362
|
+
function isValidTransition(
|
363
|
+
ObjectType objectType,
|
364
|
+
StateId fromId,
|
365
|
+
StateId toId
|
366
|
+
)
|
367
|
+
public
|
368
|
+
view
|
369
|
+
returns (bool isValid)
|
370
|
+
{
|
371
|
+
if (objectType != RELEASE()) { return false; }
|
372
|
+
|
373
|
+
if (fromId == INITIAL() && toId == SCHEDULED()) { return true; }
|
374
|
+
if (fromId == SCHEDULED() && toId == DEPLOYING()) { return true; }
|
375
|
+
if (fromId == DEPLOYING() && toId == SCHEDULED()) { return true; }
|
376
|
+
if (fromId == DEPLOYING() && toId == DEPLOYING()) { return true; }
|
377
|
+
if (fromId == DEPLOYING() && toId == ACTIVE()) { return true; }
|
378
|
+
|
379
|
+
return false;
|
380
|
+
}
|
381
|
+
|
234
382
|
//--- private functions ----------------------------------------------------//
|
235
383
|
|
236
|
-
function
|
384
|
+
function _verifyService(IService service)
|
385
|
+
internal
|
386
|
+
returns(
|
387
|
+
IRegistry.ObjectInfo memory serviceInfo,
|
388
|
+
ObjectType serviceDomain,
|
389
|
+
VersionPart serviceVersion
|
390
|
+
)
|
391
|
+
{
|
392
|
+
if(!service.supportsInterface(type(IService).interfaceId)) {
|
393
|
+
revert ErrorReleaseManagerNotService(service);
|
394
|
+
}
|
395
|
+
|
396
|
+
address owner = msg.sender;
|
397
|
+
address serviceAuthority = service.authority();
|
398
|
+
serviceVersion = service.getVersion().toMajorPart();
|
399
|
+
serviceDomain = service.getDomain();// checked in registry
|
400
|
+
serviceInfo = service.getInitialInfo();
|
401
|
+
|
402
|
+
_verifyServiceInfo(service, serviceInfo, owner);
|
403
|
+
|
404
|
+
VersionPart releaseVersion = getNextVersion(); // never 0
|
405
|
+
address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
|
406
|
+
|
407
|
+
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
408
|
+
if(serviceAuthority != releaseAuthority) {
|
409
|
+
revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
|
410
|
+
service,
|
411
|
+
serviceAuthority,
|
412
|
+
releaseAuthority);
|
413
|
+
}
|
414
|
+
|
415
|
+
if(serviceVersion != releaseVersion) {
|
416
|
+
revert ErrorReleaseManagerServiceReleaseVersionMismatch(
|
417
|
+
service,
|
418
|
+
serviceVersion,
|
419
|
+
releaseVersion);
|
420
|
+
}
|
421
|
+
}
|
422
|
+
|
423
|
+
|
424
|
+
function _verifyServiceInfo(
|
237
425
|
IService service,
|
238
|
-
|
426
|
+
IRegistry.ObjectInfo memory info,
|
239
427
|
address expectedOwner // assume always valid, can not be 0
|
240
428
|
)
|
241
429
|
internal
|
242
|
-
|
243
|
-
returns(
|
244
|
-
IRegistry.ObjectInfo memory info
|
245
|
-
)
|
430
|
+
view
|
246
431
|
{
|
247
|
-
info
|
248
|
-
|
249
|
-
|
432
|
+
if(info.objectAddress != address(service)) {
|
433
|
+
revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
|
434
|
+
}
|
250
435
|
|
251
|
-
if(info.
|
252
|
-
revert
|
436
|
+
if(info.isInterceptor != false) { // service is never interceptor
|
437
|
+
revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
|
438
|
+
}
|
439
|
+
|
440
|
+
if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
|
441
|
+
revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
|
253
442
|
}
|
254
443
|
|
255
444
|
address owner = info.initialOwner;
|
256
445
|
|
257
446
|
if(owner != expectedOwner) { // registerable owner protection
|
258
|
-
revert
|
447
|
+
revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
|
259
448
|
}
|
260
449
|
|
261
450
|
if(owner == address(service)) {
|
262
|
-
revert
|
451
|
+
revert ErrorReleaseManagerServiceSelfRegistration(service);
|
263
452
|
}
|
264
453
|
|
265
454
|
if(_registry.isRegistered(owner)) {
|
266
|
-
revert
|
455
|
+
revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
|
267
456
|
}
|
268
457
|
}
|
269
458
|
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
459
|
+
|
460
|
+
function _verifyReleaseAuthorizations(
|
461
|
+
address[] memory serviceAddress,
|
462
|
+
RoleId[][] memory serviceRoles,
|
463
|
+
RoleId[][] memory functionRoles,
|
464
|
+
bytes4[][][] memory selectors
|
274
465
|
)
|
275
466
|
internal
|
276
467
|
view
|
277
|
-
returns(ObjectType)
|
278
468
|
{
|
279
|
-
(
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
if(domain != expectedDomain) {
|
289
|
-
revert UnexpectedServiceDomain(expectedDomain, domain);
|
469
|
+
for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
|
470
|
+
{
|
471
|
+
for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
|
472
|
+
{
|
473
|
+
RoleId role = serviceRoles[serviceIdx][roleIdx];
|
474
|
+
if(role == ADMIN_ROLE()) {
|
475
|
+
revert ErrorReleaseManagerServiceRoleInvalid(serviceAddress[serviceIdx], role);
|
476
|
+
}
|
477
|
+
}
|
290
478
|
}
|
291
479
|
|
292
|
-
|
480
|
+
// TODO no duplicate service "domain" role per release
|
481
|
+
// TODO no duplicate service roles per service
|
482
|
+
// TODO no duplicate service function roles per service
|
483
|
+
// TODO no duplicate service function selectors per service
|
293
484
|
}
|
294
485
|
|
295
|
-
|
296
|
-
|
486
|
+
function _setServiceAuthorizations(
|
487
|
+
IAccessManager accessManager,
|
488
|
+
address serviceAddress,
|
489
|
+
RoleId[] memory serviceRoles,
|
490
|
+
RoleId[] memory functionRoles,
|
491
|
+
bytes4[][] memory selectors
|
492
|
+
)
|
297
493
|
internal
|
298
494
|
{
|
299
|
-
|
300
|
-
|
301
|
-
if(config.length == 0) {
|
302
|
-
revert ConfigMissing();
|
303
|
-
}
|
304
|
-
// always in release
|
305
|
-
_release[version].domains.push(REGISTRY());
|
306
|
-
for(uint idx = 0; idx < config.length; idx++)
|
495
|
+
for(uint idx = 0; idx < functionRoles.length; idx++)
|
307
496
|
{
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
//
|
318
|
-
//
|
319
|
-
|
320
|
-
|
321
|
-
|
497
|
+
accessManager.setTargetFunctionRole(
|
498
|
+
serviceAddress,
|
499
|
+
selectors[idx],
|
500
|
+
functionRoles[idx].toInt());
|
501
|
+
|
502
|
+
// TODO check/figure out which approach to take
|
503
|
+
// ObjectType domain = config[idx].serviceDomain;
|
504
|
+
// // not "registry service" / zero domain
|
505
|
+
// if(
|
506
|
+
// domain == REGISTRY() ||
|
507
|
+
// domain.eqz()
|
508
|
+
// ) { revert ConfigServiceDomainInvalid(idx, domain); }
|
509
|
+
|
510
|
+
// bytes4[] memory selectors = config[idx].authorizedSelectors;
|
511
|
+
|
512
|
+
// // 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
|
513
|
+
// // no overwrite
|
514
|
+
// if(_selectors[version][domain].length > 0) {
|
515
|
+
// revert SelectorAlreadyExists(version, domain);
|
516
|
+
// }
|
322
517
|
|
323
|
-
|
324
|
-
_release[version].domains.push(domain);
|
518
|
+
// _selectors[version][domain] = selectors;
|
519
|
+
// _release[version].domains.push(domain);
|
325
520
|
}
|
326
|
-
// TODO set when activated?
|
327
|
-
_release[version].createdAt = TimestampLib.blockTimestamp();
|
328
|
-
//_release[version].updatedAt = TimestampLib.blockTimestamp();
|
329
521
|
|
330
|
-
|
522
|
+
for(uint idx = 0; idx < serviceRoles.length; idx++)
|
523
|
+
{
|
524
|
+
accessManager.grantRole(
|
525
|
+
serviceRoles[idx].toInt(),
|
526
|
+
serviceAddress,
|
527
|
+
0);
|
528
|
+
}
|
331
529
|
}
|
332
530
|
}
|