@etherisc/gif-next 0.0.2-fe77319 → 0.0.2-ff282a4-523
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +359 -8
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1376 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +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 +284 -523
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +616 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +529 -601
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1348 -0
- 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 +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1574 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +979 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +656 -0
- 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/base/Cloneable.sol/Cloneable.json +190 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +478 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +581 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +194 -0
- 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 +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +10 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +696 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +735 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1095 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1407 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +708 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +493 -0
- 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/product/IPricingService.sol/IPricingService.json +510 -0
- 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/product/IProductService.sol/IProductService.json +442 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +688 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1198 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +640 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +4 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +784 -0
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +604 -71
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +919 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +702 -72
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1211 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +657 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +620 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +485 -0
- 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/shared/ComponentService.sol/ComponentService.json +631 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
- 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 +4 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +125 -0
- 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 +4 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +175 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/shared/IService.sol/IService.json +327 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +238 -0
- 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 +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +569 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +339 -0
- 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 +4 -0
- package/artifacts/contracts/shared/Service.sol/Service.json +488 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +114 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +309 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +545 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +497 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +623 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +797 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +632 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +174 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
- 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/type/Key32.sol/Key32Lib.json +125 -0
- 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/type/ObjectType.sol/ObjectTypeLib.json +92 -0
- 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/type/RiskId.sol/RiskIdLib.json +86 -0
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
- 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/type/StateId.sol/StateIdLib.json +92 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +280 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
- package/contracts/distribution/Distribution.sol +285 -0
- package/contracts/distribution/DistributionService.sol +349 -0
- package/contracts/distribution/DistributionServiceManager.sol +51 -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 +72 -15
- package/contracts/instance/IInstanceService.sol +73 -0
- package/contracts/instance/Instance.sol +210 -44
- package/contracts/instance/InstanceAccessManager.sol +543 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +368 -0
- package/contracts/instance/InstanceService.sol +308 -0
- package/contracts/instance/InstanceServiceManager.sol +54 -0
- package/contracts/instance/InstanceStore.sol +211 -0
- package/contracts/instance/base/Cloneable.sol +51 -0
- package/contracts/instance/base/IKeyValueStore.sol +53 -0
- package/contracts/instance/base/ILifecycle.sol +30 -0
- package/contracts/instance/base/KeyValueStore.sol +169 -0
- package/contracts/instance/base/Lifecycle.sol +121 -0
- package/contracts/instance/base/ObjectManager.sol +82 -0
- package/contracts/instance/module/IAccess.sol +54 -0
- package/contracts/instance/module/IBundle.sol +23 -0
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +42 -0
- package/contracts/instance/module/IPolicy.sol +78 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/instance/module/ISetup.sol +33 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/pool/BundleService.sol +382 -0
- package/contracts/pool/BundleServiceManager.sol +51 -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 +403 -0
- package/contracts/pool/PoolServiceManager.sol +51 -0
- package/contracts/product/ApplicationService.sol +186 -0
- package/contracts/product/ApplicationServiceManager.sol +35 -0
- package/contracts/product/ClaimService.sol +442 -0
- package/contracts/product/ClaimServiceManager.sol +35 -0
- package/contracts/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +93 -0
- package/contracts/product/IPolicyService.sol +80 -0
- package/contracts/product/IPricingService.sol +37 -0
- package/contracts/product/IProductComponent.sol +41 -0
- package/contracts/product/IProductService.sol +40 -0
- package/contracts/product/PolicyService.sol +376 -0
- package/contracts/product/PolicyServiceManager.sol +54 -0
- package/contracts/product/PricingService.sol +275 -0
- package/contracts/product/PricingServiceManager.sol +51 -0
- package/contracts/product/Product.sol +379 -0
- package/contracts/product/ProductService.sol +210 -0
- package/contracts/product/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +216 -0
- package/contracts/registry/IRegistry.sol +95 -51
- package/contracts/registry/IRegistryService.sol +69 -0
- package/contracts/registry/ITransferInterceptor.sol +7 -0
- package/contracts/registry/Registry.sol +436 -128
- package/contracts/registry/RegistryAccessManager.sol +207 -0
- package/contracts/registry/RegistryService.sol +304 -0
- package/contracts/registry/RegistryServiceManager.sol +60 -0
- package/contracts/registry/ReleaseManager.sol +360 -0
- package/contracts/registry/TokenRegistry.sol +116 -0
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/shared/Component.sol +271 -0
- package/contracts/shared/ComponentService.sol +150 -0
- package/contracts/shared/ERC165.sol +27 -0
- package/contracts/shared/IComponent.sol +90 -0
- package/contracts/shared/INftOwnable.sol +23 -0
- package/contracts/shared/IPolicyHolder.sol +40 -0
- package/contracts/shared/IRegisterable.sol +15 -0
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +18 -0
- package/contracts/shared/IVersionable.sol +53 -0
- package/contracts/shared/NftOwnable.sol +118 -0
- package/contracts/shared/PolicyHolder.sol +94 -0
- package/contracts/shared/ProxyManager.sol +169 -0
- package/contracts/shared/Registerable.sol +75 -0
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +72 -0
- package/contracts/shared/TokenHandler.sol +35 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +59 -0
- package/contracts/staking/IStaking.sol +15 -0
- package/contracts/staking/IStakingService.sol +105 -0
- package/contracts/staking/Staking.sol +64 -0
- package/contracts/staking/StakingManager.sol +44 -0
- package/contracts/staking/StakingService.sol +204 -0
- package/contracts/staking/StakingServiceManager.sol +41 -0
- package/contracts/type/AddressSet.sol +58 -0
- package/contracts/type/Amount.sol +109 -0
- package/contracts/type/Blocknumber.sol +119 -0
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/type/DistributorType.sol +55 -0
- package/contracts/type/Fee.sol +65 -0
- package/contracts/type/Key32.sol +50 -0
- package/contracts/type/NftId.sol +80 -0
- package/contracts/type/NftIdSet.sol +62 -0
- package/contracts/type/ObjectType.sol +166 -0
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/type/Referral.sol +89 -0
- package/contracts/type/RiskId.sol +43 -0
- package/contracts/type/RoleId.sol +132 -0
- package/contracts/type/Seconds.sol +54 -0
- package/contracts/type/StateId.sol +110 -0
- package/contracts/type/Timestamp.sol +132 -0
- package/contracts/type/UFixed.sol +326 -0
- package/contracts/type/Version.sol +108 -0
- package/package.json +21 -6
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/Component.json +0 -179
- package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.json +0 -195
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.json +0 -213
- package/artifacts/contracts/experiment/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/IC.sol/IC.json +0 -63
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
- package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
- package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
- package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
- package/contracts/components/Component.sol +0 -62
- package/contracts/components/IPool.sol +0 -9
- package/contracts/components/IProduct.sol +0 -11
- package/contracts/components/Pool.sol +0 -29
- package/contracts/components/Product.sol +0 -65
- package/contracts/experiment/A.sol +0 -56
- package/contracts/experiment/B.sol +0 -23
- package/contracts/experiment/C.sol +0 -28
- package/contracts/experiment/IA.sol +0 -18
- package/contracts/experiment/IB.sol +0 -9
- package/contracts/experiment/IC.sol +0 -11
- package/contracts/instance/access/Access.sol +0 -218
- package/contracts/instance/access/IAccess.sol +0 -83
- package/contracts/instance/component/ComponentModule.sol +0 -259
- package/contracts/instance/component/IComponent.sol +0 -94
- package/contracts/instance/policy/IPolicy.sol +0 -66
- package/contracts/instance/policy/PolicyModule.sol +0 -106
- package/contracts/instance/pool/IPoolModule.sol +0 -40
- package/contracts/instance/pool/PoolModule.sol +0 -83
- package/contracts/instance/product/IProductService.sol +0 -45
- package/contracts/instance/product/ProductService.sol +0 -105
@@ -0,0 +1,207 @@
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
|
5
|
+
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
6
|
+
|
7
|
+
import {RoleId, RoleIdLib,
|
8
|
+
GIF_MANAGER_ROLE,
|
9
|
+
GIF_ADMIN_ROLE,
|
10
|
+
RELEASE_MANAGER_ROLE} from "../type/RoleId.sol";
|
11
|
+
|
12
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
13
|
+
import {ReleaseManager} from "./ReleaseManager.sol";
|
14
|
+
|
15
|
+
/*
|
16
|
+
4 types of roles:
|
17
|
+
1) RELEASE_MANAGER_ROLE
|
18
|
+
- has only ReleaseManager as member
|
19
|
+
- responsible for setting and granting of REGISTRAR roles
|
20
|
+
1) REGISTRAR roles
|
21
|
+
- set and granted by RELEASE_MANAGER_ROLE
|
22
|
+
- for each service and major version X there is 1 unique member (the service with version X itself) (subject to change)
|
23
|
+
- each set to 1 target (registry service ver.X) and 1 selector (function of registry service ver.X) (subject to change)
|
24
|
+
2) GIF_MANAGER_ROLE
|
25
|
+
- can have arbitrary number of members
|
26
|
+
- responsible for services registrations
|
27
|
+
- responsible for token registration and activation
|
28
|
+
3) GIF_ADMIN_ROLE
|
29
|
+
- admin of GIF_MANAGER_ROLE
|
30
|
+
- MUST have 1 member at any time
|
31
|
+
- granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
|
32
|
+
- responsible for creation and activation of releases
|
33
|
+
|
34
|
+
*/
|
35
|
+
|
36
|
+
contract RegistryAccessManager is AccessManaged
|
37
|
+
{
|
38
|
+
error NotInitialized();
|
39
|
+
error AlreadyInitialized();
|
40
|
+
|
41
|
+
uint64 public constant UNIQUE_ROLE_ID_MIN = 1000000;
|
42
|
+
|
43
|
+
AccessManager private immutable _accessManager;
|
44
|
+
address private _releaseManager;
|
45
|
+
address private _tokenRegistry;
|
46
|
+
|
47
|
+
uint64 private _idNext; // role id
|
48
|
+
bool private _isInitialized;
|
49
|
+
|
50
|
+
modifier onlyOnce() {
|
51
|
+
if(_isInitialized) {
|
52
|
+
revert AlreadyInitialized();
|
53
|
+
}
|
54
|
+
_;
|
55
|
+
_isInitialized = true;
|
56
|
+
}
|
57
|
+
|
58
|
+
modifier onlyInitialized() {
|
59
|
+
if(!_isInitialized) {
|
60
|
+
revert NotInitialized();
|
61
|
+
}
|
62
|
+
_;
|
63
|
+
}
|
64
|
+
|
65
|
+
constructor(address manager)
|
66
|
+
AccessManaged(msg.sender)
|
67
|
+
{
|
68
|
+
_accessManager = new AccessManager(address(this));
|
69
|
+
setAuthority(address(_accessManager));
|
70
|
+
|
71
|
+
_idNext = UNIQUE_ROLE_ID_MIN;
|
72
|
+
|
73
|
+
_configureAdminRoleInitial();
|
74
|
+
|
75
|
+
address admin = msg.sender;
|
76
|
+
_grantRole(GIF_ADMIN_ROLE(), admin, 0);
|
77
|
+
_grantRole(GIF_MANAGER_ROLE(), manager, 0);
|
78
|
+
}
|
79
|
+
|
80
|
+
function initialize(address releaseManager, address tokenRegistry)
|
81
|
+
external
|
82
|
+
restricted // GIF_ADMIN_ROLE
|
83
|
+
onlyOnce
|
84
|
+
{
|
85
|
+
require(
|
86
|
+
ReleaseManager(releaseManager).authority() == address(_accessManager),
|
87
|
+
"RegistryAccessManager: release manager authority is invalid");
|
88
|
+
require(tokenRegistry > address(0), "RegistryAccessManager: token registry is 0");
|
89
|
+
//require(tokenRegistry.authority() == address(_accessManager));
|
90
|
+
|
91
|
+
_releaseManager = releaseManager;
|
92
|
+
_tokenRegistry = tokenRegistry;
|
93
|
+
|
94
|
+
_configureAdminRole();
|
95
|
+
_configureManagerRole();
|
96
|
+
_configureReleaseManagerRole();
|
97
|
+
|
98
|
+
_grantRole(RELEASE_MANAGER_ROLE(), releaseManager, 0);
|
99
|
+
}
|
100
|
+
|
101
|
+
// set unique role for target, role forever have 1 member and never revoked
|
102
|
+
function setAndGrantUniqueRole(
|
103
|
+
address account,
|
104
|
+
address target,
|
105
|
+
bytes4[] memory selector
|
106
|
+
)
|
107
|
+
external
|
108
|
+
restricted // RELEASE_MANAGER_ROLE
|
109
|
+
onlyInitialized
|
110
|
+
returns(RoleId)
|
111
|
+
{
|
112
|
+
// TODO questionable check...
|
113
|
+
// target is not part of `runtime`
|
114
|
+
//if(
|
115
|
+
// target == address(this) ||
|
116
|
+
// target == address(_accessManager) ||
|
117
|
+
// target == _releaseManager ||
|
118
|
+
// target == _tokenRegistry)
|
119
|
+
//{ return TargetInvalid(); }
|
120
|
+
|
121
|
+
RoleId roleId = _getNextRoleId();
|
122
|
+
|
123
|
+
_setTargetFunctionRole(target, selector, roleId);
|
124
|
+
_grantRole(roleId, account, 0);
|
125
|
+
}
|
126
|
+
|
127
|
+
/*function transferAdmin(address to)
|
128
|
+
external
|
129
|
+
restricted // only with GIF_ADMIN_ROLE or nft owner
|
130
|
+
{
|
131
|
+
_accessManager.revoke(GIF_ADMIN_ROLE, );
|
132
|
+
_accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
|
133
|
+
}*/
|
134
|
+
|
135
|
+
//--- view functions ----------------------------------------------------//
|
136
|
+
|
137
|
+
function getAccessManager()
|
138
|
+
external
|
139
|
+
view
|
140
|
+
returns (AccessManager)
|
141
|
+
{
|
142
|
+
return _accessManager;
|
143
|
+
}
|
144
|
+
|
145
|
+
//--- private functions -------------------------------------------------//
|
146
|
+
|
147
|
+
function _configureAdminRoleInitial() private
|
148
|
+
{
|
149
|
+
bytes4[] memory functionSelector = new bytes4[](1);
|
150
|
+
|
151
|
+
functionSelector[0] = RegistryAccessManager.initialize.selector;
|
152
|
+
_setTargetFunctionRole(address(this), functionSelector, GIF_ADMIN_ROLE());
|
153
|
+
}
|
154
|
+
|
155
|
+
function _configureAdminRole() private
|
156
|
+
{
|
157
|
+
// for ReleaseManager
|
158
|
+
bytes4[] memory functionSelector = new bytes4[](3);
|
159
|
+
functionSelector[0] = ReleaseManager.registerStaking.selector;
|
160
|
+
functionSelector[1] = ReleaseManager.createNextRelease.selector;
|
161
|
+
functionSelector[2] = ReleaseManager.activateNextRelease.selector;
|
162
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
|
163
|
+
}
|
164
|
+
|
165
|
+
function _configureManagerRole() private
|
166
|
+
{
|
167
|
+
bytes4[] memory functionSelector = new bytes4[](1);
|
168
|
+
|
169
|
+
// for TokenRegistry
|
170
|
+
functionSelector[0] = TokenRegistry.setActive.selector;
|
171
|
+
_setTargetFunctionRole(address(_tokenRegistry), functionSelector, GIF_MANAGER_ROLE());
|
172
|
+
|
173
|
+
// for ReleaseManager
|
174
|
+
functionSelector[0] = ReleaseManager.registerService.selector;
|
175
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
|
176
|
+
|
177
|
+
functionSelector[0] = ReleaseManager.registerRegistryService.selector;
|
178
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
|
179
|
+
|
180
|
+
// set admin
|
181
|
+
_setRoleAdmin(GIF_MANAGER_ROLE(), GIF_ADMIN_ROLE());
|
182
|
+
}
|
183
|
+
|
184
|
+
function _configureReleaseManagerRole() private
|
185
|
+
{
|
186
|
+
bytes4[] memory functionSelector = new bytes4[](1);
|
187
|
+
|
188
|
+
functionSelector[0] = RegistryAccessManager.setAndGrantUniqueRole.selector;
|
189
|
+
_setTargetFunctionRole(address(this), functionSelector, RELEASE_MANAGER_ROLE());
|
190
|
+
}
|
191
|
+
|
192
|
+
function _setTargetFunctionRole(address target, bytes4[] memory selectors, RoleId roleId) private {
|
193
|
+
_accessManager.setTargetFunctionRole(target, selectors, roleId.toInt());
|
194
|
+
}
|
195
|
+
|
196
|
+
function _setRoleAdmin(RoleId roleId, RoleId adminRoleId) private {
|
197
|
+
_accessManager.setRoleAdmin(roleId.toInt(), adminRoleId.toInt());
|
198
|
+
}
|
199
|
+
|
200
|
+
function _grantRole(RoleId roleId, address account, uint32 executionDelay) private {
|
201
|
+
_accessManager.grantRole(roleId.toInt(), account, executionDelay);
|
202
|
+
}
|
203
|
+
|
204
|
+
function _getNextRoleId() private returns(RoleId roleId) {
|
205
|
+
roleId = RoleIdLib.toRoleId(_idNext++);
|
206
|
+
}
|
207
|
+
}
|
@@ -0,0 +1,304 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
|
5
|
+
// import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
6
|
+
|
7
|
+
import {IRegistry} from "./IRegistry.sol";
|
8
|
+
import {IInstance} from "../instance/IInstance.sol";
|
9
|
+
|
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";
|
14
|
+
|
15
|
+
import {IVersionable} from "../../contracts/shared/IVersionable.sol";
|
16
|
+
import {Versionable} from "../../contracts/shared/Versionable.sol";
|
17
|
+
import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
|
18
|
+
import {Registerable} from "../../contracts/shared/Registerable.sol";
|
19
|
+
|
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, STAKING, 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";
|
26
|
+
|
27
|
+
import {Service} from "../shared/Service.sol";
|
28
|
+
import {IService} from "../shared/IService.sol";
|
29
|
+
import {IRegistryService} from "./IRegistryService.sol";
|
30
|
+
import {Registry} from "./Registry.sol";
|
31
|
+
|
32
|
+
contract RegistryService is
|
33
|
+
Service,
|
34
|
+
IRegistryService
|
35
|
+
{
|
36
|
+
using NftIdLib for NftId;
|
37
|
+
|
38
|
+
// TODO update to real hash when registry is stable
|
39
|
+
bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
|
40
|
+
|
41
|
+
// From IService
|
42
|
+
function getDomain() public pure override returns(ObjectType serviceDomain) {
|
43
|
+
return REGISTRY();
|
44
|
+
}
|
45
|
+
|
46
|
+
// from Versionable
|
47
|
+
|
48
|
+
/// @dev top level initializer
|
49
|
+
function _initialize(
|
50
|
+
address owner,
|
51
|
+
bytes memory data
|
52
|
+
)
|
53
|
+
internal
|
54
|
+
virtual override
|
55
|
+
initializer()
|
56
|
+
{
|
57
|
+
(
|
58
|
+
address registryAddress,
|
59
|
+
address initialAuthority
|
60
|
+
) = abi.decode(data, (address, address));
|
61
|
+
|
62
|
+
initializeService(registryAddress, initialAuthority, owner);
|
63
|
+
|
64
|
+
registerInterface(type(IRegistryService).interfaceId);
|
65
|
+
}
|
66
|
+
|
67
|
+
|
68
|
+
function registerStaking(IRegisterable staking, address owner)
|
69
|
+
external
|
70
|
+
virtual
|
71
|
+
restricted
|
72
|
+
returns(
|
73
|
+
IRegistry.ObjectInfo memory info
|
74
|
+
)
|
75
|
+
{
|
76
|
+
info = _getAndVerifyContractInfo(staking, STAKING(), owner);
|
77
|
+
info.nftId = getRegistry().register(info);
|
78
|
+
}
|
79
|
+
|
80
|
+
|
81
|
+
function registerInstance(IRegisterable instance, address owner)
|
82
|
+
external
|
83
|
+
virtual
|
84
|
+
restricted
|
85
|
+
returns(
|
86
|
+
IRegistry.ObjectInfo memory info
|
87
|
+
)
|
88
|
+
{
|
89
|
+
if(!instance.supportsInterface(type(IInstance).interfaceId)) {
|
90
|
+
revert NotInstance();
|
91
|
+
}
|
92
|
+
|
93
|
+
info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
|
94
|
+
info.nftId = getRegistry().register(info);
|
95
|
+
|
96
|
+
instance.linkToRegisteredNftId(); // asume safe
|
97
|
+
}
|
98
|
+
|
99
|
+
function registerProduct(IComponent product, address owner)
|
100
|
+
external
|
101
|
+
restricted
|
102
|
+
returns(
|
103
|
+
IRegistry.ObjectInfo memory info
|
104
|
+
)
|
105
|
+
{
|
106
|
+
// CAN revert if no ERC165 support -> will revert with empty message
|
107
|
+
if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
|
108
|
+
revert NotProduct();
|
109
|
+
}
|
110
|
+
|
111
|
+
info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
|
112
|
+
info.nftId = getRegistry().register(info);
|
113
|
+
}
|
114
|
+
|
115
|
+
function registerPool(IComponent pool, address owner)
|
116
|
+
external
|
117
|
+
restricted
|
118
|
+
returns(
|
119
|
+
IRegistry.ObjectInfo memory info
|
120
|
+
)
|
121
|
+
{
|
122
|
+
if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
|
123
|
+
revert NotPool();
|
124
|
+
}
|
125
|
+
|
126
|
+
info = _getAndVerifyContractInfo(pool, POOL(), owner);
|
127
|
+
info.nftId = getRegistry().register(info);
|
128
|
+
}
|
129
|
+
|
130
|
+
function registerDistribution(IComponent distribution, address owner)
|
131
|
+
external
|
132
|
+
restricted
|
133
|
+
returns(
|
134
|
+
IRegistry.ObjectInfo memory info
|
135
|
+
)
|
136
|
+
{
|
137
|
+
if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
|
138
|
+
revert NotDistribution();
|
139
|
+
}
|
140
|
+
|
141
|
+
info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
|
142
|
+
info.nftId = getRegistry().register(info);
|
143
|
+
}
|
144
|
+
|
145
|
+
function registerDistributor(IRegistry.ObjectInfo memory info)
|
146
|
+
external
|
147
|
+
restricted
|
148
|
+
returns(NftId nftId)
|
149
|
+
{
|
150
|
+
_verifyObjectInfo(info, DISTRIBUTOR());
|
151
|
+
nftId = getRegistry().register(info);
|
152
|
+
}
|
153
|
+
|
154
|
+
function registerPolicy(IRegistry.ObjectInfo memory info)
|
155
|
+
external
|
156
|
+
restricted
|
157
|
+
returns(NftId nftId)
|
158
|
+
{
|
159
|
+
_verifyObjectInfo(info, POLICY());
|
160
|
+
|
161
|
+
nftId = getRegistry().register(info);
|
162
|
+
}
|
163
|
+
|
164
|
+
function registerBundle(IRegistry.ObjectInfo memory info)
|
165
|
+
external
|
166
|
+
restricted
|
167
|
+
returns(NftId nftId)
|
168
|
+
{
|
169
|
+
_verifyObjectInfo(info, BUNDLE());
|
170
|
+
|
171
|
+
nftId = getRegistry().register(info);
|
172
|
+
}
|
173
|
+
|
174
|
+
function registerStake(IRegistry.ObjectInfo memory info)
|
175
|
+
external
|
176
|
+
restricted
|
177
|
+
returns(NftId nftId)
|
178
|
+
{
|
179
|
+
_verifyObjectInfo(info, STAKE());
|
180
|
+
|
181
|
+
nftId = getRegistry().register(info);
|
182
|
+
}
|
183
|
+
|
184
|
+
// from IRegisterable
|
185
|
+
|
186
|
+
function getFunctionConfigs()
|
187
|
+
external
|
188
|
+
pure
|
189
|
+
returns(
|
190
|
+
FunctionConfig[] memory config
|
191
|
+
)
|
192
|
+
{
|
193
|
+
config = new FunctionConfig[](10);
|
194
|
+
|
195
|
+
// order of service registrations MUST be reverse to this array
|
196
|
+
/*config[-1].serviceDomain = STAKE();
|
197
|
+
config[-1].selector = RegistryService.registerStake.selector;*/
|
198
|
+
|
199
|
+
config[0].serviceDomain = POLICY();
|
200
|
+
config[0].selectors = new bytes4[](0);
|
201
|
+
|
202
|
+
config[1].serviceDomain = APPLICATION();
|
203
|
+
config[1].selectors = new bytes4[](1);
|
204
|
+
config[1].selectors[0] = RegistryService.registerPolicy.selector;
|
205
|
+
|
206
|
+
config[2].serviceDomain = CLAIM();
|
207
|
+
config[2].selectors = new bytes4[](0);
|
208
|
+
|
209
|
+
config[3].serviceDomain = PRODUCT();
|
210
|
+
config[3].selectors = new bytes4[](1);
|
211
|
+
config[3].selectors[0] = RegistryService.registerProduct.selector;
|
212
|
+
|
213
|
+
config[4].serviceDomain = POOL();
|
214
|
+
config[4].selectors = new bytes4[](1);
|
215
|
+
config[4].selectors[0] = RegistryService.registerPool.selector;
|
216
|
+
|
217
|
+
// registration of bundle service must preceed registration of pool service
|
218
|
+
config[5].serviceDomain = BUNDLE();
|
219
|
+
config[5].selectors = new bytes4[](1);
|
220
|
+
config[5].selectors[0] = RegistryService.registerBundle.selector;
|
221
|
+
|
222
|
+
// registration of pricing service must preceed registration of application service
|
223
|
+
config[6].serviceDomain = PRICE();
|
224
|
+
config[6].selectors = new bytes4[](0);
|
225
|
+
|
226
|
+
// registration of distribution service must preceed registration of pricing service
|
227
|
+
config[7].serviceDomain = DISTRIBUTION();
|
228
|
+
config[7].selectors = new bytes4[](2);
|
229
|
+
config[7].selectors[0] = RegistryService.registerDistribution.selector;
|
230
|
+
config[7].selectors[1] = RegistryService.registerDistributor.selector;
|
231
|
+
|
232
|
+
config[8].serviceDomain = INSTANCE();
|
233
|
+
config[8].selectors = new bytes4[](1);
|
234
|
+
config[8].selectors[0] = RegistryService.registerInstance.selector;
|
235
|
+
|
236
|
+
config[9].serviceDomain = STAKING();
|
237
|
+
config[9].selectors = new bytes4[](1);
|
238
|
+
config[9].selectors[0] = RegistryService.registerStaking.selector;
|
239
|
+
}
|
240
|
+
|
241
|
+
// Internal
|
242
|
+
|
243
|
+
function _getAndVerifyContractInfo(
|
244
|
+
IRegisterable registerable,
|
245
|
+
ObjectType expectedType, // assume can be valid only
|
246
|
+
address expectedOwner // assume can be 0 when given by other service
|
247
|
+
)
|
248
|
+
internal
|
249
|
+
// view
|
250
|
+
returns(
|
251
|
+
IRegistry.ObjectInfo memory info
|
252
|
+
)
|
253
|
+
{
|
254
|
+
info = registerable.getInitialInfo();
|
255
|
+
info.objectAddress = address(registerable);
|
256
|
+
|
257
|
+
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
258
|
+
revert UnexpectedRegisterableType(expectedType, info.objectType);
|
259
|
+
}
|
260
|
+
|
261
|
+
address owner = info.initialOwner;
|
262
|
+
|
263
|
+
if(owner != expectedOwner) { // registerable owner protection
|
264
|
+
revert NotRegisterableOwner(expectedOwner);
|
265
|
+
}
|
266
|
+
|
267
|
+
if(owner == address(registerable)) {
|
268
|
+
revert SelfRegistration();
|
269
|
+
}
|
270
|
+
|
271
|
+
if(owner == address(0)) {
|
272
|
+
revert RegisterableOwnerIsZero();
|
273
|
+
}
|
274
|
+
|
275
|
+
if(getRegistry().isRegistered(owner)) {
|
276
|
+
revert RegisterableOwnerIsRegistered();
|
277
|
+
}
|
278
|
+
}
|
279
|
+
|
280
|
+
function _verifyObjectInfo(
|
281
|
+
IRegistry.ObjectInfo memory info,
|
282
|
+
ObjectType expectedType
|
283
|
+
)
|
284
|
+
internal
|
285
|
+
view
|
286
|
+
{
|
287
|
+
// enforce instead of check
|
288
|
+
info.objectAddress = address(0);
|
289
|
+
|
290
|
+
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
291
|
+
revert UnexpectedRegisterableType(expectedType, info.objectType);
|
292
|
+
}
|
293
|
+
|
294
|
+
address owner = info.initialOwner;
|
295
|
+
|
296
|
+
if(owner == address(0)) {
|
297
|
+
revert RegisterableOwnerIsZero();
|
298
|
+
}
|
299
|
+
|
300
|
+
if(getRegistry().isRegistered(owner)) {
|
301
|
+
revert RegisterableOwnerIsRegistered();
|
302
|
+
}
|
303
|
+
}
|
304
|
+
}
|
@@ -0,0 +1,60 @@
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
|
5
|
+
|
6
|
+
import {Registry} from "./Registry.sol";
|
7
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
8
|
+
import {ProxyManager} from "../shared/ProxyManager.sol";
|
9
|
+
import {RegistryService} from "./RegistryService.sol";
|
10
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
11
|
+
|
12
|
+
|
13
|
+
contract RegistryServiceManager is
|
14
|
+
ProxyManager
|
15
|
+
{
|
16
|
+
bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
|
17
|
+
|
18
|
+
RegistryService private immutable _registryService;
|
19
|
+
|
20
|
+
/// @dev initializes proxy manager with registry service implementation and deploys registry
|
21
|
+
constructor(
|
22
|
+
address initialAuthority, // used by implementation
|
23
|
+
address registryAddress) // used by implementation
|
24
|
+
ProxyManager(registryAddress)
|
25
|
+
{
|
26
|
+
require(initialAuthority > address(0), "RegistryServiceManager: initial authority is 0");
|
27
|
+
require(registryAddress > address(0), "RegistryServiceManager: registry is 0");
|
28
|
+
|
29
|
+
// implementation's initializer func `data` argument
|
30
|
+
RegistryService srv = new RegistryService();
|
31
|
+
bytes memory data = abi.encode(registryAddress, initialAuthority);
|
32
|
+
IVersionable versionable = deploy(
|
33
|
+
address(srv),
|
34
|
+
data);
|
35
|
+
|
36
|
+
_registryService = RegistryService(address(versionable));
|
37
|
+
|
38
|
+
// _linkToNftOwnable(address(_registryService));
|
39
|
+
}
|
40
|
+
|
41
|
+
// // from IRegisterable
|
42
|
+
|
43
|
+
// // IMPORTANT: registry here and in constructor MUST be the same
|
44
|
+
function linkOwnershipToServiceNft()
|
45
|
+
public
|
46
|
+
onlyOwner
|
47
|
+
{
|
48
|
+
_linkToNftOwnable(address(_registryService));
|
49
|
+
}
|
50
|
+
|
51
|
+
//--- view functions ----------------------------------------------------//
|
52
|
+
|
53
|
+
function getRegistryService()
|
54
|
+
external
|
55
|
+
view
|
56
|
+
returns (RegistryService registryService)
|
57
|
+
{
|
58
|
+
return _registryService;
|
59
|
+
}
|
60
|
+
}
|