@etherisc/gif-next 0.0.2-ecbd488-936 → 0.0.2-ed3b1b0-046
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -14
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1376 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +819 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +415 -776
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +314 -178
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +452 -3067
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +443 -257
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +446 -398
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +319 -132
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +91 -2
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +93 -14
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +735 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +332 -336
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1095 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1407 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +747 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +687 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +651 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +237 -288
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +861 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +162 -166
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +779 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +727 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1198 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +679 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +319 -129
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +268 -255
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +339 -222
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +238 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +313 -354
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +323 -135
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +846 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +132 -57
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/shared/Component.sol/Component.json +873 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentService.sol/ComponentService.json} +271 -180
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +636 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -53
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → staking/IStakingService.sol/IStakingService.json} +226 -145
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +667 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
- package/contracts/distribution/Distribution.sol +285 -0
- package/contracts/distribution/DistributionService.sol +351 -0
- package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +20 -20
- package/contracts/distribution/IDistributionComponent.sol +71 -0
- package/contracts/distribution/IDistributionService.sol +87 -0
- package/contracts/instance/BundleManager.sol +126 -0
- package/contracts/instance/IInstance.sol +60 -31
- package/contracts/instance/IInstanceService.sol +56 -13
- package/contracts/instance/Instance.sol +149 -363
- package/contracts/instance/InstanceAccessManager.sol +432 -177
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +109 -47
- package/contracts/instance/InstanceService.sol +246 -140
- package/contracts/instance/InstanceServiceManager.sol +12 -25
- package/contracts/instance/InstanceStore.sol +211 -0
- package/contracts/instance/base/Cloneable.sol +51 -0
- package/contracts/instance/base/IKeyValueStore.sol +14 -10
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +44 -47
- package/contracts/instance/base/Lifecycle.sol +28 -7
- package/contracts/instance/base/ObjectManager.sol +82 -0
- package/contracts/instance/module/IAccess.sol +37 -21
- package/contracts/instance/module/IBundle.sol +11 -8
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +7 -4
- package/contracts/instance/module/IPolicy.sol +50 -17
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/instance/module/ISetup.sol +11 -22
- package/contracts/instance/module/ITreasury.sol +2 -2
- package/contracts/pool/BundleService.sol +384 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +118 -0
- package/contracts/pool/IPoolComponent.sol +114 -0
- package/contracts/pool/IPoolService.sol +114 -0
- package/contracts/pool/Pool.sol +302 -0
- package/contracts/pool/PoolService.sol +404 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +187 -0
- package/contracts/product/ApplicationServiceManager.sol +38 -0
- package/contracts/product/ClaimService.sol +443 -0
- package/contracts/product/ClaimServiceManager.sol +38 -0
- package/contracts/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +93 -0
- package/contracts/product/IPolicyService.sol +80 -0
- package/contracts/product/IPricingService.sol +37 -0
- package/contracts/product/IProductComponent.sol +41 -0
- package/contracts/product/IProductService.sol +40 -0
- package/contracts/product/PolicyService.sol +378 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +276 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/product/Product.sol +379 -0
- package/contracts/product/ProductService.sol +212 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/ChainNft.sol +9 -1
- package/contracts/registry/IRegistry.sol +56 -27
- package/contracts/registry/IRegistryService.sol +36 -28
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +259 -232
- package/contracts/registry/RegistryAccessManager.sol +132 -0
- package/contracts/registry/RegistryService.sol +81 -208
- package/contracts/registry/RegistryServiceManager.sol +34 -42
- package/contracts/registry/ReleaseManager.sol +382 -0
- package/contracts/registry/TokenRegistry.sol +22 -17
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/shared/Component.sol +271 -0
- package/contracts/shared/ComponentService.sol +141 -0
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/IComponent.sol +90 -0
- package/contracts/shared/INftOwnable.sol +12 -11
- package/contracts/shared/IPolicyHolder.sol +40 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +7 -4
- package/contracts/shared/IVersionable.sol +5 -48
- package/contracts/shared/NftOwnable.sol +64 -80
- package/contracts/shared/PolicyHolder.sol +94 -0
- package/contracts/shared/ProxyManager.sol +126 -25
- package/contracts/shared/Registerable.sol +26 -41
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +41 -24
- package/contracts/shared/TokenHandler.sol +14 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/staking/IStakingService.sol +102 -0
- package/contracts/staking/StakingService.sol +169 -0
- package/contracts/staking/StakingServiceManager.sol +40 -0
- package/contracts/type/Amount.sol +109 -0
- package/contracts/{types → type}/Blocknumber.sol +1 -0
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/{types → type}/DistributorType.sol +2 -2
- package/contracts/{types → type}/Fee.sol +17 -8
- package/contracts/{types → type}/NftId.sol +8 -0
- package/contracts/type/NftIdSet.sol +62 -0
- package/contracts/{types → type}/ObjectType.sol +17 -7
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +4 -0
- package/contracts/type/RoleId.sol +139 -0
- package/contracts/type/Seconds.sol +54 -0
- package/contracts/{types → type}/StateId.sol +7 -2
- package/contracts/{types → type}/Timestamp.sol +18 -13
- package/contracts/{types → type}/UFixed.sol +1 -0
- package/contracts/{types → type}/Version.sol +1 -0
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.json +0 -719
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -839
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1046
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -448
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
- package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -91
- package/contracts/components/Distribution.sol +0 -159
- package/contracts/components/IBaseComponent.sol +0 -25
- package/contracts/components/IDistributionComponent.sol +0 -44
- package/contracts/components/IPoolComponent.sol +0 -62
- package/contracts/components/IProductComponent.sol +0 -35
- package/contracts/components/Pool.sol +0 -242
- package/contracts/components/Product.sol +0 -284
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/AccessManagedSimple.sol +0 -115
- package/contracts/instance/AccessManagerSimple.sol +0 -692
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/base/ComponentServiceBase.sol +0 -124
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/DistributionService.sol +0 -88
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/instance/service/IDistributionService.sol +0 -12
- package/contracts/instance/service/IPoolService.sol +0 -37
- package/contracts/instance/service/IProductService.sol +0 -107
- package/contracts/instance/service/PoolService.sol +0 -194
- package/contracts/instance/service/PoolServiceManager.sol +0 -54
- package/contracts/instance/service/ProductService.sol +0 -543
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -24
- package/contracts/test/TestToken.sol +0 -26
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/test/Usdc.sol +0 -26
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NftIdSet.sol +0 -60
- package/contracts/types/NumberId.sol +0 -52
- package/contracts/types/RoleId.sol +0 -90
- /package/contracts/{types → type}/AddressSet.sol +0 -0
- /package/contracts/{types → type}/Key32.sol +0 -0
- /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -1,183 +1,175 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
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 "../type/NftId.sol";
|
7
|
+
import {VersionPart} from "../type/Version.sol";
|
8
|
+
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
|
6
9
|
|
7
10
|
import {ChainNft} from "./ChainNft.sol";
|
8
11
|
import {IRegistry} from "./IRegistry.sol";
|
9
|
-
import {
|
10
|
-
import {Version, VersionPart, VersionLib, VersionPartLib} from "../types/Version.sol";
|
11
|
-
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
|
12
|
-
import {ITransferInterceptor} from "./ITransferInterceptor.sol";
|
13
|
-
|
14
|
-
import {ERC165} from "../shared/ERC165.sol";
|
15
|
-
|
12
|
+
import {ReleaseManager} from "./ReleaseManager.sol";
|
16
13
|
|
17
14
|
// IMPORTANT
|
18
15
|
// Each NFT minted by registry is accosiated with:
|
19
16
|
// 1) NFT owner
|
20
17
|
// 2) registred contract OR object stored in registered (parent) contract
|
21
18
|
// Four registration flows:
|
22
|
-
// 1)
|
23
|
-
// 2)
|
24
|
-
// 3) IRegisterable address by
|
25
|
-
// 4) state object by
|
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)
|
26
23
|
|
27
24
|
contract Registry is
|
28
|
-
ERC165,
|
29
25
|
IRegistry
|
30
26
|
{
|
31
|
-
uint256 public constant GIF_MAJOR_VERSION_AT_DEPLOYMENT = 3;
|
32
27
|
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
33
28
|
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
34
|
-
uint256 public constant REGISTRY_SERVICE_TOKEN_SEQUENCE_ID = 3;
|
35
29
|
string public constant EMPTY_URI = "";
|
36
30
|
|
37
|
-
|
31
|
+
mapping(NftId nftId => ObjectInfo info) private _info;
|
32
|
+
mapping(address object => NftId nftId) private _nftIdByAddress;
|
38
33
|
|
39
|
-
mapping(
|
40
|
-
mapping(address object => NftId nftId) internal _nftIdByAddress;
|
34
|
+
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
|
41
35
|
|
42
|
-
mapping(ObjectType objectType =>
|
43
|
-
ObjectType parentType => bool)) internal _isValidContractCombination;
|
36
|
+
mapping(ObjectType objectType => bool) private _coreTypes;
|
44
37
|
|
45
38
|
mapping(ObjectType objectType => mapping(
|
46
|
-
ObjectType parentType => bool))
|
39
|
+
ObjectType parentType => bool)) private _coreContractCombinations;
|
47
40
|
|
48
|
-
mapping(
|
49
|
-
|
50
|
-
VersionPart majorVersion => address service)) internal _service;
|
41
|
+
mapping(ObjectType objectType => mapping(
|
42
|
+
ObjectType parentType => bool)) private _coreObjectCombinations;
|
51
43
|
|
52
|
-
NftId
|
53
|
-
|
54
|
-
ChainNft internal _chainNft;
|
44
|
+
NftId private _registryNftId;
|
45
|
+
ChainNft private _chainNft;
|
55
46
|
|
47
|
+
ReleaseManager private _releaseManager;
|
56
48
|
|
57
|
-
modifier
|
58
|
-
if(msg.sender
|
59
|
-
revert
|
49
|
+
modifier onlyRegistryService() {
|
50
|
+
if(!_releaseManager.isActiveRegistryService(msg.sender)) {
|
51
|
+
revert ErrorRegistryCallerNotRegistryService();
|
60
52
|
}
|
61
53
|
_;
|
62
54
|
}
|
63
55
|
|
64
|
-
modifier
|
65
|
-
if(msg.sender !=
|
66
|
-
revert
|
56
|
+
modifier onlyReleaseManager() {
|
57
|
+
if(msg.sender != address(_releaseManager)) {
|
58
|
+
revert ErrorRegistryCallerNotReleaseManager();
|
67
59
|
}
|
68
60
|
_;
|
69
61
|
}
|
70
62
|
|
71
|
-
constructor(
|
63
|
+
constructor()
|
72
64
|
{
|
73
|
-
|
74
|
-
|
75
|
-
// major version at constructor time
|
76
|
-
_majorVersion = VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT);
|
77
|
-
emit LogInitialMajorVersionSet(_majorVersion);
|
65
|
+
_releaseManager = ReleaseManager(msg.sender);
|
78
66
|
|
79
67
|
// deploy NFT
|
80
|
-
_chainNft = new ChainNft(address(this))
|
68
|
+
_chainNft = new ChainNft(address(this));
|
81
69
|
|
82
70
|
// initial registry setup
|
83
71
|
_registerProtocol();
|
84
|
-
_registerRegistry(
|
85
|
-
_registerRegistryService(registryOwner);
|
86
|
-
|
87
|
-
// set object parent relations
|
88
|
-
_setupValidObjectParentCombinations();
|
72
|
+
_registerRegistry();
|
89
73
|
|
90
|
-
|
74
|
+
// set object types and object parent relations
|
75
|
+
_setupValidCoreTypesAndCombinations();
|
91
76
|
}
|
92
77
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
78
|
+
function registerService(
|
79
|
+
ObjectInfo memory info,
|
80
|
+
VersionPart version,
|
81
|
+
ObjectType domain
|
82
|
+
)
|
97
83
|
external
|
98
|
-
|
84
|
+
onlyReleaseManager
|
85
|
+
returns(NftId nftId)
|
99
86
|
{
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
87
|
+
address service = info.objectAddress;
|
88
|
+
/* must be guaranteed by release manager
|
89
|
+
if(service == address(0)) {
|
90
|
+
revert();
|
91
|
+
}
|
92
|
+
|
93
|
+
if(version.eqz()) {
|
94
|
+
revert();
|
95
|
+
}
|
96
|
+
|
97
|
+
if(info.objectType != SERVICE()) {
|
98
|
+
revert();
|
99
|
+
}
|
100
|
+
if(info.parentType != REGISTRY()) {
|
101
|
+
revert();
|
102
|
+
}
|
103
|
+
info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
|
104
|
+
*/
|
105
|
+
|
106
|
+
if(domain.eqz()) {
|
107
|
+
revert ErrorRegistryDomainZero(service);
|
108
|
+
}
|
109
|
+
|
110
|
+
if(_service[version][domain] > address(0)) {
|
111
|
+
revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
|
105
112
|
}
|
113
|
+
|
114
|
+
_service[version][domain] = service;
|
115
|
+
|
116
|
+
nftId = _register(info);
|
106
117
|
|
107
|
-
|
108
|
-
emit LogMajorVersionSet(_majorVersion);
|
118
|
+
emit LogServiceRegistration(version, domain);
|
109
119
|
}
|
110
120
|
|
111
|
-
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
112
|
-
// TODO service registration means its approval for some type?
|
113
|
-
// TODO registration of precompile addresses
|
114
121
|
function register(ObjectInfo memory info)
|
115
122
|
external
|
116
123
|
onlyRegistryService
|
117
124
|
returns(NftId nftId)
|
118
125
|
{
|
119
126
|
ObjectType objectType = info.objectType;
|
120
|
-
|
121
|
-
ObjectInfo memory parentInfo = _info[parentNftId];
|
122
|
-
ObjectType parentType = parentInfo.objectType; // see function header
|
123
|
-
address parentAddress = parentInfo.objectAddress;
|
127
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
124
128
|
|
125
|
-
//
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
129
|
+
// only valid core types combinations
|
130
|
+
if(info.objectAddress == address(0))
|
131
|
+
{
|
132
|
+
if(_coreObjectCombinations[objectType][parentType] == false) {
|
133
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
134
|
+
}
|
131
135
|
}
|
132
|
-
|
133
|
-
address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
|
134
|
-
|
135
|
-
// TODO does external call
|
136
|
-
uint256 mintedTokenId = _chainNft.mint(
|
137
|
-
info.initialOwner,
|
138
|
-
interceptor,
|
139
|
-
EMPTY_URI);
|
140
|
-
nftId = toNftId(mintedTokenId);
|
141
|
-
|
142
|
-
// TODO move nftId out of info struct
|
143
|
-
// getters by nftId -> return struct without nftId
|
144
|
-
// getters by address -> return nftId AND struct
|
145
|
-
info.nftId = nftId;
|
146
|
-
_info[nftId] = info;
|
147
|
-
|
148
|
-
if(info.objectAddress > address(0))
|
136
|
+
else
|
149
137
|
{
|
150
|
-
|
151
|
-
|
152
|
-
if(_isValidContractCombination[objectType][parentType] == false) {
|
153
|
-
revert InvalidTypesCombination(objectType, parentType);
|
138
|
+
if(_coreContractCombinations[objectType][parentType] == false) {
|
139
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
154
140
|
}
|
141
|
+
}
|
155
142
|
|
156
|
-
|
157
|
-
|
158
|
-
if(_nftIdByAddress[contractAddress].gtz()) {
|
159
|
-
revert ContractAlreadyRegistered(contractAddress);
|
160
|
-
}
|
143
|
+
nftId = _register(info);
|
144
|
+
}
|
161
145
|
|
162
|
-
|
146
|
+
function registerWithCustomType(ObjectInfo memory info)
|
147
|
+
external
|
148
|
+
onlyRegistryService
|
149
|
+
returns(NftId nftId)
|
150
|
+
{
|
151
|
+
ObjectType objectType = info.objectType;
|
152
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
163
153
|
|
164
|
-
|
165
|
-
|
166
|
-
_registerService(info);
|
167
|
-
}
|
154
|
+
if(_coreTypes[objectType]) {
|
155
|
+
revert ErrorRegistryCoreTypeRegistration();
|
168
156
|
}
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
157
|
+
|
158
|
+
if(
|
159
|
+
parentType == PROTOCOL() ||
|
160
|
+
parentType == REGISTRY() ||
|
161
|
+
parentType == SERVICE()
|
162
|
+
) {
|
163
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
174
164
|
}
|
175
165
|
|
176
|
-
|
166
|
+
_register(info);
|
177
167
|
}
|
168
|
+
|
169
|
+
|
178
170
|
/// @dev earliest GIF major version
|
179
|
-
function
|
180
|
-
return
|
171
|
+
function getInitialVersion() external view returns (VersionPart) {
|
172
|
+
return _releaseManager.getInitialVersion();
|
181
173
|
}
|
182
174
|
|
183
175
|
// TODO make distinction between active an not yet active version
|
@@ -187,16 +179,20 @@ contract Registry is
|
|
187
179
|
// in this case we might want to have a period where the latest version is
|
188
180
|
// in the process of being set up while the latest active version is 1 major release smaller
|
189
181
|
/// @dev latest GIF major version (might not yet be active)
|
190
|
-
function
|
191
|
-
return
|
182
|
+
function getNextVersion() external view returns (VersionPart) {
|
183
|
+
return _releaseManager.getNextVersion();
|
192
184
|
}
|
193
185
|
|
194
186
|
/// @dev latest active GIF release version
|
195
|
-
function
|
196
|
-
return
|
187
|
+
function getLatestVersion() external view returns (VersionPart) {
|
188
|
+
return _releaseManager.getLatestVersion();
|
189
|
+
}
|
190
|
+
|
191
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
|
192
|
+
return _releaseManager.getReleaseInfo(version);
|
197
193
|
}
|
198
194
|
|
199
|
-
function getObjectCount() external view
|
195
|
+
function getObjectCount() external view returns (uint256) {
|
200
196
|
return _chainNft.totalSupply();
|
201
197
|
}
|
202
198
|
|
@@ -204,11 +200,11 @@ contract Registry is
|
|
204
200
|
return _registryNftId;
|
205
201
|
}
|
206
202
|
|
207
|
-
function getNftId(address object) external view
|
203
|
+
function getNftId(address object) external view returns (NftId id) {
|
208
204
|
return _nftIdByAddress[object];
|
209
205
|
}
|
210
206
|
|
211
|
-
function ownerOf(NftId nftId) public view
|
207
|
+
function ownerOf(NftId nftId) public view returns (address) {
|
212
208
|
return _chainNft.ownerOf(nftId.toInt());
|
213
209
|
}
|
214
210
|
|
@@ -216,68 +212,119 @@ contract Registry is
|
|
216
212
|
return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
217
213
|
}
|
218
214
|
|
219
|
-
function getObjectInfo(NftId nftId) external view
|
215
|
+
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
220
216
|
return _info[nftId];
|
221
217
|
}
|
222
218
|
|
223
|
-
function getObjectInfo(address object) external view
|
219
|
+
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
224
220
|
return _info[_nftIdByAddress[object]];
|
225
221
|
}
|
226
222
|
|
227
|
-
function isRegistered(NftId nftId) public view
|
223
|
+
function isRegistered(NftId nftId) public view returns (bool) {
|
228
224
|
return _info[nftId].objectType.gtz();
|
229
225
|
}
|
230
226
|
|
231
|
-
function isRegistered(address object) external view
|
227
|
+
function isRegistered(address object) external view returns (bool) {
|
232
228
|
return _nftIdByAddress[object].gtz();
|
233
229
|
}
|
234
230
|
|
235
|
-
function
|
236
|
-
return
|
231
|
+
function isRegisteredService(address object) external view returns (bool) {
|
232
|
+
return _info[_nftIdByAddress[object]].objectType == SERVICE();
|
233
|
+
}
|
234
|
+
|
235
|
+
function isRegisteredComponent(address object) external view returns (bool) {
|
236
|
+
NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
|
237
|
+
return _info[objectParentNftId].objectType == INSTANCE();
|
238
|
+
}
|
239
|
+
|
240
|
+
function isValidRelease(VersionPart version) external view returns (bool)
|
241
|
+
{
|
242
|
+
return _releaseManager.isValidRelease(version);
|
237
243
|
}
|
238
244
|
|
239
|
-
// special case to retrive a gif service
|
240
245
|
function getServiceAddress(
|
241
|
-
|
242
|
-
VersionPart
|
243
|
-
) external view returns (address)
|
246
|
+
ObjectType serviceDomain,
|
247
|
+
VersionPart releaseVersion
|
248
|
+
) external view returns (address service)
|
244
249
|
{
|
245
|
-
|
246
|
-
return _service[serviceNameHash][majorVersion];
|
250
|
+
service = _service[releaseVersion][serviceDomain];
|
247
251
|
}
|
248
252
|
|
249
|
-
function
|
250
|
-
return
|
253
|
+
function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
|
254
|
+
return address(_releaseManager.getReleaseAccessManager(version));
|
255
|
+
}
|
256
|
+
|
257
|
+
function getReleaseManagerAddress() external view returns (address) {
|
258
|
+
return address(_releaseManager);
|
259
|
+
}
|
260
|
+
|
261
|
+
function getChainNftAddress() external view override returns (address) {
|
262
|
+
return address(_chainNft);
|
251
263
|
}
|
252
264
|
|
253
265
|
function getOwner() public view returns (address owner) {
|
254
266
|
return ownerOf(address(this));
|
255
267
|
}
|
256
268
|
|
269
|
+
// IERC165
|
270
|
+
|
271
|
+
function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
|
272
|
+
if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
|
273
|
+
return true;
|
274
|
+
}
|
275
|
+
|
276
|
+
return false;
|
277
|
+
}
|
278
|
+
|
257
279
|
// Internals
|
258
280
|
|
259
|
-
|
281
|
+
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
282
|
+
// TODO registration of precompile addresses
|
283
|
+
function _register(ObjectInfo memory info)
|
260
284
|
internal
|
285
|
+
returns(NftId nftId)
|
261
286
|
{
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
//
|
269
|
-
|
270
|
-
|
287
|
+
ObjectType objectType = info.objectType;
|
288
|
+
NftId parentNftId = info.parentNftId;
|
289
|
+
ObjectInfo memory parentInfo = _info[parentNftId];
|
290
|
+
ObjectType parentType = parentInfo.objectType; // see function header
|
291
|
+
address parentAddress = parentInfo.objectAddress;
|
292
|
+
|
293
|
+
// parent is contract -> need to check? -> check before minting
|
294
|
+
// special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
295
|
+
// special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
|
296
|
+
// special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
|
297
|
+
if(parentAddress == address(0)) {
|
298
|
+
revert ErrorRegistryParentAddressZero();
|
271
299
|
}
|
272
|
-
|
273
|
-
|
274
|
-
|
300
|
+
|
301
|
+
address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
|
302
|
+
uint256 tokenId = _chainNft.getNextTokenId();
|
303
|
+
nftId = toNftId(tokenId);
|
304
|
+
|
305
|
+
info.nftId = nftId;
|
306
|
+
_info[nftId] = info;
|
307
|
+
|
308
|
+
if(info.objectAddress > address(0))
|
309
|
+
{
|
310
|
+
address contractAddress = info.objectAddress;
|
311
|
+
|
312
|
+
if(_nftIdByAddress[contractAddress].gtz()) {
|
313
|
+
revert ErrorRegistryContractAlreadyRegistered(contractAddress);
|
314
|
+
}
|
315
|
+
|
316
|
+
_nftIdByAddress[contractAddress] = nftId;
|
275
317
|
}
|
276
318
|
|
277
|
-
|
278
|
-
_service[serviceNameHash][majorVersion] = info.objectAddress;
|
319
|
+
emit LogRegistration(nftId, parentNftId, objectType, info.isInterceptor, info.objectAddress, info.initialOwner);
|
279
320
|
|
280
|
-
|
321
|
+
// calls nft receiver(1) and interceptor(2)
|
322
|
+
uint256 mintedTokenId = _chainNft.mint(
|
323
|
+
info.initialOwner,
|
324
|
+
interceptor,
|
325
|
+
EMPTY_URI);
|
326
|
+
assert(mintedTokenId == tokenId);
|
327
|
+
|
281
328
|
}
|
282
329
|
|
283
330
|
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
@@ -310,32 +357,31 @@ contract Registry is
|
|
310
357
|
|
311
358
|
/// @dev protocol registration used to anchor the dip ecosystem relations
|
312
359
|
function _registerProtocol()
|
313
|
-
|
360
|
+
private
|
314
361
|
{
|
315
362
|
uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
|
316
363
|
NftId protocolNftId = toNftId(protocolId);
|
317
364
|
|
318
|
-
|
365
|
+
_info[protocolNftId] = ObjectInfo({
|
366
|
+
nftId: protocolNftId,
|
367
|
+
parentNftId: zeroNftId(),
|
368
|
+
objectType: PROTOCOL(),
|
369
|
+
isInterceptor: false,
|
370
|
+
objectAddress: address(0),
|
371
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
372
|
+
data: ""
|
373
|
+
});
|
319
374
|
|
320
|
-
|
321
|
-
protocolNftId,
|
322
|
-
zeroNftId(), // parent
|
323
|
-
PROTOCOL(),
|
324
|
-
false, // isInterceptor
|
325
|
-
address(0), // objectAddress
|
326
|
-
NFT_LOCK_ADDRESS,// initialOwner
|
327
|
-
""
|
328
|
-
);
|
375
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
|
329
376
|
}
|
330
377
|
|
331
378
|
/// @dev registry registration
|
332
379
|
/// might also register the global registry when not on mainnet
|
333
|
-
function _registerRegistry(
|
334
|
-
|
380
|
+
function _registerRegistry()
|
381
|
+
private
|
335
382
|
{
|
336
383
|
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
337
384
|
NftId registryNftId = toNftId(registryId);
|
338
|
-
|
339
385
|
NftId parentNftId;
|
340
386
|
|
341
387
|
if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
|
@@ -348,68 +394,39 @@ contract Registry is
|
|
348
394
|
parentNftId = toNftId(_chainNft.PROTOCOL_NFT_ID());
|
349
395
|
}
|
350
396
|
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
""
|
361
|
-
);
|
397
|
+
_info[registryNftId] = ObjectInfo({
|
398
|
+
nftId: registryNftId,
|
399
|
+
parentNftId: parentNftId,
|
400
|
+
objectType: REGISTRY(),
|
401
|
+
isInterceptor: false,
|
402
|
+
objectAddress: address(this),
|
403
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
404
|
+
data: ""
|
405
|
+
});
|
362
406
|
_nftIdByAddress[address(this)] = registryNftId;
|
363
407
|
_registryNftId = registryNftId;
|
364
|
-
}
|
365
408
|
|
409
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, registryId);
|
410
|
+
}
|
366
411
|
|
367
412
|
/// @dev global registry registration for non mainnet registries
|
368
413
|
function _registerGlobalRegistry()
|
369
|
-
|
414
|
+
private
|
370
415
|
{
|
371
416
|
uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
|
372
|
-
|
373
|
-
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
374
|
-
|
375
417
|
NftId globalRegistryNftId = toNftId(globalRegistryId);
|
376
418
|
|
377
|
-
_info[globalRegistryNftId] = ObjectInfo(
|
378
|
-
globalRegistryNftId,
|
379
|
-
toNftId(_chainNft.PROTOCOL_NFT_ID()),
|
380
|
-
REGISTRY(),
|
381
|
-
false,
|
382
|
-
address(0),
|
383
|
-
NFT_LOCK_ADDRESS,
|
384
|
-
""
|
385
|
-
);
|
386
|
-
}
|
387
|
-
|
388
|
-
function _registerRegistryService(address registryOwner)
|
389
|
-
internal
|
390
|
-
{
|
391
|
-
uint256 serviceId = _chainNft.calculateTokenId(REGISTRY_SERVICE_TOKEN_SEQUENCE_ID);
|
392
|
-
NftId serviceNftId = toNftId(serviceId);
|
393
|
-
|
394
|
-
_chainNft.mint(registryOwner, serviceId);
|
395
|
-
|
396
|
-
_info[serviceNftId] = ObjectInfo(
|
397
|
-
serviceNftId,
|
398
|
-
_registryNftId,
|
399
|
-
SERVICE(),
|
400
|
-
false, // isInterceptor
|
401
|
-
msg.sender, // service deploys registry
|
402
|
-
registryOwner, // initialOwner,
|
403
|
-
""
|
404
|
-
);
|
419
|
+
_info[globalRegistryNftId] = ObjectInfo({
|
420
|
+
nftId: globalRegistryNftId,
|
421
|
+
parentNftId: toNftId(_chainNft.PROTOCOL_NFT_ID()),
|
422
|
+
objectType: REGISTRY(),
|
423
|
+
isInterceptor: false,
|
424
|
+
objectAddress: address(0),
|
425
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
426
|
+
data: ""
|
427
|
+
});
|
405
428
|
|
406
|
-
|
407
|
-
|
408
|
-
string memory serviceName = "RegistryService";
|
409
|
-
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
410
|
-
_service[serviceNameHash][VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT)] = msg.sender;
|
411
|
-
_string[serviceNftId] = serviceName;
|
412
|
-
_serviceNftId = serviceNftId;
|
429
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
413
430
|
}
|
414
431
|
|
415
432
|
/// @dev defines which object - parent types relations are allowed to register
|
@@ -418,27 +435,37 @@ contract Registry is
|
|
418
435
|
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
419
436
|
// 3) DO NOT use REGISTRY as object type
|
420
437
|
// 2) DO NOT use PROTOCOL and "zeroObjectType"
|
421
|
-
function
|
422
|
-
|
438
|
+
function _setupValidCoreTypesAndCombinations()
|
439
|
+
private
|
423
440
|
{
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
441
|
+
_coreTypes[REGISTRY()] = true;
|
442
|
+
_coreTypes[SERVICE()] = true;
|
443
|
+
_coreTypes[TOKEN()] = true;
|
444
|
+
_coreTypes[INSTANCE()] = true;
|
445
|
+
_coreTypes[PRODUCT()] = true;
|
446
|
+
_coreTypes[POOL()] = true;
|
447
|
+
_coreTypes[DISTRIBUTION()] = true;
|
448
|
+
_coreTypes[DISTRIBUTOR()] = true;
|
449
|
+
_coreTypes[ORACLE()] = true;
|
450
|
+
_coreTypes[POLICY()] = true;
|
451
|
+
_coreTypes[BUNDLE()] = true;
|
452
|
+
_coreTypes[STAKE()] = true;
|
453
|
+
|
454
|
+
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
455
|
+
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
456
|
+
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
457
|
+
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
458
|
+
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
430
459
|
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
// product as parent, ONLY approved
|
438
|
-
_isValidObjectCombination[POLICY()][PRODUCT()] = true;
|
460
|
+
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
461
|
+
if(registryId == _chainNft.GLOBAL_REGISTRY_ID())
|
462
|
+
{// we are global registry
|
463
|
+
_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
|
464
|
+
}
|
439
465
|
|
440
|
-
|
441
|
-
|
442
|
-
|
466
|
+
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
467
|
+
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
468
|
+
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|
469
|
+
_coreObjectCombinations[STAKE()][POOL()] = true;
|
443
470
|
}
|
444
471
|
}
|