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