@etherisc/gif-next 0.0.2-10490c8-152 → 0.0.2-104f68e-724
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 +227 -17
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1234 -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 +1013 -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 +1342 -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/distribution/Distribution.sol/Distribution.json +1012 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1405 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +906 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +932 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1960 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
- 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 +4 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +652 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +4 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.json +815 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1623 -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 +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1850 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1053 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +714 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3587 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
- 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 +33 -115
- 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 +979 -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 +765 -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 +871 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +927 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +710 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -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 +1367 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +802 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +907 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +909 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1198 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1034 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1490 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +734 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +737 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +698 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -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 +1346 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +814 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +517 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +886 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +867 -0
- 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/product/IProductComponent.sol/IProductComponent.json +948 -0
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +400 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1239 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +770 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +865 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +746 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1054 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +103 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +598 -52
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +389 -194
- 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 +905 -151
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1858 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +611 -263
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +350 -117
- 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 +1169 -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 +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/shared/Component.sol/Component.json +685 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1573 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +794 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +149 -185
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +605 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
- 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 +34 -30
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IService.sol/IService.json} +134 -29
- 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/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +793 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +78 -87
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
- 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 +65 -30
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +44 -54
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/Service.sol/Service.json} +152 -173
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +382 -9
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- 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 +440 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1828 -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 +750 -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 +1236 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -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 +398 -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 +203 -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 +317 -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 +142 -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 +246 -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 +312 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -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/upgradeability/IVersionable.sol/IVersionable.json +55 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -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/upgradeability/Versionable.sol/Versionable.json +78 -0
- package/contracts/authorization/AccessAdmin.sol +592 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +217 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/authorization/IAccessAdmin.sol +135 -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 +138 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +295 -0
- package/contracts/distribution/DistributionService.sol +336 -0
- package/contracts/distribution/DistributionServiceManager.sol +39 -0
- package/contracts/distribution/IDistributionComponent.sol +52 -0
- package/contracts/distribution/IDistributionService.sol +101 -0
- package/contracts/examples/fire/DamageLevel.sol +56 -0
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +404 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +39 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/BundleSet.sol +126 -0
- package/contracts/instance/IInstance.sol +63 -0
- package/contracts/instance/IInstanceService.sol +92 -0
- package/contracts/instance/Instance.sol +229 -0
- package/contracts/instance/InstanceAdmin.sol +285 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
- package/contracts/instance/InstanceReader.sol +430 -0
- package/contracts/instance/InstanceService.sol +466 -0
- package/contracts/instance/InstanceServiceManager.sol +39 -0
- package/contracts/instance/InstanceStore.sol +287 -0
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/base/Cloneable.sol +28 -0
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +111 -0
- package/contracts/instance/base/ObjectSet.sol +79 -0
- package/contracts/instance/module/IAccess.sol +30 -22
- package/contracts/instance/module/IBundle.sol +8 -7
- package/contracts/instance/module/IComponents.sol +46 -0
- package/contracts/instance/module/IDistribution.sol +6 -4
- package/contracts/instance/module/IPolicy.sol +58 -19
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/{test/TestToken.sol → mock/Dip.sol} +6 -6
- 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 +33 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +167 -0
- package/contracts/oracle/OracleService.sol +281 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +166 -0
- package/contracts/pool/BasicPoolAuthorization.sol +58 -0
- package/contracts/pool/BundleService.sol +438 -0
- package/contracts/pool/BundleServiceManager.sol +39 -0
- package/contracts/pool/IBundleService.sol +134 -0
- package/contracts/pool/IPoolComponent.sol +58 -0
- package/contracts/pool/IPoolService.sol +160 -0
- package/contracts/pool/Pool.sol +326 -0
- package/contracts/pool/PoolService.sol +523 -0
- package/contracts/pool/PoolServiceManager.sol +39 -0
- package/contracts/product/ApplicationService.sol +247 -0
- package/contracts/product/ApplicationServiceManager.sol +38 -0
- package/contracts/product/BasicProduct.sol +53 -0
- package/contracts/product/BasicProductAuthorization.sol +43 -0
- package/contracts/product/ClaimService.sol +549 -0
- package/contracts/product/ClaimServiceManager.sol +38 -0
- package/contracts/product/IApplicationService.sol +63 -0
- package/contracts/product/IClaimService.sol +122 -0
- package/contracts/product/IPolicyService.sol +77 -0
- package/contracts/product/IPricingService.sol +39 -0
- package/contracts/product/IProductComponent.sol +39 -0
- package/contracts/product/IRiskService.sol +33 -0
- package/contracts/product/PolicyService.sol +651 -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 +425 -0
- package/contracts/product/RiskService.sol +96 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +96 -33
- package/contracts/registry/IRegistry.sol +128 -33
- package/contracts/registry/IRegistryService.sol +56 -16
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +545 -334
- package/contracts/registry/RegistryAdmin.sol +464 -0
- package/contracts/registry/RegistryService.sol +155 -272
- package/contracts/registry/RegistryServiceManager.sol +29 -19
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseRegistry.sol +491 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +198 -0
- package/contracts/registry/TokenRegistry.sol +315 -0
- package/contracts/shared/Component.sol +268 -0
- package/contracts/shared/ComponentService.sol +641 -0
- package/contracts/shared/ComponentServiceManager.sol +38 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +70 -0
- package/contracts/shared/IComponentService.sol +108 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +20 -14
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
- package/contracts/shared/INftOwnable.sol +13 -12
- package/contracts/shared/IPolicyHolder.sol +35 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +25 -0
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InitializableERC165.sol +27 -0
- package/contracts/shared/InstanceLinkedComponent.sol +172 -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 +60 -89
- package/contracts/shared/PolicyHolder.sol +58 -0
- package/contracts/shared/Registerable.sol +24 -38
- package/contracts/shared/RegistryLinked.sol +44 -0
- package/contracts/shared/Service.sol +87 -0
- package/contracts/shared/TokenHandler.sol +124 -12
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +168 -0
- package/contracts/staking/IStakingService.sol +160 -0
- package/contracts/staking/StakeManagerLib.sol +224 -0
- package/contracts/staking/Staking.sol +498 -0
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +52 -0
- package/contracts/staking/StakingReader.sol +183 -0
- package/contracts/staking/StakingService.sol +407 -0
- package/contracts/staking/StakingServiceManager.sol +44 -0
- package/contracts/staking/StakingStore.sol +605 -0
- package/contracts/staking/TargetManagerLib.sol +211 -0
- package/contracts/{types → type}/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +150 -0
- package/contracts/{types → type}/Blocknumber.sol +27 -3
- package/contracts/type/ClaimId.sol +80 -0
- package/contracts/{types → type}/DistributorType.sol +2 -2
- package/contracts/type/Fee.sol +66 -0
- package/contracts/{types → type}/NftId.sol +22 -15
- package/contracts/type/NftIdSet.sol +62 -0
- package/contracts/type/ObjectType.sol +275 -0
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +6 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/{types → type}/RiskId.sol +16 -2
- package/contracts/type/RoleId.sol +174 -0
- package/contracts/type/Seconds.sol +101 -0
- package/contracts/type/Selector.sol +102 -0
- package/contracts/{types → type}/StateId.sol +39 -4
- package/contracts/type/String.sol +53 -0
- package/contracts/{types → type}/Timestamp.sol +38 -15
- package/contracts/type/UFixed.sol +351 -0
- package/contracts/{types → type}/Version.sol +8 -2
- package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
- package/contracts/upgradeability/ProxyManager.sol +231 -0
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +2 -4
- package/contracts/upgradeability/Versionable.sol +59 -0
- package/package.json +11 -7
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/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/IService.sol/IService.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 -736
- 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/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- 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/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
- 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/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
- 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/shared/Versionable.sol/Versionable.json +0 -228
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
- package/artifacts/contracts/test/TestService.sol/TestService.json +0 -584
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
- 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 -270
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
- 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/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 -10
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
- 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 -30
- 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 -236
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.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 -30
- package/contracts/components/IBaseComponent.sol +0 -19
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/base/IService.sol +0 -15
- package/contracts/instance/base/KeyValueStore.sol +0 -188
- package/contracts/instance/base/Lifecycle.sol +0 -100
- package/contracts/instance/base/ServiceBase.sol +0 -44
- package/contracts/instance/module/ISetup.sol +0 -41
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/registry/IChainNft.sol +0 -22
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/shared/ERC165.sol +0 -21
- package/contracts/shared/ProxyManager.sol +0 -94
- package/contracts/shared/Versionable.sol +0 -147
- 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 -26
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/test/Usdc.sol +0 -26
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/Fee.sol +0 -56
- package/contracts/types/NftIdSet.sol +0 -60
- package/contracts/types/NumberId.sol +0 -52
- package/contracts/types/ObjectType.sol +0 -152
- package/contracts/types/RoleId.sol +0 -38
- package/contracts/types/UFixed.sol +0 -209
- /package/contracts/{types → type}/Key32.sol +0 -0
|
@@ -1,449 +1,506 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity ^0.8.20;
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
|
5
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
|
6
|
+
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
|
7
|
+
import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
|
8
|
+
|
|
9
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
|
10
|
+
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
|
11
|
+
import {ObjectType, ObjectTypeLib, PROTOCOL, REGISTRY, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
|
|
6
12
|
|
|
7
|
-
import {IChainNft} from "./IChainNft.sol";
|
|
8
13
|
import {ChainNft} from "./ChainNft.sol";
|
|
9
14
|
import {IRegistry} from "./IRegistry.sol";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
import {ERC165} from "../shared/ERC165.sol";
|
|
16
|
-
|
|
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";
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
/// @dev IMPORTANT
|
|
19
21
|
// Each NFT minted by registry is accosiated with:
|
|
20
22
|
// 1) NFT owner
|
|
21
23
|
// 2) registred contract OR object stored in registered (parent) contract
|
|
22
|
-
//
|
|
23
|
-
// 1)
|
|
24
|
-
// 2) IRegisterable address by
|
|
25
|
-
// 3)
|
|
26
|
-
// 4)
|
|
27
|
-
|
|
24
|
+
// Five registration flows:
|
|
25
|
+
// 1) registerService() -> registers IService address by ReleaseRegistry (ReleaseRegistry is set at deployment time)
|
|
26
|
+
// 2) register() -> registers IRegisterable address by IService (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
|
|
27
|
+
// 3) -> registers object by IService (POLICY, BUNDLE, STAKE)
|
|
28
|
+
// 4) registerWithCustomType() -> registers IRegisterable address with custom type by IService
|
|
29
|
+
// 5) registerRegistry() -> registers IRegistry address (from different chain) by GifAdmin. Works ONLY on mainnet.
|
|
30
|
+
// Note: getters by address MUST not be used with this address (will return 0 or data related to different object or even revert)
|
|
31
|
+
|
|
32
|
+
/// @dev Chain Registry contract implementing IRegistry.
|
|
33
|
+
/// IRegistry for method details.
|
|
28
34
|
contract Registry is
|
|
29
|
-
|
|
35
|
+
Initializable,
|
|
36
|
+
AccessManaged,
|
|
30
37
|
IRegistry
|
|
31
38
|
{
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
/// @dev Protocol NFT ID
|
|
40
|
+
NftId public immutable PROTOCOL_NFT_ID;
|
|
41
|
+
|
|
42
|
+
/// @dev Gobal registry NFT ID
|
|
43
|
+
NftId public immutable GLOBAL_REGISTRY_NFT_ID;
|
|
44
|
+
|
|
45
|
+
/// @dev Gobal registry address on mainnet.
|
|
46
|
+
address public immutable GLOBAL_REGISTRY_ADDRESS;
|
|
47
|
+
|
|
48
|
+
/// @dev Registry NFT ID
|
|
49
|
+
NftId public immutable REGISTRY_NFT_ID;
|
|
50
|
+
|
|
51
|
+
/// @dev Deployer address that authorizes the initializer of this contract.
|
|
52
|
+
address public immutable DEPLOYER;
|
|
53
|
+
|
|
54
|
+
/// @dev Registry admin contract for this registry.
|
|
55
|
+
RegistryAdmin public immutable ADMIN;
|
|
56
|
+
|
|
57
|
+
/// @dev Chain NFT contract that keeps track of the ownership of all registered objects.
|
|
58
|
+
ChainNft public immutable CHAIN_NFT;
|
|
59
|
+
|
|
46
60
|
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
|
47
|
-
uint256 public constant
|
|
61
|
+
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
|
62
|
+
uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
|
|
48
63
|
string public constant EMPTY_URI = "";
|
|
49
64
|
|
|
50
|
-
|
|
51
|
-
mapping(
|
|
65
|
+
/// @dev keep track of different registries on different chains
|
|
66
|
+
mapping(uint256 chainId => NftId registryNftId) private _registryNftIdByChainId;
|
|
67
|
+
uint256[] private _chainId;
|
|
52
68
|
|
|
53
|
-
|
|
54
|
-
|
|
69
|
+
/// @dev keep track of object info and address reverse lookup
|
|
70
|
+
mapping(NftId nftId => ObjectInfo info) private _info;
|
|
71
|
+
mapping(address object => NftId nftId) private _nftIdByAddress;
|
|
55
72
|
|
|
56
|
-
|
|
57
|
-
|
|
73
|
+
/// @dev keep track of service addresses by version and domain
|
|
74
|
+
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
|
|
58
75
|
|
|
59
|
-
mapping(ObjectType objectType =>
|
|
60
|
-
ObjectType parentType => bool)) _isValidObjectCombination;
|
|
76
|
+
mapping(ObjectType objectType => bool) private _coreTypes;
|
|
61
77
|
|
|
62
|
-
mapping(
|
|
63
|
-
|
|
64
|
-
VersionPart majorVersion => address service)) _service;
|
|
78
|
+
mapping(ObjectType objectType => mapping(
|
|
79
|
+
ObjectType parentType => bool)) private _coreContractCombinations;
|
|
65
80
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
IChainNft _chainNft;
|
|
69
|
-
ChainNft _chainNftInternal;
|
|
81
|
+
mapping(ObjectType objectType => mapping(
|
|
82
|
+
ObjectType parentType => bool)) private _coreObjectCombinations;
|
|
70
83
|
|
|
71
|
-
|
|
72
|
-
modifier onlyInitialOwner() {
|
|
73
|
-
if(
|
|
74
|
-
msg.sender != getOwner() ||
|
|
75
|
-
msg.sender != _info[_registryNftId].initialOwner) {
|
|
76
|
-
revert NotInitialOwner();
|
|
77
|
-
}
|
|
78
|
-
}*/
|
|
84
|
+
NftId private _stakingNftId;
|
|
79
85
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
_;
|
|
85
|
-
}
|
|
86
|
+
ReleaseRegistry private _releaseRegistry;
|
|
87
|
+
address private _tokenRegistryAddress;
|
|
88
|
+
address private _stakingAddress;
|
|
86
89
|
|
|
87
|
-
modifier
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
revert NotRegistryService();
|
|
90
|
+
modifier onlyDeployer() {
|
|
91
|
+
if (msg.sender != DEPLOYER) {
|
|
92
|
+
revert ErrorRegistryCallerNotDeployer();
|
|
91
93
|
}
|
|
92
94
|
_;
|
|
93
95
|
}
|
|
94
96
|
|
|
95
|
-
|
|
97
|
+
// TODO when create2 strategy is added to ignition:
|
|
98
|
+
// 1. move globalRegistry arg out from constructor into initialize()
|
|
99
|
+
// 2. add testRegistry_deployChainRegistryAtGlobalRegistryAddress
|
|
100
|
+
/// @dev Creates the registry contract and populates it with the protocol and registry objects.
|
|
101
|
+
/// Internally deploys the ChainNft contract.
|
|
102
|
+
constructor(RegistryAdmin admin, address globalRegistry)
|
|
103
|
+
AccessManaged(admin.authority())
|
|
96
104
|
{
|
|
97
|
-
|
|
98
|
-
|
|
105
|
+
DEPLOYER = msg.sender;
|
|
106
|
+
ADMIN = admin;
|
|
107
|
+
GLOBAL_REGISTRY_ADDRESS = _getGlobalRegistryAddress(globalRegistry);
|
|
99
108
|
|
|
100
109
|
// deploy NFT
|
|
101
|
-
|
|
102
|
-
|
|
110
|
+
CHAIN_NFT = new ChainNft(address(this));
|
|
111
|
+
GLOBAL_REGISTRY_NFT_ID = NftIdLib.toNftId(
|
|
112
|
+
CHAIN_NFT.GLOBAL_REGISTRY_ID());
|
|
103
113
|
|
|
104
114
|
// initial registry setup
|
|
105
|
-
_registerProtocol();
|
|
106
|
-
_registerRegistry(
|
|
107
|
-
|
|
115
|
+
PROTOCOL_NFT_ID = _registerProtocol();
|
|
116
|
+
REGISTRY_NFT_ID = _registerRegistry();
|
|
117
|
+
|
|
118
|
+
// set object types and object parent relations
|
|
119
|
+
_setupValidCoreTypesAndCombinations();
|
|
120
|
+
}
|
|
108
121
|
|
|
109
|
-
// set object parent relations
|
|
110
|
-
_setupValidObjectParentCombinations();
|
|
111
122
|
|
|
112
|
-
|
|
123
|
+
/// @dev Wires release registry, token registry and staking contract to this registry.
|
|
124
|
+
/// MUST be called by release registry.
|
|
125
|
+
function initialize(
|
|
126
|
+
address releaseRegistry,
|
|
127
|
+
address tokenRegistry,
|
|
128
|
+
address staking
|
|
129
|
+
)
|
|
130
|
+
external
|
|
131
|
+
initializer()
|
|
132
|
+
onlyDeployer()
|
|
133
|
+
{
|
|
134
|
+
// store links to supporting contracts
|
|
135
|
+
_releaseRegistry = ReleaseRegistry(releaseRegistry);
|
|
136
|
+
_tokenRegistryAddress = tokenRegistry;
|
|
137
|
+
_stakingAddress = staking;
|
|
138
|
+
|
|
139
|
+
// register staking contract
|
|
140
|
+
_stakingNftId = _registerStaking();
|
|
113
141
|
}
|
|
114
142
|
|
|
115
|
-
/// @
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
143
|
+
/// @inheritdoc IRegistry
|
|
144
|
+
function registerRegistry(
|
|
145
|
+
NftId nftId,
|
|
146
|
+
uint256 chainId,
|
|
147
|
+
address registryAddress
|
|
148
|
+
)
|
|
149
|
+
external
|
|
150
|
+
restricted()
|
|
151
|
+
{
|
|
152
|
+
// registration of chain registries only allowed on mainnet
|
|
153
|
+
if (block.chainid != 1) {
|
|
154
|
+
revert ErrorRegistryNotOnMainnet(block.chainid);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// registry chain id is not zero
|
|
158
|
+
if(chainId == 0) {
|
|
159
|
+
revert ErrorRegistryChainRegistryChainIdZero(nftId);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// registry address is not zero
|
|
163
|
+
if (registryAddress == address(0)) {
|
|
164
|
+
revert ErrorRegistryChainRegistryAddressZero(nftId, chainId);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// registry nft id matches registry chain id
|
|
168
|
+
uint256 expectedRegistryId = CHAIN_NFT.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID, chainId);
|
|
169
|
+
if (nftId != NftIdLib.toNftId(expectedRegistryId)) {
|
|
170
|
+
revert ErrorRegistryChainRegistryNftIdInvalid(nftId, chainId);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
emit LogChainRegistryRegistration(nftId, chainId, registryAddress);
|
|
174
|
+
|
|
175
|
+
_registerRegistryForNft(
|
|
176
|
+
chainId,
|
|
177
|
+
ObjectInfo({
|
|
178
|
+
nftId: nftId,
|
|
179
|
+
parentNftId: REGISTRY_NFT_ID,
|
|
180
|
+
objectType: REGISTRY(),
|
|
181
|
+
isInterceptor: false,
|
|
182
|
+
objectAddress: registryAddress,
|
|
183
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
|
184
|
+
data: ""
|
|
185
|
+
}),
|
|
186
|
+
false); // do not update address lookup for objects on a different chain
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// TODO limit service owner to registry admin?
|
|
190
|
+
/// @inheritdoc IRegistry
|
|
191
|
+
function registerService(
|
|
192
|
+
ObjectInfo memory info,
|
|
193
|
+
VersionPart version,
|
|
194
|
+
ObjectType domain
|
|
195
|
+
)
|
|
121
196
|
external
|
|
122
|
-
|
|
197
|
+
restricted()
|
|
123
198
|
returns(NftId nftId)
|
|
124
199
|
{
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
200
|
+
// service address is defined
|
|
201
|
+
address service = info.objectAddress;
|
|
202
|
+
if(service == address(0)) {
|
|
203
|
+
revert ErrorRegistryServiceAddressZero();
|
|
204
|
+
}
|
|
130
205
|
|
|
131
|
-
//
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
206
|
+
// version is defined
|
|
207
|
+
if(version.eqz()) {
|
|
208
|
+
revert ErrorRegistryServiceVersionZero(service);
|
|
209
|
+
}
|
|
210
|
+
// service domain is defined
|
|
211
|
+
if(domain.eqz()) {
|
|
212
|
+
revert ErrorRegistryServiceDomainZero(service, version);
|
|
137
213
|
}
|
|
138
214
|
|
|
139
|
-
|
|
215
|
+
// service has proper type
|
|
216
|
+
if(info.objectType != SERVICE()) {
|
|
217
|
+
revert ErrorRegistryNotService(service, info.objectType);
|
|
218
|
+
}
|
|
140
219
|
|
|
141
|
-
//
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
info.initialOwner,
|
|
146
|
-
interceptor,
|
|
147
|
-
EMPTY_URI);
|
|
148
|
-
nftId = toNftId(mintedTokenId);
|
|
220
|
+
// service parent has registry type
|
|
221
|
+
if(info.parentNftId != REGISTRY_NFT_ID) {
|
|
222
|
+
revert ErrorRegistryServiceParentNotRegistry(service, version, info.parentNftId);
|
|
223
|
+
}
|
|
149
224
|
|
|
150
|
-
//
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
_info[nftId] = info;
|
|
225
|
+
// service has not already been registered
|
|
226
|
+
if(_service[version][domain] != address(0)) {
|
|
227
|
+
revert ErrorRegistryServiceDomainAlreadyRegistered(service, version, domain);
|
|
228
|
+
}
|
|
155
229
|
|
|
156
|
-
|
|
157
|
-
{
|
|
158
|
-
// TODO if need to add types latter -> at least call this check from registry service
|
|
159
|
-
// parent is registered + object-parent types are valid
|
|
160
|
-
if(_isValidContractCombination[objectType][parentType] == false) {
|
|
161
|
-
revert InvalidTypesCombination(objectType, parentType);
|
|
162
|
-
}
|
|
230
|
+
_service[version][domain] = service;
|
|
163
231
|
|
|
164
|
-
|
|
232
|
+
emit LogServiceRegistration(version, domain);
|
|
165
233
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
234
|
+
nftId = _register(info);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
/// @inheritdoc IRegistry
|
|
239
|
+
function register(ObjectInfo memory info)
|
|
240
|
+
external
|
|
241
|
+
restricted()
|
|
242
|
+
returns(NftId nftId)
|
|
243
|
+
{
|
|
244
|
+
address objectAddress = info.objectAddress;
|
|
245
|
+
ObjectType objectType = info.objectType;
|
|
246
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
|
169
247
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
{
|
|
175
|
-
(
|
|
176
|
-
string memory serviceName,
|
|
177
|
-
VersionPart majorVersion
|
|
178
|
-
) = abi.decode(info.data, (string, VersionPart));
|
|
179
|
-
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
|
180
|
-
|
|
181
|
-
// TODO MUST guarantee consistency of service.getVersion() and majorVersion here
|
|
182
|
-
// TODO update _serviceNftId when registryService with new major version is registered? -> it is fixed in current setup
|
|
183
|
-
// TODO do not use names -> each object type is registered by corresponding service -> conflicting with approve()
|
|
184
|
-
if(
|
|
185
|
-
majorVersion.toInt() < MAJOR_VERSION_MIN ||
|
|
186
|
-
(majorVersion.toInt() > MAJOR_VERSION_MIN &&
|
|
187
|
-
_service[serviceNameHash][VersionLib.toVersionPart(majorVersion.toInt() - 1)] == address(0) )
|
|
188
|
-
) {
|
|
189
|
-
revert InvalidServiceVersion(majorVersion);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
if(_service[serviceNameHash][majorVersion] != address(0)) {
|
|
193
|
-
revert ServiceNameAlreadyRegistered(serviceName, majorVersion);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
_string[nftId] = serviceName;
|
|
197
|
-
_service[serviceNameHash][majorVersion] = contractAddress;
|
|
198
|
-
|
|
199
|
-
emit LogServiceNameRegistration(serviceName, majorVersion);
|
|
248
|
+
// check type combinations for core objects
|
|
249
|
+
if(objectAddress == address(0)) {
|
|
250
|
+
if(_coreObjectCombinations[objectType][parentType] == false) {
|
|
251
|
+
revert ErrorRegistryTypesCombinationInvalid(objectAddress, objectType, parentType);
|
|
200
252
|
}
|
|
201
253
|
}
|
|
202
|
-
|
|
203
|
-
{
|
|
204
|
-
if(
|
|
205
|
-
revert
|
|
254
|
+
// check type combinations for contract objects
|
|
255
|
+
else {
|
|
256
|
+
if(_coreContractCombinations[objectType][parentType] == false) {
|
|
257
|
+
revert ErrorRegistryTypesCombinationInvalid(objectAddress, objectType, parentType);
|
|
206
258
|
}
|
|
207
259
|
}
|
|
208
260
|
|
|
209
|
-
|
|
261
|
+
nftId = _register(info);
|
|
210
262
|
}
|
|
211
263
|
|
|
212
|
-
function registerFrom(
|
|
213
|
-
address from,
|
|
214
|
-
ObjectInfo memory info
|
|
215
|
-
) external returns (NftId nftId)
|
|
216
|
-
{
|
|
217
|
-
revert();
|
|
218
|
-
}
|
|
219
|
-
|
|
220
264
|
|
|
221
|
-
/// @
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
// TODO in case where exists exactly one registered service per objectType (and major version):
|
|
227
|
-
// - registration and approve is a single operation, no need for separate approve() function
|
|
228
|
-
// - then approve can be used to adding new valid object-parent combinations???
|
|
229
|
-
function approve(
|
|
230
|
-
NftId serviceNftId,
|
|
231
|
-
ObjectType objectType,
|
|
232
|
-
ObjectType parentType
|
|
233
|
-
)
|
|
234
|
-
public
|
|
235
|
-
onlyOwner()
|
|
265
|
+
/// @inheritdoc IRegistry
|
|
266
|
+
function registerWithCustomType(ObjectInfo memory info)
|
|
267
|
+
external
|
|
268
|
+
restricted()
|
|
269
|
+
returns(NftId nftId)
|
|
236
270
|
{
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
if(_nftIdByAddress[serviceAddress].eqz()) {
|
|
240
|
-
revert NotRegisteredContract(serviceNftId);
|
|
241
|
-
}
|
|
271
|
+
ObjectType objectType = info.objectType;
|
|
272
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
|
242
273
|
|
|
243
|
-
if(
|
|
244
|
-
revert
|
|
274
|
+
if(_coreTypes[objectType]) {
|
|
275
|
+
revert ErrorRegistryCoreTypeRegistration();
|
|
245
276
|
}
|
|
246
277
|
|
|
247
278
|
if(
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
279
|
+
objectType == ObjectTypeLib.zero() ||
|
|
280
|
+
parentType == ObjectTypeLib.zero() ||
|
|
281
|
+
parentType == PROTOCOL() ||
|
|
282
|
+
parentType == SERVICE()
|
|
283
|
+
) {
|
|
284
|
+
revert ErrorRegistryTypesCombinationInvalid(info.objectAddress, objectType, parentType);
|
|
251
285
|
}
|
|
252
286
|
|
|
253
|
-
|
|
287
|
+
nftId = _register(info);
|
|
288
|
+
}
|
|
289
|
+
|
|
254
290
|
|
|
255
|
-
|
|
291
|
+
/// @dev earliest GIF major version
|
|
292
|
+
function getInitialVersion() external view returns (VersionPart) {
|
|
293
|
+
return VersionPartLib.toVersionPart(_releaseRegistry.INITIAL_GIF_VERSION());
|
|
256
294
|
}
|
|
257
295
|
|
|
258
|
-
/// @dev
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
)
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
{
|
|
269
|
-
return
|
|
296
|
+
/// @dev next GIF release version to be released
|
|
297
|
+
function getNextVersion() external view returns (VersionPart) {
|
|
298
|
+
return _releaseRegistry.getNextVersion();
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/// @dev latest active GIF release version
|
|
302
|
+
function getLatestVersion() external view returns (VersionPart) {
|
|
303
|
+
return _releaseRegistry.getLatestVersion();
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
|
|
307
|
+
return _releaseRegistry.getReleaseInfo(version);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
function chainIds() public view returns (uint256) {
|
|
311
|
+
return _chainId.length;
|
|
270
312
|
}
|
|
271
313
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
return _chainNft.totalSupply();
|
|
314
|
+
function getChainId(uint256 idx) public view returns (uint256) {
|
|
315
|
+
return _chainId[idx];
|
|
276
316
|
}
|
|
277
317
|
|
|
278
|
-
function
|
|
318
|
+
function getRegistryNftId(uint256 chainId) public view returns (NftId nftId) {
|
|
319
|
+
return _registryNftIdByChainId[chainId];
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
function getObjectCount() external view returns (uint256) {
|
|
323
|
+
return CHAIN_NFT.totalSupply();
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
function getNftId() external view returns (NftId nftId) {
|
|
327
|
+
return REGISTRY_NFT_ID;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
function getProtocolNftId() external view returns (NftId nftId) {
|
|
331
|
+
return PROTOCOL_NFT_ID;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
function getNftIdForAddress(address object) external view returns (NftId id) {
|
|
279
335
|
return _nftIdByAddress[object];
|
|
280
336
|
}
|
|
281
337
|
|
|
282
|
-
function ownerOf(NftId nftId) public view
|
|
283
|
-
return
|
|
338
|
+
function ownerOf(NftId nftId) public view returns (address) {
|
|
339
|
+
return CHAIN_NFT.ownerOf(nftId.toInt());
|
|
284
340
|
}
|
|
285
341
|
|
|
286
342
|
function ownerOf(address contractAddress) public view returns (address) {
|
|
287
|
-
|
|
288
|
-
return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
|
343
|
+
return CHAIN_NFT.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
|
289
344
|
}
|
|
290
345
|
|
|
291
|
-
function getObjectInfo(NftId nftId) external view
|
|
346
|
+
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
|
292
347
|
return _info[nftId];
|
|
293
348
|
}
|
|
294
349
|
|
|
295
|
-
function getObjectInfo(address object) external view
|
|
296
|
-
|
|
350
|
+
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
|
297
351
|
return _info[_nftIdByAddress[object]];
|
|
298
352
|
}
|
|
299
353
|
|
|
300
|
-
function isRegistered(NftId nftId) public view
|
|
354
|
+
function isRegistered(NftId nftId) public view returns (bool) {
|
|
301
355
|
return _info[nftId].objectType.gtz();
|
|
302
356
|
}
|
|
303
357
|
|
|
304
|
-
function isRegistered(address object) external view
|
|
358
|
+
function isRegistered(address object) external view returns (bool) {
|
|
305
359
|
return _nftIdByAddress[object].gtz();
|
|
306
360
|
}
|
|
307
361
|
|
|
308
|
-
function
|
|
309
|
-
return
|
|
362
|
+
function isRegisteredService(address object) external view returns (bool) {
|
|
363
|
+
return _info[_nftIdByAddress[object]].objectType == SERVICE();
|
|
310
364
|
}
|
|
311
365
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
VersionPart majorVersion
|
|
316
|
-
) external view returns (address)
|
|
317
|
-
{
|
|
318
|
-
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
|
319
|
-
return _service[serviceNameHash][majorVersion];
|
|
366
|
+
function isRegisteredComponent(address object) external view returns (bool) {
|
|
367
|
+
NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
|
|
368
|
+
return _info[objectParentNftId].objectType == INSTANCE();
|
|
320
369
|
}
|
|
321
370
|
|
|
322
|
-
function
|
|
323
|
-
|
|
371
|
+
function isActiveRelease(VersionPart version) external view returns (bool)
|
|
372
|
+
{
|
|
373
|
+
return _releaseRegistry.isActiveRelease(version);
|
|
324
374
|
}
|
|
325
375
|
|
|
326
|
-
function
|
|
327
|
-
return
|
|
376
|
+
function getStakingAddress() external view returns (address staking) {
|
|
377
|
+
//return getObjectInfo(_stakingNftId).objectAddress;
|
|
378
|
+
//return _info[_stakingNftId].objectAddress;
|
|
379
|
+
return _stakingAddress;
|
|
328
380
|
}
|
|
329
381
|
|
|
330
|
-
|
|
382
|
+
function getTokenRegistryAddress() external view returns (address tokenRegistry) {
|
|
383
|
+
return _tokenRegistryAddress;
|
|
384
|
+
}
|
|
331
385
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
386
|
+
function getServiceAddress(
|
|
387
|
+
ObjectType serviceDomain,
|
|
388
|
+
VersionPart releaseVersion
|
|
389
|
+
) external view returns (address service)
|
|
335
390
|
{
|
|
336
|
-
|
|
337
|
-
|
|
391
|
+
service = _service[releaseVersion][serviceDomain];
|
|
392
|
+
}
|
|
338
393
|
|
|
339
|
-
|
|
394
|
+
function getReleaseRegistryAddress() external view returns (address) {
|
|
395
|
+
return address(_releaseRegistry);
|
|
396
|
+
}
|
|
340
397
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
zeroNftId(), // parent
|
|
344
|
-
PROTOCOL(),
|
|
345
|
-
false, // isInterceptor
|
|
346
|
-
address(0), // objectAddress
|
|
347
|
-
NFT_LOCK_ADDRESS,// initialOwner
|
|
348
|
-
""
|
|
349
|
-
);
|
|
398
|
+
function getChainNftAddress() external view override returns (address) {
|
|
399
|
+
return address(CHAIN_NFT);
|
|
350
400
|
}
|
|
351
401
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
internal
|
|
356
|
-
{
|
|
357
|
-
uint256 registryId = _chainNftInternal.calculateTokenId(2);
|
|
358
|
-
NftId registryNftId = toNftId(registryId);
|
|
402
|
+
function getRegistryAdminAddress() external view returns (address) {
|
|
403
|
+
return address(ADMIN);
|
|
404
|
+
}
|
|
359
405
|
|
|
360
|
-
|
|
406
|
+
function getAuthority() external view returns (address) {
|
|
407
|
+
return ADMIN.authority();
|
|
408
|
+
}
|
|
361
409
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
parentNftId = toNftId(_chainNftInternal.GLOBAL_REGISTRY_ID());
|
|
366
|
-
}
|
|
367
|
-
else
|
|
368
|
-
{// we are global registry
|
|
369
|
-
parentNftId = toNftId(_chainNftInternal.PROTOCOL_NFT_ID());
|
|
370
|
-
}
|
|
410
|
+
function getOwner() public view returns (address owner) {
|
|
411
|
+
return ownerOf(address(this));
|
|
412
|
+
}
|
|
371
413
|
|
|
372
|
-
|
|
414
|
+
// IERC165
|
|
373
415
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
registryOwner,
|
|
381
|
-
""
|
|
382
|
-
);
|
|
383
|
-
_nftIdByAddress[address(this)] = registryNftId;
|
|
384
|
-
_registryNftId = registryNftId;
|
|
416
|
+
function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
|
|
417
|
+
if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
|
|
418
|
+
return true;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
return false;
|
|
385
422
|
}
|
|
386
423
|
|
|
424
|
+
// Internals
|
|
387
425
|
|
|
388
|
-
/// @dev
|
|
389
|
-
function
|
|
426
|
+
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
|
427
|
+
function _register(ObjectInfo memory info)
|
|
390
428
|
internal
|
|
429
|
+
returns(NftId nftId)
|
|
391
430
|
{
|
|
392
|
-
|
|
431
|
+
ObjectType objectType = info.objectType; // do not care here, never PROTOCOL(), REGISTRY()
|
|
432
|
+
bool isInterceptor = info.isInterceptor;
|
|
433
|
+
address objectAddress = info.objectAddress; // do not care here, can be 0
|
|
434
|
+
address owner = info.initialOwner; // do not care here, can be 0, can be equal info.objectAddress
|
|
393
435
|
|
|
394
|
-
|
|
436
|
+
NftId parentNftId = info.parentNftId; // do not care here, can not be 0
|
|
437
|
+
ObjectInfo memory parentInfo = _info[parentNftId];
|
|
438
|
+
address parentAddress = parentInfo.objectAddress; // can be 0
|
|
395
439
|
|
|
396
|
-
|
|
440
|
+
// parent is contract -> need to check? -> check before minting
|
|
441
|
+
// special case: staking: to protocol possible as well
|
|
442
|
+
// NO LONGER TRUE: special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
|
443
|
+
// special case: when parentNftId == CHAIN_NFT.mint(), check for zero parent address before mint
|
|
444
|
+
// special case: when parentNftId == CHAIN_NFT.mint() && objectAddress == initialOwner
|
|
445
|
+
// Parent can have 0 address in case of STAKE for PROTOCOL / CUSTOM_TYPE for POLICY
|
|
446
|
+
// But it MUST be registered -> parentType != 0 && parentNftId != 0
|
|
447
|
+
/*if(objectType != STAKE()) {
|
|
448
|
+
if(parentAddress == address(0)) {
|
|
449
|
+
revert ErrorRegistryParentAddressZero();
|
|
450
|
+
}
|
|
451
|
+
}*/
|
|
452
|
+
|
|
453
|
+
// global registry is never parent when not on mainnet
|
|
454
|
+
if(block.chainid != 1) {
|
|
455
|
+
if(parentNftId == GLOBAL_REGISTRY_NFT_ID) {
|
|
456
|
+
revert ErrorRegistryGlobalRegistryAsParent(objectAddress, objectType);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
397
459
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
NFT_LOCK_ADDRESS, // initialOwner
|
|
405
|
-
"" // data
|
|
406
|
-
);
|
|
407
|
-
}
|
|
460
|
+
address interceptorAddress = _getInterceptor(
|
|
461
|
+
isInterceptor,
|
|
462
|
+
objectType,
|
|
463
|
+
objectAddress,
|
|
464
|
+
parentInfo.isInterceptor,
|
|
465
|
+
parentAddress);
|
|
408
466
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
uint256 serviceId = _chainNftInternal.calculateTokenId(REGISTRY_SERVICE_TOKEN_SEQUENCE_ID);
|
|
413
|
-
NftId serviceNftId = toNftId(serviceId);
|
|
467
|
+
uint256 tokenId = CHAIN_NFT.getNextTokenId();
|
|
468
|
+
nftId = NftIdLib.toNftId(tokenId);
|
|
469
|
+
info.nftId = nftId;
|
|
414
470
|
|
|
415
|
-
|
|
471
|
+
_info[nftId] = info;
|
|
472
|
+
_setAddressForNftId(nftId, objectAddress);
|
|
416
473
|
|
|
417
|
-
|
|
418
|
-
serviceNftId,
|
|
419
|
-
_registryNftId,
|
|
420
|
-
SERVICE(),
|
|
421
|
-
false, // isInterceptor
|
|
422
|
-
msg.sender, // service deploys registry
|
|
423
|
-
registryOwner, // initialOwner,
|
|
424
|
-
""
|
|
425
|
-
);
|
|
474
|
+
emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
|
|
426
475
|
|
|
427
|
-
|
|
476
|
+
// calls nft receiver(1) and interceptor(2)
|
|
477
|
+
uint256 mintedTokenId = CHAIN_NFT.mint(
|
|
478
|
+
owner,
|
|
479
|
+
interceptorAddress,
|
|
480
|
+
EMPTY_URI);
|
|
428
481
|
|
|
429
|
-
|
|
430
|
-
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
|
431
|
-
_service[serviceNameHash][VersionLib.toVersionPart(MAJOR_VERSION_MIN)] = msg.sender;
|
|
432
|
-
_string[serviceNftId] = serviceName;
|
|
433
|
-
_serviceNftId = serviceNftId;
|
|
482
|
+
assert(mintedTokenId == tokenId);
|
|
434
483
|
}
|
|
435
484
|
|
|
436
485
|
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
|
486
|
+
/// special case: STAKES (parent may be any type) -> no intercept call
|
|
487
|
+
/// default case:
|
|
437
488
|
function _getInterceptor(
|
|
438
489
|
bool isInterceptor,
|
|
490
|
+
ObjectType objectType,
|
|
439
491
|
address objectAddress,
|
|
440
492
|
bool parentIsInterceptor,
|
|
441
493
|
address parentObjectAddress
|
|
442
494
|
)
|
|
443
495
|
internal
|
|
444
|
-
|
|
496
|
+
pure
|
|
445
497
|
returns (address interceptor)
|
|
446
498
|
{
|
|
499
|
+
// no intercepting calls for stakes
|
|
500
|
+
if (objectType == STAKE()) {
|
|
501
|
+
return address(0);
|
|
502
|
+
}
|
|
503
|
+
|
|
447
504
|
if (objectAddress == address(0)) {
|
|
448
505
|
if (parentIsInterceptor) {
|
|
449
506
|
return parentObjectAddress;
|
|
@@ -459,33 +516,187 @@ contract Registry is
|
|
|
459
516
|
return address(0);
|
|
460
517
|
}
|
|
461
518
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
519
|
+
// Internals called only in constructor
|
|
520
|
+
|
|
521
|
+
/// @dev protocol registration used to anchor the dip ecosystem relations
|
|
522
|
+
function _registerProtocol()
|
|
523
|
+
private
|
|
524
|
+
returns (NftId protocolNftId)
|
|
525
|
+
{
|
|
526
|
+
uint256 protocolId = CHAIN_NFT.PROTOCOL_NFT_ID();
|
|
527
|
+
protocolNftId = NftIdLib.toNftId(protocolId);
|
|
528
|
+
|
|
529
|
+
_registerForNft(
|
|
530
|
+
ObjectInfo({
|
|
531
|
+
nftId: protocolNftId,
|
|
532
|
+
parentNftId: NftIdLib.zero(),
|
|
533
|
+
objectType: PROTOCOL(),
|
|
534
|
+
isInterceptor: false,
|
|
535
|
+
objectAddress: address(0),
|
|
536
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
|
537
|
+
data: ""}),
|
|
538
|
+
true);
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
/// @dev register this registry
|
|
542
|
+
function _registerRegistry()
|
|
469
543
|
internal
|
|
544
|
+
virtual
|
|
545
|
+
returns (NftId registryNftId)
|
|
546
|
+
{
|
|
547
|
+
// initial assignment
|
|
548
|
+
registryNftId = GLOBAL_REGISTRY_NFT_ID;
|
|
549
|
+
|
|
550
|
+
// register global registry
|
|
551
|
+
_registerRegistryForNft(
|
|
552
|
+
1, // mainnet chain id
|
|
553
|
+
ObjectInfo({
|
|
554
|
+
nftId: GLOBAL_REGISTRY_NFT_ID,
|
|
555
|
+
parentNftId: PROTOCOL_NFT_ID,
|
|
556
|
+
objectType: REGISTRY(),
|
|
557
|
+
isInterceptor: false,
|
|
558
|
+
objectAddress: GLOBAL_REGISTRY_ADDRESS,
|
|
559
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
|
560
|
+
data: ""}),
|
|
561
|
+
block.chainid == 1);// update address lookup for global registry only on mainnet
|
|
562
|
+
|
|
563
|
+
// if not on mainnet: register this registry with global registry as parent
|
|
564
|
+
if (block.chainid != 1) {
|
|
565
|
+
|
|
566
|
+
// modify registry nft id to local registry when not on mainnet
|
|
567
|
+
registryNftId = NftIdLib.toNftId(
|
|
568
|
+
CHAIN_NFT.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID));
|
|
569
|
+
|
|
570
|
+
_registerRegistryForNft(
|
|
571
|
+
block.chainid,
|
|
572
|
+
ObjectInfo({
|
|
573
|
+
nftId: registryNftId,
|
|
574
|
+
parentNftId: GLOBAL_REGISTRY_NFT_ID,
|
|
575
|
+
objectType: REGISTRY(),
|
|
576
|
+
isInterceptor: false,
|
|
577
|
+
objectAddress: address(this),
|
|
578
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
|
579
|
+
data: ""}),
|
|
580
|
+
true);
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
/// @dev staking registration
|
|
585
|
+
function _registerRegistryForNft(
|
|
586
|
+
uint256 chainId,
|
|
587
|
+
ObjectInfo memory info,
|
|
588
|
+
bool updateAddressLookup
|
|
589
|
+
)
|
|
590
|
+
private
|
|
591
|
+
{
|
|
592
|
+
if (!_registryNftIdByChainId[chainId].eqz()) {
|
|
593
|
+
revert ErrorRegistryChainRegistryAlreadyRegistered(info.nftId, chainId);
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
// update registry lookup variables
|
|
597
|
+
_registryNftIdByChainId[chainId] = info.nftId;
|
|
598
|
+
_chainId.push(chainId);
|
|
599
|
+
|
|
600
|
+
// register the registry info
|
|
601
|
+
_registerForNft(
|
|
602
|
+
info,
|
|
603
|
+
updateAddressLookup);
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
/// @dev staking registration
|
|
607
|
+
function _registerStaking()
|
|
608
|
+
private
|
|
609
|
+
returns (NftId stakingNftId)
|
|
470
610
|
{
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
611
|
+
address stakingOwner = IRegisterable(_stakingAddress).getOwner();
|
|
612
|
+
uint256 stakingId = CHAIN_NFT.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
|
613
|
+
stakingNftId = NftIdLib.toNftId(stakingId);
|
|
614
|
+
|
|
615
|
+
_registerForNft(
|
|
616
|
+
ObjectInfo({
|
|
617
|
+
nftId: stakingNftId,
|
|
618
|
+
parentNftId: REGISTRY_NFT_ID,
|
|
619
|
+
objectType: STAKING(),
|
|
620
|
+
isInterceptor: false,
|
|
621
|
+
objectAddress: _stakingAddress,
|
|
622
|
+
initialOwner: stakingOwner,
|
|
623
|
+
data: ""}),
|
|
624
|
+
true);
|
|
625
|
+
}
|
|
474
626
|
|
|
475
|
-
|
|
476
|
-
|
|
627
|
+
/// @dev Register the provided object info for the specified NFT ID.
|
|
628
|
+
function _registerForNft(
|
|
629
|
+
ObjectInfo memory info,
|
|
630
|
+
bool updateAddressLookup
|
|
631
|
+
)
|
|
632
|
+
internal
|
|
633
|
+
{
|
|
634
|
+
_info[info.nftId] = info;
|
|
477
635
|
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
_isValidContractCombination[ORACLE()][INSTANCE()] = true;
|
|
482
|
-
_isValidContractCombination[POOL()][INSTANCE()] = true;
|
|
636
|
+
if (updateAddressLookup) {
|
|
637
|
+
_setAddressForNftId(info.nftId, info.objectAddress);
|
|
638
|
+
}
|
|
483
639
|
|
|
484
|
-
//
|
|
485
|
-
|
|
640
|
+
// calls nft receiver
|
|
641
|
+
CHAIN_NFT.mint(info.initialOwner, info.nftId.toInt());
|
|
642
|
+
}
|
|
486
643
|
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
644
|
+
function _setAddressForNftId(NftId nftId, address objectAddress)
|
|
645
|
+
internal
|
|
646
|
+
{
|
|
647
|
+
if (objectAddress != address(0)) {
|
|
648
|
+
if (_nftIdByAddress[objectAddress].gtz()) {
|
|
649
|
+
revert ErrorRegistryContractAlreadyRegistered(objectAddress);
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
_nftIdByAddress[objectAddress] = nftId;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
function _getGlobalRegistryAddress(address globalRegistry) internal view returns (address) {
|
|
657
|
+
if (block.chainid == 1) {
|
|
658
|
+
return address(this);
|
|
659
|
+
} else {
|
|
660
|
+
return globalRegistry;
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
/// @dev defines which object - parent types relations are allowed to register
|
|
665
|
+
/// EACH object type MUST have only one parent type across ALL mappings
|
|
666
|
+
// the only EXCEPTION is STAKE, can have any number of parent types
|
|
667
|
+
function _setupValidCoreTypesAndCombinations()
|
|
668
|
+
private
|
|
669
|
+
{
|
|
670
|
+
_coreTypes[PROTOCOL()] = true;
|
|
671
|
+
_coreTypes[REGISTRY()] = true;
|
|
672
|
+
_coreTypes[SERVICE()] = true;
|
|
673
|
+
_coreTypes[INSTANCE()] = true;
|
|
674
|
+
_coreTypes[PRODUCT()] = true;
|
|
675
|
+
_coreTypes[POOL()] = true;
|
|
676
|
+
_coreTypes[DISTRIBUTION()] = true;
|
|
677
|
+
_coreTypes[DISTRIBUTOR()] = true;
|
|
678
|
+
_coreTypes[ORACLE()] = true;
|
|
679
|
+
_coreTypes[POLICY()] = true;
|
|
680
|
+
_coreTypes[BUNDLE()] = true;
|
|
681
|
+
_coreTypes[STAKING()] = true;
|
|
682
|
+
_coreTypes[STAKE()] = true;
|
|
683
|
+
|
|
684
|
+
// types combinations allowed to use with register() function ONLY
|
|
685
|
+
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
|
686
|
+
|
|
687
|
+
// components with instance parent
|
|
688
|
+
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
|
689
|
+
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
|
690
|
+
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
|
691
|
+
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
|
692
|
+
|
|
693
|
+
// objects with component parents
|
|
694
|
+
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
|
695
|
+
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
|
696
|
+
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|
|
697
|
+
|
|
698
|
+
// staking
|
|
699
|
+
_coreObjectCombinations[STAKE()][PROTOCOL()] = true;
|
|
700
|
+
_coreObjectCombinations[STAKE()][INSTANCE()] = true;
|
|
490
701
|
}
|
|
491
702
|
}
|