@etherisc/gif-next 3.0.0-cf1abe2-268 → 3.0.0-d1268ff-759

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