@etherisc/gif-next 0.0.2-de7c770-422 → 0.0.2-de9ede4-391

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.
Files changed (472) hide show
  1. package/README.md +28 -7
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1000 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +746 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +767 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +103 -63
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  15. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
  18. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  22. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +159 -209
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +99 -125
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +180 -86
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +139 -64
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +87 -108
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +52 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1441 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1991 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +187 -169
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +131 -157
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +282 -194
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +564 -249
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +116 -48
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +53 -101
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +149 -60
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +196 -138
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -85
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +687 -84
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +118 -148
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +107 -44
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +475 -116
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  97. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +119 -169
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  108. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +82 -103
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +95 -121
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +147 -79
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +127 -40
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +115 -141
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +148 -150
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +121 -70
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +48 -33
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +102 -134
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +272 -185
  133. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  134. package/artifacts/contracts/pool/Pool.sol/Pool.json +115 -152
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +413 -263
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +144 -45
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +119 -45
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +103 -40
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +158 -138
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +200 -86
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +144 -61
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +63 -7
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +64 -8
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +178 -19
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +141 -116
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +328 -119
  165. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +150 -55
  167. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  168. package/artifacts/contracts/product/PricingService.sol/PricingService.json +170 -107
  169. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +119 -48
  171. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  172. package/artifacts/contracts/product/Product.sol/Product.json +154 -134
  173. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  174. package/artifacts/contracts/product/RiskService.sol/RiskService.json +81 -26
  175. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +101 -34
  177. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  178. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  179. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  180. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +91 -15
  181. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  182. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  183. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  184. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  185. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  186. package/artifacts/contracts/registry/Registry.sol/Registry.json +135 -51
  187. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +220 -182
  189. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +94 -172
  191. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +99 -32
  193. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  195. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +123 -225
  197. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  199. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  200. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  201. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Component.sol/Component.json +72 -80
  203. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +483 -477
  205. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +141 -76
  207. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -0
  209. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  210. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -0
  211. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  212. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  213. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  215. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +61 -64
  217. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +425 -261
  219. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +82 -103
  221. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  223. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  224. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  225. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  227. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -6
  229. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  231. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  234. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  235. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  236. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +94 -120
  237. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  238. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  239. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  240. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  241. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  242. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  243. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
  245. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  246. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -8
  247. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +66 -8
  249. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  250. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  251. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  252. package/artifacts/contracts/shared/Service.sol/Service.json +47 -0
  253. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  254. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  255. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  257. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  258. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  259. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  260. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +79 -100
  261. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  262. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  263. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  264. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
  265. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  266. package/artifacts/contracts/staking/Staking.sol/Staking.json +158 -170
  267. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  269. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +120 -54
  271. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  273. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +87 -53
  275. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +103 -36
  277. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +145 -104
  279. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  280. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +3 -3
  281. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  282. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Amount.sol/AmountLib.json +33 -9
  284. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  287. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  289. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  291. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  293. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  294. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  295. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  297. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  298. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  299. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  301. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  303. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  305. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  307. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +99 -5
  309. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  311. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  316. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +16 -3
  320. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  322. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  323. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  324. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +79 -27
  325. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  326. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  327. package/contracts/accounting/AccountingService.sol +263 -0
  328. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  329. package/contracts/accounting/IAccountingService.sol +45 -0
  330. package/contracts/authorization/AccessAdmin.sol +82 -56
  331. package/contracts/authorization/Authorization.sol +111 -39
  332. package/contracts/authorization/IAccess.sol +1 -0
  333. package/contracts/authorization/IAccessAdmin.sol +4 -3
  334. package/contracts/authorization/IAuthorization.sol +13 -7
  335. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  336. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  337. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  338. package/contracts/distribution/BasicDistribution.sol +8 -7
  339. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  340. package/contracts/distribution/Distribution.sol +32 -40
  341. package/contracts/distribution/DistributionService.sol +86 -65
  342. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  343. package/contracts/distribution/IDistributionComponent.sol +1 -1
  344. package/contracts/distribution/IDistributionService.sol +5 -6
  345. package/contracts/examples/fire/DamageLevel.sol +59 -0
  346. package/contracts/examples/fire/FirePool.sol +90 -0
  347. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  348. package/contracts/examples/fire/FireProduct.sol +436 -0
  349. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  350. package/contracts/examples/fire/FireUSD.sol +26 -0
  351. package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
  352. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  353. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  354. package/contracts/examples/unpermissioned/SimplePool.sol +37 -6
  355. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  356. package/contracts/examples/unpermissioned/SimpleProduct.sol +24 -23
  357. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  358. package/contracts/instance/BundleSet.sol +38 -34
  359. package/contracts/instance/IInstance.sol +11 -3
  360. package/contracts/instance/IInstanceService.sol +7 -29
  361. package/contracts/instance/Instance.sol +36 -26
  362. package/contracts/instance/InstanceAdmin.sol +57 -54
  363. package/contracts/instance/InstanceAuthorizationV3.sol +50 -32
  364. package/contracts/instance/InstanceReader.sol +187 -21
  365. package/contracts/instance/InstanceService.sol +54 -129
  366. package/contracts/instance/InstanceServiceManager.sol +6 -7
  367. package/contracts/instance/InstanceStore.sol +12 -2
  368. package/contracts/instance/RiskSet.sol +119 -0
  369. package/contracts/instance/base/ObjectCounter.sol +1 -2
  370. package/contracts/instance/base/ObjectLifecycle.sol +2 -1
  371. package/contracts/instance/base/ObjectSet.sol +24 -25
  372. package/contracts/instance/module/IComponents.sol +20 -7
  373. package/contracts/instance/module/IPolicy.sol +4 -3
  374. package/contracts/instance/module/IRisk.sol +1 -0
  375. package/contracts/oracle/BasicOracle.sol +0 -1
  376. package/contracts/oracle/IOracleService.sol +2 -1
  377. package/contracts/oracle/Oracle.sol +4 -15
  378. package/contracts/oracle/OracleService.sol +110 -80
  379. package/contracts/oracle/OracleServiceManager.sol +6 -6
  380. package/contracts/pool/BasicPool.sol +33 -24
  381. package/contracts/pool/BasicPoolAuthorization.sol +12 -2
  382. package/contracts/pool/BundleService.sol +74 -87
  383. package/contracts/pool/BundleServiceManager.sol +6 -6
  384. package/contracts/pool/IBundleService.sol +2 -15
  385. package/contracts/pool/IPoolComponent.sol +19 -15
  386. package/contracts/pool/IPoolService.sol +30 -37
  387. package/contracts/pool/Pool.sol +141 -122
  388. package/contracts/pool/PoolService.sol +263 -157
  389. package/contracts/pool/PoolServiceManager.sol +4 -4
  390. package/contracts/product/ApplicationService.sol +31 -20
  391. package/contracts/product/ApplicationServiceManager.sol +4 -4
  392. package/contracts/product/BasicProduct.sol +8 -12
  393. package/contracts/product/BasicProductAuthorization.sol +1 -3
  394. package/contracts/product/ClaimService.sol +233 -106
  395. package/contracts/product/ClaimServiceManager.sol +4 -4
  396. package/contracts/product/IApplicationService.sol +5 -2
  397. package/contracts/product/IClaimService.sol +3 -2
  398. package/contracts/product/IPolicyService.sol +25 -8
  399. package/contracts/product/IPricingService.sol +9 -9
  400. package/contracts/product/IProductComponent.sol +23 -3
  401. package/contracts/product/PolicyService.sol +361 -198
  402. package/contracts/product/PolicyServiceManager.sol +4 -4
  403. package/contracts/product/PricingService.sol +10 -11
  404. package/contracts/product/PricingServiceManager.sol +3 -3
  405. package/contracts/product/Product.sol +76 -74
  406. package/contracts/product/RiskService.sol +16 -6
  407. package/contracts/product/RiskServiceManager.sol +4 -4
  408. package/contracts/registry/ChainNft.sol +10 -11
  409. package/contracts/registry/IRegistry.sol +8 -3
  410. package/contracts/registry/IRegistryService.sol +5 -12
  411. package/contracts/registry/ITransferInterceptor.sol +1 -2
  412. package/contracts/registry/Registry.sol +29 -6
  413. package/contracts/registry/RegistryAdmin.sol +29 -36
  414. package/contracts/registry/RegistryService.sol +33 -44
  415. package/contracts/registry/RegistryServiceManager.sol +2 -2
  416. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  417. package/contracts/registry/ReleaseRegistry.sol +205 -210
  418. package/contracts/registry/ServiceAuthorizationV3.sol +58 -50
  419. package/contracts/shared/Component.sol +56 -105
  420. package/contracts/shared/ComponentService.sol +384 -329
  421. package/contracts/shared/ComponentServiceManager.sol +8 -5
  422. package/contracts/shared/ComponentVerifyingService.sol +27 -16
  423. package/contracts/shared/ContractLib.sol +224 -0
  424. package/contracts/shared/IComponent.sol +6 -14
  425. package/contracts/shared/IComponentService.sol +45 -37
  426. package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
  427. package/contracts/shared/ILifecycle.sol +3 -1
  428. package/contracts/shared/INftOwnable.sol +2 -0
  429. package/contracts/shared/IPolicyHolder.sol +12 -13
  430. package/contracts/shared/IRegisterable.sol +11 -0
  431. package/contracts/shared/InstanceLinkedComponent.sol +68 -43
  432. package/contracts/shared/KeyValueStore.sol +1 -1
  433. package/contracts/shared/Lifecycle.sol +15 -4
  434. package/contracts/shared/NftOwnable.sol +23 -3
  435. package/contracts/shared/PolicyHolder.sol +11 -5
  436. package/contracts/shared/Registerable.sol +15 -7
  437. package/contracts/shared/RegistryLinked.sol +6 -12
  438. package/contracts/shared/Service.sol +16 -14
  439. package/contracts/shared/TokenHandler.sol +316 -66
  440. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  441. package/contracts/staking/IStaking.sol +9 -4
  442. package/contracts/staking/IStakingService.sol +0 -3
  443. package/contracts/staking/Staking.sol +42 -25
  444. package/contracts/staking/StakingManager.sol +8 -6
  445. package/contracts/staking/StakingReader.sol +12 -5
  446. package/contracts/staking/StakingService.sol +56 -23
  447. package/contracts/staking/StakingServiceManager.sol +2 -2
  448. package/contracts/type/Amount.sol +15 -0
  449. package/contracts/type/ClaimId.sol +6 -1
  450. package/contracts/type/Key32.sol +2 -2
  451. package/contracts/type/Key32Set.sol +62 -0
  452. package/contracts/type/NftId.sol +7 -0
  453. package/contracts/type/ObjectType.sol +14 -0
  454. package/contracts/type/PayoutId.sol +10 -10
  455. package/contracts/type/RiskId.sol +30 -4
  456. package/contracts/type/RoleId.sol +0 -12
  457. package/contracts/type/StateId.sol +14 -1
  458. package/contracts/type/UFixed.sol +13 -119
  459. package/contracts/upgradeability/ProxyManager.sol +68 -34
  460. package/contracts/upgradeability/Versionable.sol +2 -2
  461. package/package.json +4 -3
  462. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  463. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  464. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  465. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  466. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  467. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  468. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  469. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  470. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  471. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  472. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,45 +1,34 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
5
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
6
- import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
7
- import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
8
5
  import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
9
- import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
10
6
 
7
+ import {ContractLib} from "../shared/ContractLib.sol";
11
8
  import {NftId} from "../type/NftId.sol";
12
- import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
9
  import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
14
- import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
15
- import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
16
- import {Seconds, SecondsLib} from "../type/Seconds.sol";
17
- import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE, PAUSED, CLOSED} from "../type/StateId.sol";
18
- import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
10
+ import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
11
+ import {Seconds} from "../type/Seconds.sol";
12
+ import {StateId, SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED} from "../type/StateId.sol";
13
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
19
14
 
20
15
  import {IService} from "../shared/IService.sol";
21
- import {ILifecycle} from "../shared/ILifecycle.sol";
22
- import {INftOwnable} from "../shared/INftOwnable.sol";
23
16
  import {IRegisterable} from "../shared/IRegisterable.sol";
24
17
 
25
18
  import {IRegistry} from "./IRegistry.sol";
26
19
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
27
- import {IRegistryService} from "./IRegistryService.sol";
28
20
  import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
29
- import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
30
21
  import {RegistryAdmin} from "./RegistryAdmin.sol";
31
22
  import {Registry} from "./Registry.sol";
32
- import {TokenRegistry} from "./TokenRegistry.sol";
33
23
  import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
34
24
 
25
+
35
26
  contract ReleaseRegistry is
36
27
  AccessManaged,
37
28
  ReleaseLifecycle,
38
29
  IRegistryLinked
39
30
  {
40
- using ObjectTypeLib for ObjectType;
41
-
42
- uint256 public constant INITIAL_GIF_VERSION = 3;
31
+ uint256 public constant INITIAL_GIF_VERSION = 3;// first active version
43
32
 
44
33
  event LogReleaseCreation(VersionPart version, bytes32 salt);
45
34
  event LogReleaseActivation(VersionPart version);
@@ -49,35 +38,22 @@ contract ReleaseRegistry is
49
38
  // constructor
50
39
  error ErrorReleaseRegistryNotRegistry(Registry registry);
51
40
 
52
- // createNextRelease
53
- error ErrorReleaseRegistryReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
54
-
55
- // prepareRelease
56
- error ErrorReleaseRegistryReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
57
- error ErrorReleaseRegistryReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
58
- error ErrorReleaseRegistryVersionMismatch(VersionPart expected, VersionPart actual);
59
- error ErrorReleaseRegistryNoDomains(VersionPart version);
41
+ // _verifyServiceAuthorization
42
+ error ErrorReleaseRegistryNotServiceAuth(address notAuth);
43
+ error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
44
+ error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart version);
60
45
 
61
46
  // registerService
62
- error ErrorReleaseRegistryNoServiceRegistrationExpected();
63
- error ErrorReleaseRegistryServiceRegistrationDisallowed(StateId currentStateId);
64
- error ErrorReleaseRegistryServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
65
- error ErrorReleaseRegistryNotService(address notService);
66
47
  error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
67
48
 
68
49
  // activateNextRelease
69
- error ErrorReleaseRegistryReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
70
- error ErrorReleaseRegistryReleaseNotCreated(VersionPart releaseVersion);
71
- error ErrorReleaseRegistryReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
72
- error ErrorReleaseRegistryReleaseAlreadyActivated(VersionPart releaseVersion);
73
-
74
- // disableRelease
75
- error ErrorReleaseRegistryReleaseNotActivated(VersionPart releaseVersion);
76
- error ErrorReleaseRegistryReleaseAlreadyDisabled(VersionPart releaseVersion);
50
+ error ErrorReleaseRegistryRegistryServiceMissing(VersionPart releaseVersion);
77
51
 
78
52
  // _verifyService
79
- error ErrorReleaseRegistryServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
80
- error ErrorReleaseRegistryServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
53
+ error ErrorReleaseRegistryNotService(address notService);
54
+ error ErrorReleaseRegistryServiceAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
55
+ error ErrorReleaseRegistryServiceVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
56
+ error ErrorReleaseRegistryServiceDomainMismatch(IService service, ObjectType expectedDomain, ObjectType actualDomain);
81
57
 
82
58
  // _verifyServiceInfo
83
59
  error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
@@ -87,32 +63,22 @@ contract ReleaseRegistry is
87
63
  error ErrorReleaseRegistryServiceSelfRegistration(IService service);
88
64
  error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
89
65
 
90
- Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
91
-
92
66
  RegistryAdmin public immutable _admin;
93
67
  Registry public immutable _registry;
94
- IRegisterable private _staking;
95
- address private _stakingOwner;
96
68
 
97
69
  mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
98
- mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
99
-
100
- // TODO check where/why this is used
101
- mapping(address registryService => VersionPart version) _releaseVersionByAddress;
102
-
103
- VersionPart private _initial;// first active version
70
+ VersionPart [] internal _release; // array of all created releases
104
71
  VersionPart internal _latest; // latest active version
105
72
  VersionPart internal _next; // version to create and activate
106
- mapping(VersionPart verson => StateId releaseState) private _state;
107
73
 
108
- uint256 internal _registeredServices;
109
- uint256 internal _servicesToRegister;
74
+ // counters per release
75
+ uint256 internal _registeredServices = 0;
76
+ uint256 internal _servicesToRegister = 0;
110
77
 
111
78
  constructor(Registry registry)
112
79
  AccessManaged(msg.sender)
113
80
  {
114
- // TODO move this part to RegistryLinked constructor
115
- if(!_isRegistry(address(registry))) {
81
+ if (!ContractLib.isRegistry(address(registry))) {
116
82
  revert ErrorReleaseRegistryNotRegistry(registry);
117
83
  }
118
84
 
@@ -121,21 +87,30 @@ contract ReleaseRegistry is
121
87
  _registry = registry;
122
88
  _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
123
89
 
124
- _initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
125
90
  _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
126
91
  }
127
92
 
128
- /// @dev skips previous release if was not activated
93
+ /// @dev sets previous release into SKIPPED state if it was created but not activated
129
94
  /// sets next release into state SCHEDULED
130
95
  function createNextRelease()
131
96
  external
132
97
  restricted() // GIF_ADMIN_ROLE
133
98
  returns(VersionPart)
134
99
  {
135
- _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
100
+ VersionPart version = _next;
101
+
102
+ if(isValidTransition(RELEASE(), _releaseInfo[version].state, SKIPPED())) {
103
+ _releaseInfo[version].state = SKIPPED();
104
+ }
105
+
106
+ version = VersionPartLib.toVersionPart(version.toInt() + 1);
107
+ _release.push(version);
108
+
109
+ _next = version;
110
+ _releaseInfo[version].version = version;
111
+ _releaseInfo[version].state = getInitialState(RELEASE());
136
112
  _servicesToRegister = 0;
137
113
  _registeredServices = 0;
138
- _state[_next] = getInitialState(RELEASE());
139
114
 
140
115
  return _next;
141
116
  }
@@ -147,51 +122,36 @@ contract ReleaseRegistry is
147
122
  external
148
123
  restricted() // GIF_MANAGER_ROLE
149
124
  returns(
150
- address authority,
151
- VersionPart version,
125
+ address releaseAuthority,
126
+ VersionPart releaseVersion,
152
127
  bytes32 releaseSalt
153
128
  )
154
129
  {
155
- authority = _admin.authority();
156
- version = _next;
130
+ releaseVersion = _next;
157
131
 
132
+ // release can transition into DEPLOYING state
133
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
134
+
135
+ uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
136
+
137
+ releaseAuthority = _admin.authority();
138
+ releaseSalt = salt;
158
139
  // ensures unique salt
159
140
  // TODO CreateX have clones capability also
160
141
  // what would releaseSalt look like if used with CreateX in pemissioned mode?
161
- releaseSalt = keccak256(
142
+ /*releaseSalt = keccak256(
162
143
  bytes.concat(
163
- bytes32(version.toInt()),
164
- salt));
165
-
166
- // verify release in state SCHEDULED
167
- if (!isValidTransition(RELEASE(), _state[version], DEPLOYING())) {
168
- revert ErrorReleaseRegistryReleasePreparationDisallowed(version, _state[version]);
169
- }
170
-
171
- _state[version] = DEPLOYING();
172
-
173
- // verify authorizaion contract release matches with expected version
174
- VersionPart releaseVersion = serviceAuthorization.getRelease();
175
- if (releaseVersion != version) {
176
- revert ErrorReleaseRegistryVersionMismatch(version, releaseVersion);
177
- }
178
-
179
-
180
- // sanity check to ensure service domain list is not empty
181
- uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
182
- if (serviceDomainsCount == 0) {
183
- revert ErrorReleaseRegistryNoDomains(version);
184
- }
185
-
186
- // verify prepareNextRelease is only called once per release
187
- if(_servicesToRegister > 0) {
188
- revert ErrorReleaseRegistryReleaseAlreadyPrepared(version, _state[version]);
189
- }
144
+ bytes32(releaseVersion.toInt()),
145
+ salt));*/
190
146
 
191
147
  _servicesToRegister = serviceDomainsCount;
192
- _serviceAuthorization[version] = serviceAuthorization;
148
+ _releaseInfo[releaseVersion].state = DEPLOYING();
149
+ _releaseInfo[releaseVersion].salt = releaseSalt;
150
+ // TODO allow for the same serviceAuthorization address to be used for multiple releases?
151
+ _releaseInfo[releaseVersion].auth = serviceAuthorization;
152
+ //_releaseInfo[releaseVersion].authority = releaseAuthority;
193
153
 
194
- emit LogReleaseCreation(version, releaseSalt);
154
+ emit LogReleaseCreation(releaseVersion, releaseSalt);
195
155
  }
196
156
 
197
157
  function registerService(IService service)
@@ -200,135 +160,124 @@ contract ReleaseRegistry is
200
160
  returns(NftId nftId)
201
161
  {
202
162
  VersionPart releaseVersion = _next;
203
- StateId state = _state[releaseVersion];
204
-
205
- // verify release in state DEPLOYING
206
- if (!isValidTransition(RELEASE(), state, DEPLOYING())) {
207
- // TOOD name must represent failed state transition
208
- revert ErrorReleaseRegistryServiceRegistrationDisallowed(state);
209
- }
210
163
 
211
- _state[releaseVersion] = DEPLOYING();
164
+ // release can transition to DEPLOYED state
165
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
212
166
 
213
- // not all services are registered
214
- if (_servicesToRegister == _registeredServices) {
215
- revert ErrorReleaseRegistryNoServiceRegistrationExpected();
216
- }
167
+ address releaseAuthority = _admin.authority();
168
+ IServiceAuthorization serviceAuth = _releaseInfo[releaseVersion].auth;
169
+ ObjectType expectedDomain = serviceAuth.getServiceDomain(_registeredServices);
217
170
 
218
- // service can work with release manager
171
+ // service can work with release registry and release version
219
172
  (
220
173
  IRegistry.ObjectInfo memory info,
221
174
  ObjectType serviceDomain,
222
175
  VersionPart serviceVersion
223
- ) = _verifyService(service);
176
+ //,string memory serviceName
177
+ ) = _verifyService(
178
+ service,
179
+ releaseAuthority,
180
+ releaseVersion,
181
+ expectedDomain
182
+ );
224
183
 
225
- // service domain matches defined in release config
226
- ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
227
- if (serviceDomain != expectedDomain) {
228
- revert ErrorReleaseRegistryServiceDomainMismatch(expectedDomain, serviceDomain);
184
+ //_releaseInfo[releaseVersion].addresses.push(address(service)); // TODO get this info from auth contract?
185
+ //_releaseInfo[releaseVersion].domains.push(serviceDomain);
186
+ //_releaseInfo[releaseVersion].names.push(serviceName); // TODO if needed read in _verifyService()
187
+
188
+ _registeredServices++; // TODO use releaseInfo.someArray.length instead of _registeredServices
189
+
190
+ // release fully deployed
191
+ if(_servicesToRegister == _registeredServices) {
192
+ _releaseInfo[releaseVersion].state = DEPLOYED();
229
193
  }
230
194
 
231
- // register service with registry
232
- // !!! TODO MUST call registry at the end of this function
233
- nftId = _registry.registerService(info, serviceVersion, serviceDomain);
234
- service.linkToRegisteredNftId();
235
- _registeredServices++;
195
+ // TODO: service address matches defined in release auth (precalculated one)
196
+ // revert ErrorReleaseRegistryServiceAddressMismatch()
236
197
 
237
198
  // setup service authorization
238
- // !!! TODO service A can call service B while release is not active
239
199
  _admin.authorizeService(
240
- _serviceAuthorization[releaseVersion],
200
+ serviceAuth,
241
201
  service,
242
202
  serviceDomain,
243
- serviceVersion);
244
-
245
- // special roles for registry/staking/pool service
246
- // !!! TODO registry service allowed to call registry while release is not activated (same for staking/pool service and staking)
247
- if (
248
- serviceDomain == REGISTRY() ||
249
- serviceDomain == STAKING() ||
250
- serviceDomain == POOL())
251
- {
252
- _admin.grantServiceRoleForAllVersions(service, serviceDomain);
253
- }
254
- }
255
-
203
+ releaseVersion);
256
204
 
205
+ // register service with registry
206
+ nftId = _registry.registerService(info, serviceVersion, serviceDomain);
207
+ service.linkToRegisteredNftId();
208
+ }
209
+ // TODO return activated version
257
210
  function activateNextRelease()
258
211
  external
259
212
  restricted // GIF_ADMIN_ROLE
260
213
  {
261
214
  VersionPart version = _next;
262
- StateId state = _state[version];
263
- StateId newState = ACTIVE();
264
215
 
265
- // verify release in state DEPLOYING
266
- if (!isValidTransition(RELEASE(), state, newState)) {
267
- revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
268
- }
216
+ // release can transition to ACTIVE state
217
+ checkTransition(_releaseInfo[version].state, RELEASE(), DEPLOYED(), ACTIVE());
269
218
 
270
- // release fully deployed
271
- if(_registeredServices < _servicesToRegister) {
272
- revert ErrorReleaseRegistryReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
273
- }
219
+ _latest = version;
220
+ _releaseInfo[version].state = ACTIVE();
221
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
222
+
223
+ // grant special roles for registry/staking/pool services
224
+ // this will enable access to core contracts functions
274
225
 
275
- // release exists, registry service MUST exist
226
+ // registry service MUST be registered for each release
276
227
  address service = _registry.getServiceAddress(REGISTRY(), version);
277
228
  if(service == address(0)) {
278
- revert ErrorReleaseRegistryReleaseNotCreated(version);
229
+ revert ErrorReleaseRegistryRegistryServiceMissing(version);
279
230
  }
280
231
 
281
- _latest = version;
282
- _state[version] = newState;
232
+ _admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
283
233
 
284
- _releaseVersionByAddress[service] = version;
285
- _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
234
+ service = _registry.getServiceAddress(STAKING(), version);
235
+ if(service != address(0)) {
236
+ _admin.grantServiceRoleForAllVersions(IService(service), STAKING());
237
+ }
238
+
239
+ service = _registry.getServiceAddress(POOL(), version);
240
+ if(service != address(0)) {
241
+ _admin.grantServiceRoleForAllVersions(IService(service), POOL());
242
+ }
243
+
244
+ // TODO may run out of gas
245
+ // TODO test how many service can be locked in one transaction
246
+ // -> add to docs + each release must test for this -> add to release version tests (in test call with some gas limit?)
247
+ _setReleaseLocked(version, false);
286
248
 
287
249
  emit LogReleaseActivation(version);
288
250
  }
289
251
 
290
252
  /// @dev stop all operations with release services
291
253
  function pauseRelease(VersionPart version)
292
- external
254
+ external
293
255
  restricted // GIF_ADMIN_ROLE
294
256
  {
295
- StateId state = _state[version];
296
- StateId newState = PAUSED();
297
-
298
- // verify release in state ACTIVE
299
- if (!isValidTransition(RELEASE(), state, newState)) {
300
- revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
301
- }
257
+ // release can transition to PAUSED state
258
+ checkTransition(_releaseInfo[version].state, RELEASE(), ACTIVE(), PAUSED());
302
259
 
303
- // TODO come up with a substitute
304
- //_releaseAccessManager[version].disable();
305
-
306
- _state[version] = newState;
260
+ _releaseInfo[version].state = PAUSED();
307
261
  _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
308
262
 
263
+ _setReleaseLocked(version, true);
264
+
309
265
  emit LogReleaseDisabled(version);
310
266
  }
311
267
 
312
- // TODO consider revert if some delay is expired -> becomes disabled automatically
313
268
  /// @dev resume operations with release services
314
269
  function unpauseRelease(VersionPart version)
315
270
  external
316
271
  restricted // GIF_ADMIN_ROLE
317
272
  {
318
- StateId state = _state[version];
319
- StateId newState = ACTIVE();
320
-
321
- // verify release in state PAUSED
322
- if (!isValidTransition(RELEASE(), state, newState)) {
323
- revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
324
- }
325
-
326
- // TODO come up with a substitute
327
- // _releaseAccessManager[version].enable();
273
+ // release can transition to ACTIVE state
274
+ checkTransition(_releaseInfo[version].state, RELEASE(), PAUSED(), ACTIVE());
328
275
 
329
- _state[version] = newState;
276
+ _releaseInfo[version].state = ACTIVE();
330
277
  _releaseInfo[version].disabledAt = zeroTimestamp();
331
278
 
279
+ _setReleaseLocked(version, false);
280
+
332
281
  emit LogReleaseEnabled(version);
333
282
  }
334
283
 
@@ -342,33 +291,39 @@ contract ReleaseRegistry is
342
291
  return Clones.predictDeterministicAddress(implementation, salt, deployer);
343
292
  }
344
293
 
345
- function isActiveRegistryService(address service) external view returns(bool) {
346
- VersionPart version = _releaseVersionByAddress[service];
347
- return isActiveRelease(version);
348
- }
349
-
350
294
  function isActiveRelease(VersionPart version) public view returns(bool) {
351
- return _state[version] == ACTIVE();
295
+ return _releaseInfo[version].state == ACTIVE();
352
296
  }
353
297
 
354
298
  function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
355
299
  return _releaseInfo[version];
356
300
  }
357
301
 
302
+ /// @dev Returns the number of created releases.
303
+ /// Releases might be in another state than ACTIVE.
304
+ function releases() external view returns (uint) {
305
+ return _release.length;
306
+ }
307
+
308
+ /// @dev Returns the n-th release version.
309
+ /// Valid values for idx [0 .. releases() - 1]
310
+ function getVersion(uint256 idx) external view returns (VersionPart version) {
311
+ // return _releases;
312
+ return _release[idx];
313
+ }
314
+
358
315
  function getNextVersion() public view returns(VersionPart) {
359
316
  return _next;
360
317
  }
361
318
 
319
+ /// @dev Returns the latest activated relase version.
320
+ /// There is no guarantee that the release is not currently paused.
362
321
  function getLatestVersion() external view returns(VersionPart) {
363
322
  return _latest;
364
323
  }
365
324
 
366
- function getInitialVersion() external view returns(VersionPart) {
367
- return _initial;
368
- }
369
-
370
325
  function getState(VersionPart version) external view returns (StateId stateId) {
371
- return _state[version];
326
+ return _releaseInfo[version].state;
372
327
  }
373
328
 
374
329
  function getRemainingServicesToRegister() external view returns (uint256 services) {
@@ -380,7 +335,7 @@ contract ReleaseRegistry is
380
335
  view
381
336
  returns (IServiceAuthorization serviceAuthorization)
382
337
  {
383
- return _serviceAuthorization[version];
338
+ return _releaseInfo[version].auth;
384
339
  }
385
340
 
386
341
  function getRegistryAdmin() external view returns (address) {
@@ -395,7 +350,61 @@ contract ReleaseRegistry is
395
350
 
396
351
  //--- private functions ----------------------------------------------------//
397
352
 
398
- function _verifyService(IService service)
353
+ // close / open service targets instead of revoking / granting roles
354
+ function _setReleaseLocked(VersionPart version, bool locked)
355
+ private
356
+ {
357
+ address service;
358
+ ObjectType domain;
359
+ IServiceAuthorization auth = _releaseInfo[version].auth;
360
+
361
+ ObjectType[] memory domains = auth.getServiceDomains();
362
+ for(uint idx = 0; idx < domains.length; idx++)
363
+ {
364
+ domain = domains[idx];
365
+ service = _registry.getServiceAddress(domain, version);
366
+ assert(service != address(0));
367
+
368
+ _admin.setServiceLocked(IService(service), locked);
369
+ }
370
+
371
+ // TODO add check for active/disabled release to core contracts functions interacting with releases
372
+ }
373
+
374
+ function _verifyServiceAuthorization(
375
+ IServiceAuthorization serviceAuthorization,
376
+ VersionPart releaseVersion,
377
+ bytes32 salt
378
+ )
379
+ private
380
+ view
381
+ returns (uint256 serviceDomainsCount)
382
+ {
383
+ // authorization contract supports IServiceAuthorization interface
384
+ if(!serviceAuthorization.supportsInterface(type(IServiceAuthorization).interfaceId)) {
385
+ revert ErrorReleaseRegistryNotServiceAuth(address(serviceAuthorization));
386
+ }
387
+
388
+ // authorizaions contract version matches with release version
389
+ VersionPart authVersion = serviceAuthorization.getRelease();
390
+ if (releaseVersion != authVersion) {
391
+ revert ErrorReleaseRegistryServiceAuthVersionMismatch(serviceAuthorization, releaseVersion, authVersion);
392
+ }
393
+
394
+ // sanity check to ensure service domain list is not empty
395
+ serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
396
+ if (serviceDomainsCount == 0) {
397
+ revert ErrorReleaseRegistryServiceAuthDomainsZero(serviceAuthorization, releaseVersion);
398
+ }
399
+ }
400
+
401
+ // TODO get service names
402
+ function _verifyService(
403
+ IService service,
404
+ address expectedAuthority,
405
+ VersionPart expectedVersion,
406
+ ObjectType expectedDomain
407
+ )
399
408
  internal
400
409
  view
401
410
  returns(
@@ -416,22 +425,25 @@ contract ReleaseRegistry is
416
425
 
417
426
  _verifyServiceInfo(service, serviceInfo, owner);
418
427
 
419
- VersionPart releaseVersion = _next; // never 0
420
- address expectedAuthority = _admin.authority(); // can be zero if registering service when release is not created
421
-
422
- // IMPORTANT: can not guarantee service access is actually controlled by authority
423
428
  if(serviceAuthority != expectedAuthority) {
424
- revert ErrorReleaseRegistryServiceReleaseAuthorityMismatch(
429
+ revert ErrorReleaseRegistryServiceAuthorityMismatch(
425
430
  service,
426
431
  serviceAuthority,
427
432
  expectedAuthority);
428
433
  }
429
434
 
430
- if(serviceVersion != releaseVersion) {
431
- revert ErrorReleaseRegistryServiceReleaseVersionMismatch(
435
+ if(serviceVersion != expectedVersion) {
436
+ revert ErrorReleaseRegistryServiceVersionMismatch(
432
437
  service,
433
438
  serviceVersion,
434
- releaseVersion);
439
+ expectedVersion);
440
+ }
441
+
442
+ if(serviceDomain != expectedDomain) {
443
+ revert ErrorReleaseRegistryServiceDomainMismatch(
444
+ service,
445
+ expectedDomain,
446
+ serviceDomain);
435
447
  }
436
448
  }
437
449
 
@@ -445,7 +457,7 @@ contract ReleaseRegistry is
445
457
  view
446
458
  {
447
459
  if(info.objectAddress != address(service)) {
448
- revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, address(service));
460
+ revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, info.objectAddress);
449
461
  }
450
462
 
451
463
  if(info.isInterceptor != false) { // service is never interceptor
@@ -470,22 +482,5 @@ contract ReleaseRegistry is
470
482
  revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
471
483
  }
472
484
  }
473
-
474
- /// @dev returns true iff a the address passes some simple proxy tests.
475
- function _isRegistry(address registryAddress) internal view returns (bool) {
476
-
477
- // zero address is certainly not registry
478
- if (registryAddress == address(0)) {
479
- return false;
480
- }
481
- // TODO try catch and return false in case of revert
482
- // or just panic
483
- // check if contract returns a zero nft id for its own address
484
- if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
485
- return false;
486
- }
487
-
488
- return true;
489
- }
490
485
  }
491
486