@etherisc/gif-next 0.0.2-82c6d88-499 → 0.0.2-8311e70-020
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 +67 -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 +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1341 -0
- 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 +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1434 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +181 -278
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +48 -10
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1322 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +144 -544
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +368 -245
- 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 +201 -261
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +230 -49
- 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 +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +134 -78
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +116 -126
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +162 -215
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1354 -262
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +966 -328
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +135 -330
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +97 -111
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +651 -531
- 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 +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
- 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 +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +141 -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 +127 -398
- 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 +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +435 -202
- 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 +132 -379
- 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 +124 -662
- 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 +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +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 +260 -237
- 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 +258 -536
- 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 +340 -55
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +72 -152
- 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 +566 -112
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +396 -436
- 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 +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1325 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +101 -16
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +5 -5
- 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 +578 -492
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +141 -113
- 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 +550 -209
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +127 -123
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +45 -3
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
- 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 +112 -351
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +55 -88
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +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 +85 -105
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -366
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
- 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 +7 -12
- 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 +186 -164
- 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/AddressSet.sol/LibAddressSet.json +2 -2
- 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 +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
- 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 +55 -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 +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
- 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 +117 -14
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -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 +2 -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 +71 -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 +66 -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/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- 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/{shared → authorization}/AccessAdmin.sol +271 -371
- package/contracts/authorization/AccessManagerCloneable.sol +149 -0
- package/contracts/authorization/Authorization.sol +289 -0
- package/contracts/authorization/IAccess.sol +49 -0
- package/contracts/{shared → authorization}/IAccessAdmin.sol +31 -59
- package/contracts/authorization/IAuthorization.sol +60 -0
- package/contracts/{registry → authorization}/IServiceAuthorization.sol +11 -6
- package/contracts/{registry → authorization}/ServiceAuthorization.sol +45 -25
- package/contracts/distribution/BasicDistribution.sol +139 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +147 -121
- package/contracts/distribution/DistributionService.sol +160 -100
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +26 -40
- package/contracts/distribution/IDistributionService.sol +28 -9
- 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 +130 -0
- package/contracts/instance/IInstance.sol +23 -44
- package/contracts/instance/IInstanceService.sol +16 -41
- package/contracts/instance/Instance.sol +92 -120
- package/contracts/instance/InstanceAdmin.sol +250 -255
- package/contracts/instance/InstanceAuthorizationV3.sol +225 -0
- package/contracts/instance/InstanceReader.sol +238 -34
- package/contracts/instance/InstanceService.sol +145 -180
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +35 -6
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +113 -0
- package/contracts/instance/base/ObjectSet.sol +77 -0
- 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 +47 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +64 -53
- package/contracts/oracle/OracleService.sol +113 -81
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +175 -0
- package/contracts/pool/BasicPoolAuthorization.sol +68 -0
- package/contracts/pool/BundleService.sol +231 -102
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +33 -18
- package/contracts/pool/IPoolComponent.sol +20 -70
- package/contracts/pool/IPoolService.sol +53 -50
- package/contracts/pool/Pool.sol +208 -162
- package/contracts/pool/PoolService.sol +343 -180
- 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 +51 -0
- package/contracts/product/BasicProductAuthorization.sol +41 -0
- 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 +29 -9
- 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 +220 -134
- 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 +72 -32
- package/contracts/registry/IRegistryService.sol +3 -10
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +364 -220
- package/contracts/registry/RegistryAdmin.sol +228 -217
- 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 +32 -0
- package/contracts/registry/ReleaseRegistry.sol +511 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +102 -60
- package/contracts/registry/TokenRegistry.sol +8 -10
- package/contracts/shared/Component.sol +71 -126
- package/contracts/shared/ComponentService.sol +463 -380
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +29 -18
- package/contracts/shared/ContractLib.sol +252 -0
- package/contracts/shared/IComponent.sol +8 -17
- package/contracts/shared/IComponentService.sol +53 -39
- package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
- package/contracts/shared/IKeyValueStore.sol +1 -0
- package/contracts/shared/ILifecycle.sol +3 -2
- 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 +95 -42
- package/contracts/shared/KeyValueStore.sol +7 -3
- package/contracts/shared/Lifecycle.sol +30 -72
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- 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 -7
- package/contracts/staking/IStakingService.sol +12 -8
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +86 -73
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +10 -12
- package/contracts/staking/StakingReader.sol +23 -20
- package/contracts/staking/StakingService.sol +64 -36
- package/contracts/staking/StakingServiceManager.sol +4 -4
- package/contracts/staking/StakingStore.sol +15 -23
- 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 +73 -24
- 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 +57 -93
- 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 +40 -121
- package/contracts/type/Version.sol +18 -6
- package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +8 -5
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
- 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/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- 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/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- 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/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- 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/instance/BundleManager.sol +0 -126
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/instance/base/ObjectManager.sol +0 -80
- package/contracts/product/ProductService.sol +0 -124
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -527
- package/contracts/shared/AccessManagerCustom.sol +0 -741
- package/contracts/shared/AccessManagerExtended.sol +0 -481
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -3,42 +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,
|
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";
|
16
|
-
import {
|
17
|
+
import {IStaking} from "../staking/IStaking.sol";
|
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
|
-
|
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.
|
30
36
|
contract Registry is
|
31
|
-
|
37
|
+
Initializable,
|
38
|
+
AccessManaged,
|
32
39
|
IRegistry
|
33
40
|
{
|
34
|
-
|
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);
|
35
63
|
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
36
64
|
uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
|
37
65
|
string public constant EMPTY_URI = "";
|
38
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
|
39
72
|
mapping(NftId nftId => ObjectInfo info) private _info;
|
40
73
|
mapping(address object => NftId nftId) private _nftIdByAddress;
|
41
74
|
|
75
|
+
/// @dev keep track of service addresses by version and domain
|
42
76
|
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
|
43
77
|
|
44
78
|
mapping(ObjectType objectType => bool) private _coreTypes;
|
@@ -49,143 +83,194 @@ contract Registry is
|
|
49
83
|
mapping(ObjectType objectType => mapping(
|
50
84
|
ObjectType parentType => bool)) private _coreObjectCombinations;
|
51
85
|
|
52
|
-
|
53
|
-
ChainNft public immutable _chainNft;
|
54
|
-
|
55
|
-
NftId public immutable _protocolNftId;
|
56
|
-
NftId public immutable _registryNftId;
|
57
|
-
NftId public _stakingNftId;
|
58
|
-
|
59
|
-
address public _tokenRegistryAddress;
|
60
|
-
address public _stakingAddress;
|
61
|
-
ReleaseManager public _releaseManager;
|
62
|
-
|
63
|
-
// TODO
|
64
|
-
// 1). Registry and ReleaseManager must be treated as whole single entity.
|
65
|
-
// But current limitations of EVM does not allow it -> require it to be splitted
|
66
|
-
// 2). Keep onlyReleaseManager modifier
|
67
|
-
// 3). Delete onlyRegistryService in favor of restricted, introduce aditional "domain role", REGISTRY_SERVICE_ROLE
|
68
|
-
// 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
|
69
|
-
modifier onlyRegistryService() {
|
70
|
-
if(!_releaseManager.isActiveRegistryService(msg.sender)) {
|
71
|
-
revert ErrorRegistryCallerNotRegistryService();
|
72
|
-
}
|
73
|
-
_;
|
74
|
-
}
|
86
|
+
NftId private _stakingNftId;
|
75
87
|
|
88
|
+
ReleaseRegistry private _releaseRegistry;
|
89
|
+
address private _tokenRegistryAddress;
|
90
|
+
address private _stakingAddress;
|
76
91
|
|
77
|
-
modifier
|
78
|
-
if(msg.sender !=
|
79
|
-
revert
|
92
|
+
modifier onlyDeployer() {
|
93
|
+
if (msg.sender != DEPLOYER) {
|
94
|
+
revert ErrorRegistryCallerNotDeployer();
|
80
95
|
}
|
81
96
|
_;
|
82
97
|
}
|
83
98
|
|
84
|
-
|
85
|
-
constructor(
|
86
|
-
|
99
|
+
// TODO when create2 strategy is added to ignition:
|
100
|
+
// 1. move globalRegistry arg out from constructor into initialize()
|
101
|
+
// 2. add testRegistry_deployChainRegistryAtGlobalRegistryAddress
|
102
|
+
/// @dev Creates the registry contract and populates it with the protocol and registry objects.
|
103
|
+
/// Internally deploys the ChainNft contract.
|
104
|
+
constructor(RegistryAdmin admin, address globalRegistry)
|
105
|
+
AccessManaged(admin.authority())
|
87
106
|
{
|
88
|
-
|
107
|
+
DEPLOYER = msg.sender;
|
108
|
+
ADMIN = admin;
|
109
|
+
GLOBAL_REGISTRY_ADDRESS = _getGlobalRegistryAddress(globalRegistry);
|
110
|
+
|
89
111
|
// deploy NFT
|
90
|
-
|
112
|
+
CHAIN_NFT = new ChainNft(address(this));
|
113
|
+
GLOBAL_REGISTRY_NFT_ID = NftIdLib.toNftId(
|
114
|
+
CHAIN_NFT.GLOBAL_REGISTRY_ID());
|
91
115
|
|
92
116
|
// initial registry setup
|
93
|
-
|
94
|
-
|
117
|
+
PROTOCOL_NFT_ID = _registerProtocol();
|
118
|
+
REGISTRY_NFT_ID = _registerRegistry();
|
95
119
|
|
96
120
|
// set object types and object parent relations
|
97
121
|
_setupValidCoreTypesAndCombinations();
|
98
122
|
}
|
99
123
|
|
100
124
|
|
101
|
-
/// @dev
|
102
|
-
/// MUST be called by release
|
125
|
+
/// @dev Wires release registry, token registry and staking contract to this registry.
|
126
|
+
/// MUST be called by release registry.
|
103
127
|
function initialize(
|
104
|
-
address
|
128
|
+
address releaseRegistry,
|
105
129
|
address tokenRegistry,
|
106
130
|
address staking
|
107
131
|
)
|
108
132
|
external
|
109
133
|
initializer()
|
134
|
+
onlyDeployer()
|
110
135
|
{
|
111
|
-
|
136
|
+
// store links to supporting contracts
|
137
|
+
_releaseRegistry = ReleaseRegistry(releaseRegistry);
|
112
138
|
_tokenRegistryAddress = tokenRegistry;
|
113
139
|
_stakingAddress = staking;
|
114
140
|
|
141
|
+
// register staking contract
|
115
142
|
_stakingNftId = _registerStaking();
|
116
143
|
}
|
117
144
|
|
145
|
+
/// @inheritdoc IRegistry
|
146
|
+
function registerRegistry(
|
147
|
+
NftId nftId,
|
148
|
+
uint256 chainId,
|
149
|
+
address registryAddress
|
150
|
+
)
|
151
|
+
external
|
152
|
+
restricted()
|
153
|
+
{
|
154
|
+
// registration of chain registries only allowed on mainnet
|
155
|
+
if (block.chainid != 1) {
|
156
|
+
revert ErrorRegistryNotOnMainnet(block.chainid);
|
157
|
+
}
|
158
|
+
|
159
|
+
// registry chain id is not zero
|
160
|
+
if(chainId == 0) {
|
161
|
+
revert ErrorRegistryChainRegistryChainIdZero(nftId);
|
162
|
+
}
|
163
|
+
|
164
|
+
// registry address is not zero
|
165
|
+
if (registryAddress == address(0)) {
|
166
|
+
revert ErrorRegistryChainRegistryAddressZero(nftId, chainId);
|
167
|
+
}
|
168
|
+
|
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
|
+
}
|
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
|
+
}
|
190
|
+
|
191
|
+
// TODO limit service owner to registry admin?
|
192
|
+
/// @inheritdoc IRegistry
|
118
193
|
function registerService(
|
119
194
|
ObjectInfo memory info,
|
120
195
|
VersionPart version,
|
121
196
|
ObjectType domain
|
122
197
|
)
|
123
198
|
external
|
124
|
-
|
199
|
+
restricted()
|
125
200
|
returns(NftId nftId)
|
126
201
|
{
|
202
|
+
// service address is defined
|
127
203
|
address service = info.objectAddress;
|
128
|
-
/* must be guaranteed by release manager
|
129
204
|
if(service == address(0)) {
|
130
|
-
revert();
|
205
|
+
revert ErrorRegistryServiceAddressZero();
|
131
206
|
}
|
132
207
|
|
208
|
+
// version is defined
|
133
209
|
if(version.eqz()) {
|
134
|
-
revert();
|
210
|
+
revert ErrorRegistryServiceVersionZero(service);
|
211
|
+
}
|
212
|
+
// service domain is defined
|
213
|
+
if(domain.eqz()) {
|
214
|
+
revert ErrorRegistryServiceDomainZero(service, version);
|
135
215
|
}
|
136
216
|
|
217
|
+
// service has proper type
|
137
218
|
if(info.objectType != SERVICE()) {
|
138
|
-
revert();
|
219
|
+
revert ErrorRegistryNotService(service, info.objectType);
|
139
220
|
}
|
140
|
-
if(info.parentType != REGISTRY()) {
|
141
|
-
revert();
|
142
|
-
}
|
143
|
-
info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
|
144
|
-
*/
|
145
221
|
|
146
|
-
|
147
|
-
|
222
|
+
// service parent has registry type
|
223
|
+
if(info.parentNftId != REGISTRY_NFT_ID) {
|
224
|
+
revert ErrorRegistryServiceParentNotRegistry(service, version, info.parentNftId);
|
148
225
|
}
|
149
226
|
|
150
|
-
|
151
|
-
|
227
|
+
// service has not already been registered
|
228
|
+
if(_service[version][domain] != address(0)) {
|
229
|
+
revert ErrorRegistryServiceDomainAlreadyRegistered(service, version, domain);
|
152
230
|
}
|
153
|
-
|
154
|
-
_service[version][domain] = service;
|
155
231
|
|
156
|
-
|
232
|
+
_service[version][domain] = service;
|
157
233
|
|
158
234
|
emit LogServiceRegistration(version, domain);
|
235
|
+
|
236
|
+
nftId = _register(info);
|
159
237
|
}
|
160
238
|
|
239
|
+
|
240
|
+
/// @inheritdoc IRegistry
|
161
241
|
function register(ObjectInfo memory info)
|
162
242
|
external
|
163
|
-
|
243
|
+
restricted()
|
164
244
|
returns(NftId nftId)
|
165
245
|
{
|
246
|
+
address objectAddress = info.objectAddress;
|
166
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
|
167
251
|
ObjectType parentType = _info[info.parentNftId].objectType;
|
168
252
|
|
169
|
-
//
|
170
|
-
if(
|
171
|
-
{
|
253
|
+
// check type combinations for core objects
|
254
|
+
if(objectAddress == address(0)) {
|
172
255
|
if(_coreObjectCombinations[objectType][parentType] == false) {
|
173
|
-
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
256
|
+
revert ErrorRegistryTypesCombinationInvalid(objectAddress, objectType, parentType);
|
174
257
|
}
|
175
258
|
}
|
176
|
-
|
177
|
-
{
|
259
|
+
// check type combinations for contract objects
|
260
|
+
else {
|
178
261
|
if(_coreContractCombinations[objectType][parentType] == false) {
|
179
|
-
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
262
|
+
revert ErrorRegistryTypesCombinationInvalid(objectAddress, objectType, parentType);
|
180
263
|
}
|
181
264
|
}
|
182
265
|
|
183
266
|
nftId = _register(info);
|
184
267
|
}
|
185
268
|
|
269
|
+
|
270
|
+
/// @inheritdoc IRegistry
|
186
271
|
function registerWithCustomType(ObjectInfo memory info)
|
187
272
|
external
|
188
|
-
|
273
|
+
restricted()
|
189
274
|
returns(NftId nftId)
|
190
275
|
{
|
191
276
|
ObjectType objectType = info.objectType;
|
@@ -196,64 +281,94 @@ contract Registry is
|
|
196
281
|
}
|
197
282
|
|
198
283
|
if(
|
284
|
+
objectType == ObjectTypeLib.zero() ||
|
285
|
+
parentType == ObjectTypeLib.zero() ||
|
199
286
|
parentType == PROTOCOL() ||
|
200
|
-
parentType == REGISTRY() ||
|
201
287
|
parentType == SERVICE()
|
202
288
|
) {
|
203
|
-
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
289
|
+
revert ErrorRegistryTypesCombinationInvalid(info.objectAddress, objectType, parentType);
|
204
290
|
}
|
205
291
|
|
206
|
-
_register(info);
|
292
|
+
nftId = _register(info);
|
207
293
|
}
|
208
294
|
|
209
295
|
|
210
296
|
/// @dev earliest GIF major version
|
211
297
|
function getInitialVersion() external view returns (VersionPart) {
|
212
|
-
return
|
298
|
+
return VersionPartLib.toVersionPart(_releaseRegistry.INITIAL_GIF_VERSION());
|
213
299
|
}
|
214
300
|
|
215
301
|
/// @dev next GIF release version to be released
|
216
302
|
function getNextVersion() external view returns (VersionPart) {
|
217
|
-
return
|
303
|
+
return _releaseRegistry.getNextVersion();
|
218
304
|
}
|
219
305
|
|
220
306
|
/// @dev latest active GIF release version
|
221
307
|
function getLatestVersion() external view returns (VersionPart) {
|
222
|
-
return
|
308
|
+
return _releaseRegistry.getLatestVersion();
|
309
|
+
}
|
310
|
+
|
311
|
+
function getReleaseInfo(VersionPart release) external view returns (IRelease.ReleaseInfo memory) {
|
312
|
+
return _releaseRegistry.getReleaseInfo(release);
|
223
313
|
}
|
224
314
|
|
225
|
-
function
|
226
|
-
return
|
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];
|
227
325
|
}
|
228
326
|
|
229
327
|
function getObjectCount() external view returns (uint256) {
|
230
|
-
return
|
328
|
+
return CHAIN_NFT.totalSupply();
|
231
329
|
}
|
232
330
|
|
233
331
|
function getNftId() external view returns (NftId nftId) {
|
234
|
-
return
|
332
|
+
return REGISTRY_NFT_ID;
|
235
333
|
}
|
236
334
|
|
237
335
|
function getProtocolNftId() external view returns (NftId nftId) {
|
238
|
-
return
|
336
|
+
return PROTOCOL_NFT_ID;
|
239
337
|
}
|
240
338
|
|
241
|
-
function
|
339
|
+
function getNftIdForAddress(address object) external view returns (NftId id) {
|
242
340
|
return _nftIdByAddress[object];
|
243
341
|
}
|
244
342
|
|
245
343
|
function ownerOf(NftId nftId) public view returns (address) {
|
246
|
-
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;
|
247
349
|
}
|
248
350
|
|
249
351
|
function ownerOf(address contractAddress) public view returns (address) {
|
250
|
-
return
|
352
|
+
return CHAIN_NFT.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
251
353
|
}
|
252
354
|
|
253
355
|
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
254
356
|
return _info[nftId];
|
255
357
|
}
|
256
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
|
+
|
257
372
|
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
258
373
|
return _info[_nftIdByAddress[object]];
|
259
374
|
}
|
@@ -277,12 +392,10 @@ contract Registry is
|
|
277
392
|
|
278
393
|
function isActiveRelease(VersionPart version) external view returns (bool)
|
279
394
|
{
|
280
|
-
return
|
395
|
+
return _releaseRegistry.isActiveRelease(version);
|
281
396
|
}
|
282
397
|
|
283
398
|
function getStakingAddress() external view returns (address staking) {
|
284
|
-
//return getObjectInfo(_stakingNftId).objectAddress;
|
285
|
-
//return _info[_stakingNftId].objectAddress;
|
286
399
|
return _stakingAddress;
|
287
400
|
}
|
288
401
|
|
@@ -298,24 +411,20 @@ contract Registry is
|
|
298
411
|
service = _service[releaseVersion][serviceDomain];
|
299
412
|
}
|
300
413
|
|
301
|
-
function
|
302
|
-
return address(
|
303
|
-
}
|
304
|
-
|
305
|
-
function getReleaseManagerAddress() external view returns (address) {
|
306
|
-
return address(_releaseManager);
|
414
|
+
function getReleaseRegistryAddress() external view returns (address) {
|
415
|
+
return address(_releaseRegistry);
|
307
416
|
}
|
308
417
|
|
309
418
|
function getChainNftAddress() external view override returns (address) {
|
310
|
-
return address(
|
419
|
+
return address(CHAIN_NFT);
|
311
420
|
}
|
312
421
|
|
313
422
|
function getRegistryAdminAddress() external view returns (address) {
|
314
|
-
return address(
|
423
|
+
return address(ADMIN);
|
315
424
|
}
|
316
425
|
|
317
426
|
function getAuthority() external view returns (address) {
|
318
|
-
return
|
427
|
+
return ADMIN.authority();
|
319
428
|
}
|
320
429
|
|
321
430
|
function getOwner() public view returns (address owner) {
|
@@ -335,30 +444,37 @@ contract Registry is
|
|
335
444
|
// Internals
|
336
445
|
|
337
446
|
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
338
|
-
// TODO registration of precompile addresses
|
339
447
|
function _register(ObjectInfo memory info)
|
340
448
|
internal
|
341
449
|
returns(NftId nftId)
|
342
450
|
{
|
343
|
-
ObjectType objectType = info.objectType;
|
451
|
+
ObjectType objectType = info.objectType; // do not care here, never PROTOCOL(), REGISTRY()
|
344
452
|
bool isInterceptor = info.isInterceptor;
|
345
|
-
address objectAddress = info.objectAddress;
|
346
|
-
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
|
347
455
|
|
348
|
-
NftId parentNftId = info.parentNftId;
|
456
|
+
NftId parentNftId = info.parentNftId; // do not care here, can not be 0
|
349
457
|
ObjectInfo memory parentInfo = _info[parentNftId];
|
350
|
-
|
351
|
-
address parentAddress = parentInfo.objectAddress;
|
458
|
+
address parentAddress = parentInfo.objectAddress; // can be 0
|
352
459
|
|
353
460
|
// parent is contract -> need to check? -> check before minting
|
354
461
|
// special case: staking: to protocol possible as well
|
355
|
-
// special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
356
|
-
// special case: when parentNftId ==
|
357
|
-
// special case: when parentNftId ==
|
358
|
-
|
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()) {
|
359
468
|
if(parentAddress == address(0)) {
|
360
469
|
revert ErrorRegistryParentAddressZero();
|
361
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
|
+
}
|
362
478
|
}
|
363
479
|
|
364
480
|
address interceptorAddress = _getInterceptor(
|
@@ -368,23 +484,17 @@ contract Registry is
|
|
368
484
|
parentInfo.isInterceptor,
|
369
485
|
parentAddress);
|
370
486
|
|
371
|
-
uint256 tokenId =
|
487
|
+
uint256 tokenId = CHAIN_NFT.getNextTokenId();
|
372
488
|
nftId = NftIdLib.toNftId(tokenId);
|
373
489
|
info.nftId = nftId;
|
374
|
-
_info[nftId] = info;
|
375
490
|
|
376
|
-
|
377
|
-
|
378
|
-
revert ErrorRegistryContractAlreadyRegistered(objectAddress);
|
379
|
-
}
|
380
|
-
|
381
|
-
_nftIdByAddress[objectAddress] = nftId;
|
382
|
-
}
|
491
|
+
_info[nftId] = info;
|
492
|
+
_setAddressForNftId(nftId, objectAddress);
|
383
493
|
|
384
494
|
emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
|
385
495
|
|
386
496
|
// calls nft receiver(1) and interceptor(2)
|
387
|
-
uint256 mintedTokenId =
|
497
|
+
uint256 mintedTokenId = CHAIN_NFT.mint(
|
388
498
|
owner,
|
389
499
|
interceptorAddress,
|
390
500
|
EMPTY_URI);
|
@@ -433,111 +543,155 @@ contract Registry is
|
|
433
543
|
private
|
434
544
|
returns (NftId protocolNftId)
|
435
545
|
{
|
436
|
-
uint256 protocolId =
|
546
|
+
uint256 protocolId = CHAIN_NFT.PROTOCOL_NFT_ID();
|
437
547
|
protocolNftId = NftIdLib.toNftId(protocolId);
|
438
548
|
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
_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);
|
450
559
|
}
|
451
560
|
|
452
|
-
/// @dev registry
|
453
|
-
/// might also register the global registry when not on mainnet
|
561
|
+
/// @dev register this registry
|
454
562
|
function _registerRegistry()
|
455
|
-
|
563
|
+
internal
|
564
|
+
virtual
|
456
565
|
returns (NftId registryNftId)
|
457
566
|
{
|
458
|
-
|
459
|
-
registryNftId =
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
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);
|
466
601
|
}
|
467
|
-
|
468
|
-
|
469
|
-
|
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);
|
470
614
|
}
|
471
615
|
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
objectType: REGISTRY(),
|
476
|
-
isInterceptor: false,
|
477
|
-
objectAddress: address(this),
|
478
|
-
initialOwner: NFT_LOCK_ADDRESS,
|
479
|
-
data: ""
|
480
|
-
});
|
616
|
+
// update registry lookup variables
|
617
|
+
_registryNftIdByChainId[chainId] = info.nftId;
|
618
|
+
_chainId.push(chainId);
|
481
619
|
|
482
|
-
|
483
|
-
|
620
|
+
// register the registry info
|
621
|
+
_registerForNft(
|
622
|
+
info,
|
623
|
+
updateAddressLookup);
|
484
624
|
}
|
485
625
|
|
486
|
-
/// @dev
|
487
|
-
function _registerGlobalRegistry()
|
488
|
-
private
|
489
|
-
{
|
490
|
-
uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
|
491
|
-
NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
|
492
|
-
|
493
|
-
_info[globalRegistryNftId] = ObjectInfo({
|
494
|
-
nftId: globalRegistryNftId,
|
495
|
-
parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
|
496
|
-
objectType: REGISTRY(),
|
497
|
-
isInterceptor: false,
|
498
|
-
objectAddress: address(0),
|
499
|
-
initialOwner: NFT_LOCK_ADDRESS,
|
500
|
-
data: ""
|
501
|
-
});
|
502
|
-
|
503
|
-
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
504
|
-
}
|
505
|
-
// depends on _registryNftId and _stakingAddress
|
626
|
+
/// @dev staking registration
|
506
627
|
function _registerStaking()
|
507
628
|
private
|
508
629
|
returns (NftId stakingNftId)
|
509
630
|
{
|
510
631
|
address stakingOwner = IRegisterable(_stakingAddress).getOwner();
|
511
|
-
uint256 stakingId =
|
632
|
+
uint256 stakingId = CHAIN_NFT.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
512
633
|
stakingNftId = NftIdLib.toNftId(stakingId);
|
513
634
|
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
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);
|
523
645
|
|
524
|
-
|
525
|
-
|
526
|
-
|
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
|
+
}
|
673
|
+
|
674
|
+
_nftIdByAddress[objectAddress] = nftId;
|
675
|
+
}
|
676
|
+
}
|
677
|
+
|
678
|
+
function _getGlobalRegistryAddress(address globalRegistry) internal view returns (address) {
|
679
|
+
if (block.chainid == 1) {
|
680
|
+
return address(this);
|
681
|
+
} else {
|
682
|
+
return globalRegistry;
|
683
|
+
}
|
527
684
|
}
|
528
685
|
|
529
686
|
/// @dev defines which object - parent types relations are allowed to register
|
530
|
-
|
531
|
-
//
|
532
|
-
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
533
|
-
// 3) DO NOT use REGISTRY as object type
|
534
|
-
// 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
|
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
|
535
689
|
function _setupValidCoreTypesAndCombinations()
|
536
|
-
private
|
690
|
+
private
|
537
691
|
{
|
692
|
+
_coreTypes[PROTOCOL()] = true;
|
538
693
|
_coreTypes[REGISTRY()] = true;
|
539
694
|
_coreTypes[SERVICE()] = true;
|
540
|
-
_coreTypes[TOKEN()] = true;
|
541
695
|
_coreTypes[INSTANCE()] = true;
|
542
696
|
_coreTypes[PRODUCT()] = true;
|
543
697
|
_coreTypes[POOL()] = true;
|
@@ -549,30 +703,20 @@ contract Registry is
|
|
549
703
|
_coreTypes[STAKING()] = true;
|
550
704
|
_coreTypes[STAKE()] = true;
|
551
705
|
|
552
|
-
|
553
|
-
if(registryId == _chainNft.GLOBAL_REGISTRY_ID()) {
|
554
|
-
// we are global registry
|
555
|
-
// object is registry from different chain
|
556
|
-
// parent is global registry, this contract
|
557
|
-
_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
|
558
|
-
//_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
|
559
|
-
} else {
|
560
|
-
// we are not global registry
|
561
|
-
// object is local registry, this contract
|
562
|
-
// parent is global registry, object with 0 address or registry from mainnet???
|
563
|
-
}
|
564
|
-
_coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
|
565
|
-
_coreContractCombinations[TOKEN()][REGISTRY()] = true;
|
566
|
-
//_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
|
706
|
+
// types combinations allowed to use with register() function ONLY
|
567
707
|
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
568
708
|
|
709
|
+
// components with instance parent
|
569
710
|
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
570
|
-
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
571
|
-
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
572
|
-
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
573
711
|
|
574
|
-
|
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
|
575
718
|
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
719
|
+
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
576
720
|
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|
577
721
|
|
578
722
|
// staking
|