@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
@@ -1,100 +1,196 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
4
5
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
5
6
|
|
6
|
-
import {NftId} from "../
|
7
|
-
import {RoleId} from "../
|
8
|
-
import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../
|
9
|
-
import {VersionPart, VersionPartLib} from "../
|
10
|
-
import {Timestamp, TimestampLib} from "../
|
7
|
+
import {NftId} from "../type/NftId.sol";
|
8
|
+
import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
9
|
+
import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
|
10
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
11
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
11
12
|
|
12
13
|
import {IService} from "../shared/IService.sol";
|
14
|
+
import {AccessManagerExtendedWithDisableInitializeable} from "../shared/AccessManagerExtendedWithDisableInitializeable.sol";
|
13
15
|
|
14
16
|
import {IRegistry} from "./IRegistry.sol";
|
15
17
|
import {Registry} from "./Registry.sol";
|
16
18
|
import {IRegistryService} from "./IRegistryService.sol";
|
17
|
-
import {
|
19
|
+
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
18
20
|
|
19
21
|
|
20
22
|
contract ReleaseManager is AccessManaged
|
21
23
|
{
|
22
24
|
using ObjectTypeLib for ObjectType;
|
23
25
|
|
24
|
-
event LogReleaseCreation(
|
26
|
+
event LogReleaseCreation(
|
27
|
+
VersionPart version,
|
28
|
+
bytes32 salt,
|
29
|
+
address releaseAccessManager
|
30
|
+
);
|
25
31
|
event LogReleaseActivation(VersionPart version);
|
26
32
|
|
27
|
-
// createNextRelease
|
28
|
-
error NotRegistryService();
|
29
|
-
error UnexpectedServiceAuthority(address expected, address found);
|
30
33
|
|
34
|
+
// prepareRelease
|
35
|
+
error ErrorReleaseManagerReleaseEmpty();
|
36
|
+
error ErrorReleaseManagerReleaseAlreadyCreated(VersionPart version);
|
37
|
+
|
31
38
|
// registerService
|
32
|
-
error
|
39
|
+
error ErrorReleaseManagerNotService(IService service);
|
40
|
+
error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
|
33
41
|
|
34
42
|
// activateNextRelease
|
35
|
-
error
|
36
|
-
error
|
43
|
+
error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
|
44
|
+
error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
45
|
+
error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
|
37
46
|
|
38
|
-
//
|
39
|
-
error
|
40
|
-
error
|
41
|
-
error SelfRegistration();
|
42
|
-
error RegisterableOwnerIsRegistered();
|
47
|
+
// disableRelease
|
48
|
+
error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
|
49
|
+
error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
|
43
50
|
|
44
51
|
// _verifyService
|
45
|
-
error
|
46
|
-
error
|
47
|
-
|
48
|
-
// _verifyAndStoreConfig
|
49
|
-
error ConfigMissing();
|
50
|
-
error ConfigServiceDomainInvalid(uint configArrayIndex, ObjectType domain);
|
51
|
-
error ConfigSelectorZero(uint configArrayIndex);
|
52
|
-
error SelectorAlreadyExists(VersionPart releaseVersion, ObjectType serviceDomain);
|
53
|
-
|
54
|
-
|
55
|
-
RegistryAccessManager private immutable _accessManager;
|
56
|
-
IRegistry private immutable _registry;
|
52
|
+
error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
53
|
+
error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
57
54
|
|
58
|
-
|
59
|
-
|
60
|
-
|
55
|
+
// _verifyServiceInfo
|
56
|
+
error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
|
57
|
+
error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
|
58
|
+
error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
|
59
|
+
error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
|
60
|
+
error ErrorReleaseManagerServiceSelfRegistration(IService service);
|
61
|
+
error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
|
61
62
|
|
62
|
-
|
63
|
+
// _verifyServiceAuthorizations
|
64
|
+
error ErrorReleaseManagerServiceRoleInvalid(address service, RoleId role);
|
63
65
|
|
64
|
-
|
66
|
+
RegistryAdmin public immutable _admin;
|
67
|
+
address public immutable _releaseAccessManagerCodeAddress;
|
68
|
+
IRegistry public immutable _registry;
|
65
69
|
|
66
|
-
|
70
|
+
mapping(VersionPart version => AccessManagerExtendedWithDisableInitializeable accessManager) internal _releaseAccessManager;
|
71
|
+
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
72
|
+
mapping(address registryService => bool isActive) internal _active;// have access to registry
|
67
73
|
|
68
|
-
|
74
|
+
VersionPart immutable internal _initial;// first active version
|
75
|
+
VersionPart internal _latest;// latest active version
|
76
|
+
VersionPart internal _next;// version to create and activate
|
69
77
|
|
70
|
-
|
78
|
+
uint internal _awaitingRegistration; // "services left to register" counter
|
71
79
|
|
72
80
|
constructor(
|
73
|
-
|
74
|
-
VersionPart initialVersion
|
75
|
-
|
81
|
+
RegistryAdmin admin,
|
82
|
+
VersionPart initialVersion,
|
83
|
+
AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager)
|
84
|
+
AccessManaged(admin.authority())
|
76
85
|
{
|
77
|
-
|
78
|
-
|
79
|
-
_accessManager = accessManager;
|
80
|
-
|
86
|
+
_admin = admin;
|
81
87
|
_initial = initialVersion;
|
82
|
-
_next = initialVersion;
|
83
|
-
|
88
|
+
_next = VersionPartLib.toVersionPart(initialVersion.toInt() - 1);
|
84
89
|
_registry = new Registry();
|
90
|
+
_releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
|
85
91
|
}
|
86
92
|
|
87
|
-
/// @dev skips previous release if was not activated
|
88
|
-
function createNextRelease()
|
93
|
+
/// @dev skips previous release if it was not activated
|
94
|
+
function createNextRelease()
|
89
95
|
external
|
90
96
|
restricted // GIF_ADMIN_ROLE
|
97
|
+
returns(VersionPart version)
|
91
98
|
{
|
92
|
-
|
93
|
-
VersionPartLib.toVersionPart(_next.toInt() + 1);
|
94
|
-
// disallow registration of regular services for next version while registry service is not registered
|
99
|
+
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
95
100
|
_awaitingRegistration = 0;
|
101
|
+
}
|
102
|
+
|
103
|
+
function prepareNextRelease(
|
104
|
+
address[] memory addresses,
|
105
|
+
string[] memory names,
|
106
|
+
RoleId[][] memory serviceRoles,
|
107
|
+
string[][] memory serviceRoleNames,
|
108
|
+
RoleId[][] memory functionRoles,
|
109
|
+
string[][] memory functionRoleNames,
|
110
|
+
bytes4[][][] memory selectors,
|
111
|
+
bytes32 salt
|
112
|
+
)
|
113
|
+
external
|
114
|
+
restricted // GIF_MANAGER_ROLE
|
115
|
+
returns(address releaseAccessManagerAddress, VersionPart version, bytes32 releaseSalt)
|
116
|
+
{
|
117
|
+
if(addresses.length == 0) {
|
118
|
+
revert ErrorReleaseManagerReleaseEmpty();
|
119
|
+
}
|
120
|
+
|
121
|
+
if(_awaitingRegistration > 0) {
|
122
|
+
revert ErrorReleaseManagerReleaseAlreadyCreated(version);
|
123
|
+
}
|
124
|
+
|
125
|
+
_verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
|
126
|
+
|
127
|
+
version = getNextVersion();
|
128
|
+
|
129
|
+
_releaseInfo[version].version = version;
|
130
|
+
_releaseInfo[version].addresses = addresses;
|
131
|
+
_releaseInfo[version].names = names;
|
132
|
+
_releaseInfo[version].serviceRoles = serviceRoles;
|
133
|
+
_releaseInfo[version].serviceRoleNames = serviceRoleNames;
|
134
|
+
_releaseInfo[version].functionRoles = functionRoles;
|
135
|
+
_releaseInfo[version].functionRoleNames = functionRoleNames;
|
136
|
+
_releaseInfo[version].selectors = selectors;
|
137
|
+
_awaitingRegistration = addresses.length;
|
138
|
+
|
139
|
+
// ensures unique salt
|
140
|
+
releaseSalt = keccak256(
|
141
|
+
bytes.concat(
|
142
|
+
bytes32(version.toInt()),
|
143
|
+
salt));
|
144
|
+
|
145
|
+
releaseAccessManagerAddress = Clones.cloneDeterministic(_releaseAccessManagerCodeAddress, releaseSalt);
|
146
|
+
AccessManagerExtendedWithDisableInitializeable releaseAccessManager = AccessManagerExtendedWithDisableInitializeable(releaseAccessManagerAddress);
|
147
|
+
releaseAccessManager.initialize(address(this), version);
|
148
|
+
|
149
|
+
_releaseAccessManager[version] = releaseAccessManager;
|
150
|
+
|
151
|
+
emit LogReleaseCreation(version, releaseSalt, releaseAccessManagerAddress);
|
152
|
+
}
|
153
|
+
|
154
|
+
function registerService(IService service)
|
155
|
+
external
|
156
|
+
restricted // GIF_MANAGER_ROLE
|
157
|
+
returns(NftId nftId)
|
158
|
+
{
|
159
|
+
(
|
160
|
+
IRegistry.ObjectInfo memory info,
|
161
|
+
ObjectType domain,
|
162
|
+
VersionPart version
|
163
|
+
) = _verifyService(service);
|
164
|
+
|
165
|
+
if(_awaitingRegistration == 0) {
|
166
|
+
// TODO either release is not created or registration is finished
|
167
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
168
|
+
}
|
169
|
+
|
170
|
+
uint serviceIdx = _awaitingRegistration - 1;
|
171
|
+
address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
|
172
|
+
// TODO temp, while typescript addresses computation is not implemented
|
173
|
+
/*if(address(service) != serviceAddress) {
|
174
|
+
revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
|
175
|
+
}*/
|
176
|
+
|
177
|
+
_setServiceAuthorizations(
|
178
|
+
_releaseAccessManager[version],
|
179
|
+
// TODO temp, while typescript addresses computation is not implemented
|
180
|
+
address(service),//serviceAddress,
|
181
|
+
_releaseInfo[version].names[serviceIdx],
|
182
|
+
_releaseInfo[version].serviceRoles[serviceIdx],
|
183
|
+
_releaseInfo[version].serviceRoleNames[serviceIdx],
|
184
|
+
_releaseInfo[version].functionRoles[serviceIdx],
|
185
|
+
_releaseInfo[version].functionRoleNames[serviceIdx],
|
186
|
+
_releaseInfo[version].selectors[serviceIdx]);
|
187
|
+
|
188
|
+
_awaitingRegistration = serviceIdx;
|
189
|
+
_releaseInfo[version].domains.push(domain);// checked in registry
|
96
190
|
|
97
|
-
|
191
|
+
nftId = _registry.registerService(info, version, domain);
|
192
|
+
|
193
|
+
service.linkToRegisteredNftId();
|
98
194
|
}
|
99
195
|
|
100
196
|
function activateNextRelease()
|
@@ -104,117 +200,107 @@ contract ReleaseManager is AccessManaged
|
|
104
200
|
VersionPart version = _next;
|
105
201
|
address service = _registry.getServiceAddress(REGISTRY(), version);
|
106
202
|
|
107
|
-
// release
|
203
|
+
// release exists, registry service is a MUST
|
204
|
+
//if(_releaseAccessManager[version] == address(0)) {
|
108
205
|
if(service == address(0)) {
|
109
|
-
revert
|
206
|
+
revert ErrorReleaseManagerReleaseNotCreated(version);
|
110
207
|
}
|
111
208
|
|
112
209
|
// release fully deployed
|
113
210
|
if(_awaitingRegistration > 0) {
|
114
|
-
revert
|
211
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
115
212
|
}
|
116
213
|
|
117
|
-
//
|
214
|
+
// release is not activated
|
215
|
+
if(_releaseInfo[version].activatedAt.gtz()) {
|
216
|
+
revert ErrorReleaseManagerReleaseAlreadyActivated(version);
|
217
|
+
}
|
118
218
|
|
119
219
|
_latest = version;
|
120
220
|
|
121
221
|
_active[service] = true;
|
122
|
-
|
222
|
+
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
123
223
|
|
124
224
|
emit LogReleaseActivation(version);
|
125
225
|
}
|
126
|
-
|
127
|
-
// TODO
|
128
|
-
//
|
129
|
-
|
130
|
-
function registerRegistryService(IRegistryService service)
|
226
|
+
|
227
|
+
// TODO rename activatedAt to createdAt
|
228
|
+
// consider lastActivatedAt
|
229
|
+
function disableRelease(VersionPart version)
|
131
230
|
external
|
132
|
-
restricted //
|
133
|
-
returns(NftId nftId)
|
231
|
+
restricted // GIF_ADMIN_ROLE
|
134
232
|
{
|
135
|
-
|
136
|
-
|
233
|
+
// release was activated
|
234
|
+
if(_releaseInfo[version].activatedAt.eqz()) {
|
235
|
+
revert ErrorReleaseManagerReleaseNotActivated(version);
|
137
236
|
}
|
138
237
|
|
139
|
-
//
|
140
|
-
|
141
|
-
|
142
|
-
revert UnexpectedServiceAuthority(
|
143
|
-
authority(),
|
144
|
-
serviceAuthority);
|
238
|
+
// release not disabled already
|
239
|
+
if(_releaseInfo[version].disabledAt.gtz()) {
|
240
|
+
revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
|
145
241
|
}
|
146
242
|
|
147
|
-
|
148
|
-
|
149
|
-
VersionPart version = _next;
|
150
|
-
ObjectType domain = REGISTRY();
|
151
|
-
_verifyService(service, version, domain);
|
152
|
-
_createRelease(service.getFunctionConfigs());
|
243
|
+
// disable release access manager
|
244
|
+
_releaseAccessManager[version].disable();
|
153
245
|
|
154
|
-
|
246
|
+
// disable registry service
|
247
|
+
address registryServiceAddress = _registry.getServiceAddress(REGISTRY(), version);
|
248
|
+
_active[registryServiceAddress] = false;
|
155
249
|
|
156
|
-
|
157
|
-
service.linkToRegisteredNftId();
|
250
|
+
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
|
158
251
|
}
|
159
|
-
|
160
|
-
//
|
161
|
-
//
|
162
|
-
|
252
|
+
// TODO consider reenable delay (few month), after expiration can not enable back
|
253
|
+
// after expiration release is not maintained in case of error:
|
254
|
+
// 1). we will not emeregency shutdown because of no fixing will be done -> right
|
255
|
+
// 2). we can shutdown but it never be enabled afterwards
|
256
|
+
function enableRelease(VersionPart version)
|
163
257
|
external
|
164
|
-
restricted //
|
165
|
-
returns(NftId nftId)
|
258
|
+
restricted // GIF_ADMIN_ROLE
|
166
259
|
{
|
167
|
-
|
168
|
-
|
260
|
+
// release not disabled already
|
261
|
+
if(_releaseInfo[version].disabledAt.eqz()) {
|
262
|
+
//revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
|
169
263
|
}
|
170
264
|
|
171
|
-
|
172
|
-
|
173
|
-
ObjectType domain = _release[version].domains[_awaitingRegistration];// reversed registration order of services specified in RegistryService config
|
174
|
-
_verifyService(service, version, domain);
|
175
|
-
|
176
|
-
// setup and grant unique role if service does registrations
|
177
|
-
bytes4[] memory selectors = _selectors[version][domain];
|
178
|
-
address registryService = _registry.getServiceAddress(REGISTRY(), version);
|
179
|
-
if(selectors.length > 0) {
|
180
|
-
_accessManager.setAndGrantUniqueRole(
|
181
|
-
address(service),
|
182
|
-
registryService,
|
183
|
-
selectors);
|
184
|
-
}
|
265
|
+
// disable release access manager
|
266
|
+
_releaseAccessManager[version].enable();
|
185
267
|
|
186
|
-
|
187
|
-
|
188
|
-
|
268
|
+
// disable registry service
|
269
|
+
address registryServiceAddress = _registry.getServiceAddress(REGISTRY(), version);
|
270
|
+
_active[registryServiceAddress] = true;
|
189
271
|
|
190
|
-
|
191
|
-
service.linkToRegisteredNftId();
|
272
|
+
_releaseInfo[version].disabledAt = zeroTimestamp();
|
192
273
|
}
|
193
274
|
|
194
275
|
//--- view functions ----------------------------------------------------//
|
195
276
|
|
196
|
-
function
|
197
|
-
|
277
|
+
function predictDeterministicAddress(
|
278
|
+
address implementation,
|
279
|
+
bytes32 salt,
|
280
|
+
address deployer
|
281
|
+
) external pure returns (address predicted) {
|
282
|
+
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
283
|
+
}
|
284
|
+
|
285
|
+
function isActiveRegistryService(address service) external view returns(bool) {
|
198
286
|
return _active[service];
|
199
287
|
}
|
200
288
|
|
201
|
-
function
|
202
|
-
|
203
|
-
return _valid[version];
|
289
|
+
function isActiveRelease(VersionPart version) external view returns(bool) {
|
290
|
+
return _releaseInfo[version].disabledAt.gtz() ? false : _releaseInfo[version].activatedAt.gtz();
|
204
291
|
}
|
205
292
|
|
206
|
-
|
293
|
+
|
294
|
+
function getRegistry() external view returns(address)
|
207
295
|
{
|
208
296
|
return (address(_registry));
|
209
297
|
}
|
210
298
|
|
211
|
-
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory)
|
212
|
-
|
213
|
-
return _release[version];
|
299
|
+
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
300
|
+
return _releaseInfo[version];
|
214
301
|
}
|
215
302
|
|
216
|
-
function getNextVersion() public view returns(VersionPart)
|
217
|
-
{
|
303
|
+
function getNextVersion() public view returns(VersionPart) {
|
218
304
|
return _next;
|
219
305
|
}
|
220
306
|
|
@@ -226,97 +312,152 @@ contract ReleaseManager is AccessManaged
|
|
226
312
|
return _initial;
|
227
313
|
}
|
228
314
|
|
315
|
+
function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
|
316
|
+
return _releaseAccessManager[version];
|
317
|
+
}
|
318
|
+
|
229
319
|
//--- private functions ----------------------------------------------------//
|
230
320
|
|
231
|
-
function
|
321
|
+
function _verifyService(IService service)
|
322
|
+
internal
|
323
|
+
returns(
|
324
|
+
IRegistry.ObjectInfo memory serviceInfo,
|
325
|
+
ObjectType serviceDomain,
|
326
|
+
VersionPart serviceVersion
|
327
|
+
)
|
328
|
+
{
|
329
|
+
if(!service.supportsInterface(type(IService).interfaceId)) {
|
330
|
+
revert ErrorReleaseManagerNotService(service);
|
331
|
+
}
|
332
|
+
|
333
|
+
address owner = msg.sender;
|
334
|
+
address serviceAuthority = service.authority();
|
335
|
+
serviceVersion = service.getVersion().toMajorPart();
|
336
|
+
serviceDomain = service.getDomain();// checked in registry
|
337
|
+
serviceInfo = service.getInitialInfo();
|
338
|
+
|
339
|
+
_verifyServiceInfo(service, serviceInfo, owner);
|
340
|
+
|
341
|
+
VersionPart releaseVersion = getNextVersion(); // never 0
|
342
|
+
address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
|
343
|
+
|
344
|
+
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
345
|
+
if(serviceAuthority != releaseAuthority) {
|
346
|
+
revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
|
347
|
+
service,
|
348
|
+
serviceAuthority,
|
349
|
+
releaseAuthority);
|
350
|
+
}
|
351
|
+
|
352
|
+
if(serviceVersion != releaseVersion) {
|
353
|
+
revert ErrorReleaseManagerServiceReleaseVersionMismatch(
|
354
|
+
service,
|
355
|
+
serviceVersion,
|
356
|
+
releaseVersion);
|
357
|
+
}
|
358
|
+
}
|
359
|
+
|
360
|
+
function _verifyServiceInfo(
|
232
361
|
IService service,
|
233
|
-
|
362
|
+
IRegistry.ObjectInfo memory info,
|
234
363
|
address expectedOwner // assume always valid, can not be 0
|
235
364
|
)
|
236
365
|
internal
|
237
|
-
|
238
|
-
returns(
|
239
|
-
IRegistry.ObjectInfo memory info
|
240
|
-
)
|
366
|
+
view
|
241
367
|
{
|
242
|
-
info
|
243
|
-
|
244
|
-
|
368
|
+
if(info.objectAddress != address(service)) {
|
369
|
+
revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
|
370
|
+
}
|
245
371
|
|
246
|
-
if(info.
|
247
|
-
revert
|
372
|
+
if(info.isInterceptor != false) { // service is never interceptor
|
373
|
+
revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
|
374
|
+
}
|
375
|
+
|
376
|
+
if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
|
377
|
+
revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
|
248
378
|
}
|
249
379
|
|
250
380
|
address owner = info.initialOwner;
|
251
381
|
|
252
382
|
if(owner != expectedOwner) { // registerable owner protection
|
253
|
-
revert
|
383
|
+
revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
|
254
384
|
}
|
255
385
|
|
256
386
|
if(owner == address(service)) {
|
257
|
-
revert
|
387
|
+
revert ErrorReleaseManagerServiceSelfRegistration(service);
|
258
388
|
}
|
259
389
|
|
260
390
|
if(_registry.isRegistered(owner)) {
|
261
|
-
revert
|
391
|
+
revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
|
262
392
|
}
|
263
393
|
}
|
264
394
|
|
265
|
-
function
|
266
|
-
|
267
|
-
|
268
|
-
|
395
|
+
function _verifyReleaseAuthorizations(
|
396
|
+
address[] memory serviceAddress,
|
397
|
+
RoleId[][] memory serviceRoles,
|
398
|
+
RoleId[][] memory functionRoles,
|
399
|
+
bytes4[][][] memory selectors
|
269
400
|
)
|
270
401
|
internal
|
271
402
|
view
|
272
|
-
returns(ObjectType)
|
273
403
|
{
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
404
|
+
for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
|
405
|
+
{
|
406
|
+
for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
|
407
|
+
{
|
408
|
+
RoleId role = serviceRoles[serviceIdx][roleIdx];
|
409
|
+
if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
|
410
|
+
revert ErrorReleaseManagerServiceRoleInvalid(serviceAddress[serviceIdx], role);
|
411
|
+
}
|
412
|
+
}
|
280
413
|
}
|
281
|
-
|
282
|
-
|
414
|
+
// TODO no duplicate service "domain" role per release
|
415
|
+
// TODO no duplicate service roles per service
|
416
|
+
// TODO no duplicate service function roles per service
|
417
|
+
// TODO no duplicate service function selectors per service
|
283
418
|
}
|
284
419
|
|
285
|
-
|
286
|
-
|
420
|
+
function _setServiceAuthorizations(
|
421
|
+
AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
|
422
|
+
address serviceAddress,
|
423
|
+
string memory serviceName,
|
424
|
+
RoleId[] memory serviceRoles,
|
425
|
+
string[] memory serviceRoleNames,
|
426
|
+
RoleId[] memory functionRoles,
|
427
|
+
string[] memory functionRoleNames,
|
428
|
+
bytes4[][] memory selectors
|
429
|
+
)
|
287
430
|
internal
|
288
431
|
{
|
289
|
-
|
432
|
+
accessManager.createTarget(serviceAddress, serviceName);
|
290
433
|
|
291
|
-
|
292
|
-
revert ConfigMissing();
|
293
|
-
}
|
294
|
-
// always in release
|
295
|
-
_release[version].domains.push(REGISTRY());
|
296
|
-
for(uint idx = 0; idx < config.length; idx++)
|
434
|
+
for(uint idx = 0; idx < functionRoles.length; idx++)
|
297
435
|
{
|
298
|
-
|
299
|
-
|
300
|
-
if(
|
301
|
-
|
302
|
-
domain.eqz()
|
303
|
-
) { revert ConfigServiceDomainInvalid(idx, domain); }
|
304
|
-
|
305
|
-
bytes4[] memory selectors = config[idx].selectors;
|
306
|
-
|
307
|
-
// TODO can be zero -> e.g. duplicate domain, first with zero selector, second with non zero selector -> need to check _release[version].domains.contains(domain) instead
|
308
|
-
// no overwrite
|
309
|
-
if(_selectors[version][domain].length > 0) {
|
310
|
-
revert SelectorAlreadyExists(version, domain);
|
436
|
+
uint64 roleInt = functionRoles[idx].toInt();
|
437
|
+
|
438
|
+
if(!accessManager.isRoleExists(roleInt)) {
|
439
|
+
accessManager.createRole(roleInt, functionRoleNames[idx]);
|
311
440
|
}
|
312
|
-
|
313
|
-
|
314
|
-
|
441
|
+
|
442
|
+
accessManager.setTargetFunctionRole(
|
443
|
+
serviceAddress,
|
444
|
+
selectors[idx],
|
445
|
+
roleInt);
|
315
446
|
}
|
316
|
-
|
317
|
-
|
318
|
-
|
447
|
+
|
448
|
+
for(uint idx = 0; idx < serviceRoles.length; idx++)
|
449
|
+
{
|
450
|
+
uint64 roleInt = serviceRoles[idx].toInt();
|
451
|
+
|
452
|
+
if(!accessManager.isRoleExists(roleInt)) {
|
453
|
+
accessManager.createRole(roleInt, serviceRoleNames[idx]);
|
454
|
+
}
|
319
455
|
|
320
|
-
|
456
|
+
accessManager.grantRole(
|
457
|
+
serviceRoles[idx].toInt(),
|
458
|
+
serviceAddress,
|
459
|
+
0);
|
460
|
+
}
|
461
|
+
|
321
462
|
}
|
322
|
-
}
|
463
|
+
}
|