@etherisc/gif-next 0.0.2-71cf987-554 → 0.0.2-7202758-806

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 (440) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +75 -38
  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/AccessManagerCloneable.sol/AccessManagerCloneable.json +114 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +37 -0
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -186
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +154 -108
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -53
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +101 -164
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +258 -290
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +137 -129
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
  55. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +630 -317
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  61. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  62. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  63. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  64. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +94 -47
  65. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
  67. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/Instance.sol/Instance.json +131 -56
  69. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +197 -107
  71. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
  73. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +478 -197
  75. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +103 -81
  77. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -31
  79. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +410 -370
  81. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  82. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  83. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  85. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  88. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  92. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  94. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  100. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
  103. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  105. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +44 -58
  108. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  110. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
  112. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
  114. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
  116. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
  118. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
  120. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +128 -226
  122. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -74
  124. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +46 -60
  126. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
  128. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +104 -78
  130. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  131. package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
  132. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +175 -174
  134. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +64 -38
  136. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  137. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
  138. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
  140. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  141. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
  142. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  143. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  144. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +251 -144
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +79 -57
  148. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  149. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  150. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +143 -3
  152. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -22
  154. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  156. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  157. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
  158. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
  160. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  161. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +158 -140
  162. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +73 -47
  164. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  165. package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
  166. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
  168. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  169. package/artifacts/contracts/product/Product.sol/Product.json +163 -175
  170. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  171. package/artifacts/contracts/product/RiskService.sol/RiskService.json +88 -73
  172. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -24
  174. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  176. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  177. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +28 -4
  178. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  179. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  180. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  181. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  182. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  183. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/Registry.sol/Registry.json +66 -42
  185. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  186. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +153 -91
  187. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  189. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
  191. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  192. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +197 -98
  193. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  195. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +110 -86
  197. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  199. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  200. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  201. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
  203. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +250 -421
  205. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +71 -61
  207. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  209. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
  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/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  217. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
  219. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +134 -248
  221. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
  223. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  224. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  225. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  229. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  232. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  233. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  234. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
  235. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  236. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  237. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  238. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  239. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  241. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  243. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  245. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  247. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  248. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  249. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  250. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  252. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  253. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  254. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  255. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  256. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
  257. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  258. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +27 -3
  259. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  260. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
  261. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  262. package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
  263. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  264. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  265. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  266. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +58 -46
  267. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  269. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +73 -50
  271. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +46 -24
  273. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  275. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  276. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  277. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  278. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  280. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  283. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  285. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  287. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  289. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  290. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  291. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  293. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  294. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  295. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  297. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  299. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  301. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  303. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  305. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +3 -3
  307. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  314. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  316. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  318. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  320. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  321. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  322. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  323. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  324. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  325. package/contracts/accounting/AccountingService.sol +262 -0
  326. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  327. package/contracts/accounting/IAccountingService.sol +45 -0
  328. package/contracts/authorization/AccessAdmin.sol +86 -28
  329. package/contracts/authorization/AccessManagerCloneable.sol +85 -16
  330. package/contracts/authorization/IAccessAdmin.sol +6 -2
  331. package/contracts/distribution/BasicDistribution.sol +6 -6
  332. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  333. package/contracts/distribution/Distribution.sol +32 -30
  334. package/contracts/distribution/DistributionService.sol +34 -32
  335. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  336. package/contracts/distribution/IDistributionService.sol +5 -6
  337. package/contracts/examples/fire/FirePool.sol +22 -5
  338. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
  339. package/contracts/examples/fire/FireProduct.sol +31 -8
  340. package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
  341. package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
  342. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  343. package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
  344. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  345. package/contracts/examples/unpermissioned/SimpleProduct.sol +40 -21
  346. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  347. package/contracts/instance/BundleSet.sol +42 -38
  348. package/contracts/instance/IInstance.sol +8 -8
  349. package/contracts/instance/IInstanceService.sol +9 -9
  350. package/contracts/instance/Instance.sol +20 -17
  351. package/contracts/instance/InstanceAdmin.sol +57 -26
  352. package/contracts/instance/InstanceAuthorizationV3.sol +45 -14
  353. package/contracts/instance/InstanceReader.sol +108 -7
  354. package/contracts/instance/InstanceService.sol +71 -79
  355. package/contracts/instance/InstanceServiceManager.sol +1 -1
  356. package/contracts/instance/InstanceStore.sol +13 -2
  357. package/contracts/instance/RiskSet.sol +118 -0
  358. package/contracts/instance/base/ObjectCounter.sol +1 -2
  359. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  360. package/contracts/instance/base/ObjectSet.sol +31 -33
  361. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  362. package/contracts/instance/module/IComponents.sol +4 -4
  363. package/contracts/instance/module/IPolicy.sol +2 -1
  364. package/contracts/instance/module/IRisk.sol +3 -0
  365. package/contracts/oracle/Oracle.sol +1 -1
  366. package/contracts/oracle/OracleService.sol +92 -73
  367. package/contracts/oracle/OracleServiceManager.sol +1 -1
  368. package/contracts/pool/BasicPool.sol +24 -3
  369. package/contracts/pool/BasicPoolAuthorization.sol +12 -1
  370. package/contracts/pool/BundleService.sol +26 -94
  371. package/contracts/pool/BundleServiceManager.sol +1 -1
  372. package/contracts/pool/IBundleService.sol +2 -24
  373. package/contracts/pool/IPoolComponent.sol +1 -7
  374. package/contracts/pool/IPoolService.sol +12 -26
  375. package/contracts/pool/Pool.sol +112 -102
  376. package/contracts/pool/PoolService.sol +171 -100
  377. package/contracts/pool/PoolServiceManager.sol +1 -1
  378. package/contracts/product/ApplicationService.sol +15 -15
  379. package/contracts/product/ApplicationServiceManager.sol +1 -1
  380. package/contracts/product/BasicProduct.sol +9 -11
  381. package/contracts/product/BasicProductAuthorization.sol +1 -2
  382. package/contracts/product/ClaimService.sol +147 -51
  383. package/contracts/product/ClaimServiceManager.sol +1 -1
  384. package/contracts/product/IApplicationService.sol +5 -2
  385. package/contracts/product/IClaimService.sol +13 -0
  386. package/contracts/product/IPolicyService.sol +17 -7
  387. package/contracts/product/IProductComponent.sol +4 -1
  388. package/contracts/product/PolicyService.sol +244 -199
  389. package/contracts/product/PolicyServiceManager.sol +1 -1
  390. package/contracts/product/PricingService.sol +23 -19
  391. package/contracts/product/PricingServiceManager.sol +3 -3
  392. package/contracts/product/Product.sol +47 -39
  393. package/contracts/product/RiskService.sol +78 -23
  394. package/contracts/product/RiskServiceManager.sol +1 -1
  395. package/contracts/registry/ChainNft.sol +4 -2
  396. package/contracts/registry/IRegistry.sol +8 -17
  397. package/contracts/registry/IRelease.sol +26 -0
  398. package/contracts/registry/Registry.sol +12 -3
  399. package/contracts/registry/RegistryAdmin.sol +17 -6
  400. package/contracts/registry/RegistryService.sol +3 -3
  401. package/contracts/registry/RegistryServiceManager.sol +1 -1
  402. package/contracts/registry/ReleaseAdmin.sol +34 -37
  403. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  404. package/contracts/registry/ReleaseRegistry.sol +88 -82
  405. package/contracts/registry/ServiceAuthorizationV3.sol +88 -40
  406. package/contracts/registry/TokenRegistry.sol +6 -8
  407. package/contracts/shared/Component.sol +59 -98
  408. package/contracts/shared/ComponentService.sol +206 -251
  409. package/contracts/shared/ComponentServiceManager.sol +1 -1
  410. package/contracts/shared/ComponentVerifyingService.sol +15 -13
  411. package/contracts/shared/ContractLib.sol +223 -9
  412. package/contracts/shared/IComponent.sol +4 -17
  413. package/contracts/shared/IComponentService.sol +20 -24
  414. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  415. package/contracts/shared/IRegisterable.sol +15 -4
  416. package/contracts/shared/IService.sol +3 -5
  417. package/contracts/shared/InstanceLinkedComponent.sol +2 -18
  418. package/contracts/shared/NftOwnable.sol +4 -4
  419. package/contracts/shared/PolicyHolder.sol +1 -1
  420. package/contracts/shared/Registerable.sol +44 -20
  421. package/contracts/shared/RegistryLinked.sol +7 -13
  422. package/contracts/shared/Service.sol +8 -27
  423. package/contracts/shared/TokenHandler.sol +316 -66
  424. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  425. package/contracts/staking/IStaking.sol +9 -4
  426. package/contracts/staking/Staking.sol +62 -33
  427. package/contracts/staking/StakingService.sol +41 -9
  428. package/contracts/type/Key32.sol +2 -2
  429. package/contracts/type/Key32Set.sol +62 -0
  430. package/contracts/type/NftId.sol +6 -0
  431. package/contracts/type/ObjectType.sol +32 -18
  432. package/contracts/type/RiskId.sol +23 -6
  433. package/contracts/type/RoleId.sol +2 -2
  434. package/contracts/type/Timestamp.sol +0 -5
  435. package/contracts/type/UFixed.sol +9 -119
  436. package/contracts/type/Version.sol +15 -5
  437. package/contracts/upgradeability/ProxyManager.sol +1 -1
  438. package/package.json +3 -3
  439. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  440. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
@@ -11,6 +11,7 @@ import {IStaking} from "../staking/IStaking.sol";
11
11
  import {ObjectType, ObjectTypeLib, ALL, REGISTRY, STAKING, POOL, RELEASE} from "../type/ObjectType.sol";
12
12
  import {ReleaseRegistry} from "./ReleaseRegistry.sol";
13
13
  import {RoleId, RoleIdLib, ADMIN_ROLE, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
14
+ import {Staking} from "../staking/Staking.sol";
14
15
  import {StakingStore} from "../staking/StakingStore.sol";
15
16
  import {TokenHandler} from "../shared/TokenHandler.sol";
16
17
  import {TokenRegistry} from "./TokenRegistry.sol";
@@ -30,7 +31,9 @@ import {VersionPart, VersionPartLib} from "../type/Version.sol";
30
31
  - responsible for creation, activation and locking/unlocking of releases
31
32
  */
32
33
 
33
- /// @dev IMPORTANT: MUST not use authority().setLocked()
34
+ /// @dev The RegistryAdmin contract implements the central authorization for the GIF core contracts.
35
+ /// These are the release independent registry and staking contracts and their respective helper contracts.
36
+ /// The RegistryAdmin also manages the access from service contracts to the GIF core contracts
34
37
  contract RegistryAdmin is
35
38
  AccessAdmin
36
39
  {
@@ -50,6 +53,7 @@ contract RegistryAdmin is
50
53
  string public constant REGISTRY_TARGET_NAME = "Registry";
51
54
  string public constant RELEASE_REGISTRY_TARGET_NAME = "ReleaseRegistry";
52
55
  string public constant STAKING_TARGET_NAME = "Staking";
56
+ string public constant STAKING_TH_TARGET_NAME = "StakingTH";
53
57
  string public constant STAKING_STORE_TARGET_NAME = "StakingStore";
54
58
  string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
55
59
  string public constant TOKEN_HANDLER_TARGET_NAME = "TokenHandler";
@@ -71,12 +75,16 @@ contract RegistryAdmin is
71
75
  address gifAdmin,
72
76
  address gifManager
73
77
  )
74
- external
78
+ public
79
+ virtual
75
80
  reinitializer(type(uint8).max)
76
81
  onlyDeployer()
77
82
  {
78
83
  AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
79
- accessManager.completeSetup(address(registry), VersionPartLib.toVersionPart(type(uint8).max));
84
+ accessManager.completeSetup(
85
+ address(registry),
86
+ VersionPartLib.toVersionPart(type(uint8).max),
87
+ false);
80
88
 
81
89
  _registry = address(registry);
82
90
  _releaseRegistry = registry.getReleaseRegistryAddress();
@@ -298,7 +306,7 @@ contract RegistryAdmin is
298
306
  name: STAKING_SERVICE_ROLE_NAME}));
299
307
 
300
308
  // grant permissions to the staking service role for staking contract
301
- functions = new FunctionInfo[](13);
309
+ functions = new FunctionInfo[](11);
302
310
  functions[0] = toFunction(IStaking.registerTarget.selector, "registerTarget");
303
311
  functions[1] = toFunction(IStaking.setLockingPeriod.selector, "setLockingPeriod");
304
312
  functions[2] = toFunction(IStaking.setRewardRate.selector, "setRewardRate");
@@ -310,8 +318,6 @@ contract RegistryAdmin is
310
318
  functions[8] = toFunction(IStaking.restake.selector, "restake");
311
319
  functions[9] = toFunction(IStaking.updateRewards.selector, "updateRewards");
312
320
  functions[10] = toFunction(IStaking.claimRewards.selector, "claimRewards");
313
- functions[11] = toFunction(IStaking.collectDipAmount.selector, "collectDipAmount");
314
- functions[12] = toFunction(IStaking.transferDipAmount.selector, "transferDipAmount");
315
321
  _authorizeTargetFunctions(_staking, stakingServiceRoleId, functions);
316
322
 
317
323
  // create pool service role
@@ -329,5 +335,10 @@ contract RegistryAdmin is
329
335
  functions[0] = toFunction(IStaking.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
330
336
  functions[1] = toFunction(IStaking.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
331
337
  _authorizeTargetFunctions(_staking, poolServiceRoleId, functions);
338
+
339
+ // grant permissions to public role for staking contract
340
+ functions = new FunctionInfo[](1);
341
+ functions[0] = toFunction(Staking.approveTokenHandler.selector, "approveTokenHandler");
342
+ _authorizeTargetFunctions(_staking, PUBLIC_ROLE(), functions);
332
343
  }
333
344
  }
@@ -33,11 +33,11 @@ contract RegistryService is
33
33
  initializer()
34
34
  {
35
35
  (
36
- address registryAddress,
37
- address initialAuthority
36
+ address authority,
37
+ address registry
38
38
  ) = abi.decode(data, (address, address));
39
39
 
40
- _initializeService(registryAddress, initialAuthority, owner);
40
+ __Service_init(authority, registry, owner);
41
41
  _registerInterface(type(IRegistryService).interfaceId);
42
42
  }
43
43
 
@@ -31,7 +31,7 @@ contract RegistryServiceManager is
31
31
  }
32
32
 
33
33
  RegistryService srv = new RegistryService{ salt: salt }();
34
- bytes memory data = abi.encode(registry, authority);
34
+ bytes memory data = abi.encode(authority, registry);
35
35
  IVersionable versionable = initialize(
36
36
  registry,
37
37
  address(srv),
@@ -2,22 +2,26 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {AccessAdmin} from "../authorization/AccessAdmin.sol";
5
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
5
6
  import {IAccess} from "../authorization/IAccess.sol";
6
- import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
7
7
  import {IService} from "../shared/IService.sol";
8
8
  import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
9
- import {ObjectType, ObjectTypeLib, ALL, RELEASE} from "../type/ObjectType.sol";
9
+ import {ObjectType, ObjectTypeLib, ALL} from "../type/ObjectType.sol";
10
10
  import {RoleId, RoleIdLib, ADMIN_ROLE, RELEASE_REGISTRY_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
11
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
12
- import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
13
-
11
+ import {VersionPart} from "../type/Version.sol";
14
12
 
13
+ /// @dev The ReleaseAdmin contract implements the central authorization for the services of a specific release.
14
+ /// There is one ReleaseAdmin contract per major GIF release.
15
+ /// Locking/unlocking of all services of a release is implemented in function setReleaseLocked.
15
16
  contract ReleaseAdmin is
16
17
  AccessAdmin
17
18
  {
19
+ event LogReleaseAdminReleaseLockChanged(VersionPart release, bool locked);
20
+ event LogReleaseAdminServiceLockChanged(VersionPart release, address service, bool locked);
21
+
18
22
  error ErrorReleaseAdminCallerNotReleaseRegistry(address caller);
19
23
  error ErrorReleaseAdminNotService(address notService);
20
- error ErrorReleaseAdminReleaseAlreadyLocked();
24
+ error ErrorReleaseAdminReleaseLockAlreadySetTo(bool locked);
21
25
 
22
26
  /// @dev release core roles
23
27
  string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistryRole";
@@ -33,6 +37,7 @@ contract ReleaseAdmin is
33
37
  }
34
38
  _;
35
39
  }
40
+
36
41
  /// @dev Only used for master release admin.
37
42
  /// Contracts created via constructor come with disabled initializers.
38
43
  constructor() {
@@ -41,15 +46,17 @@ contract ReleaseAdmin is
41
46
  }
42
47
 
43
48
  function completeSetup(
44
- address registry,
49
+ address registry,
45
50
  address releaseRegistry,
46
- VersionPart releaseVersion
51
+ VersionPart release
47
52
  )
48
53
  external
49
- reinitializer(uint64(releaseVersion.toInt()))
54
+ reinitializer(uint64(release.toInt()))
50
55
  {
51
- AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
52
- accessManager.completeSetup(registry, releaseVersion);
56
+ AccessManagerCloneable(
57
+ authority()).completeSetup(
58
+ registry,
59
+ release);
53
60
 
54
61
  _setupReleaseRegistry(releaseRegistry);
55
62
  }
@@ -78,7 +85,16 @@ contract ReleaseAdmin is
78
85
  external
79
86
  onlyReleaseRegistry()
80
87
  {
81
- _setReleaseLocked(locked);
88
+ // checks
89
+ AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
90
+ if(accessManager.isLocked() == locked) {
91
+ revert ErrorReleaseAdminReleaseLockAlreadySetTo(locked);
92
+ }
93
+
94
+ // effects
95
+ accessManager.setLocked(locked);
96
+
97
+ emit LogReleaseAdminReleaseLockChanged(getRelease(), locked);
82
98
  }
83
99
 
84
100
  /// @dev Lock/unlock specific service of release.
@@ -94,17 +110,12 @@ contract ReleaseAdmin is
94
110
  }
95
111
 
96
112
  _setTargetClosed(address(service), locked);
97
- }
98
113
 
99
- /*function transferAdmin(address to)
100
- external
101
- restricted // only with GIF_ADMIN_ROLE or nft owner
102
- {
103
- _accessManager.revoke(GIF_ADMIN_ROLE, );
104
- _accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
105
- }*/
114
+ emit LogReleaseAdminServiceLockChanged(service.getRelease(), address(service), locked);
115
+ }
106
116
 
107
117
  //--- view functions ----------------------------------------------------//
118
+
108
119
  /*
109
120
  function getReleaseAdminRole() external view returns (RoleId) {
110
121
  return GIF_ADMIN_ROLE();
@@ -207,17 +218,6 @@ contract ReleaseAdmin is
207
218
  }
208
219
  }
209
220
 
210
- function _setReleaseLocked(bool locked)
211
- private
212
- {
213
- AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
214
- if(accessManager.isLocked() == locked) {
215
- revert ErrorReleaseAdminReleaseAlreadyLocked();
216
- }
217
-
218
- accessManager.setLocked(locked);
219
- }
220
-
221
221
  //--- private initialization functions -------------------------------------------//
222
222
 
223
223
  function _setupReleaseRegistry(address releaseRegistry)
@@ -226,11 +226,8 @@ contract ReleaseAdmin is
226
226
  {
227
227
  _createTarget(address(this), RELEASE_ADMIN_TARGET_NAME, false, false);
228
228
 
229
- // TODO why release registry role is calculated?
230
- //RoleId releaseRegistryRoleId = RoleIdLib.roleForType(RELEASE());
231
- RoleId releaseRegistryRoleId = RELEASE_REGISTRY_ROLE();
232
229
  _createRole(
233
- releaseRegistryRoleId,
230
+ RELEASE_REGISTRY_ROLE(),
234
231
  toRole({
235
232
  adminRoleId: ADMIN_ROLE(),
236
233
  roleType: RoleType.Contract,
@@ -241,8 +238,8 @@ contract ReleaseAdmin is
241
238
  functions = new FunctionInfo[](2);
242
239
  functions[0] = toFunction(ReleaseAdmin.authorizeService.selector, "authorizeService");
243
240
  functions[1] = toFunction(ReleaseAdmin.setServiceLocked.selector, "setServiceLocked");
244
- _authorizeTargetFunctions(address(this), releaseRegistryRoleId, functions);
241
+ _authorizeTargetFunctions(address(this), RELEASE_REGISTRY_ROLE(), functions);
245
242
 
246
- _grantRoleToAccount(releaseRegistryRoleId, releaseRegistry);
243
+ _grantRoleToAccount(RELEASE_REGISTRY_ROLE(), releaseRegistry);
247
244
  }
248
245
  }
@@ -5,6 +5,8 @@ import {RELEASE} from "../type/ObjectType.sol";
5
5
  import {SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED, CLOSED} from "../type/StateId.sol";
6
6
  import {Lifecycle} from "../shared/Lifecycle.sol";
7
7
 
8
+ /// @dev Release lifeycle state machine.
9
+ /// Helper contract for ReleaseRegistry.
8
10
  contract ReleaseLifecycle is
9
11
  Lifecycle
10
12
  {
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
5
  import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
6
6
 
7
+ import {ContractLib} from "../shared/ContractLib.sol";
7
8
  import {NftId} from "../type/NftId.sol";
8
9
  import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
9
10
  import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
@@ -17,6 +18,7 @@ import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
17
18
  import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
18
19
 
19
20
  import {IRegistry} from "./IRegistry.sol";
21
+ import {IRelease} from "./IRelease.sol";
20
22
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
21
23
  import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
22
24
  import {RegistryAdmin} from "./RegistryAdmin.sol";
@@ -24,18 +26,24 @@ import {Registry} from "./Registry.sol";
24
26
  import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
25
27
  import {ReleaseAdmin} from "./ReleaseAdmin.sol";
26
28
 
27
-
29
+ /// @dev The ReleaseRegistry manages the lifecycle of major GIF releases and their services.
30
+ /// The creation of a new GIF release is a multi-step process:
31
+ /// 1. The creation of a new GIF release is initiated by the GIF admin.
32
+ /// 2. A GIF manager then prepares the release by setting up the service authorization contract.
33
+ /// 3. The GIF manager deploys and registers all related service contracts with the release registry.
34
+ /// 4. The GIF admin verifies and activates the release.
35
+ /// 3. The GIF admin may pause and resume a release.
28
36
  contract ReleaseRegistry is
29
37
  AccessManaged,
30
38
  ReleaseLifecycle,
31
39
  IRegistryLinked
32
40
  {
33
- uint256 public constant INITIAL_GIF_VERSION = 3;// first active version
41
+ uint256 public constant INITIAL_GIF_VERSION = 3;// first active release version
34
42
 
35
- event LogReleaseCreation(IAccessAdmin admin, VersionPart version, bytes32 salt);
36
- event LogReleaseActivation(VersionPart version);
37
- event LogReleaseDisabled(VersionPart version);
38
- event LogReleaseEnabled(VersionPart version);
43
+ event LogReleaseCreation(IAccessAdmin admin, VersionPart release, bytes32 salt);
44
+ event LogReleaseActivation(VersionPart release);
45
+ event LogReleaseDisabled(VersionPart release);
46
+ event LogReleaseEnabled(VersionPart release);
39
47
 
40
48
  // constructor
41
49
  error ErrorReleaseRegistryNotRegistry(Registry registry);
@@ -43,7 +51,7 @@ contract ReleaseRegistry is
43
51
  // _verifyServiceAuthorization
44
52
  error ErrorReleaseRegistryNotServiceAuth(address notAuth);
45
53
  error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
46
- error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart version);
54
+ error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart release);
47
55
 
48
56
  // registerService
49
57
  error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
@@ -68,21 +76,21 @@ contract ReleaseRegistry is
68
76
  RegistryAdmin public immutable _admin;
69
77
  Registry public immutable _registry;
70
78
 
71
- mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
79
+ mapping(VersionPart release => IRelease.ReleaseInfo info) internal _releaseInfo;
72
80
  VersionPart [] internal _release; // array of all created releases
73
- ReleaseAdmin _masterReleaseAdmin;
81
+ ReleaseAdmin internal _masterReleaseAdmin;
74
82
 
75
- VersionPart internal _latest; // latest active version
76
- VersionPart internal _next; // version to create and activate
83
+ VersionPart internal _latest; // latest active release
84
+ VersionPart internal _next; // release version to create and activate
77
85
 
78
- uint256 internal _registeredServices;
79
- uint256 internal _servicesToRegister;
86
+ // counters per release
87
+ uint256 internal _registeredServices = 0;
88
+ uint256 internal _servicesToRegister = 0;
80
89
 
81
90
  constructor(Registry registry)
82
91
  AccessManaged(msg.sender)
83
92
  {
84
- // TODO move this part to RegistryLinked constructor
85
- if(!_isRegistry(address(registry))) {
93
+ if (!ContractLib.isRegistry(address(registry))) {
86
94
  revert ErrorReleaseRegistryNotRegistry(registry);
87
95
  }
88
96
 
@@ -96,25 +104,26 @@ contract ReleaseRegistry is
96
104
  _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
97
105
  }
98
106
 
99
- /// @dev sets previous release into SKIPPED state if it was created but not activated
100
- /// sets next release into state SCHEDULED
107
+ /// @dev Initiates the creation of a new GIF release by the GIF admin.
108
+ /// Sets previous release into SKIPPED state if it was created but not activated.
109
+ /// Sets the new release into state SCHEDULED.
101
110
  function createNextRelease()
102
111
  external
103
112
  restricted() // GIF_ADMIN_ROLE
104
113
  returns(VersionPart)
105
114
  {
106
- VersionPart version = _next;
115
+ VersionPart release = _next;
107
116
 
108
- if(isValidTransition(RELEASE(), _releaseInfo[version].state, SKIPPED())) {
109
- _releaseInfo[version].state = SKIPPED();
117
+ if(isValidTransition(RELEASE(), _releaseInfo[release].state, SKIPPED())) {
118
+ _releaseInfo[release].state = SKIPPED();
110
119
  }
111
120
 
112
- version = VersionPartLib.toVersionPart(version.toInt() + 1);
113
- _release.push(version);
121
+ release = VersionPartLib.toVersionPart(release.toInt() + 1);
122
+ _release.push(release);
114
123
 
115
- _next = version;
116
- _releaseInfo[version].version = version;
117
- _releaseInfo[version].state = getInitialState(RELEASE());
124
+ _next = release;
125
+ _releaseInfo[release].version = release;
126
+ _releaseInfo[release].state = getInitialState(RELEASE());
118
127
  _servicesToRegister = 0;
119
128
  _registeredServices = 0;
120
129
 
@@ -128,7 +137,7 @@ contract ReleaseRegistry is
128
137
  external
129
138
  restricted() // GIF_MANAGER_ROLE
130
139
  returns(
131
- IAccessAdmin releaseAdmin,
140
+ ReleaseAdmin releaseAdmin,
132
141
  VersionPart releaseVersion,
133
142
  bytes32 releaseSalt
134
143
  )
@@ -142,8 +151,9 @@ contract ReleaseRegistry is
142
151
  uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
143
152
 
144
153
  // create and initialize release admin
145
- releaseAdmin = _createReleaseAdmin();
154
+ releaseAdmin = _cloneNewReleaseAdmin(releaseVersion);
146
155
  releaseSalt = salt;
156
+
147
157
  // ensures unique salt
148
158
  // TODO CreateX have clones capability also
149
159
  // what would releaseSalt look like if used with CreateX in pemissioned mode?
@@ -157,7 +167,7 @@ contract ReleaseRegistry is
157
167
  _releaseInfo[releaseVersion].salt = releaseSalt;
158
168
  // TODO allow for the same serviceAuthorization address to be used for multiple releases?
159
169
  _releaseInfo[releaseVersion].auth = serviceAuthorization;
160
- _releaseInfo[releaseVersion].admin = releaseAdmin;
170
+ _releaseInfo[releaseVersion].releaseAdmin = address(releaseAdmin);
161
171
 
162
172
  emit LogReleaseCreation(releaseAdmin, releaseVersion, releaseSalt);
163
173
  }
@@ -172,7 +182,7 @@ contract ReleaseRegistry is
172
182
  // release can transition to DEPLOYED state
173
183
  checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
174
184
 
175
- address releaseAuthority = _releaseInfo[releaseVersion].admin.authority();
185
+ address releaseAuthority = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin).authority();
176
186
  IServiceAuthorization releaseAuth = _releaseInfo[releaseVersion].auth;
177
187
  ObjectType expectedDomain = releaseAuth.getServiceDomain(_registeredServices);
178
188
 
@@ -204,7 +214,7 @@ contract ReleaseRegistry is
204
214
  // revert ErrorReleaseRegistryServiceAddressMismatch()
205
215
 
206
216
  // setup service authorization
207
- ReleaseAdmin releaseAdmin = ReleaseAdmin(address(_releaseInfo[releaseVersion].admin));
217
+ ReleaseAdmin releaseAdmin = ReleaseAdmin(_releaseInfo[releaseVersion].releaseAdmin);
208
218
  releaseAdmin.setReleaseLocked(false);
209
219
  releaseAdmin.authorizeService(
210
220
  releaseAuth,
@@ -217,66 +227,69 @@ contract ReleaseRegistry is
217
227
  nftId = _registry.registerService(info, serviceVersion, serviceDomain);
218
228
  service.linkToRegisteredNftId();
219
229
  }
230
+
231
+
220
232
  // TODO return activated version
221
233
  function activateNextRelease()
222
234
  external
223
235
  restricted // GIF_ADMIN_ROLE
224
236
  {
225
- VersionPart version = _next;
237
+ VersionPart release = _next;
226
238
 
227
239
  // release can transition to ACTIVE state
228
- checkTransition(_releaseInfo[version].state, RELEASE(), DEPLOYED(), ACTIVE());
240
+ checkTransition(_releaseInfo[release].state, RELEASE(), DEPLOYED(), ACTIVE());
229
241
 
230
- _latest = version;
231
- _releaseInfo[version].state = ACTIVE();
232
- _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
242
+ _latest = release;
243
+ _releaseInfo[release].state = ACTIVE();
244
+ _releaseInfo[release].activatedAt = TimestampLib.blockTimestamp();
245
+ _releaseInfo[release].disabledAt = TimestampLib.max();
233
246
 
234
247
  // grant special roles for registry/staking/pool services
235
248
  // this will enable access to core contracts functions
236
249
 
237
250
  // registry service MUST be registered for each release
238
- address service = _registry.getServiceAddress(REGISTRY(), version);
251
+ address service = _registry.getServiceAddress(REGISTRY(), release);
239
252
  if(service == address(0)) {
240
- revert ErrorReleaseRegistryRegistryServiceMissing(version);
253
+ revert ErrorReleaseRegistryRegistryServiceMissing(release);
241
254
  }
242
255
 
243
256
  _admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
244
257
 
245
- service = _registry.getServiceAddress(STAKING(), version);
258
+ service = _registry.getServiceAddress(STAKING(), release);
246
259
  if(service != address(0)) {
247
260
  _admin.grantServiceRoleForAllVersions(IService(service), STAKING());
248
261
  }
249
262
 
250
- service = _registry.getServiceAddress(POOL(), version);
263
+ service = _registry.getServiceAddress(POOL(), release);
251
264
  if(service != address(0)) {
252
265
  _admin.grantServiceRoleForAllVersions(IService(service), POOL());
253
266
  }
254
267
 
255
- _setReleaseLocked(version, false);
268
+ _setReleaseLocked(release, false);
256
269
 
257
- emit LogReleaseActivation(version);
270
+ emit LogReleaseActivation(release);
258
271
  }
259
272
 
260
273
  /// @dev stop/resume operations with restricted functions
261
- function setActive(VersionPart version, bool active)
274
+ function setActive(VersionPart release, bool active)
262
275
  public
263
276
  restricted
264
277
  {
265
- StateId state = _releaseInfo[version].state;
278
+ StateId state = _releaseInfo[release].state;
266
279
 
267
280
  if(active) {
268
281
  checkTransition(state, RELEASE(), PAUSED(), ACTIVE());
269
- _releaseInfo[version].state = ACTIVE();
270
- _releaseInfo[version].disabledAt = zeroTimestamp();
271
- emit LogReleaseEnabled(version);
282
+ _releaseInfo[release].state = ACTIVE();
283
+ _releaseInfo[release].disabledAt = TimestampLib.max();
284
+ emit LogReleaseEnabled(release);
272
285
  } else {
273
286
  checkTransition(state, RELEASE(), ACTIVE(), PAUSED());
274
- _releaseInfo[version].state = PAUSED();
275
- _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
276
- emit LogReleaseDisabled(version);
287
+ _releaseInfo[release].state = PAUSED();
288
+ _releaseInfo[release].disabledAt = TimestampLib.blockTimestamp();
289
+ emit LogReleaseDisabled(release);
277
290
  }
278
291
 
279
- _setReleaseLocked(version, !active);
292
+ _setReleaseLocked(release, !active);
280
293
  }
281
294
 
282
295
  //--- view functions ----------------------------------------------------//
@@ -289,12 +302,12 @@ contract ReleaseRegistry is
289
302
  return Clones.predictDeterministicAddress(implementation, salt, deployer);
290
303
  }
291
304
 
292
- function isActiveRelease(VersionPart version) public view returns(bool) {
293
- return _releaseInfo[version].state == ACTIVE();
305
+ function isActiveRelease(VersionPart release) public view returns(bool) {
306
+ return _releaseInfo[release].state == ACTIVE();
294
307
  }
295
308
 
296
- function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
297
- return _releaseInfo[version];
309
+ function getReleaseInfo(VersionPart release) external view returns(IRelease.ReleaseInfo memory) {
310
+ return _releaseInfo[release];
298
311
  }
299
312
 
300
313
  /// @dev Returns the number of created releases.
@@ -305,7 +318,7 @@ contract ReleaseRegistry is
305
318
 
306
319
  /// @dev Returns the n-th release version.
307
320
  /// Valid values for idx [0 .. releases() - 1]
308
- function getVersion(uint256 idx) external view returns (VersionPart version) {
321
+ function getVersion(uint256 idx) external view returns (VersionPart release) {
309
322
  // return _releases;
310
323
  return _release[idx];
311
324
  }
@@ -320,20 +333,20 @@ contract ReleaseRegistry is
320
333
  return _latest;
321
334
  }
322
335
 
323
- function getState(VersionPart version) external view returns (StateId stateId) {
324
- return _releaseInfo[version].state;
336
+ function getState(VersionPart release) external view returns (StateId stateId) {
337
+ return _releaseInfo[release].state;
325
338
  }
326
339
 
327
340
  function getRemainingServicesToRegister() external view returns (uint256 services) {
328
341
  return _servicesToRegister - _registeredServices;
329
342
  }
330
343
 
331
- function getServiceAuthorization(VersionPart version)
344
+ function getServiceAuthorization(VersionPart release)
332
345
  external
333
346
  view
334
347
  returns (IServiceAuthorization serviceAuthorization)
335
348
  {
336
- return _releaseInfo[version].auth;
349
+ return _releaseInfo[release].auth;
337
350
  }
338
351
 
339
352
  function getRegistryAdmin() external view returns (address) {
@@ -348,32 +361,41 @@ contract ReleaseRegistry is
348
361
 
349
362
  //--- private functions ----------------------------------------------------//
350
363
 
351
- function _setReleaseLocked(VersionPart version, bool locked)
364
+ function _setReleaseLocked(VersionPart release, bool locked)
352
365
  private
353
366
  {
354
- ReleaseAdmin releaseAdmin = ReleaseAdmin(address(_releaseInfo[version].admin));
355
- releaseAdmin.setReleaseLocked(locked);
367
+ ReleaseAdmin(
368
+ _releaseInfo[release].releaseAdmin).setReleaseLocked(locked);
356
369
  }
357
370
 
358
- function _createReleaseAdmin()
371
+
372
+ function _cloneNewReleaseAdmin(VersionPart release)
359
373
  private
360
374
  returns (ReleaseAdmin clonedAdmin)
361
375
  {
362
- AccessManagerCloneable releaseAccessManager = AccessManagerCloneable(
376
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
363
377
  Clones.clone(
364
378
  _masterReleaseAdmin.authority()
365
379
  )
366
380
  );
381
+
367
382
  clonedAdmin = ReleaseAdmin(
368
383
  Clones.clone(
369
384
  address(_masterReleaseAdmin)
370
385
  )
371
386
  );
372
- clonedAdmin.initialize(releaseAccessManager);
373
- clonedAdmin.completeSetup(address(_registry), address(this), _next);
387
+
388
+ clonedAdmin.initialize(clonedAccessManager);
389
+ clonedAdmin.completeSetup(
390
+ address(_registry),
391
+ address(this), // release registry (this contract)
392
+ release);
393
+
394
+ // lock release (remains locked until activation)
374
395
  clonedAdmin.setReleaseLocked(true);
375
396
  }
376
397
 
398
+
377
399
  function _verifyServiceAuthorization(
378
400
  IServiceAuthorization serviceAuthorization,
379
401
  VersionPart releaseVersion,
@@ -485,21 +507,5 @@ contract ReleaseRegistry is
485
507
  revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
486
508
  }
487
509
  }
488
-
489
- /// @dev returns true iff a the address passes some simple proxy tests.
490
- function _isRegistry(address registryAddress) internal view returns (bool) {
491
-
492
- // zero address is certainly not registry
493
- if (registryAddress == address(0)) {
494
- return false;
495
- }
496
- // TODO try catch and return false in case of revert or just panic
497
- // check if contract returns a zero nft id for its own address
498
- if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
499
- return false;
500
- }
501
-
502
- return true;
503
- }
504
510
  }
505
511