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