@etherisc/gif-next 0.0.2-ec436bf-674 → 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 +454 -554
- 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 -3054
- 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 +452 -364
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +320 -117
- 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} +338 -354
- 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 +283 -220
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +332 -225
- 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 +303 -324
- 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 +346 -331
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +319 -143
- 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/distribution/DistributionServiceManager.sol +54 -0
- 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 +62 -24
- package/contracts/instance/IInstanceService.sol +56 -13
- package/contracts/instance/Instance.sol +151 -365
- 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 +243 -124
- package/contracts/instance/InstanceServiceManager.sol +12 -24
- 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 -42
- package/contracts/registry/IRegistryService.sol +41 -16
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +250 -268
- package/contracts/registry/RegistryAccessManager.sol +132 -0
- package/contracts/registry/RegistryService.sol +94 -262
- 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 +65 -83
- 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 -775
- 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 -448
- 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 -855
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -460
- 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 -160
- 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 -243
- package/contracts/components/Product.sol +0 -297
- 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 -118
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/DistributionService.sol +0 -87
- package/contracts/instance/service/DistributionServiceManager.sol +0 -53
- 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 -193
- package/contracts/instance/service/PoolServiceManager.sol +0 -53
- 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 -89
- /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,132 @@
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
5
|
+
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
6
|
+
import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
|
7
|
+
import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
8
|
+
|
9
|
+
import {RoleId, RoleIdLib, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE} from "../type/RoleId.sol";
|
10
|
+
|
11
|
+
import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
|
12
|
+
|
13
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
14
|
+
import {ReleaseManager} from "./ReleaseManager.sol";
|
15
|
+
|
16
|
+
/*
|
17
|
+
1) GIF_MANAGER_ROLE
|
18
|
+
- can have arbitrary number of members
|
19
|
+
- responsible for services registrations
|
20
|
+
- responsible for token registration and activation
|
21
|
+
2) GIF_ADMIN_ROLE
|
22
|
+
- admin of GIF_MANAGER_ROLE
|
23
|
+
- MUST have 1 member at any time
|
24
|
+
- granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
|
25
|
+
- responsible for creation and activation of releases
|
26
|
+
|
27
|
+
*/
|
28
|
+
|
29
|
+
contract RegistryAccessManager is AccessManaged, Initializable
|
30
|
+
{
|
31
|
+
error ErrorRegistryAccessManagerReleaseManagerAuthorityMismatch();
|
32
|
+
error ErrorRegistryAccessManagerTokenRegistryZero();
|
33
|
+
|
34
|
+
uint64 public constant UNIQUE_ROLE_ID_MIN = 1000000;
|
35
|
+
|
36
|
+
address private _releaseManager;
|
37
|
+
address private _tokenRegistry;
|
38
|
+
|
39
|
+
uint64 private _idNext; // role id
|
40
|
+
|
41
|
+
|
42
|
+
// IMPORTNAT: this.authority() must be valid before initialize() function....
|
43
|
+
// -> have constructor and initializer function
|
44
|
+
constructor()
|
45
|
+
AccessManaged(msg.sender)
|
46
|
+
{
|
47
|
+
AccessManagerUpgradeableInitializeable accessManager = new AccessManagerUpgradeableInitializeable();
|
48
|
+
accessManager.initialize(address(this));
|
49
|
+
setAuthority(address(accessManager));
|
50
|
+
}
|
51
|
+
|
52
|
+
function initialize(address admin, address manager, address releaseManager, address tokenRegistry)
|
53
|
+
external
|
54
|
+
initializer
|
55
|
+
{
|
56
|
+
// validate input
|
57
|
+
if(IAccessManaged(releaseManager).authority() != authority()) {
|
58
|
+
revert ErrorRegistryAccessManagerReleaseManagerAuthorityMismatch();
|
59
|
+
}
|
60
|
+
if(tokenRegistry == address(0)) {
|
61
|
+
revert ErrorRegistryAccessManagerTokenRegistryZero();
|
62
|
+
}
|
63
|
+
|
64
|
+
_releaseManager = releaseManager;
|
65
|
+
_tokenRegistry = tokenRegistry;
|
66
|
+
_idNext = UNIQUE_ROLE_ID_MIN;
|
67
|
+
|
68
|
+
_setAdminRole();
|
69
|
+
_setManagerRole();
|
70
|
+
|
71
|
+
_grantRole(GIF_ADMIN_ROLE(), admin, 0);
|
72
|
+
_grantRole(GIF_MANAGER_ROLE(), manager, 0);
|
73
|
+
|
74
|
+
_setRoleAdmin(GIF_MANAGER_ROLE(), GIF_ADMIN_ROLE());
|
75
|
+
}
|
76
|
+
|
77
|
+
/*function transferAdmin(address to)
|
78
|
+
external
|
79
|
+
restricted // only with GIF_ADMIN_ROLE or nft owner
|
80
|
+
{
|
81
|
+
_accessManager.revoke(GIF_ADMIN_ROLE, );
|
82
|
+
_accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
|
83
|
+
}*/
|
84
|
+
|
85
|
+
//--- view functions ----------------------------------------------------//
|
86
|
+
|
87
|
+
//--- private functions -------------------------------------------------//
|
88
|
+
|
89
|
+
function _setAdminRole() private
|
90
|
+
{
|
91
|
+
bytes4[] memory functionSelector = new bytes4[](1);
|
92
|
+
|
93
|
+
// for ReleaseManager
|
94
|
+
functionSelector[0] = ReleaseManager.createNextRelease.selector;
|
95
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
|
96
|
+
|
97
|
+
functionSelector[0] = ReleaseManager.activateNextRelease.selector;
|
98
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
|
99
|
+
}
|
100
|
+
|
101
|
+
function _setManagerRole() private
|
102
|
+
{
|
103
|
+
bytes4[] memory functionSelector = new bytes4[](1);
|
104
|
+
|
105
|
+
// for TokenRegistry
|
106
|
+
functionSelector[0] = TokenRegistry.setActive.selector;
|
107
|
+
_setTargetFunctionRole(address(_tokenRegistry), functionSelector, GIF_MANAGER_ROLE());
|
108
|
+
|
109
|
+
// for ReleaseManager
|
110
|
+
functionSelector[0] = ReleaseManager.registerService.selector;
|
111
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
|
112
|
+
|
113
|
+
functionSelector[0] = ReleaseManager.prepareNextRelease.selector;
|
114
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
|
115
|
+
}
|
116
|
+
|
117
|
+
function _setTargetFunctionRole(address target, bytes4[] memory selectors, RoleId roleId) private {
|
118
|
+
AccessManager(authority()).setTargetFunctionRole(target, selectors, roleId.toInt());
|
119
|
+
}
|
120
|
+
|
121
|
+
function _setRoleAdmin(RoleId roleId, RoleId adminRoleId) private {
|
122
|
+
AccessManager(authority()).setRoleAdmin(roleId.toInt(), adminRoleId.toInt());
|
123
|
+
}
|
124
|
+
|
125
|
+
function _grantRole(RoleId roleId, address account, uint32 executionDelay) private {
|
126
|
+
AccessManager(authority()).grantRole(roleId.toInt(), account, executionDelay);
|
127
|
+
}
|
128
|
+
|
129
|
+
function _getNextRoleId() private returns(RoleId roleId) {
|
130
|
+
roleId = RoleIdLib.toRoleId(_idNext++);
|
131
|
+
}
|
132
|
+
}
|
@@ -2,219 +2,137 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
|
5
|
-
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
|
+
// import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
6
6
|
|
7
7
|
import {IRegistry} from "./IRegistry.sol";
|
8
8
|
import {IInstance} from "../instance/IInstance.sol";
|
9
9
|
|
10
|
-
import {
|
11
|
-
|
12
|
-
|
13
|
-
import {
|
14
|
-
import {IPoolComponent} from "../../contracts/components/IPoolComponent.sol";
|
15
|
-
import {IProductComponent} from "../../contracts/components/IProductComponent.sol";
|
16
|
-
import {IDistributionComponent} from "../../contracts/components/IDistributionComponent.sol";
|
10
|
+
import {IComponent} from "../../contracts/shared/IComponent.sol";
|
11
|
+
import {IPoolComponent} from "../../contracts/pool/IPoolComponent.sol";
|
12
|
+
import {IProductComponent} from "../../contracts/product/IProductComponent.sol";
|
13
|
+
import {IDistributionComponent} from "../../contracts/distribution/IDistributionComponent.sol";
|
17
14
|
|
18
15
|
import {IVersionable} from "../../contracts/shared/IVersionable.sol";
|
19
16
|
import {Versionable} from "../../contracts/shared/Versionable.sol";
|
20
17
|
import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
|
18
|
+
import {Registerable} from "../../contracts/shared/Registerable.sol";
|
21
19
|
|
22
|
-
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/
|
23
|
-
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, POLICY, BUNDLE} from "../../contracts/
|
24
|
-
import {StateId, ACTIVE, PAUSED} from "../../contracts/
|
25
|
-
import {NftId, NftIdLib, zeroNftId} from "../../contracts/
|
26
|
-
import {Fee, FeeLib} from "../../contracts/
|
27
|
-
import {Version, VersionPart, VersionLib} from "../../contracts/
|
20
|
+
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/type/RoleId.sol";
|
21
|
+
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, PRICE} from "../../contracts/type/ObjectType.sol";
|
22
|
+
import {StateId, ACTIVE, PAUSED} from "../../contracts/type/StateId.sol";
|
23
|
+
import {NftId, NftIdLib, zeroNftId} from "../../contracts/type/NftId.sol";
|
24
|
+
import {Fee, FeeLib} from "../../contracts/type/Fee.sol";
|
25
|
+
import {Version, VersionPart, VersionLib} from "../../contracts/type/Version.sol";
|
28
26
|
|
29
27
|
import {Service} from "../shared/Service.sol";
|
30
28
|
import {IService} from "../shared/IService.sol";
|
31
29
|
import {IRegistryService} from "./IRegistryService.sol";
|
32
30
|
import {Registry} from "./Registry.sol";
|
33
|
-
import {ChainNft} from "./ChainNft.sol";
|
34
31
|
|
35
32
|
contract RegistryService is
|
36
|
-
AccessManagedUpgradeable,
|
37
33
|
Service,
|
38
34
|
IRegistryService
|
39
35
|
{
|
40
36
|
using NftIdLib for NftId;
|
41
37
|
|
42
|
-
// TODO move errors to interface contract
|
43
|
-
error SelfRegistration();
|
44
|
-
error NotRegistryOwner();
|
45
|
-
|
46
|
-
error NotService();
|
47
|
-
error NotInstance();
|
48
|
-
error NotProduct();
|
49
|
-
error NotPool();
|
50
|
-
error NotDistribution();
|
51
|
-
|
52
|
-
error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
|
53
|
-
error NotRegisterableOwner(address expectedOwner);
|
54
|
-
error RegisterableOwnerIsZero();
|
55
|
-
error RegisterableOwnerIsRegistered();
|
56
|
-
error InvalidInitialOwner(address initialOwner);
|
57
|
-
error InvalidAddress(address registerableAddress);
|
58
|
-
|
59
|
-
// Initial value for constant variable has to be compile-time constant
|
60
|
-
// TODO define types as constants?
|
61
|
-
//ObjectType public constant SERVICE_TYPE = REGISTRY();
|
62
|
-
string public constant NAME = "RegistryService";
|
63
|
-
|
64
38
|
// TODO update to real hash when registry is stable
|
65
39
|
bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
|
66
40
|
|
67
|
-
|
41
|
+
// From IService
|
42
|
+
function getDomain() public pure override returns(ObjectType serviceDomain) {
|
43
|
+
return REGISTRY();
|
44
|
+
}
|
68
45
|
|
69
|
-
|
70
|
-
// msg.sender - ONLY registry owner
|
71
|
-
// CAN NOT register itself
|
72
|
-
// CAN register ONLY valid object-parent types combinations for SERVICE
|
73
|
-
// CAN register ONLY IRegisterable address he owns
|
74
|
-
// IMPORTANT: MUST NOT check owner before calling external contract
|
75
|
-
function registerService(IService service)
|
76
|
-
external
|
77
|
-
// TODO restrict access - registryService.registerService must use accessmanager for checking permissions as
|
78
|
-
// services are not always owned by registry owner - actually only registry service is owned by registry owner
|
46
|
+
// from Versionable
|
79
47
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
48
|
+
/// @dev top level initializer
|
49
|
+
function _initialize(
|
50
|
+
address owner,
|
51
|
+
bytes memory data
|
52
|
+
)
|
53
|
+
internal
|
54
|
+
virtual override
|
55
|
+
initializer()
|
84
56
|
{
|
57
|
+
address initialOwner;
|
58
|
+
address registryAddress;
|
59
|
+
address authority;
|
60
|
+
(registryAddress, initialOwner, authority) = abi.decode(data, (address, address, address));
|
85
61
|
|
86
|
-
|
87
|
-
|
88
|
-
revert NotService();
|
89
|
-
}
|
90
|
-
|
91
|
-
(
|
92
|
-
info,
|
93
|
-
data
|
94
|
-
) = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
|
95
|
-
|
96
|
-
info.nftId = _registry.register(info);
|
97
|
-
service.linkToRegisteredNftId();
|
98
|
-
return (
|
99
|
-
info,
|
100
|
-
data
|
101
|
-
);
|
62
|
+
initializeService(registryAddress, authority, owner);
|
63
|
+
registerInterface(type(IRegistryService).interfaceId);
|
102
64
|
}
|
103
65
|
|
104
|
-
|
105
|
-
// 1) add owner arg (service MUST pass it's msg.sender as owner)
|
106
|
-
// 2) check service allowance
|
107
|
-
// 3) comment self registrstion check
|
108
|
-
//function registerInstance(IRegisterable instance, address owner)
|
109
|
-
function registerInstance(IRegisterable instance)
|
66
|
+
function registerInstance(IRegisterable instance, address owner)
|
110
67
|
external
|
68
|
+
restricted
|
111
69
|
returns(
|
112
|
-
IRegistry.ObjectInfo memory info
|
113
|
-
bytes memory data
|
70
|
+
IRegistry.ObjectInfo memory info
|
114
71
|
)
|
115
72
|
{
|
116
73
|
if(!instance.supportsInterface(type(IInstance).interfaceId)) {
|
117
|
-
revert
|
74
|
+
revert ErrorRegistryServiceNotInstance(address(instance));
|
118
75
|
}
|
119
76
|
|
120
|
-
(
|
121
|
-
|
122
|
-
data
|
123
|
-
) = _getAndVerifyContractInfo(instance, INSTANCE(), msg.sender);
|
77
|
+
info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
|
78
|
+
info.nftId = getRegistry().register(info);
|
124
79
|
|
125
|
-
info.nftId = _registry.register(info);
|
126
80
|
instance.linkToRegisteredNftId(); // asume safe
|
127
|
-
|
128
|
-
return (
|
129
|
-
info,
|
130
|
-
data
|
131
|
-
);
|
132
81
|
}
|
133
82
|
|
134
|
-
function registerProduct(
|
83
|
+
function registerProduct(IComponent product, address owner)
|
135
84
|
external
|
136
85
|
restricted
|
137
86
|
returns(
|
138
|
-
IRegistry.ObjectInfo memory info
|
139
|
-
bytes memory data
|
87
|
+
IRegistry.ObjectInfo memory info
|
140
88
|
)
|
141
89
|
{
|
142
90
|
// CAN revert if no ERC165 support -> will revert with empty message
|
143
91
|
if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
|
144
|
-
revert
|
92
|
+
revert ErrorRegistryServiceNotProduct(address(product));
|
145
93
|
}
|
146
94
|
|
147
|
-
(
|
148
|
-
|
149
|
-
data
|
150
|
-
) = _getAndVerifyContractInfo(product, PRODUCT(), owner);
|
151
|
-
|
152
|
-
NftId serviceNftId = _registry.getNftId(msg.sender);
|
153
|
-
|
154
|
-
info.nftId = _registry.register(info);
|
155
|
-
// TODO unsafe, let component or its owner derive nftId latter, when state assumptions and modifications of GIF contracts are finished
|
156
|
-
product.linkToRegisteredNftId();
|
157
|
-
|
158
|
-
return (
|
159
|
-
info,
|
160
|
-
data
|
161
|
-
);
|
95
|
+
info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
|
96
|
+
info.nftId = getRegistry().register(info);
|
162
97
|
}
|
163
98
|
|
164
|
-
function registerPool(
|
99
|
+
function registerPool(IComponent pool, address owner)
|
165
100
|
external
|
166
101
|
restricted
|
167
102
|
returns(
|
168
|
-
IRegistry.ObjectInfo memory info
|
169
|
-
bytes memory data
|
103
|
+
IRegistry.ObjectInfo memory info
|
170
104
|
)
|
171
105
|
{
|
172
106
|
if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
|
173
|
-
revert
|
107
|
+
revert ErrorRegistryServiceNotPool(address(pool));
|
174
108
|
}
|
175
109
|
|
176
|
-
(
|
177
|
-
|
178
|
-
data
|
179
|
-
) = _getAndVerifyContractInfo(pool, POOL(), owner);
|
180
|
-
|
181
|
-
NftId serviceNftId = _registry.getNftId(msg.sender);
|
182
|
-
|
183
|
-
info.nftId = _registry.register(info);
|
184
|
-
pool.linkToRegisteredNftId();
|
185
|
-
|
186
|
-
return (
|
187
|
-
info,
|
188
|
-
data
|
189
|
-
);
|
110
|
+
info = _getAndVerifyContractInfo(pool, POOL(), owner);
|
111
|
+
info.nftId = getRegistry().register(info);
|
190
112
|
}
|
191
113
|
|
192
|
-
function registerDistribution(
|
114
|
+
function registerDistribution(IComponent distribution, address owner)
|
193
115
|
external
|
194
116
|
restricted
|
195
117
|
returns(
|
196
|
-
IRegistry.ObjectInfo memory info
|
197
|
-
bytes memory data
|
118
|
+
IRegistry.ObjectInfo memory info
|
198
119
|
)
|
199
120
|
{
|
200
121
|
if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
|
201
|
-
revert
|
122
|
+
revert ErrorRegistryServiceNotDistribution(address(distribution));
|
202
123
|
}
|
203
124
|
|
204
|
-
(
|
205
|
-
|
206
|
-
|
207
|
-
) = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
|
208
|
-
|
209
|
-
NftId serviceNftId = _registry.getNftId(msg.sender);
|
210
|
-
|
211
|
-
info.nftId = _registry.register(info);
|
212
|
-
distribution.linkToRegisteredNftId();
|
125
|
+
info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
|
126
|
+
info.nftId = getRegistry().register(info);
|
127
|
+
}
|
213
128
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
)
|
129
|
+
function registerDistributor(IRegistry.ObjectInfo memory info)
|
130
|
+
external
|
131
|
+
restricted
|
132
|
+
returns(NftId nftId)
|
133
|
+
{
|
134
|
+
_verifyObjectInfo(info, DISTRIBUTOR());
|
135
|
+
nftId = getRegistry().register(info);
|
218
136
|
}
|
219
137
|
|
220
138
|
function registerPolicy(IRegistry.ObjectInfo memory info)
|
@@ -222,11 +140,8 @@ contract RegistryService is
|
|
222
140
|
restricted
|
223
141
|
returns(NftId nftId)
|
224
142
|
{
|
225
|
-
NftId senderNftId = _registry.getNftId(msg.sender);
|
226
|
-
|
227
143
|
_verifyObjectInfo(info, POLICY());
|
228
|
-
|
229
|
-
nftId = _registry.register(info);
|
144
|
+
nftId = getRegistry().register(info);
|
230
145
|
}
|
231
146
|
|
232
147
|
function registerBundle(IRegistry.ObjectInfo memory info)
|
@@ -234,166 +149,83 @@ contract RegistryService is
|
|
234
149
|
restricted
|
235
150
|
returns(NftId nftId)
|
236
151
|
{
|
237
|
-
|
238
|
-
NftId senderNftId = _registry.getNftId(msg.sender);
|
239
|
-
|
240
152
|
_verifyObjectInfo(info, BUNDLE());
|
241
|
-
|
242
|
-
nftId = _registry.register(info);
|
153
|
+
nftId = getRegistry().register(info);
|
243
154
|
}
|
244
155
|
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
}
|
250
|
-
//function getType() public pure override(IService, ServiceBase) returns(ObjectType serviceType) {
|
251
|
-
// return SERVICE_TYPE;
|
252
|
-
//}
|
253
|
-
|
254
|
-
|
255
|
-
// from Versionable
|
256
|
-
|
257
|
-
/// @dev top level initializer
|
258
|
-
// 1) registry is non upgradeable -> don't need a proxy and uses constructor !
|
259
|
-
// 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
|
260
|
-
// 3) deploy registry -> pass registry service address as constructor argument
|
261
|
-
// registry is getting instantiated and locked to registry service address forever
|
262
|
-
function _initialize(
|
263
|
-
address owner,
|
264
|
-
bytes memory data
|
265
|
-
)
|
266
|
-
internal
|
267
|
-
initializer
|
268
|
-
virtual override
|
156
|
+
function registerStake(IRegistry.ObjectInfo memory info)
|
157
|
+
external
|
158
|
+
restricted
|
159
|
+
returns(NftId nftId)
|
269
160
|
{
|
270
|
-
(
|
271
|
-
|
272
|
-
bytes memory registryByteCodeWithInitCode
|
273
|
-
) = abi.decode(data, (address, bytes));
|
274
|
-
|
275
|
-
__AccessManaged_init(initialAuthority);
|
276
|
-
|
277
|
-
bytes memory encodedConstructorArguments = abi.encode(
|
278
|
-
owner,
|
279
|
-
getMajorVersion());
|
280
|
-
|
281
|
-
bytes memory registryCreationCode = ContractDeployerLib.getCreationCode(
|
282
|
-
registryByteCodeWithInitCode,
|
283
|
-
encodedConstructorArguments);
|
284
|
-
|
285
|
-
IRegistry registry = IRegistry(ContractDeployerLib.deploy(
|
286
|
-
registryCreationCode,
|
287
|
-
REGISTRY_CREATION_CODE_HASH));
|
288
|
-
|
289
|
-
NftId registryNftId = registry.getNftId(address(registry));
|
290
|
-
|
291
|
-
_initializeService(address(registry), owner);
|
292
|
-
|
293
|
-
// TODO why do registry service proxy need to keep its nftId??? -> no registryServiceNftId checks in implementation
|
294
|
-
// if they are -> use registry address to obtain owner of registry service nft (works the same with any registerable and(or) implementation)
|
295
|
-
linkToRegisteredNftId();
|
296
|
-
_registerInterface(type(IRegistryService).interfaceId);
|
161
|
+
_verifyObjectInfo(info, STAKE());
|
162
|
+
nftId = getRegistry().register(info);
|
297
163
|
}
|
298
164
|
|
299
|
-
//
|
165
|
+
// Internal
|
166
|
+
|
300
167
|
function _getAndVerifyContractInfo(
|
301
168
|
IRegisterable registerable,
|
302
169
|
ObjectType expectedType, // assume can be valid only
|
303
|
-
address expectedOwner // assume can be 0
|
170
|
+
address expectedOwner // assume can be 0 when given by other service
|
304
171
|
)
|
305
172
|
internal
|
306
173
|
view
|
307
174
|
returns(
|
308
|
-
IRegistry.ObjectInfo memory info
|
309
|
-
bytes memory data
|
175
|
+
IRegistry.ObjectInfo memory info
|
310
176
|
)
|
311
177
|
{
|
312
|
-
(
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
178
|
+
info = registerable.getInitialInfo();
|
179
|
+
|
180
|
+
if(info.objectAddress != address(registerable)) {
|
181
|
+
revert ErrorRegistryServiceRegisterableAddressInvalid(registerable, info.objectAddress);
|
182
|
+
}
|
317
183
|
|
318
184
|
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
319
|
-
revert
|
185
|
+
revert ErrorRegistryServiceRegisterableTypeInvalid(registerable, expectedType, info.objectType);
|
320
186
|
}
|
321
187
|
|
322
188
|
address owner = info.initialOwner;
|
323
189
|
|
324
|
-
//
|
325
|
-
|
326
|
-
// any address may create a new instance via instance service
|
327
|
-
} else {
|
328
|
-
if(owner != expectedOwner) { // registerable owner protection
|
329
|
-
revert NotRegisterableOwner(expectedOwner);
|
330
|
-
}
|
190
|
+
if(owner != expectedOwner) { // registerable owner protection
|
191
|
+
revert ErrorRegistryServiceRegisterableOwnerInvalid(registerable, expectedOwner, owner);
|
331
192
|
}
|
332
193
|
|
333
194
|
if(owner == address(registerable)) {
|
334
|
-
revert
|
195
|
+
revert ErrorRegistryServiceRegisterableSelfRegistration(registerable);
|
335
196
|
}
|
336
197
|
|
337
198
|
if(owner == address(0)) {
|
338
|
-
revert
|
199
|
+
revert ErrorRegistryServiceRegisterableOwnerZero(registerable);
|
339
200
|
}
|
340
201
|
|
341
202
|
if(getRegistry().isRegistered(owner)) {
|
342
|
-
revert
|
203
|
+
revert ErrorRegistryServiceRegisterableOwnerRegistered(registerable, owner);
|
343
204
|
}
|
344
|
-
|
345
|
-
/*NftId parentNftId = info.parentNftId;
|
346
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
347
|
-
|
348
|
-
if(parentInfo.objectType != parentType) { // parent registration + type
|
349
|
-
revert InvalidParent(parentNftId);
|
350
|
-
}*/
|
351
|
-
|
352
|
-
return(
|
353
|
-
info,
|
354
|
-
data
|
355
|
-
);
|
356
205
|
}
|
357
206
|
|
358
|
-
// parent checks done in registry because of approve()
|
359
207
|
function _verifyObjectInfo(
|
360
208
|
IRegistry.ObjectInfo memory info,
|
361
|
-
ObjectType
|
209
|
+
ObjectType expectedType
|
362
210
|
)
|
363
211
|
internal
|
364
212
|
view
|
365
213
|
{
|
366
|
-
|
367
|
-
|
368
|
-
}
|
214
|
+
// enforce instead of check
|
215
|
+
info.objectAddress = address(0);
|
369
216
|
|
370
|
-
if(
|
371
|
-
|
372
|
-
info.initialOwner == address(0)) {
|
373
|
-
// TODO non registered address can register object(e.g. POLICY()) and then transfer associated nft to registered contract
|
374
|
-
// what are motivations to do so?
|
375
|
-
// at least registered contract can not register objects by itself, SERVICE,
|
376
|
-
revert InvalidInitialOwner(info.initialOwner);
|
217
|
+
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
218
|
+
revert ErrorRegistryServiceObjectTypeInvalid(expectedType, info.objectType);
|
377
219
|
}
|
378
220
|
|
379
|
-
|
380
|
-
/*if(info.initialOwner == msg.sender) {
|
381
|
-
revert InitialOwnerIsParent();
|
382
|
-
}
|
221
|
+
address owner = info.initialOwner;
|
383
222
|
|
384
|
-
if(
|
385
|
-
revert
|
223
|
+
if(owner == address(0)) {
|
224
|
+
revert ErrorRegistryServiceObjectOwnerZero(info.objectType);
|
386
225
|
}
|
387
226
|
|
388
|
-
if(
|
389
|
-
revert
|
390
|
-
}
|
391
|
-
|
392
|
-
/*NftId parentNftId = info.parentNftId;
|
393
|
-
IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
|
394
|
-
|
395
|
-
if(parentInfo.objectType != parentType) { // parent registration + type
|
396
|
-
revert InvalidParent(parentNftId);
|
397
|
-
}*/
|
227
|
+
if(getRegistry().isRegistered(owner)) {
|
228
|
+
revert ErrorRegistryServiceObjectOwnerRegistered(info.objectType, owner);
|
229
|
+
}
|
398
230
|
}
|
399
231
|
}
|