@etherisc/gif-next 3.0.0-1b49bd6-565 → 3.0.0-1c2086e-623

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