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