@etherisc/gif-next 0.0.2-fe88ad7-208 → 0.0.2-ff282a4-523
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 +1376 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -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 +264 -218
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +441 -2539
- 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 +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +432 -280
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +399 -383
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +295 -99
- 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 +6 -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 +93 -14
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
- 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/IComponents.sol/IComponents.json +10 -0
- 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 +1288 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +696 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +316 -250
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1095 -0
- 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/pool/Pool.sol/Pool.json +1407 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +708 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -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 +264 -277
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +241 -230
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +254 -168
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +72 -166
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +688 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1198 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +640 -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 +165 -5
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +158 -215
- 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 +196 -31
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +20 -20
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +270 -254
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +291 -85
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +151 -77
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +142 -54
- 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} +358 -327
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentService.sol/ComponentService.json} +263 -164
- 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/Distribution.sol/Distribution.json → shared/IComponent.sol/IComponent.json} +173 -212
- 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 +189 -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/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +71 -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/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 +302 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +285 -65
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -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 +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/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → staking/IStaking.sol/IStaking.json} +62 -150
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → staking/IStakingService.sol/IStakingService.json} +232 -169
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +497 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +623 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +797 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +632 -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/type/NftId.sol/NftIdLib.json +166 -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 +124 -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 +285 -0
- package/contracts/distribution/DistributionService.sol +349 -0
- package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +71 -0
- package/contracts/distribution/IDistributionService.sol +87 -0
- package/contracts/instance/BundleManager.sol +22 -25
- package/contracts/instance/IInstance.sol +56 -41
- package/contracts/instance/IInstanceService.sol +49 -16
- package/contracts/instance/Instance.sol +149 -196
- package/contracts/instance/InstanceAccessManager.sol +406 -166
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +102 -49
- package/contracts/instance/InstanceService.sol +206 -248
- package/contracts/instance/InstanceServiceManager.sol +2 -2
- package/contracts/instance/InstanceStore.sol +211 -0
- package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
- package/contracts/instance/base/IKeyValueStore.sol +14 -10
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +44 -47
- package/contracts/instance/base/Lifecycle.sol +28 -7
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +16 -35
- package/contracts/instance/module/IAccess.sol +24 -18
- package/contracts/instance/module/IBundle.sol +11 -8
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +7 -4
- package/contracts/instance/module/IPolicy.sol +50 -17
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/instance/module/ISetup.sol +9 -22
- package/contracts/instance/module/ITreasury.sol +2 -2
- package/contracts/pool/BundleService.sol +382 -0
- package/contracts/{instance/service → pool}/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +118 -0
- package/contracts/pool/IPoolComponent.sol +114 -0
- package/contracts/pool/IPoolService.sol +114 -0
- package/contracts/pool/Pool.sol +302 -0
- package/contracts/pool/PoolService.sol +403 -0
- package/contracts/{instance/service → pool}/PoolServiceManager.sol +6 -6
- package/contracts/product/ApplicationService.sol +186 -0
- package/contracts/product/ApplicationServiceManager.sol +35 -0
- package/contracts/product/ClaimService.sol +442 -0
- package/contracts/product/ClaimServiceManager.sol +35 -0
- package/contracts/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +93 -0
- package/contracts/product/IPolicyService.sol +80 -0
- package/contracts/product/IPricingService.sol +37 -0
- package/contracts/product/IProductComponent.sol +41 -0
- package/contracts/{instance/service → product}/IProductService.sol +10 -10
- package/contracts/product/PolicyService.sol +376 -0
- package/contracts/{instance/service → product}/PolicyServiceManager.sol +7 -7
- package/contracts/product/PricingService.sol +275 -0
- package/contracts/product/PricingServiceManager.sol +51 -0
- package/contracts/product/Product.sol +379 -0
- package/contracts/product/ProductService.sol +210 -0
- package/contracts/{instance/service → product}/ProductServiceManager.sol +7 -7
- package/contracts/registry/ChainNft.sol +15 -1
- package/contracts/registry/IRegistry.sol +33 -14
- package/contracts/registry/IRegistryService.sol +28 -17
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +184 -75
- package/contracts/registry/RegistryAccessManager.sol +32 -35
- package/contracts/registry/RegistryService.sol +126 -145
- package/contracts/registry/RegistryServiceManager.sol +13 -15
- package/contracts/registry/ReleaseManager.sol +157 -145
- package/contracts/registry/TokenRegistry.sol +21 -15
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/shared/Component.sol +271 -0
- package/contracts/shared/ComponentService.sol +150 -0
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/IComponent.sol +90 -0
- package/contracts/shared/INftOwnable.sol +12 -11
- package/contracts/shared/IPolicyHolder.sol +40 -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/NftOwnable.sol +64 -80
- package/contracts/shared/PolicyHolder.sol +94 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +26 -41
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +37 -23
- package/contracts/shared/TokenHandler.sol +14 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/staking/IStaking.sol +15 -0
- package/contracts/staking/IStakingService.sol +105 -0
- package/contracts/staking/Staking.sol +64 -0
- package/contracts/staking/StakingManager.sol +44 -0
- package/contracts/staking/StakingService.sol +204 -0
- package/contracts/staking/StakingServiceManager.sol +41 -0
- package/contracts/type/Amount.sol +109 -0
- package/contracts/{types → type}/Blocknumber.sol +1 -0
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/{types → type}/DistributorType.sol +2 -2
- package/contracts/{types → type}/Fee.sol +17 -8
- package/contracts/{types → type}/NftId.sol +8 -0
- package/contracts/{types → type}/NftIdSet.sol +1 -1
- package/contracts/{types → type}/ObjectType.sol +21 -7
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +4 -0
- package/contracts/{types → type}/RoleId.sol +56 -14
- package/contracts/type/Seconds.sol +54 -0
- package/contracts/{types → type}/StateId.sol +7 -2
- 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/IInstanceBase.sol/IInstanceBase.json +0 -448
- 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/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -945
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -432
- 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/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 -993
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -464
- 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/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 -163
- 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 -271
- package/contracts/components/Product.sol +0 -292
- 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 -82
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/BundleService.sol +0 -260
- package/contracts/instance/service/ComponentOwnerService.sol +0 -315
- package/contracts/instance/service/DistributionService.sol +0 -113
- package/contracts/instance/service/IBundleService.sol +0 -45
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/instance/service/IDistributionService.sol +0 -12
- package/contracts/instance/service/IPolicyService.sol +0 -87
- package/contracts/instance/service/IPoolService.sol +0 -20
- package/contracts/instance/service/PolicyService.sol +0 -503
- package/contracts/instance/service/PoolService.sol +0 -124
- package/contracts/instance/service/ProductService.sol +0 -170
- 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/test/Usdc.sol +0 -26
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NumberId.sol +0 -52
- /package/contracts/{types → type}/AddressSet.sol +0 -0
- /package/contracts/{types → type}/Key32.sol +0 -0
- /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -3,17 +3,19 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
5
5
|
|
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 "../
|
6
|
+
import {NftId} from "../type/NftId.sol";
|
7
|
+
import {RoleId} from "../type/RoleId.sol";
|
8
|
+
import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
9
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
10
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
11
11
|
|
12
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
13
|
+
import {IRegistry} from "./IRegistry.sol";
|
14
|
+
import {IRegistryService} from "./IRegistryService.sol";
|
12
15
|
import {IService} from "../shared/IService.sol";
|
16
|
+
import {IStaking} from "../staking/IStaking.sol";
|
13
17
|
|
14
|
-
import {IRegistry} from "./IRegistry.sol";
|
15
18
|
import {Registry} from "./Registry.sol";
|
16
|
-
import {IRegistryService} from "./IRegistryService.sol";
|
17
19
|
import {RegistryAccessManager} from "./RegistryAccessManager.sol";
|
18
20
|
|
19
21
|
|
@@ -21,28 +23,32 @@ contract ReleaseManager is AccessManaged
|
|
21
23
|
{
|
22
24
|
using ObjectTypeLib for ObjectType;
|
23
25
|
|
24
|
-
event LogReleaseCreation(VersionPart version
|
26
|
+
event LogReleaseCreation(VersionPart version);
|
25
27
|
event LogReleaseActivation(VersionPart version);
|
26
28
|
|
27
29
|
// createNextRelease
|
28
30
|
error NotRegistryService();
|
29
31
|
error UnexpectedServiceAuthority(address expected, address found);
|
30
32
|
|
33
|
+
// register staking
|
34
|
+
error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
|
35
|
+
|
31
36
|
// registerService
|
32
37
|
error NotService();
|
33
|
-
error ServiceNotInRelease(IService service, ObjectType serviceDomain);
|
34
38
|
|
35
39
|
// activateNextRelease
|
36
|
-
|
37
|
-
|
40
|
+
error ReleaseNotCreated();
|
41
|
+
error ReleaseRegistrationNotFinished();
|
38
42
|
|
39
43
|
// _getAndVerifyContractInfo
|
44
|
+
error ErrorReleaseManagerUnexpectedRegisterableAddress(address expected, address actual);
|
45
|
+
error ErrorReleaseManagerIsInterceptorTrue();
|
40
46
|
error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
|
41
|
-
error NotRegisterableOwner(address
|
47
|
+
error NotRegisterableOwner(address expectedOwner, address actualOwner);
|
42
48
|
error SelfRegistration();
|
43
49
|
error RegisterableOwnerIsRegistered();
|
44
50
|
|
45
|
-
//
|
51
|
+
// _verifyService
|
46
52
|
error UnexpectedServiceVersion(VersionPart expected, VersionPart found);
|
47
53
|
error UnexpectedServiceDomain(ObjectType expected, ObjectType found);
|
48
54
|
|
@@ -52,24 +58,29 @@ contract ReleaseManager is AccessManaged
|
|
52
58
|
error ConfigSelectorZero(uint configArrayIndex);
|
53
59
|
error SelectorAlreadyExists(VersionPart releaseVersion, ObjectType serviceDomain);
|
54
60
|
|
55
|
-
|
56
61
|
RegistryAccessManager private immutable _accessManager;
|
57
62
|
IRegistry private immutable _registry;
|
63
|
+
IStaking private _staking;
|
58
64
|
|
59
|
-
VersionPart
|
60
|
-
VersionPart
|
65
|
+
VersionPart immutable _initial;// first active major version
|
66
|
+
VersionPart _latest;// latest active major version
|
67
|
+
VersionPart _next;// major version to create and activate
|
61
68
|
|
62
|
-
mapping(VersionPart
|
69
|
+
mapping(VersionPart majorVersion => IRegistry.ReleaseInfo info) _release;
|
63
70
|
|
64
|
-
|
71
|
+
// registry service function selector assigned to domain
|
72
|
+
mapping(VersionPart majorVersion => mapping(ObjectType serviceDomain => bytes4[])) _selectors;
|
65
73
|
|
66
74
|
uint _awaitingRegistration; // "services left to register" counter
|
67
75
|
|
68
76
|
mapping(address registryService => bool isActive) _active;
|
69
77
|
|
78
|
+
mapping(VersionPart majorVersion => bool isValid) _valid; // TODO refactor to use _active only
|
79
|
+
|
70
80
|
constructor(
|
71
81
|
RegistryAccessManager accessManager,
|
72
|
-
VersionPart initialVersion
|
82
|
+
VersionPart initialVersion
|
83
|
+
)
|
73
84
|
AccessManaged(accessManager.authority())
|
74
85
|
{
|
75
86
|
require(initialVersion.toInt() > 0, "ReleaseManager: initial version is 0");
|
@@ -77,46 +88,103 @@ contract ReleaseManager is AccessManaged
|
|
77
88
|
_accessManager = accessManager;
|
78
89
|
|
79
90
|
_initial = initialVersion;
|
80
|
-
|
91
|
+
_next = initialVersion;
|
81
92
|
_registry = new Registry();
|
82
93
|
}
|
83
94
|
|
84
|
-
|
85
|
-
|
86
|
-
|
95
|
+
function registerStaking(
|
96
|
+
address stakingAddress,
|
97
|
+
address stakingOwner
|
98
|
+
)
|
87
99
|
external
|
88
100
|
restricted // GIF_ADMIN_ROLE
|
89
101
|
returns(NftId nftId)
|
102
|
+
{
|
103
|
+
// verify staking contract
|
104
|
+
_getAndVerifyContractInfo(stakingAddress, STAKING(), stakingOwner);
|
105
|
+
_staking = IStaking(stakingAddress);
|
106
|
+
|
107
|
+
nftId = _registry.registerStaking(
|
108
|
+
stakingAddress,
|
109
|
+
stakingOwner);
|
110
|
+
|
111
|
+
_staking.linkToRegisteredNftId();
|
112
|
+
}
|
113
|
+
|
114
|
+
/// @dev skips previous release if was not activated
|
115
|
+
function createNextRelease()
|
116
|
+
external
|
117
|
+
restricted // GIF_ADMIN_ROLE
|
118
|
+
{
|
119
|
+
// allow to register new registry service for next version
|
120
|
+
// TODO check/test: assignment to _next likely missing ...
|
121
|
+
VersionPartLib.toVersionPart(_next.toInt() + 1);
|
122
|
+
|
123
|
+
// disallow registration of regular services for next version while registry service is not registered
|
124
|
+
_awaitingRegistration = 0;
|
125
|
+
|
126
|
+
emit LogReleaseCreation(_next);
|
127
|
+
}
|
128
|
+
|
129
|
+
function activateNextRelease()
|
130
|
+
external
|
131
|
+
restricted // GIF_ADMIN_ROLE
|
132
|
+
{
|
133
|
+
VersionPart version = _next;
|
134
|
+
address service = _registry.getServiceAddress(REGISTRY(), version);
|
135
|
+
|
136
|
+
// release was created
|
137
|
+
if(service == address(0)) {
|
138
|
+
revert ReleaseNotCreated();
|
139
|
+
}
|
140
|
+
|
141
|
+
// release fully deployed
|
142
|
+
if(_awaitingRegistration > 0) {
|
143
|
+
revert ReleaseRegistrationNotFinished();
|
144
|
+
}
|
145
|
+
|
146
|
+
//setTargetClosed(service, false);
|
147
|
+
|
148
|
+
_latest = version;
|
149
|
+
|
150
|
+
_active[service] = true;
|
151
|
+
_valid[version] = true;
|
152
|
+
|
153
|
+
emit LogReleaseActivation(version);
|
154
|
+
}
|
155
|
+
|
156
|
+
// TODO implement reliable way this function can only be called directly after createNextRelease()
|
157
|
+
// IMPORTANT: MUST never be possible to create with access/release manager, token registry
|
158
|
+
// callable once per release after release creation
|
159
|
+
// can not register regular services
|
160
|
+
function registerRegistryService(IRegistryService service)
|
161
|
+
external
|
162
|
+
restricted // GIF_MANAGER_ROLE
|
163
|
+
returns(NftId nftId)
|
90
164
|
{
|
91
165
|
if(!service.supportsInterface(type(IRegistryService).interfaceId)) {
|
92
166
|
revert NotRegistryService();
|
93
167
|
}
|
168
|
+
|
94
169
|
// TODO unreliable! MUST guarantee the same authority -> how?
|
95
|
-
|
170
|
+
address serviceAuthority = service.authority();
|
171
|
+
if(serviceAuthority != authority()) {
|
96
172
|
revert UnexpectedServiceAuthority(
|
97
173
|
authority(),
|
98
|
-
|
174
|
+
serviceAuthority);
|
99
175
|
}
|
100
176
|
|
101
|
-
(
|
102
|
-
IRegistry.ObjectInfo memory info,
|
103
|
-
bytes memory data
|
104
|
-
) = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
|
177
|
+
IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(address(service), SERVICE(), msg.sender);
|
105
178
|
|
106
|
-
VersionPart
|
179
|
+
VersionPart majorVersion = _next;
|
107
180
|
ObjectType domain = REGISTRY();
|
108
|
-
|
109
|
-
|
110
|
-
_createRelease(data);
|
111
|
-
|
112
|
-
//setTargetClosed(service, true);
|
181
|
+
_verifyService(service, majorVersion, domain);
|
182
|
+
_createRelease(service.getFunctionConfigs());
|
113
183
|
|
114
|
-
nftId = _registry.registerService(info,
|
184
|
+
nftId = _registry.registerService(info, majorVersion, domain);
|
115
185
|
|
116
186
|
// external call
|
117
187
|
service.linkToRegisteredNftId();
|
118
|
-
|
119
|
-
emit LogReleaseCreation(version, service);
|
120
188
|
}
|
121
189
|
|
122
190
|
// TODO adding service to release -> synchronized with proxy upgrades or simple addServiceToRelease(service, version, selector)?
|
@@ -130,70 +198,29 @@ contract ReleaseManager is AccessManaged
|
|
130
198
|
revert NotService();
|
131
199
|
}
|
132
200
|
|
133
|
-
(
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
revert ServiceNotInRelease(service, domain);
|
201
|
+
IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(address(service), SERVICE(), msg.sender);
|
202
|
+
VersionPart majorVersion = getNextVersion();
|
203
|
+
ObjectType domain = _release[majorVersion].domains[_awaitingRegistration];// reversed registration order of services specified in RegistryService config
|
204
|
+
_verifyService(service, majorVersion, domain);
|
205
|
+
|
206
|
+
// setup and grant unique role if service does registrations
|
207
|
+
bytes4[] memory selectors = _selectors[majorVersion][domain];
|
208
|
+
address registryService = _registry.getServiceAddress(REGISTRY(), majorVersion);
|
209
|
+
if(selectors.length > 0) {
|
210
|
+
_accessManager.setAndGrantUniqueRole(
|
211
|
+
address(service),
|
212
|
+
registryService,
|
213
|
+
selectors);
|
147
214
|
}
|
148
|
-
|
149
|
-
// setup and grant unique role
|
150
|
-
address registryService = _registry.getServiceAddress(REGISTRY(), version);
|
151
|
-
_accessManager.setAndGrantUniqueRole(
|
152
|
-
address(service),
|
153
|
-
registryService,
|
154
|
-
selector);
|
155
|
-
|
215
|
+
|
156
216
|
_awaitingRegistration--;
|
157
217
|
|
158
|
-
|
159
|
-
if(_awaitingRegistration == 0) {
|
160
|
-
_latest = version;
|
161
|
-
_active[registryService] = true;
|
162
|
-
|
163
|
-
emit LogReleaseActivation(version);
|
164
|
-
}
|
165
|
-
|
166
|
-
nftId = _registry.registerService(info, version, domain);
|
218
|
+
nftId = _registry.registerService(info, majorVersion, domain);
|
167
219
|
|
168
220
|
// external call
|
169
221
|
service.linkToRegisteredNftId();
|
170
222
|
}
|
171
223
|
|
172
|
-
/*function activateNextRelease()
|
173
|
-
external
|
174
|
-
restricted // GIF_ADMIN_ROLE
|
175
|
-
{
|
176
|
-
VersionPart version = getNextVersion();
|
177
|
-
address service = _registry.getServiceAddress(REGISTRY(), version);
|
178
|
-
|
179
|
-
// release was created
|
180
|
-
if(service == address(0)) {
|
181
|
-
revert ReleaseNotCreated();
|
182
|
-
}
|
183
|
-
|
184
|
-
// release fully deployed
|
185
|
-
if(_awaitingRegistration > 0) {
|
186
|
-
revert ReleaseRegistrationNotFinished();
|
187
|
-
}
|
188
|
-
|
189
|
-
//setTargetClosed(service, false);
|
190
|
-
|
191
|
-
_latest = version;
|
192
|
-
_active[service] = true;
|
193
|
-
|
194
|
-
LogReleaseActivation(version);
|
195
|
-
}*/
|
196
|
-
|
197
224
|
//--- view functions ----------------------------------------------------//
|
198
225
|
|
199
226
|
function isActiveRegistryService(address service) external view returns(bool)
|
@@ -201,9 +228,14 @@ contract ReleaseManager is AccessManaged
|
|
201
228
|
return _active[service];
|
202
229
|
}
|
203
230
|
|
204
|
-
function
|
231
|
+
function isValidRelease(VersionPart version) external view returns(bool)
|
232
|
+
{
|
233
|
+
return _valid[version];
|
234
|
+
}
|
235
|
+
|
236
|
+
function getRegistryAddress() external view returns(address)
|
205
237
|
{
|
206
|
-
return
|
238
|
+
return address(_registry);
|
207
239
|
}
|
208
240
|
|
209
241
|
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory)
|
@@ -213,11 +245,7 @@ contract ReleaseManager is AccessManaged
|
|
213
245
|
|
214
246
|
function getNextVersion() public view returns(VersionPart)
|
215
247
|
{
|
216
|
-
|
217
|
-
|
218
|
-
return latest == 0 ?
|
219
|
-
_initial : // no active releases yet
|
220
|
-
VersionPartLib.toVersionPart(latest + 1);
|
248
|
+
return _next;
|
221
249
|
}
|
222
250
|
|
223
251
|
function getLatestVersion() external view returns(VersionPart) {
|
@@ -231,20 +259,25 @@ contract ReleaseManager is AccessManaged
|
|
231
259
|
//--- private functions ----------------------------------------------------//
|
232
260
|
|
233
261
|
function _getAndVerifyContractInfo(
|
234
|
-
|
262
|
+
address registerableAddress,
|
235
263
|
ObjectType expectedType,
|
236
264
|
address expectedOwner // assume always valid, can not be 0
|
237
265
|
)
|
238
266
|
internal
|
239
|
-
view
|
267
|
+
// view
|
240
268
|
returns(
|
241
|
-
IRegistry.ObjectInfo memory info
|
242
|
-
bytes memory data
|
269
|
+
IRegistry.ObjectInfo memory info
|
243
270
|
)
|
244
271
|
{
|
245
|
-
|
246
|
-
|
247
|
-
info.
|
272
|
+
info = IRegisterable(registerableAddress).getInitialInfo();
|
273
|
+
|
274
|
+
if(info.objectAddress != registerableAddress) {
|
275
|
+
revert ErrorReleaseManagerUnexpectedRegisterableAddress(registerableAddress, info.objectAddress);
|
276
|
+
}
|
277
|
+
|
278
|
+
if(info.isInterceptor) {
|
279
|
+
revert ErrorReleaseManagerIsInterceptorTrue();
|
280
|
+
}
|
248
281
|
|
249
282
|
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
250
283
|
revert UnexpectedRegisterableType(expectedType, info.objectType);
|
@@ -253,33 +286,20 @@ contract ReleaseManager is AccessManaged
|
|
253
286
|
address owner = info.initialOwner;
|
254
287
|
|
255
288
|
if(owner != expectedOwner) { // registerable owner protection
|
256
|
-
revert NotRegisterableOwner(expectedOwner);
|
289
|
+
revert NotRegisterableOwner(expectedOwner, owner);
|
257
290
|
}
|
258
291
|
|
259
|
-
if(owner == address(
|
292
|
+
if(owner == address(registerableAddress)) {
|
260
293
|
revert SelfRegistration();
|
261
294
|
}
|
262
|
-
|
263
|
-
/*if(owner == address(0)) { // never 0
|
264
|
-
revert();// RegisterableOwnerIsZero();
|
265
|
-
}*/
|
266
295
|
|
267
296
|
if(_registry.isRegistered(owner)) {
|
268
297
|
revert RegisterableOwnerIsRegistered();
|
269
298
|
}
|
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
299
|
}
|
280
300
|
|
281
|
-
function
|
282
|
-
|
301
|
+
function _verifyService(
|
302
|
+
IService service,
|
283
303
|
VersionPart expectedVersion,
|
284
304
|
ObjectType expectedDomain
|
285
305
|
)
|
@@ -287,30 +307,24 @@ contract ReleaseManager is AccessManaged
|
|
287
307
|
view
|
288
308
|
returns(ObjectType)
|
289
309
|
{
|
290
|
-
(
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
if(version != expectedVersion) {
|
296
|
-
revert UnexpectedServiceVersion(expectedVersion, version);
|
310
|
+
Version version = service.getVersion();
|
311
|
+
VersionPart majorVersion = version.toMajorPart();
|
312
|
+
if(majorVersion != expectedVersion) {
|
313
|
+
revert UnexpectedServiceVersion(expectedVersion, majorVersion);
|
297
314
|
}
|
298
315
|
|
299
|
-
if(
|
300
|
-
|
301
|
-
revert UnexpectedServiceDomain(expectedDomain, domain);
|
302
|
-
}
|
316
|
+
if(service.getDomain() != expectedDomain) {
|
317
|
+
revert UnexpectedServiceDomain(expectedDomain, service.getDomain());
|
303
318
|
}
|
304
319
|
|
305
|
-
return
|
320
|
+
return expectedDomain;
|
306
321
|
}
|
307
322
|
|
308
323
|
// TODO check if registry supports types specified in the config array
|
309
|
-
function _createRelease(
|
324
|
+
function _createRelease(IRegistryService.FunctionConfig[] memory config)
|
310
325
|
internal
|
311
326
|
{
|
312
327
|
VersionPart version = getNextVersion();
|
313
|
-
IRegistryService.FunctionConfig[] memory config = abi.decode(configBytes, (IRegistryService.FunctionConfig[]));
|
314
328
|
|
315
329
|
if(config.length == 0) {
|
316
330
|
revert ConfigMissing();
|
@@ -320,23 +334,21 @@ contract ReleaseManager is AccessManaged
|
|
320
334
|
for(uint idx = 0; idx < config.length; idx++)
|
321
335
|
{
|
322
336
|
ObjectType domain = config[idx].serviceDomain;
|
323
|
-
bytes4 selector = config[idx].selector;
|
324
|
-
|
325
337
|
// not "registry service" / zero domain
|
326
338
|
if(
|
327
339
|
domain == REGISTRY() ||
|
328
340
|
domain.eqz()
|
329
341
|
) { revert ConfigServiceDomainInvalid(idx, domain); }
|
330
342
|
|
331
|
-
|
332
|
-
if(selector == 0) { revert ConfigSelectorZero(idx); }
|
343
|
+
bytes4[] memory selectors = config[idx].selectors;
|
333
344
|
|
345
|
+
// 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
|
334
346
|
// no overwrite
|
335
|
-
if(
|
347
|
+
if(_selectors[version][domain].length > 0) {
|
336
348
|
revert SelectorAlreadyExists(version, domain);
|
337
349
|
}
|
338
350
|
|
339
|
-
|
351
|
+
_selectors[version][domain] = selectors;
|
340
352
|
_release[version].domains.push(domain);
|
341
353
|
}
|
342
354
|
// TODO set when activated?
|
@@ -6,8 +6,8 @@ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165C
|
|
6
6
|
|
7
7
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
8
8
|
import {IRegistry} from "./IRegistry.sol";
|
9
|
-
import {VersionPart} from "../
|
10
|
-
import {REGISTRY} from "../
|
9
|
+
import {VersionPart} from "../type/Version.sol";
|
10
|
+
import {REGISTRY} from "../type/ObjectType.sol";
|
11
11
|
import {NftOwnable} from "../shared/NftOwnable.sol";
|
12
12
|
|
13
13
|
/// @title contract to register token per GIF major release.
|
@@ -26,21 +26,32 @@ contract TokenRegistry is
|
|
26
26
|
mapping(address token => bool registered) internal _registered;
|
27
27
|
mapping(address token => mapping(VersionPart majorVersion => bool isActive)) internal _active;
|
28
28
|
|
29
|
-
constructor(
|
30
|
-
|
31
|
-
|
29
|
+
constructor(
|
30
|
+
address registry
|
31
|
+
)
|
32
|
+
{
|
33
|
+
initialize(registry);
|
34
|
+
}
|
35
|
+
|
36
|
+
function initialize(address registry)
|
37
|
+
public
|
38
|
+
initializer()
|
39
|
+
{
|
40
|
+
initializeNftOwnable(msg.sender, registry);
|
41
|
+
}
|
32
42
|
|
33
43
|
|
34
44
|
/// @dev link ownership of token registry to nft owner of registry service
|
45
|
+
// TODO latter registry service will get new release, new address, new nft, TokenRegistry will not catch that -> use AccessManaged only for services
|
35
46
|
function linkToNftOwnable(address registryAddress)
|
36
47
|
external
|
37
48
|
onlyOwner
|
38
49
|
{
|
39
50
|
IRegistry registry = IRegistry(registryAddress);
|
40
|
-
// TODO use _latest instead of
|
41
|
-
address registryServiceAddress = registry.getServiceAddress(REGISTRY(), registry.
|
51
|
+
// TODO use _latest instead of _initial -> but _latest is 0 before first release activation
|
52
|
+
address registryServiceAddress = registry.getServiceAddress(REGISTRY(), registry.getNextVersion());
|
42
53
|
|
43
|
-
_linkToNftOwnable(
|
54
|
+
_linkToNftOwnable(registryServiceAddress);
|
44
55
|
}
|
45
56
|
|
46
57
|
/// @dev token state is informative, registry have no clue about used tokens
|
@@ -58,7 +69,7 @@ contract TokenRegistry is
|
|
58
69
|
// verify valid major version
|
59
70
|
// ensure major version increments is one
|
60
71
|
uint256 version = majorVersion.toInt();
|
61
|
-
if (
|
72
|
+
if (!getRegistry().isValidRelease(majorVersion)) {
|
62
73
|
revert TokenMajorVersionInvalid(majorVersion);
|
63
74
|
}
|
64
75
|
|
@@ -91,12 +102,7 @@ contract TokenRegistry is
|
|
91
102
|
revert NotContract(token);
|
92
103
|
}
|
93
104
|
|
94
|
-
// MUST
|
95
|
-
if(ERC165Checker.supportsInterface(token, type(IRegisterable).interfaceId)) {
|
96
|
-
revert NotToken(token);
|
97
|
-
}
|
98
|
-
|
99
|
-
// MUST have decimals > 0
|
105
|
+
// MUST have decimals > 0 (indicator that this is in fact an erc20 token)
|
100
106
|
IERC20Metadata erc20 = IERC20Metadata(token);
|
101
107
|
if(erc20.decimals() == 0) {
|
102
108
|
revert TokenDecimalsZero();
|
@@ -0,0 +1,13 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
|
5
|
+
|
6
|
+
|
7
|
+
contract AccessManagerUpgradeableInitializeable is AccessManagerUpgradeable {
|
8
|
+
|
9
|
+
function initialize(address initialAdmin) initializer public {
|
10
|
+
__AccessManager_init(initialAdmin);
|
11
|
+
}
|
12
|
+
|
13
|
+
}
|