@etherisc/gif-next 0.0.2-e6ad61d-739 → 0.0.2-e769e2e-077
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 +337 -19
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1410 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1343 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +760 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +969 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +808 -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 +312 -1138
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +660 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +439 -1219
- 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 +132 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1570 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1039 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +664 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3500 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -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/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/{treasury/ITreasury.sol/ITreasury.json → module/IComponents.sol/IComponents.json} +2 -2
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
- 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/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1091 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +684 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +684 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1148 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1044 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1559 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1411 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +680 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +820 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +660 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1264 -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 +701 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +530 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +989 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +381 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1132 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +692 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +969 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +716 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1391 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +673 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +636 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +648 -27
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +990 -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 +846 -97
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +308 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1290 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +661 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +688 -0
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +611 -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 +890 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1461 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +736 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +520 -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 +625 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +854 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +699 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +478 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/lifecycle/ILifecycle.sol/ILifecycleModule.json → shared/ILifecycle.sol/ILifecycle.json} +10 -77
- 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/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1030 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -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 +347 -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/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +256 -220
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -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 +1607 -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 +2074 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +676 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +805 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +636 -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/{types → type}/Blocknumber.sol/BlocknumberLib.json +16 -3
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/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 +185 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/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/{types → type}/StateId.sol/StateIdLib.json +3 -3
- 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/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
- 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 +263 -0
- package/contracts/distribution/DistributionService.sol +297 -0
- package/contracts/distribution/DistributionServiceManager.sol +51 -0
- package/contracts/distribution/IDistributionComponent.sol +66 -0
- package/contracts/distribution/IDistributionService.sol +81 -0
- package/contracts/instance/BundleManager.sol +126 -0
- package/contracts/instance/IInstance.sol +74 -22
- package/contracts/instance/IInstanceService.sol +83 -0
- package/contracts/instance/Instance.sol +209 -53
- package/contracts/instance/InstanceAccessManager.sol +543 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +336 -0
- package/contracts/instance/InstanceReader.sol +366 -0
- package/contracts/instance/InstanceService.sol +348 -0
- package/contracts/instance/InstanceServiceManager.sol +54 -0
- package/contracts/instance/InstanceStore.sol +259 -0
- package/contracts/instance/base/BalanceStore.sol +118 -0
- package/contracts/instance/base/Cloneable.sol +51 -0
- package/contracts/instance/base/ObjectManager.sol +82 -0
- package/contracts/instance/module/IAccess.sol +54 -0
- package/contracts/instance/module/IBundle.sol +20 -0
- package/contracts/instance/module/IComponents.sol +52 -0
- package/contracts/instance/module/IDistribution.sol +42 -0
- package/contracts/instance/module/IPolicy.sol +84 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/pool/BundleService.sol +313 -0
- package/contracts/pool/BundleServiceManager.sol +51 -0
- package/contracts/pool/IBundleService.sol +106 -0
- package/contracts/pool/IPoolComponent.sol +112 -0
- package/contracts/pool/IPoolService.sol +147 -0
- package/contracts/pool/Pool.sol +299 -0
- package/contracts/pool/PoolService.sol +421 -0
- package/contracts/pool/PoolServiceManager.sol +51 -0
- package/contracts/product/ApplicationService.sol +253 -0
- package/contracts/product/ApplicationServiceManager.sol +35 -0
- package/contracts/product/ClaimService.sol +436 -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 +78 -0
- package/contracts/product/IPricingService.sol +39 -0
- package/contracts/product/IProductComponent.sol +42 -0
- package/contracts/product/IProductService.sol +33 -0
- package/contracts/product/PolicyService.sol +471 -0
- package/contracts/product/PolicyServiceManager.sol +54 -0
- package/contracts/product/PricingService.sol +300 -0
- package/contracts/product/PricingServiceManager.sol +51 -0
- package/contracts/product/Product.sol +377 -0
- package/contracts/product/ProductService.sol +122 -0
- package/contracts/product/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +143 -62
- package/contracts/registry/IRegistry.sol +84 -40
- package/contracts/registry/IRegistryService.sol +79 -0
- package/contracts/registry/ITransferInterceptor.sol +7 -0
- package/contracts/registry/Registry.sol +475 -128
- package/contracts/registry/RegistryAccessManager.sol +213 -0
- package/contracts/registry/RegistryService.sol +327 -0
- package/contracts/registry/RegistryServiceManager.sol +60 -0
- package/contracts/registry/ReleaseManager.sol +375 -0
- package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
- package/contracts/registry/TokenRegistry.sol +187 -0
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/shared/Component.sol +286 -0
- package/contracts/shared/ComponentService.sol +596 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +111 -0
- package/contracts/shared/ERC165.sol +27 -0
- package/contracts/shared/IComponent.sol +74 -0
- package/contracts/shared/IComponentService.sol +91 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- package/contracts/shared/IKeyValueStore.sol +53 -0
- package/contracts/shared/ILifecycle.sol +30 -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/InstanceLinkedComponent.sol +145 -0
- package/contracts/shared/KeyValueStore.sol +169 -0
- package/contracts/shared/Lifecycle.sol +121 -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 +77 -0
- package/contracts/shared/TokenHandler.sol +58 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +59 -0
- package/contracts/staking/IStaking.sol +77 -0
- package/contracts/staking/IStakingService.sol +105 -0
- package/contracts/staking/Staking.sol +212 -0
- package/contracts/staking/StakingManager.sol +46 -0
- package/contracts/staking/StakingService.sol +200 -0
- package/contracts/staking/StakingServiceManager.sol +41 -0
- package/contracts/type/AddressSet.sol +58 -0
- package/contracts/type/Amount.sol +114 -0
- package/contracts/{types → type}/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/type/DistributorType.sol +55 -0
- package/contracts/type/Fee.sol +66 -0
- package/contracts/type/Key32.sol +50 -0
- package/contracts/{types → type}/NftId.sol +34 -12
- package/contracts/type/NftIdSet.sol +62 -0
- package/contracts/{types → type}/ObjectType.sol +73 -15
- 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 +138 -0
- package/contracts/type/Seconds.sol +54 -0
- package/contracts/{types → type}/StateId.sol +23 -4
- package/contracts/{types → type}/Timestamp.sol +36 -6
- package/contracts/type/UFixed.sol +326 -0
- package/contracts/type/Version.sol +108 -0
- package/package.json +12 -5
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/Component.json +0 -205
- 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 -255
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.json +0 -328
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.json +0 -346
- 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/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/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 -299
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
- 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 -205
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
- 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/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
- 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 -254
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
- 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 -129
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
- 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 -127
- 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 -196
- package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
- package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
- package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- 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/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
- package/contracts/components/Component.sol +0 -77
- package/contracts/components/IPool.sol +0 -15
- package/contracts/components/IProduct.sol +0 -16
- package/contracts/components/Pool.sol +0 -52
- package/contracts/components/Product.sol +0 -89
- 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/access/Access.sol +0 -165
- package/contracts/instance/access/IAccess.sol +0 -63
- package/contracts/instance/component/ComponentModule.sol +0 -274
- package/contracts/instance/component/IComponent.sol +0 -74
- package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
- package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
- package/contracts/instance/policy/IPolicy.sol +0 -50
- package/contracts/instance/policy/PolicyModule.sol +0 -114
- package/contracts/instance/pool/IPoolModule.sol +0 -23
- package/contracts/instance/pool/PoolModule.sol +0 -81
- package/contracts/instance/product/IProductService.sol +0 -36
- package/contracts/instance/product/ProductService.sol +0 -136
- package/contracts/instance/treasury/ITreasury.sol +0 -91
- package/contracts/instance/treasury/TokenHandler.sol +0 -24
- package/contracts/instance/treasury/TreasuryModule.sol +0 -168
- package/contracts/registry/IChainNft.sol +0 -21
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/Fee.sol +0 -32
- package/contracts/types/UFixed.sol +0 -210
@@ -1,182 +1,529 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
|
+
|
6
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
7
|
+
import {VersionPart} from "../type/Version.sol";
|
8
|
+
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
|
9
|
+
|
10
|
+
import {ChainNft} from "./ChainNft.sol";
|
11
|
+
import {IRegistry} from "./IRegistry.sol";
|
12
|
+
import {ReleaseManager} from "./ReleaseManager.sol";
|
13
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
14
|
+
|
15
|
+
// IMPORTANT
|
16
|
+
// Each NFT minted by registry is accosiated with:
|
17
|
+
// 1) NFT owner
|
18
|
+
// 2) registred contract OR object stored in registered (parent) contract
|
19
|
+
// Four registration flows:
|
20
|
+
// 1) IService address by release manager (SERVICE of domain SERVICE aka registry service aka release creation)
|
21
|
+
// 2) IService address by release manager (SERVICE of domain !SERVICE aka regular service)
|
22
|
+
// 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
|
23
|
+
// 4) state object by regular service (POLICY, BUNDLE, STAKE)
|
24
|
+
|
25
|
+
contract Registry is
|
26
|
+
IRegistry
|
27
|
+
{
|
28
|
+
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
29
|
+
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
30
|
+
uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
|
31
|
+
string public constant EMPTY_URI = "";
|
32
|
+
|
33
|
+
mapping(NftId nftId => ObjectInfo info) private _info;
|
34
|
+
mapping(address object => NftId nftId) private _nftIdByAddress;
|
35
|
+
|
36
|
+
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
|
3
37
|
|
4
|
-
|
5
|
-
import {IRegistry, IRegistryLinked, IRegisterable} from "./IRegistry.sol";
|
6
|
-
import {NftId, toNftId, NftIdLib} from "../types/NftId.sol";
|
7
|
-
import {ObjectType, INSTANCE, POLICY, BUNDLE} from "../types/ObjectType.sol";
|
38
|
+
mapping(ObjectType objectType => bool) private _coreTypes;
|
8
39
|
|
9
|
-
|
10
|
-
|
40
|
+
mapping(ObjectType objectType => mapping(
|
41
|
+
ObjectType parentType => bool)) private _coreContractCombinations;
|
11
42
|
|
12
|
-
|
13
|
-
|
43
|
+
mapping(ObjectType objectType => mapping(
|
44
|
+
ObjectType parentType => bool)) private _coreObjectCombinations;
|
45
|
+
|
46
|
+
NftId private _registryNftId;
|
47
|
+
ChainNft private _chainNft;
|
48
|
+
|
49
|
+
ReleaseManager private _releaseManager;
|
50
|
+
address private _tokenRegistryAddress;
|
51
|
+
address private _stakingAddress;
|
52
|
+
|
53
|
+
modifier onlyRegistryService() {
|
54
|
+
if(!_releaseManager.isActiveRegistryService(msg.sender)) {
|
55
|
+
revert CallerNotRegistryService();
|
56
|
+
}
|
57
|
+
_;
|
14
58
|
}
|
15
59
|
|
16
|
-
|
17
|
-
|
60
|
+
modifier onlyReleaseManager() {
|
61
|
+
if(msg.sender != address(_releaseManager)) {
|
62
|
+
revert CallerNotReleaseManager();
|
63
|
+
}
|
64
|
+
_;
|
18
65
|
}
|
19
|
-
}
|
20
66
|
|
21
|
-
|
22
|
-
|
67
|
+
constructor() {
|
68
|
+
_releaseManager = ReleaseManager(msg.sender);
|
23
69
|
|
24
|
-
|
70
|
+
// deploy NFT
|
71
|
+
_chainNft = new ChainNft(address(this));
|
25
72
|
|
26
|
-
|
27
|
-
|
73
|
+
// initial registry setup
|
74
|
+
_registerProtocol();
|
75
|
+
_registerRegistry();
|
76
|
+
|
77
|
+
// set object types and object parent relations
|
78
|
+
_setupValidCoreTypesAndCombinations();
|
28
79
|
}
|
29
80
|
|
30
|
-
// getType, getData and register need to be implemented by concrete contract
|
31
81
|
|
32
|
-
function
|
33
|
-
|
34
|
-
|
82
|
+
function setTokenRegistry(
|
83
|
+
address tokenRegistry
|
84
|
+
)
|
85
|
+
external
|
86
|
+
onlyReleaseManager
|
87
|
+
{
|
88
|
+
if (_tokenRegistryAddress != address(0)) {
|
89
|
+
revert TokenRegistryAlreadySet(tokenRegistry);
|
90
|
+
}
|
35
91
|
|
36
|
-
|
37
|
-
|
38
|
-
|
92
|
+
if (address(tokenRegistry) == address(0)) {
|
93
|
+
revert TokenRegistryZero();
|
94
|
+
}
|
39
95
|
|
40
|
-
|
41
|
-
NftId nftId = _registry.getNftId(address(this));
|
42
|
-
return nftId.gtz();
|
96
|
+
_tokenRegistryAddress = tokenRegistry;
|
43
97
|
}
|
44
98
|
|
45
|
-
function getNftId() public view override returns (NftId nftId) {
|
46
|
-
return _registry.getNftId(address(this));
|
47
|
-
}
|
48
99
|
|
49
|
-
function
|
50
|
-
|
51
|
-
|
52
|
-
|
100
|
+
function registerStaking(
|
101
|
+
address stakingAddress,
|
102
|
+
address stakingOwner
|
103
|
+
)
|
104
|
+
external
|
105
|
+
onlyReleaseManager
|
106
|
+
returns(NftId stakingNftId)
|
107
|
+
{
|
108
|
+
// staking contract for same chain may only be registered once
|
109
|
+
if (_stakingAddress != address(0)) {
|
110
|
+
revert StakingAlreadyRegistered(_stakingAddress);
|
111
|
+
}
|
112
|
+
|
113
|
+
_stakingAddress = stakingAddress;
|
114
|
+
uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
115
|
+
stakingNftId = NftIdLib.toNftId(stakingId);
|
116
|
+
|
117
|
+
_nftIdByAddress[_stakingAddress] = stakingNftId;
|
118
|
+
_info[stakingNftId] = ObjectInfo({
|
119
|
+
nftId: stakingNftId,
|
120
|
+
parentNftId: _registryNftId,
|
121
|
+
objectType: STAKING(),
|
122
|
+
isInterceptor: false,
|
123
|
+
objectAddress: _stakingAddress,
|
124
|
+
initialOwner: stakingOwner,
|
125
|
+
data: ""
|
126
|
+
});
|
127
|
+
|
128
|
+
_chainNft.mint(stakingOwner, stakingId);
|
53
129
|
}
|
54
|
-
}
|
55
130
|
|
56
|
-
|
57
|
-
|
131
|
+
function registerService(
|
132
|
+
ObjectInfo memory info,
|
133
|
+
VersionPart version,
|
134
|
+
ObjectType domain
|
135
|
+
)
|
136
|
+
external
|
137
|
+
onlyReleaseManager
|
138
|
+
returns(NftId nftId)
|
139
|
+
{
|
140
|
+
/* must be guaranteed by release manager
|
141
|
+
if(info.objectType != SERVICE()) {
|
142
|
+
revert();
|
143
|
+
}
|
144
|
+
if(info.parentType != REGISTRY()) {
|
145
|
+
revert();
|
146
|
+
}
|
147
|
+
info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
|
148
|
+
*/
|
149
|
+
|
150
|
+
if(_service[version][domain] > address(0)) {
|
151
|
+
revert ServiceAlreadyRegistered(info.objectAddress);
|
152
|
+
}
|
58
153
|
|
59
|
-
|
154
|
+
_service[version][domain] = info.objectAddress; // nftId;
|
60
155
|
|
61
|
-
|
62
|
-
mapping(NftId nftId => address owner) private _owner;
|
63
|
-
mapping(address object => NftId nftId) private _nftIdByAddress;
|
156
|
+
nftId = _register(info);
|
64
157
|
|
65
|
-
|
158
|
+
emit LogServiceRegistration(version, domain);
|
159
|
+
}
|
160
|
+
|
161
|
+
function register(ObjectInfo memory info)
|
162
|
+
external
|
163
|
+
onlyRegistryService
|
164
|
+
returns(NftId nftId)
|
165
|
+
{
|
166
|
+
ObjectType objectType = info.objectType;
|
167
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
168
|
+
|
169
|
+
// TODO do not need it here -> SERVICE is no longer part of _coreContractCombinations
|
170
|
+
// no service registrations
|
171
|
+
if(objectType == SERVICE()) {
|
172
|
+
revert ServiceRegistration();
|
173
|
+
}
|
174
|
+
|
175
|
+
// only valid core types combinations
|
176
|
+
if(info.objectAddress == address(0))
|
177
|
+
{
|
178
|
+
if(_coreObjectCombinations[objectType][parentType] == false) {
|
179
|
+
revert InvalidTypesCombination(objectType, parentType);
|
180
|
+
}
|
181
|
+
}
|
182
|
+
else
|
183
|
+
{
|
184
|
+
if(_coreContractCombinations[objectType][parentType] == false) {
|
185
|
+
revert InvalidTypesCombination(objectType, parentType);
|
186
|
+
}
|
187
|
+
}
|
66
188
|
|
67
|
-
|
68
|
-
require(
|
69
|
-
address(_chainNft) == address(0),
|
70
|
-
"ERROR:REG-001:ALREADY_INITIALIZED"
|
71
|
-
);
|
72
|
-
_chainNft = IChainNft(chainNft);
|
189
|
+
nftId = _register(info);
|
73
190
|
}
|
74
191
|
|
75
|
-
function
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
192
|
+
function registerWithCustomType(ObjectInfo memory info)
|
193
|
+
external
|
194
|
+
onlyRegistryService
|
195
|
+
returns(NftId nftId)
|
196
|
+
{
|
197
|
+
ObjectType objectType = info.objectType;
|
198
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
82
199
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
"ERROR:REG-003:NOT_REGISTERABLE"
|
87
|
-
);
|
200
|
+
if(_coreTypes[objectType]) {
|
201
|
+
revert CoreTypeRegistration();
|
202
|
+
}
|
88
203
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
// check validity of parent relation, valid relations are
|
96
|
-
// policy -> product, bundle -> pool, product -> instance, pool -> instance
|
204
|
+
if(
|
205
|
+
parentType == PROTOCOL() ||
|
206
|
+
parentType == REGISTRY() ||
|
207
|
+
parentType == SERVICE()
|
208
|
+
) {
|
209
|
+
revert InvalidTypesCombination(objectType, parentType);
|
97
210
|
}
|
98
211
|
|
99
|
-
|
100
|
-
|
101
|
-
EMPTY_URI
|
102
|
-
);
|
103
|
-
nftId = toNftId(mintedTokenId);
|
104
|
-
|
105
|
-
RegistryInfo memory info = RegistryInfo(
|
106
|
-
nftId,
|
107
|
-
registerable.getParentNftId(),
|
108
|
-
registerable.getType(),
|
109
|
-
objectAddress,
|
110
|
-
registerable.getInitialOwner()
|
111
|
-
);
|
212
|
+
_register(info);
|
213
|
+
}
|
112
214
|
|
113
|
-
_info[nftId] = info;
|
114
|
-
_nftIdByAddress[objectAddress] = nftId;
|
115
215
|
|
116
|
-
|
216
|
+
/// @dev earliest GIF major version
|
217
|
+
function getInitialVersion() external view returns (VersionPart) {
|
218
|
+
return _releaseManager.getInitialVersion();
|
117
219
|
}
|
118
220
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
)
|
130
|
-
{
|
131
|
-
// TODO add more validation
|
132
|
-
require(
|
133
|
-
objectType == POLICY() || objectType == BUNDLE(),
|
134
|
-
"ERROR:REG-005:TYPE_INVALID"
|
135
|
-
);
|
136
|
-
|
137
|
-
uint256 mintedTokenId = _chainNft.mint(initialOwner, EMPTY_URI);
|
138
|
-
nftId = toNftId(mintedTokenId);
|
139
|
-
|
140
|
-
RegistryInfo memory info = RegistryInfo(
|
141
|
-
nftId,
|
142
|
-
parentNftId,
|
143
|
-
objectType,
|
144
|
-
address(0),
|
145
|
-
initialOwner
|
146
|
-
);
|
221
|
+
// TODO make distinction between active an not yet active version
|
222
|
+
// need to be thought trough, not yet clear if necessary
|
223
|
+
// need to answer question: what is the latest version during the upgrade process?
|
224
|
+
// likely setting up a new gif version does not fit into a single tx
|
225
|
+
// in this case we might want to have a period where the latest version is
|
226
|
+
// in the process of being set up while the latest active version is 1 major release smaller
|
227
|
+
/// @dev latest GIF major version (might not yet be active)
|
228
|
+
function getNextVersion() external view returns (VersionPart) {
|
229
|
+
return _releaseManager.getNextVersion();
|
230
|
+
}
|
147
231
|
|
148
|
-
|
232
|
+
/// @dev latest active GIF release version
|
233
|
+
function getLatestVersion() external view returns (VersionPart) {
|
234
|
+
return _releaseManager.getLatestVersion();
|
235
|
+
}
|
149
236
|
|
150
|
-
|
237
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
|
238
|
+
return _releaseManager.getReleaseInfo(version);
|
151
239
|
}
|
152
240
|
|
153
|
-
function getObjectCount() external view
|
241
|
+
function getObjectCount() external view returns (uint256) {
|
154
242
|
return _chainNft.totalSupply();
|
155
243
|
}
|
156
244
|
|
157
|
-
function
|
158
|
-
address
|
159
|
-
|
245
|
+
function getReleaseManagerAddress() external view returns (address) {
|
246
|
+
return address(_releaseManager);
|
247
|
+
}
|
248
|
+
|
249
|
+
function getNftId() external view returns (NftId nftId) {
|
250
|
+
return _registryNftId;
|
251
|
+
}
|
252
|
+
|
253
|
+
function getNftId(address object) external view returns (NftId id) {
|
160
254
|
return _nftIdByAddress[object];
|
161
255
|
}
|
162
256
|
|
163
|
-
function
|
164
|
-
|
165
|
-
|
166
|
-
|
257
|
+
function ownerOf(NftId nftId) public view returns (address) {
|
258
|
+
return _chainNft.ownerOf(nftId.toInt());
|
259
|
+
}
|
260
|
+
|
261
|
+
function ownerOf(address contractAddress) public view returns (address) {
|
262
|
+
return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
167
263
|
}
|
168
264
|
|
169
|
-
function
|
170
|
-
NftId nftId
|
171
|
-
) external view override returns (RegistryInfo memory info) {
|
265
|
+
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
172
266
|
return _info[nftId];
|
173
267
|
}
|
174
268
|
|
175
|
-
function
|
176
|
-
return
|
269
|
+
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
270
|
+
return _info[_nftIdByAddress[object]];
|
271
|
+
}
|
272
|
+
|
273
|
+
function isRegistered(NftId nftId) public view returns (bool) {
|
274
|
+
return _info[nftId].objectType.gtz();
|
177
275
|
}
|
178
276
|
|
179
|
-
function
|
277
|
+
function isRegistered(address object) external view returns (bool) {
|
278
|
+
return _nftIdByAddress[object].gtz();
|
279
|
+
}
|
280
|
+
|
281
|
+
function isRegisteredService(address object) external view returns (bool) {
|
282
|
+
return _info[_nftIdByAddress[object]].objectType == SERVICE();
|
283
|
+
}
|
284
|
+
|
285
|
+
function isRegisteredComponent(address object) external view returns (bool) {
|
286
|
+
NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
|
287
|
+
return _info[objectParentNftId].objectType == INSTANCE();
|
288
|
+
}
|
289
|
+
|
290
|
+
function isValidRelease(VersionPart version) external view returns (bool)
|
291
|
+
{
|
292
|
+
return _releaseManager.isValidRelease(version);
|
293
|
+
}
|
294
|
+
|
295
|
+
function getStakingAddress() external view returns (address staking) {
|
296
|
+
return _stakingAddress;
|
297
|
+
}
|
298
|
+
|
299
|
+
function getTokenRegistryAddress() external view returns (address tokenRegistry) {
|
300
|
+
return _tokenRegistryAddress;
|
301
|
+
}
|
302
|
+
|
303
|
+
function getServiceAddress(
|
304
|
+
ObjectType serviceDomain,
|
305
|
+
VersionPart releaseVersion
|
306
|
+
) external view returns (address service)
|
307
|
+
{
|
308
|
+
// TODO how can I get service address while release is not validated/activated ?!! -> user will check validity of release on its own
|
309
|
+
//if(_releaseManager.isValidRelease(releaseVersion)) {
|
310
|
+
service = _service[releaseVersion][serviceDomain];
|
311
|
+
//}
|
312
|
+
}
|
313
|
+
|
314
|
+
function getChainNftAddress() external view override returns (address) {
|
180
315
|
return address(_chainNft);
|
181
316
|
}
|
317
|
+
|
318
|
+
function getOwner() public view returns (address owner) {
|
319
|
+
return ownerOf(address(this));
|
320
|
+
}
|
321
|
+
|
322
|
+
// IERC165
|
323
|
+
|
324
|
+
function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
|
325
|
+
if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
|
326
|
+
return true;
|
327
|
+
}
|
328
|
+
|
329
|
+
return false;
|
330
|
+
}
|
331
|
+
|
332
|
+
// Internals
|
333
|
+
|
334
|
+
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
335
|
+
// TODO registration of precompile addresses
|
336
|
+
function _register(ObjectInfo memory info)
|
337
|
+
internal
|
338
|
+
returns(NftId nftId)
|
339
|
+
{
|
340
|
+
ObjectType objectType = info.objectType;
|
341
|
+
NftId parentNftId = info.parentNftId;
|
342
|
+
ObjectInfo memory parentInfo = _info[parentNftId];
|
343
|
+
ObjectType parentType = parentInfo.objectType; // see function header
|
344
|
+
address parentAddress = parentInfo.objectAddress;
|
345
|
+
|
346
|
+
// parent is contract -> need to check? -> check before minting
|
347
|
+
// special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
348
|
+
// special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
|
349
|
+
// special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
|
350
|
+
if(parentAddress == address(0)) {
|
351
|
+
revert ZeroParentAddress();
|
352
|
+
}
|
353
|
+
|
354
|
+
address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
|
355
|
+
uint256 tokenId = _chainNft.getNextTokenId();
|
356
|
+
nftId = NftIdLib.toNftId(tokenId);
|
357
|
+
|
358
|
+
info.nftId = nftId;
|
359
|
+
_info[nftId] = info;
|
360
|
+
|
361
|
+
if(info.objectAddress > address(0))
|
362
|
+
{
|
363
|
+
address contractAddress = info.objectAddress;
|
364
|
+
|
365
|
+
if(_nftIdByAddress[contractAddress].gtz()) {
|
366
|
+
revert ContractAlreadyRegistered(contractAddress);
|
367
|
+
}
|
368
|
+
|
369
|
+
_nftIdByAddress[contractAddress] = nftId;
|
370
|
+
}
|
371
|
+
|
372
|
+
emit LogRegistration(nftId, parentNftId, objectType, info.isInterceptor, info.objectAddress, info.initialOwner);
|
373
|
+
|
374
|
+
// calls nft receiver(1) and interceptor(2)
|
375
|
+
uint256 mintedTokenId = _chainNft.mint(
|
376
|
+
info.initialOwner,
|
377
|
+
interceptor,
|
378
|
+
EMPTY_URI);
|
379
|
+
assert(mintedTokenId == tokenId);
|
380
|
+
|
381
|
+
}
|
382
|
+
|
383
|
+
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
384
|
+
function _getInterceptor(
|
385
|
+
bool isInterceptor,
|
386
|
+
address objectAddress,
|
387
|
+
bool parentIsInterceptor,
|
388
|
+
address parentObjectAddress
|
389
|
+
)
|
390
|
+
internal
|
391
|
+
view
|
392
|
+
returns (address interceptor)
|
393
|
+
{
|
394
|
+
if (objectAddress == address(0)) {
|
395
|
+
if (parentIsInterceptor) {
|
396
|
+
return parentObjectAddress;
|
397
|
+
} else {
|
398
|
+
return address(0);
|
399
|
+
}
|
400
|
+
}
|
401
|
+
|
402
|
+
if (isInterceptor) {
|
403
|
+
return objectAddress;
|
404
|
+
}
|
405
|
+
|
406
|
+
return address(0);
|
407
|
+
}
|
408
|
+
|
409
|
+
// Internals called only in constructor
|
410
|
+
|
411
|
+
/// @dev protocol registration used to anchor the dip ecosystem relations
|
412
|
+
function _registerProtocol()
|
413
|
+
private
|
414
|
+
{
|
415
|
+
uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
|
416
|
+
NftId protocolNftId = NftIdLib.toNftId(protocolId);
|
417
|
+
|
418
|
+
_info[protocolNftId] = ObjectInfo({
|
419
|
+
nftId: protocolNftId,
|
420
|
+
parentNftId: NftIdLib.zero(),
|
421
|
+
objectType: PROTOCOL(),
|
422
|
+
isInterceptor: false,
|
423
|
+
objectAddress: address(0),
|
424
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
425
|
+
data: ""
|
426
|
+
});
|
427
|
+
|
428
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
|
429
|
+
}
|
430
|
+
|
431
|
+
/// @dev registry registration
|
432
|
+
/// might also register the global registry when not on mainnet
|
433
|
+
function _registerRegistry()
|
434
|
+
private
|
435
|
+
{
|
436
|
+
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
437
|
+
NftId registryNftId = NftIdLib.toNftId(registryId);
|
438
|
+
NftId parentNftId;
|
439
|
+
|
440
|
+
if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
|
441
|
+
{// we're not the global registry
|
442
|
+
_registerGlobalRegistry();
|
443
|
+
parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
444
|
+
}
|
445
|
+
else
|
446
|
+
{// we are global registry
|
447
|
+
parentNftId = NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID());
|
448
|
+
}
|
449
|
+
|
450
|
+
_info[registryNftId] = ObjectInfo({
|
451
|
+
nftId: registryNftId,
|
452
|
+
parentNftId: parentNftId,
|
453
|
+
objectType: REGISTRY(),
|
454
|
+
isInterceptor: false,
|
455
|
+
objectAddress: address(this),
|
456
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
457
|
+
data: ""
|
458
|
+
});
|
459
|
+
_nftIdByAddress[address(this)] = registryNftId;
|
460
|
+
_registryNftId = registryNftId;
|
461
|
+
|
462
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, registryId);
|
463
|
+
}
|
464
|
+
|
465
|
+
/// @dev global registry registration for non mainnet registries
|
466
|
+
function _registerGlobalRegistry()
|
467
|
+
private
|
468
|
+
{
|
469
|
+
uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
|
470
|
+
NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
|
471
|
+
|
472
|
+
_info[globalRegistryNftId] = ObjectInfo({
|
473
|
+
nftId: globalRegistryNftId,
|
474
|
+
parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
|
475
|
+
objectType: REGISTRY(),
|
476
|
+
isInterceptor: false,
|
477
|
+
objectAddress: address(0),
|
478
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
479
|
+
data: ""
|
480
|
+
});
|
481
|
+
|
482
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
483
|
+
}
|
484
|
+
|
485
|
+
/// @dev defines which object - parent types relations are allowed to register
|
486
|
+
// IMPORTANT:
|
487
|
+
// 1) EACH object type MUST have only one parent type across ALL mappings
|
488
|
+
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
489
|
+
// 3) DO NOT use REGISTRY as object type
|
490
|
+
// 2) DO NOT use PROTOCOL and "zeroObjectType"
|
491
|
+
function _setupValidCoreTypesAndCombinations()
|
492
|
+
private
|
493
|
+
{
|
494
|
+
_coreTypes[REGISTRY()] = true;
|
495
|
+
_coreTypes[SERVICE()] = true;
|
496
|
+
_coreTypes[TOKEN()] = true;
|
497
|
+
_coreTypes[INSTANCE()] = true;
|
498
|
+
_coreTypes[PRODUCT()] = true;
|
499
|
+
_coreTypes[POOL()] = true;
|
500
|
+
_coreTypes[DISTRIBUTION()] = true;
|
501
|
+
_coreTypes[POLICY()] = true;
|
502
|
+
_coreTypes[BUNDLE()] = true;
|
503
|
+
_coreTypes[STAKING()] = true;
|
504
|
+
_coreTypes[STAKE()] = true;
|
505
|
+
|
506
|
+
_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
|
507
|
+
_coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
|
508
|
+
_coreContractCombinations[TOKEN()][REGISTRY()] = true;
|
509
|
+
//_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
|
510
|
+
|
511
|
+
// registry as parent, ONLY approved
|
512
|
+
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
513
|
+
|
514
|
+
// instance as parent, ONLY approved
|
515
|
+
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
516
|
+
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
517
|
+
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
518
|
+
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
519
|
+
|
520
|
+
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
521
|
+
|
522
|
+
// product as parent, ONLY approved
|
523
|
+
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
524
|
+
|
525
|
+
// pool as parent, ONLY approved
|
526
|
+
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|
527
|
+
_coreObjectCombinations[STAKE()][POOL()] = true;
|
528
|
+
}
|
182
529
|
}
|