@etherisc/gif-next 0.0.2-ecbd488-936 → 0.0.2-ed3b1b0-046
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -14
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +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 +819 -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 +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +415 -776
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +314 -178
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +452 -3067
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +443 -257
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +446 -398
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +319 -132
- 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/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +91 -2
- 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 +71 -45
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/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 +735 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +332 -336
- 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 +747 -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 +687 -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 +787 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +651 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +237 -288
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +861 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +162 -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 +779 -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 +727 -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 +679 -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 +319 -129
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +268 -255
- 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 +339 -222
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +238 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +313 -354
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +323 -135
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +846 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +132 -57
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/shared/Component.sol/Component.json +873 -0
- 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} +271 -180
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +636 -0
- 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 +84 -178
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/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 +310 -61
- 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 +185 -165
- 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/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → staking/IStakingService.sol/IStakingService.json} +226 -145
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +667 -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/type/NftIdSet.sol/LibNftIdSet.json +33 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +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 +351 -0
- package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +20 -20
- package/contracts/distribution/IDistributionComponent.sol +71 -0
- package/contracts/distribution/IDistributionService.sol +87 -0
- package/contracts/instance/BundleManager.sol +126 -0
- package/contracts/instance/IInstance.sol +60 -31
- package/contracts/instance/IInstanceService.sol +56 -13
- package/contracts/instance/Instance.sol +149 -363
- package/contracts/instance/InstanceAccessManager.sol +432 -177
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +109 -47
- package/contracts/instance/InstanceService.sol +246 -140
- package/contracts/instance/InstanceServiceManager.sol +12 -25
- package/contracts/instance/InstanceStore.sol +211 -0
- package/contracts/instance/base/Cloneable.sol +51 -0
- 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/base/ObjectManager.sol +82 -0
- package/contracts/instance/module/IAccess.sol +37 -21
- 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 +11 -22
- package/contracts/instance/module/ITreasury.sol +2 -2
- package/contracts/pool/BundleService.sol +384 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +118 -0
- package/contracts/pool/IPoolComponent.sol +114 -0
- package/contracts/pool/IPoolService.sol +114 -0
- package/contracts/pool/Pool.sol +302 -0
- package/contracts/pool/PoolService.sol +404 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +187 -0
- package/contracts/product/ApplicationServiceManager.sol +38 -0
- package/contracts/product/ClaimService.sol +443 -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 +80 -0
- package/contracts/product/IPricingService.sol +37 -0
- package/contracts/product/IProductComponent.sol +41 -0
- package/contracts/product/IProductService.sol +40 -0
- package/contracts/product/PolicyService.sol +378 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +276 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/product/Product.sol +379 -0
- package/contracts/product/ProductService.sol +212 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/ChainNft.sol +9 -1
- package/contracts/registry/IRegistry.sol +56 -27
- package/contracts/registry/IRegistryService.sol +36 -28
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +259 -232
- package/contracts/registry/RegistryAccessManager.sol +132 -0
- package/contracts/registry/RegistryService.sol +81 -208
- package/contracts/registry/RegistryServiceManager.sol +34 -42
- package/contracts/registry/ReleaseManager.sol +382 -0
- package/contracts/registry/TokenRegistry.sol +22 -17
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/shared/Component.sol +271 -0
- package/contracts/shared/ComponentService.sol +141 -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 +7 -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 +126 -25
- package/contracts/shared/Registerable.sol +26 -41
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +41 -24
- package/contracts/shared/TokenHandler.sol +14 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/staking/IStakingService.sol +102 -0
- package/contracts/staking/StakingService.sol +169 -0
- package/contracts/staking/StakingServiceManager.sol +40 -0
- package/contracts/type/Amount.sol +109 -0
- package/contracts/{types → type}/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/type/NftIdSet.sol +62 -0
- package/contracts/{types → type}/ObjectType.sol +17 -7
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +4 -0
- package/contracts/type/RoleId.sol +139 -0
- 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/BaseComponent.sol/BaseComponent.json +0 -327
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.json +0 -719
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
- 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/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -839
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1046
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -448
- 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/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/NftIdSet.sol/LibNftIdSet.json +0 -10
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -91
- package/contracts/components/Distribution.sol +0 -159
- package/contracts/components/IBaseComponent.sol +0 -25
- package/contracts/components/IDistributionComponent.sol +0 -44
- package/contracts/components/IPoolComponent.sol +0 -62
- package/contracts/components/IProductComponent.sol +0 -35
- package/contracts/components/Pool.sol +0 -242
- package/contracts/components/Product.sol +0 -284
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/AccessManagedSimple.sol +0 -115
- package/contracts/instance/AccessManagerSimple.sol +0 -692
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/base/ComponentServiceBase.sol +0 -124
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/DistributionService.sol +0 -88
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/instance/service/IDistributionService.sol +0 -12
- package/contracts/instance/service/IPoolService.sol +0 -37
- package/contracts/instance/service/IProductService.sol +0 -107
- package/contracts/instance/service/PoolService.sol +0 -194
- package/contracts/instance/service/PoolServiceManager.sol +0 -54
- package/contracts/instance/service/ProductService.sol +0 -543
- 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 -24
- 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/NftIdSet.sol +0 -60
- 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
@@ -0,0 +1,382 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
5
|
+
import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
|
6
|
+
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
7
|
+
|
8
|
+
import {NftId} from "../type/NftId.sol";
|
9
|
+
import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
10
|
+
import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
|
11
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
12
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
13
|
+
|
14
|
+
import {IService} from "../shared/IService.sol";
|
15
|
+
import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
|
16
|
+
|
17
|
+
import {IRegistry} from "./IRegistry.sol";
|
18
|
+
import {Registry} from "./Registry.sol";
|
19
|
+
import {IRegistryService} from "./IRegistryService.sol";
|
20
|
+
import {RegistryAccessManager} from "./RegistryAccessManager.sol";
|
21
|
+
|
22
|
+
// gif admin is not technical, should sent simple txs
|
23
|
+
// foundation creates
|
24
|
+
// other guy deployes
|
25
|
+
// other guy checks (can precompute addresses and compare with what deployed)
|
26
|
+
// foundation activates
|
27
|
+
// TODO add function to deactivate releases
|
28
|
+
// TODO in next pr add getVersion() to releaseAccessManager only, set in initialize()
|
29
|
+
// TODO in next pr make single base for registry access manager, release access manager and instance access manager
|
30
|
+
|
31
|
+
contract ReleaseManager is AccessManaged
|
32
|
+
{
|
33
|
+
using ObjectTypeLib for ObjectType;
|
34
|
+
|
35
|
+
event LogReleaseCreation(VersionPart version, bytes32 salt, AccessManagerUpgradeableInitializeable accessManager);
|
36
|
+
event LogReleaseActivation(VersionPart version);
|
37
|
+
|
38
|
+
|
39
|
+
// prepareRelease
|
40
|
+
error ErrorReleaseManagerReleaseEmpty();
|
41
|
+
error ErrorReleaseManagerReleaseAlreadyCreated(VersionPart version);
|
42
|
+
|
43
|
+
// registerService
|
44
|
+
error ErrorReleaseManagerNotService(IService service);
|
45
|
+
error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
|
46
|
+
|
47
|
+
// activateNextRelease
|
48
|
+
error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
|
49
|
+
error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
50
|
+
error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
|
51
|
+
|
52
|
+
// _verifyService
|
53
|
+
error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
54
|
+
error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
55
|
+
|
56
|
+
// _verifyServiceInfo
|
57
|
+
error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
|
58
|
+
error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
|
59
|
+
error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
|
60
|
+
error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
|
61
|
+
error ErrorReleaseManagerServiceSelfRegistration(IService service);
|
62
|
+
error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
|
63
|
+
|
64
|
+
// _verifyServiceAuthorizations
|
65
|
+
error ErrorReleaseManagerServiceRoleInvalid(address service, RoleId role);
|
66
|
+
|
67
|
+
RegistryAccessManager public immutable _accessManager;
|
68
|
+
IRegistry public immutable _registry;
|
69
|
+
|
70
|
+
mapping(VersionPart version => AccessManagerUpgradeableInitializeable accessManager) internal _releaseAccessManager;
|
71
|
+
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
72
|
+
mapping(address registryService => bool isActive) internal _active;// have access to registry
|
73
|
+
|
74
|
+
VersionPart immutable internal _initial;// first active version
|
75
|
+
VersionPart internal _latest;// latest active version
|
76
|
+
VersionPart internal _next;// version to create and activate
|
77
|
+
|
78
|
+
uint internal _awaitingRegistration; // "services left to register" counter
|
79
|
+
|
80
|
+
constructor(
|
81
|
+
RegistryAccessManager accessManager,
|
82
|
+
VersionPart initialVersion)
|
83
|
+
AccessManaged(accessManager.authority())
|
84
|
+
{
|
85
|
+
_accessManager = accessManager;
|
86
|
+
_initial = initialVersion;
|
87
|
+
_next = VersionPartLib.toVersionPart(initialVersion.toInt() - 1);
|
88
|
+
_registry = new Registry();
|
89
|
+
}
|
90
|
+
|
91
|
+
/// @dev skips previous release if it was not activated
|
92
|
+
function createNextRelease()
|
93
|
+
external
|
94
|
+
restricted // GIF_ADMIN_ROLE
|
95
|
+
returns(VersionPart version)
|
96
|
+
{
|
97
|
+
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
98
|
+
_awaitingRegistration = 0;
|
99
|
+
}
|
100
|
+
|
101
|
+
function prepareNextRelease(
|
102
|
+
address[] memory addresses,
|
103
|
+
RoleId[][] memory serviceRoles,
|
104
|
+
RoleId[][] memory functionRoles,
|
105
|
+
bytes4[][][] memory selectors,
|
106
|
+
bytes32 salt
|
107
|
+
)
|
108
|
+
external
|
109
|
+
restricted // GIF_MANAGER_ROLE
|
110
|
+
returns(address releaseAccessManagerAddress, VersionPart version, bytes32 releaseSalt)
|
111
|
+
{
|
112
|
+
if(addresses.length == 0) {
|
113
|
+
revert ErrorReleaseManagerReleaseEmpty();
|
114
|
+
}
|
115
|
+
|
116
|
+
if(_awaitingRegistration > 0) {
|
117
|
+
revert ErrorReleaseManagerReleaseAlreadyCreated(version);
|
118
|
+
}
|
119
|
+
|
120
|
+
_verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
|
121
|
+
|
122
|
+
version = getNextVersion();
|
123
|
+
|
124
|
+
_releaseInfo[version].version = version;
|
125
|
+
_releaseInfo[version].addresses = addresses;
|
126
|
+
_releaseInfo[version].serviceRoles = serviceRoles;
|
127
|
+
_releaseInfo[version].functionRoles = functionRoles;
|
128
|
+
_releaseInfo[version].selectors = selectors;
|
129
|
+
_awaitingRegistration = addresses.length;
|
130
|
+
|
131
|
+
version = getNextVersion();
|
132
|
+
// ensures unique salt
|
133
|
+
releaseSalt = keccak256(
|
134
|
+
bytes.concat(
|
135
|
+
bytes32(version.toInt()),
|
136
|
+
salt));
|
137
|
+
|
138
|
+
releaseAccessManagerAddress = Clones.cloneDeterministic(_accessManager.authority(), releaseSalt);
|
139
|
+
AccessManagerUpgradeableInitializeable releaseAccessManager = AccessManagerUpgradeableInitializeable(releaseAccessManagerAddress);
|
140
|
+
|
141
|
+
_releaseAccessManager[version] = releaseAccessManager;
|
142
|
+
|
143
|
+
releaseAccessManager.initialize(address(this));
|
144
|
+
|
145
|
+
emit LogReleaseCreation(version, releaseSalt, releaseAccessManager);
|
146
|
+
}
|
147
|
+
|
148
|
+
function registerService(IService service)
|
149
|
+
external
|
150
|
+
restricted // GIF_MANAGER_ROLE
|
151
|
+
returns(NftId nftId)
|
152
|
+
{
|
153
|
+
(
|
154
|
+
IRegistry.ObjectInfo memory info,
|
155
|
+
ObjectType domain,
|
156
|
+
VersionPart version
|
157
|
+
) = _verifyService(service);
|
158
|
+
|
159
|
+
uint serviceIdx = _awaitingRegistration - 1;
|
160
|
+
address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
|
161
|
+
// TODO temp, while typescript addresses computation is not implemented
|
162
|
+
/*if(address(service) != serviceAddress) {
|
163
|
+
revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
|
164
|
+
}*/
|
165
|
+
|
166
|
+
_setServiceAuthorizations(
|
167
|
+
_releaseAccessManager[version],
|
168
|
+
// TODO temp, while typescript addresses computation is not implemented
|
169
|
+
address(service),//serviceAddress,
|
170
|
+
_releaseInfo[version].serviceRoles[serviceIdx],
|
171
|
+
_releaseInfo[version].functionRoles[serviceIdx],
|
172
|
+
_releaseInfo[version].selectors[serviceIdx]);
|
173
|
+
|
174
|
+
_awaitingRegistration = serviceIdx;
|
175
|
+
// checked in registry
|
176
|
+
_releaseInfo[version].domains.push(domain);
|
177
|
+
|
178
|
+
nftId = _registry.registerService(info, version, domain);
|
179
|
+
|
180
|
+
service.linkToRegisteredNftId();
|
181
|
+
}
|
182
|
+
|
183
|
+
function activateNextRelease()
|
184
|
+
external
|
185
|
+
restricted // GIF_ADMIN_ROLE
|
186
|
+
{
|
187
|
+
VersionPart version = _next;
|
188
|
+
address service = _registry.getServiceAddress(REGISTRY(), version);
|
189
|
+
|
190
|
+
// release exists, registry service is a MUST
|
191
|
+
//if(_releaseAccessManager[version] == address(0)) {
|
192
|
+
if(service == address(0)) {
|
193
|
+
revert ErrorReleaseManagerReleaseNotCreated(version);
|
194
|
+
}
|
195
|
+
|
196
|
+
// release fully deployed
|
197
|
+
if(_awaitingRegistration > 0) {
|
198
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
199
|
+
}
|
200
|
+
|
201
|
+
// release is not activated
|
202
|
+
if(_releaseInfo[version].activatedAt.gtz()) {
|
203
|
+
revert ErrorReleaseManagerReleaseAlreadyActivated(version);
|
204
|
+
}
|
205
|
+
|
206
|
+
_latest = version;
|
207
|
+
|
208
|
+
_active[service] = true;
|
209
|
+
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
210
|
+
|
211
|
+
emit LogReleaseActivation(version);
|
212
|
+
}
|
213
|
+
|
214
|
+
//--- view functions ----------------------------------------------------//
|
215
|
+
|
216
|
+
function predictDeterministicAddress(
|
217
|
+
address implementation,
|
218
|
+
bytes32 salt,
|
219
|
+
address deployer
|
220
|
+
) external pure returns (address predicted) {
|
221
|
+
return Clones.predictDeterministicAddress(implementation, salt, deployer);
|
222
|
+
}
|
223
|
+
|
224
|
+
function isActiveRegistryService(address service) external view returns(bool) {
|
225
|
+
return _active[service];
|
226
|
+
}
|
227
|
+
|
228
|
+
function isValidRelease(VersionPart version) external view returns(bool) {
|
229
|
+
return _releaseInfo[version].activatedAt.gtz();
|
230
|
+
}
|
231
|
+
|
232
|
+
function getRegistry() external view returns(address) {
|
233
|
+
return (address(_registry));
|
234
|
+
}
|
235
|
+
|
236
|
+
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
237
|
+
return _releaseInfo[version];
|
238
|
+
}
|
239
|
+
|
240
|
+
function getNextVersion() public view returns(VersionPart) {
|
241
|
+
return _next;
|
242
|
+
}
|
243
|
+
|
244
|
+
function getLatestVersion() external view returns(VersionPart) {
|
245
|
+
return _latest;
|
246
|
+
}
|
247
|
+
|
248
|
+
function getInitialVersion() external view returns(VersionPart) {
|
249
|
+
return _initial;
|
250
|
+
}
|
251
|
+
|
252
|
+
function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerUpgradeableInitializeable) {
|
253
|
+
return _releaseAccessManager[version];
|
254
|
+
}
|
255
|
+
|
256
|
+
//--- private functions ----------------------------------------------------//
|
257
|
+
|
258
|
+
function _verifyService(IService service)
|
259
|
+
internal
|
260
|
+
returns(
|
261
|
+
IRegistry.ObjectInfo memory serviceInfo,
|
262
|
+
ObjectType serviceDomain,
|
263
|
+
VersionPart serviceVersion
|
264
|
+
)
|
265
|
+
{
|
266
|
+
if(!service.supportsInterface(type(IService).interfaceId)) {
|
267
|
+
revert ErrorReleaseManagerNotService(service);
|
268
|
+
}
|
269
|
+
|
270
|
+
address owner = msg.sender;
|
271
|
+
address serviceAuthority = service.authority();
|
272
|
+
serviceVersion = service.getVersion().toMajorPart();
|
273
|
+
serviceDomain = service.getDomain();// checked in registry
|
274
|
+
serviceInfo = service.getInitialInfo();
|
275
|
+
|
276
|
+
_verifyServiceInfo(service, serviceInfo, owner);
|
277
|
+
|
278
|
+
VersionPart releaseVersion = getNextVersion(); // never 0
|
279
|
+
address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
|
280
|
+
|
281
|
+
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
282
|
+
if(serviceAuthority != releaseAuthority) {
|
283
|
+
revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
|
284
|
+
service,
|
285
|
+
serviceAuthority,
|
286
|
+
releaseAuthority);
|
287
|
+
}
|
288
|
+
|
289
|
+
if(serviceVersion != releaseVersion) {
|
290
|
+
revert ErrorReleaseManagerServiceReleaseVersionMismatch(
|
291
|
+
service,
|
292
|
+
serviceVersion,
|
293
|
+
releaseVersion);
|
294
|
+
}
|
295
|
+
}
|
296
|
+
|
297
|
+
function _verifyServiceInfo(
|
298
|
+
IService service,
|
299
|
+
IRegistry.ObjectInfo memory info,
|
300
|
+
address expectedOwner // assume always valid, can not be 0
|
301
|
+
)
|
302
|
+
internal
|
303
|
+
view
|
304
|
+
{
|
305
|
+
if(info.objectAddress != address(service)) {
|
306
|
+
revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
|
307
|
+
}
|
308
|
+
|
309
|
+
if(info.isInterceptor != false) { // service is never interceptor
|
310
|
+
revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
|
311
|
+
}
|
312
|
+
|
313
|
+
if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
|
314
|
+
revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
|
315
|
+
}
|
316
|
+
|
317
|
+
address owner = info.initialOwner;
|
318
|
+
|
319
|
+
if(owner != expectedOwner) { // registerable owner protection
|
320
|
+
revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
|
321
|
+
}
|
322
|
+
|
323
|
+
if(owner == address(service)) {
|
324
|
+
revert ErrorReleaseManagerServiceSelfRegistration(service);
|
325
|
+
}
|
326
|
+
|
327
|
+
if(_registry.isRegistered(owner)) {
|
328
|
+
revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
|
329
|
+
}
|
330
|
+
}
|
331
|
+
|
332
|
+
function _verifyReleaseAuthorizations(
|
333
|
+
address[] memory serviceAddress,
|
334
|
+
RoleId[][] memory serviceRoles,
|
335
|
+
RoleId[][] memory functionRoles,
|
336
|
+
bytes4[][][] memory selectors
|
337
|
+
)
|
338
|
+
internal
|
339
|
+
view
|
340
|
+
{
|
341
|
+
for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
|
342
|
+
{
|
343
|
+
for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
|
344
|
+
{
|
345
|
+
RoleId role = serviceRoles[serviceIdx][roleIdx];
|
346
|
+
if(role == ADMIN_ROLE()) {
|
347
|
+
revert ErrorReleaseManagerServiceRoleInvalid(serviceAddress[serviceIdx], role);
|
348
|
+
}
|
349
|
+
}
|
350
|
+
}
|
351
|
+
// TODO no duplicate service "domain" role per release
|
352
|
+
// TODO no duplicate service roles per service
|
353
|
+
// TODO no duplicate service function roles per service
|
354
|
+
// TODO no duplicate service function selectors per service
|
355
|
+
}
|
356
|
+
|
357
|
+
function _setServiceAuthorizations(
|
358
|
+
IAccessManager accessManager,
|
359
|
+
address serviceAddress,
|
360
|
+
RoleId[] memory serviceRoles,
|
361
|
+
RoleId[] memory functionRoles,
|
362
|
+
bytes4[][] memory selectors
|
363
|
+
)
|
364
|
+
internal
|
365
|
+
{
|
366
|
+
for(uint idx = 0; idx < functionRoles.length; idx++)
|
367
|
+
{
|
368
|
+
accessManager.setTargetFunctionRole(
|
369
|
+
serviceAddress,
|
370
|
+
selectors[idx],
|
371
|
+
functionRoles[idx].toInt());
|
372
|
+
}
|
373
|
+
|
374
|
+
for(uint idx = 0; idx < serviceRoles.length; idx++)
|
375
|
+
{
|
376
|
+
accessManager.grantRole(
|
377
|
+
serviceRoles[idx].toInt(),
|
378
|
+
serviceAddress,
|
379
|
+
0);
|
380
|
+
}
|
381
|
+
}
|
382
|
+
}
|
@@ -6,16 +6,14 @@ 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 {
|
9
|
+
import {VersionPart} from "../type/Version.sol";
|
10
|
+
import {REGISTRY} from "../type/ObjectType.sol";
|
10
11
|
import {NftOwnable} from "../shared/NftOwnable.sol";
|
11
12
|
|
12
13
|
/// @title contract to register token per GIF major release.
|
13
14
|
contract TokenRegistry is
|
14
15
|
NftOwnable
|
15
16
|
{
|
16
|
-
|
17
|
-
string public constant REGISTRY_SERVICE_NAME = "RegistryService";
|
18
|
-
|
19
17
|
event LogRegistered(address token, string symbol, uint256 decimals);
|
20
18
|
event LogTokenStateSet(address token, VersionPart majorVersion, bool active);
|
21
19
|
|
@@ -28,20 +26,32 @@ contract TokenRegistry is
|
|
28
26
|
mapping(address token => bool registered) internal _registered;
|
29
27
|
mapping(address token => mapping(VersionPart majorVersion => bool isActive)) internal _active;
|
30
28
|
|
31
|
-
constructor(
|
32
|
-
|
33
|
-
|
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
|
+
}
|
34
42
|
|
35
43
|
|
36
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
|
37
46
|
function linkToNftOwnable(address registryAddress)
|
38
47
|
external
|
39
48
|
onlyOwner
|
40
49
|
{
|
41
50
|
IRegistry registry = IRegistry(registryAddress);
|
42
|
-
|
51
|
+
// TODO use _latest instead of _initial -> but _latest is 0 before first release activation
|
52
|
+
address registryServiceAddress = registry.getServiceAddress(REGISTRY(), registry.getNextVersion());
|
43
53
|
|
44
|
-
_linkToNftOwnable(
|
54
|
+
_linkToNftOwnable(registryServiceAddress);
|
45
55
|
}
|
46
56
|
|
47
57
|
/// @dev token state is informative, registry have no clue about used tokens
|
@@ -59,7 +69,7 @@ contract TokenRegistry is
|
|
59
69
|
// verify valid major version
|
60
70
|
// ensure major version increments is one
|
61
71
|
uint256 version = majorVersion.toInt();
|
62
|
-
if (
|
72
|
+
if (!getRegistry().isValidRelease(majorVersion)) {
|
63
73
|
revert TokenMajorVersionInvalid(majorVersion);
|
64
74
|
}
|
65
75
|
|
@@ -80,7 +90,7 @@ contract TokenRegistry is
|
|
80
90
|
return _registered[token];
|
81
91
|
}
|
82
92
|
|
83
|
-
|
93
|
+
function isActive(address token, VersionPart majorVersion) external view returns (bool) {
|
84
94
|
return _active[token][majorVersion];
|
85
95
|
}
|
86
96
|
|
@@ -92,12 +102,7 @@ contract TokenRegistry is
|
|
92
102
|
revert NotContract(token);
|
93
103
|
}
|
94
104
|
|
95
|
-
// MUST
|
96
|
-
if(ERC165Checker.supportsInterface(token, type(IRegisterable).interfaceId)) {
|
97
|
-
revert NotToken(token);
|
98
|
-
}
|
99
|
-
|
100
|
-
// MUST have decimals > 0
|
105
|
+
// MUST have decimals > 0 (indicator that this is in fact an erc20 token)
|
101
106
|
IERC20Metadata erc20 = IERC20Metadata(token);
|
102
107
|
if(erc20.decimals() == 0) {
|
103
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
|
+
}
|