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

Sign up to get free protection for your applications and to get access to all the features.
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