@etherisc/gif-next 0.0.2-ec436bf-674 → 0.0.2-ed1536c-164
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 +71 -14
- 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/distribution/IDistributionComponent.sol/IDistributionComponent.json +969 -0
- 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 +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +454 -554
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +356 -176
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +458 -3052
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
- 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 +504 -322
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +524 -352
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +331 -108
- 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/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +91 -2
- 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 +71 -45
- 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/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +294 -361
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1148 -0
- 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/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
- 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/product/IPolicyService.sol/IPolicyService.json +701 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +257 -288
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +989 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → product/IProductService.sol/IProductService.json} +140 -86
- 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/product/Product.sol/Product.json +1391 -0
- 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 +340 -195
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +434 -194
- 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 +429 -261
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +322 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +499 -338
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +320 -140
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1151 -0
- 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 +352 -109
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/shared/Component.sol/Component.json +890 -0
- 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/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +196 -216
- 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/shared/IComponent.sol/IComponent.json +625 -0
- 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/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +699 -0
- 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 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +35 -0
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
- 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 +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -53
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
- 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 +1435 -0
- package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → staking/IStakingManager.sol/IStakingManager.json} +10 -10
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +884 -0
- package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +357 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +402 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2002 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +748 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1207 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1690 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +494 -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/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 +185 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
- 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 +174 -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/distribution/DistributionServiceManager.sol +54 -0
- package/contracts/distribution/IDistributionComponent.sol +66 -0
- package/contracts/distribution/IDistributionService.sol +81 -0
- package/contracts/instance/BundleManager.sol +126 -0
- package/contracts/instance/IInstance.sol +62 -24
- package/contracts/instance/IInstanceService.sol +66 -13
- package/contracts/instance/Instance.sol +151 -366
- package/contracts/instance/InstanceAccessManager.sol +432 -177
- package/contracts/instance/InstanceAuthorizationsLib.sol +336 -0
- package/contracts/instance/InstanceReader.sol +143 -83
- package/contracts/instance/InstanceService.sol +309 -124
- package/contracts/instance/InstanceServiceManager.sol +12 -24
- package/contracts/instance/InstanceStore.sol +260 -0
- package/contracts/instance/base/BalanceStore.sol +118 -0
- package/contracts/instance/base/Cloneable.sol +51 -0
- package/contracts/instance/base/ObjectManager.sol +82 -0
- package/contracts/instance/module/IAccess.sol +37 -21
- 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/Usdc.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 +14 -0
- package/contracts/registry/IRegistry.sol +76 -45
- package/contracts/registry/IRegistryService.sol +51 -16
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +358 -269
- package/contracts/registry/RegistryAccessManager.sol +196 -0
- package/contracts/registry/RegistryService.sol +126 -259
- package/contracts/registry/RegistryServiceManager.sol +34 -42
- package/contracts/registry/ReleaseManager.sol +563 -0
- package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
- package/contracts/registry/TokenRegistry.sol +300 -57
- 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 +4 -6
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +7 -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 +65 -0
- package/contracts/shared/NftOwnable.sol +65 -83
- package/contracts/shared/PolicyHolder.sol +101 -0
- package/contracts/shared/ProxyManager.sol +126 -25
- package/contracts/shared/Registerable.sol +26 -41
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +45 -23
- package/contracts/shared/TokenHandler.sol +37 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/staking/IStaking.sol +152 -0
- package/contracts/staking/IStakingManager.sol +15 -0
- package/contracts/staking/IStakingService.sol +162 -0
- package/contracts/staking/IStakingStore.sol +130 -0
- package/contracts/staking/StakeManagerLib.sol +156 -0
- package/contracts/staking/Staking.sol +502 -0
- package/contracts/staking/StakingManager.sol +65 -0
- package/contracts/staking/StakingReader.sol +147 -0
- package/contracts/staking/StakingService.sol +375 -0
- package/contracts/staking/StakingServiceManager.sol +44 -0
- package/contracts/staking/StakingStore.sol +329 -0
- package/contracts/staking/TargetManagerLib.sol +179 -0
- package/contracts/type/Amount.sol +114 -0
- package/contracts/{types → type}/Blocknumber.sol +20 -2
- 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/type/NftIdSet.sol +62 -0
- 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 +71 -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/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.json +0 -775
- 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/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/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/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -448
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -855
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -460
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
- package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/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/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/NftIdSet.sol/LibNftIdSet.json +0 -10
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -91
- package/contracts/components/Distribution.sol +0 -160
- package/contracts/components/IBaseComponent.sol +0 -25
- package/contracts/components/IDistributionComponent.sol +0 -44
- package/contracts/components/IPoolComponent.sol +0 -62
- package/contracts/components/IProductComponent.sol +0 -35
- package/contracts/components/Pool.sol +0 -243
- package/contracts/components/Product.sol +0 -297
- 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/AccessManagedSimple.sol +0 -115
- package/contracts/instance/AccessManagerSimple.sol +0 -692
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/base/ComponentServiceBase.sol +0 -118
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/module/ISetup.sol +0 -44
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/DistributionService.sol +0 -87
- package/contracts/instance/service/DistributionServiceManager.sol +0 -53
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/instance/service/IDistributionService.sol +0 -12
- package/contracts/instance/service/IPoolService.sol +0 -37
- package/contracts/instance/service/IProductService.sol +0 -107
- package/contracts/instance/service/PoolService.sol +0 -193
- package/contracts/instance/service/PoolServiceManager.sol +0 -53
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -24
- package/contracts/test/TestToken.sol +0 -26
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NftIdSet.sol +0 -60
- package/contracts/types/NumberId.sol +0 -52
- package/contracts/types/RoleId.sol +0 -89
- /package/contracts/{types → type}/AddressSet.sol +0 -0
- /package/contracts/{types → type}/Key32.sol +0 -0
- /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -0,0 +1,563 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
5
|
+
import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
|
6
|
+
import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
7
|
+
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
8
|
+
|
9
|
+
import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
|
10
|
+
import {ILifecycle} from "../shared/ILifecycle.sol";
|
11
|
+
import {INftOwnable} from "../shared/INftOwnable.sol";
|
12
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
13
|
+
import {IRegistry} from "./IRegistry.sol";
|
14
|
+
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
15
|
+
import {IRegistryService} from "./IRegistryService.sol";
|
16
|
+
import {IService} from "../shared/IService.sol";
|
17
|
+
import {NftId} from "../type/NftId.sol";
|
18
|
+
import {ObjectType, ObjectTypeLib, zeroObjectType, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
19
|
+
import {Registry} from "./Registry.sol";
|
20
|
+
import {RegistryAccessManager} from "./RegistryAccessManager.sol";
|
21
|
+
import {RoleId, ADMIN_ROLE} from "../type/RoleId.sol";
|
22
|
+
import {ServiceAuthorizationsLib} from "./ServiceAuthorizationsLib.sol";
|
23
|
+
import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE} from "../type/StateId.sol";
|
24
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
25
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
26
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
27
|
+
|
28
|
+
// gif admin is not technical, should sent simple txs
|
29
|
+
// foundation creates
|
30
|
+
// other guy deployes
|
31
|
+
// other guy checks (can precompute addresses and compare with what deployed)
|
32
|
+
// foundation activates
|
33
|
+
// TODO add function to deactivate releases
|
34
|
+
// TODO in next pr add getVersion() to releaseAccessManager only, set in initialize()
|
35
|
+
// TODO in next pr make single base for registry access manager, release access manager and instance access manager
|
36
|
+
|
37
|
+
contract ReleaseManager is
|
38
|
+
AccessManaged,
|
39
|
+
Initializable,
|
40
|
+
ILifecycle
|
41
|
+
{
|
42
|
+
using ObjectTypeLib for ObjectType;
|
43
|
+
|
44
|
+
uint256 public constant INITIAL_GIF_VERSION = 3;
|
45
|
+
|
46
|
+
event LogReleaseCreation(VersionPart version, bytes32 salt, AccessManagerUpgradeableInitializeable accessManager);
|
47
|
+
event LogReleaseActivation(VersionPart version);
|
48
|
+
|
49
|
+
// constructor
|
50
|
+
error ErrorReleaseManagerNotRegistry(address registry);
|
51
|
+
|
52
|
+
// createNextRelease
|
53
|
+
error ErrorReleaseManagerReleaseCreationDisallowed(StateId currentStateId);
|
54
|
+
|
55
|
+
// prepareRelease
|
56
|
+
error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
|
57
|
+
error ErrorReleaseManagerReleaseEmpty();
|
58
|
+
error ErrorReleaseManagerReleaseAlreadyCreated(VersionPart version);
|
59
|
+
|
60
|
+
// register staking
|
61
|
+
error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
|
62
|
+
|
63
|
+
// registerService
|
64
|
+
error ErrorReleaseManagerNoServiceRegistrationExpected();
|
65
|
+
error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
|
66
|
+
error ErrorReleaseManagerNotService(IService service);
|
67
|
+
error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
|
68
|
+
|
69
|
+
// activateNextRelease
|
70
|
+
error ErrorReleaseManagerActivationDisallowed(StateId currentStateId);
|
71
|
+
error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
|
72
|
+
error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
73
|
+
error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
|
74
|
+
|
75
|
+
// _verifyService
|
76
|
+
error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
77
|
+
error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
78
|
+
|
79
|
+
// _verifyServiceInfo
|
80
|
+
error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
|
81
|
+
error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
|
82
|
+
error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
|
83
|
+
error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
|
84
|
+
error ErrorReleaseManagerServiceSelfRegistration(IService service);
|
85
|
+
error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
|
86
|
+
|
87
|
+
// _verifyServiceAuthorizations
|
88
|
+
error ErrorReleaseManagerServiceRoleInvalid(address service, RoleId role);
|
89
|
+
|
90
|
+
RegistryAccessManager public immutable _accessManager;
|
91
|
+
Registry public immutable _registry;
|
92
|
+
IRegisterable private _staking;
|
93
|
+
address private _stakingOwner;
|
94
|
+
|
95
|
+
mapping(VersionPart version => AccessManagerUpgradeableInitializeable accessManager) internal _releaseAccessManager;
|
96
|
+
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
97
|
+
mapping(address registryService => bool isActive) internal _active;// have access to registry
|
98
|
+
|
99
|
+
VersionPart immutable internal _initial;// first active version
|
100
|
+
VersionPart internal _latest; // latest active version
|
101
|
+
VersionPart internal _next; // version to create and activate
|
102
|
+
StateId internal _state; // current state of release manager
|
103
|
+
|
104
|
+
uint256 internal _awaitingRegistration; // "services left to register" counter
|
105
|
+
|
106
|
+
// deployer of this contract must be gif admin
|
107
|
+
constructor(
|
108
|
+
address gifAdmin,
|
109
|
+
address gifManager,
|
110
|
+
address registry
|
111
|
+
)
|
112
|
+
AccessManaged(msg.sender)
|
113
|
+
{
|
114
|
+
if(!_isRegistry(registry)) {
|
115
|
+
revert ErrorReleaseManagerNotRegistry(registry);
|
116
|
+
}
|
117
|
+
|
118
|
+
_registry = Registry(registry);
|
119
|
+
_accessManager = new RegistryAccessManager(
|
120
|
+
gifAdmin,
|
121
|
+
gifManager);
|
122
|
+
|
123
|
+
setAuthority(address(_accessManager.authority()));
|
124
|
+
|
125
|
+
_initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
|
126
|
+
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
127
|
+
_state = getInitialState(RELEASE());
|
128
|
+
}
|
129
|
+
|
130
|
+
|
131
|
+
function registerStaking(
|
132
|
+
address stakingAddress
|
133
|
+
)
|
134
|
+
external
|
135
|
+
restricted() // GIF_ADMIN_ROLE
|
136
|
+
{
|
137
|
+
INftOwnable staking = INftOwnable(stakingAddress);
|
138
|
+
_registry.registerStaking(stakingAddress);
|
139
|
+
staking.linkToRegisteredNftId();
|
140
|
+
}
|
141
|
+
|
142
|
+
|
143
|
+
/// @dev skips previous release if was not activated
|
144
|
+
/// sets release manager into state SCHEDULED
|
145
|
+
function createNextRelease()
|
146
|
+
external
|
147
|
+
restricted() // GIF_ADMIN_ROLE
|
148
|
+
returns(VersionPart version)
|
149
|
+
{
|
150
|
+
if (!isValidTransition(RELEASE(), _state, SCHEDULED())) {
|
151
|
+
revert ErrorReleaseManagerReleaseCreationDisallowed(_state);
|
152
|
+
}
|
153
|
+
|
154
|
+
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
155
|
+
_awaitingRegistration = 0;
|
156
|
+
_state = SCHEDULED();
|
157
|
+
}
|
158
|
+
|
159
|
+
|
160
|
+
function prepareNextRelease(
|
161
|
+
address[] memory addresses,
|
162
|
+
RoleId[][] memory serviceRoles,
|
163
|
+
RoleId[][] memory functionRoles,
|
164
|
+
bytes4[][][] memory selectors,
|
165
|
+
bytes32 salt
|
166
|
+
)
|
167
|
+
external
|
168
|
+
restricted() // GIF_MANAGER_ROLE
|
169
|
+
returns(
|
170
|
+
address releaseAccessManagerAddress,
|
171
|
+
VersionPart version,
|
172
|
+
bytes32 releaseSalt
|
173
|
+
)
|
174
|
+
{
|
175
|
+
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
176
|
+
revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
|
177
|
+
}
|
178
|
+
|
179
|
+
if(addresses.length == 0) {
|
180
|
+
revert ErrorReleaseManagerReleaseEmpty();
|
181
|
+
}
|
182
|
+
|
183
|
+
if(_awaitingRegistration > 0) {
|
184
|
+
revert ErrorReleaseManagerReleaseAlreadyCreated(version);
|
185
|
+
}
|
186
|
+
|
187
|
+
_verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
|
188
|
+
|
189
|
+
version = getNextVersion();
|
190
|
+
|
191
|
+
_releaseInfo[version].version = version;
|
192
|
+
_releaseInfo[version].addresses = addresses;
|
193
|
+
_releaseInfo[version].serviceRoles = serviceRoles;
|
194
|
+
_releaseInfo[version].functionRoles = functionRoles;
|
195
|
+
_releaseInfo[version].selectors = selectors;
|
196
|
+
_awaitingRegistration = addresses.length;
|
197
|
+
_state = DEPLOYING();
|
198
|
+
|
199
|
+
version = getNextVersion();
|
200
|
+
// ensures unique salt
|
201
|
+
releaseSalt = keccak256(
|
202
|
+
bytes.concat(
|
203
|
+
bytes32(version.toInt()),
|
204
|
+
salt));
|
205
|
+
|
206
|
+
releaseAccessManagerAddress = Clones.cloneDeterministic(_accessManager.authority(), releaseSalt);
|
207
|
+
AccessManagerUpgradeableInitializeable releaseAccessManager = AccessManagerUpgradeableInitializeable(releaseAccessManagerAddress);
|
208
|
+
|
209
|
+
_releaseAccessManager[version] = releaseAccessManager;
|
210
|
+
|
211
|
+
releaseAccessManager.initialize(address(this));
|
212
|
+
|
213
|
+
emit LogReleaseCreation(version, releaseSalt, releaseAccessManager);
|
214
|
+
}
|
215
|
+
|
216
|
+
|
217
|
+
function registerService(IService service)
|
218
|
+
external
|
219
|
+
restricted // GIF_MANAGER_ROLE
|
220
|
+
returns(NftId nftId)
|
221
|
+
{
|
222
|
+
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
223
|
+
revert ErrorReleaseManagerServiceRegistrationDisallowed(_state);
|
224
|
+
}
|
225
|
+
|
226
|
+
(
|
227
|
+
IRegistry.ObjectInfo memory info,
|
228
|
+
ObjectType domain,
|
229
|
+
VersionPart version
|
230
|
+
) = _verifyService(service);
|
231
|
+
|
232
|
+
if (_awaitingRegistration == 0) {
|
233
|
+
revert ErrorReleaseManagerNoServiceRegistrationExpected();
|
234
|
+
}
|
235
|
+
|
236
|
+
uint serviceIdx = _awaitingRegistration - 1;
|
237
|
+
address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
|
238
|
+
// TODO temp, while typescript addresses computation is not implemented
|
239
|
+
/*if(address(service) != serviceAddress) {
|
240
|
+
revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
|
241
|
+
}*/
|
242
|
+
|
243
|
+
_setServiceAuthorizations(
|
244
|
+
_releaseAccessManager[version],
|
245
|
+
// TODO temp, while typescript addresses computation is not implemented
|
246
|
+
address(service),//serviceAddress,
|
247
|
+
_releaseInfo[version].serviceRoles[serviceIdx],
|
248
|
+
_releaseInfo[version].functionRoles[serviceIdx],
|
249
|
+
_releaseInfo[version].selectors[serviceIdx]);
|
250
|
+
|
251
|
+
// TODO decide for one of the approaches
|
252
|
+
// // service to service authorization
|
253
|
+
// ServiceAuthorizationsLib.ServiceAuthorization memory authz = ServiceAuthorizationsLib.getAuthorizations(domain);
|
254
|
+
// for(uint8 idx = 0; idx < authz.authorizedRole.length; idx++) {
|
255
|
+
// _accessManager.setTargetFunctionRole(
|
256
|
+
// address(service),
|
257
|
+
// authz.authorizedSelectors[idx],
|
258
|
+
// authz.authorizedRole[idx]);
|
259
|
+
// }
|
260
|
+
|
261
|
+
_awaitingRegistration = serviceIdx;
|
262
|
+
_state = DEPLOYING();
|
263
|
+
|
264
|
+
// checked in registry
|
265
|
+
_releaseInfo[version].domains.push(domain);
|
266
|
+
|
267
|
+
nftId = _registry.registerService(info, version, domain);
|
268
|
+
|
269
|
+
service.linkToRegisteredNftId();
|
270
|
+
}
|
271
|
+
|
272
|
+
|
273
|
+
function activateNextRelease()
|
274
|
+
external
|
275
|
+
restricted // GIF_ADMIN_ROLE
|
276
|
+
{
|
277
|
+
if (!isValidTransition(RELEASE(), _state, ACTIVE())) {
|
278
|
+
revert ErrorReleaseManagerActivationDisallowed(_state);
|
279
|
+
}
|
280
|
+
|
281
|
+
VersionPart version = _next;
|
282
|
+
address service = _registry.getServiceAddress(REGISTRY(), version);
|
283
|
+
|
284
|
+
// release exists, registry service is a MUST
|
285
|
+
//if(_releaseAccessManager[version] == address(0)) {
|
286
|
+
if(service == address(0)) {
|
287
|
+
revert ErrorReleaseManagerReleaseNotCreated(version);
|
288
|
+
}
|
289
|
+
|
290
|
+
// release fully deployed
|
291
|
+
if(_awaitingRegistration > 0) {
|
292
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
293
|
+
}
|
294
|
+
|
295
|
+
// release is not activated
|
296
|
+
if(_releaseInfo[version].activatedAt.gtz()) {
|
297
|
+
revert ErrorReleaseManagerReleaseAlreadyActivated(version);
|
298
|
+
}
|
299
|
+
|
300
|
+
_latest = version;
|
301
|
+
_state = ACTIVE();
|
302
|
+
|
303
|
+
_active[service] = true;
|
304
|
+
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
305
|
+
|
306
|
+
emit LogReleaseActivation(version);
|
307
|
+
}
|
308
|
+
|
309
|
+
//--- view functions ----------------------------------------------------//
|
310
|
+
|
311
|
+
function predictDeterministicAddress(
|
312
|
+
address implementation,
|
313
|
+
bytes32 salt,
|
314
|
+
address deployer
|
315
|
+
) external pure returns (address predicted) {
|
316
|
+
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
317
|
+
}
|
318
|
+
|
319
|
+
function isActiveRegistryService(address service) external view returns(bool) {
|
320
|
+
return _active[service];
|
321
|
+
}
|
322
|
+
|
323
|
+
function isValidRelease(VersionPart version) external view returns(bool) {
|
324
|
+
return _releaseInfo[version].activatedAt.gtz();
|
325
|
+
}
|
326
|
+
|
327
|
+
function getRegistryAddress() external view returns(address) {
|
328
|
+
return (address(_registry));
|
329
|
+
}
|
330
|
+
|
331
|
+
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
332
|
+
return _releaseInfo[version];
|
333
|
+
}
|
334
|
+
|
335
|
+
function getNextVersion() public view returns(VersionPart) {
|
336
|
+
return _next;
|
337
|
+
}
|
338
|
+
|
339
|
+
function getLatestVersion() external view returns(VersionPart) {
|
340
|
+
return _latest;
|
341
|
+
}
|
342
|
+
|
343
|
+
function getInitialVersion() external view returns(VersionPart) {
|
344
|
+
return _initial;
|
345
|
+
}
|
346
|
+
|
347
|
+
function getState() external view returns (StateId stateId) {
|
348
|
+
return _state;
|
349
|
+
}
|
350
|
+
|
351
|
+
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
352
|
+
return _awaitingRegistration;
|
353
|
+
}
|
354
|
+
|
355
|
+
function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerUpgradeableInitializeable) {
|
356
|
+
return _releaseAccessManager[version];
|
357
|
+
}
|
358
|
+
|
359
|
+
function getRegistryAccessManager() external view returns (RegistryAccessManager) {
|
360
|
+
return _accessManager;
|
361
|
+
}
|
362
|
+
|
363
|
+
//--- IRegistryLinked ------------------------------------------------------//
|
364
|
+
|
365
|
+
function getRegistry() external view returns (IRegistry) {
|
366
|
+
return _registry;
|
367
|
+
}
|
368
|
+
|
369
|
+
//--- ILifecycle -----------------------------------------------------------//
|
370
|
+
|
371
|
+
function hasLifecycle(ObjectType objectType) external view returns (bool) { return objectType == RELEASE(); }
|
372
|
+
|
373
|
+
function getInitialState(ObjectType objectType) public view returns (StateId stateId) {
|
374
|
+
if (objectType == RELEASE()) {
|
375
|
+
stateId = INITIAL();
|
376
|
+
}
|
377
|
+
}
|
378
|
+
|
379
|
+
function isValidTransition(
|
380
|
+
ObjectType objectType,
|
381
|
+
StateId fromId,
|
382
|
+
StateId toId
|
383
|
+
)
|
384
|
+
public
|
385
|
+
view
|
386
|
+
returns (bool isValid)
|
387
|
+
{
|
388
|
+
if (objectType != RELEASE()) { return false; }
|
389
|
+
|
390
|
+
if (fromId == INITIAL() && toId == SCHEDULED()) { return true; }
|
391
|
+
if (fromId == SCHEDULED() && toId == DEPLOYING()) { return true; }
|
392
|
+
if (fromId == DEPLOYING() && toId == SCHEDULED()) { return true; }
|
393
|
+
if (fromId == DEPLOYING() && toId == DEPLOYING()) { return true; }
|
394
|
+
if (fromId == DEPLOYING() && toId == ACTIVE()) { return true; }
|
395
|
+
|
396
|
+
return false;
|
397
|
+
}
|
398
|
+
|
399
|
+
//--- private functions ----------------------------------------------------//
|
400
|
+
|
401
|
+
function _verifyService(IService service)
|
402
|
+
internal
|
403
|
+
returns(
|
404
|
+
IRegistry.ObjectInfo memory serviceInfo,
|
405
|
+
ObjectType serviceDomain,
|
406
|
+
VersionPart serviceVersion
|
407
|
+
)
|
408
|
+
{
|
409
|
+
if(!service.supportsInterface(type(IService).interfaceId)) {
|
410
|
+
revert ErrorReleaseManagerNotService(service);
|
411
|
+
}
|
412
|
+
|
413
|
+
address owner = msg.sender;
|
414
|
+
address serviceAuthority = service.authority();
|
415
|
+
serviceVersion = service.getVersion().toMajorPart();
|
416
|
+
serviceDomain = service.getDomain();// checked in registry
|
417
|
+
serviceInfo = service.getInitialInfo();
|
418
|
+
|
419
|
+
_verifyServiceInfo(service, serviceInfo, owner);
|
420
|
+
|
421
|
+
VersionPart releaseVersion = getNextVersion(); // never 0
|
422
|
+
address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
|
423
|
+
|
424
|
+
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
425
|
+
if(serviceAuthority != releaseAuthority) {
|
426
|
+
revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
|
427
|
+
service,
|
428
|
+
serviceAuthority,
|
429
|
+
releaseAuthority);
|
430
|
+
}
|
431
|
+
|
432
|
+
if(serviceVersion != releaseVersion) {
|
433
|
+
revert ErrorReleaseManagerServiceReleaseVersionMismatch(
|
434
|
+
service,
|
435
|
+
serviceVersion,
|
436
|
+
releaseVersion);
|
437
|
+
}
|
438
|
+
}
|
439
|
+
|
440
|
+
|
441
|
+
function _verifyServiceInfo(
|
442
|
+
IService service,
|
443
|
+
IRegistry.ObjectInfo memory info,
|
444
|
+
address expectedOwner // assume always valid, can not be 0
|
445
|
+
)
|
446
|
+
internal
|
447
|
+
view
|
448
|
+
{
|
449
|
+
if(info.objectAddress != address(service)) {
|
450
|
+
revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
|
451
|
+
}
|
452
|
+
|
453
|
+
if(info.isInterceptor != false) { // service is never interceptor
|
454
|
+
revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
|
455
|
+
}
|
456
|
+
|
457
|
+
if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
|
458
|
+
revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
|
459
|
+
}
|
460
|
+
|
461
|
+
address owner = info.initialOwner;
|
462
|
+
|
463
|
+
if(owner != expectedOwner) { // registerable owner protection
|
464
|
+
revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
|
465
|
+
}
|
466
|
+
|
467
|
+
if(owner == address(service)) {
|
468
|
+
revert ErrorReleaseManagerServiceSelfRegistration(service);
|
469
|
+
}
|
470
|
+
|
471
|
+
if(_registry.isRegistered(owner)) {
|
472
|
+
revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
|
473
|
+
}
|
474
|
+
}
|
475
|
+
|
476
|
+
|
477
|
+
function _verifyReleaseAuthorizations(
|
478
|
+
address[] memory serviceAddress,
|
479
|
+
RoleId[][] memory serviceRoles,
|
480
|
+
RoleId[][] memory functionRoles,
|
481
|
+
bytes4[][][] memory selectors
|
482
|
+
)
|
483
|
+
internal
|
484
|
+
view
|
485
|
+
{
|
486
|
+
for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
|
487
|
+
{
|
488
|
+
for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
|
489
|
+
{
|
490
|
+
RoleId role = serviceRoles[serviceIdx][roleIdx];
|
491
|
+
if(role == ADMIN_ROLE()) {
|
492
|
+
revert ErrorReleaseManagerServiceRoleInvalid(serviceAddress[serviceIdx], role);
|
493
|
+
}
|
494
|
+
}
|
495
|
+
}
|
496
|
+
|
497
|
+
// TODO no duplicate service "domain" role per release
|
498
|
+
// TODO no duplicate service roles per service
|
499
|
+
// TODO no duplicate service function roles per service
|
500
|
+
// TODO no duplicate service function selectors per service
|
501
|
+
}
|
502
|
+
|
503
|
+
function _setServiceAuthorizations(
|
504
|
+
IAccessManager accessManager,
|
505
|
+
address serviceAddress,
|
506
|
+
RoleId[] memory serviceRoles,
|
507
|
+
RoleId[] memory functionRoles,
|
508
|
+
bytes4[][] memory selectors
|
509
|
+
)
|
510
|
+
internal
|
511
|
+
{
|
512
|
+
for(uint idx = 0; idx < functionRoles.length; idx++)
|
513
|
+
{
|
514
|
+
accessManager.setTargetFunctionRole(
|
515
|
+
serviceAddress,
|
516
|
+
selectors[idx],
|
517
|
+
functionRoles[idx].toInt());
|
518
|
+
|
519
|
+
// TODO check/figure out which approach to take
|
520
|
+
// ObjectType domain = config[idx].serviceDomain;
|
521
|
+
// // not "registry service" / zero domain
|
522
|
+
// if(
|
523
|
+
// domain == REGISTRY() ||
|
524
|
+
// domain.eqz()
|
525
|
+
// ) { revert ConfigServiceDomainInvalid(idx, domain); }
|
526
|
+
|
527
|
+
// bytes4[] memory selectors = config[idx].authorizedSelectors;
|
528
|
+
|
529
|
+
// // 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
|
530
|
+
// // no overwrite
|
531
|
+
// if(_selectors[version][domain].length > 0) {
|
532
|
+
// revert SelectorAlreadyExists(version, domain);
|
533
|
+
// }
|
534
|
+
|
535
|
+
// _selectors[version][domain] = selectors;
|
536
|
+
// _release[version].domains.push(domain);
|
537
|
+
}
|
538
|
+
|
539
|
+
for(uint idx = 0; idx < serviceRoles.length; idx++)
|
540
|
+
{
|
541
|
+
accessManager.grantRole(
|
542
|
+
serviceRoles[idx].toInt(),
|
543
|
+
serviceAddress,
|
544
|
+
0);
|
545
|
+
}
|
546
|
+
}
|
547
|
+
|
548
|
+
// returns true iff a the address passes some simple proxy tests.
|
549
|
+
function _isRegistry(address registryAddress) internal view returns (bool) {
|
550
|
+
|
551
|
+
// zero address is certainly not registry
|
552
|
+
if (registryAddress == address(0)) {
|
553
|
+
return false;
|
554
|
+
}
|
555
|
+
|
556
|
+
// check if contract returns a zero nft id for its own address
|
557
|
+
if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
|
558
|
+
return false;
|
559
|
+
}
|
560
|
+
|
561
|
+
return true;
|
562
|
+
}
|
563
|
+
}
|