@etherisc/gif-next 0.0.2-f9bc4c7-556 → 0.0.2-faaba97-954
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 +249 -14
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +842 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +1329 -0
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +605 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +969 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +823 -115
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +608 -57
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +1132 -143
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +967 -105
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -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/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1549 -1048
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +633 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2291 -1198
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1330 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1289 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1179 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +741 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +607 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +45 -127
- 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 +85 -245
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- 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/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → 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/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1039 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +673 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1231 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +721 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +817 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +641 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1798 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +805 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +622 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +659 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +475 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +1090 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +606 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +577 -109
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +186 -213
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1092 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +697 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +965 -199
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +661 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +460 -293
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +485 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +866 -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 +487 -101
- 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 +1158 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
- 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/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +38 -74
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +100 -33
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +159 -150
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +256 -25
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +261 -217
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -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 +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +272 -26
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +347 -130
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +38 -140
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +84 -14
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
- package/contracts/components/Component.sol +253 -0
- package/contracts/components/Distribution.sol +280 -0
- package/contracts/components/IComponent.sol +76 -0
- package/contracts/components/IDistributionComponent.sol +71 -0
- package/contracts/components/IPoolComponent.sol +98 -42
- package/contracts/components/IProductComponent.sol +30 -9
- package/contracts/components/Pool.sol +238 -109
- package/contracts/components/Product.sol +218 -42
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/instance/BundleManager.sol +127 -0
- package/contracts/instance/Cloneable.sol +51 -0
- package/contracts/instance/IInstance.sol +87 -41
- package/contracts/instance/IInstanceService.sol +72 -0
- package/contracts/instance/Instance.sol +311 -52
- package/contracts/instance/InstanceAccessManager.sol +527 -0
- package/contracts/instance/InstanceReader.sol +291 -0
- package/contracts/instance/InstanceService.sol +495 -0
- package/contracts/instance/InstanceServiceManager.sol +54 -0
- package/contracts/instance/ObjectManager.sol +82 -0
- package/contracts/instance/base/ComponentService.sol +121 -0
- package/contracts/instance/base/IKeyValueStore.sol +13 -13
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +64 -40
- package/contracts/instance/base/Lifecycle.sol +27 -13
- 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 +41 -0
- package/contracts/instance/module/IPolicy.sol +72 -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/instance/service/ApplicationService.sol +350 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +431 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +435 -0
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +93 -0
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +99 -0
- package/contracts/instance/service/IPolicyService.sol +72 -0
- package/contracts/instance/service/IPoolService.sol +81 -12
- package/contracts/instance/service/IProductService.sol +21 -39
- package/contracts/instance/service/PolicyService.sol +362 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +249 -69
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +147 -291
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +87 -36
- package/contracts/registry/IRegistry.sol +68 -24
- package/contracts/registry/IRegistryService.sol +68 -0
- package/contracts/registry/ITransferInterceptor.sol +7 -0
- package/contracts/registry/Registry.sol +372 -286
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +282 -0
- package/contracts/registry/RegistryServiceManager.sol +62 -0
- package/contracts/registry/ReleaseManager.sol +324 -0
- package/contracts/registry/TokenRegistry.sol +116 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/ERC165.sol +14 -8
- package/contracts/shared/INftOwnable.sol +23 -0
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +10 -19
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +16 -0
- package/contracts/shared/IVersionable.sol +38 -37
- package/contracts/shared/NftOwnable.sol +120 -0
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +169 -0
- package/contracts/shared/Registerable.sol +54 -66
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +72 -0
- package/contracts/shared/TokenHandler.sol +33 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +38 -68
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRegisterable.sol +5 -6
- package/contracts/test/TestRoleId.sol +1 -1
- package/contracts/test/TestService.sol +7 -14
- package/contracts/types/Amount.sol +60 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +22 -9
- package/contracts/types/Key32.sol +8 -3
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +56 -14
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/Referral.sol +89 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +69 -10
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +6 -1
- package/contracts/types/Timestamp.sol +17 -13
- package/contracts/types/UFixed.sol +129 -12
- package/contracts/types/Version.sol +14 -1
- package/package.json +6 -5
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- 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/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- 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/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -523
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -88
- package/contracts/components/IBaseComponent.sol +0 -19
- 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/README.md +0 -112
- 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/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/ComponentServiceBase.sol +0 -42
- package/contracts/instance/base/IInstanceBase.sol +0 -14
- package/contracts/instance/base/IService.sol +0 -15
- package/contracts/instance/base/InstanceBase.sol +0 -80
- package/contracts/instance/base/ModuleBase.sol +0 -52
- package/contracts/instance/base/ServiceBase.sol +0 -37
- package/contracts/instance/module/access/Access.sol +0 -149
- package/contracts/instance/module/access/IAccess.sol +0 -53
- package/contracts/instance/module/bundle/BundleModule.sol +0 -136
- package/contracts/instance/module/bundle/IBundle.sol +0 -58
- package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
- package/contracts/instance/module/compensation/ICompensation.sol +0 -10
- package/contracts/instance/module/component/ComponentModule.sol +0 -95
- package/contracts/instance/module/component/IComponent.sol +0 -53
- package/contracts/instance/module/policy/IPolicy.sol +0 -60
- package/contracts/instance/module/policy/PolicyModule.sol +0 -76
- package/contracts/instance/module/pool/IPoolModule.sol +0 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -87
- package/contracts/instance/module/risk/IRisk.sol +0 -10
- package/contracts/instance/module/risk/RiskModule.sol +0 -8
- package/contracts/instance/module/treasury/ITreasury.sol +0 -103
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
- package/contracts/instance/service/ComponentOwnerService.sol +0 -170
- package/contracts/instance/service/IComponentOwnerService.sol +0 -22
- package/contracts/registry/IChainNft.sol +0 -21
- package/contracts/registry/IRegistryLinked.sol +0 -8
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/test/TestPool.sol +0 -22
- package/contracts/test/TestProduct.sol +0 -44
@@ -1,381 +1,467 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
4
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
|
+
|
6
|
+
import {NftId, toNftId, zeroNftId} from "../types/NftId.sol";
|
7
|
+
import {VersionPart} from "../types/Version.sol";
|
8
|
+
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
|
6
9
|
|
7
|
-
import {IChainNft} from "./IChainNft.sol";
|
8
10
|
import {ChainNft} from "./ChainNft.sol";
|
9
11
|
import {IRegistry} from "./IRegistry.sol";
|
10
|
-
import {
|
11
|
-
|
12
|
-
|
12
|
+
import {ReleaseManager} from "./ReleaseManager.sol";
|
13
|
+
|
14
|
+
// IMPORTANT
|
15
|
+
// Each NFT minted by registry is accosiated with:
|
16
|
+
// 1) NFT owner
|
17
|
+
// 2) registred contract OR object stored in registered (parent) contract
|
18
|
+
// Four registration flows:
|
19
|
+
// 1) IService address by release manager (SERVICE of domain SERVICE aka registry service aka release creation)
|
20
|
+
// 2) IService address by release manager (SERVICE of domain !SERVICE aka regular service)
|
21
|
+
// 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
|
22
|
+
// 4) state object by regular service (POLICY, BUNDLE, STAKE)
|
13
23
|
|
14
|
-
// TODO make registry upgradable
|
15
24
|
contract Registry is
|
16
|
-
IRegisterable,
|
17
25
|
IRegistry
|
18
26
|
{
|
19
|
-
|
20
|
-
|
27
|
+
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
28
|
+
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
21
29
|
string public constant EMPTY_URI = "";
|
22
30
|
|
23
31
|
mapping(NftId nftId => ObjectInfo info) private _info;
|
24
|
-
mapping(NftId nftId => address owner) private _owner;
|
25
32
|
mapping(address object => NftId nftId) private _nftIdByAddress;
|
26
|
-
mapping(ObjectType objectType => bool) private _isValidType;
|
27
|
-
mapping(ObjectType objectType => mapping(ObjectType objectParentType => bool)) private _isValidParentType;
|
28
|
-
|
29
|
-
mapping(NftId nftId => string stringValue) private _string;
|
30
|
-
mapping(bytes32 serviceNameHash => mapping(VersionPart majorVersion => address service)) _service;
|
31
|
-
|
32
|
-
NftId private _nftId;
|
33
|
-
IChainNft private _chainNft;
|
34
|
-
ChainNft private _chainNftInternal;
|
35
|
-
address private _initialOwner;
|
36
|
-
|
37
|
-
// @dev will own protocol nft and registry nft(s) minted during initialize
|
38
|
-
address private _protocolOwner;
|
39
|
-
|
40
|
-
// TODO refactor once registry becomes upgradable
|
41
|
-
// @Dev the protocol owner will get ownership of the
|
42
|
-
// protocol nft and the global registry nft minted in this
|
43
|
-
// initializer function
|
44
|
-
function initialize(
|
45
|
-
address chainNft,
|
46
|
-
address protocolOwner
|
47
|
-
)
|
48
|
-
public
|
49
|
-
{
|
50
|
-
require(
|
51
|
-
address(_chainNft) == address(0),
|
52
|
-
"ERROR:REG-001:ALREADY_INITIALIZED"
|
53
|
-
);
|
54
33
|
|
55
|
-
|
56
|
-
_protocolOwner = protocolOwner;
|
34
|
+
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
|
57
35
|
|
58
|
-
|
59
|
-
|
36
|
+
mapping(ObjectType objectType => bool) private _coreTypes;
|
37
|
+
|
38
|
+
mapping(ObjectType objectType => mapping(
|
39
|
+
ObjectType parentType => bool)) private _coreContractCombinations;
|
40
|
+
|
41
|
+
mapping(ObjectType objectType => mapping(
|
42
|
+
ObjectType parentType => bool)) private _coreObjectCombinations;
|
43
|
+
|
44
|
+
NftId private _registryNftId;
|
45
|
+
ChainNft private _chainNft;
|
46
|
+
|
47
|
+
ReleaseManager private _releaseManager;
|
48
|
+
|
49
|
+
modifier onlyRegistryService() {
|
50
|
+
if(!_releaseManager.isActiveRegistryService(msg.sender)) {
|
51
|
+
revert CallerNotRegistryService();
|
52
|
+
}
|
53
|
+
_;
|
54
|
+
}
|
55
|
+
|
56
|
+
modifier onlyReleaseManager() {
|
57
|
+
if(msg.sender != address(_releaseManager)) {
|
58
|
+
revert CallerNotReleaseManager();
|
59
|
+
}
|
60
|
+
_;
|
61
|
+
}
|
62
|
+
|
63
|
+
constructor()
|
64
|
+
{
|
65
|
+
_releaseManager = ReleaseManager(msg.sender);
|
66
|
+
|
67
|
+
// deploy NFT
|
68
|
+
_chainNft = new ChainNft(address(this));
|
60
69
|
|
61
70
|
// initial registry setup
|
62
71
|
_registerProtocol();
|
63
|
-
|
72
|
+
_registerRegistry();
|
64
73
|
|
65
|
-
//
|
66
|
-
|
67
|
-
_setupValidParentTypes();
|
74
|
+
// set object types and object parent relations
|
75
|
+
_setupValidCoreTypesAndCombinations();
|
68
76
|
}
|
69
77
|
|
70
|
-
|
71
|
-
|
72
|
-
|
78
|
+
function registerService(
|
79
|
+
ObjectInfo memory info,
|
80
|
+
VersionPart version,
|
81
|
+
ObjectType domain
|
73
82
|
)
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
IRegisterable registerable = IRegisterable(objectAddress);
|
83
|
-
require(
|
84
|
-
registerable.supportsInterface(type(IRegisterable).interfaceId),
|
85
|
-
"ERROR:REG-003:NOT_REGISTERABLE"
|
86
|
-
);
|
87
|
-
|
88
|
-
ObjectType objectType = registerable.getType();
|
89
|
-
require(
|
90
|
-
_isValidType[objectType],
|
91
|
-
"ERROR:REG-004:TYPE_INVALID"
|
92
|
-
);
|
93
|
-
|
94
|
-
NftId parentNftId = registerable.getParentNftId();
|
95
|
-
require(
|
96
|
-
isRegistered(parentNftId),
|
97
|
-
"ERROR:REG-005:PARENT_NOT_REGISTERED"
|
98
|
-
);
|
99
|
-
|
100
|
-
require(
|
101
|
-
_isValidParentType[objectType][_info[parentNftId].objectType],
|
102
|
-
"ERROR:REG-006:PARENT_TYPE_INVALID"
|
103
|
-
);
|
104
|
-
|
105
|
-
// also check that nftId and parentNFtId are on the same chain if applicable
|
106
|
-
|
107
|
-
// nft minting
|
108
|
-
uint256 mintedTokenId = _chainNft.mint(
|
109
|
-
registerable.getOwner(),
|
110
|
-
EMPTY_URI
|
111
|
-
);
|
112
|
-
|
113
|
-
nftId = toNftId(mintedTokenId);
|
114
|
-
|
115
|
-
// special case services
|
116
|
-
if(registerable.getType() == SERVICE()) {
|
117
|
-
IService service = IService(objectAddress);
|
118
|
-
require(
|
119
|
-
service.supportsInterface(type(IService).interfaceId),
|
120
|
-
"ERROR:REG-007:NOT_SERVICE"
|
121
|
-
);
|
122
|
-
|
123
|
-
string memory serviceName = service.getName();
|
124
|
-
VersionPart majorVersion = service.getMajorVersion();
|
125
|
-
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
126
|
-
|
127
|
-
// service specific state
|
128
|
-
_string[nftId] = serviceName;
|
129
|
-
|
130
|
-
require(
|
131
|
-
_service[serviceNameHash][majorVersion] == address(0),
|
132
|
-
"ERROR:REG-008:ALREADY_REGISTERED"
|
133
|
-
);
|
134
|
-
_service[serviceNameHash][majorVersion] = objectAddress;
|
83
|
+
external
|
84
|
+
onlyReleaseManager
|
85
|
+
returns(NftId nftId)
|
86
|
+
{
|
87
|
+
/* must be guaranteed by release manager
|
88
|
+
if(info.objectType != SERVICE()) {
|
89
|
+
revert();
|
135
90
|
}
|
91
|
+
if(info.parentType != REGISTRY()) {
|
92
|
+
revert();
|
93
|
+
}
|
94
|
+
info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
|
95
|
+
*/
|
96
|
+
|
97
|
+
if(_service[version][domain] > address(0)) {
|
98
|
+
revert ServiceAlreadyRegistered(info.objectAddress);
|
99
|
+
}
|
100
|
+
|
101
|
+
_service[version][domain] = info.objectAddress; // nftId;
|
102
|
+
|
103
|
+
nftId = _register(info);
|
136
104
|
|
137
|
-
|
138
|
-
_registerObjectInfo(registerable, nftId);
|
105
|
+
emit LogServiceRegistration(version, domain);
|
139
106
|
}
|
140
107
|
|
108
|
+
function register(ObjectInfo memory info)
|
109
|
+
external
|
110
|
+
onlyRegistryService
|
111
|
+
returns(NftId nftId)
|
112
|
+
{
|
113
|
+
ObjectType objectType = info.objectType;
|
114
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
141
115
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
116
|
+
// TODO do not need it here -> SERVICE is no longer part of _coreContractCombinations
|
117
|
+
// no service registrations
|
118
|
+
if(objectType == SERVICE()) {
|
119
|
+
revert ServiceRegistration();
|
120
|
+
}
|
121
|
+
|
122
|
+
// only valid core types combinations
|
123
|
+
if(info.objectAddress == address(0))
|
124
|
+
{
|
125
|
+
if(_coreObjectCombinations[objectType][parentType] == false) {
|
126
|
+
revert InvalidTypesCombination(objectType, parentType);
|
127
|
+
}
|
128
|
+
}
|
129
|
+
else
|
130
|
+
{
|
131
|
+
if(_coreContractCombinations[objectType][parentType] == false) {
|
132
|
+
revert InvalidTypesCombination(objectType, parentType);
|
133
|
+
}
|
134
|
+
}
|
135
|
+
|
136
|
+
nftId = _register(info);
|
137
|
+
}
|
138
|
+
|
139
|
+
function registerWithCustomType(ObjectInfo memory info)
|
148
140
|
external
|
149
|
-
|
150
|
-
returns
|
151
|
-
// TODO add onlyRegisteredInstance
|
152
|
-
NftId nftId
|
153
|
-
)
|
141
|
+
onlyRegistryService
|
142
|
+
returns(NftId nftId)
|
154
143
|
{
|
155
|
-
|
156
|
-
|
157
|
-
objectType == POLICY() || objectType == BUNDLE(),
|
158
|
-
"ERROR:REG-010:TYPE_INVALID"
|
159
|
-
);
|
160
|
-
|
161
|
-
uint256 mintedTokenId = _chainNft.mint(initialOwner, EMPTY_URI);
|
162
|
-
nftId = toNftId(mintedTokenId);
|
163
|
-
|
164
|
-
ObjectInfo memory info = ObjectInfo(
|
165
|
-
nftId,
|
166
|
-
parentNftId,
|
167
|
-
objectType,
|
168
|
-
address(0),
|
169
|
-
initialOwner,
|
170
|
-
data
|
171
|
-
);
|
144
|
+
ObjectType objectType = info.objectType;
|
145
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
172
146
|
|
173
|
-
|
147
|
+
if(_coreTypes[objectType]) {
|
148
|
+
revert CoreTypeRegistration();
|
149
|
+
}
|
174
150
|
|
175
|
-
|
151
|
+
if(
|
152
|
+
parentType == PROTOCOL() ||
|
153
|
+
parentType == REGISTRY() ||
|
154
|
+
parentType == SERVICE()
|
155
|
+
) {
|
156
|
+
revert InvalidTypesCombination(objectType, parentType);
|
157
|
+
}
|
158
|
+
|
159
|
+
_register(info);
|
176
160
|
}
|
177
161
|
|
178
|
-
|
179
|
-
|
162
|
+
|
163
|
+
/// @dev earliest GIF major version
|
164
|
+
function getInitialVersion() external view returns (VersionPart) {
|
165
|
+
return _releaseManager.getInitialVersion();
|
180
166
|
}
|
181
167
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
168
|
+
// TODO make distinction between active an not yet active version
|
169
|
+
// need to be thought trough, not yet clear if necessary
|
170
|
+
// need to answer question: what is the latest version during the upgrade process?
|
171
|
+
// likely setting up a new gif version does not fit into a single tx
|
172
|
+
// in this case we might want to have a period where the latest version is
|
173
|
+
// in the process of being set up while the latest active version is 1 major release smaller
|
174
|
+
/// @dev latest GIF major version (might not yet be active)
|
175
|
+
function getNextVersion() external view returns (VersionPart) {
|
176
|
+
return _releaseManager.getNextVersion();
|
186
177
|
}
|
187
178
|
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
return _info[nftId].objectType.gtz();
|
179
|
+
/// @dev latest active GIF release version
|
180
|
+
function getLatestVersion() external view returns (VersionPart) {
|
181
|
+
return _releaseManager.getLatestVersion();
|
192
182
|
}
|
193
183
|
|
194
|
-
function
|
195
|
-
|
196
|
-
) external view override returns (bool) {
|
197
|
-
return _nftIdByAddress[object].gtz();
|
184
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
|
185
|
+
return _releaseManager.getReleaseInfo(version);
|
198
186
|
}
|
199
187
|
|
200
|
-
function
|
201
|
-
|
202
|
-
) external view override returns (ObjectInfo memory info) {
|
203
|
-
return _info[nftId];
|
188
|
+
function getObjectCount() external view returns (uint256) {
|
189
|
+
return _chainNft.totalSupply();
|
204
190
|
}
|
205
191
|
|
206
|
-
function
|
207
|
-
|
208
|
-
) external view returns (string memory name) {
|
209
|
-
return _string[nftId];
|
192
|
+
function getReleaseManagerAddress() external view returns (address) {
|
193
|
+
return address(_releaseManager);
|
210
194
|
}
|
211
195
|
|
212
|
-
function
|
213
|
-
return
|
196
|
+
function getNftId() external view returns (NftId nftId) {
|
197
|
+
return _registryNftId;
|
214
198
|
}
|
215
199
|
|
216
|
-
function
|
217
|
-
return
|
200
|
+
function getNftId(address object) external view returns (NftId id) {
|
201
|
+
return _nftIdByAddress[object];
|
218
202
|
}
|
219
203
|
|
220
|
-
|
221
|
-
|
222
|
-
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
223
|
-
return _service[serviceNameHash][majorVersion];
|
204
|
+
function ownerOf(NftId nftId) public view returns (address) {
|
205
|
+
return _chainNft.ownerOf(nftId.toInt());
|
224
206
|
}
|
225
207
|
|
226
|
-
|
227
|
-
|
228
|
-
return interfaceId == type(IRegistry).interfaceId;
|
208
|
+
function ownerOf(address contractAddress) public view returns (address) {
|
209
|
+
return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
229
210
|
}
|
230
211
|
|
231
|
-
|
232
|
-
|
233
|
-
return this;
|
212
|
+
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
213
|
+
return _info[nftId];
|
234
214
|
}
|
235
215
|
|
236
|
-
|
237
|
-
|
238
|
-
return zeroNftId();
|
216
|
+
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
217
|
+
return _info[_nftIdByAddress[object]];
|
239
218
|
}
|
240
219
|
|
241
|
-
function
|
242
|
-
return
|
220
|
+
function isRegistered(NftId nftId) public view returns (bool) {
|
221
|
+
return _info[nftId].objectType.gtz();
|
243
222
|
}
|
244
223
|
|
224
|
+
function isRegistered(address object) external view returns (bool) {
|
225
|
+
return _nftIdByAddress[object].gtz();
|
226
|
+
}
|
245
227
|
|
246
|
-
function
|
247
|
-
return
|
228
|
+
function isRegisteredService(address object) external view returns (bool) {
|
229
|
+
return _info[_nftIdByAddress[object]].objectType == SERVICE();
|
248
230
|
}
|
249
231
|
|
250
|
-
function
|
251
|
-
|
232
|
+
function isRegisteredComponent(address object) external view returns (bool) {
|
233
|
+
NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
|
234
|
+
return _info[objectParentNftId].objectType == INSTANCE();
|
252
235
|
}
|
253
236
|
|
254
|
-
function
|
255
|
-
|
256
|
-
|
257
|
-
return toNftId(_chainNftInternal.PROTOCOL_NFT_ID());
|
258
|
-
}
|
259
|
-
else {
|
260
|
-
return toNftId(_chainNftInternal.GLOBAL_REGISTRY_ID());
|
261
|
-
}
|
237
|
+
function isValidRelease(VersionPart version) external view returns (bool)
|
238
|
+
{
|
239
|
+
return _releaseManager.isValidRelease(version);
|
262
240
|
}
|
263
241
|
|
264
|
-
function
|
265
|
-
|
242
|
+
function getServiceAddress(
|
243
|
+
ObjectType serviceDomain,
|
244
|
+
VersionPart releaseVersion
|
245
|
+
) external view returns (address service)
|
246
|
+
{
|
247
|
+
// TODO how can I get service address while release is not validated/activated ?!! -> user will check validity of release on its own
|
248
|
+
//if(_releaseManager.isValidRelease(releaseVersion)) {
|
249
|
+
service = _service[releaseVersion][serviceDomain];
|
250
|
+
//}
|
266
251
|
}
|
267
252
|
|
268
|
-
|
269
|
-
|
270
|
-
return _protocolOwner;
|
253
|
+
function getChainNftAddress() external view override returns (address) {
|
254
|
+
return address(_chainNft);
|
271
255
|
}
|
272
256
|
|
273
|
-
|
274
|
-
|
275
|
-
_isValidType[REGISTRY()] = true; // only for global registry
|
276
|
-
_isValidType[TOKEN()] = true;
|
277
|
-
_isValidType[SERVICE()] = true;
|
278
|
-
_isValidType[INSTANCE()] = true;
|
279
|
-
_isValidType[STAKE()] = true;
|
280
|
-
_isValidType[PRODUCT()] = true;
|
281
|
-
_isValidType[ORACLE()] = true;
|
282
|
-
_isValidType[POOL()] = true;
|
283
|
-
_isValidType[POLICY()] = true;
|
284
|
-
_isValidType[BUNDLE()] = true;
|
257
|
+
function getOwner() public view returns (address owner) {
|
258
|
+
return ownerOf(address(this));
|
285
259
|
}
|
286
260
|
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
261
|
+
// IERC165
|
262
|
+
|
263
|
+
function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
|
264
|
+
if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
|
265
|
+
return true;
|
266
|
+
}
|
267
|
+
|
268
|
+
return false;
|
269
|
+
}
|
270
|
+
|
271
|
+
// Internals
|
272
|
+
|
273
|
+
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
274
|
+
// TODO registration of precompile addresses
|
275
|
+
function _register(ObjectInfo memory info)
|
276
|
+
internal
|
277
|
+
returns(NftId nftId)
|
278
|
+
{
|
279
|
+
ObjectType objectType = info.objectType;
|
280
|
+
NftId parentNftId = info.parentNftId;
|
281
|
+
ObjectInfo memory parentInfo = _info[parentNftId];
|
282
|
+
ObjectType parentType = parentInfo.objectType; // see function header
|
283
|
+
address parentAddress = parentInfo.objectAddress;
|
284
|
+
|
285
|
+
// parent is contract -> need to check? -> check before minting
|
286
|
+
// special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
287
|
+
// special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
|
288
|
+
// special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
|
289
|
+
if(parentAddress == address(0)) {
|
290
|
+
revert ZeroParentAddress();
|
291
|
+
}
|
292
|
+
|
293
|
+
address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
|
294
|
+
uint256 tokenId = _chainNft.getNextTokenId();
|
295
|
+
nftId = toNftId(tokenId);
|
296
|
+
|
297
|
+
info.nftId = nftId;
|
298
|
+
_info[nftId] = info;
|
299
|
+
|
300
|
+
if(info.objectAddress > address(0))
|
301
|
+
{
|
302
|
+
address contractAddress = info.objectAddress;
|
303
|
+
|
304
|
+
if(_nftIdByAddress[contractAddress].gtz()) {
|
305
|
+
revert ContractAlreadyRegistered(contractAddress);
|
306
|
+
}
|
293
307
|
|
294
|
-
|
295
|
-
|
296
|
-
_isValidParentType[DISTRIBUTOR()][INSTANCE()] = true;
|
297
|
-
_isValidParentType[ORACLE()][INSTANCE()] = true;
|
298
|
-
_isValidParentType[POOL()][INSTANCE()] = true;
|
308
|
+
_nftIdByAddress[contractAddress] = nftId;
|
309
|
+
}
|
299
310
|
|
300
|
-
|
301
|
-
_isValidParentType[POLICY()][PRODUCT()] = true;
|
311
|
+
emit LogRegistration(nftId, parentNftId, objectType, info.isInterceptor, info.objectAddress, info.initialOwner);
|
302
312
|
|
303
|
-
//
|
304
|
-
|
305
|
-
|
313
|
+
// calls nft receiver(1) and interceptor(2)
|
314
|
+
uint256 mintedTokenId = _chainNft.mint(
|
315
|
+
info.initialOwner,
|
316
|
+
interceptor,
|
317
|
+
EMPTY_URI);
|
318
|
+
assert(mintedTokenId == tokenId);
|
319
|
+
|
306
320
|
}
|
307
321
|
|
308
|
-
/// @dev
|
309
|
-
function
|
310
|
-
|
311
|
-
|
322
|
+
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
323
|
+
function _getInterceptor(
|
324
|
+
bool isInterceptor,
|
325
|
+
address objectAddress,
|
326
|
+
bool parentIsInterceptor,
|
327
|
+
address parentObjectAddress
|
328
|
+
)
|
329
|
+
internal
|
330
|
+
view
|
331
|
+
returns (address interceptor)
|
332
|
+
{
|
333
|
+
if (objectAddress == address(0)) {
|
334
|
+
if (parentIsInterceptor) {
|
335
|
+
return parentObjectAddress;
|
336
|
+
} else {
|
337
|
+
return address(0);
|
338
|
+
}
|
339
|
+
}
|
312
340
|
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
zeroNftId(), // parent nft id
|
317
|
-
PROTOCOL(),
|
318
|
-
address(0), // contract address
|
319
|
-
_protocolOwner,
|
320
|
-
"" // data
|
321
|
-
);
|
341
|
+
if (isInterceptor) {
|
342
|
+
return objectAddress;
|
343
|
+
}
|
322
344
|
|
323
|
-
|
345
|
+
return address(0);
|
346
|
+
}
|
347
|
+
|
348
|
+
// Internals called only in constructor
|
349
|
+
|
350
|
+
/// @dev protocol registration used to anchor the dip ecosystem relations
|
351
|
+
function _registerProtocol()
|
352
|
+
private
|
353
|
+
{
|
354
|
+
uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
|
355
|
+
NftId protocolNftId = toNftId(protocolId);
|
356
|
+
|
357
|
+
_info[protocolNftId] = ObjectInfo({
|
358
|
+
nftId: protocolNftId,
|
359
|
+
parentNftId: zeroNftId(),
|
360
|
+
objectType: PROTOCOL(),
|
361
|
+
isInterceptor: false,
|
362
|
+
objectAddress: address(0),
|
363
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
364
|
+
data: ""
|
365
|
+
});
|
366
|
+
|
367
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
|
324
368
|
}
|
325
369
|
|
326
370
|
/// @dev registry registration
|
327
371
|
/// might also register the global registry when not on mainnet
|
328
|
-
function _registerRegistry()
|
329
|
-
|
330
|
-
|
372
|
+
function _registerRegistry()
|
373
|
+
private
|
374
|
+
{
|
375
|
+
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
376
|
+
NftId registryNftId = toNftId(registryId);
|
377
|
+
NftId parentNftId;
|
331
378
|
|
332
|
-
|
333
|
-
|
379
|
+
if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
|
380
|
+
{// we're not the global registry
|
334
381
|
_registerGlobalRegistry();
|
382
|
+
parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
383
|
+
}
|
384
|
+
else
|
385
|
+
{// we are global registry
|
386
|
+
parentNftId = toNftId(_chainNft.PROTOCOL_NFT_ID());
|
335
387
|
}
|
336
388
|
|
337
|
-
|
338
|
-
|
389
|
+
_info[registryNftId] = ObjectInfo({
|
390
|
+
nftId: registryNftId,
|
391
|
+
parentNftId: parentNftId,
|
392
|
+
objectType: REGISTRY(),
|
393
|
+
isInterceptor: false,
|
394
|
+
objectAddress: address(this),
|
395
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
396
|
+
data: ""
|
397
|
+
});
|
398
|
+
_nftIdByAddress[address(this)] = registryNftId;
|
399
|
+
_registryNftId = registryNftId;
|
400
|
+
|
401
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, registryId);
|
339
402
|
}
|
340
403
|
|
341
|
-
|
342
404
|
/// @dev global registry registration for non mainnet registries
|
343
|
-
function _registerGlobalRegistry()
|
344
|
-
|
345
|
-
|
346
|
-
|
405
|
+
function _registerGlobalRegistry()
|
406
|
+
private
|
407
|
+
{
|
408
|
+
uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
|
347
409
|
NftId globalRegistryNftId = toNftId(globalRegistryId);
|
348
|
-
ObjectInfo memory globalRegistryInfo = ObjectInfo(
|
349
|
-
globalRegistryNftId,
|
350
|
-
toNftId(_chainNftInternal.PROTOCOL_NFT_ID()),
|
351
|
-
REGISTRY(),
|
352
|
-
address(0), // contract address
|
353
|
-
_protocolOwner,
|
354
|
-
"" // data
|
355
|
-
);
|
356
|
-
|
357
|
-
_info[globalRegistryNftId] = globalRegistryInfo;
|
358
|
-
}
|
359
|
-
|
360
|
-
|
361
|
-
function _registerObjectInfo(
|
362
|
-
IRegisterable registerable,
|
363
|
-
NftId nftId
|
364
|
-
) internal virtual {
|
365
|
-
address objectAddress = address(registerable);
|
366
|
-
ObjectInfo memory info = ObjectInfo(
|
367
|
-
nftId,
|
368
|
-
registerable.getParentNftId(),
|
369
|
-
registerable.getType(),
|
370
|
-
objectAddress,
|
371
|
-
registerable.getOwner(),
|
372
|
-
registerable.getData()
|
373
|
-
);
|
374
|
-
|
375
|
-
_info[nftId] = info;
|
376
|
-
_nftIdByAddress[objectAddress] = nftId;
|
377
410
|
|
378
|
-
|
411
|
+
_info[globalRegistryNftId] = ObjectInfo({
|
412
|
+
nftId: globalRegistryNftId,
|
413
|
+
parentNftId: toNftId(_chainNft.PROTOCOL_NFT_ID()),
|
414
|
+
objectType: REGISTRY(),
|
415
|
+
isInterceptor: false,
|
416
|
+
objectAddress: address(0),
|
417
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
418
|
+
data: ""
|
419
|
+
});
|
420
|
+
|
421
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
379
422
|
}
|
380
423
|
|
424
|
+
/// @dev defines which object - parent types relations are allowed to register
|
425
|
+
// IMPORTANT:
|
426
|
+
// 1) EACH object type MUST have only one parent type across ALL mappings
|
427
|
+
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
428
|
+
// 3) DO NOT use REGISTRY as object type
|
429
|
+
// 2) DO NOT use PROTOCOL and "zeroObjectType"
|
430
|
+
function _setupValidCoreTypesAndCombinations()
|
431
|
+
private
|
432
|
+
{
|
433
|
+
_coreTypes[REGISTRY()] = true;
|
434
|
+
_coreTypes[SERVICE()] = true;
|
435
|
+
_coreTypes[TOKEN()] = true;
|
436
|
+
_coreTypes[INSTANCE()] = true;
|
437
|
+
_coreTypes[PRODUCT()] = true;
|
438
|
+
_coreTypes[POOL()] = true;
|
439
|
+
_coreTypes[DISTRIBUTION()] = true;
|
440
|
+
_coreTypes[POLICY()] = true;
|
441
|
+
_coreTypes[BUNDLE()] = true;
|
442
|
+
_coreTypes[STAKE()] = true;
|
443
|
+
|
444
|
+
// registry as parent, ONLY registry owner
|
445
|
+
//_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
|
446
|
+
_coreContractCombinations[TOKEN()][REGISTRY()] = true;
|
447
|
+
//_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
|
448
|
+
|
449
|
+
// registry as parent, ONLY approved
|
450
|
+
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
451
|
+
|
452
|
+
// instance as parent, ONLY approved
|
453
|
+
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
454
|
+
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
455
|
+
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
456
|
+
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
457
|
+
|
458
|
+
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
459
|
+
|
460
|
+
// product as parent, ONLY approved
|
461
|
+
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
462
|
+
|
463
|
+
// pool as parent, ONLY approved
|
464
|
+
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|
465
|
+
_coreObjectCombinations[STAKE()][POOL()] = true;
|
466
|
+
}
|
381
467
|
}
|