@etherisc/gif-next 0.0.2-f29e479-370 → 0.0.2-f2a5ca7-763
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 +38 -86
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +257 -412
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +286 -286
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +264 -92
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +292 -2124
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +318 -70
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +399 -2883
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +663 -314
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +380 -266
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +115 -74
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -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/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
- 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/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
- 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/mock/Dip.sol/Dip.dbg.json +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +283 -213
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +398 -326
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +397 -450
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +129 -90
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +271 -134
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +401 -241
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +80 -64
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/{components → product}/Product.sol/Product.json +378 -367
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -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 +191 -18
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +199 -149
- 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 +453 -34
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +373 -98
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -54
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/Component.sol/Component.json +209 -166
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1487 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +101 -114
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +222 -104
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +96 -19
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -23
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +104 -22
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -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 +345 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -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 +369 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -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/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -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 +68 -0
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +591 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +218 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/authorization/IAccessAdmin.sol +136 -0
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/authorization/IServiceAuthorization.sol +38 -0
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/authorization/ServiceAuthorization.sol +90 -0
- package/contracts/distribution/BasicDistribution.sol +149 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
- package/contracts/{components → distribution}/Distribution.sol +163 -167
- package/contracts/distribution/DistributionService.sol +288 -0
- package/contracts/distribution/DistributionServiceManager.sol +39 -0
- package/contracts/distribution/IDistributionComponent.sol +48 -0
- package/contracts/{instance/service → distribution}/IDistributionService.sol +28 -26
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +33 -32
- package/contracts/instance/IInstance.sol +60 -66
- package/contracts/instance/IInstanceService.sol +57 -24
- package/contracts/instance/Instance.sol +176 -213
- package/contracts/instance/InstanceAdmin.sol +266 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
- package/contracts/instance/InstanceReader.sol +173 -61
- package/contracts/instance/InstanceService.sol +310 -343
- package/contracts/instance/InstanceServiceManager.sol +12 -26
- package/contracts/instance/InstanceStore.sol +276 -0
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +106 -0
- package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +19 -24
- package/contracts/instance/module/IAccess.sol +19 -20
- package/contracts/instance/module/IBundle.sol +8 -8
- package/contracts/instance/module/{ISetup.sol → IComponents.sol} +24 -20
- package/contracts/instance/module/IDistribution.sol +7 -5
- package/contracts/instance/module/IPolicy.sol +53 -16
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +32 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +157 -0
- package/contracts/oracle/OracleService.sol +278 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +164 -0
- package/contracts/pool/BasicPoolAuthorization.sol +49 -0
- package/contracts/pool/BundleService.sol +284 -0
- package/contracts/pool/BundleServiceManager.sol +39 -0
- package/contracts/pool/IBundleService.sol +106 -0
- package/contracts/pool/IPoolComponent.sol +52 -0
- package/contracts/pool/IPoolService.sol +150 -0
- package/contracts/pool/Pool.sol +311 -0
- package/contracts/pool/PoolService.sol +436 -0
- package/contracts/pool/PoolServiceManager.sol +39 -0
- package/contracts/product/ApplicationService.sol +230 -0
- package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
- package/contracts/product/BasicProduct.sol +82 -0
- package/contracts/product/BasicProductAuthorization.sol +40 -0
- package/contracts/product/ClaimService.sol +416 -0
- package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
- package/contracts/{instance/service → product}/IApplicationService.sol +16 -36
- package/contracts/product/IClaimService.sol +99 -0
- package/contracts/{instance/service → product}/IPolicyService.sol +37 -48
- package/contracts/product/IPricingService.sol +39 -0
- package/contracts/product/IProductComponent.sol +39 -0
- package/contracts/product/IProductService.sol +33 -0
- package/contracts/product/PolicyService.sol +475 -0
- package/contracts/product/PolicyServiceManager.sol +39 -0
- package/contracts/product/PricingService.sol +300 -0
- package/contracts/product/PricingServiceManager.sol +39 -0
- package/contracts/product/Product.sol +392 -0
- package/contracts/product/ProductService.sol +99 -0
- package/contracts/product/ProductServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +16 -1
- package/contracts/registry/IRegistry.sol +61 -26
- package/contracts/registry/IRegistryService.sol +44 -42
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +251 -139
- package/contracts/registry/RegistryAdmin.sol +365 -0
- package/contracts/registry/RegistryService.sol +70 -101
- package/contracts/registry/RegistryServiceManager.sol +23 -32
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseRegistry.sol +487 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/registry/TokenRegistry.sol +261 -62
- package/contracts/shared/Component.sol +281 -0
- package/contracts/shared/ComponentService.sol +581 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/ERC165.sol +1 -1
- package/contracts/shared/IComponent.sol +70 -0
- package/contracts/shared/IComponentService.sol +102 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
- package/contracts/shared/INftOwnable.sol +2 -2
- package/contracts/shared/IPolicyHolder.sol +29 -10
- package/contracts/shared/IRegistryLinked.sol +0 -1
- package/contracts/shared/IService.sol +15 -8
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +151 -0
- package/contracts/shared/KeyValueStore.sol +131 -0
- package/contracts/shared/Lifecycle.sol +77 -0
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +3 -16
- package/contracts/shared/PolicyHolder.sol +40 -19
- package/contracts/shared/Registerable.sol +15 -14
- package/contracts/shared/RegistryLinked.sol +0 -5
- package/contracts/shared/Service.sol +47 -23
- package/contracts/shared/TokenHandler.sol +37 -6
- package/contracts/staking/IStaking.sol +167 -0
- package/contracts/staking/IStakingService.sol +160 -0
- package/contracts/staking/StakeManagerLib.sol +231 -0
- package/contracts/staking/Staking.sol +510 -0
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +50 -0
- package/contracts/staking/StakingReader.sol +183 -0
- package/contracts/staking/StakingService.sol +411 -0
- package/contracts/staking/StakingServiceManager.sol +44 -0
- package/contracts/staking/StakingStore.sol +605 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/{types → type}/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +128 -0
- package/contracts/{types → type}/Blocknumber.sol +21 -3
- package/contracts/{types → type}/ClaimId.sol +25 -2
- package/contracts/{types → type}/Fee.sol +33 -23
- package/contracts/{types → type}/NftId.sol +21 -15
- package/contracts/{types → type}/NftIdSet.sol +2 -2
- package/contracts/type/ObjectType.sol +271 -0
- package/contracts/{types → type}/PayoutId.sol +33 -5
- package/contracts/{types → type}/Referral.sol +5 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/{types → type}/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +174 -0
- package/contracts/type/Seconds.sol +81 -0
- package/contracts/type/Selector.sol +102 -0
- package/contracts/{types → type}/StateId.sol +34 -4
- package/contracts/type/String.sol +53 -0
- package/contracts/{types → type}/Timestamp.sol +23 -14
- package/contracts/{types → type}/UFixed.sol +7 -0
- package/contracts/{types → type}/Version.sol +5 -2
- package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +36 -7
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +1 -1
- package/package.json +8 -5
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -869
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -657
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1096
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1318
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -769
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -409
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -347
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1120
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -717
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -649
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
- 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/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.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 -383
- 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 -521
- 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 -104
- 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/AddressSet.sol/LibAddressSet.json +0 -10
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
- 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/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
- 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/Key32.sol/Key32Lib.json +0 -125
- 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 -33
- 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/ObjectType.sol/ObjectTypeLib.json +0 -92
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
- 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/RiskId.sol/RiskIdLib.json +0 -86
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
- 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 -249
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
- package/contracts/components/Component.sol +0 -241
- package/contracts/components/IComponent.sol +0 -54
- package/contracts/components/IDistributionComponent.sol +0 -92
- package/contracts/components/IPoolComponent.sol +0 -87
- package/contracts/components/IProductComponent.sol +0 -39
- package/contracts/components/Pool.sol +0 -254
- package/contracts/components/Product.sol +0 -285
- package/contracts/instance/InstanceAccessManager.sol +0 -297
- package/contracts/instance/base/ComponentService.sol +0 -134
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/base/Lifecycle.sol +0 -100
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/ApplicationService.sol +0 -268
- package/contracts/instance/service/BundleService.sol +0 -298
- package/contracts/instance/service/BundleServiceManager.sol +0 -51
- package/contracts/instance/service/ClaimService.sol +0 -151
- package/contracts/instance/service/DistributionService.sol +0 -375
- package/contracts/instance/service/DistributionServiceManager.sol +0 -51
- package/contracts/instance/service/IBundleService.sol +0 -54
- package/contracts/instance/service/IClaimService.sol +0 -61
- package/contracts/instance/service/IPoolService.sol +0 -20
- package/contracts/instance/service/IProductService.sol +0 -40
- package/contracts/instance/service/PolicyService.sol +0 -476
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -109
- package/contracts/instance/service/PoolServiceManager.sol +0 -51
- package/contracts/instance/service/ProductService.sol +0 -233
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -216
- package/contracts/registry/ReleaseManager.sol +0 -322
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- 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 -25
- 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/NumberId.sol +0 -52
- package/contracts/types/ObjectType.sol +0 -156
- package/contracts/types/RoleId.sol +0 -90
- /package/contracts/{types → type}/DistributorType.sol +0 -0
- /package/contracts/{types → type}/Key32.sol +0 -0
| @@ -2,14 +2,20 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
         | 
| 5 | 
            +
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 5 6 |  | 
| 6 | 
            -
            import { | 
| 7 | 
            -
             | 
| 8 | 
            -
            import { | 
| 7 | 
            +
            import {InitializableCustom} from "../shared/InitializableCustom.sol";
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 10 | 
            +
            import {VersionPart} from "../type/Version.sol";
         | 
| 11 | 
            +
            import {ObjectType, PROTOCOL, REGISTRY, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
         | 
| 9 12 |  | 
| 10 13 | 
             
            import {ChainNft} from "./ChainNft.sol";
         | 
| 11 14 | 
             
            import {IRegistry} from "./IRegistry.sol";
         | 
| 12 | 
            -
            import { | 
| 15 | 
            +
            import {IRegisterable} from "../shared/IRegisterable.sol";
         | 
| 16 | 
            +
            import {ReleaseRegistry} from "./ReleaseRegistry.sol";
         | 
| 17 | 
            +
            import {TokenRegistry} from "./TokenRegistry.sol";
         | 
| 18 | 
            +
            import {RegistryAdmin} from "./RegistryAdmin.sol";
         | 
| 13 19 |  | 
| 14 20 | 
             
            // IMPORTANT
         | 
| 15 21 | 
             
            // Each NFT minted by registry is accosiated with:
         | 
| @@ -21,11 +27,15 @@ import {ReleaseManager} from "./ReleaseManager.sol"; | |
| 21 27 | 
             
            // 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
         | 
| 22 28 | 
             
            // 4) state object by regular service (POLICY, BUNDLE, STAKE)
         | 
| 23 29 |  | 
| 30 | 
            +
            /// @title Chain Registry contract implementing IRegistry.
         | 
| 31 | 
            +
            /// @notice See IRegistry for method details.
         | 
| 24 32 | 
             
            contract Registry is
         | 
| 33 | 
            +
                InitializableCustom,
         | 
| 25 34 | 
             
                IRegistry
         | 
| 26 35 | 
             
            {
         | 
| 27 | 
            -
                address public  | 
| 36 | 
            +
                address public NFT_LOCK_ADDRESS = address(0x1);
         | 
| 28 37 | 
             
                uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
         | 
| 38 | 
            +
                uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
         | 
| 29 39 | 
             
                string public constant EMPTY_URI = "";
         | 
| 30 40 |  | 
| 31 41 | 
             
                mapping(NftId nftId => ObjectInfo info) private _info;
         | 
| @@ -41,70 +51,74 @@ contract Registry is | |
| 41 51 | 
             
                mapping(ObjectType objectType => mapping(
         | 
| 42 52 | 
             
                        ObjectType parentType => bool)) private _coreObjectCombinations;
         | 
| 43 53 |  | 
| 44 | 
            -
                 | 
| 45 | 
            -
                ChainNft  | 
| 54 | 
            +
                RegistryAdmin public immutable _admin;
         | 
| 55 | 
            +
                ChainNft public immutable _chainNft;
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                NftId public immutable _protocolNftId;
         | 
| 58 | 
            +
                NftId public immutable _registryNftId;
         | 
| 59 | 
            +
                NftId public _stakingNftId;
         | 
| 46 60 |  | 
| 47 | 
            -
                 | 
| 61 | 
            +
                address public _tokenRegistryAddress;
         | 
| 62 | 
            +
                address public _stakingAddress;
         | 
| 63 | 
            +
                ReleaseRegistry public _releaseRegistry;
         | 
| 48 64 |  | 
| 65 | 
            +
                // TODO 
         | 
| 66 | 
            +
                // 1). Registry and ReleaseRegistry must be treated as whole single entity. 
         | 
| 67 | 
            +
                //     But current limitations of EVM does not allow it -> require it to be splitted
         | 
| 68 | 
            +
                // 2). Keep onlyReleaseRegistry modifier
         | 
| 69 | 
            +
                // 3). Delete onlyRegistryService in favor of restricted
         | 
| 70 | 
            +
                // 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
         | 
| 49 71 | 
             
                modifier onlyRegistryService() {
         | 
| 50 | 
            -
                    if(! | 
| 51 | 
            -
                        revert  | 
| 72 | 
            +
                    if(!_releaseRegistry.isActiveRegistryService(msg.sender)) {
         | 
| 73 | 
            +
                        revert ErrorRegistryCallerNotRegistryService();
         | 
| 52 74 | 
             
                    }
         | 
| 53 75 | 
             
                    _;
         | 
| 54 76 | 
             
                }
         | 
| 55 77 |  | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 78 | 
            +
             | 
| 79 | 
            +
                modifier onlyReleaseRegistry() {
         | 
| 80 | 
            +
                    if(msg.sender != address(_releaseRegistry)) {
         | 
| 81 | 
            +
                        revert ErrorRegistryCallerNotReleaseRegistry();
         | 
| 59 82 | 
             
                    }
         | 
| 60 83 | 
             
                    _;
         | 
| 61 84 | 
             
                }
         | 
| 62 85 |  | 
| 63 | 
            -
                 | 
| 86 | 
            +
                /// @dev Creates the registry contract and populates it with the protocol and registry objects.
         | 
| 87 | 
            +
                /// Internally deploys the ChainNft contract.
         | 
| 88 | 
            +
                constructor(RegistryAdmin admin) 
         | 
| 89 | 
            +
                    InitializableCustom() 
         | 
| 64 90 | 
             
                {
         | 
| 65 | 
            -
                     | 
| 66 | 
            -
             | 
| 91 | 
            +
                    _admin = admin;
         | 
| 67 92 | 
             
                    // deploy NFT 
         | 
| 68 93 | 
             
                    _chainNft = new ChainNft(address(this));
         | 
| 69 94 |  | 
| 70 95 | 
             
                    // initial registry setup
         | 
| 71 | 
            -
                    _registerProtocol();
         | 
| 72 | 
            -
                    _registerRegistry();
         | 
| 96 | 
            +
                    _protocolNftId = _registerProtocol();
         | 
| 97 | 
            +
                    _registryNftId = _registerRegistry();
         | 
| 73 98 |  | 
| 74 99 | 
             
                    // set object types and object parent relations
         | 
| 75 100 | 
             
                    _setupValidCoreTypesAndCombinations();
         | 
| 76 101 | 
             
                }
         | 
| 77 102 |  | 
| 78 | 
            -
             | 
| 79 | 
            -
             | 
| 80 | 
            -
             | 
| 81 | 
            -
             | 
| 103 | 
            +
             | 
| 104 | 
            +
                /// @dev Wires release registry and token to registry (this contract).
         | 
| 105 | 
            +
                /// MUST be called by release registry.
         | 
| 106 | 
            +
                function initialize(
         | 
| 107 | 
            +
                    address releaseRegistry,
         | 
| 108 | 
            +
                    address tokenRegistry,
         | 
| 109 | 
            +
                    address staking
         | 
| 82 110 | 
             
                )
         | 
| 83 111 | 
             
                    external
         | 
| 84 | 
            -
                     | 
| 85 | 
            -
                    returns(NftId nftId)
         | 
| 112 | 
            +
                    initializer()
         | 
| 86 113 | 
             
                {
         | 
| 87 | 
            -
                     | 
| 88 | 
            -
                     | 
| 89 | 
            -
             | 
| 90 | 
            -
                    }
         | 
| 91 | 
            -
                    if(info.parentType != REGISTRY()) {
         | 
| 92 | 
            -
                        revert();
         | 
| 93 | 
            -
                    }        
         | 
| 94 | 
            -
                    info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
         | 
| 95 | 
            -
                    */
         | 
| 96 | 
            -
             | 
| 97 | 
            -
                    if(_service[version][domain] > address(0)) {
         | 
| 98 | 
            -
                        revert ServiceAlreadyRegistered(info.objectAddress);
         | 
| 99 | 
            -
                    }
         | 
| 100 | 
            -
             | 
| 101 | 
            -
                    _service[version][domain] = info.objectAddress; // nftId;
         | 
| 102 | 
            -
             | 
| 103 | 
            -
                    nftId = _register(info);
         | 
| 114 | 
            +
                    _releaseRegistry = ReleaseRegistry(releaseRegistry);
         | 
| 115 | 
            +
                    _tokenRegistryAddress = tokenRegistry;
         | 
| 116 | 
            +
                    _stakingAddress = staking;
         | 
| 104 117 |  | 
| 105 | 
            -
                     | 
| 118 | 
            +
                    _stakingNftId = _registerStaking();
         | 
| 106 119 | 
             
                }
         | 
| 107 120 |  | 
| 121 | 
            +
                /// @inheritdoc IRegistry
         | 
| 108 122 | 
             
                function register(ObjectInfo memory info)
         | 
| 109 123 | 
             
                    external
         | 
| 110 124 | 
             
                    onlyRegistryService
         | 
| @@ -113,29 +127,72 @@ contract Registry is | |
| 113 127 | 
             
                    ObjectType objectType = info.objectType;
         | 
| 114 128 | 
             
                    ObjectType parentType = _info[info.parentNftId].objectType;
         | 
| 115 129 |  | 
| 116 | 
            -
                    //  | 
| 117 | 
            -
                     | 
| 118 | 
            -
                    if(objectType == SERVICE()) {
         | 
| 119 | 
            -
                        revert ServiceRegistration();
         | 
| 120 | 
            -
                    }
         | 
| 121 | 
            -
             | 
| 122 | 
            -
                    // only valid core types combinations
         | 
| 123 | 
            -
                    if(info.objectAddress == address(0)) 
         | 
| 124 | 
            -
                    {
         | 
| 130 | 
            +
                    // check type combinations for core objects
         | 
| 131 | 
            +
                    if(info.objectAddress == address(0)) {
         | 
| 125 132 | 
             
                        if(_coreObjectCombinations[objectType][parentType] == false) {
         | 
| 126 | 
            -
                            revert  | 
| 133 | 
            +
                            revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
         | 
| 127 134 | 
             
                        }
         | 
| 128 135 | 
             
                    }
         | 
| 129 | 
            -
                     | 
| 130 | 
            -
                    {
         | 
| 136 | 
            +
                    // check type combinations for contract objects
         | 
| 137 | 
            +
                    else {
         | 
| 131 138 | 
             
                        if(_coreContractCombinations[objectType][parentType] == false) {
         | 
| 132 | 
            -
                            revert  | 
| 139 | 
            +
                            revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
         | 
| 133 140 | 
             
                        }
         | 
| 134 141 | 
             
                    }
         | 
| 135 142 |  | 
| 136 143 | 
             
                    nftId = _register(info);
         | 
| 137 144 | 
             
                }
         | 
| 138 145 |  | 
| 146 | 
            +
             | 
| 147 | 
            +
                /// @inheritdoc IRegistry
         | 
| 148 | 
            +
                function registerService(
         | 
| 149 | 
            +
                    ObjectInfo memory info, 
         | 
| 150 | 
            +
                    VersionPart version, 
         | 
| 151 | 
            +
                    ObjectType domain
         | 
| 152 | 
            +
                )
         | 
| 153 | 
            +
                    external
         | 
| 154 | 
            +
                    onlyReleaseRegistry
         | 
| 155 | 
            +
                    returns(NftId nftId)
         | 
| 156 | 
            +
                {
         | 
| 157 | 
            +
                    // check service address is defined
         | 
| 158 | 
            +
                    address service = info.objectAddress;
         | 
| 159 | 
            +
                    if(service == address(0)) {
         | 
| 160 | 
            +
                        revert ErrorRegistryServiceAddressZero();
         | 
| 161 | 
            +
                    }
         | 
| 162 | 
            +
             | 
| 163 | 
            +
                    // check version is defined
         | 
| 164 | 
            +
                    if(version.eqz()) {
         | 
| 165 | 
            +
                        revert ErrorRegistryServiceVersionZero();
         | 
| 166 | 
            +
                    }
         | 
| 167 | 
            +
             | 
| 168 | 
            +
                    // check domain is defined
         | 
| 169 | 
            +
                    if(domain.eqz()) {
         | 
| 170 | 
            +
                        revert ErrorRegistryDomainZero(service);
         | 
| 171 | 
            +
                    }
         | 
| 172 | 
            +
             | 
| 173 | 
            +
                    // check contract has not already been registered
         | 
| 174 | 
            +
                    if(_service[version][domain] != address(0)) {
         | 
| 175 | 
            +
                        revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
         | 
| 176 | 
            +
                    }
         | 
| 177 | 
            +
             | 
| 178 | 
            +
                    // check service has proper type
         | 
| 179 | 
            +
                    if(info.objectType != SERVICE()) {
         | 
| 180 | 
            +
                        revert ErrorRegistryNotService(service, info.objectType);
         | 
| 181 | 
            +
                    }
         | 
| 182 | 
            +
             | 
| 183 | 
            +
                    // check that parent has registry type
         | 
| 184 | 
            +
                    if(info.parentNftId != _registryNftId) {
         | 
| 185 | 
            +
                        revert ErrorRegistryServiceParentNotRegistry(info.parentNftId);
         | 
| 186 | 
            +
                    }        
         | 
| 187 | 
            +
             | 
| 188 | 
            +
                    _service[version][domain] = service;
         | 
| 189 | 
            +
                    nftId = _register(info);
         | 
| 190 | 
            +
             | 
| 191 | 
            +
                    emit LogServiceRegistration(version, domain);
         | 
| 192 | 
            +
                }
         | 
| 193 | 
            +
             | 
| 194 | 
            +
             | 
| 195 | 
            +
                /// @inheritdoc IRegistry
         | 
| 139 196 | 
             
                function registerWithCustomType(ObjectInfo memory info)
         | 
| 140 197 | 
             
                    external
         | 
| 141 198 | 
             
                    onlyRegistryService
         | 
| @@ -145,16 +202,14 @@ contract Registry is | |
| 145 202 | 
             
                    ObjectType parentType = _info[info.parentNftId].objectType;
         | 
| 146 203 |  | 
| 147 204 | 
             
                    if(_coreTypes[objectType]) {
         | 
| 148 | 
            -
                        revert  | 
| 205 | 
            +
                        revert ErrorRegistryCoreTypeRegistration();
         | 
| 149 206 | 
             
                    }
         | 
| 150 207 |  | 
| 151 208 | 
             
                    if(
         | 
| 152 | 
            -
             | 
| 153 209 | 
             
                        parentType == PROTOCOL() ||
         | 
| 154 | 
            -
                        parentType == REGISTRY() ||
         | 
| 155 210 | 
             
                        parentType == SERVICE()
         | 
| 156 211 | 
             
                    ) {
         | 
| 157 | 
            -
                        revert  | 
| 212 | 
            +
                        revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
         | 
| 158 213 | 
             
                    }
         | 
| 159 214 |  | 
| 160 215 | 
             
                    _register(info);
         | 
| @@ -163,46 +218,40 @@ contract Registry is | |
| 163 218 |  | 
| 164 219 | 
             
                /// @dev earliest GIF major version 
         | 
| 165 220 | 
             
                function getInitialVersion() external view returns (VersionPart) {
         | 
| 166 | 
            -
                    return  | 
| 221 | 
            +
                    return _releaseRegistry.getInitialVersion();
         | 
| 167 222 | 
             
                }
         | 
| 168 223 |  | 
| 169 | 
            -
                 | 
| 170 | 
            -
                // need to be thought trough, not yet clear if necessary
         | 
| 171 | 
            -
                // need to answer question: what is the latest version during the upgrade process?
         | 
| 172 | 
            -
                // likely setting up a new gif version does not fit into a single tx
         | 
| 173 | 
            -
                // in this case we might want to have a period where the latest version is
         | 
| 174 | 
            -
                // in the process of being set up while the latest active version is 1 major release smaller
         | 
| 175 | 
            -
                /// @dev latest GIF major version (might not yet be active)
         | 
| 224 | 
            +
                /// @dev next GIF release version to be released
         | 
| 176 225 | 
             
                function getNextVersion() external view returns (VersionPart) {
         | 
| 177 | 
            -
                    return  | 
| 226 | 
            +
                    return _releaseRegistry.getNextVersion();
         | 
| 178 227 | 
             
                }
         | 
| 179 228 |  | 
| 180 229 | 
             
                /// @dev latest active GIF release version 
         | 
| 181 230 | 
             
                function getLatestVersion() external view returns (VersionPart) { 
         | 
| 182 | 
            -
                    return  | 
| 231 | 
            +
                    return _releaseRegistry.getLatestVersion();
         | 
| 183 232 | 
             
                }
         | 
| 184 233 |  | 
| 185 234 | 
             
                function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
         | 
| 186 | 
            -
                    return  | 
| 235 | 
            +
                    return _releaseRegistry.getReleaseInfo(version);
         | 
| 187 236 | 
             
                }
         | 
| 188 237 |  | 
| 189 | 
            -
                function getObjectCount() external view  | 
| 238 | 
            +
                function getObjectCount() external view returns (uint256) {
         | 
| 190 239 | 
             
                    return _chainNft.totalSupply();
         | 
| 191 240 | 
             
                }
         | 
| 192 241 |  | 
| 193 | 
            -
                function getReleaseManagerAddress() external view returns (address) {
         | 
| 194 | 
            -
                    return address(_releaseManager);
         | 
| 195 | 
            -
                }
         | 
| 196 | 
            -
             | 
| 197 242 | 
             
                function getNftId() external view returns (NftId nftId) {
         | 
| 198 243 | 
             
                    return _registryNftId;
         | 
| 199 244 | 
             
                }
         | 
| 200 245 |  | 
| 201 | 
            -
                function  | 
| 246 | 
            +
                function getProtocolNftId() external view returns (NftId nftId) {
         | 
| 247 | 
            +
                    return _protocolNftId;
         | 
| 248 | 
            +
                }
         | 
| 249 | 
            +
             | 
| 250 | 
            +
                function getNftId(address object) external view returns (NftId id) {
         | 
| 202 251 | 
             
                    return _nftIdByAddress[object];
         | 
| 203 252 | 
             
                }
         | 
| 204 253 |  | 
| 205 | 
            -
                function ownerOf(NftId nftId) public view  | 
| 254 | 
            +
                function ownerOf(NftId nftId) public view returns (address) {
         | 
| 206 255 | 
             
                    return _chainNft.ownerOf(nftId.toInt());
         | 
| 207 256 | 
             
                }
         | 
| 208 257 |  | 
| @@ -210,29 +259,44 @@ contract Registry is | |
| 210 259 | 
             
                    return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
         | 
| 211 260 | 
             
                }
         | 
| 212 261 |  | 
| 213 | 
            -
                function getObjectInfo(NftId nftId) external view  | 
| 262 | 
            +
                function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
         | 
| 214 263 | 
             
                    return _info[nftId];
         | 
| 215 264 | 
             
                }
         | 
| 216 265 |  | 
| 217 | 
            -
                function getObjectInfo(address object) external view  | 
| 266 | 
            +
                function getObjectInfo(address object) external view returns (ObjectInfo memory) {
         | 
| 218 267 | 
             
                    return _info[_nftIdByAddress[object]];
         | 
| 219 268 | 
             
                }
         | 
| 220 269 |  | 
| 221 | 
            -
                function isRegistered(NftId nftId) public view  | 
| 270 | 
            +
                function isRegistered(NftId nftId) public view returns (bool) {
         | 
| 222 271 | 
             
                    return _info[nftId].objectType.gtz();
         | 
| 223 272 | 
             
                }
         | 
| 224 273 |  | 
| 225 | 
            -
                function isRegistered(address object) external view  | 
| 274 | 
            +
                function isRegistered(address object) external view returns (bool) {
         | 
| 226 275 | 
             
                    return _nftIdByAddress[object].gtz();
         | 
| 227 276 | 
             
                }
         | 
| 228 277 |  | 
| 229 | 
            -
                function isRegisteredService(address object) external view  | 
| 278 | 
            +
                function isRegisteredService(address object) external view returns (bool) {
         | 
| 230 279 | 
             
                    return _info[_nftIdByAddress[object]].objectType == SERVICE();
         | 
| 231 280 | 
             
                }
         | 
| 232 281 |  | 
| 233 | 
            -
                function  | 
| 282 | 
            +
                function isRegisteredComponent(address object) external view returns (bool) {
         | 
| 283 | 
            +
                    NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
         | 
| 284 | 
            +
                    return _info[objectParentNftId].objectType == INSTANCE();
         | 
| 285 | 
            +
                }
         | 
| 286 | 
            +
             | 
| 287 | 
            +
                function isActiveRelease(VersionPart version) external view returns (bool)
         | 
| 234 288 | 
             
                {
         | 
| 235 | 
            -
                    return  | 
| 289 | 
            +
                    return _releaseRegistry.isActiveRelease(version);
         | 
| 290 | 
            +
                }
         | 
| 291 | 
            +
             | 
| 292 | 
            +
                function getStakingAddress() external view returns (address staking) {
         | 
| 293 | 
            +
                    //return getObjectInfo(_stakingNftId).objectAddress;
         | 
| 294 | 
            +
                    //return _info[_stakingNftId].objectAddress;
         | 
| 295 | 
            +
                    return _stakingAddress;
         | 
| 296 | 
            +
                }
         | 
| 297 | 
            +
             | 
| 298 | 
            +
                function getTokenRegistryAddress() external view returns (address tokenRegistry) {
         | 
| 299 | 
            +
                    return _tokenRegistryAddress;
         | 
| 236 300 | 
             
                }
         | 
| 237 301 |  | 
| 238 302 | 
             
                function getServiceAddress(
         | 
| @@ -240,16 +304,25 @@ contract Registry is | |
| 240 304 | 
             
                    VersionPart releaseVersion
         | 
| 241 305 | 
             
                ) external view returns (address service)
         | 
| 242 306 | 
             
                {
         | 
| 243 | 
            -
                     | 
| 244 | 
            -
             | 
| 245 | 
            -
             | 
| 246 | 
            -
             | 
| 307 | 
            +
                    service =  _service[releaseVersion][serviceDomain]; 
         | 
| 308 | 
            +
                }
         | 
| 309 | 
            +
             | 
| 310 | 
            +
                function getReleaseRegistryAddress() external view returns (address) {
         | 
| 311 | 
            +
                    return address(_releaseRegistry);
         | 
| 247 312 | 
             
                }
         | 
| 248 313 |  | 
| 249 314 | 
             
                function getChainNftAddress() external view override returns (address) {
         | 
| 250 315 | 
             
                    return address(_chainNft);
         | 
| 251 316 | 
             
                }
         | 
| 252 317 |  | 
| 318 | 
            +
                function getRegistryAdminAddress() external view returns (address) {
         | 
| 319 | 
            +
                    return address(_admin);
         | 
| 320 | 
            +
                }
         | 
| 321 | 
            +
             | 
| 322 | 
            +
                function getAuthority() external view returns (address) {
         | 
| 323 | 
            +
                    return _admin.authority();
         | 
| 324 | 
            +
                }
         | 
| 325 | 
            +
             | 
| 253 326 | 
             
                function getOwner() public view returns (address owner) {
         | 
| 254 327 | 
             
                    return ownerOf(address(this));
         | 
| 255 328 | 
             
                }
         | 
| @@ -267,66 +340,81 @@ contract Registry is | |
| 267 340 | 
             
                // Internals
         | 
| 268 341 |  | 
| 269 342 | 
             
                /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
         | 
| 270 | 
            -
                // TODO registration of precompile addresses
         | 
| 271 343 | 
             
                function _register(ObjectInfo memory info)
         | 
| 272 344 | 
             
                    internal
         | 
| 273 345 | 
             
                    returns(NftId nftId)
         | 
| 274 346 | 
             
                {
         | 
| 275 347 | 
             
                    ObjectType objectType = info.objectType;
         | 
| 348 | 
            +
                    bool isInterceptor = info.isInterceptor;
         | 
| 349 | 
            +
                    address objectAddress = info.objectAddress;
         | 
| 350 | 
            +
                    address owner = info.initialOwner;
         | 
| 351 | 
            +
             | 
| 276 352 | 
             
                    NftId parentNftId = info.parentNftId;
         | 
| 277 353 | 
             
                    ObjectInfo memory parentInfo = _info[parentNftId];
         | 
| 278 354 | 
             
                    ObjectType parentType = parentInfo.objectType; // see function header
         | 
| 279 355 | 
             
                    address parentAddress = parentInfo.objectAddress;
         | 
| 280 356 |  | 
| 281 357 | 
             
                    // parent is contract -> need to check? -> check before minting
         | 
| 358 | 
            +
                    // special case: staking: to protocol possible as well
         | 
| 282 359 | 
             
                    // special case: global registry nft as parent when not on mainnet -> global registry address is 0
         | 
| 283 360 | 
             
                    // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
         | 
| 284 361 | 
             
                    // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
         | 
| 285 | 
            -
                    if( | 
| 286 | 
            -
                         | 
| 362 | 
            +
                    if(objectType != STAKE()) {
         | 
| 363 | 
            +
                        if(parentAddress == address(0)) {
         | 
| 364 | 
            +
                            revert ErrorRegistryParentAddressZero();
         | 
| 365 | 
            +
                        }
         | 
| 287 366 | 
             
                    }
         | 
| 288 367 |  | 
| 289 | 
            -
                    address  | 
| 290 | 
            -
             | 
| 291 | 
            -
             | 
| 292 | 
            -
             | 
| 293 | 
            -
             | 
| 294 | 
            -
                         | 
| 295 | 
            -
                        interceptor,
         | 
| 296 | 
            -
                        EMPTY_URI);
         | 
| 297 | 
            -
                    nftId = toNftId(mintedTokenId);
         | 
| 368 | 
            +
                    address interceptorAddress = _getInterceptor(
         | 
| 369 | 
            +
                        isInterceptor, 
         | 
| 370 | 
            +
                        objectType, 
         | 
| 371 | 
            +
                        objectAddress, 
         | 
| 372 | 
            +
                        parentInfo.isInterceptor, 
         | 
| 373 | 
            +
                        parentAddress);
         | 
| 298 374 |  | 
| 299 | 
            -
                     | 
| 300 | 
            -
                     | 
| 301 | 
            -
                    // getters by address -> return nftId AND struct
         | 
| 375 | 
            +
                    uint256 tokenId = _chainNft.getNextTokenId();
         | 
| 376 | 
            +
                    nftId = NftIdLib.toNftId(tokenId);
         | 
| 302 377 | 
             
                    info.nftId = nftId;
         | 
| 303 378 | 
             
                    _info[nftId] = info;
         | 
| 304 379 |  | 
| 305 | 
            -
                    if( | 
| 306 | 
            -
             | 
| 307 | 
            -
             | 
| 308 | 
            -
             | 
| 309 | 
            -
                        if(_nftIdByAddress[contractAddress].gtz()) { 
         | 
| 310 | 
            -
                            revert ContractAlreadyRegistered(contractAddress);
         | 
| 380 | 
            +
                    if(objectAddress > address(0)) {
         | 
| 381 | 
            +
                        if(_nftIdByAddress[objectAddress].gtz()) { 
         | 
| 382 | 
            +
                            revert ErrorRegistryContractAlreadyRegistered(objectAddress);
         | 
| 311 383 | 
             
                        }
         | 
| 312 384 |  | 
| 313 | 
            -
                        _nftIdByAddress[ | 
| 385 | 
            +
                        _nftIdByAddress[objectAddress] = nftId;
         | 
| 314 386 | 
             
                    }
         | 
| 315 387 |  | 
| 316 | 
            -
                    emit LogRegistration(nftId, parentNftId, objectType,  | 
| 388 | 
            +
                    emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
         | 
| 389 | 
            +
             | 
| 390 | 
            +
                    // calls nft receiver(1) and interceptor(2)
         | 
| 391 | 
            +
                    uint256 mintedTokenId = _chainNft.mint(
         | 
| 392 | 
            +
                        owner,
         | 
| 393 | 
            +
                        interceptorAddress,
         | 
| 394 | 
            +
                        EMPTY_URI);
         | 
| 395 | 
            +
             | 
| 396 | 
            +
                    assert(mintedTokenId == tokenId);        
         | 
| 317 397 | 
             
                }
         | 
| 318 398 |  | 
| 319 399 | 
             
                /// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
         | 
| 400 | 
            +
                /// special case: STAKES (parent may be any type) -> no intercept call
         | 
| 401 | 
            +
                /// default case: 
         | 
| 320 402 | 
             
                function _getInterceptor(
         | 
| 321 403 | 
             
                    bool isInterceptor, 
         | 
| 404 | 
            +
                    ObjectType objectType,
         | 
| 322 405 | 
             
                    address objectAddress,
         | 
| 323 406 | 
             
                    bool parentIsInterceptor,
         | 
| 324 407 | 
             
                    address parentObjectAddress
         | 
| 325 408 | 
             
                )
         | 
| 326 409 | 
             
                    internal 
         | 
| 327 | 
            -
                     | 
| 410 | 
            +
                    pure 
         | 
| 328 411 | 
             
                    returns (address interceptor) 
         | 
| 329 412 | 
             
                {
         | 
| 413 | 
            +
                    // no intercepting calls for stakes
         | 
| 414 | 
            +
                    if (objectType == STAKE()) {
         | 
| 415 | 
            +
                        return address(0);
         | 
| 416 | 
            +
                    }
         | 
| 417 | 
            +
             | 
| 330 418 | 
             
                    if (objectAddress == address(0)) {
         | 
| 331 419 | 
             
                        if (parentIsInterceptor) {
         | 
| 332 420 | 
             
                            return parentObjectAddress;
         | 
| @@ -347,13 +435,14 @@ contract Registry is | |
| 347 435 | 
             
                /// @dev protocol registration used to anchor the dip ecosystem relations
         | 
| 348 436 | 
             
                function _registerProtocol() 
         | 
| 349 437 | 
             
                    private
         | 
| 438 | 
            +
                    returns (NftId protocolNftId)
         | 
| 350 439 | 
             
                {
         | 
| 351 440 | 
             
                    uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
         | 
| 352 | 
            -
                     | 
| 441 | 
            +
                    protocolNftId = NftIdLib.toNftId(protocolId);
         | 
| 353 442 |  | 
| 354 443 | 
             
                    _info[protocolNftId] = ObjectInfo({
         | 
| 355 444 | 
             
                        nftId: protocolNftId,
         | 
| 356 | 
            -
                        parentNftId:  | 
| 445 | 
            +
                        parentNftId: NftIdLib.zero(),
         | 
| 357 446 | 
             
                        objectType: PROTOCOL(),
         | 
| 358 447 | 
             
                        isInterceptor: false, 
         | 
| 359 448 | 
             
                        objectAddress: address(0),
         | 
| @@ -368,19 +457,20 @@ contract Registry is | |
| 368 457 | 
             
                /// might also register the global registry when not on mainnet
         | 
| 369 458 | 
             
                function _registerRegistry() 
         | 
| 370 459 | 
             
                    private
         | 
| 460 | 
            +
                    returns (NftId registryNftId)
         | 
| 371 461 | 
             
                {
         | 
| 372 462 | 
             
                    uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
         | 
| 373 | 
            -
                     | 
| 463 | 
            +
                    registryNftId = NftIdLib.toNftId(registryId);
         | 
| 374 464 | 
             
                    NftId parentNftId;
         | 
| 375 465 |  | 
| 376 466 | 
             
                    if(registryId != _chainNft.GLOBAL_REGISTRY_ID()) 
         | 
| 377 467 | 
             
                    {// we're not the global registry
         | 
| 378 468 | 
             
                        _registerGlobalRegistry();
         | 
| 379 | 
            -
                        parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
         | 
| 469 | 
            +
                        parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
         | 
| 380 470 | 
             
                    }
         | 
| 381 471 | 
             
                    else 
         | 
| 382 472 | 
             
                    {// we are global registry
         | 
| 383 | 
            -
                        parentNftId =  | 
| 473 | 
            +
                        parentNftId = _protocolNftId;
         | 
| 384 474 | 
             
                    }
         | 
| 385 475 |  | 
| 386 476 | 
             
                    _info[registryNftId] = ObjectInfo({
         | 
| @@ -392,9 +482,8 @@ contract Registry is | |
| 392 482 | 
             
                        initialOwner: NFT_LOCK_ADDRESS,
         | 
| 393 483 | 
             
                        data: "" 
         | 
| 394 484 | 
             
                    });
         | 
| 395 | 
            -
                    _nftIdByAddress[address(this)] = registryNftId;
         | 
| 396 | 
            -
                    _registryNftId = registryNftId;
         | 
| 397 485 |  | 
| 486 | 
            +
                    _nftIdByAddress[address(this)] = registryNftId;
         | 
| 398 487 | 
             
                    _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
         | 
| 399 488 | 
             
                }
         | 
| 400 489 |  | 
| @@ -403,11 +492,11 @@ contract Registry is | |
| 403 492 | 
             
                    private
         | 
| 404 493 | 
             
                {
         | 
| 405 494 | 
             
                    uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
         | 
| 406 | 
            -
                    NftId globalRegistryNftId = toNftId(globalRegistryId);
         | 
| 495 | 
            +
                    NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
         | 
| 407 496 |  | 
| 408 497 | 
             
                    _info[globalRegistryNftId] = ObjectInfo({
         | 
| 409 498 | 
             
                        nftId: globalRegistryNftId,
         | 
| 410 | 
            -
                        parentNftId: toNftId(_chainNft.PROTOCOL_NFT_ID()),
         | 
| 499 | 
            +
                        parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
         | 
| 411 500 | 
             
                        objectType: REGISTRY(),
         | 
| 412 501 | 
             
                        isInterceptor: false,
         | 
| 413 502 | 
             
                        objectAddress: address(0),
         | 
| @@ -417,48 +506,71 @@ contract Registry is | |
| 417 506 |  | 
| 418 507 | 
             
                    _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
         | 
| 419 508 | 
             
                }
         | 
| 509 | 
            +
                // depends on _registryNftId and _stakingAddress
         | 
| 510 | 
            +
                function _registerStaking()
         | 
| 511 | 
            +
                    private
         | 
| 512 | 
            +
                    returns (NftId stakingNftId)
         | 
| 513 | 
            +
                {
         | 
| 514 | 
            +
                    address stakingOwner = IRegisterable(_stakingAddress).getOwner();
         | 
| 515 | 
            +
                    uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
         | 
| 516 | 
            +
                    stakingNftId = NftIdLib.toNftId(stakingId);
         | 
| 517 | 
            +
             | 
| 518 | 
            +
                    _info[stakingNftId] = ObjectInfo({
         | 
| 519 | 
            +
                        nftId: stakingNftId,
         | 
| 520 | 
            +
                        parentNftId: _registryNftId,
         | 
| 521 | 
            +
                        objectType: STAKING(),
         | 
| 522 | 
            +
                        isInterceptor: false,
         | 
| 523 | 
            +
                        objectAddress: _stakingAddress, 
         | 
| 524 | 
            +
                        initialOwner: stakingOwner,
         | 
| 525 | 
            +
                        data: "" 
         | 
| 526 | 
            +
                    });
         | 
| 527 | 
            +
             | 
| 528 | 
            +
                    _nftIdByAddress[_stakingAddress] = stakingNftId;
         | 
| 529 | 
            +
             | 
| 530 | 
            +
                    // reverts if nftId was already minted
         | 
| 531 | 
            +
                    _chainNft.mint(stakingOwner, stakingId);
         | 
| 532 | 
            +
                }
         | 
| 420 533 |  | 
| 421 534 | 
             
                /// @dev defines which object - parent types relations are allowed to register
         | 
| 422 | 
            -
                 | 
| 423 | 
            -
                // 1) EACH object type MUST have only one parent type across ALL mappings
         | 
| 424 | 
            -
                // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
         | 
| 425 | 
            -
                // 3) DO NOT use REGISTRY as object type
         | 
| 426 | 
            -
                // 2) DO NOT use PROTOCOL and "zeroObjectType"
         | 
| 535 | 
            +
                /// EACH object type MUST have only one parent type across ALL mappings
         | 
| 427 536 | 
             
                function _setupValidCoreTypesAndCombinations() 
         | 
| 428 537 | 
             
                    private 
         | 
| 429 538 | 
             
                {
         | 
| 430 539 | 
             
                    _coreTypes[REGISTRY()] = true;
         | 
| 431 540 | 
             
                    _coreTypes[SERVICE()] = true;
         | 
| 432 | 
            -
                    _coreTypes[TOKEN()] = true;
         | 
| 433 541 | 
             
                    _coreTypes[INSTANCE()] = true;
         | 
| 434 542 | 
             
                    _coreTypes[PRODUCT()] = true;
         | 
| 435 543 | 
             
                    _coreTypes[POOL()] = true;
         | 
| 436 544 | 
             
                    _coreTypes[DISTRIBUTION()] = true;
         | 
| 545 | 
            +
                    _coreTypes[DISTRIBUTOR()] = true;
         | 
| 546 | 
            +
                    _coreTypes[ORACLE()] = true;
         | 
| 437 547 | 
             
                    _coreTypes[POLICY()] = true;
         | 
| 438 548 | 
             
                    _coreTypes[BUNDLE()] = true;
         | 
| 549 | 
            +
                    _coreTypes[STAKING()] = true;
         | 
| 439 550 | 
             
                    _coreTypes[STAKE()] = true;
         | 
| 440 | 
            -
                    
         | 
| 441 | 
            -
                    // registry as parent, ONLY registry owner
         | 
| 442 | 
            -
                    //_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
         | 
| 443 | 
            -
                    _coreContractCombinations[TOKEN()][REGISTRY()] = true;
         | 
| 444 | 
            -
                    //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
         | 
| 445 551 |  | 
| 446 | 
            -
                    // registry  | 
| 552 | 
            +
                    // only global registry allowed to register registry (after initialization)
         | 
| 553 | 
            +
                    if(block.chainid == 1) {
         | 
| 554 | 
            +
                        _coreContractCombinations[REGISTRY()][REGISTRY()] = true;
         | 
| 555 | 
            +
                    }
         | 
| 556 | 
            +
             | 
| 557 | 
            +
                    // contracts with registry parent
         | 
| 558 | 
            +
                    _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
         | 
| 447 559 | 
             
                    _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
         | 
| 448 560 |  | 
| 449 | 
            -
                    // instance  | 
| 561 | 
            +
                    // components with instance parent
         | 
| 450 562 | 
             
                    _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
         | 
| 451 563 | 
             
                    _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
         | 
| 452 564 | 
             
                    _coreContractCombinations[ORACLE()][INSTANCE()] = true;
         | 
| 453 565 | 
             
                    _coreContractCombinations[POOL()][INSTANCE()] = true;
         | 
| 454 566 |  | 
| 567 | 
            +
                    // objects with coponent parents
         | 
| 455 568 | 
             
                    _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
         | 
| 456 | 
            -
             | 
| 457 | 
            -
                    // product as parent, ONLY approved
         | 
| 458 569 | 
             
                    _coreObjectCombinations[POLICY()][PRODUCT()] = true;
         | 
| 459 | 
            -
             | 
| 460 | 
            -
                    // pool as parent, ONLY approved
         | 
| 461 570 | 
             
                    _coreObjectCombinations[BUNDLE()][POOL()] = true;
         | 
| 462 | 
            -
             | 
| 571 | 
            +
             | 
| 572 | 
            +
                    // staking
         | 
| 573 | 
            +
                    _coreObjectCombinations[STAKE()][PROTOCOL()] = true;
         | 
| 574 | 
            +
                    _coreObjectCombinations[STAKE()][INSTANCE()] = true;
         | 
| 463 575 | 
             
                }
         | 
| 464 576 | 
             
            }
         |