@etherisc/gif-next 0.0.2-d5b7b78-706 → 0.0.2-d5fac82-078
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -84
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +90 -14
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1575 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +851 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +145 -14
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +110 -283
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +6 -6
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +310 -2004
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +104 -55
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +420 -2725
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +746 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +188 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +366 -71
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +179 -214
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +121 -95
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +61 -12
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +8 -8
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol}/ObjectManager.json +3 -3
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +1 -130
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1307 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +767 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +234 -129
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +162 -21
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +91 -21
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1641 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +779 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +937 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +719 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1405 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +819 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → product/IApplicationService.sol/IApplicationService.json} +184 -100
- 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 +211 -100
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +120 -166
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +152 -21
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +86 -28
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1300 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +811 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1023 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +759 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/Product.sol/Product.json +82 -22
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +883 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +711 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +110 -30
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +165 -84
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +133 -45
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +305 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +209 -104
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +103 -55
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +542 -86
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +20 -35
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1747 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1765 -0
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/Component.sol/Component.json +67 -7
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +133 -35
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1594 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +138 -7
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +85 -27
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +23 -43
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +81 -33
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +27 -21
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +110 -28
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +523 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +786 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +699 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/NftId.sol/NftIdLib.json +5 -5
- 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/{types → type}/Referral.sol/ReferralLib.json +5 -5
- 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/{types → type}/Seconds.sol/SecondsLib.json +3 -3
- 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 +20 -7
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
- package/contracts/{components → distribution}/Distribution.sol +21 -16
- package/contracts/distribution/DistributionService.sol +351 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/{components → distribution}/IDistributionComponent.sol +7 -7
- package/contracts/{instance/service → distribution}/IDistributionService.sol +19 -30
- package/contracts/instance/BundleManager.sol +8 -9
- package/contracts/instance/IInstance.sol +45 -66
- package/contracts/instance/IInstanceService.sol +21 -20
- package/contracts/instance/Instance.sol +121 -218
- package/contracts/instance/InstanceAdmin.sol +354 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +320 -0
- package/contracts/instance/InstanceReader.sol +96 -18
- package/contracts/instance/InstanceService.sol +120 -317
- package/contracts/instance/InstanceServiceManager.sol +11 -21
- package/contracts/instance/InstanceStore.sol +211 -0
- package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +1 -1
- package/contracts/instance/base/IKeyValueStore.sol +14 -10
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +39 -45
- package/contracts/instance/base/Lifecycle.sol +17 -5
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +7 -7
- package/contracts/instance/module/IAccess.sol +3 -13
- package/contracts/instance/module/IBundle.sol +10 -8
- package/contracts/instance/module/IComponents.sol +11 -5
- package/contracts/instance/module/IDistribution.sol +7 -6
- package/contracts/instance/module/IPolicy.sol +22 -16
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/instance/module/ISetup.sol +4 -4
- package/contracts/instance/module/ITreasury.sol +2 -2
- package/contracts/pool/BundleService.sol +384 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +118 -0
- package/contracts/{components → pool}/IPoolComponent.sol +14 -13
- package/contracts/pool/IPoolService.sol +114 -0
- package/contracts/{components → pool}/Pool.sol +25 -22
- package/contracts/pool/PoolService.sol +404 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +187 -0
- package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
- package/contracts/product/ClaimService.sol +443 -0
- package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
- package/contracts/{instance/service → product}/IApplicationService.sol +14 -34
- package/contracts/product/IClaimService.sol +93 -0
- package/contracts/{instance/service → product}/IPolicyService.sol +34 -26
- package/contracts/product/IPricingService.sol +37 -0
- package/contracts/{components → product}/IProductComponent.sol +11 -10
- package/contracts/{instance/service → product}/IProductService.sol +10 -10
- package/contracts/product/PolicyService.sol +378 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +276 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/{components → product}/Product.sol +160 -74
- package/contracts/product/ProductService.sol +212 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/IRegistry.sol +28 -17
- package/contracts/registry/IRegistryService.sol +29 -37
- package/contracts/registry/Registry.sol +46 -48
- package/contracts/registry/RegistryAdmin.sol +143 -0
- package/contracts/registry/RegistryService.sol +37 -88
- package/contracts/registry/RegistryServiceManager.sol +21 -23
- package/contracts/registry/ReleaseManager.sol +318 -177
- package/contracts/registry/TokenRegistry.sol +6 -4
- package/contracts/shared/AccessManagerCustom.sol +736 -0
- package/contracts/shared/AccessManagerExtended.sol +469 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +125 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/{components → shared}/Component.sol +31 -11
- package/contracts/shared/ComponentService.sol +141 -0
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +17 -0
- package/contracts/{components → shared}/IComponent.sol +22 -6
- package/contracts/shared/INftOwnable.sol +1 -1
- package/contracts/shared/IPolicyHolder.sol +24 -10
- package/contracts/shared/IRegistryLinked.sol +0 -1
- package/contracts/shared/IService.sol +6 -6
- package/contracts/shared/IVersionable.sol +1 -1
- package/contracts/shared/NftOwnable.sol +13 -16
- package/contracts/shared/PolicyHolder.sol +31 -18
- package/contracts/shared/ProxyManager.sol +34 -3
- package/contracts/shared/Registerable.sol +12 -11
- package/contracts/shared/RegistryLinked.sol +0 -5
- package/contracts/shared/Service.sol +23 -9
- package/contracts/shared/TokenHandler.sol +4 -2
- package/contracts/shared/Versionable.sol +1 -1
- package/contracts/staking/IStakingService.sol +102 -0
- package/contracts/staking/StakingService.sol +169 -0
- package/contracts/staking/StakingServiceManager.sol +40 -0
- package/contracts/type/Amount.sol +109 -0
- package/contracts/{types → type}/ClaimId.sol +25 -2
- package/contracts/{types → type}/Fee.sol +16 -8
- package/contracts/{types → type}/NftIdSet.sol +1 -1
- package/contracts/{types → type}/ObjectType.sol +10 -5
- package/contracts/{types → type}/PayoutId.sol +33 -5
- package/contracts/{types → type}/RoleId.sol +50 -8
- package/contracts/{types → type}/StateId.sol +6 -2
- package/contracts/{types → type}/Timestamp.sol +5 -0
- package/package.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1311
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -968
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1093
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1732
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -428
- 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 -1021
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -824
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -657
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
- package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.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/instance/InstanceAccessManager.sol +0 -522
- package/contracts/instance/base/ComponentService.sol +0 -134
- package/contracts/instance/service/ApplicationService.sol +0 -350
- package/contracts/instance/service/BundleService.sol +0 -336
- package/contracts/instance/service/BundleServiceManager.sol +0 -51
- package/contracts/instance/service/ClaimService.sol +0 -151
- package/contracts/instance/service/DistributionService.sol +0 -467
- package/contracts/instance/service/DistributionServiceManager.sol +0 -51
- package/contracts/instance/service/IBundleService.sol +0 -62
- package/contracts/instance/service/IClaimService.sol +0 -61
- package/contracts/instance/service/IPoolService.sol +0 -35
- package/contracts/instance/service/PolicyService.sol +0 -403
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -220
- package/contracts/instance/service/PoolServiceManager.sol +0 -51
- package/contracts/instance/service/ProductService.sol +0 -241
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -216
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -25
- package/contracts/test/TestToken.sol +0 -26
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/test/Usdc.sol +0 -26
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NumberId.sol +0 -52
- /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
- /package/contracts/{types → type}/AddressSet.sol +0 -0
- /package/contracts/{types → type}/Blocknumber.sol +0 -0
- /package/contracts/{types → type}/DistributorType.sol +0 -0
- /package/contracts/{types → type}/Key32.sol +0 -0
- /package/contracts/{types → type}/NftId.sol +0 -0
- /package/contracts/{types → type}/Referral.sol +0 -0
- /package/contracts/{types → type}/RiskId.sol +0 -0
- /package/contracts/{types → type}/Seconds.sol +0 -0
- /package/contracts/{types → type}/UFixed.sol +0 -0
- /package/contracts/{types → type}/Version.sol +0 -0
@@ -0,0 +1,354 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
|
+
import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
6
|
+
|
7
|
+
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, INSTANCE_SERVICE_ROLE, INSTANCE_OWNER_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
|
8
|
+
import {TimestampLib} from "../type/Timestamp.sol";
|
9
|
+
import {NftId} from "../type/NftId.sol";
|
10
|
+
|
11
|
+
import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
|
12
|
+
|
13
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
14
|
+
|
15
|
+
import {IInstance} from "./IInstance.sol";
|
16
|
+
import {IAccess} from "./module/IAccess.sol";
|
17
|
+
|
18
|
+
contract InstanceAdmin is
|
19
|
+
AccessManagedUpgradeable
|
20
|
+
{
|
21
|
+
using RoleIdLib for RoleId;
|
22
|
+
|
23
|
+
string public constant INSTANCE_ROLE_NAME = "InstanceRole";
|
24
|
+
string public constant INSTANCE_OWNER_ROLE_NAME = "InstanceOwnerRole";
|
25
|
+
|
26
|
+
string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
|
27
|
+
|
28
|
+
uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
|
29
|
+
uint32 public constant EXECUTION_DELAY = 0;
|
30
|
+
|
31
|
+
mapping(address target => IAccess.Type) _targetType;
|
32
|
+
mapping(RoleId roleId => IAccess.Type) _roleType;
|
33
|
+
uint64 _idNext;
|
34
|
+
|
35
|
+
AccessManagerExtendedInitializeable internal _accessManager;
|
36
|
+
IInstance _instance;
|
37
|
+
IRegistry internal _registry;
|
38
|
+
|
39
|
+
// instance owner role is granted upon instance nft minting in callback function
|
40
|
+
// assume this contract is already a member of ADMIN_ROLE, the only member
|
41
|
+
function initialize(address instanceAddress) external initializer
|
42
|
+
{
|
43
|
+
IInstance instance = IInstance(instanceAddress);
|
44
|
+
IRegistry registry = instance.getRegistry();
|
45
|
+
address authority = instance.authority();
|
46
|
+
|
47
|
+
__AccessManaged_init(authority);
|
48
|
+
|
49
|
+
_accessManager = AccessManagerExtendedInitializeable(authority);
|
50
|
+
_instance = instance;
|
51
|
+
_registry = registry;
|
52
|
+
_idNext = CUSTOM_ROLE_ID_MIN;
|
53
|
+
|
54
|
+
// minimum configuration required for nft interception
|
55
|
+
_createRole(INSTANCE_ROLE(), INSTANCE_ROLE_NAME, IAccess.Type.Core);
|
56
|
+
_createRole(INSTANCE_OWNER_ROLE(), INSTANCE_OWNER_ROLE_NAME, IAccess.Type.Core);
|
57
|
+
_grantRole(INSTANCE_ROLE(), address(instance));
|
58
|
+
|
59
|
+
_createTarget(address(this), INSTANCE_ADMIN_TARGET_NAME, IAccess.Type.Core);
|
60
|
+
bytes4[] memory instanceAdminInstanceSelectors = new bytes4[](1);
|
61
|
+
instanceAdminInstanceSelectors[0] = this.transferInstanceOwnerRole.selector;
|
62
|
+
_setTargetFunctionRole(address(this), instanceAdminInstanceSelectors, INSTANCE_ROLE());
|
63
|
+
}
|
64
|
+
|
65
|
+
//--- Role ------------------------------------------------------//
|
66
|
+
// ADMIN_ROLE
|
67
|
+
// assume all core roles are known at deployment time
|
68
|
+
// assume core roles are set and granted only during instance cloning
|
69
|
+
// assume core roles are never revoked -> core roles admin is never active after intialization
|
70
|
+
function createCoreRole(RoleId roleId, string memory name)
|
71
|
+
external
|
72
|
+
restricted()
|
73
|
+
{
|
74
|
+
_createRole(roleId, name, IAccess.Type.Core);
|
75
|
+
}
|
76
|
+
|
77
|
+
// ADMIN_ROLE
|
78
|
+
// assume gif roles can be revoked
|
79
|
+
// assume admin is INSTANCE_OWNER_ROLE or INSTANCE_ROLE
|
80
|
+
function createGifRole(RoleId roleId, string memory name, RoleId admin)
|
81
|
+
external
|
82
|
+
restricted()
|
83
|
+
{
|
84
|
+
_createRole(roleId, name, IAccess.Type.Gif);
|
85
|
+
_setRoleAdmin(roleId, admin);
|
86
|
+
}
|
87
|
+
|
88
|
+
// INSTANCE_OWNER_ROLE
|
89
|
+
// TODO specify how many owners role can have -> many roles MUST have exactly 1 member?
|
90
|
+
function createRole(string memory roleName, string memory adminName)
|
91
|
+
external
|
92
|
+
restricted()
|
93
|
+
returns(RoleId roleId, RoleId admin)
|
94
|
+
{
|
95
|
+
(roleId, admin) = _getNextCustomRoleId();
|
96
|
+
|
97
|
+
_createRole(roleId, roleName, IAccess.Type.Custom);
|
98
|
+
_createRole(admin, adminName, IAccess.Type.Custom);
|
99
|
+
|
100
|
+
_setRoleAdmin(roleId, admin);
|
101
|
+
_setRoleAdmin(admin, INSTANCE_OWNER_ROLE());
|
102
|
+
}
|
103
|
+
|
104
|
+
// ADMIN_ROLE
|
105
|
+
// assume used by instance service only during instance cloning
|
106
|
+
// assume used only by this.createRole(), this.createGifRole() afterwards
|
107
|
+
function setRoleAdmin(RoleId roleId, RoleId admin)
|
108
|
+
public
|
109
|
+
restricted()
|
110
|
+
{
|
111
|
+
_setRoleAdmin(roleId, admin);
|
112
|
+
}
|
113
|
+
|
114
|
+
// INSTANCE_ROLE
|
115
|
+
function transferInstanceOwnerRole(address from, address to) external restricted() {
|
116
|
+
// temp pre transfer checks
|
117
|
+
assert(_accessManager.getRoleMembers(INSTANCE_ROLE().toInt()) == 1);
|
118
|
+
(bool hasRole, uint executionDelay) = _accessManager.hasRole(INSTANCE_ROLE().toInt(), address(_instance));
|
119
|
+
assert(hasRole);
|
120
|
+
assert(executionDelay == 0);
|
121
|
+
assert(_accessManager.getRoleAdmin(INSTANCE_OWNER_ROLE().toInt()) == ADMIN_ROLE().toInt());
|
122
|
+
if(from != address(0)) { // nft transfer
|
123
|
+
assert(_accessManager.getRoleMembers(INSTANCE_OWNER_ROLE().toInt()) == 1);
|
124
|
+
} else { // nft minting
|
125
|
+
assert(_accessManager.getRoleMembers(INSTANCE_OWNER_ROLE().toInt()) == 0);
|
126
|
+
}
|
127
|
+
|
128
|
+
// transfer
|
129
|
+
assert(from != to);
|
130
|
+
_grantRole(INSTANCE_OWNER_ROLE(), to);
|
131
|
+
if(from != address(0)) { // nft transfer
|
132
|
+
_revokeRole(INSTANCE_OWNER_ROLE(), from);
|
133
|
+
}
|
134
|
+
|
135
|
+
// temp post transfer checks
|
136
|
+
assert(_accessManager.getRoleMembers(INSTANCE_OWNER_ROLE().toInt()) == 1);// temp
|
137
|
+
(hasRole, executionDelay) = _accessManager.hasRole(INSTANCE_OWNER_ROLE().toInt(), to);
|
138
|
+
assert(hasRole);
|
139
|
+
assert(executionDelay == 0);
|
140
|
+
}
|
141
|
+
|
142
|
+
function hasRole(RoleId roleId, address account)
|
143
|
+
external
|
144
|
+
view
|
145
|
+
returns (bool accountHasRole)
|
146
|
+
{
|
147
|
+
(accountHasRole, ) = _accessManager.hasRole(roleId.toInt(), account);
|
148
|
+
}
|
149
|
+
|
150
|
+
//--- Target ------------------------------------------------------//
|
151
|
+
// ADMIN_ROLE
|
152
|
+
// assume some core targets are registred (instance) while others are not (instance accesss manager, instance reader, bundle manager)
|
153
|
+
function createCoreTarget(address target, string memory name) external restricted() {
|
154
|
+
_createTarget(target, name, IAccess.Type.Core);
|
155
|
+
}
|
156
|
+
// INSTANCE_SERVICE_ROLE
|
157
|
+
// TODO check for instance mismatch?
|
158
|
+
function createGifTarget(address target, string memory name) external restricted()
|
159
|
+
{
|
160
|
+
if(!_registry.isRegistered(target)) {
|
161
|
+
revert IAccess.ErrorIAccessTargetNotRegistered(target);
|
162
|
+
}
|
163
|
+
|
164
|
+
_createTarget(target, name, IAccess.Type.Gif);
|
165
|
+
}
|
166
|
+
// INSTANCE_OWNER_ROLE
|
167
|
+
// assume custom target.authority() is constant -> target MUST not be used with different instance access manager
|
168
|
+
// assume custom target can not be registered as component -> each service which is doing component registration MUST register a gif target
|
169
|
+
// assume custom target can not be registered as instance or service -> why?
|
170
|
+
// TODO check target associated with instance owner or instance or instance components or components helpers
|
171
|
+
function createTarget(address target, string memory name) external restricted()
|
172
|
+
{
|
173
|
+
_createTarget(target, name, IAccess.Type.Custom);
|
174
|
+
}
|
175
|
+
|
176
|
+
// TODO instance owner locks component instead of revoking it access to the instance...
|
177
|
+
function setTargetLockedByService(address target, bool locked)
|
178
|
+
external
|
179
|
+
restricted // INSTANCE_SERVICE_ROLE
|
180
|
+
{
|
181
|
+
_setTargetLocked(target, locked);
|
182
|
+
}
|
183
|
+
|
184
|
+
function setTargetLockedByInstance(address target, bool locked)
|
185
|
+
external
|
186
|
+
restricted // INSTANCE_ROLE
|
187
|
+
{
|
188
|
+
_setTargetLocked(target, locked);
|
189
|
+
}
|
190
|
+
|
191
|
+
|
192
|
+
// allowed combinations of roles and targets:
|
193
|
+
//1) set core role for core target
|
194
|
+
//2) set gif role for gif target
|
195
|
+
//3) set custom role for gif target
|
196
|
+
//4) set custom role for custom target
|
197
|
+
|
198
|
+
// ADMIN_ROLE if used only during initialization, works with:
|
199
|
+
// any roles for any targets
|
200
|
+
// INSTANCE_SERVICE_ROLE if used not only during initilization, works with:
|
201
|
+
// core roles for core targets
|
202
|
+
// gif roles for gif targets
|
203
|
+
function setCoreTargetFunctionRole(
|
204
|
+
string memory targetName,
|
205
|
+
bytes4[] calldata selectors,
|
206
|
+
RoleId roleId
|
207
|
+
)
|
208
|
+
public
|
209
|
+
virtual
|
210
|
+
restricted
|
211
|
+
{
|
212
|
+
address target = _accessManager.getTargetAddress(targetName);
|
213
|
+
// not custom target
|
214
|
+
if(_targetType[target] == IAccess.Type.Custom) {
|
215
|
+
revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Custom);
|
216
|
+
}
|
217
|
+
|
218
|
+
// not custom role
|
219
|
+
if(_roleType[roleId] == IAccess.Type.Custom) {
|
220
|
+
revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Custom);
|
221
|
+
}
|
222
|
+
|
223
|
+
_setTargetFunctionRole(target, selectors, roleId);
|
224
|
+
}
|
225
|
+
|
226
|
+
// INSTANCE_OWNER_ROLE
|
227
|
+
// gif role for gif target
|
228
|
+
// gif role for custom target
|
229
|
+
// custom role for gif target -> need to prohibit
|
230
|
+
// custom role for custom target
|
231
|
+
// TODO instance owner can mess with gif target (component) -> e.g. set custom role for function intendent to work with gif role
|
232
|
+
function setTargetFunctionRole(
|
233
|
+
string memory targetName,
|
234
|
+
bytes4[] calldata selectors,
|
235
|
+
RoleId roleId// string memory roleName
|
236
|
+
)
|
237
|
+
public
|
238
|
+
virtual
|
239
|
+
restricted()
|
240
|
+
{
|
241
|
+
address target = _accessManager.getTargetAddress(targetName);
|
242
|
+
|
243
|
+
// not core target
|
244
|
+
if(_targetType[target] == IAccess.Type.Core) {
|
245
|
+
revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Core);
|
246
|
+
}
|
247
|
+
|
248
|
+
// not core role
|
249
|
+
if(_roleType[roleId] == IAccess.Type.Core) {
|
250
|
+
revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
|
251
|
+
}
|
252
|
+
|
253
|
+
_setTargetFunctionRole(target, selectors, roleId);
|
254
|
+
}
|
255
|
+
|
256
|
+
function _setTargetFunctionRole(address target, bytes4[] memory selectors, RoleId roleId) internal {
|
257
|
+
_accessManager.setTargetFunctionRole(target, selectors, roleId.toInt());
|
258
|
+
}
|
259
|
+
|
260
|
+
function isTargetLocked(address target) public view returns (bool locked) {
|
261
|
+
return _accessManager.isTargetClosed(target);
|
262
|
+
}
|
263
|
+
|
264
|
+
//--- Role internal view/pure functions --------------------------------------//
|
265
|
+
function _createRole(RoleId roleId, string memory name, IAccess.Type rtype)
|
266
|
+
internal
|
267
|
+
{
|
268
|
+
_validateRole(roleId, rtype);
|
269
|
+
|
270
|
+
_roleType[roleId] = rtype;
|
271
|
+
_accessManager.createRole(roleId.toInt(), name);
|
272
|
+
//emit LogRoleCreation(roleId, name, rtype);
|
273
|
+
}
|
274
|
+
|
275
|
+
function _validateRole(RoleId roleId, IAccess.Type rtype)
|
276
|
+
internal
|
277
|
+
view
|
278
|
+
{
|
279
|
+
uint roleIdInt = roleId.toInt();
|
280
|
+
if(rtype == IAccess.Type.Custom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
|
281
|
+
revert IAccess.ErrorIAccessRoleIdTooSmall(roleId);
|
282
|
+
}
|
283
|
+
|
284
|
+
if(
|
285
|
+
rtype != IAccess.Type.Custom &&
|
286
|
+
roleIdInt >= CUSTOM_ROLE_ID_MIN &&
|
287
|
+
roleIdInt != PUBLIC_ROLE().toInt())
|
288
|
+
{
|
289
|
+
revert IAccess.ErrorIAccessRoleIdTooBig(roleId);
|
290
|
+
}
|
291
|
+
}
|
292
|
+
|
293
|
+
function _grantRole(RoleId roleId, address account) internal {
|
294
|
+
_accessManager.grantRole(roleId.toInt(), account, EXECUTION_DELAY);
|
295
|
+
}
|
296
|
+
|
297
|
+
function _revokeRole(RoleId roleId, address member)
|
298
|
+
internal
|
299
|
+
returns(bool revoked)
|
300
|
+
{
|
301
|
+
_accessManager.revokeRole(roleId.toInt(), member);
|
302
|
+
}
|
303
|
+
|
304
|
+
function _setRoleAdmin(RoleId roleId, RoleId admin) internal {
|
305
|
+
if(_roleType[roleId] == IAccess.Type.Core) {
|
306
|
+
revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
|
307
|
+
}
|
308
|
+
|
309
|
+
_accessManager.setRoleAdmin(roleId.toInt(), admin.toInt());
|
310
|
+
}
|
311
|
+
|
312
|
+
function _getNextCustomRoleId()
|
313
|
+
internal
|
314
|
+
returns(RoleId roleId, RoleId admin)
|
315
|
+
{
|
316
|
+
uint64 roleIdInt = _idNext;
|
317
|
+
uint64 adminInt = roleIdInt + 1;
|
318
|
+
|
319
|
+
_idNext = roleIdInt + 2;
|
320
|
+
|
321
|
+
roleId = RoleIdLib.toRoleId(roleIdInt);
|
322
|
+
admin = RoleIdLib.toRoleId(adminInt);
|
323
|
+
}
|
324
|
+
|
325
|
+
//--- Target internal view/pure functions --------------------------------------//
|
326
|
+
function _createTarget(address target, string memory name, IAccess.Type ttype)
|
327
|
+
internal
|
328
|
+
{
|
329
|
+
_validateTarget(target, ttype);
|
330
|
+
_targetType[target] = ttype;
|
331
|
+
_accessManager.createTarget(target, name);
|
332
|
+
//emit LogTargetCreation(target, name, ttype, isLocked);
|
333
|
+
}
|
334
|
+
|
335
|
+
function _validateTarget(address target, IAccess.Type ttype)
|
336
|
+
internal
|
337
|
+
view
|
338
|
+
{}
|
339
|
+
|
340
|
+
// IMPORTANT: instance access manager MUST be of Core type -> otherwise can be locked forever
|
341
|
+
function _setTargetLocked(address target, bool locked) internal
|
342
|
+
{
|
343
|
+
IAccess.Type targetType = _targetType[target];
|
344
|
+
|
345
|
+
if(
|
346
|
+
targetType == IAccess.Type.NotInitialized ||
|
347
|
+
targetType == IAccess.Type.Core
|
348
|
+
) {
|
349
|
+
revert IAccess.ErrorIAccessTargetTypeInvalid(target, targetType);
|
350
|
+
}
|
351
|
+
|
352
|
+
_accessManager.setTargetClosed(target, locked);
|
353
|
+
}
|
354
|
+
}
|
@@ -0,0 +1,320 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
|
5
|
+
import {INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../type/ObjectType.sol";
|
6
|
+
import {VersionPart} from "../type/Version.sol";
|
7
|
+
|
8
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
+
|
10
|
+
import {Instance} from "./Instance.sol";
|
11
|
+
import {InstanceAdmin} from "./InstanceAdmin.sol";
|
12
|
+
import {InstanceReader} from "./InstanceReader.sol";
|
13
|
+
import {BundleManager} from "./BundleManager.sol";
|
14
|
+
import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
|
15
|
+
import {InstanceStore} from "./InstanceStore.sol";
|
16
|
+
|
17
|
+
|
18
|
+
library InstanceAuthorizationsLib
|
19
|
+
{
|
20
|
+
function grantInitialAuthorizations(
|
21
|
+
AccessManagerExtendedInitializeable accessManager,
|
22
|
+
InstanceAdmin instanceAdmin,
|
23
|
+
Instance instance,
|
24
|
+
BundleManager bundleManager,
|
25
|
+
InstanceStore instanceStore,
|
26
|
+
address instanceOwner,
|
27
|
+
IRegistry registry,
|
28
|
+
VersionPart majorVersion)
|
29
|
+
external
|
30
|
+
{
|
31
|
+
_createRoles(instanceAdmin);
|
32
|
+
_createTargets(instanceAdmin, instance, bundleManager, instanceStore);
|
33
|
+
_grantDistributionServiceAuthorizations(accessManager, instanceAdmin, instanceStore, registry, majorVersion);
|
34
|
+
_grantPoolServiceAuthorizations(accessManager, instanceAdmin, instanceStore, registry, majorVersion);
|
35
|
+
_grantProductServiceAuthorizations(accessManager, instanceAdmin, instanceStore, registry, majorVersion);
|
36
|
+
_grantApplicationServiceAuthorizations(accessManager, instanceAdmin, instanceStore, registry, majorVersion);
|
37
|
+
_grantPolicyServiceAuthorizations(accessManager, instanceAdmin, instanceStore, registry, majorVersion);
|
38
|
+
_grantClaimServiceAuthorizations(accessManager, instanceAdmin, instanceStore, registry, majorVersion);
|
39
|
+
_grantBundleServiceAuthorizations(accessManager, instanceAdmin, instanceStore, bundleManager, registry, majorVersion);
|
40
|
+
_grantInstanceServiceAuthorizations(accessManager, instanceAdmin, instance, registry, majorVersion);
|
41
|
+
_grantInstanceAuthorizations(accessManager, instanceAdmin, instance, registry, majorVersion);
|
42
|
+
_grantInstanceOwnerAuthorizations(instanceAdmin, instance, registry, majorVersion);
|
43
|
+
}
|
44
|
+
|
45
|
+
function _createRoles(InstanceAdmin instanceAdmin) private {
|
46
|
+
// default roles controlled by ADMIN_ROLE -> core roles
|
47
|
+
// all set/granted only once during cloning (the only exception is INSTANCE_OWNER_ROLE, hooked to instance nft)
|
48
|
+
instanceAdmin.createCoreRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
|
49
|
+
instanceAdmin.createCoreRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
|
50
|
+
instanceAdmin.createCoreRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
|
51
|
+
instanceAdmin.createCoreRole(APPLICATION_SERVICE_ROLE(), "ApplicationServiceRole");
|
52
|
+
instanceAdmin.createCoreRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
|
53
|
+
instanceAdmin.createCoreRole(CLAIM_SERVICE_ROLE(), "ClaimServiceRole");
|
54
|
+
instanceAdmin.createCoreRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
|
55
|
+
instanceAdmin.createCoreRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
|
56
|
+
// default roles controlled by INSTANCE_OWNER_ROLE -> gif roles
|
57
|
+
instanceAdmin.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole", INSTANCE_OWNER_ROLE());
|
58
|
+
instanceAdmin.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole", INSTANCE_OWNER_ROLE());
|
59
|
+
instanceAdmin.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole", INSTANCE_OWNER_ROLE());
|
60
|
+
}
|
61
|
+
|
62
|
+
function _createTargets(
|
63
|
+
InstanceAdmin instanceAdmin,
|
64
|
+
Instance instance,
|
65
|
+
BundleManager bundleManager,
|
66
|
+
InstanceStore instanceStore)
|
67
|
+
private
|
68
|
+
{
|
69
|
+
instanceAdmin.createCoreTarget(address(instance), "Instance");
|
70
|
+
//instanceAdmin.createCoreTarget(address(instanceAdmin), "InstanceAdmin");
|
71
|
+
instanceAdmin.createCoreTarget(address(bundleManager), "BundleManager");
|
72
|
+
instanceAdmin.createCoreTarget(address(instanceStore), "InstanceStore");
|
73
|
+
}
|
74
|
+
|
75
|
+
function _grantDistributionServiceAuthorizations(
|
76
|
+
AccessManagerExtendedInitializeable accessManager,
|
77
|
+
InstanceAdmin instanceAdmin,
|
78
|
+
InstanceStore instanceStore,
|
79
|
+
IRegistry registry,
|
80
|
+
VersionPart majorVersion)
|
81
|
+
private
|
82
|
+
{
|
83
|
+
// configure authorization for distribution service on instance
|
84
|
+
address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), majorVersion);
|
85
|
+
accessManager.grantRole(DISTRIBUTION_SERVICE_ROLE().toInt(), distributionServiceAddress, 0);
|
86
|
+
bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
|
87
|
+
instanceDistributionServiceSelectors[0] = instanceStore.createDistributionSetup.selector;
|
88
|
+
instanceDistributionServiceSelectors[1] = instanceStore.updateDistributionSetup.selector;
|
89
|
+
instanceDistributionServiceSelectors[2] = instanceStore.createDistributorType.selector;
|
90
|
+
instanceDistributionServiceSelectors[3] = instanceStore.updateDistributorType.selector;
|
91
|
+
instanceDistributionServiceSelectors[4] = instanceStore.updateDistributorTypeState.selector;
|
92
|
+
instanceDistributionServiceSelectors[5] = instanceStore.createDistributor.selector;
|
93
|
+
instanceDistributionServiceSelectors[6] = instanceStore.updateDistributor.selector;
|
94
|
+
instanceDistributionServiceSelectors[7] = instanceStore.updateDistributorState.selector;
|
95
|
+
instanceDistributionServiceSelectors[8] = instanceStore.createReferral.selector;
|
96
|
+
instanceDistributionServiceSelectors[9] = instanceStore.updateReferral.selector;
|
97
|
+
instanceDistributionServiceSelectors[10] = instanceStore.updateReferralState.selector;
|
98
|
+
instanceAdmin.setCoreTargetFunctionRole(
|
99
|
+
"InstanceStore",
|
100
|
+
instanceDistributionServiceSelectors,
|
101
|
+
DISTRIBUTION_SERVICE_ROLE());
|
102
|
+
}
|
103
|
+
|
104
|
+
function _grantPoolServiceAuthorizations(
|
105
|
+
AccessManagerExtendedInitializeable accessManager,
|
106
|
+
InstanceAdmin instanceAdmin,
|
107
|
+
InstanceStore instanceStore,
|
108
|
+
IRegistry registry,
|
109
|
+
VersionPart majorVersion)
|
110
|
+
private
|
111
|
+
{
|
112
|
+
// configure authorization for pool service on instance
|
113
|
+
address poolServiceAddress = registry.getServiceAddress(POOL(), majorVersion);
|
114
|
+
accessManager.grantRole(POOL_SERVICE_ROLE().toInt(), address(poolServiceAddress), 0);
|
115
|
+
bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
|
116
|
+
instancePoolServiceSelectors[0] = instanceStore.createPoolSetup.selector;
|
117
|
+
instancePoolServiceSelectors[1] = instanceStore.updatePoolSetup.selector;
|
118
|
+
instanceAdmin.setCoreTargetFunctionRole(
|
119
|
+
"InstanceStore",
|
120
|
+
instancePoolServiceSelectors,
|
121
|
+
POOL_SERVICE_ROLE());
|
122
|
+
}
|
123
|
+
|
124
|
+
function _grantProductServiceAuthorizations(
|
125
|
+
AccessManagerExtendedInitializeable accessManager,
|
126
|
+
InstanceAdmin instanceAdmin,
|
127
|
+
InstanceStore instanceStore,
|
128
|
+
IRegistry registry,
|
129
|
+
VersionPart majorVersion)
|
130
|
+
private
|
131
|
+
{
|
132
|
+
// configure authorization for product service on instance
|
133
|
+
address productServiceAddress = registry.getServiceAddress(PRODUCT(), majorVersion);
|
134
|
+
accessManager.grantRole(PRODUCT_SERVICE_ROLE().toInt(), address(productServiceAddress), 0);
|
135
|
+
bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
|
136
|
+
instanceProductServiceSelectors[0] = instanceStore.createProductSetup.selector;
|
137
|
+
instanceProductServiceSelectors[1] = instanceStore.updateProductSetup.selector;
|
138
|
+
instanceProductServiceSelectors[2] = instanceStore.createRisk.selector;
|
139
|
+
instanceProductServiceSelectors[3] = instanceStore.updateRisk.selector;
|
140
|
+
instanceProductServiceSelectors[4] = instanceStore.updateRiskState.selector;
|
141
|
+
instanceAdmin.setCoreTargetFunctionRole(
|
142
|
+
"InstanceStore",
|
143
|
+
instanceProductServiceSelectors,
|
144
|
+
PRODUCT_SERVICE_ROLE());
|
145
|
+
}
|
146
|
+
|
147
|
+
function _grantApplicationServiceAuthorizations(
|
148
|
+
AccessManagerExtendedInitializeable accessManager,
|
149
|
+
InstanceAdmin instanceAdmin,
|
150
|
+
InstanceStore instanceStore,
|
151
|
+
IRegistry registry,
|
152
|
+
VersionPart majorVersion)
|
153
|
+
private
|
154
|
+
{
|
155
|
+
// configure authorization for application services on instance
|
156
|
+
address applicationServiceAddress = registry.getServiceAddress(APPLICATION(), majorVersion);
|
157
|
+
accessManager.grantRole(APPLICATION_SERVICE_ROLE().toInt(), applicationServiceAddress, 0);
|
158
|
+
bytes4[] memory instanceApplicationServiceSelectors = new bytes4[](3);
|
159
|
+
instanceApplicationServiceSelectors[0] = instanceStore.createApplication.selector;
|
160
|
+
instanceApplicationServiceSelectors[1] = instanceStore.updateApplication.selector;
|
161
|
+
instanceApplicationServiceSelectors[2] = instanceStore.updateApplicationState.selector;
|
162
|
+
instanceAdmin.setCoreTargetFunctionRole(
|
163
|
+
"InstanceStore",
|
164
|
+
instanceApplicationServiceSelectors,
|
165
|
+
APPLICATION_SERVICE_ROLE());
|
166
|
+
}
|
167
|
+
|
168
|
+
function _grantPolicyServiceAuthorizations(
|
169
|
+
AccessManagerExtendedInitializeable accessManager,
|
170
|
+
InstanceAdmin instanceAdmin,
|
171
|
+
InstanceStore instanceStore,
|
172
|
+
IRegistry registry,
|
173
|
+
VersionPart majorVersion)
|
174
|
+
private
|
175
|
+
{
|
176
|
+
// configure authorization for policy services on instance
|
177
|
+
address policyServiceAddress = registry.getServiceAddress(POLICY(), majorVersion);
|
178
|
+
accessManager.grantRole(POLICY_SERVICE_ROLE().toInt(), policyServiceAddress, 0);
|
179
|
+
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](2);
|
180
|
+
instancePolicyServiceSelectors[0] = instanceStore.updatePolicy.selector;
|
181
|
+
instancePolicyServiceSelectors[1] = instanceStore.updatePolicyState.selector;
|
182
|
+
instanceAdmin.setCoreTargetFunctionRole(
|
183
|
+
"InstanceStore",
|
184
|
+
instancePolicyServiceSelectors,
|
185
|
+
POLICY_SERVICE_ROLE());
|
186
|
+
}
|
187
|
+
|
188
|
+
function _grantClaimServiceAuthorizations(
|
189
|
+
AccessManagerExtendedInitializeable accessManager,
|
190
|
+
InstanceAdmin instanceAdmin,
|
191
|
+
InstanceStore instanceStore,
|
192
|
+
IRegistry registry,
|
193
|
+
VersionPart majorVersion)
|
194
|
+
private
|
195
|
+
{
|
196
|
+
// configure authorization for claim/payout services on instance
|
197
|
+
address claimServiceAddress = registry.getServiceAddress(CLAIM(), majorVersion);
|
198
|
+
accessManager.grantRole(CLAIM_SERVICE_ROLE().toInt(), claimServiceAddress, 0);
|
199
|
+
|
200
|
+
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](1);
|
201
|
+
instancePolicyServiceSelectors[0] = instanceStore.updatePolicyClaims.selector;
|
202
|
+
instanceAdmin.setCoreTargetFunctionRole(
|
203
|
+
"InstanceStore",
|
204
|
+
instancePolicyServiceSelectors,
|
205
|
+
CLAIM_SERVICE_ROLE());
|
206
|
+
|
207
|
+
bytes4[] memory instanceClaimServiceSelectors = new bytes4[](4);
|
208
|
+
instanceClaimServiceSelectors[0] = instanceStore.createClaim.selector;
|
209
|
+
instanceClaimServiceSelectors[1] = instanceStore.updateClaim.selector;
|
210
|
+
instanceClaimServiceSelectors[2] = instanceStore.createPayout.selector;
|
211
|
+
instanceClaimServiceSelectors[3] = instanceStore.updatePayout.selector;
|
212
|
+
instanceAdmin.setCoreTargetFunctionRole(
|
213
|
+
"InstanceStore",
|
214
|
+
instanceClaimServiceSelectors,
|
215
|
+
CLAIM_SERVICE_ROLE());
|
216
|
+
}
|
217
|
+
|
218
|
+
function _grantBundleServiceAuthorizations(
|
219
|
+
AccessManagerExtendedInitializeable accessManager,
|
220
|
+
InstanceAdmin instanceAdmin,
|
221
|
+
InstanceStore instanceStore,
|
222
|
+
BundleManager bundleManager,
|
223
|
+
IRegistry registry,
|
224
|
+
VersionPart majorVersion)
|
225
|
+
private
|
226
|
+
{
|
227
|
+
// configure authorization for bundle service on instance
|
228
|
+
address bundleServiceAddress = registry.getServiceAddress(BUNDLE(), majorVersion);
|
229
|
+
accessManager.grantRole(BUNDLE_SERVICE_ROLE().toInt(), address(bundleServiceAddress), 0);
|
230
|
+
bytes4[] memory instanceBundleServiceSelectors = new bytes4[](3);
|
231
|
+
instanceBundleServiceSelectors[0] = instanceStore.createBundle.selector;
|
232
|
+
instanceBundleServiceSelectors[1] = instanceStore.updateBundle.selector;
|
233
|
+
instanceBundleServiceSelectors[2] = instanceStore.updateBundleState.selector;
|
234
|
+
instanceAdmin.setCoreTargetFunctionRole(
|
235
|
+
"InstanceStore",
|
236
|
+
instanceBundleServiceSelectors,
|
237
|
+
BUNDLE_SERVICE_ROLE());
|
238
|
+
|
239
|
+
// configure authorization for bundle service on bundle manager
|
240
|
+
bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
|
241
|
+
bundleManagerBundleServiceSelectors[0] = bundleManager.linkPolicy.selector;
|
242
|
+
bundleManagerBundleServiceSelectors[1] = bundleManager.unlinkPolicy.selector;
|
243
|
+
bundleManagerBundleServiceSelectors[2] = bundleManager.add.selector;
|
244
|
+
bundleManagerBundleServiceSelectors[3] = bundleManager.lock.selector;
|
245
|
+
bundleManagerBundleServiceSelectors[4] = bundleManager.unlock.selector;
|
246
|
+
instanceAdmin.setCoreTargetFunctionRole(
|
247
|
+
"BundleManager",
|
248
|
+
bundleManagerBundleServiceSelectors,
|
249
|
+
BUNDLE_SERVICE_ROLE());
|
250
|
+
}
|
251
|
+
|
252
|
+
function _grantInstanceServiceAuthorizations(
|
253
|
+
AccessManagerExtendedInitializeable accessManager,
|
254
|
+
InstanceAdmin instanceAdmin,
|
255
|
+
Instance instance,
|
256
|
+
IRegistry registry,
|
257
|
+
VersionPart majorVersion)
|
258
|
+
private
|
259
|
+
{
|
260
|
+
// configure authorization for instance service on instance
|
261
|
+
address instanceServiceAddress = registry.getServiceAddress(INSTANCE(), majorVersion);
|
262
|
+
accessManager.grantRole(INSTANCE_SERVICE_ROLE().toInt(), instanceServiceAddress, 0);
|
263
|
+
bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
|
264
|
+
instanceInstanceServiceSelectors[0] = instance.setInstanceReader.selector;
|
265
|
+
instanceAdmin.setCoreTargetFunctionRole(
|
266
|
+
"Instance",
|
267
|
+
instanceInstanceServiceSelectors,
|
268
|
+
INSTANCE_SERVICE_ROLE());
|
269
|
+
|
270
|
+
// configure authorizations for instance service on instance access manager
|
271
|
+
bytes4[] memory instanceAdminInstanceServiceSelectors = new bytes4[](3);
|
272
|
+
instanceAdminInstanceServiceSelectors[0] = instanceAdmin.createGifTarget.selector;
|
273
|
+
instanceAdminInstanceServiceSelectors[1] = instanceAdmin.setTargetLockedByService.selector;
|
274
|
+
instanceAdminInstanceServiceSelectors[2] = instanceAdmin.setCoreTargetFunctionRole.selector;
|
275
|
+
instanceAdmin.setCoreTargetFunctionRole(
|
276
|
+
"InstanceAdmin",
|
277
|
+
instanceAdminInstanceServiceSelectors,
|
278
|
+
INSTANCE_SERVICE_ROLE());
|
279
|
+
}
|
280
|
+
|
281
|
+
function _grantInstanceAuthorizations(
|
282
|
+
AccessManagerExtendedInitializeable accessManager,
|
283
|
+
InstanceAdmin instanceAdmin,
|
284
|
+
Instance instance,
|
285
|
+
IRegistry registry,
|
286
|
+
VersionPart majorVersion)
|
287
|
+
private
|
288
|
+
{
|
289
|
+
// configure authorizations for instance on instance admin
|
290
|
+
bytes4[] memory instanceAdminInstanceSelectors = new bytes4[](4);
|
291
|
+
instanceAdminInstanceSelectors[0] = instanceAdmin.createRole.selector;
|
292
|
+
instanceAdminInstanceSelectors[1] = instanceAdmin.createTarget.selector;
|
293
|
+
instanceAdminInstanceSelectors[2] = instanceAdmin.setTargetFunctionRole.selector;
|
294
|
+
instanceAdminInstanceSelectors[3] = instanceAdmin.setTargetLockedByInstance.selector;
|
295
|
+
instanceAdmin.setCoreTargetFunctionRole(
|
296
|
+
"InstanceAdmin",
|
297
|
+
instanceAdminInstanceSelectors,
|
298
|
+
INSTANCE_ROLE());
|
299
|
+
}
|
300
|
+
|
301
|
+
function _grantInstanceOwnerAuthorizations(
|
302
|
+
InstanceAdmin instanceAdmin,
|
303
|
+
Instance instance,
|
304
|
+
IRegistry registry,
|
305
|
+
VersionPart majorVersion)
|
306
|
+
private
|
307
|
+
{
|
308
|
+
// configure authorization for instance owner on instance access manager
|
309
|
+
// instance owner role is granted/revoked ONLY by INSTANCE_ROLE
|
310
|
+
bytes4[] memory instanceInstanceOwnerSelectors = new bytes4[](4);
|
311
|
+
instanceInstanceOwnerSelectors[0] = instance.createRole.selector;
|
312
|
+
instanceInstanceOwnerSelectors[1] = instance.createTarget.selector;
|
313
|
+
instanceInstanceOwnerSelectors[2] = instance.setTargetFunctionRole.selector;
|
314
|
+
instanceInstanceOwnerSelectors[3] = instance.setTargetLocked.selector;
|
315
|
+
instanceAdmin.setCoreTargetFunctionRole(
|
316
|
+
"Instance",
|
317
|
+
instanceInstanceOwnerSelectors,
|
318
|
+
INSTANCE_OWNER_ROLE());
|
319
|
+
}
|
320
|
+
}
|