@etherisc/gif-next 3.0.0-d6cf78d-199 → 3.0.0-f90c901-018

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 (444) hide show
  1. package/README.md +2 -2
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +139 -72
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +110 -116
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +72 -33
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +89 -66
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +122 -101
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +20 -65
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +31 -55
  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 +20 -10
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +1 -1
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +18 -42
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +126 -75
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +41 -65
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +72 -57
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +198 -139
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +140 -150
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +84 -56
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +71 -32
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +166 -104
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +41 -65
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +200 -138
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +41 -65
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +159 -102
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +41 -65
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +163 -106
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +177 -120
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +41 -65
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +171 -114
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +41 -65
  63. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +49 -54
  66. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +77 -25
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +83 -44
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +144 -50
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +169 -147
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +43 -67
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +34 -34
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +138 -75
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +104 -112
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2 -2
  85. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +2 -2
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  88. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +53 -58
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  91. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +3 -8
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  101. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  106. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +132 -81
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +41 -65
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +94 -66
  114. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +80 -83
  116. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +82 -67
  118. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +149 -148
  120. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +111 -129
  122. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +88 -73
  124. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +41 -65
  126. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +176 -117
  128. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +129 -139
  130. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +71 -32
  132. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +100 -72
  134. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +94 -86
  136. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  137. package/artifacts/contracts/pool/Pool.sol/Pool.json +88 -73
  138. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +24 -247
  140. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +233 -165
  142. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +140 -130
  144. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +138 -63
  146. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +110 -112
  148. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +72 -57
  150. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +41 -65
  152. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +182 -115
  154. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +132 -138
  156. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +71 -32
  158. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +71 -32
  160. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +82 -64
  162. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +82 -43
  164. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +84 -56
  166. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +75 -36
  168. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +173 -127
  170. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +2 -2
  172. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +122 -128
  174. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.json +161 -94
  176. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +116 -122
  178. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  179. package/artifacts/contracts/product/Product.sol/Product.json +72 -57
  180. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.json +146 -63
  182. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +109 -107
  184. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  185. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +155 -56
  187. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +202 -216
  189. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  190. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +1 -15
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +314 -96
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +163 -142
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +57 -77
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +285 -244
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +115 -110
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +159 -150
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +127 -185
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +32 -56
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +13 -29
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +84 -39
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +164 -320
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +115 -141
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +421 -169
  220. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +96 -38
  223. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +82 -226
  225. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +84 -56
  227. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  228. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +1 -28
  230. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +1 -12
  232. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +77 -25
  234. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +1 -12
  236. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IService.sol/IService.json +71 -32
  238. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +74 -0
  240. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  241. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +72 -57
  243. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  245. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  246. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  247. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -34
  248. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  249. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +3 -14
  250. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  251. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +76 -24
  252. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  253. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +3 -37
  254. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Service.sol/Service.json +70 -31
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +42 -29
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +30 -17
  260. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  261. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +34 -34
  262. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  263. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +74 -0
  264. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  265. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +101 -56
  266. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  267. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +75 -36
  268. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  269. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  270. package/artifacts/contracts/staking/Staking.sol/Staking.json +170 -109
  271. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +26 -31
  273. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +112 -124
  275. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +5 -22
  277. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +132 -65
  279. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  280. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +105 -111
  281. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  282. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +212 -204
  283. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  284. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +27 -19
  285. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  286. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +16 -16
  287. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  288. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
  292. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  294. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  296. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  299. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  300. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  301. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  303. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  304. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  305. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +4 -4
  307. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  309. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  311. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  313. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  315. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +4 -4
  317. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Version.sol/VersionLib.json +10 -10
  326. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +19 -6
  328. package/artifacts/contracts/upgradeability/IUpgradeable.sol/IUpgradeable.dbg.json +4 -0
  329. package/artifacts/contracts/upgradeability/{IVersionable.sol/IVersionable.json → IUpgradeable.sol/IUpgradeable.json} +54 -4
  330. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  331. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +63 -86
  332. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  333. package/artifacts/contracts/upgradeability/Upgradeable.sol/Upgradeable.dbg.json +4 -0
  334. package/artifacts/contracts/upgradeability/{Versionable.sol/Versionable.json → Upgradeable.sol/Upgradeable.json} +54 -4
  335. package/contracts/accounting/AccountingService.sol +5 -6
  336. package/contracts/accounting/AccountingServiceManager.sol +4 -6
  337. package/contracts/accounting/IAccountingService.sol +1 -1
  338. package/contracts/authorization/AccessAdmin.sol +22 -18
  339. package/contracts/authorization/AccessAdminLib.sol +12 -9
  340. package/contracts/authorization/AccessManagerCloneable.sol +24 -48
  341. package/contracts/authorization/Authorization.sol +2 -2
  342. package/contracts/authorization/IAccessAdmin.sol +3 -3
  343. package/contracts/authorization/IServiceAuthorization.sol +1 -1
  344. package/contracts/authorization/ServiceAuthorization.sol +4 -4
  345. package/contracts/distribution/BasicDistribution.sol +0 -2
  346. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -4
  347. package/contracts/distribution/Distribution.sol +0 -2
  348. package/contracts/distribution/DistributionService.sol +24 -20
  349. package/contracts/distribution/DistributionServiceManager.sol +4 -6
  350. package/contracts/examples/fire/FirePool.sol +0 -4
  351. package/contracts/examples/fire/FireProduct.sol +0 -4
  352. package/contracts/examples/unpermissioned/SimpleDistribution.sol +0 -4
  353. package/contracts/examples/unpermissioned/SimpleOracle.sol +0 -4
  354. package/contracts/examples/unpermissioned/SimplePool.sol +0 -4
  355. package/contracts/examples/unpermissioned/SimpleProduct.sol +0 -4
  356. package/contracts/instance/Instance.sol +7 -11
  357. package/contracts/instance/InstanceAdmin.sol +10 -17
  358. package/contracts/instance/InstanceAuthorizationV3.sol +4 -2
  359. package/contracts/instance/InstanceReader.sol +15 -15
  360. package/contracts/instance/InstanceService.sol +18 -20
  361. package/contracts/instance/InstanceServiceManager.sol +4 -6
  362. package/contracts/instance/base/Cloneable.sol +4 -10
  363. package/contracts/instance/base/ObjectSet.sol +2 -2
  364. package/contracts/oracle/BasicOracle.sol +0 -2
  365. package/contracts/oracle/BasicOracleAuthorization.sol +3 -1
  366. package/contracts/oracle/IOracleService.sol +0 -4
  367. package/contracts/oracle/Oracle.sol +3 -4
  368. package/contracts/oracle/OracleService.sol +37 -67
  369. package/contracts/oracle/OracleServiceManager.sol +4 -6
  370. package/contracts/pool/BasicPool.sol +2 -4
  371. package/contracts/pool/BasicPoolAuthorization.sol +5 -4
  372. package/contracts/pool/BundleService.sol +25 -19
  373. package/contracts/pool/BundleServiceManager.sol +5 -7
  374. package/contracts/pool/IPoolService.sol +5 -6
  375. package/contracts/pool/Pool.sol +1 -3
  376. package/contracts/pool/PoolLib.sol +5 -102
  377. package/contracts/pool/PoolService.sol +67 -101
  378. package/contracts/pool/PoolServiceManager.sol +4 -6
  379. package/contracts/product/ApplicationService.sol +13 -34
  380. package/contracts/product/ApplicationServiceManager.sol +4 -6
  381. package/contracts/product/BasicProduct.sol +0 -2
  382. package/contracts/product/BasicProductAuthorization.sol +5 -4
  383. package/contracts/product/ClaimService.sol +10 -34
  384. package/contracts/product/ClaimServiceManager.sol +5 -7
  385. package/contracts/product/IPolicyService.sol +0 -1
  386. package/contracts/product/PolicyService.sol +44 -57
  387. package/contracts/product/PolicyServiceManager.sol +4 -6
  388. package/contracts/product/PricingService.sol +7 -8
  389. package/contracts/product/PricingServiceManager.sol +4 -6
  390. package/contracts/product/Product.sol +0 -2
  391. package/contracts/product/RiskService.sol +8 -40
  392. package/contracts/product/RiskServiceManager.sol +4 -6
  393. package/contracts/registry/IRegistry.sol +20 -14
  394. package/contracts/registry/IRegistryService.sol +10 -14
  395. package/contracts/registry/IRelease.sol +0 -3
  396. package/contracts/registry/Registry.sol +124 -78
  397. package/contracts/registry/RegistryAdmin.sol +11 -22
  398. package/contracts/registry/RegistryAuthorization.sol +4 -3
  399. package/contracts/registry/RegistryService.sol +99 -82
  400. package/contracts/registry/RegistryServiceManager.sol +4 -11
  401. package/contracts/registry/ReleaseAdmin.sol +9 -16
  402. package/contracts/registry/ReleaseRegistry.sol +64 -74
  403. package/contracts/registry/ServiceAuthorizationV3.sol +4 -3
  404. package/contracts/registry/TokenRegistry.sol +6 -15
  405. package/contracts/shared/Component.sol +27 -22
  406. package/contracts/shared/ComponentService.sol +45 -130
  407. package/contracts/shared/ComponentServiceManager.sol +5 -7
  408. package/contracts/shared/ContractLib.sol +359 -93
  409. package/contracts/shared/IComponent.sol +5 -3
  410. package/contracts/shared/IComponentService.sol +0 -14
  411. package/contracts/shared/IInstanceLinkedComponent.sol +4 -7
  412. package/contracts/shared/INftOwnable.sol +0 -2
  413. package/contracts/shared/IRegisterable.sol +14 -3
  414. package/contracts/shared/IRegistryLinked.sol +1 -3
  415. package/contracts/shared/IService.sol +2 -2
  416. package/contracts/shared/IVersionable.sol +19 -0
  417. package/contracts/shared/InstanceLinkedComponent.sol +32 -82
  418. package/contracts/shared/NftOwnable.sol +9 -22
  419. package/contracts/shared/PolicyHolder.sol +2 -4
  420. package/contracts/shared/Registerable.sol +37 -20
  421. package/contracts/shared/RegistryLinked.sol +4 -23
  422. package/contracts/shared/Service.sol +8 -9
  423. package/contracts/shared/TokenHandler.sol +4 -1
  424. package/contracts/shared/Versionable.sol +47 -0
  425. package/contracts/staking/IStaking.sol +2 -2
  426. package/contracts/staking/Staking.sol +28 -33
  427. package/contracts/staking/StakingLib.sol +3 -1
  428. package/contracts/staking/StakingManager.sol +3 -6
  429. package/contracts/staking/StakingReader.sol +9 -17
  430. package/contracts/staking/StakingService.sol +16 -13
  431. package/contracts/staking/StakingServiceManager.sol +4 -8
  432. package/contracts/staking/StakingStore.sol +8 -8
  433. package/contracts/staking/TargetHandler.sol +4 -5
  434. package/contracts/type/Version.sol +15 -16
  435. package/contracts/upgradeability/{IVersionable.sol → IUpgradeable.sol} +13 -19
  436. package/contracts/upgradeability/ProxyManager.sol +46 -54
  437. package/contracts/upgradeability/{Versionable.sol → Upgradeable.sol} +25 -14
  438. package/package.json +1 -1
  439. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +0 -4
  440. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +0 -24
  441. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +0 -4
  442. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +0 -40
  443. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +0 -4
  444. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +0 -4
@@ -18,6 +18,8 @@ import {IStaking} from "../staking/IStaking.sol";
18
18
  import {ReleaseRegistry} from "./ReleaseRegistry.sol";
19
19
  import {TokenRegistry} from "./TokenRegistry.sol";
20
20
  import {RegistryAdmin} from "./RegistryAdmin.sol";
21
+ import {Versionable} from "../shared/Versionable.sol";
22
+ import {VersionLib, Version} from "../type/Version.sol";
21
23
 
22
24
  /// @dev IMPORTANT
23
25
  // Each NFT minted by registry is accosiated with:
@@ -31,20 +33,27 @@ import {RegistryAdmin} from "./RegistryAdmin.sol";
31
33
  // 5) registerRegistry() -> registers IRegistry address (from different chain) by GifAdmin. Works ONLY on mainnet.
32
34
  // Note: getters by address MUST not be used with this address (will return 0 or data related to different object or even revert)
33
35
 
36
+
37
+ function GIF_INITIAL_RELEASE() pure returns (VersionPart) {
38
+ return VersionPartLib.toVersionPart(3);
39
+ }
40
+
41
+
34
42
  /// @dev Chain Registry contract implementing IRegistry.
35
43
  /// IRegistry for method details.
36
44
  contract Registry is
37
45
  Initializable,
38
46
  AccessManaged,
47
+ Versionable,
39
48
  IRegistry
40
49
  {
41
50
  /// @dev Protocol NFT ID
42
51
  NftId public immutable PROTOCOL_NFT_ID;
43
52
 
44
- /// @dev Gobal registry NFT ID
53
+ /// @dev Global registry NFT ID
45
54
  NftId public immutable GLOBAL_REGISTRY_NFT_ID;
46
55
 
47
- /// @dev Gobal registry address on mainnet.
56
+ /// @dev Global registry address on mainnet.
48
57
  address public immutable GLOBAL_REGISTRY_ADDRESS;
49
58
 
50
59
  /// @dev Registry NFT ID
@@ -68,8 +77,9 @@ contract Registry is
68
77
  mapping(uint256 chainId => NftId registryNftId) private _registryNftIdByChainId;
69
78
  uint256[] private _chainId;
70
79
 
71
- /// @dev keep track of object info and address reverse lookup
80
+ /// @dev keep track of object info, data and address reverse lookup
72
81
  mapping(NftId nftId => ObjectInfo info) private _info;
82
+ mapping(NftId nftId => bytes data) private _data;
73
83
  mapping(address object => NftId nftId) private _nftIdByAddress;
74
84
 
75
85
  /// @dev keep track of service addresses by version and domain
@@ -146,7 +156,8 @@ contract Registry is
146
156
  function registerRegistry(
147
157
  NftId nftId,
148
158
  uint256 chainId,
149
- address registryAddress
159
+ address registryAddress,
160
+ VersionPart release
150
161
  )
151
162
  external
152
163
  restricted()
@@ -180,20 +191,19 @@ contract Registry is
180
191
  nftId: nftId,
181
192
  parentNftId: REGISTRY_NFT_ID,
182
193
  objectType: REGISTRY(),
194
+ release: release,
183
195
  isInterceptor: false,
184
- objectAddress: registryAddress,
185
- initialOwner: NFT_LOCK_ADDRESS,
186
- data: ""
187
- }),
196
+ objectAddress: registryAddress}),
188
197
  false); // do not update address lookup for objects on a different chain
189
198
  }
190
199
 
191
200
  // TODO limit service owner to registry admin?
192
201
  /// @inheritdoc IRegistry
193
202
  function registerService(
194
- ObjectInfo memory info,
195
- VersionPart version,
196
- ObjectType domain
203
+ ObjectInfo memory info,
204
+ address initialOwner,
205
+ ObjectType domain,
206
+ bytes memory data
197
207
  )
198
208
  external
199
209
  restricted()
@@ -206,12 +216,13 @@ contract Registry is
206
216
  }
207
217
 
208
218
  // version is defined
209
- if(version.eqz()) {
219
+ VersionPart release = info.release;
220
+ if(release.eqz()) {
210
221
  revert ErrorRegistryServiceVersionZero(service);
211
222
  }
212
223
  // service domain is defined
213
224
  if(domain.eqz()) {
214
- revert ErrorRegistryServiceDomainZero(service, version);
225
+ revert ErrorRegistryServiceDomainZero(service, release);
215
226
  }
216
227
 
217
228
  // service has proper type
@@ -221,30 +232,31 @@ contract Registry is
221
232
 
222
233
  // service parent has registry type
223
234
  if(info.parentNftId != REGISTRY_NFT_ID) {
224
- revert ErrorRegistryServiceParentNotRegistry(service, version, info.parentNftId);
235
+ revert ErrorRegistryServiceParentNotRegistry(service, release, info.parentNftId);
225
236
  }
226
237
 
227
238
  // service has not already been registered
228
- if(_service[version][domain] != address(0)) {
229
- revert ErrorRegistryServiceDomainAlreadyRegistered(service, version, domain);
239
+ if(_service[release][domain] != address(0)) {
240
+ revert ErrorRegistryServiceDomainAlreadyRegistered(service, release, domain);
230
241
  }
231
242
 
232
- _service[version][domain] = service;
243
+ _service[release][domain] = service;
233
244
 
234
- emit LogRegistryServiceRegistered(version, domain);
245
+ emit LogRegistryServiceRegistered(release, domain);
235
246
 
236
- nftId = _register(info);
247
+ nftId = _register(info, initialOwner, data);
237
248
  }
238
249
 
239
250
 
240
251
  /// @inheritdoc IRegistry
241
- function register(ObjectInfo memory info)
252
+ function register(ObjectInfo memory info, address initialOwner, bytes memory data)
242
253
  external
243
254
  restricted()
244
255
  returns(NftId nftId)
245
256
  {
246
257
  address objectAddress = info.objectAddress;
247
258
  ObjectType objectType = info.objectType;
259
+ VersionPart parentRelease = _info[info.parentNftId].release;
248
260
 
249
261
  // specialized functions have to be used to register registries and services
250
262
  if(objectType == REGISTRY() || objectType == STAKING() || objectType == SERVICE()) {
@@ -268,18 +280,21 @@ contract Registry is
268
280
  }
269
281
  }
270
282
 
271
- nftId = _register(info);
283
+ _checkRelease(info.release, parentRelease, parentType);
284
+
285
+ nftId = _register(info, initialOwner, data);
272
286
  }
273
287
 
274
288
 
275
289
  /// @inheritdoc IRegistry
276
- function registerWithCustomType(ObjectInfo memory info)
290
+ function registerWithCustomType(ObjectInfo memory info, address initialOwner, bytes memory data)
277
291
  external
278
292
  restricted()
279
293
  returns(NftId nftId)
280
294
  {
281
295
  ObjectType objectType = info.objectType;
282
296
  ObjectType parentType = _info[info.parentNftId].objectType;
297
+ VersionPart parentRelease = _info[info.parentNftId].release;
283
298
 
284
299
  if(_coreTypes[objectType]) {
285
300
  revert ErrorRegistryCoreTypeRegistration();
@@ -295,13 +310,36 @@ contract Registry is
295
310
  revert ErrorRegistryTypeCombinationInvalid(info.objectAddress, objectType, parentType);
296
311
  }
297
312
 
298
- nftId = _register(info);
313
+ _checkRelease(info.release, parentRelease, parentType);
314
+
315
+ nftId = _register(info, initialOwner, data);
299
316
  }
300
317
 
318
+ function _checkRelease(
319
+ VersionPart objectRelease,
320
+ VersionPart parentRelease,
321
+ ObjectType parentType
322
+ ) internal view
323
+ {
324
+ VersionPart senderRelease = _info[_nftIdByAddress[msg.sender]].release;
325
+
326
+ // assume:
327
+ // 1) only address with role can reach this function -> caller is registered registry service
328
+ // 2) locked registry service can not call registry -> no "caller is locked" check is needed
329
+ if(parentType == PROTOCOL()) {
330
+ // STAKING for PROTOCOL, parent release is 0
331
+ if(senderRelease != objectRelease) {
332
+ revert ErrorRegistryReleaseMismatch(objectRelease, parentRelease, senderRelease);
333
+ }
334
+ }
335
+ else if(senderRelease != objectRelease || senderRelease != parentRelease) {
336
+ revert ErrorRegistryReleaseMismatch(objectRelease, parentRelease, senderRelease);
337
+ }
338
+ }
301
339
 
302
340
  /// @dev earliest GIF major version
303
341
  function getInitialRelease() external view returns (VersionPart) {
304
- return VersionPartLib.toVersionPart(_releaseRegistry.INITIAL_GIF_VERSION());
342
+ return GIF_INITIAL_RELEASE();
305
343
  }
306
344
 
307
345
  /// @dev next GIF release version to be released
@@ -366,13 +404,20 @@ contract Registry is
366
404
  return _info[nftId].parentNftId;
367
405
  }
368
406
 
369
- function isObjectType(address contractAddress, ObjectType expectedObjectType) external view returns (bool) {
407
+ function isObjectType(address contractAddress, ObjectType expectedObjectType, VersionPart release) external view returns (bool) {
370
408
  NftId nftId = _nftIdByAddress[contractAddress];
371
- return isObjectType(nftId, expectedObjectType);
409
+ return isObjectType(nftId, expectedObjectType, release);
372
410
  }
373
411
 
374
- function isObjectType(NftId nftId, ObjectType expectedObjectType) public view returns (bool) {
375
- return _info[nftId].objectType == expectedObjectType;
412
+ function isObjectType(NftId nftId, ObjectType expectedObjectType, VersionPart release) public view returns (bool) {
413
+ return (
414
+ _info[nftId].objectType == expectedObjectType &&
415
+ _info[nftId].release == release
416
+ );
417
+ }
418
+
419
+ function getObjectRelease(NftId nftId) external view returns (VersionPart release) {
420
+ return _info[nftId].release;
376
421
  }
377
422
 
378
423
  function getObjectAddress(NftId nftId) external view returns (address) {
@@ -383,6 +428,14 @@ contract Registry is
383
428
  return _info[_nftIdByAddress[object]];
384
429
  }
385
430
 
431
+ function getObjectData(NftId nftId) external view returns (bytes memory data) {
432
+ return _data[nftId];
433
+ }
434
+
435
+ function getObjectData(address objectAddress) external view returns (bytes memory data) {
436
+ return _data[_nftIdByAddress[objectAddress]];
437
+ }
438
+
386
439
  function isRegistered(NftId nftId) public view returns (bool) {
387
440
  return _info[nftId].objectType.gtz();
388
441
  }
@@ -441,6 +494,12 @@ contract Registry is
441
494
  return ownerOf(address(this));
442
495
  }
443
496
 
497
+ // Versionable
498
+
499
+ function getVersion() public pure override returns (Version) {
500
+ return VersionLib.toVersion(GIF_INITIAL_RELEASE().toInt(), 0 , 0);
501
+ }
502
+
444
503
  // IERC165
445
504
 
446
505
  function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
@@ -454,62 +513,49 @@ contract Registry is
454
513
  // Internals
455
514
 
456
515
  /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
457
- function _register(ObjectInfo memory info)
516
+ function _register(ObjectInfo memory info, address initialOwner, bytes memory data)
458
517
  internal
459
518
  returns(NftId nftId)
460
519
  {
461
- ObjectType objectType = info.objectType; // do not care here, never PROTOCOL(), REGISTRY()
462
- bool isInterceptor = info.isInterceptor;
463
- address objectAddress = info.objectAddress; // do not care here, can be 0
464
- address owner = info.initialOwner; // do not care here, can be 0, can be equal info.objectAddress
465
-
466
520
  NftId parentNftId = info.parentNftId; // do not care here, can not be 0
467
521
  ObjectInfo memory parentInfo = _info[parentNftId];
468
- address parentAddress = parentInfo.objectAddress; // can be 0
469
-
470
- // parent is contract -> need to check? -> check before minting
471
- // special case: staking: to protocol possible as well
472
- // NO LONGER TRUE: special case: global registry nft as parent when not on mainnet -> global registry address is 0
473
- // special case: when parentNftId == CHAIN_NFT.mint(), check for zero parent address before mint
474
- // special case: when parentNftId == CHAIN_NFT.mint() && objectAddress == initialOwner
475
- // Parent can have 0 address in case of STAKE for PROTOCOL / CUSTOM_TYPE for POLICY
476
- // But it MUST be registered -> parentType != 0 && parentNftId != 0
477
- /*if(objectType != STAKE()) {
478
- if(parentAddress == address(0)) {
479
- revert ErrorRegistryParentAddressZero();
480
- }
481
- }*/
482
522
 
483
523
  // global registry is never parent when not on mainnet
484
524
  if(block.chainid != 1) {
485
525
  if(parentNftId == GLOBAL_REGISTRY_NFT_ID) {
486
- revert ErrorRegistryGlobalRegistryAsParent(objectAddress, objectType);
526
+ revert ErrorRegistryGlobalRegistryAsParent(info.objectAddress, info.objectType);
487
527
  }
488
528
  }
489
529
 
490
530
  address interceptorAddress = _getInterceptor(
491
- isInterceptor,
492
- objectType,
493
- objectAddress,
531
+ info.isInterceptor,
532
+ info.objectType,
533
+ info.objectAddress,
494
534
  parentInfo.isInterceptor,
495
- parentAddress);
535
+ parentInfo.objectAddress);
536
+
537
+ uint256 tokenId = CHAIN_NFT.mint(
538
+ initialOwner,
539
+ interceptorAddress,
540
+ EMPTY_URI);
496
541
 
497
- uint256 tokenId = CHAIN_NFT.getNextTokenId();
498
542
  nftId = NftIdLib.toNftId(tokenId);
499
543
  info.nftId = nftId;
500
544
 
501
545
  _info[nftId] = info;
502
- _setAddressForNftId(nftId, objectAddress);
503
-
504
- emit LogRegistryObjectRegistered(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
505
-
506
- // calls nft receiver(1) and interceptor(2)
507
- uint256 mintedTokenId = CHAIN_NFT.mint(
508
- owner,
509
- interceptorAddress,
510
- EMPTY_URI);
546
+ if(data.length > 0) {
547
+ _data[nftId] = data;
548
+ }
549
+ _setAddressForNftId(nftId, info.objectAddress);
511
550
 
512
- assert(mintedTokenId == tokenId);
551
+ emit LogRegistryObjectRegistered(
552
+ nftId,
553
+ parentNftId,
554
+ info.objectType,
555
+ info.release,
556
+ info.isInterceptor,
557
+ info.objectAddress,
558
+ initialOwner);
513
559
  }
514
560
 
515
561
  /// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
@@ -561,10 +607,10 @@ contract Registry is
561
607
  nftId: protocolNftId,
562
608
  parentNftId: NftIdLib.zero(),
563
609
  objectType: PROTOCOL(),
610
+ release: VersionPartLib.toVersionPart(0),
564
611
  isInterceptor: false,
565
- objectAddress: address(0),
566
- initialOwner: NFT_LOCK_ADDRESS,
567
- data: ""}),
612
+ objectAddress: address(0)}),
613
+ NFT_LOCK_ADDRESS, // initial owner of protocol
568
614
  true);
569
615
  }
570
616
 
@@ -584,10 +630,9 @@ contract Registry is
584
630
  nftId: GLOBAL_REGISTRY_NFT_ID,
585
631
  parentNftId: PROTOCOL_NFT_ID,
586
632
  objectType: REGISTRY(),
633
+ release: getRelease(),
587
634
  isInterceptor: false,
588
- objectAddress: GLOBAL_REGISTRY_ADDRESS,
589
- initialOwner: NFT_LOCK_ADDRESS,
590
- data: ""}),
635
+ objectAddress: GLOBAL_REGISTRY_ADDRESS}),
591
636
  block.chainid == 1);// update address lookup for global registry only on mainnet
592
637
 
593
638
  // if not on mainnet: register this registry with global registry as parent
@@ -603,10 +648,9 @@ contract Registry is
603
648
  nftId: registryNftId,
604
649
  parentNftId: GLOBAL_REGISTRY_NFT_ID,
605
650
  objectType: REGISTRY(),
651
+ release: getRelease(),
606
652
  isInterceptor: false,
607
- objectAddress: address(this),
608
- initialOwner: NFT_LOCK_ADDRESS,
609
- data: ""}),
653
+ objectAddress: address(this)}),
610
654
  true);
611
655
  }
612
656
  }
@@ -630,6 +674,7 @@ contract Registry is
630
674
  // register the registry info
631
675
  _registerForNft(
632
676
  info,
677
+ NFT_LOCK_ADDRESS, // initial owner of any registry
633
678
  updateAddressLookup);
634
679
  }
635
680
 
@@ -647,10 +692,10 @@ contract Registry is
647
692
  nftId: stakingNftId,
648
693
  parentNftId: REGISTRY_NFT_ID,
649
694
  objectType: STAKING(),
695
+ release: VersionPartLib.toVersionPart(3),
650
696
  isInterceptor: false,
651
- objectAddress: _stakingAddress,
652
- initialOwner: stakingOwner,
653
- data: ""}),
697
+ objectAddress: _stakingAddress}),
698
+ stakingOwner,
654
699
  true);
655
700
 
656
701
  IStaking(_stakingAddress).initializeTokenHandler();
@@ -658,7 +703,8 @@ contract Registry is
658
703
 
659
704
  /// @dev Register the provided object info for the specified NFT ID.
660
705
  function _registerForNft(
661
- ObjectInfo memory info,
706
+ ObjectInfo memory info,
707
+ address initialOwner,
662
708
  bool updateAddressLookup
663
709
  )
664
710
  internal
@@ -670,7 +716,7 @@ contract Registry is
670
716
  }
671
717
 
672
718
  // calls nft receiver
673
- CHAIN_NFT.mint(info.initialOwner, info.nftId.toInt());
719
+ CHAIN_NFT.mint(initialOwner, info.nftId.toInt());
674
720
  }
675
721
 
676
722
  function _setAddressForNftId(NftId nftId, address objectAddress)
@@ -7,12 +7,11 @@ import {IService} from "../shared/IService.sol";
7
7
  import {IStaking} from "../staking/IStaking.sol";
8
8
 
9
9
  import {AccessAdmin} from "../authorization/AccessAdmin.sol";
10
- import {AccessAdminLib} from "../authorization/AccessAdminLib.sol";
11
10
  import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
12
11
  import {ObjectType, REGISTRY} from "../type/ObjectType.sol";
13
12
  import {RoleId, RoleIdLib, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE} from "../type/RoleId.sol";
13
+ import {GIF_INITIAL_RELEASE} from "../registry/Registry.sol";
14
14
  import {Str} from "../type/String.sol";
15
- import {VersionPart} from "../type/Version.sol";
16
15
 
17
16
  /*
18
17
  1) GIF_MANAGER_ROLE
@@ -52,7 +51,6 @@ contract RegistryAdmin is
52
51
  // completeSetup
53
52
  error ErrorRegistryAdminNotRegistry(address registry);
54
53
 
55
- address internal _registry;
56
54
  address private _releaseRegistry;
57
55
  address private _tokenRegistry;
58
56
  address private _staking;
@@ -62,43 +60,34 @@ contract RegistryAdmin is
62
60
  constructor() {
63
61
  initialize(
64
62
  address(new AccessManagerCloneable()),
65
- "RegistryAdmin");
63
+ "RegistryAdmin",
64
+ GIF_INITIAL_RELEASE());
66
65
  }
67
66
 
68
67
 
69
68
  function completeSetup(
70
- address registry,
71
69
  address authorization,
72
- VersionPart release,
73
70
  address gifAdmin,
74
71
  address gifManager
75
72
  )
76
73
  public
77
74
  virtual
78
- reinitializer(type(uint8).max)
79
75
  {
80
76
  // checks
81
- AccessAdminLib.checkRegistry(registry);
77
+ _checkAuthorization(authorization, REGISTRY(), getRelease(), false, true);
82
78
 
83
- AccessManagerCloneable(
84
- authority()).completeSetup(
85
- registry,
86
- release);
87
-
88
- _checkAuthorization(authorization, REGISTRY(), release, false, true);
89
-
90
- _registry = registry;
79
+ // effects
91
80
  _authorization = IAuthorization(authorization);
92
81
 
93
- IRegistry registryContract = IRegistry(registry);
94
- _releaseRegistry = registryContract.getReleaseRegistryAddress();
95
- _tokenRegistry = registryContract.getTokenRegistryAddress();
96
- _staking = registryContract.getStakingAddress();
82
+ IRegistry registry = _getRegistry();
83
+ _releaseRegistry = registry.getReleaseRegistryAddress();
84
+ _tokenRegistry = registry.getTokenRegistryAddress();
85
+ _staking = registry.getStakingAddress();
97
86
  _stakingTargetHandler = address(IStaking(_staking).getTargetHandler());
98
87
  _stakingStore = address(IStaking(_staking).getStakingStore());
99
88
 
100
89
  // link nft ownability to registry
101
- _linkToNftOwnable(_registry);
90
+ _linkToNftOwnable(address(_getRegistry()));
102
91
 
103
92
  _createRoles(_authorization);
104
93
 
@@ -143,7 +132,7 @@ contract RegistryAdmin is
143
132
  internal
144
133
  {
145
134
  // create unchecked registry targets
146
- _createTarget(_registry, registryTargetName, TargetType.Core, false);
135
+ _createTarget(address(_getRegistry()), registryTargetName, TargetType.Core, false);
147
136
  _createTarget(address(this), REGISTRY_ADMIN_TARGET_NAME, TargetType.Core, false);
148
137
  _createTarget(_releaseRegistry, RELEASE_REGISTRY_TARGET_NAME, TargetType.Core, false);
149
138
  _createTarget(_tokenRegistry, TOKEN_REGISTRY_TARGET_NAME, TargetType.Core, false);
@@ -12,6 +12,7 @@ import {PUBLIC_ROLE} from "../type/RoleId.sol";
12
12
  import {ReleaseRegistry} from "./ReleaseRegistry.sol";
13
13
  import {RegistryAdmin} from "./RegistryAdmin.sol";
14
14
  import {RoleIdLib, ADMIN_ROLE, GIF_ADMIN_ROLE, GIF_MANAGER_ROLE} from "../type/RoleId.sol";
15
+ import {GIF_INITIAL_RELEASE} from "../registry/Registry.sol";
15
16
  import {StakingStore} from "../staking/StakingStore.sol";
16
17
  import {TargetHandler} from "../staking/TargetHandler.sol";
17
18
  import {TokenHandler} from "../shared/TokenHandler.sol";
@@ -49,7 +50,7 @@ contract RegistryAuthorization
49
50
  Authorization(
50
51
  REGISTRY_TARGET_NAME,
51
52
  REGISTRY(),
52
- 3,
53
+ GIF_INITIAL_RELEASE(),
53
54
  commitHash,
54
55
  TargetType.Core,
55
56
  false) // includeTokenHandler
@@ -100,7 +101,7 @@ contract RegistryAuthorization
100
101
  AccessAdminLib.roleInfo(
101
102
  ADMIN_ROLE(),
102
103
  TargetType.Custom, // custom is only type that allows role removal
103
- 2, // TODO decide on max member count
104
+ 1, // TODO decide on max member count
104
105
  GIF_ADMIN_ROLE_NAME));
105
106
 
106
107
  // gif manager role
@@ -109,7 +110,7 @@ contract RegistryAuthorization
109
110
  AccessAdminLib.roleInfo(
110
111
  ADMIN_ROLE(),
111
112
  TargetType.Custom, // custom is only type that allows role removal
112
- 1, // TODO decide on max member count
113
+ 2, // TODO decide on max member count
113
114
  GIF_MANAGER_ROLE_NAME));
114
115
 
115
116
  }