@etherisc/gif-next 0.0.2-f1fe735-758 → 0.0.2-f2273b3-211

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 (578) hide show
  1. package/README.md +59 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1379 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1434 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +542 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +211 -270
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +350 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1322 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +589 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +144 -544
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +396 -265
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +147 -109
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +201 -261
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +244 -63
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1475 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1479 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2426 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +161 -73
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +116 -126
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +190 -211
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1462 -241
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +661 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1044 -316
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +135 -330
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +97 -111
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +650 -529
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +48 -7
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  99. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  104. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  105. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  106. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
  108. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +569 -0
  110. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  112. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +141 -126
  114. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  116. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +127 -398
  118. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
  120. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
  122. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
  124. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +589 -0
  126. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +331 -204
  128. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +143 -97
  130. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +206 -29
  132. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +132 -379
  134. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +464 -312
  136. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  137. package/artifacts/contracts/pool/Pool.sol/Pool.json +124 -662
  138. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  140. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +653 -532
  142. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +163 -97
  144. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
  146. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
  148. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
  150. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +589 -0
  152. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +415 -234
  154. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +140 -114
  156. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -9
  158. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
  160. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
  162. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
  164. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +260 -237
  166. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  167. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +57 -4
  168. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +459 -309
  170. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  172. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
  174. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.json +230 -312
  176. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
  178. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  179. package/artifacts/contracts/product/Product.sol/Product.json +258 -536
  180. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
  182. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
  184. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +359 -55
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +72 -152
  190. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  191. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  192. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  193. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  194. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  195. package/artifacts/contracts/registry/Registry.sol/Registry.json +585 -112
  196. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +449 -422
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +48 -7
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1333 -0
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +82 -16
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +5 -5
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +576 -516
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +137 -113
  218. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
  220. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  228. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +89 -88
  230. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +547 -224
  232. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +127 -123
  234. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  236. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  237. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  238. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  239. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  240. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  242. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  244. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  247. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  248. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  249. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  250. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +112 -351
  251. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  252. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  253. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  254. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  255. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  256. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  257. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  258. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  259. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  260. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  261. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  262. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  263. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  264. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  265. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  266. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  271. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  272. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  273. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  274. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +137 -139
  275. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  276. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -16
  277. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
  279. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  280. package/artifacts/contracts/staking/Staking.sol/Staking.json +216 -375
  281. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  282. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +48 -7
  283. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  284. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +126 -95
  285. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  286. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -63
  287. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  288. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +183 -164
  289. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +103 -85
  291. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  292. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +181 -135
  293. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  294. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  295. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  296. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  297. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  299. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  301. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  303. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  305. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  307. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  309. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  310. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  311. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  313. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  314. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  315. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  317. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  319. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  321. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  323. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +118 -5
  325. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +181 -14
  327. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  329. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  331. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  332. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  333. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  335. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  337. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  339. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
  341. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  343. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +66 -2
  345. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  346. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  347. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  348. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  349. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  350. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  351. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  352. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  353. package/contracts/accounting/AccountingService.sol +262 -0
  354. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  355. package/contracts/accounting/IAccountingService.sol +45 -0
  356. package/contracts/{shared → authorization}/AccessAdmin.sol +310 -380
  357. package/contracts/authorization/AccessManagerCloneable.sol +149 -0
  358. package/contracts/authorization/Authorization.sol +337 -0
  359. package/contracts/authorization/IAccess.sol +49 -0
  360. package/contracts/{shared → authorization}/IAccessAdmin.sol +37 -62
  361. package/contracts/authorization/IAuthorization.sol +74 -0
  362. package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -6
  363. package/contracts/{registry → authorization}/ServiceAuthorization.sol +41 -25
  364. package/contracts/distribution/BasicDistribution.sol +141 -0
  365. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  366. package/contracts/distribution/Distribution.sol +153 -125
  367. package/contracts/distribution/DistributionService.sol +172 -111
  368. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  369. package/contracts/distribution/IDistributionComponent.sol +26 -40
  370. package/contracts/distribution/IDistributionService.sol +42 -22
  371. package/contracts/examples/fire/DamageLevel.sol +59 -0
  372. package/contracts/examples/fire/FirePool.sol +90 -0
  373. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  374. package/contracts/examples/fire/FireProduct.sol +438 -0
  375. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  376. package/contracts/examples/fire/FireUSD.sol +26 -0
  377. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  378. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  379. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  380. package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
  381. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  382. package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
  383. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  384. package/contracts/instance/BundleSet.sol +130 -0
  385. package/contracts/instance/IInstance.sol +27 -44
  386. package/contracts/instance/IInstanceService.sol +16 -41
  387. package/contracts/instance/Instance.sol +103 -119
  388. package/contracts/instance/InstanceAdmin.sol +346 -240
  389. package/contracts/instance/InstanceAuthorizationV3.sol +213 -0
  390. package/contracts/instance/InstanceReader.sol +293 -48
  391. package/contracts/instance/InstanceService.sol +145 -180
  392. package/contracts/instance/InstanceServiceManager.sol +8 -13
  393. package/contracts/instance/InstanceStore.sol +29 -3
  394. package/contracts/instance/RiskSet.sol +118 -0
  395. package/contracts/instance/base/ObjectCounter.sol +1 -2
  396. package/contracts/instance/base/ObjectLifecycle.sol +11 -4
  397. package/contracts/instance/base/ObjectSet.sol +77 -0
  398. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  399. package/contracts/instance/module/IBundle.sol +1 -1
  400. package/contracts/instance/module/IComponents.sol +14 -15
  401. package/contracts/instance/module/IDistribution.sol +2 -2
  402. package/contracts/instance/module/IPolicy.sol +26 -25
  403. package/contracts/instance/module/IRisk.sol +3 -0
  404. package/contracts/mock/Dip.sol +1 -1
  405. package/contracts/oracle/BasicOracle.sol +47 -0
  406. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  407. package/contracts/oracle/IOracle.sol +16 -0
  408. package/contracts/oracle/IOracleComponent.sol +2 -1
  409. package/contracts/oracle/IOracleService.sol +2 -1
  410. package/contracts/oracle/Oracle.sol +64 -53
  411. package/contracts/oracle/OracleService.sol +113 -81
  412. package/contracts/oracle/OracleServiceManager.sol +8 -11
  413. package/contracts/pool/BasicPool.sol +175 -0
  414. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  415. package/contracts/pool/BundleService.sol +204 -105
  416. package/contracts/pool/BundleServiceManager.sol +8 -11
  417. package/contracts/pool/IBundleService.sol +31 -22
  418. package/contracts/pool/IPoolComponent.sol +20 -70
  419. package/contracts/pool/IPoolService.sol +90 -75
  420. package/contracts/pool/Pool.sol +209 -163
  421. package/contracts/pool/PoolLib.sol +216 -0
  422. package/contracts/pool/PoolService.sol +546 -241
  423. package/contracts/pool/PoolServiceManager.sol +6 -9
  424. package/contracts/product/ApplicationService.sol +83 -78
  425. package/contracts/product/ApplicationServiceManager.sol +6 -6
  426. package/contracts/product/BasicProduct.sol +51 -0
  427. package/contracts/product/BasicProductAuthorization.sol +56 -0
  428. package/contracts/product/ClaimService.sol +365 -175
  429. package/contracts/product/ClaimServiceManager.sol +6 -6
  430. package/contracts/product/IApplicationService.sol +6 -2
  431. package/contracts/product/IClaimService.sol +44 -8
  432. package/contracts/product/IPolicyService.sol +53 -36
  433. package/contracts/product/IPricingService.sol +10 -10
  434. package/contracts/product/IProductComponent.sol +29 -9
  435. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  436. package/contracts/product/PolicyService.sol +476 -269
  437. package/contracts/product/PolicyServiceLib.sol +65 -0
  438. package/contracts/product/PolicyServiceManager.sol +6 -9
  439. package/contracts/product/PricingService.sol +66 -62
  440. package/contracts/product/PricingServiceManager.sol +6 -9
  441. package/contracts/product/Product.sol +233 -132
  442. package/contracts/product/RiskService.sol +145 -0
  443. package/contracts/product/RiskServiceManager.sol +39 -0
  444. package/contracts/registry/ChainNft.sol +72 -40
  445. package/contracts/registry/IRegistry.sol +74 -32
  446. package/contracts/registry/IRegistryService.sol +3 -10
  447. package/contracts/registry/IRelease.sol +26 -0
  448. package/contracts/registry/ITransferInterceptor.sol +1 -2
  449. package/contracts/registry/Registry.sol +368 -220
  450. package/contracts/registry/RegistryAdmin.sol +238 -219
  451. package/contracts/registry/RegistryService.sol +41 -66
  452. package/contracts/registry/RegistryServiceManager.sol +5 -5
  453. package/contracts/registry/ReleaseAdmin.sol +245 -0
  454. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  455. package/contracts/registry/ReleaseRegistry.sol +511 -0
  456. package/contracts/registry/ServiceAuthorizationV3.sol +107 -60
  457. package/contracts/registry/TokenRegistry.sol +8 -10
  458. package/contracts/shared/Component.sol +74 -128
  459. package/contracts/shared/ComponentService.sol +456 -384
  460. package/contracts/shared/ComponentServiceManager.sol +10 -7
  461. package/contracts/shared/ComponentVerifyingService.sol +29 -18
  462. package/contracts/shared/ContractLib.sol +253 -0
  463. package/contracts/shared/IComponent.sol +8 -17
  464. package/contracts/shared/IComponentService.sol +49 -39
  465. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  466. package/contracts/shared/ILifecycle.sol +3 -1
  467. package/contracts/shared/INftOwnable.sol +2 -0
  468. package/contracts/shared/IPolicyHolder.sol +12 -22
  469. package/contracts/shared/IRegisterable.sol +23 -1
  470. package/contracts/shared/IService.sol +4 -6
  471. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  472. package/contracts/shared/InstanceLinkedComponent.sol +96 -43
  473. package/contracts/shared/KeyValueStore.sol +1 -1
  474. package/contracts/shared/Lifecycle.sol +15 -4
  475. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  476. package/contracts/shared/NftOwnable.sol +31 -11
  477. package/contracts/shared/PolicyHolder.sol +17 -57
  478. package/contracts/shared/Registerable.sol +55 -21
  479. package/contracts/shared/RegistryLinked.sol +9 -14
  480. package/contracts/shared/Service.sol +18 -36
  481. package/contracts/shared/TokenHandler.sol +309 -26
  482. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  483. package/contracts/staking/IStaking.sol +9 -13
  484. package/contracts/staking/IStakingService.sol +24 -9
  485. package/contracts/staking/StakeManagerLib.sol +85 -43
  486. package/contracts/staking/Staking.sol +96 -79
  487. package/contracts/staking/StakingManager.sol +10 -12
  488. package/contracts/staking/StakingReader.sol +21 -33
  489. package/contracts/staking/StakingService.sol +79 -37
  490. package/contracts/staking/StakingServiceManager.sol +8 -7
  491. package/contracts/staking/StakingStore.sol +12 -22
  492. package/contracts/staking/TargetManagerLib.sol +7 -3
  493. package/contracts/type/Amount.sol +27 -5
  494. package/contracts/type/Blocknumber.sol +7 -1
  495. package/contracts/type/ClaimId.sol +6 -1
  496. package/contracts/type/Key32.sol +2 -2
  497. package/contracts/type/Key32Set.sol +62 -0
  498. package/contracts/type/NftId.sol +7 -0
  499. package/contracts/type/ObjectType.sol +89 -27
  500. package/contracts/type/PayoutId.sol +10 -10
  501. package/contracts/type/Referral.sol +1 -0
  502. package/contracts/type/RiskId.sol +35 -4
  503. package/contracts/type/RoleId.sol +75 -94
  504. package/contracts/type/Seconds.sol +21 -1
  505. package/contracts/type/Selector.sol +5 -0
  506. package/contracts/type/StateId.sol +15 -1
  507. package/contracts/type/Timestamp.sol +10 -5
  508. package/contracts/type/UFixed.sol +40 -121
  509. package/contracts/type/Version.sol +18 -6
  510. package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
  511. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  512. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  513. package/package.json +6 -5
  514. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  515. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  516. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  517. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  518. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  519. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  520. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  521. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  522. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  523. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  524. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  525. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  526. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  527. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  528. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  529. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1177
  530. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  531. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -190
  532. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  533. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  534. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  535. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  536. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  537. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  538. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  539. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  540. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  541. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  542. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  543. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  544. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  545. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  546. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  547. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  548. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  549. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  550. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  551. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  552. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  553. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  554. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  555. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  556. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  558. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  559. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  560. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  561. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  562. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  563. package/contracts/instance/BundleManager.sol +0 -126
  564. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  565. package/contracts/instance/base/ObjectManager.sol +0 -80
  566. package/contracts/instance/module/IAccess.sol +0 -46
  567. package/contracts/product/ProductService.sol +0 -124
  568. package/contracts/product/ProductServiceManager.sol +0 -42
  569. package/contracts/registry/ReleaseManager.sol +0 -503
  570. package/contracts/shared/AccessManagerCustom.sol +0 -741
  571. package/contracts/shared/AccessManagerExtended.sol +0 -481
  572. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  573. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  574. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  575. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  576. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  577. package/contracts/shared/InitializableCustom.sol +0 -177
  578. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -3,42 +3,76 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
-
7
- import {InitializableCustom} from "../shared/InitializableCustom.sol";
6
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
7
+ import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
8
8
 
9
9
  import {NftId, NftIdLib} from "../type/NftId.sol";
10
- import {VersionPart} from "../type/Version.sol";
11
- import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
10
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
11
+ import {ObjectType, ObjectTypeLib, PROTOCOL, REGISTRY, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
12
12
 
13
13
  import {ChainNft} from "./ChainNft.sol";
14
14
  import {IRegistry} from "./IRegistry.sol";
15
+ import {IRelease} from "./IRelease.sol";
15
16
  import {IRegisterable} from "../shared/IRegisterable.sol";
16
- import {ReleaseManager} from "./ReleaseManager.sol";
17
+ import {IStaking} from "../staking/IStaking.sol";
18
+ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
17
19
  import {TokenRegistry} from "./TokenRegistry.sol";
18
20
  import {RegistryAdmin} from "./RegistryAdmin.sol";
19
21
 
20
- // IMPORTANT
22
+ /// @dev IMPORTANT
21
23
  // Each NFT minted by registry is accosiated with:
22
24
  // 1) NFT owner
23
25
  // 2) registred contract OR object stored in registered (parent) contract
24
- // Four registration flows:
25
- // 1) IService address by release manager (SERVICE of domain SERVICE aka registry service aka release creation)
26
- // 2) IService address by release manager (SERVICE of domain !SERVICE aka regular service)
27
- // 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
28
- // 4) state object by regular service (POLICY, BUNDLE, STAKE)
29
-
26
+ // Five registration flows:
27
+ // 1) registerService() -> registers IService address by ReleaseRegistry (ReleaseRegistry is set at deployment time)
28
+ // 2) register() -> registers IRegisterable address by IService (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
29
+ // 3) -> registers object by IService (POLICY, BUNDLE, STAKE)
30
+ // 4) registerWithCustomType() -> registers IRegisterable address with custom type by IService
31
+ // 5) registerRegistry() -> registers IRegistry address (from different chain) by GifAdmin. Works ONLY on mainnet.
32
+ // Note: getters by address MUST not be used with this address (will return 0 or data related to different object or even revert)
33
+
34
+ /// @dev Chain Registry contract implementing IRegistry.
35
+ /// IRegistry for method details.
30
36
  contract Registry is
31
- InitializableCustom,
37
+ Initializable,
38
+ AccessManaged,
32
39
  IRegistry
33
40
  {
34
- address public NFT_LOCK_ADDRESS = address(0x1);
41
+ /// @dev Protocol NFT ID
42
+ NftId public immutable PROTOCOL_NFT_ID;
43
+
44
+ /// @dev Gobal registry NFT ID
45
+ NftId public immutable GLOBAL_REGISTRY_NFT_ID;
46
+
47
+ /// @dev Gobal registry address on mainnet.
48
+ address public immutable GLOBAL_REGISTRY_ADDRESS;
49
+
50
+ /// @dev Registry NFT ID
51
+ NftId public immutable REGISTRY_NFT_ID;
52
+
53
+ /// @dev Deployer address that authorizes the initializer of this contract.
54
+ address public immutable DEPLOYER;
55
+
56
+ /// @dev Registry admin contract for this registry.
57
+ RegistryAdmin public immutable ADMIN;
58
+
59
+ /// @dev Chain NFT contract that keeps track of the ownership of all registered objects.
60
+ ChainNft public immutable CHAIN_NFT;
61
+
62
+ address public constant NFT_LOCK_ADDRESS = address(0x1);
35
63
  uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
36
64
  uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
37
65
  string public constant EMPTY_URI = "";
38
66
 
67
+ /// @dev keep track of different registries on different chains
68
+ mapping(uint256 chainId => NftId registryNftId) private _registryNftIdByChainId;
69
+ uint256[] private _chainId;
70
+
71
+ /// @dev keep track of object info and address reverse lookup
39
72
  mapping(NftId nftId => ObjectInfo info) private _info;
40
73
  mapping(address object => NftId nftId) private _nftIdByAddress;
41
74
 
75
+ /// @dev keep track of service addresses by version and domain
42
76
  mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
43
77
 
44
78
  mapping(ObjectType objectType => bool) private _coreTypes;
@@ -49,143 +83,194 @@ contract Registry is
49
83
  mapping(ObjectType objectType => mapping(
50
84
  ObjectType parentType => bool)) private _coreObjectCombinations;
51
85
 
52
- RegistryAdmin public immutable _admin;
53
- ChainNft public immutable _chainNft;
54
-
55
- NftId public immutable _protocolNftId;
56
- NftId public immutable _registryNftId;
57
- NftId public _stakingNftId;
58
-
59
- address public _tokenRegistryAddress;
60
- address public _stakingAddress;
61
- ReleaseManager public _releaseManager;
62
-
63
- // TODO
64
- // 1). Registry and ReleaseManager must be treated as whole single entity.
65
- // But current limitations of EVM does not allow it -> require it to be splitted
66
- // 2). Keep onlyReleaseManager modifier
67
- // 3). Delete onlyRegistryService in favor of restricted, introduce aditional "domain role", REGISTRY_SERVICE_ROLE
68
- // 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
69
- modifier onlyRegistryService() {
70
- if(!_releaseManager.isActiveRegistryService(msg.sender)) {
71
- revert ErrorRegistryCallerNotRegistryService();
72
- }
73
- _;
74
- }
86
+ NftId private _stakingNftId;
75
87
 
88
+ ReleaseRegistry private _releaseRegistry;
89
+ address private _tokenRegistryAddress;
90
+ address private _stakingAddress;
76
91
 
77
- modifier onlyReleaseManager() {
78
- if(msg.sender != address(_releaseManager)) {
79
- revert ErrorRegistryCallerNotReleaseManager();
92
+ modifier onlyDeployer() {
93
+ if (msg.sender != DEPLOYER) {
94
+ revert ErrorRegistryCallerNotDeployer();
80
95
  }
81
96
  _;
82
97
  }
83
98
 
84
-
85
- constructor(RegistryAdmin admin)
86
- InitializableCustom()
99
+ // TODO when create2 strategy is added to ignition:
100
+ // 1. move globalRegistry arg out from constructor into initialize()
101
+ // 2. add testRegistry_deployChainRegistryAtGlobalRegistryAddress
102
+ /// @dev Creates the registry contract and populates it with the protocol and registry objects.
103
+ /// Internally deploys the ChainNft contract.
104
+ constructor(RegistryAdmin admin, address globalRegistry)
105
+ AccessManaged(admin.authority())
87
106
  {
88
- _admin = admin;
107
+ DEPLOYER = msg.sender;
108
+ ADMIN = admin;
109
+ GLOBAL_REGISTRY_ADDRESS = _getGlobalRegistryAddress(globalRegistry);
110
+
89
111
  // deploy NFT
90
- _chainNft = new ChainNft(address(this));
112
+ CHAIN_NFT = new ChainNft(address(this));
113
+ GLOBAL_REGISTRY_NFT_ID = NftIdLib.toNftId(
114
+ CHAIN_NFT.GLOBAL_REGISTRY_ID());
91
115
 
92
116
  // initial registry setup
93
- _protocolNftId = _registerProtocol();
94
- _registryNftId = _registerRegistry();
117
+ PROTOCOL_NFT_ID = _registerProtocol();
118
+ REGISTRY_NFT_ID = _registerRegistry();
95
119
 
96
120
  // set object types and object parent relations
97
121
  _setupValidCoreTypesAndCombinations();
98
122
  }
99
123
 
100
124
 
101
- /// @dev wires release manager and token to registry (this contract).
102
- /// MUST be called by release manager.
125
+ /// @dev Wires release registry, token registry and staking contract to this registry.
126
+ /// MUST be called by release registry.
103
127
  function initialize(
104
- address releaseManager,
128
+ address releaseRegistry,
105
129
  address tokenRegistry,
106
130
  address staking
107
131
  )
108
132
  external
109
133
  initializer()
134
+ onlyDeployer()
110
135
  {
111
- _releaseManager = ReleaseManager(releaseManager);
136
+ // store links to supporting contracts
137
+ _releaseRegistry = ReleaseRegistry(releaseRegistry);
112
138
  _tokenRegistryAddress = tokenRegistry;
113
139
  _stakingAddress = staking;
114
140
 
141
+ // register staking contract
115
142
  _stakingNftId = _registerStaking();
116
143
  }
117
144
 
145
+ /// @inheritdoc IRegistry
146
+ function registerRegistry(
147
+ NftId nftId,
148
+ uint256 chainId,
149
+ address registryAddress
150
+ )
151
+ external
152
+ restricted()
153
+ {
154
+ // registration of chain registries only allowed on mainnet
155
+ if (block.chainid != 1) {
156
+ revert ErrorRegistryNotOnMainnet(block.chainid);
157
+ }
158
+
159
+ // registry chain id is not zero
160
+ if(chainId == 0) {
161
+ revert ErrorRegistryChainRegistryChainIdZero(nftId);
162
+ }
163
+
164
+ // registry address is not zero
165
+ if (registryAddress == address(0)) {
166
+ revert ErrorRegistryChainRegistryAddressZero(nftId, chainId);
167
+ }
168
+
169
+ // registry nft id matches registry chain id
170
+ uint256 expectedRegistryId = CHAIN_NFT.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID, chainId);
171
+ if (nftId != NftIdLib.toNftId(expectedRegistryId)) {
172
+ revert ErrorRegistryChainRegistryNftIdInvalid(nftId, chainId);
173
+ }
174
+
175
+ emit LogChainRegistryRegistration(nftId, chainId, registryAddress);
176
+
177
+ _registerRegistryForNft(
178
+ chainId,
179
+ ObjectInfo({
180
+ nftId: nftId,
181
+ parentNftId: REGISTRY_NFT_ID,
182
+ objectType: REGISTRY(),
183
+ isInterceptor: false,
184
+ objectAddress: registryAddress,
185
+ initialOwner: NFT_LOCK_ADDRESS,
186
+ data: ""
187
+ }),
188
+ false); // do not update address lookup for objects on a different chain
189
+ }
190
+
191
+ // TODO limit service owner to registry admin?
192
+ /// @inheritdoc IRegistry
118
193
  function registerService(
119
194
  ObjectInfo memory info,
120
195
  VersionPart version,
121
196
  ObjectType domain
122
197
  )
123
198
  external
124
- onlyReleaseManager
199
+ restricted()
125
200
  returns(NftId nftId)
126
201
  {
202
+ // service address is defined
127
203
  address service = info.objectAddress;
128
- /* must be guaranteed by release manager
129
204
  if(service == address(0)) {
130
- revert();
205
+ revert ErrorRegistryServiceAddressZero();
131
206
  }
132
207
 
208
+ // version is defined
133
209
  if(version.eqz()) {
134
- revert();
210
+ revert ErrorRegistryServiceVersionZero(service);
211
+ }
212
+ // service domain is defined
213
+ if(domain.eqz()) {
214
+ revert ErrorRegistryServiceDomainZero(service, version);
135
215
  }
136
216
 
217
+ // service has proper type
137
218
  if(info.objectType != SERVICE()) {
138
- revert();
219
+ revert ErrorRegistryNotService(service, info.objectType);
139
220
  }
140
- if(info.parentType != REGISTRY()) {
141
- revert();
142
- }
143
- info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
144
- */
145
221
 
146
- if(domain.eqz()) {
147
- revert ErrorRegistryDomainZero(service);
222
+ // service parent has registry type
223
+ if(info.parentNftId != REGISTRY_NFT_ID) {
224
+ revert ErrorRegistryServiceParentNotRegistry(service, version, info.parentNftId);
148
225
  }
149
226
 
150
- if(_service[version][domain] > address(0)) {
151
- revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
227
+ // service has not already been registered
228
+ if(_service[version][domain] != address(0)) {
229
+ revert ErrorRegistryServiceDomainAlreadyRegistered(service, version, domain);
152
230
  }
153
-
154
- _service[version][domain] = service;
155
231
 
156
- nftId = _register(info);
232
+ _service[version][domain] = service;
157
233
 
158
234
  emit LogServiceRegistration(version, domain);
235
+
236
+ nftId = _register(info);
159
237
  }
160
238
 
239
+
240
+ /// @inheritdoc IRegistry
161
241
  function register(ObjectInfo memory info)
162
242
  external
163
- onlyRegistryService
243
+ restricted()
164
244
  returns(NftId nftId)
165
245
  {
246
+ address objectAddress = info.objectAddress;
166
247
  ObjectType objectType = info.objectType;
248
+
249
+ // this indidirectly enforces that the parent is registered
250
+ // parentType would be zero for a non-registered parent which is never a valid type combination
167
251
  ObjectType parentType = _info[info.parentNftId].objectType;
168
252
 
169
- // only valid core types combinations
170
- if(info.objectAddress == address(0))
171
- {
253
+ // check type combinations for core objects
254
+ if(objectAddress == address(0)) {
172
255
  if(_coreObjectCombinations[objectType][parentType] == false) {
173
- revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
256
+ revert ErrorRegistryTypesCombinationInvalid(objectAddress, objectType, parentType);
174
257
  }
175
258
  }
176
- else
177
- {
259
+ // check type combinations for contract objects
260
+ else {
178
261
  if(_coreContractCombinations[objectType][parentType] == false) {
179
- revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
262
+ revert ErrorRegistryTypesCombinationInvalid(objectAddress, objectType, parentType);
180
263
  }
181
264
  }
182
265
 
183
266
  nftId = _register(info);
184
267
  }
185
268
 
269
+
270
+ /// @inheritdoc IRegistry
186
271
  function registerWithCustomType(ObjectInfo memory info)
187
272
  external
188
- onlyRegistryService
273
+ restricted()
189
274
  returns(NftId nftId)
190
275
  {
191
276
  ObjectType objectType = info.objectType;
@@ -196,64 +281,98 @@ contract Registry is
196
281
  }
197
282
 
198
283
  if(
284
+ objectType == ObjectTypeLib.zero() ||
285
+ parentType == ObjectTypeLib.zero() ||
199
286
  parentType == PROTOCOL() ||
200
- parentType == REGISTRY() ||
201
287
  parentType == SERVICE()
202
288
  ) {
203
- revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
289
+ revert ErrorRegistryTypesCombinationInvalid(info.objectAddress, objectType, parentType);
204
290
  }
205
291
 
206
- _register(info);
292
+ nftId = _register(info);
207
293
  }
208
294
 
209
295
 
210
296
  /// @dev earliest GIF major version
211
297
  function getInitialVersion() external view returns (VersionPart) {
212
- return _releaseManager.getInitialVersion();
298
+ return VersionPartLib.toVersionPart(_releaseRegistry.INITIAL_GIF_VERSION());
213
299
  }
214
300
 
215
301
  /// @dev next GIF release version to be released
216
302
  function getNextVersion() external view returns (VersionPart) {
217
- return _releaseManager.getNextVersion();
303
+ return _releaseRegistry.getNextVersion();
218
304
  }
219
305
 
220
306
  /// @dev latest active GIF release version
221
307
  function getLatestVersion() external view returns (VersionPart) {
222
- return _releaseManager.getLatestVersion();
308
+ return _releaseRegistry.getLatestVersion();
309
+ }
310
+
311
+ function getReleaseInfo(VersionPart release) external view returns (IRelease.ReleaseInfo memory) {
312
+ return _releaseRegistry.getReleaseInfo(release);
313
+ }
314
+
315
+ function chainIds() public view returns (uint256) {
316
+ return _chainId.length;
317
+ }
318
+
319
+ function getChainId(uint256 idx) public view returns (uint256) {
320
+ return _chainId[idx];
223
321
  }
224
322
 
225
- function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
226
- return _releaseManager.getReleaseInfo(version);
323
+ function getRegistryNftId(uint256 chainId) public view returns (NftId nftId) {
324
+ return _registryNftIdByChainId[chainId];
227
325
  }
228
326
 
229
327
  function getObjectCount() external view returns (uint256) {
230
- return _chainNft.totalSupply();
328
+ return CHAIN_NFT.totalSupply();
231
329
  }
232
330
 
233
331
  function getNftId() external view returns (NftId nftId) {
234
- return _registryNftId;
332
+ return REGISTRY_NFT_ID;
235
333
  }
236
334
 
237
335
  function getProtocolNftId() external view returns (NftId nftId) {
238
- return _protocolNftId;
336
+ return PROTOCOL_NFT_ID;
239
337
  }
240
338
 
241
- function getNftId(address object) external view returns (NftId id) {
339
+ function getNftIdForAddress(address object) external view returns (NftId id) {
242
340
  return _nftIdByAddress[object];
243
341
  }
244
342
 
245
343
  function ownerOf(NftId nftId) public view returns (address) {
246
- return _chainNft.ownerOf(nftId.toInt());
344
+ return CHAIN_NFT.ownerOf(nftId.toInt());
345
+ }
346
+
347
+ function isOwnerOf(NftId nftId, address expectedOwner) public view returns (bool) {
348
+ return CHAIN_NFT.ownerOf(nftId.toInt()) == expectedOwner;
247
349
  }
248
350
 
249
351
  function ownerOf(address contractAddress) public view returns (address) {
250
- return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
352
+ return CHAIN_NFT.ownerOf(_nftIdByAddress[contractAddress].toInt());
251
353
  }
252
354
 
253
355
  function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
254
356
  return _info[nftId];
255
357
  }
256
358
 
359
+ function getParentNftId(NftId nftId) external view returns (NftId parentNftId) {
360
+ return _info[nftId].parentNftId;
361
+ }
362
+
363
+ function isObjectType(address contractAddress, ObjectType expectedObjectType) external view returns (bool) {
364
+ NftId nftId = _nftIdByAddress[contractAddress];
365
+ return isObjectType(nftId, expectedObjectType);
366
+ }
367
+
368
+ function isObjectType(NftId nftId, ObjectType expectedObjectType) public view returns (bool) {
369
+ return _info[nftId].objectType == expectedObjectType;
370
+ }
371
+
372
+ function getObjectAddress(NftId nftId) external view returns (address) {
373
+ return _info[nftId].objectAddress;
374
+ }
375
+
257
376
  function getObjectInfo(address object) external view returns (ObjectInfo memory) {
258
377
  return _info[_nftIdByAddress[object]];
259
378
  }
@@ -277,12 +396,10 @@ contract Registry is
277
396
 
278
397
  function isActiveRelease(VersionPart version) external view returns (bool)
279
398
  {
280
- return _releaseManager.isActiveRelease(version);
399
+ return _releaseRegistry.isActiveRelease(version);
281
400
  }
282
401
 
283
402
  function getStakingAddress() external view returns (address staking) {
284
- //return getObjectInfo(_stakingNftId).objectAddress;
285
- //return _info[_stakingNftId].objectAddress;
286
403
  return _stakingAddress;
287
404
  }
288
405
 
@@ -298,24 +415,20 @@ contract Registry is
298
415
  service = _service[releaseVersion][serviceDomain];
299
416
  }
300
417
 
301
- function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
302
- return address(_releaseManager.getReleaseAccessManager(version));
303
- }
304
-
305
- function getReleaseManagerAddress() external view returns (address) {
306
- return address(_releaseManager);
418
+ function getReleaseRegistryAddress() external view returns (address) {
419
+ return address(_releaseRegistry);
307
420
  }
308
421
 
309
422
  function getChainNftAddress() external view override returns (address) {
310
- return address(_chainNft);
423
+ return address(CHAIN_NFT);
311
424
  }
312
425
 
313
426
  function getRegistryAdminAddress() external view returns (address) {
314
- return address(_admin);
427
+ return address(ADMIN);
315
428
  }
316
429
 
317
430
  function getAuthority() external view returns (address) {
318
- return _admin.authority();
431
+ return ADMIN.authority();
319
432
  }
320
433
 
321
434
  function getOwner() public view returns (address owner) {
@@ -335,30 +448,37 @@ contract Registry is
335
448
  // Internals
336
449
 
337
450
  /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
338
- // TODO registration of precompile addresses
339
451
  function _register(ObjectInfo memory info)
340
452
  internal
341
453
  returns(NftId nftId)
342
454
  {
343
- ObjectType objectType = info.objectType;
455
+ ObjectType objectType = info.objectType; // do not care here, never PROTOCOL(), REGISTRY()
344
456
  bool isInterceptor = info.isInterceptor;
345
- address objectAddress = info.objectAddress;
346
- address owner = info.initialOwner;
457
+ address objectAddress = info.objectAddress; // do not care here, can be 0
458
+ address owner = info.initialOwner; // do not care here, can be 0, can be equal info.objectAddress
347
459
 
348
- NftId parentNftId = info.parentNftId;
460
+ NftId parentNftId = info.parentNftId; // do not care here, can not be 0
349
461
  ObjectInfo memory parentInfo = _info[parentNftId];
350
- ObjectType parentType = parentInfo.objectType; // see function header
351
- address parentAddress = parentInfo.objectAddress;
462
+ address parentAddress = parentInfo.objectAddress; // can be 0
352
463
 
353
464
  // parent is contract -> need to check? -> check before minting
354
465
  // special case: staking: to protocol possible as well
355
- // special case: global registry nft as parent when not on mainnet -> global registry address is 0
356
- // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
357
- // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
358
- if(objectType != STAKE()) {
466
+ // NO LONGER TRUE: special case: global registry nft as parent when not on mainnet -> global registry address is 0
467
+ // special case: when parentNftId == CHAIN_NFT.mint(), check for zero parent address before mint
468
+ // special case: when parentNftId == CHAIN_NFT.mint() && objectAddress == initialOwner
469
+ // Parent can have 0 address in case of STAKE for PROTOCOL / CUSTOM_TYPE for POLICY
470
+ // But it MUST be registered -> parentType != 0 && parentNftId != 0
471
+ /*if(objectType != STAKE()) {
359
472
  if(parentAddress == address(0)) {
360
473
  revert ErrorRegistryParentAddressZero();
361
474
  }
475
+ }*/
476
+
477
+ // global registry is never parent when not on mainnet
478
+ if(block.chainid != 1) {
479
+ if(parentNftId == GLOBAL_REGISTRY_NFT_ID) {
480
+ revert ErrorRegistryGlobalRegistryAsParent(objectAddress, objectType);
481
+ }
362
482
  }
363
483
 
364
484
  address interceptorAddress = _getInterceptor(
@@ -368,23 +488,17 @@ contract Registry is
368
488
  parentInfo.isInterceptor,
369
489
  parentAddress);
370
490
 
371
- uint256 tokenId = _chainNft.getNextTokenId();
491
+ uint256 tokenId = CHAIN_NFT.getNextTokenId();
372
492
  nftId = NftIdLib.toNftId(tokenId);
373
493
  info.nftId = nftId;
374
- _info[nftId] = info;
375
494
 
376
- if(objectAddress > address(0)) {
377
- if(_nftIdByAddress[objectAddress].gtz()) {
378
- revert ErrorRegistryContractAlreadyRegistered(objectAddress);
379
- }
380
-
381
- _nftIdByAddress[objectAddress] = nftId;
382
- }
495
+ _info[nftId] = info;
496
+ _setAddressForNftId(nftId, objectAddress);
383
497
 
384
498
  emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
385
499
 
386
500
  // calls nft receiver(1) and interceptor(2)
387
- uint256 mintedTokenId = _chainNft.mint(
501
+ uint256 mintedTokenId = CHAIN_NFT.mint(
388
502
  owner,
389
503
  interceptorAddress,
390
504
  EMPTY_URI);
@@ -433,111 +547,155 @@ contract Registry is
433
547
  private
434
548
  returns (NftId protocolNftId)
435
549
  {
436
- uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
550
+ uint256 protocolId = CHAIN_NFT.PROTOCOL_NFT_ID();
437
551
  protocolNftId = NftIdLib.toNftId(protocolId);
438
552
 
439
- _info[protocolNftId] = ObjectInfo({
440
- nftId: protocolNftId,
441
- parentNftId: NftIdLib.zero(),
442
- objectType: PROTOCOL(),
443
- isInterceptor: false,
444
- objectAddress: address(0),
445
- initialOwner: NFT_LOCK_ADDRESS,
446
- data: ""
447
- });
448
-
449
- _chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
553
+ _registerForNft(
554
+ ObjectInfo({
555
+ nftId: protocolNftId,
556
+ parentNftId: NftIdLib.zero(),
557
+ objectType: PROTOCOL(),
558
+ isInterceptor: false,
559
+ objectAddress: address(0),
560
+ initialOwner: NFT_LOCK_ADDRESS,
561
+ data: ""}),
562
+ true);
450
563
  }
451
564
 
452
- /// @dev registry registration
453
- /// might also register the global registry when not on mainnet
565
+ /// @dev register this registry
454
566
  function _registerRegistry()
455
- private
567
+ internal
568
+ virtual
456
569
  returns (NftId registryNftId)
457
570
  {
458
- uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
459
- registryNftId = NftIdLib.toNftId(registryId);
460
- NftId parentNftId;
461
-
462
- if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
463
- {// we're not the global registry
464
- _registerGlobalRegistry();
465
- parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
571
+ // initial assignment
572
+ registryNftId = GLOBAL_REGISTRY_NFT_ID;
573
+
574
+ // register global registry
575
+ _registerRegistryForNft(
576
+ 1, // mainnet chain id
577
+ ObjectInfo({
578
+ nftId: GLOBAL_REGISTRY_NFT_ID,
579
+ parentNftId: PROTOCOL_NFT_ID,
580
+ objectType: REGISTRY(),
581
+ isInterceptor: false,
582
+ objectAddress: GLOBAL_REGISTRY_ADDRESS,
583
+ initialOwner: NFT_LOCK_ADDRESS,
584
+ data: ""}),
585
+ block.chainid == 1);// update address lookup for global registry only on mainnet
586
+
587
+ // if not on mainnet: register this registry with global registry as parent
588
+ if (block.chainid != 1) {
589
+
590
+ // modify registry nft id to local registry when not on mainnet
591
+ registryNftId = NftIdLib.toNftId(
592
+ CHAIN_NFT.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID));
593
+
594
+ _registerRegistryForNft(
595
+ block.chainid,
596
+ ObjectInfo({
597
+ nftId: registryNftId,
598
+ parentNftId: GLOBAL_REGISTRY_NFT_ID,
599
+ objectType: REGISTRY(),
600
+ isInterceptor: false,
601
+ objectAddress: address(this),
602
+ initialOwner: NFT_LOCK_ADDRESS,
603
+ data: ""}),
604
+ true);
466
605
  }
467
- else
468
- {// we are global registry
469
- parentNftId = _protocolNftId;
606
+ }
607
+
608
+ /// @dev staking registration
609
+ function _registerRegistryForNft(
610
+ uint256 chainId,
611
+ ObjectInfo memory info,
612
+ bool updateAddressLookup
613
+ )
614
+ private
615
+ {
616
+ if (!_registryNftIdByChainId[chainId].eqz()) {
617
+ revert ErrorRegistryChainRegistryAlreadyRegistered(info.nftId, chainId);
470
618
  }
471
619
 
472
- _info[registryNftId] = ObjectInfo({
473
- nftId: registryNftId,
474
- parentNftId: parentNftId,
475
- objectType: REGISTRY(),
476
- isInterceptor: false,
477
- objectAddress: address(this),
478
- initialOwner: NFT_LOCK_ADDRESS,
479
- data: ""
480
- });
620
+ // update registry lookup variables
621
+ _registryNftIdByChainId[chainId] = info.nftId;
622
+ _chainId.push(chainId);
481
623
 
482
- _nftIdByAddress[address(this)] = registryNftId;
483
- _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
624
+ // register the registry info
625
+ _registerForNft(
626
+ info,
627
+ updateAddressLookup);
484
628
  }
485
629
 
486
- /// @dev global registry registration for non mainnet registries
487
- function _registerGlobalRegistry()
488
- private
489
- {
490
- uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
491
- NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
492
-
493
- _info[globalRegistryNftId] = ObjectInfo({
494
- nftId: globalRegistryNftId,
495
- parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
496
- objectType: REGISTRY(),
497
- isInterceptor: false,
498
- objectAddress: address(0),
499
- initialOwner: NFT_LOCK_ADDRESS,
500
- data: ""
501
- });
502
-
503
- _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
504
- }
505
- // depends on _registryNftId and _stakingAddress
630
+ /// @dev staking registration
506
631
  function _registerStaking()
507
632
  private
508
633
  returns (NftId stakingNftId)
509
634
  {
510
635
  address stakingOwner = IRegisterable(_stakingAddress).getOwner();
511
- uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
636
+ uint256 stakingId = CHAIN_NFT.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
512
637
  stakingNftId = NftIdLib.toNftId(stakingId);
513
638
 
514
- _info[stakingNftId] = ObjectInfo({
515
- nftId: stakingNftId,
516
- parentNftId: _registryNftId,
517
- objectType: STAKING(),
518
- isInterceptor: false,
519
- objectAddress: _stakingAddress,
520
- initialOwner: stakingOwner,
521
- data: ""
522
- });
639
+ _registerForNft(
640
+ ObjectInfo({
641
+ nftId: stakingNftId,
642
+ parentNftId: REGISTRY_NFT_ID,
643
+ objectType: STAKING(),
644
+ isInterceptor: false,
645
+ objectAddress: _stakingAddress,
646
+ initialOwner: stakingOwner,
647
+ data: ""}),
648
+ true);
649
+
650
+ IStaking(_stakingAddress).initializeTokenHandler();
651
+ }
652
+
653
+ /// @dev Register the provided object info for the specified NFT ID.
654
+ function _registerForNft(
655
+ ObjectInfo memory info,
656
+ bool updateAddressLookup
657
+ )
658
+ internal
659
+ {
660
+ _info[info.nftId] = info;
661
+
662
+ if (updateAddressLookup) {
663
+ _setAddressForNftId(info.nftId, info.objectAddress);
664
+ }
523
665
 
524
- _nftIdByAddress[_stakingAddress] = stakingNftId;
525
- // reverts if nftId was already minted
526
- _chainNft.mint(stakingOwner, stakingId);
666
+ // calls nft receiver
667
+ CHAIN_NFT.mint(info.initialOwner, info.nftId.toInt());
668
+ }
669
+
670
+ function _setAddressForNftId(NftId nftId, address objectAddress)
671
+ internal
672
+ {
673
+ if (objectAddress != address(0)) {
674
+ if (_nftIdByAddress[objectAddress].gtz()) {
675
+ revert ErrorRegistryContractAlreadyRegistered(objectAddress);
676
+ }
677
+
678
+ _nftIdByAddress[objectAddress] = nftId;
679
+ }
680
+ }
681
+
682
+ function _getGlobalRegistryAddress(address globalRegistry) internal view returns (address) {
683
+ if (block.chainid == 1) {
684
+ return address(this);
685
+ } else {
686
+ return globalRegistry;
687
+ }
527
688
  }
528
689
 
529
690
  /// @dev defines which object - parent types relations are allowed to register
530
- // IMPORTANT:
531
- // 1) EACH object type MUST have only one parent type across ALL mappings
532
- // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
533
- // 3) DO NOT use REGISTRY as object type
534
- // 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
691
+ /// EACH object type MUST have only one parent type across ALL mappings
692
+ // the only EXCEPTION is STAKE, can have any number of parent types
535
693
  function _setupValidCoreTypesAndCombinations()
536
- private
694
+ private
537
695
  {
696
+ _coreTypes[PROTOCOL()] = true;
538
697
  _coreTypes[REGISTRY()] = true;
539
698
  _coreTypes[SERVICE()] = true;
540
- _coreTypes[TOKEN()] = true;
541
699
  _coreTypes[INSTANCE()] = true;
542
700
  _coreTypes[PRODUCT()] = true;
543
701
  _coreTypes[POOL()] = true;
@@ -549,30 +707,20 @@ contract Registry is
549
707
  _coreTypes[STAKING()] = true;
550
708
  _coreTypes[STAKE()] = true;
551
709
 
552
- uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
553
- if(registryId == _chainNft.GLOBAL_REGISTRY_ID()) {
554
- // we are global registry
555
- // object is registry from different chain
556
- // parent is global registry, this contract
557
- _coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
558
- //_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
559
- } else {
560
- // we are not global registry
561
- // object is local registry, this contract
562
- // parent is global registry, object with 0 address or registry from mainnet???
563
- }
564
- _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
565
- _coreContractCombinations[TOKEN()][REGISTRY()] = true;
566
- //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
710
+ // types combinations allowed to use with register() function ONLY
567
711
  _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
568
712
 
713
+ // components with instance parent
569
714
  _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
570
- _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
571
- _coreContractCombinations[ORACLE()][INSTANCE()] = true;
572
- _coreContractCombinations[POOL()][INSTANCE()] = true;
573
715
 
574
- _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
716
+ // components with product parent
717
+ _coreContractCombinations[DISTRIBUTION()][PRODUCT()] = true;
718
+ _coreContractCombinations[ORACLE()][PRODUCT()] = true;
719
+ _coreContractCombinations[POOL()][PRODUCT()] = true;
720
+
721
+ // objects with component parents
575
722
  _coreObjectCombinations[POLICY()][PRODUCT()] = true;
723
+ _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
576
724
  _coreObjectCombinations[BUNDLE()][POOL()] = true;
577
725
 
578
726
  // staking