@etherisc/gif-next 0.0.2-f1f3b2c-994 → 0.0.2-f2273b3-211
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 +27 -6
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +163 -55
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +94 -14
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +8 -8
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +175 -216
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +113 -130
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +275 -171
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +111 -65
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -112
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +148 -72
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +158 -195
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +206 -27
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +336 -295
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +203 -28
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +215 -168
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +156 -153
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +282 -193
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +717 -292
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +158 -57
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +211 -82
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +386 -117
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +590 -204
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +129 -157
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -45
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +445 -375
- 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 +3 -3
- 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/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +132 -173
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +94 -106
- 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 +108 -125
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +151 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +95 -41
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -152
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +156 -326
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +79 -101
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -135
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +94 -145
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +192 -229
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +107 -163
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +330 -368
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +119 -69
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +130 -54
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +71 -41
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +228 -186
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +272 -173
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +100 -78
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +89 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +170 -19
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +139 -54
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +105 -52
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +211 -164
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +55 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +235 -170
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +102 -64
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +181 -116
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +89 -51
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +224 -182
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +112 -63
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +80 -38
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +98 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +142 -38
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +277 -213
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +181 -74
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -33
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +3 -3
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +337 -65
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +12 -12
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +105 -104
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +483 -485
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +99 -73
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -2
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
- 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 -86
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +446 -276
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +94 -106
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- 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/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 +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +107 -124
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +1 -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 +18 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -38
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +55 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
- 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 +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +113 -136
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -49
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +203 -206
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +3 -3
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +93 -51
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -57
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +181 -55
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +77 -39
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +130 -130
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- 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 +3 -3
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- 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 +62 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/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/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +216 -125
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +321 -205
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +14 -8
- package/contracts/authorization/IAuthorization.sol +27 -7
- package/contracts/authorization/IServiceAuthorization.sol +1 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -4
- package/contracts/distribution/BasicDistribution.sol +15 -12
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +41 -47
- package/contracts/distribution/DistributionService.sol +100 -78
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +19 -19
- package/contracts/examples/fire/FirePool.sol +25 -10
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +40 -13
- package/contracts/examples/fire/FireProductAuthorization.sol +3 -3
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +37 -7
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -23
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +17 -10
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +52 -34
- package/contracts/instance/InstanceAdmin.sol +249 -100
- package/contracts/instance/InstanceAuthorizationV3.sol +54 -45
- package/contracts/instance/InstanceReader.sol +174 -32
- package/contracts/instance/InstanceService.sol +85 -146
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +10 -7
- package/contracts/instance/module/IDistribution.sol +2 -1
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +5 -16
- package/contracts/oracle/OracleService.sol +107 -78
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +27 -9
- package/contracts/pool/BundleService.sol +88 -154
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +58 -64
- package/contracts/pool/Pool.sol +112 -120
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +436 -242
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +24 -16
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +10 -12
- package/contracts/product/BasicProductAuthorization.sol +24 -11
- package/contracts/product/ClaimService.sol +202 -151
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +26 -11
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +10 -1
- package/contracts/product/PolicyService.sol +248 -252
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +30 -26
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +106 -60
- package/contracts/product/RiskService.sol +74 -25
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +10 -11
- package/contracts/registry/IRegistry.sol +14 -15
- package/contracts/registry/IRegistryService.sol +6 -4
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +29 -6
- package/contracts/registry/RegistryAdmin.sol +132 -226
- package/contracts/registry/RegistryService.sol +40 -58
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +139 -124
- package/contracts/registry/ServiceAuthorizationV3.sol +97 -48
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +69 -118
- package/contracts/shared/ComponentService.sol +422 -371
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +27 -15
- package/contracts/shared/ContractLib.sol +224 -9
- package/contracts/shared/IComponent.sol +8 -20
- package/contracts/shared/IComponentService.sol +41 -37
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +68 -42
- package/contracts/shared/Lifecycle.sol +7 -7
- package/contracts/shared/NftOwnable.sol +26 -6
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +53 -19
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +9 -31
- package/contracts/shared/TokenHandler.sol +274 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +6 -10
- package/contracts/staking/IStakingService.sol +12 -4
- package/contracts/staking/StakeManagerLib.sol +69 -20
- package/contracts/staking/Staking.sol +73 -41
- package/contracts/staking/StakingReader.sol +1 -16
- package/contracts/staking/StakingService.sol +70 -24
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +48 -21
- package/contracts/type/RiskId.sol +23 -6
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +2 -1
- package/package.json +3 -3
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
| @@ -4,6 +4,7 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
         | 
| 5 5 | 
             
            import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
         | 
| 6 6 |  | 
| 7 | 
            +
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 7 8 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 8 9 | 
             
            import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
         | 
| 9 10 | 
             
            import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
         | 
| @@ -12,30 +13,37 @@ import {StateId, SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED} from " | |
| 12 13 | 
             
            import {VersionPart, VersionPartLib} from "../type/Version.sol";
         | 
| 13 14 |  | 
| 14 15 | 
             
            import {IService} from "../shared/IService.sol";
         | 
| 15 | 
            -
             | 
| 16 | 
            +
             | 
| 17 | 
            +
            import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
         | 
| 18 | 
            +
            import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
         | 
| 16 19 |  | 
| 17 20 | 
             
            import {IRegistry} from "./IRegistry.sol";
         | 
| 21 | 
            +
            import {IRelease} from "./IRelease.sol";
         | 
| 18 22 | 
             
            import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
         | 
| 19 23 | 
             
            import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
         | 
| 20 24 | 
             
            import {RegistryAdmin} from "./RegistryAdmin.sol";
         | 
| 21 25 | 
             
            import {Registry} from "./Registry.sol";
         | 
| 22 26 | 
             
            import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
         | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 27 | 
            +
            import {ReleaseAdmin} from "./ReleaseAdmin.sol";
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            /// @dev The ReleaseRegistry manages the lifecycle of major GIF releases and their services.
         | 
| 30 | 
            +
            /// The creation of a new GIF release is a multi-step process:
         | 
| 31 | 
            +
            /// 1. The creation of a new GIF release is initiated by the GIF admin.
         | 
| 32 | 
            +
            /// 2. A GIF manager then prepares the release by setting up the service authorization contract.
         | 
| 33 | 
            +
            /// 3. The GIF manager deploys and registers all related service contracts with the release registry.
         | 
| 34 | 
            +
            /// 4. The GIF admin verifies and activates the release.
         | 
| 35 | 
            +
            /// 3. The GIF admin may pause and resume a release.
         | 
| 26 36 | 
             
            contract ReleaseRegistry is 
         | 
| 27 37 | 
             
                AccessManaged,
         | 
| 28 38 | 
             
                ReleaseLifecycle, 
         | 
| 29 39 | 
             
                IRegistryLinked
         | 
| 30 40 | 
             
            {
         | 
| 31 | 
            -
                 | 
| 32 | 
            -
             | 
| 33 | 
            -
                uint256 public constant INITIAL_GIF_VERSION = 3;// first active version  
         | 
| 41 | 
            +
                uint256 public constant INITIAL_GIF_VERSION = 3;// first active release version  
         | 
| 34 42 |  | 
| 35 | 
            -
                event LogReleaseCreation(VersionPart  | 
| 36 | 
            -
                event LogReleaseActivation(VersionPart  | 
| 37 | 
            -
                event LogReleaseDisabled(VersionPart  | 
| 38 | 
            -
                event LogReleaseEnabled(VersionPart  | 
| 43 | 
            +
                event LogReleaseCreation(IAccessAdmin admin, VersionPart release, bytes32 salt); 
         | 
| 44 | 
            +
                event LogReleaseActivation(VersionPart release);
         | 
| 45 | 
            +
                event LogReleaseDisabled(VersionPart release);
         | 
| 46 | 
            +
                event LogReleaseEnabled(VersionPart release);
         | 
| 39 47 |  | 
| 40 48 | 
             
                // constructor
         | 
| 41 49 | 
             
                error ErrorReleaseRegistryNotRegistry(Registry registry);
         | 
| @@ -43,7 +51,7 @@ contract ReleaseRegistry is | |
| 43 51 | 
             
                // _verifyServiceAuthorization
         | 
| 44 52 | 
             
                error ErrorReleaseRegistryNotServiceAuth(address notAuth);
         | 
| 45 53 | 
             
                error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
         | 
| 46 | 
            -
                error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart  | 
| 54 | 
            +
                error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart release);
         | 
| 47 55 |  | 
| 48 56 | 
             
                // registerService
         | 
| 49 57 | 
             
                error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
         | 
| @@ -65,25 +73,24 @@ contract ReleaseRegistry is | |
| 65 73 | 
             
                error ErrorReleaseRegistryServiceSelfRegistration(IService service);
         | 
| 66 74 | 
             
                error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
         | 
| 67 75 |  | 
| 68 | 
            -
                Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
         | 
| 69 | 
            -
             | 
| 70 76 | 
             
                RegistryAdmin public immutable _admin;
         | 
| 71 77 | 
             
                Registry public immutable _registry;
         | 
| 72 78 |  | 
| 73 | 
            -
                mapping(VersionPart  | 
| 74 | 
            -
                 | 
| 79 | 
            +
                mapping(VersionPart release => IRelease.ReleaseInfo info) internal _releaseInfo;
         | 
| 80 | 
            +
                VersionPart [] internal _release; // array of all created releases    
         | 
| 81 | 
            +
                ReleaseAdmin internal _masterReleaseAdmin;
         | 
| 75 82 |  | 
| 76 | 
            -
                VersionPart internal _latest; // latest active  | 
| 77 | 
            -
                VersionPart internal _next; // version to create and activate 
         | 
| 83 | 
            +
                VersionPart internal _latest; // latest active release
         | 
| 84 | 
            +
                VersionPart internal _next; // release version to create and activate 
         | 
| 78 85 |  | 
| 79 | 
            -
                 | 
| 80 | 
            -
                uint256 internal  | 
| 86 | 
            +
                // counters per release
         | 
| 87 | 
            +
                uint256 internal _registeredServices = 0;
         | 
| 88 | 
            +
                uint256 internal _servicesToRegister = 0;
         | 
| 81 89 |  | 
| 82 90 | 
             
                constructor(Registry registry)
         | 
| 83 91 | 
             
                    AccessManaged(msg.sender)
         | 
| 84 92 | 
             
                {
         | 
| 85 | 
            -
                     | 
| 86 | 
            -
                    if(!_isRegistry(address(registry))) {
         | 
| 93 | 
            +
                    if (!ContractLib.isRegistry(address(registry))) {
         | 
| 87 94 | 
             
                        revert ErrorReleaseRegistryNotRegistry(registry);
         | 
| 88 95 | 
             
                    }
         | 
| 89 96 |  | 
| @@ -92,27 +99,31 @@ contract ReleaseRegistry is | |
| 92 99 | 
             
                    _registry = registry;
         | 
| 93 100 | 
             
                    _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
         | 
| 94 101 |  | 
| 102 | 
            +
                    _masterReleaseAdmin = new ReleaseAdmin();
         | 
| 103 | 
            +
             | 
| 95 104 | 
             
                    _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
         | 
| 96 105 | 
             
                }
         | 
| 97 106 |  | 
| 98 | 
            -
                /// @dev  | 
| 99 | 
            -
                ///  | 
| 107 | 
            +
                /// @dev Initiates the creation of a new GIF release by the GIF admin.
         | 
| 108 | 
            +
                /// Sets previous release into SKIPPED state if it was created but not activated.
         | 
| 109 | 
            +
                /// Sets the new release into state SCHEDULED.
         | 
| 100 110 | 
             
                function createNextRelease()
         | 
| 101 111 | 
             
                    external
         | 
| 102 112 | 
             
                    restricted() // GIF_ADMIN_ROLE
         | 
| 103 113 | 
             
                    returns(VersionPart)
         | 
| 104 114 | 
             
                {
         | 
| 105 | 
            -
                    VersionPart  | 
| 115 | 
            +
                    VersionPart release = _next;
         | 
| 106 116 |  | 
| 107 | 
            -
                    if(isValidTransition(RELEASE(), _releaseInfo[ | 
| 108 | 
            -
                        _releaseInfo[ | 
| 117 | 
            +
                    if(isValidTransition(RELEASE(), _releaseInfo[release].state, SKIPPED())) {
         | 
| 118 | 
            +
                        _releaseInfo[release].state = SKIPPED();
         | 
| 109 119 | 
             
                    }
         | 
| 110 120 |  | 
| 111 | 
            -
                     | 
| 121 | 
            +
                    release = VersionPartLib.toVersionPart(release.toInt() + 1);
         | 
| 122 | 
            +
                    _release.push(release);
         | 
| 112 123 |  | 
| 113 | 
            -
                    _next =  | 
| 114 | 
            -
                    _releaseInfo[ | 
| 115 | 
            -
                    _releaseInfo[ | 
| 124 | 
            +
                    _next = release;
         | 
| 125 | 
            +
                    _releaseInfo[release].version = release;
         | 
| 126 | 
            +
                    _releaseInfo[release].state = getInitialState(RELEASE());
         | 
| 116 127 | 
             
                    _servicesToRegister = 0;
         | 
| 117 128 | 
             
                    _registeredServices = 0;
         | 
| 118 129 |  | 
| @@ -126,7 +137,7 @@ contract ReleaseRegistry is | |
| 126 137 | 
             
                    external
         | 
| 127 138 | 
             
                    restricted() // GIF_MANAGER_ROLE
         | 
| 128 139 | 
             
                    returns(
         | 
| 129 | 
            -
                         | 
| 140 | 
            +
                        ReleaseAdmin releaseAdmin, 
         | 
| 130 141 | 
             
                        VersionPart releaseVersion, 
         | 
| 131 142 | 
             
                        bytes32 releaseSalt
         | 
| 132 143 | 
             
                    )
         | 
| @@ -136,10 +147,13 @@ contract ReleaseRegistry is | |
| 136 147 | 
             
                    // release can transition into DEPLOYING state
         | 
| 137 148 | 
             
                    checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
         | 
| 138 149 |  | 
| 150 | 
            +
                    // verify authorizations
         | 
| 139 151 | 
             
                    uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
         | 
| 140 152 |  | 
| 141 | 
            -
                     | 
| 153 | 
            +
                    // create and initialize release admin
         | 
| 154 | 
            +
                    releaseAdmin = _cloneNewReleaseAdmin(releaseVersion);
         | 
| 142 155 | 
             
                    releaseSalt = salt;
         | 
| 156 | 
            +
             | 
| 143 157 | 
             
                    // ensures unique salt
         | 
| 144 158 | 
             
                    // TODO CreateX have clones capability also
         | 
| 145 159 | 
             
                    // what would releaseSalt look like if used with CreateX in pemissioned mode?
         | 
| @@ -153,9 +167,9 @@ contract ReleaseRegistry is | |
| 153 167 | 
             
                    _releaseInfo[releaseVersion].salt = releaseSalt;
         | 
| 154 168 | 
             
                    // TODO allow for the same serviceAuthorization address to be used for multiple releases?
         | 
| 155 169 | 
             
                    _releaseInfo[releaseVersion].auth = serviceAuthorization;
         | 
| 156 | 
            -
                     | 
| 170 | 
            +
                    _releaseInfo[releaseVersion].releaseAdmin = address(releaseAdmin);
         | 
| 157 171 |  | 
| 158 | 
            -
                    emit LogReleaseCreation(releaseVersion, releaseSalt);
         | 
| 172 | 
            +
                    emit LogReleaseCreation(releaseAdmin, releaseVersion, releaseSalt);
         | 
| 159 173 | 
             
                }
         | 
| 160 174 |  | 
| 161 175 | 
             
                function registerService(IService service) 
         | 
| @@ -168,9 +182,9 @@ contract ReleaseRegistry is | |
| 168 182 | 
             
                    // release can transition to DEPLOYED state
         | 
| 169 183 | 
             
                    checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
         | 
| 170 184 |  | 
| 171 | 
            -
                    address releaseAuthority =  | 
| 172 | 
            -
                    IServiceAuthorization  | 
| 173 | 
            -
                    ObjectType expectedDomain =  | 
| 185 | 
            +
                    address releaseAuthority = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin).authority();
         | 
| 186 | 
            +
                    IServiceAuthorization releaseAuth = _releaseInfo[releaseVersion].auth;
         | 
| 187 | 
            +
                    ObjectType expectedDomain = releaseAuth.getServiceDomain(_registeredServices);
         | 
| 174 188 |  | 
| 175 189 | 
             
                    // service can work with release registry and release version
         | 
| 176 190 | 
             
                    (
         | 
| @@ -200,90 +214,82 @@ contract ReleaseRegistry is | |
| 200 214 | 
             
                    // revert ErrorReleaseRegistryServiceAddressMismatch()
         | 
| 201 215 |  | 
| 202 216 | 
             
                    // setup service authorization
         | 
| 203 | 
            -
                     | 
| 204 | 
            -
             | 
| 217 | 
            +
                    ReleaseAdmin releaseAdmin = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin);
         | 
| 218 | 
            +
                    releaseAdmin.setReleaseLocked(false);
         | 
| 219 | 
            +
                    releaseAdmin.authorizeService(
         | 
| 220 | 
            +
                        releaseAuth, 
         | 
| 205 221 | 
             
                        service,
         | 
| 206 222 | 
             
                        serviceDomain,
         | 
| 207 223 | 
             
                        releaseVersion);
         | 
| 224 | 
            +
                    releaseAdmin.setReleaseLocked(true); 
         | 
| 208 225 |  | 
| 209 226 | 
             
                    // register service with registry
         | 
| 210 227 | 
             
                    nftId = _registry.registerService(info, serviceVersion, serviceDomain);
         | 
| 211 228 | 
             
                    service.linkToRegisteredNftId();
         | 
| 212 229 | 
             
                }
         | 
| 230 | 
            +
             | 
| 231 | 
            +
             | 
| 213 232 | 
             
                // TODO return activated version
         | 
| 214 233 | 
             
                function activateNextRelease() 
         | 
| 215 234 | 
             
                    external 
         | 
| 216 235 | 
             
                    restricted // GIF_ADMIN_ROLE
         | 
| 217 236 | 
             
                {
         | 
| 218 | 
            -
                    VersionPart  | 
| 237 | 
            +
                    VersionPart release = _next;
         | 
| 219 238 |  | 
| 220 239 | 
             
                    // release can transition to ACTIVE state
         | 
| 221 | 
            -
                    checkTransition(_releaseInfo[ | 
| 240 | 
            +
                    checkTransition(_releaseInfo[release].state, RELEASE(), DEPLOYED(), ACTIVE());
         | 
| 222 241 |  | 
| 223 | 
            -
                    _latest =  | 
| 224 | 
            -
                     | 
| 225 | 
            -
                    _releaseInfo[ | 
| 226 | 
            -
                    _releaseInfo[ | 
| 242 | 
            +
                    _latest = release;
         | 
| 243 | 
            +
                    _releaseInfo[release].state = ACTIVE();
         | 
| 244 | 
            +
                    _releaseInfo[release].activatedAt = TimestampLib.blockTimestamp();
         | 
| 245 | 
            +
                    _releaseInfo[release].disabledAt = TimestampLib.max();
         | 
| 227 246 |  | 
| 228 247 | 
             
                    // grant special roles for registry/staking/pool services
         | 
| 229 248 | 
             
                    // this will enable access to core contracts functions
         | 
| 230 249 |  | 
| 231 250 | 
             
                    // registry service MUST be registered for each release
         | 
| 232 | 
            -
                    address service = _registry.getServiceAddress(REGISTRY(),  | 
| 251 | 
            +
                    address service = _registry.getServiceAddress(REGISTRY(), release);
         | 
| 233 252 | 
             
                    if(service == address(0)) {
         | 
| 234 | 
            -
                        revert ErrorReleaseRegistryRegistryServiceMissing( | 
| 253 | 
            +
                        revert ErrorReleaseRegistryRegistryServiceMissing(release);
         | 
| 235 254 | 
             
                    }
         | 
| 236 255 |  | 
| 237 256 | 
             
                    _admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
         | 
| 238 257 |  | 
| 239 | 
            -
                    service = _registry.getServiceAddress(STAKING(),  | 
| 258 | 
            +
                    service = _registry.getServiceAddress(STAKING(), release);
         | 
| 240 259 | 
             
                    if(service != address(0)) {
         | 
| 241 260 | 
             
                        _admin.grantServiceRoleForAllVersions(IService(service), STAKING());
         | 
| 242 261 | 
             
                    }
         | 
| 243 262 |  | 
| 244 | 
            -
                    service = _registry.getServiceAddress(POOL(),  | 
| 263 | 
            +
                    service = _registry.getServiceAddress(POOL(), release);
         | 
| 245 264 | 
             
                    if(service != address(0)) {
         | 
| 246 265 | 
             
                        _admin.grantServiceRoleForAllVersions(IService(service), POOL());
         | 
| 247 266 | 
             
                    }
         | 
| 248 267 |  | 
| 249 | 
            -
                     | 
| 250 | 
            -
                    // TODO test how many service can be locked in one transaction
         | 
| 251 | 
            -
                    // -> add to docs + each release must test for this -> add to release version tests (in test call with some gas limit?)
         | 
| 252 | 
            -
                    _setReleaseLocked(version, false);
         | 
| 268 | 
            +
                    _setReleaseLocked(release, false);
         | 
| 253 269 |  | 
| 254 | 
            -
                    emit LogReleaseActivation( | 
| 270 | 
            +
                    emit LogReleaseActivation(release);
         | 
| 255 271 | 
             
                }
         | 
| 256 272 |  | 
| 257 | 
            -
                /// @dev stop  | 
| 258 | 
            -
                function  | 
| 259 | 
            -
                     | 
| 260 | 
            -
                    restricted | 
| 273 | 
            +
                /// @dev stop/resume operations with restricted functions
         | 
| 274 | 
            +
                function setActive(VersionPart release, bool active) 
         | 
| 275 | 
            +
                    public
         | 
| 276 | 
            +
                    restricted
         | 
| 261 277 | 
             
                {
         | 
| 262 | 
            -
                     | 
| 263 | 
            -
             | 
| 264 | 
            -
             | 
| 265 | 
            -
             | 
| 266 | 
            -
             | 
| 267 | 
            -
             | 
| 268 | 
            -
             | 
| 269 | 
            -
             | 
| 270 | 
            -
             | 
| 271 | 
            -
             | 
| 272 | 
            -
             | 
| 273 | 
            -
             | 
| 274 | 
            -
             | 
| 275 | 
            -
                    external
         | 
| 276 | 
            -
                    restricted // GIF_ADMIN_ROLE
         | 
| 277 | 
            -
                {
         | 
| 278 | 
            -
                    // release can transition to ACTIVE state
         | 
| 279 | 
            -
                    checkTransition(_releaseInfo[version].state, RELEASE(), PAUSED(), ACTIVE());
         | 
| 280 | 
            -
                    
         | 
| 281 | 
            -
                    _releaseInfo[version].state = ACTIVE();
         | 
| 282 | 
            -
                    _releaseInfo[version].disabledAt = zeroTimestamp();
         | 
| 283 | 
            -
             | 
| 284 | 
            -
                    _setReleaseLocked(version, false);
         | 
| 278 | 
            +
                    StateId state = _releaseInfo[release].state;
         | 
| 279 | 
            +
             | 
| 280 | 
            +
                    if(active) {
         | 
| 281 | 
            +
                        checkTransition(state, RELEASE(), PAUSED(), ACTIVE());
         | 
| 282 | 
            +
                        _releaseInfo[release].state = ACTIVE();
         | 
| 283 | 
            +
                        _releaseInfo[release].disabledAt = TimestampLib.max();
         | 
| 284 | 
            +
                        emit LogReleaseEnabled(release);
         | 
| 285 | 
            +
                    } else {
         | 
| 286 | 
            +
                        checkTransition(state, RELEASE(), ACTIVE(), PAUSED());
         | 
| 287 | 
            +
                        _releaseInfo[release].state = PAUSED();
         | 
| 288 | 
            +
                        _releaseInfo[release].disabledAt = TimestampLib.blockTimestamp();
         | 
| 289 | 
            +
                        emit LogReleaseDisabled(release);
         | 
| 290 | 
            +
                    }
         | 
| 285 291 |  | 
| 286 | 
            -
                     | 
| 292 | 
            +
                    _setReleaseLocked(release, !active);
         | 
| 287 293 | 
             
                }
         | 
| 288 294 |  | 
| 289 295 | 
             
                //--- view functions ----------------------------------------------------//
         | 
| @@ -296,40 +302,51 @@ contract ReleaseRegistry is | |
| 296 302 | 
             
                    return Clones.predictDeterministicAddress(implementation, salt, deployer);
         | 
| 297 303 | 
             
                }
         | 
| 298 304 |  | 
| 299 | 
            -
                function isActiveRelease(VersionPart  | 
| 300 | 
            -
                    return _releaseInfo[ | 
| 305 | 
            +
                function isActiveRelease(VersionPart release) public view returns(bool) {
         | 
| 306 | 
            +
                    return _releaseInfo[release].state == ACTIVE();
         | 
| 301 307 | 
             
                }
         | 
| 302 308 |  | 
| 303 | 
            -
                function getReleaseInfo(VersionPart  | 
| 304 | 
            -
                    return _releaseInfo[ | 
| 309 | 
            +
                function getReleaseInfo(VersionPart release) external view returns(IRelease.ReleaseInfo memory) {
         | 
| 310 | 
            +
                    return _releaseInfo[release];
         | 
| 305 311 | 
             
                }
         | 
| 306 312 |  | 
| 313 | 
            +
                /// @dev Returns the number of created releases.
         | 
| 314 | 
            +
                /// Releases might be in another state than ACTIVE.
         | 
| 307 315 | 
             
                function releases() external view returns (uint) {
         | 
| 308 | 
            -
                    return  | 
| 316 | 
            +
                    return _release.length;
         | 
| 317 | 
            +
                }
         | 
| 318 | 
            +
             | 
| 319 | 
            +
                /// @dev Returns the n-th release version.
         | 
| 320 | 
            +
                /// Valid values for idx [0 .. releases() - 1]
         | 
| 321 | 
            +
                function getVersion(uint256 idx) external view returns (VersionPart release) {
         | 
| 322 | 
            +
                    // return _releases;
         | 
| 323 | 
            +
                    return _release[idx];
         | 
| 309 324 | 
             
                }
         | 
| 310 325 |  | 
| 311 326 | 
             
                function getNextVersion() public view returns(VersionPart) {
         | 
| 312 327 | 
             
                    return _next;
         | 
| 313 328 | 
             
                }
         | 
| 314 329 |  | 
| 330 | 
            +
                /// @dev Returns the latest activated relase version.
         | 
| 331 | 
            +
                /// There is no guarantee that the release is not currently paused.
         | 
| 315 332 | 
             
                function getLatestVersion() external view returns(VersionPart) {
         | 
| 316 333 | 
             
                    return _latest;
         | 
| 317 334 | 
             
                }
         | 
| 318 335 |  | 
| 319 | 
            -
                function getState(VersionPart  | 
| 320 | 
            -
                    return _releaseInfo[ | 
| 336 | 
            +
                function getState(VersionPart release) external view returns (StateId stateId) {
         | 
| 337 | 
            +
                    return _releaseInfo[release].state;
         | 
| 321 338 | 
             
                }
         | 
| 322 339 |  | 
| 323 340 | 
             
                function getRemainingServicesToRegister() external view returns (uint256 services) {
         | 
| 324 341 | 
             
                    return _servicesToRegister - _registeredServices;
         | 
| 325 342 | 
             
                }
         | 
| 326 343 |  | 
| 327 | 
            -
                function getServiceAuthorization(VersionPart  | 
| 344 | 
            +
                function getServiceAuthorization(VersionPart release)
         | 
| 328 345 | 
             
                    external
         | 
| 329 346 | 
             
                    view
         | 
| 330 347 | 
             
                    returns (IServiceAuthorization serviceAuthorization)
         | 
| 331 348 | 
             
                {
         | 
| 332 | 
            -
                    return _releaseInfo[ | 
| 349 | 
            +
                    return _releaseInfo[release].auth;
         | 
| 333 350 | 
             
                }
         | 
| 334 351 |  | 
| 335 352 | 
             
                function getRegistryAdmin() external view returns (address) {
         | 
| @@ -344,27 +361,41 @@ contract ReleaseRegistry is | |
| 344 361 |  | 
| 345 362 | 
             
                //--- private functions ----------------------------------------------------//
         | 
| 346 363 |  | 
| 347 | 
            -
                 | 
| 348 | 
            -
                function _setReleaseLocked(VersionPart version, bool locked)
         | 
| 364 | 
            +
                function _setReleaseLocked(VersionPart release, bool locked)
         | 
| 349 365 | 
             
                    private
         | 
| 350 366 | 
             
                {
         | 
| 351 | 
            -
                     | 
| 352 | 
            -
             | 
| 353 | 
            -
             | 
| 354 | 
            -
             | 
| 355 | 
            -
             | 
| 356 | 
            -
             | 
| 357 | 
            -
                     | 
| 358 | 
            -
             | 
| 359 | 
            -
             | 
| 360 | 
            -
             | 
| 361 | 
            -
             | 
| 362 | 
            -
             | 
| 363 | 
            -
             | 
| 367 | 
            +
                    ReleaseAdmin(
         | 
| 368 | 
            +
                        _releaseInfo[release].releaseAdmin).setReleaseLocked(locked);
         | 
| 369 | 
            +
                }
         | 
| 370 | 
            +
             | 
| 371 | 
            +
             | 
| 372 | 
            +
                function _cloneNewReleaseAdmin(VersionPart release)
         | 
| 373 | 
            +
                    private
         | 
| 374 | 
            +
                    returns (ReleaseAdmin clonedAdmin)
         | 
| 375 | 
            +
                {
         | 
| 376 | 
            +
                    AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
         | 
| 377 | 
            +
                        Clones.clone(
         | 
| 378 | 
            +
                            _masterReleaseAdmin.authority()
         | 
| 379 | 
            +
                        )
         | 
| 380 | 
            +
                    );
         | 
| 364 381 |  | 
| 365 | 
            -
                     | 
| 382 | 
            +
                    clonedAdmin = ReleaseAdmin(
         | 
| 383 | 
            +
                        Clones.clone(
         | 
| 384 | 
            +
                            address(_masterReleaseAdmin)
         | 
| 385 | 
            +
                        )
         | 
| 386 | 
            +
                    );
         | 
| 387 | 
            +
             | 
| 388 | 
            +
                    clonedAdmin.initialize(clonedAccessManager);
         | 
| 389 | 
            +
                    clonedAdmin.completeSetup(
         | 
| 390 | 
            +
                        address(_registry), 
         | 
| 391 | 
            +
                        address(this), // release registry (this contract)
         | 
| 392 | 
            +
                        release);
         | 
| 393 | 
            +
             | 
| 394 | 
            +
                    // lock release (remains locked until activation)
         | 
| 395 | 
            +
                    clonedAdmin.setReleaseLocked(true);
         | 
| 366 396 | 
             
                }
         | 
| 367 397 |  | 
| 398 | 
            +
             | 
| 368 399 | 
             
                function _verifyServiceAuthorization(
         | 
| 369 400 | 
             
                    IServiceAuthorization serviceAuthorization,
         | 
| 370 401 | 
             
                    VersionPart releaseVersion,
         | 
| @@ -476,21 +507,5 @@ contract ReleaseRegistry is | |
| 476 507 | 
             
                        revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
         | 
| 477 508 | 
             
                    }
         | 
| 478 509 | 
             
                }
         | 
| 479 | 
            -
             | 
| 480 | 
            -
                /// @dev returns true iff a the address passes some simple proxy tests.
         | 
| 481 | 
            -
                function _isRegistry(address registryAddress) internal view returns (bool) {
         | 
| 482 | 
            -
             | 
| 483 | 
            -
                    // zero address is certainly not registry
         | 
| 484 | 
            -
                    if (registryAddress == address(0)) {
         | 
| 485 | 
            -
                        return false;
         | 
| 486 | 
            -
                    }
         | 
| 487 | 
            -
                    // TODO try catch and return false in case of revert or just panic
         | 
| 488 | 
            -
                    // check if contract returns a zero nft id for its own address
         | 
| 489 | 
            -
                    if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
         | 
| 490 | 
            -
                        return false;
         | 
| 491 | 
            -
                    }
         | 
| 492 | 
            -
             | 
| 493 | 
            -
                    return true;
         | 
| 494 | 
            -
                }
         | 
| 495 510 | 
             
            }
         | 
| 496 511 |  |