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