@etherisc/gif-next 0.0.2-eb7c077-523 → 0.0.2-eba4d8b-925
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 +46 -8
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +203 -77
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +142 -44
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +194 -377
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +140 -315
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +404 -289
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +147 -109
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +154 -139
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +255 -90
- 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 +1475 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2032 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -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 +1479 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2432 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +158 -57
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +194 -154
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +446 -143
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +997 -303
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +131 -266
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +102 -92
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +623 -496
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- 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 +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +139 -335
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +128 -126
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +115 -303
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +162 -387
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +330 -203
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +143 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +206 -29
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +143 -195
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +464 -312
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +128 -370
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +653 -532
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +163 -97
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +258 -396
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +415 -234
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +140 -114
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +250 -198
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +67 -8
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +459 -309
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +230 -312
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +256 -394
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +659 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +732 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +22 -3
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +343 -32
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +447 -117
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +319 -262
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +428 -235
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +579 -495
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +143 -107
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +89 -88
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +547 -224
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +117 -126
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
- 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 +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +104 -303
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -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 +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +134 -125
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +77 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -366
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +122 -95
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +122 -164
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +99 -85
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +153 -107
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +232 -133
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +321 -202
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +17 -10
- package/contracts/authorization/IAuthorization.sol +27 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +17 -25
- package/contracts/distribution/BasicDistributionAuthorization.sol +26 -9
- package/contracts/distribution/Distribution.sol +46 -40
- package/contracts/distribution/DistributionService.sol +163 -93
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +9 -5
- package/contracts/distribution/IDistributionService.sol +37 -21
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +90 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +437 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +21 -37
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +59 -66
- package/contracts/instance/InstanceAdmin.sol +256 -85
- package/contracts/instance/InstanceAuthorizationV3.sol +56 -45
- package/contracts/instance/InstanceReader.sol +275 -43
- package/contracts/instance/InstanceService.sol +125 -164
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +24 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +11 -4
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +14 -15
- package/contracts/instance/module/IDistribution.sol +2 -2
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +21 -22
- package/contracts/oracle/OracleService.sol +113 -81
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +38 -27
- package/contracts/pool/BasicPoolAuthorization.sol +36 -9
- package/contracts/pool/BundleService.sol +194 -83
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +31 -22
- package/contracts/pool/IPoolComponent.sol +20 -10
- package/contracts/pool/IPoolService.sol +90 -75
- package/contracts/pool/Pool.sol +145 -111
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +540 -219
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +72 -43
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +13 -44
- package/contracts/product/BasicProductAuthorization.sol +25 -9
- package/contracts/product/ClaimService.sol +367 -151
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +6 -2
- package/contracts/product/IClaimService.sol +44 -8
- package/contracts/product/IPolicyService.sol +53 -36
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +28 -5
- package/contracts/product/{IProductService.sol → IRiskService.sol} +6 -9
- package/contracts/product/PolicyService.sol +476 -269
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +66 -62
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +169 -92
- package/contracts/product/RiskService.sol +144 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +58 -27
- package/contracts/registry/IRegistry.sol +58 -25
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +341 -178
- package/contracts/registry/RegistryAdmin.sol +142 -235
- package/contracts/registry/RegistryService.sol +37 -48
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +244 -266
- package/contracts/registry/ServiceAuthorizationV3.sol +99 -52
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +74 -128
- package/contracts/shared/ComponentService.sol +453 -342
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +28 -17
- package/contracts/shared/ContractLib.sol +253 -0
- package/contracts/shared/IComponent.sol +8 -17
- package/contracts/shared/IComponentService.sol +49 -39
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -27
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +81 -35
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +31 -11
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +55 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +15 -32
- package/contracts/shared/TokenHandler.sol +309 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +7 -9
- package/contracts/staking/IStakingService.sol +8 -3
- package/contracts/staking/StakeManagerLib.sol +19 -26
- package/contracts/staking/Staking.sol +76 -60
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +13 -6
- package/contracts/staking/StakingService.sol +54 -35
- package/contracts/staking/StakingServiceManager.sol +6 -5
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +7 -0
- package/contracts/type/ObjectType.sol +52 -20
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +10 -5
- package/contracts/type/UFixed.sol +35 -122
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +4 -3
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.dbg.json +0 -4
- package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.json +0 -1503
- package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.dbg.json +0 -4
- package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.json +0 -1881
- package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.dbg.json +0 -4
- package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.json +0 -974
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.dbg.json +0 -4
- package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.json +0 -34
- package/artifacts/contracts/shared/MainnetId.sol/MainnetId.dbg.json +0 -4
- package/artifacts/contracts/shared/MainnetId.sol/MainnetId.json +0 -24
- package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.dbg.json +0 -4
- package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.json +0 -34
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/ProductService.sol +0 -99
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/registry/GlobalRegistry.sol +0 -95
- package/contracts/registry/GlobalRegistryAdmin.sol +0 -38
- package/contracts/registry/IGlobalRegistry.sol +0 -17
- package/contracts/shared/InitializableCustom.sol +0 -177
- package/contracts/shared/MainnetId.sol +0 -29
@@ -7,48 +7,72 @@ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManage
|
|
7
7
|
import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
8
8
|
|
9
9
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
10
|
-
import {VersionPart} from "../type/Version.sol";
|
11
|
-
import {ObjectType, PROTOCOL, REGISTRY, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
|
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";
|
12
12
|
|
13
13
|
import {ChainNft} from "./ChainNft.sol";
|
14
14
|
import {IRegistry} from "./IRegistry.sol";
|
15
|
+
import {IRelease} from "./IRelease.sol";
|
15
16
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
17
|
+
import {IStaking} from "../staking/IStaking.sol";
|
16
18
|
import {ReleaseRegistry} from "./ReleaseRegistry.sol";
|
17
19
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
18
20
|
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
19
|
-
import {SidenetContract} from "../shared/MainnetId.sol";
|
20
21
|
|
21
22
|
/// @dev IMPORTANT
|
22
23
|
// Each NFT minted by registry is accosiated with:
|
23
24
|
// 1) NFT owner
|
24
25
|
// 2) registred contract OR object stored in registered (parent) contract
|
25
|
-
//
|
26
|
+
// Five registration flows:
|
26
27
|
// 1) registerService() -> registers IService address by ReleaseRegistry (ReleaseRegistry is set at deployment time)
|
27
28
|
// 2) register() -> registers IRegisterable address by IService (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
|
28
29
|
// 3) -> registers object by IService (POLICY, BUNDLE, STAKE)
|
30
|
+
// 4) registerWithCustomType() -> registers IRegisterable address with custom type by IService
|
31
|
+
// 5) registerRegistry() -> registers IRegistry address (from different chain) by GifAdmin. Works ONLY on mainnet.
|
32
|
+
// Note: getters by address MUST not be used with this address (will return 0 or data related to different object or even revert)
|
29
33
|
|
30
|
-
/// @
|
31
|
-
///
|
34
|
+
/// @dev Chain Registry contract implementing IRegistry.
|
35
|
+
/// IRegistry for method details.
|
32
36
|
contract Registry is
|
33
|
-
SidenetContract,
|
34
37
|
Initializable,
|
35
38
|
AccessManaged,
|
36
39
|
IRegistry
|
37
40
|
{
|
38
|
-
|
41
|
+
/// @dev Protocol NFT ID
|
42
|
+
NftId public immutable PROTOCOL_NFT_ID;
|
39
43
|
|
40
|
-
|
44
|
+
/// @dev Gobal registry NFT ID
|
45
|
+
NftId public immutable GLOBAL_REGISTRY_NFT_ID;
|
46
|
+
|
47
|
+
/// @dev Gobal registry address on mainnet.
|
48
|
+
address public immutable GLOBAL_REGISTRY_ADDRESS;
|
49
|
+
|
50
|
+
/// @dev Registry NFT ID
|
51
|
+
NftId public immutable REGISTRY_NFT_ID;
|
52
|
+
|
53
|
+
/// @dev Deployer address that authorizes the initializer of this contract.
|
54
|
+
address public immutable DEPLOYER;
|
55
|
+
|
56
|
+
/// @dev Registry admin contract for this registry.
|
57
|
+
RegistryAdmin public immutable ADMIN;
|
58
|
+
|
59
|
+
/// @dev Chain NFT contract that keeps track of the ownership of all registered objects.
|
60
|
+
ChainNft public immutable CHAIN_NFT;
|
61
|
+
|
62
|
+
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
41
63
|
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
42
64
|
uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
|
43
65
|
string public constant EMPTY_URI = "";
|
44
66
|
|
45
|
-
/// @dev
|
46
|
-
|
47
|
-
|
67
|
+
/// @dev keep track of different registries on different chains
|
68
|
+
mapping(uint256 chainId => NftId registryNftId) private _registryNftIdByChainId;
|
69
|
+
uint256[] private _chainId;
|
48
70
|
|
49
|
-
|
50
|
-
mapping(
|
71
|
+
/// @dev keep track of object info and address reverse lookup
|
72
|
+
mapping(NftId nftId => ObjectInfo info) private _info;
|
73
|
+
mapping(address object => NftId nftId) private _nftIdByAddress;
|
51
74
|
|
75
|
+
/// @dev keep track of service addresses by version and domain
|
52
76
|
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
|
53
77
|
|
54
78
|
mapping(ObjectType objectType => bool) private _coreTypes;
|
@@ -59,54 +83,46 @@ contract Registry is
|
|
59
83
|
mapping(ObjectType objectType => mapping(
|
60
84
|
ObjectType parentType => bool)) private _coreObjectCombinations;
|
61
85
|
|
62
|
-
|
63
|
-
ChainNft public immutable _chainNft;
|
64
|
-
|
65
|
-
NftId public immutable _protocolNftId;
|
66
|
-
NftId public immutable _globalRegistryNftId;
|
67
|
-
NftId public immutable _registryNftId;
|
68
|
-
NftId public _stakingNftId;
|
86
|
+
NftId private _stakingNftId;
|
69
87
|
|
70
|
-
|
71
|
-
address
|
72
|
-
|
88
|
+
ReleaseRegistry private _releaseRegistry;
|
89
|
+
address private _tokenRegistryAddress;
|
90
|
+
address private _stakingAddress;
|
73
91
|
|
74
92
|
modifier onlyDeployer() {
|
75
|
-
if (msg.sender !=
|
93
|
+
if (msg.sender != DEPLOYER) {
|
76
94
|
revert ErrorRegistryCallerNotDeployer();
|
77
95
|
}
|
78
96
|
_;
|
79
97
|
}
|
80
98
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
}
|
85
|
-
_;
|
86
|
-
}
|
87
|
-
|
99
|
+
// TODO when create2 strategy is added to ignition:
|
100
|
+
// 1. move globalRegistry arg out from constructor into initialize()
|
101
|
+
// 2. add testRegistry_deployChainRegistryAtGlobalRegistryAddress
|
88
102
|
/// @dev Creates the registry contract and populates it with the protocol and registry objects.
|
89
103
|
/// Internally deploys the ChainNft contract.
|
90
|
-
// TODO consider storing global registry address as constant
|
91
104
|
constructor(RegistryAdmin admin, address globalRegistry)
|
92
105
|
AccessManaged(admin.authority())
|
93
106
|
{
|
94
|
-
|
95
|
-
|
107
|
+
DEPLOYER = msg.sender;
|
108
|
+
ADMIN = admin;
|
109
|
+
GLOBAL_REGISTRY_ADDRESS = _getGlobalRegistryAddress(globalRegistry);
|
110
|
+
|
96
111
|
// deploy NFT
|
97
|
-
|
112
|
+
CHAIN_NFT = new ChainNft(address(this));
|
113
|
+
GLOBAL_REGISTRY_NFT_ID = NftIdLib.toNftId(
|
114
|
+
CHAIN_NFT.GLOBAL_REGISTRY_ID());
|
98
115
|
|
99
116
|
// initial registry setup
|
100
|
-
|
101
|
-
|
102
|
-
_registryNftId = _registerRegistry();
|
117
|
+
PROTOCOL_NFT_ID = _registerProtocol();
|
118
|
+
REGISTRY_NFT_ID = _registerRegistry();
|
103
119
|
|
104
120
|
// set object types and object parent relations
|
105
121
|
_setupValidCoreTypesAndCombinations();
|
106
122
|
}
|
107
123
|
|
108
124
|
|
109
|
-
/// @dev Wires release registry and
|
125
|
+
/// @dev Wires release registry, token registry and staking contract to this registry.
|
110
126
|
/// MUST be called by release registry.
|
111
127
|
function initialize(
|
112
128
|
address releaseRegistry,
|
@@ -117,39 +133,62 @@ contract Registry is
|
|
117
133
|
initializer()
|
118
134
|
onlyDeployer()
|
119
135
|
{
|
136
|
+
// store links to supporting contracts
|
120
137
|
_releaseRegistry = ReleaseRegistry(releaseRegistry);
|
121
138
|
_tokenRegistryAddress = tokenRegistry;
|
122
139
|
_stakingAddress = staking;
|
123
140
|
|
141
|
+
// register staking contract
|
124
142
|
_stakingNftId = _registerStaking();
|
125
143
|
}
|
126
144
|
|
127
145
|
/// @inheritdoc IRegistry
|
128
|
-
function
|
146
|
+
function registerRegistry(
|
147
|
+
NftId nftId,
|
148
|
+
uint256 chainId,
|
149
|
+
address registryAddress
|
150
|
+
)
|
129
151
|
external
|
130
|
-
restricted
|
131
|
-
returns(NftId nftId)
|
152
|
+
restricted()
|
132
153
|
{
|
133
|
-
|
134
|
-
|
154
|
+
// registration of chain registries only allowed on mainnet
|
155
|
+
if (block.chainid != 1) {
|
156
|
+
revert ErrorRegistryNotOnMainnet(block.chainid);
|
157
|
+
}
|
135
158
|
|
136
|
-
//
|
137
|
-
if(
|
138
|
-
|
139
|
-
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
140
|
-
}
|
159
|
+
// registry chain id is not zero
|
160
|
+
if(chainId == 0) {
|
161
|
+
revert ErrorRegistryChainRegistryChainIdZero(nftId);
|
141
162
|
}
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
}
|
163
|
+
|
164
|
+
// registry address is not zero
|
165
|
+
if (registryAddress == address(0)) {
|
166
|
+
revert ErrorRegistryChainRegistryAddressZero(nftId, chainId);
|
147
167
|
}
|
148
168
|
|
149
|
-
|
150
|
-
|
169
|
+
// registry nft id matches registry chain id
|
170
|
+
uint256 expectedRegistryId = CHAIN_NFT.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID, chainId);
|
171
|
+
if (nftId != NftIdLib.toNftId(expectedRegistryId)) {
|
172
|
+
revert ErrorRegistryChainRegistryNftIdInvalid(nftId, chainId);
|
173
|
+
}
|
151
174
|
|
175
|
+
emit LogChainRegistryRegistration(nftId, chainId, registryAddress);
|
152
176
|
|
177
|
+
_registerRegistryForNft(
|
178
|
+
chainId,
|
179
|
+
ObjectInfo({
|
180
|
+
nftId: nftId,
|
181
|
+
parentNftId: REGISTRY_NFT_ID,
|
182
|
+
objectType: REGISTRY(),
|
183
|
+
isInterceptor: false,
|
184
|
+
objectAddress: registryAddress,
|
185
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
186
|
+
data: ""
|
187
|
+
}),
|
188
|
+
false); // do not update address lookup for objects on a different chain
|
189
|
+
}
|
190
|
+
|
191
|
+
// TODO limit service owner to registry admin?
|
153
192
|
/// @inheritdoc IRegistry
|
154
193
|
function registerService(
|
155
194
|
ObjectInfo memory info,
|
@@ -157,51 +196,81 @@ contract Registry is
|
|
157
196
|
ObjectType domain
|
158
197
|
)
|
159
198
|
external
|
160
|
-
|
199
|
+
restricted()
|
161
200
|
returns(NftId nftId)
|
162
201
|
{
|
163
|
-
//
|
202
|
+
// service address is defined
|
164
203
|
address service = info.objectAddress;
|
165
204
|
if(service == address(0)) {
|
166
205
|
revert ErrorRegistryServiceAddressZero();
|
167
206
|
}
|
168
207
|
|
169
|
-
//
|
208
|
+
// version is defined
|
170
209
|
if(version.eqz()) {
|
171
|
-
revert ErrorRegistryServiceVersionZero();
|
210
|
+
revert ErrorRegistryServiceVersionZero(service);
|
172
211
|
}
|
173
|
-
|
174
|
-
// check domain is defined
|
212
|
+
// service domain is defined
|
175
213
|
if(domain.eqz()) {
|
176
|
-
revert
|
177
|
-
}
|
178
|
-
|
179
|
-
// check contract has not already been registered
|
180
|
-
if(_service[version][domain] != address(0)) {
|
181
|
-
revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
|
214
|
+
revert ErrorRegistryServiceDomainZero(service, version);
|
182
215
|
}
|
183
216
|
|
184
|
-
//
|
217
|
+
// service has proper type
|
185
218
|
if(info.objectType != SERVICE()) {
|
186
219
|
revert ErrorRegistryNotService(service, info.objectType);
|
187
220
|
}
|
188
221
|
|
189
|
-
//
|
190
|
-
if(info.parentNftId !=
|
191
|
-
revert ErrorRegistryServiceParentNotRegistry(info.parentNftId);
|
192
|
-
}
|
222
|
+
// service parent has registry type
|
223
|
+
if(info.parentNftId != REGISTRY_NFT_ID) {
|
224
|
+
revert ErrorRegistryServiceParentNotRegistry(service, version, info.parentNftId);
|
225
|
+
}
|
226
|
+
|
227
|
+
// service has not already been registered
|
228
|
+
if(_service[version][domain] != address(0)) {
|
229
|
+
revert ErrorRegistryServiceDomainAlreadyRegistered(service, version, domain);
|
230
|
+
}
|
193
231
|
|
194
232
|
_service[version][domain] = service;
|
195
|
-
nftId = _register(info);
|
196
233
|
|
197
234
|
emit LogServiceRegistration(version, domain);
|
235
|
+
|
236
|
+
nftId = _register(info);
|
237
|
+
}
|
238
|
+
|
239
|
+
|
240
|
+
/// @inheritdoc IRegistry
|
241
|
+
function register(ObjectInfo memory info)
|
242
|
+
external
|
243
|
+
restricted()
|
244
|
+
returns(NftId nftId)
|
245
|
+
{
|
246
|
+
address objectAddress = info.objectAddress;
|
247
|
+
ObjectType objectType = info.objectType;
|
248
|
+
|
249
|
+
// this indidirectly enforces that the parent is registered
|
250
|
+
// parentType would be zero for a non-registered parent which is never a valid type combination
|
251
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
252
|
+
|
253
|
+
// check type combinations for core objects
|
254
|
+
if(objectAddress == address(0)) {
|
255
|
+
if(_coreObjectCombinations[objectType][parentType] == false) {
|
256
|
+
revert ErrorRegistryTypesCombinationInvalid(objectAddress, objectType, parentType);
|
257
|
+
}
|
258
|
+
}
|
259
|
+
// check type combinations for contract objects
|
260
|
+
else {
|
261
|
+
if(_coreContractCombinations[objectType][parentType] == false) {
|
262
|
+
revert ErrorRegistryTypesCombinationInvalid(objectAddress, objectType, parentType);
|
263
|
+
}
|
264
|
+
}
|
265
|
+
|
266
|
+
nftId = _register(info);
|
198
267
|
}
|
199
268
|
|
200
269
|
|
201
270
|
/// @inheritdoc IRegistry
|
202
271
|
function registerWithCustomType(ObjectInfo memory info)
|
203
272
|
external
|
204
|
-
restricted
|
273
|
+
restricted()
|
205
274
|
returns(NftId nftId)
|
206
275
|
{
|
207
276
|
ObjectType objectType = info.objectType;
|
@@ -212,10 +281,12 @@ contract Registry is
|
|
212
281
|
}
|
213
282
|
|
214
283
|
if(
|
284
|
+
objectType == ObjectTypeLib.zero() ||
|
285
|
+
parentType == ObjectTypeLib.zero() ||
|
215
286
|
parentType == PROTOCOL() ||
|
216
287
|
parentType == SERVICE()
|
217
288
|
) {
|
218
|
-
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
289
|
+
revert ErrorRegistryTypesCombinationInvalid(info.objectAddress, objectType, parentType);
|
219
290
|
}
|
220
291
|
|
221
292
|
nftId = _register(info);
|
@@ -224,7 +295,7 @@ contract Registry is
|
|
224
295
|
|
225
296
|
/// @dev earliest GIF major version
|
226
297
|
function getInitialVersion() external view returns (VersionPart) {
|
227
|
-
return _releaseRegistry.
|
298
|
+
return VersionPartLib.toVersionPart(_releaseRegistry.INITIAL_GIF_VERSION());
|
228
299
|
}
|
229
300
|
|
230
301
|
/// @dev next GIF release version to be released
|
@@ -237,38 +308,71 @@ contract Registry is
|
|
237
308
|
return _releaseRegistry.getLatestVersion();
|
238
309
|
}
|
239
310
|
|
240
|
-
function getReleaseInfo(VersionPart
|
241
|
-
return _releaseRegistry.getReleaseInfo(
|
311
|
+
function getReleaseInfo(VersionPart release) external view returns (IRelease.ReleaseInfo memory) {
|
312
|
+
return _releaseRegistry.getReleaseInfo(release);
|
313
|
+
}
|
314
|
+
|
315
|
+
function chainIds() public view returns (uint256) {
|
316
|
+
return _chainId.length;
|
317
|
+
}
|
318
|
+
|
319
|
+
function getChainId(uint256 idx) public view returns (uint256) {
|
320
|
+
return _chainId[idx];
|
321
|
+
}
|
322
|
+
|
323
|
+
function getRegistryNftId(uint256 chainId) public view returns (NftId nftId) {
|
324
|
+
return _registryNftIdByChainId[chainId];
|
242
325
|
}
|
243
326
|
|
244
327
|
function getObjectCount() external view returns (uint256) {
|
245
|
-
return
|
328
|
+
return CHAIN_NFT.totalSupply();
|
246
329
|
}
|
247
330
|
|
248
331
|
function getNftId() external view returns (NftId nftId) {
|
249
|
-
return
|
332
|
+
return REGISTRY_NFT_ID;
|
250
333
|
}
|
251
334
|
|
252
335
|
function getProtocolNftId() external view returns (NftId nftId) {
|
253
|
-
return
|
336
|
+
return PROTOCOL_NFT_ID;
|
254
337
|
}
|
255
338
|
|
256
|
-
function
|
339
|
+
function getNftIdForAddress(address object) external view returns (NftId id) {
|
257
340
|
return _nftIdByAddress[object];
|
258
341
|
}
|
259
342
|
|
260
343
|
function ownerOf(NftId nftId) public view returns (address) {
|
261
|
-
return
|
344
|
+
return CHAIN_NFT.ownerOf(nftId.toInt());
|
345
|
+
}
|
346
|
+
|
347
|
+
function isOwnerOf(NftId nftId, address expectedOwner) public view returns (bool) {
|
348
|
+
return CHAIN_NFT.ownerOf(nftId.toInt()) == expectedOwner;
|
262
349
|
}
|
263
350
|
|
264
351
|
function ownerOf(address contractAddress) public view returns (address) {
|
265
|
-
return
|
352
|
+
return CHAIN_NFT.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
266
353
|
}
|
267
354
|
|
268
355
|
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
269
356
|
return _info[nftId];
|
270
357
|
}
|
271
358
|
|
359
|
+
function getParentNftId(NftId nftId) external view returns (NftId parentNftId) {
|
360
|
+
return _info[nftId].parentNftId;
|
361
|
+
}
|
362
|
+
|
363
|
+
function isObjectType(address contractAddress, ObjectType expectedObjectType) external view returns (bool) {
|
364
|
+
NftId nftId = _nftIdByAddress[contractAddress];
|
365
|
+
return isObjectType(nftId, expectedObjectType);
|
366
|
+
}
|
367
|
+
|
368
|
+
function isObjectType(NftId nftId, ObjectType expectedObjectType) public view returns (bool) {
|
369
|
+
return _info[nftId].objectType == expectedObjectType;
|
370
|
+
}
|
371
|
+
|
372
|
+
function getObjectAddress(NftId nftId) external view returns (address) {
|
373
|
+
return _info[nftId].objectAddress;
|
374
|
+
}
|
375
|
+
|
272
376
|
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
273
377
|
return _info[_nftIdByAddress[object]];
|
274
378
|
}
|
@@ -296,8 +400,6 @@ contract Registry is
|
|
296
400
|
}
|
297
401
|
|
298
402
|
function getStakingAddress() external view returns (address staking) {
|
299
|
-
//return getObjectInfo(_stakingNftId).objectAddress;
|
300
|
-
//return _info[_stakingNftId].objectAddress;
|
301
403
|
return _stakingAddress;
|
302
404
|
}
|
303
405
|
|
@@ -318,15 +420,15 @@ contract Registry is
|
|
318
420
|
}
|
319
421
|
|
320
422
|
function getChainNftAddress() external view override returns (address) {
|
321
|
-
return address(
|
423
|
+
return address(CHAIN_NFT);
|
322
424
|
}
|
323
425
|
|
324
426
|
function getRegistryAdminAddress() external view returns (address) {
|
325
|
-
return address(
|
427
|
+
return address(ADMIN);
|
326
428
|
}
|
327
429
|
|
328
430
|
function getAuthority() external view returns (address) {
|
329
|
-
return
|
431
|
+
return ADMIN.authority();
|
330
432
|
}
|
331
433
|
|
332
434
|
function getOwner() public view returns (address owner) {
|
@@ -350,25 +452,33 @@ contract Registry is
|
|
350
452
|
internal
|
351
453
|
returns(NftId nftId)
|
352
454
|
{
|
353
|
-
ObjectType objectType = info.objectType;
|
455
|
+
ObjectType objectType = info.objectType; // do not care here, never PROTOCOL(), REGISTRY()
|
354
456
|
bool isInterceptor = info.isInterceptor;
|
355
|
-
address objectAddress = info.objectAddress;
|
356
|
-
address owner = info.initialOwner;
|
457
|
+
address objectAddress = info.objectAddress; // do not care here, can be 0
|
458
|
+
address owner = info.initialOwner; // do not care here, can be 0, can be equal info.objectAddress
|
357
459
|
|
358
|
-
NftId parentNftId = info.parentNftId;
|
460
|
+
NftId parentNftId = info.parentNftId; // do not care here, can not be 0
|
359
461
|
ObjectInfo memory parentInfo = _info[parentNftId];
|
360
|
-
|
361
|
-
address parentAddress = parentInfo.objectAddress;
|
462
|
+
address parentAddress = parentInfo.objectAddress; // can be 0
|
362
463
|
|
363
464
|
// parent is contract -> need to check? -> check before minting
|
364
465
|
// special case: staking: to protocol possible as well
|
365
|
-
// special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
366
|
-
// special case: when parentNftId ==
|
367
|
-
// special case: when parentNftId ==
|
368
|
-
|
466
|
+
// NO LONGER TRUE: special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
467
|
+
// special case: when parentNftId == CHAIN_NFT.mint(), check for zero parent address before mint
|
468
|
+
// special case: when parentNftId == CHAIN_NFT.mint() && objectAddress == initialOwner
|
469
|
+
// Parent can have 0 address in case of STAKE for PROTOCOL / CUSTOM_TYPE for POLICY
|
470
|
+
// But it MUST be registered -> parentType != 0 && parentNftId != 0
|
471
|
+
/*if(objectType != STAKE()) {
|
369
472
|
if(parentAddress == address(0)) {
|
370
473
|
revert ErrorRegistryParentAddressZero();
|
371
474
|
}
|
475
|
+
}*/
|
476
|
+
|
477
|
+
// global registry is never parent when not on mainnet
|
478
|
+
if(block.chainid != 1) {
|
479
|
+
if(parentNftId == GLOBAL_REGISTRY_NFT_ID) {
|
480
|
+
revert ErrorRegistryGlobalRegistryAsParent(objectAddress, objectType);
|
481
|
+
}
|
372
482
|
}
|
373
483
|
|
374
484
|
address interceptorAddress = _getInterceptor(
|
@@ -378,23 +488,17 @@ contract Registry is
|
|
378
488
|
parentInfo.isInterceptor,
|
379
489
|
parentAddress);
|
380
490
|
|
381
|
-
uint256 tokenId =
|
491
|
+
uint256 tokenId = CHAIN_NFT.getNextTokenId();
|
382
492
|
nftId = NftIdLib.toNftId(tokenId);
|
383
493
|
info.nftId = nftId;
|
384
|
-
_info[nftId] = info;
|
385
|
-
|
386
|
-
if(objectAddress > address(0)) {
|
387
|
-
if(_nftIdByAddress[objectAddress].gtz()) {
|
388
|
-
revert ErrorRegistryContractAlreadyRegistered(objectAddress);
|
389
|
-
}
|
390
494
|
|
391
|
-
|
392
|
-
|
495
|
+
_info[nftId] = info;
|
496
|
+
_setAddressForNftId(nftId, objectAddress);
|
393
497
|
|
394
498
|
emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
|
395
499
|
|
396
500
|
// calls nft receiver(1) and interceptor(2)
|
397
|
-
uint256 mintedTokenId =
|
501
|
+
uint256 mintedTokenId = CHAIN_NFT.mint(
|
398
502
|
owner,
|
399
503
|
interceptorAddress,
|
400
504
|
EMPTY_URI);
|
@@ -443,96 +547,153 @@ contract Registry is
|
|
443
547
|
private
|
444
548
|
returns (NftId protocolNftId)
|
445
549
|
{
|
446
|
-
uint256 protocolId =
|
550
|
+
uint256 protocolId = CHAIN_NFT.PROTOCOL_NFT_ID();
|
447
551
|
protocolNftId = NftIdLib.toNftId(protocolId);
|
448
552
|
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
_chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
|
460
|
-
}
|
461
|
-
|
462
|
-
/// @dev global registry registration
|
463
|
-
function _registerGlobalRegistry(address globalRegistry)
|
464
|
-
internal
|
465
|
-
returns (NftId globalRegistryNftId)
|
466
|
-
{
|
467
|
-
uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
|
468
|
-
globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
|
469
|
-
|
470
|
-
_info[globalRegistryNftId] = ObjectInfo({
|
471
|
-
nftId: globalRegistryNftId,
|
472
|
-
parentNftId: _protocolNftId,
|
473
|
-
objectType: REGISTRY(),
|
474
|
-
isInterceptor: false,
|
475
|
-
objectAddress: globalRegistry,
|
476
|
-
initialOwner: NFT_LOCK_ADDRESS,
|
477
|
-
data: ""
|
478
|
-
});
|
479
|
-
|
480
|
-
_nftIdByAddress[address(this)] = globalRegistryNftId;
|
481
|
-
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
553
|
+
_registerForNft(
|
554
|
+
ObjectInfo({
|
555
|
+
nftId: protocolNftId,
|
556
|
+
parentNftId: NftIdLib.zero(),
|
557
|
+
objectType: PROTOCOL(),
|
558
|
+
isInterceptor: false,
|
559
|
+
objectAddress: address(0),
|
560
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
561
|
+
data: ""}),
|
562
|
+
true);
|
482
563
|
}
|
483
564
|
|
484
|
-
/// @dev registry
|
565
|
+
/// @dev register this registry
|
485
566
|
function _registerRegistry()
|
486
567
|
internal
|
487
568
|
virtual
|
488
569
|
returns (NftId registryNftId)
|
489
570
|
{
|
490
|
-
|
491
|
-
registryNftId =
|
571
|
+
// initial assignment
|
572
|
+
registryNftId = GLOBAL_REGISTRY_NFT_ID;
|
573
|
+
|
574
|
+
// register global registry
|
575
|
+
_registerRegistryForNft(
|
576
|
+
1, // mainnet chain id
|
577
|
+
ObjectInfo({
|
578
|
+
nftId: GLOBAL_REGISTRY_NFT_ID,
|
579
|
+
parentNftId: PROTOCOL_NFT_ID,
|
580
|
+
objectType: REGISTRY(),
|
581
|
+
isInterceptor: false,
|
582
|
+
objectAddress: GLOBAL_REGISTRY_ADDRESS,
|
583
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
584
|
+
data: ""}),
|
585
|
+
block.chainid == 1);// update address lookup for global registry only on mainnet
|
586
|
+
|
587
|
+
// if not on mainnet: register this registry with global registry as parent
|
588
|
+
if (block.chainid != 1) {
|
589
|
+
|
590
|
+
// modify registry nft id to local registry when not on mainnet
|
591
|
+
registryNftId = NftIdLib.toNftId(
|
592
|
+
CHAIN_NFT.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID));
|
593
|
+
|
594
|
+
_registerRegistryForNft(
|
595
|
+
block.chainid,
|
596
|
+
ObjectInfo({
|
597
|
+
nftId: registryNftId,
|
598
|
+
parentNftId: GLOBAL_REGISTRY_NFT_ID,
|
599
|
+
objectType: REGISTRY(),
|
600
|
+
isInterceptor: false,
|
601
|
+
objectAddress: address(this),
|
602
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
603
|
+
data: ""}),
|
604
|
+
true);
|
605
|
+
}
|
606
|
+
}
|
607
|
+
|
608
|
+
/// @dev staking registration
|
609
|
+
function _registerRegistryForNft(
|
610
|
+
uint256 chainId,
|
611
|
+
ObjectInfo memory info,
|
612
|
+
bool updateAddressLookup
|
613
|
+
)
|
614
|
+
private
|
615
|
+
{
|
616
|
+
if (!_registryNftIdByChainId[chainId].eqz()) {
|
617
|
+
revert ErrorRegistryChainRegistryAlreadyRegistered(info.nftId, chainId);
|
618
|
+
}
|
492
619
|
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
objectType: REGISTRY(),
|
497
|
-
isInterceptor: false,
|
498
|
-
objectAddress: address(this),
|
499
|
-
initialOwner: NFT_LOCK_ADDRESS,
|
500
|
-
data: ""
|
501
|
-
});
|
620
|
+
// update registry lookup variables
|
621
|
+
_registryNftIdByChainId[chainId] = info.nftId;
|
622
|
+
_chainId.push(chainId);
|
502
623
|
|
503
|
-
|
504
|
-
|
624
|
+
// register the registry info
|
625
|
+
_registerForNft(
|
626
|
+
info,
|
627
|
+
updateAddressLookup);
|
505
628
|
}
|
506
629
|
|
507
630
|
/// @dev staking registration
|
508
631
|
function _registerStaking()
|
509
632
|
private
|
510
|
-
onlyInitializing()
|
511
633
|
returns (NftId stakingNftId)
|
512
634
|
{
|
513
635
|
address stakingOwner = IRegisterable(_stakingAddress).getOwner();
|
514
|
-
uint256 stakingId =
|
636
|
+
uint256 stakingId = CHAIN_NFT.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
515
637
|
stakingNftId = NftIdLib.toNftId(stakingId);
|
516
638
|
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
639
|
+
_registerForNft(
|
640
|
+
ObjectInfo({
|
641
|
+
nftId: stakingNftId,
|
642
|
+
parentNftId: REGISTRY_NFT_ID,
|
643
|
+
objectType: STAKING(),
|
644
|
+
isInterceptor: false,
|
645
|
+
objectAddress: _stakingAddress,
|
646
|
+
initialOwner: stakingOwner,
|
647
|
+
data: ""}),
|
648
|
+
true);
|
649
|
+
|
650
|
+
IStaking(_stakingAddress).initializeTokenHandler();
|
651
|
+
}
|
652
|
+
|
653
|
+
/// @dev Register the provided object info for the specified NFT ID.
|
654
|
+
function _registerForNft(
|
655
|
+
ObjectInfo memory info,
|
656
|
+
bool updateAddressLookup
|
657
|
+
)
|
658
|
+
internal
|
659
|
+
{
|
660
|
+
_info[info.nftId] = info;
|
661
|
+
|
662
|
+
if (updateAddressLookup) {
|
663
|
+
_setAddressForNftId(info.nftId, info.objectAddress);
|
664
|
+
}
|
665
|
+
|
666
|
+
// calls nft receiver
|
667
|
+
CHAIN_NFT.mint(info.initialOwner, info.nftId.toInt());
|
668
|
+
}
|
669
|
+
|
670
|
+
function _setAddressForNftId(NftId nftId, address objectAddress)
|
671
|
+
internal
|
672
|
+
{
|
673
|
+
if (objectAddress != address(0)) {
|
674
|
+
if (_nftIdByAddress[objectAddress].gtz()) {
|
675
|
+
revert ErrorRegistryContractAlreadyRegistered(objectAddress);
|
676
|
+
}
|
526
677
|
|
527
|
-
|
528
|
-
|
678
|
+
_nftIdByAddress[objectAddress] = nftId;
|
679
|
+
}
|
680
|
+
}
|
681
|
+
|
682
|
+
function _getGlobalRegistryAddress(address globalRegistry) internal view returns (address) {
|
683
|
+
if (block.chainid == 1) {
|
684
|
+
return address(this);
|
685
|
+
} else {
|
686
|
+
return globalRegistry;
|
687
|
+
}
|
529
688
|
}
|
530
689
|
|
531
690
|
/// @dev defines which object - parent types relations are allowed to register
|
532
691
|
/// EACH object type MUST have only one parent type across ALL mappings
|
692
|
+
// the only EXCEPTION is STAKE, can have any number of parent types
|
533
693
|
function _setupValidCoreTypesAndCombinations()
|
534
694
|
private
|
535
695
|
{
|
696
|
+
_coreTypes[PROTOCOL()] = true;
|
536
697
|
_coreTypes[REGISTRY()] = true;
|
537
698
|
_coreTypes[SERVICE()] = true;
|
538
699
|
_coreTypes[INSTANCE()] = true;
|
@@ -546,18 +707,20 @@ contract Registry is
|
|
546
707
|
_coreTypes[STAKING()] = true;
|
547
708
|
_coreTypes[STAKE()] = true;
|
548
709
|
|
549
|
-
|
710
|
+
// types combinations allowed to use with register() function ONLY
|
550
711
|
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
551
712
|
|
552
713
|
// components with instance parent
|
553
714
|
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
554
|
-
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
555
|
-
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
556
|
-
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
557
715
|
|
558
|
-
//
|
559
|
-
|
716
|
+
// components with product parent
|
717
|
+
_coreContractCombinations[DISTRIBUTION()][PRODUCT()] = true;
|
718
|
+
_coreContractCombinations[ORACLE()][PRODUCT()] = true;
|
719
|
+
_coreContractCombinations[POOL()][PRODUCT()] = true;
|
720
|
+
|
721
|
+
// objects with component parents
|
560
722
|
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
723
|
+
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
561
724
|
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|
562
725
|
|
563
726
|
// staking
|