@etherisc/gif-next 0.0.2-ff282a4-523 → 0.0.2-ff795d8-141

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 (582) hide show
  1. package/README.md +130 -10
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1023 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -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 +1652 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1279 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1333 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1225 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +154 -600
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +564 -471
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +240 -116
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +165 -336
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +373 -113
  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 +1461 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2018 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -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 +1404 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1628 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2405 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -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 +526 -87
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +413 -74
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +533 -218
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2302 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1843 -719
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +433 -211
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +171 -93
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1651 -770
  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 +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  105. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  106. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +938 -0
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +753 -0
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +854 -0
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1013 -0
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +772 -0
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1231 -0
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +355 -366
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +214 -102
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +221 -76
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +214 -423
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +554 -401
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +223 -624
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +538 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +694 -710
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +228 -112
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +219 -242
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +188 -88
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1140 -0
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +458 -332
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +222 -114
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +155 -9
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +327 -16
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +399 -69
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +195 -82
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +367 -231
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  168. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +100 -62
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +440 -380
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +196 -124
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +247 -324
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +192 -108
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/Product.sol/Product.json +409 -509
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +462 -56
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +251 -127
  191. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  193. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  195. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/Registry.sol/Registry.json +905 -121
  197. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2127 -0
  199. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  200. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  201. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  202. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +303 -245
  203. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  204. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +169 -91
  205. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  206. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2140 -0
  207. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  208. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  209. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  210. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1393 -0
  211. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  212. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  213. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  214. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +315 -139
  215. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Component.sol/Component.json +109 -296
  217. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1021 -165
  219. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +816 -0
  221. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +485 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +680 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  231. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +116 -141
  233. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  234. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1127 -0
  235. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  236. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +688 -0
  237. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  238. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +46 -14
  239. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  240. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  241. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  242. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
  243. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
  245. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +154 -0
  247. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  248. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IService.sol/IService.json +74 -2
  250. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  251. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  252. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +776 -0
  254. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  255. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +26 -55
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -90
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  268. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Service.sol/Service.json +67 -102
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +615 -6
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1301 -119
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +685 -63
  280. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  281. package/artifacts/contracts/staking/Staking.sol/Staking.json +1579 -172
  282. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  284. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +250 -73
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +560 -0
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +775 -176
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +195 -83
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2297 -0
  296. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  297. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +617 -0
  298. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  299. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  300. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Amount.sol/AmountLib.json +122 -5
  302. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
  304. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  306. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  308. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Fee.sol/FeeLib.json +119 -58
  310. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  312. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  313. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  314. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +66 -4
  316. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  317. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  318. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +153 -4
  320. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  322. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  324. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  326. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  328. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +121 -23
  330. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
  332. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  334. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  336. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  338. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  340. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  342. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  344. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  346. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  348. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  349. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  350. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  352. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  354. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  355. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  356. package/contracts/accounting/AccountingService.sol +261 -0
  357. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  358. package/contracts/accounting/IAccountingService.sol +45 -0
  359. package/contracts/authorization/AccessAdmin.sol +789 -0
  360. package/contracts/authorization/AccessAdminLib.sol +387 -0
  361. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  362. package/contracts/authorization/Authorization.sol +174 -0
  363. package/contracts/authorization/IAccess.sol +67 -0
  364. package/contracts/authorization/IAccessAdmin.sol +137 -0
  365. package/contracts/authorization/IAuthorization.sol +27 -0
  366. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  367. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  368. package/contracts/distribution/BasicDistribution.sol +141 -0
  369. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  370. package/contracts/distribution/Distribution.sol +135 -175
  371. package/contracts/distribution/DistributionService.sol +306 -213
  372. package/contracts/distribution/DistributionServiceManager.sol +13 -25
  373. package/contracts/distribution/IDistributionComponent.sol +23 -49
  374. package/contracts/distribution/IDistributionService.sol +55 -33
  375. package/contracts/examples/fire/DamageLevel.sol +59 -0
  376. package/contracts/examples/fire/FirePool.sol +86 -0
  377. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  378. package/contracts/examples/fire/FireProduct.sol +433 -0
  379. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  380. package/contracts/examples/fire/FireUSD.sol +26 -0
  381. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  382. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  383. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  384. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  385. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  386. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  387. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  388. package/contracts/instance/BundleSet.sol +130 -0
  389. package/contracts/instance/IInstance.sol +114 -49
  390. package/contracts/instance/IInstanceService.sol +74 -37
  391. package/contracts/instance/Instance.sol +245 -133
  392. package/contracts/instance/InstanceAdmin.sol +380 -0
  393. package/contracts/instance/InstanceAuthorizationV3.sol +263 -0
  394. package/contracts/instance/InstanceReader.sol +437 -100
  395. package/contracts/instance/InstanceService.sol +402 -180
  396. package/contracts/instance/InstanceServiceManager.sol +14 -29
  397. package/contracts/instance/InstanceStore.sol +151 -64
  398. package/contracts/instance/RiskSet.sol +118 -0
  399. package/contracts/instance/base/BalanceStore.sol +123 -0
  400. package/contracts/instance/base/Cloneable.sol +2 -25
  401. package/contracts/instance/base/ObjectCounter.sol +20 -0
  402. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  403. package/contracts/instance/base/ObjectSet.sol +77 -0
  404. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  405. package/contracts/instance/module/IBundle.sol +6 -8
  406. package/contracts/instance/module/IComponents.sol +40 -19
  407. package/contracts/instance/module/IDistribution.sol +21 -9
  408. package/contracts/instance/module/IPolicy.sol +57 -30
  409. package/contracts/instance/module/IRisk.sol +5 -0
  410. package/contracts/mock/Dip.sol +26 -0
  411. package/contracts/oracle/BasicOracle.sol +45 -0
  412. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  413. package/contracts/oracle/IOracle.sol +41 -0
  414. package/contracts/oracle/IOracleComponent.sol +33 -0
  415. package/contracts/oracle/IOracleService.sol +66 -0
  416. package/contracts/oracle/Oracle.sol +154 -0
  417. package/contracts/oracle/OracleService.sol +310 -0
  418. package/contracts/oracle/OracleServiceManager.sol +39 -0
  419. package/contracts/pool/BasicPool.sol +173 -0
  420. package/contracts/pool/BasicPoolAuthorization.sol +82 -0
  421. package/contracts/pool/BundleService.sol +237 -224
  422. package/contracts/pool/BundleServiceManager.sol +13 -25
  423. package/contracts/pool/IBundleService.sol +35 -38
  424. package/contracts/pool/IPoolComponent.sol +23 -75
  425. package/contracts/pool/IPoolService.sol +107 -56
  426. package/contracts/pool/Pool.sol +209 -168
  427. package/contracts/pool/PoolLib.sol +353 -0
  428. package/contracts/pool/PoolService.sol +446 -262
  429. package/contracts/pool/PoolServiceManager.sol +12 -24
  430. package/contracts/product/ApplicationService.sol +177 -85
  431. package/contracts/product/ApplicationServiceManager.sol +12 -9
  432. package/contracts/product/BasicProduct.sol +49 -0
  433. package/contracts/product/BasicProductAuthorization.sol +61 -0
  434. package/contracts/product/ClaimService.sol +380 -184
  435. package/contracts/product/ClaimServiceManager.sol +12 -9
  436. package/contracts/product/IApplicationService.sol +10 -3
  437. package/contracts/product/IClaimService.sol +48 -6
  438. package/contracts/product/IPolicyService.sol +54 -39
  439. package/contracts/product/IPricingService.sol +14 -11
  440. package/contracts/product/IProductComponent.sol +31 -10
  441. package/contracts/product/IRiskService.sol +33 -0
  442. package/contracts/product/PolicyService.sol +498 -234
  443. package/contracts/product/PolicyServiceLib.sol +139 -0
  444. package/contracts/product/PolicyServiceManager.sol +12 -27
  445. package/contracts/product/PricingService.sol +116 -82
  446. package/contracts/product/PricingServiceManager.sol +12 -24
  447. package/contracts/product/Product.sol +236 -148
  448. package/contracts/product/RiskService.sol +154 -0
  449. package/contracts/product/RiskServiceManager.sol +39 -0
  450. package/contracts/registry/ChainNft.sol +72 -39
  451. package/contracts/registry/IRegistry.sol +94 -34
  452. package/contracts/registry/IRegistryService.sol +28 -35
  453. package/contracts/registry/IRelease.sol +29 -0
  454. package/contracts/registry/ITransferInterceptor.sol +1 -2
  455. package/contracts/registry/Registry.sol +444 -219
  456. package/contracts/registry/RegistryAdmin.sol +188 -0
  457. package/contracts/registry/RegistryAuthorization.sol +277 -0
  458. package/contracts/registry/RegistryService.sol +74 -137
  459. package/contracts/registry/RegistryServiceManager.sol +23 -30
  460. package/contracts/registry/ReleaseAdmin.sol +195 -0
  461. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  462. package/contracts/registry/ReleaseRegistry.sol +520 -0
  463. package/contracts/registry/ServiceAuthorizationV3.sol +343 -0
  464. package/contracts/registry/TokenRegistry.sol +262 -64
  465. package/contracts/shared/Component.sol +122 -183
  466. package/contracts/shared/ComponentService.sol +610 -99
  467. package/contracts/shared/ComponentServiceManager.sol +38 -0
  468. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  469. package/contracts/shared/ContractLib.sol +357 -0
  470. package/contracts/shared/IComponent.sol +17 -49
  471. package/contracts/shared/IComponentService.sol +110 -0
  472. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  473. package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
  474. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  475. package/contracts/shared/INftOwnable.sol +3 -1
  476. package/contracts/shared/IPolicyHolder.sol +12 -17
  477. package/contracts/shared/IRegisterable.sol +23 -1
  478. package/contracts/shared/IService.sol +11 -6
  479. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  480. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  481. package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
  482. package/contracts/shared/Lifecycle.sol +88 -0
  483. package/contracts/shared/NftIdSet.sol +65 -0
  484. package/contracts/shared/NftOwnable.sol +33 -24
  485. package/contracts/shared/PolicyHolder.sol +18 -50
  486. package/contracts/shared/Registerable.sol +54 -23
  487. package/contracts/shared/RegistryLinked.sol +9 -14
  488. package/contracts/shared/Service.sol +36 -41
  489. package/contracts/shared/TokenHandler.sol +320 -13
  490. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  491. package/contracts/staking/IStaking.sol +170 -6
  492. package/contracts/staking/IStakingService.sol +110 -40
  493. package/contracts/staking/Staking.sol +509 -27
  494. package/contracts/staking/StakingLib.sol +281 -0
  495. package/contracts/staking/StakingLifecycle.sol +23 -0
  496. package/contracts/staking/StakingManager.sol +24 -16
  497. package/contracts/staking/StakingReader.sol +180 -0
  498. package/contracts/staking/StakingService.sol +311 -48
  499. package/contracts/staking/StakingServiceManager.sol +12 -8
  500. package/contracts/staking/StakingStore.sol +606 -0
  501. package/contracts/staking/TargetManagerLib.sol +211 -0
  502. package/contracts/type/AddressSet.sol +1 -1
  503. package/contracts/type/Amount.sol +44 -3
  504. package/contracts/type/Blocknumber.sol +26 -3
  505. package/contracts/type/ClaimId.sol +6 -1
  506. package/contracts/type/Fee.sol +22 -21
  507. package/contracts/type/Key32.sol +2 -2
  508. package/contracts/type/Key32Set.sol +62 -0
  509. package/contracts/type/NftId.sol +21 -16
  510. package/contracts/type/NftIdSet.sol +1 -1
  511. package/contracts/type/ObjectType.sol +204 -63
  512. package/contracts/type/PayoutId.sol +10 -10
  513. package/contracts/type/Referral.sol +2 -1
  514. package/contracts/type/RequestId.sol +75 -0
  515. package/contracts/type/RiskId.sol +39 -7
  516. package/contracts/type/RoleId.sol +122 -74
  517. package/contracts/type/Seconds.sol +48 -1
  518. package/contracts/type/Selector.sol +107 -0
  519. package/contracts/type/StateId.sol +41 -2
  520. package/contracts/type/String.sol +53 -0
  521. package/contracts/type/Timestamp.sol +16 -7
  522. package/contracts/type/UFixed.sol +61 -125
  523. package/contracts/type/Version.sol +58 -7
  524. package/contracts/{shared → upgradeability}/ProxyManager.sol +101 -36
  525. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +8 -4
  526. package/contracts/{shared → upgradeability}/Versionable.sol +6 -3
  527. package/package.json +12 -8
  528. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  529. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  530. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  531. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  532. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  533. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  534. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  535. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  536. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  537. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
  538. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  539. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  540. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  541. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  542. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  543. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  544. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  546. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  547. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  548. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  549. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -864
  550. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  551. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -640
  552. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  553. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  554. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  555. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -620
  556. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  557. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  558. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  559. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  560. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  561. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  562. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  563. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  564. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  565. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  566. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  567. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  568. package/contracts/instance/BundleManager.sol +0 -126
  569. package/contracts/instance/InstanceAccessManager.sol +0 -543
  570. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
  571. package/contracts/instance/base/Lifecycle.sol +0 -121
  572. package/contracts/instance/base/ObjectManager.sol +0 -82
  573. package/contracts/instance/module/IAccess.sol +0 -54
  574. package/contracts/instance/module/ISetup.sol +0 -33
  575. package/contracts/instance/module/ITreasury.sol +0 -23
  576. package/contracts/product/IProductService.sol +0 -40
  577. package/contracts/product/ProductService.sol +0 -210
  578. package/contracts/product/ProductServiceManager.sol +0 -54
  579. package/contracts/registry/RegistryAccessManager.sol +0 -207
  580. package/contracts/registry/ReleaseManager.sol +0 -360
  581. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  582. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -0,0 +1,154 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IInstance} from "../instance/IInstance.sol";
5
+ import {IRegistry} from "../registry/IRegistry.sol";
6
+ import {IRisk} from "../instance/module/IRisk.sol";
7
+ import {IRiskService} from "./IRiskService.sol";
8
+
9
+ import {ContractLib} from "../shared/ContractLib.sol";
10
+ import {InstanceReader} from "../instance/InstanceReader.sol";
11
+ import {ObjectType, COMPONENT, PRODUCT, RISK} from "../type/ObjectType.sol";
12
+ import {ACTIVE, PAUSED, KEEP_STATE} from "../type/StateId.sol";
13
+ import {NftId} from "../type/NftId.sol";
14
+ import {RiskId, RiskIdLib} from "../type/RiskId.sol";
15
+ import {StateId} from "../type/StateId.sol";
16
+ import {RiskSet} from "../instance/RiskSet.sol";
17
+ import {Service} from "../shared/Service.sol";
18
+ import {TimestampLib} from "../type/Timestamp.sol";
19
+
20
+ contract RiskService is
21
+ Service,
22
+ IRiskService
23
+ {
24
+
25
+ function _initialize(
26
+ address owner,
27
+ bytes memory data
28
+ )
29
+ internal
30
+ initializer
31
+ virtual override
32
+ {
33
+ (
34
+ address authority,
35
+ address registry
36
+ ) = abi.decode(data, (address, address));
37
+
38
+ __Service_init(authority, registry, owner);
39
+ _registerInterface(type(IRiskService).interfaceId);
40
+ }
41
+
42
+ /// @inheritdoc IRiskService
43
+ function createRisk(
44
+ bytes32 id,
45
+ bytes memory data
46
+ )
47
+ external
48
+ restricted()
49
+ returns (RiskId riskId)
50
+ {
51
+ // checks
52
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
53
+
54
+ // effects
55
+ riskId = RiskIdLib.toRiskId(productNftId, id);
56
+ IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo({
57
+ productNftId: productNftId,
58
+ createdAt: TimestampLib.blockTimestamp(),
59
+ data: data});
60
+
61
+ instance.getInstanceStore().createRisk(
62
+ riskId,
63
+ riskInfo
64
+ );
65
+
66
+ // add risk to RiskSet
67
+ RiskSet riskSet = instance.getRiskSet();
68
+ riskSet.add(riskId);
69
+ }
70
+
71
+
72
+ function updateRisk(
73
+ RiskId riskId,
74
+ bytes memory data
75
+ )
76
+ external
77
+ restricted()
78
+ {
79
+ // checks
80
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
81
+
82
+ // effects
83
+ InstanceReader instanceReader = instance.getInstanceReader();
84
+ IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
85
+
86
+ if (riskInfo.productNftId != productNftId) {
87
+ revert ErrorRiskServiceRiskProductMismatch(riskId, riskInfo.productNftId, productNftId);
88
+ }
89
+
90
+ riskInfo.data = data;
91
+ instance.getInstanceStore().updateRisk(riskId, riskInfo, KEEP_STATE());
92
+ }
93
+
94
+
95
+ function updateRiskState(
96
+ RiskId riskId,
97
+ StateId state
98
+ )
99
+ external
100
+ restricted()
101
+ {
102
+ // checks
103
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
104
+
105
+ NftId riskProductNftId = instance.getInstanceReader().getRiskInfo(riskId).productNftId;
106
+ if (riskProductNftId != productNftId) {
107
+ revert ErrorRiskServiceRiskProductMismatch(riskId, riskProductNftId, productNftId);
108
+ }
109
+
110
+ // effects
111
+ instance.getInstanceStore().updateRiskState(riskId, state);
112
+
113
+ if (state == ACTIVE()) {
114
+ instance.getRiskSet().activate(riskId);
115
+ } else if (state == PAUSED()) {
116
+ instance.getRiskSet().pause(riskId);
117
+ }
118
+ }
119
+
120
+ function _getAndVerifyActiveComponent(ObjectType expectedType)
121
+ internal
122
+ view
123
+ returns (
124
+ NftId componentNftId,
125
+ IInstance instance
126
+ )
127
+ {
128
+ IRegistry.ObjectInfo memory info;
129
+ address instanceAddress;
130
+ bool isActive = true;
131
+
132
+ if (expectedType != COMPONENT()) {
133
+ (info, instanceAddress) = ContractLib.getAndVerifyComponent(
134
+ getRegistry(),
135
+ msg.sender, // caller
136
+ expectedType,
137
+ isActive);
138
+ } else {
139
+ (info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
140
+ getRegistry(),
141
+ msg.sender,
142
+ isActive);
143
+ }
144
+
145
+ // get component nft id and instance
146
+ componentNftId = info.nftId;
147
+ instance = IInstance(instanceAddress);
148
+ }
149
+
150
+
151
+ function _getDomain() internal pure override returns(ObjectType) {
152
+ return RISK();
153
+ }
154
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {RiskService} from "./RiskService.sol";
7
+
8
+ contract RiskServiceManager is ProxyManager {
9
+
10
+ RiskService private _riskService;
11
+
12
+ /// @dev initializes proxy manager with product service implementation
13
+ constructor(
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
17
+ )
18
+ {
19
+ RiskService svc = new RiskService{salt: salt}();
20
+ bytes memory data = abi.encode(authority, registry);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
+ data,
25
+ salt);
26
+
27
+ _riskService = RiskService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getRiskService()
32
+ external
33
+ view
34
+ returns (RiskService riskService)
35
+ {
36
+ return _riskService;
37
+ }
38
+
39
+ }
@@ -8,6 +8,8 @@ import {ITransferInterceptor} from "./ITransferInterceptor.sol";
8
8
 
9
9
  contract ChainNft is ERC721Enumerable {
10
10
 
11
+ event LogTokenInterceptorAddress(uint256 tokenId, address interceptor);
12
+
11
13
  // constants
12
14
  string public constant NAME = "Dezentralized Insurance Protocol NFT";
13
15
  string public constant SYMBOL = "DIPNFT";
@@ -16,10 +18,10 @@ contract ChainNft is ERC721Enumerable {
16
18
  uint256 public constant GLOBAL_REGISTRY_ID = 2101;
17
19
 
18
20
  // custom errors
19
- error CallerNotRegistry(address caller);
20
- error RegistryAddressZero();
21
- error NftUriEmpty();
22
- error NftUriAlreadySet();
21
+ error ErrorChainNftCallerNotRegistry(address caller);
22
+ error ErrorChainNftRegistryAddressZero();
23
+ error ErrorChainNftUriEmpty();
24
+ error ErrorChainNftUriAlreadySet();
23
25
 
24
26
  // contract state
25
27
 
@@ -33,31 +35,25 @@ contract ChainNft is ERC721Enumerable {
33
35
  address private _registry;
34
36
 
35
37
  // only used for _getNextTokenId
36
- uint256 internal _chainIdInt;
37
38
  uint256 internal _chainIdDigits;
38
39
  uint256 internal _chainIdMultiplier;
39
40
  uint256 internal _idNext;
40
41
  uint256 internal _totalMinted;
41
42
 
42
43
  modifier onlyRegistry() {
43
- if (msg.sender != _registry) { revert CallerNotRegistry(msg.sender); }
44
+ if (msg.sender != _registry) { revert ErrorChainNftCallerNotRegistry(msg.sender); }
44
45
  _;
45
46
  }
46
47
 
47
- constructor(address registry) ERC721(NAME, SYMBOL) {
48
- if (registry == address(0)) { revert RegistryAddressZero(); }
48
+ constructor(address registry)
49
+ ERC721(NAME, SYMBOL)
50
+ {
51
+ if (registry == address(0)) { revert ErrorChainNftRegistryAddressZero(); }
49
52
 
53
+ // NFT contract is deployed by the registry
50
54
  _registry = registry;
51
- _chainIdInt = block.chainid;
52
- _chainIdDigits = 0;
53
-
54
- // count digis
55
- uint256 num = _chainIdInt;
56
- while (num != 0) {
57
- _chainIdDigits++;
58
- num /= 10;
59
- }
60
55
 
56
+ _chainIdDigits = _calculateChainIdDigits(block.chainid);
61
57
  _chainIdMultiplier = 10 ** _chainIdDigits;
62
58
 
63
59
  // the first object registered through normal registration starts with id 4
@@ -66,6 +62,7 @@ contract ChainNft is ERC721Enumerable {
66
62
  // 3 -> staking
67
63
  // >= 4 -> all other objects
68
64
  _idNext = 4;
65
+ _totalMinted = 0;
69
66
  }
70
67
 
71
68
  /**
@@ -73,12 +70,16 @@ contract ChainNft is ERC721Enumerable {
73
70
  * not part of the IRegistry interface only needed for
74
71
  * initial registry setup (protocol and global registry objects)
75
72
  */
76
- function mint(address to, uint256 tokenId) external onlyRegistry {
77
- _totalMinted++;
78
- _safeMint(to, tokenId);
73
+ function mint(
74
+ address to,
75
+ uint256 tokenId
76
+ )
77
+ external
78
+ onlyRegistry()
79
+ {
80
+ _safeMintWithInterceptorAddress(to, tokenId, address(0));
79
81
  }
80
82
 
81
-
82
83
  /**
83
84
  * @dev mints the next token to register new objects
84
85
  * non-zero transferInterceptors are recorded and called during nft token transfers.
@@ -88,7 +89,11 @@ contract ChainNft is ERC721Enumerable {
88
89
  address to,
89
90
  address interceptor,
90
91
  string memory uri
91
- ) public onlyRegistry returns (uint256 tokenId) {
92
+ )
93
+ public
94
+ onlyRegistry()
95
+ returns (uint256 tokenId)
96
+ {
92
97
  tokenId = _getNextTokenId();
93
98
 
94
99
  if (interceptor != address(0)) {
@@ -99,24 +104,21 @@ contract ChainNft is ERC721Enumerable {
99
104
  _uri[tokenId] = uri;
100
105
  }
101
106
 
102
- _totalMinted++;
103
- _safeMint(to, tokenId);
104
-
105
- if(interceptor != address(0)) {
106
- ITransferInterceptor(interceptor).nftMint(to, tokenId);
107
- }
107
+ _safeMintWithInterceptorAddress(to, tokenId, interceptor);
108
108
  }
109
109
 
110
110
 
111
111
  /**
112
- * @dev amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id
113
- * this allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
112
+ * @dev Amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id.
113
+ * This allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
114
114
  */
115
- function transferFrom(address from, address to, uint256 tokenId) public override (ERC721, IERC721) {
115
+ function transferFrom(address from, address to, uint256 tokenId) public override (IERC721, ERC721) {
116
+ // default open zeppelin implementation of transferFrom
116
117
  super.transferFrom(from, to, tokenId);
117
118
 
118
119
  if (_interceptor[tokenId] != address(0)) {
119
- ITransferInterceptor(_interceptor[tokenId]).nftTransferFrom(from, to, tokenId);
120
+ address operator = msg.sender;
121
+ ITransferInterceptor(_interceptor[tokenId]).nftTransferFrom(from, to, tokenId, operator);
120
122
  }
121
123
  }
122
124
 
@@ -131,8 +133,8 @@ contract ChainNft is ERC721Enumerable {
131
133
  uint256 tokenId,
132
134
  string memory uri
133
135
  ) external onlyRegistry {
134
- if (bytes(uri).length == 0) { revert NftUriEmpty(); }
135
- if (bytes(_uri[tokenId]).length > 0) { revert NftUriAlreadySet(); }
136
+ if (bytes(uri).length == 0) { revert ErrorChainNftUriEmpty(); }
137
+ if (bytes(_uri[tokenId]).length > 0) { revert ErrorChainNftUriAlreadySet(); }
136
138
 
137
139
  _requireOwned(tokenId);
138
140
  _uri[tokenId] = uri;
@@ -198,19 +200,50 @@ contract ChainNft is ERC721Enumerable {
198
200
  * (42 * 10 ** 10 + 9876543210) * 100 + 10
199
201
  * (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
200
202
  */
201
- function calculateTokenId(uint256 idIndex) public view returns (uint256 id) {
202
- id =
203
- (idIndex * _chainIdMultiplier + _chainIdInt) *
204
- 100 +
205
- _chainIdDigits;
203
+ function calculateTokenId(uint256 idIndex, uint256 chainId) public view returns (uint256 id) {
204
+ if(chainId == block.chainid) {
205
+ return 100 * (idIndex * _chainIdMultiplier + chainId) + _chainIdDigits;
206
+ } else {
207
+ uint256 chainIdDigits = _calculateChainIdDigits(chainId);
208
+ return 100 * (idIndex * (10 ** chainIdDigits) + chainId) + chainIdDigits;
209
+ }
210
+ }
211
+
212
+ function calculateTokenId(uint256 idIndex) public view returns (uint256) {
213
+ return 100 * (idIndex * _chainIdMultiplier + block.chainid) + _chainIdDigits;
206
214
  }
207
215
 
208
216
  function getNextTokenId() external view returns (uint256) {
209
217
  return calculateTokenId(_idNext);
210
218
  }
211
219
 
220
+ // ---------------- private functions ----------------- //
221
+
212
222
  function _getNextTokenId() private returns (uint256 id) {
213
223
  id = calculateTokenId(_idNext);
214
224
  _idNext++;
215
225
  }
226
+
227
+ function _calculateChainIdDigits(uint256 chainId) private pure returns (uint256) {
228
+ uint256 num = chainId;
229
+ uint256 digits = 0;
230
+ while (num != 0) {
231
+ digits++;
232
+ num /= 10;
233
+ }
234
+ return digits;
235
+ }
236
+
237
+ function _safeMintWithInterceptorAddress(
238
+ address to,
239
+ uint256 tokenId,
240
+ address interceptor
241
+ )
242
+ private
243
+ {
244
+ _totalMinted++;
245
+ _safeMint(to, tokenId);
246
+
247
+ emit LogTokenInterceptorAddress(tokenId, interceptor);
248
+ }
216
249
  }
@@ -3,64 +3,94 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
+ import {IRelease} from "./IRelease.sol";
7
+
6
8
  import {NftId} from "../type/NftId.sol";
7
9
  import {ObjectType} from "../type/ObjectType.sol";
8
10
  import {VersionPart} from "../type/Version.sol";
9
- import {Timestamp} from "../type/Timestamp.sol";
10
11
 
11
- interface IRegistry is IERC165 {
12
+ /// @title Chain Registry interface.
13
+ /// A chain registry holds all protocol relevant objects with basic metadata.
14
+ /// Registered objects include services, instances, products, pools, policies, bundles, stakes and more.
15
+ /// Registered objects are represented by NFTs.
16
+ /// When on mainnet registry is global and keeps arbitrary number of chain registries residing on different chain ids.
17
+ /// When not on mainnet registry keeps the only object residing on different chain id (on mainnet) - global registry.
18
+ interface IRegistry is
19
+ IERC165
20
+ {
12
21
 
13
22
  event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
14
23
  event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
24
+ event LogChainRegistryRegistration(NftId nftId, uint256 chainId, address chainRegistryAddress);
15
25
 
16
- // registerService()
17
- error CallerNotReleaseManager();
18
- error ServiceAlreadyRegistered(address service);
26
+ // initialize
27
+ error ErrorRegistryCallerNotDeployer();
19
28
 
20
- // register()
21
- error CallerNotRegistryService();
22
- error ServiceRegistration();
29
+ // registerRegistry()
30
+ error ErrorRegistryNotOnMainnet(uint256 chainId);
31
+ error ErrorRegistryChainRegistryChainIdZero(NftId nftId);
32
+ error ErrorRegistryChainRegistryAddressZero(NftId nftId, uint256 chainId);
33
+ error ErrorRegistryChainRegistryNftIdInvalid(NftId nftId, uint256 chainId);
34
+ error ErrorRegistryChainRegistryAlreadyRegistered(NftId nftId, uint256 chainId);
35
+
36
+ // registerService()
37
+ error ErrorRegistryServiceAddressZero();
38
+ error ErrorRegistryServiceVersionZero(address service);
39
+ //error ErrorRegistryServiceVersionMismatch(address service, VersionPart serviceVersion, VersionPart releaseVersion);
40
+ //error ErrorRegistryServiceVersionNotDeploying(address service, VersionPart version);
41
+ error ErrorRegistryServiceDomainZero(address service, VersionPart version);
42
+ error ErrorRegistryNotService(address service, ObjectType objectType);
43
+ error ErrorRegistryServiceParentNotRegistry(address service, VersionPart version, NftId parentNftId);
44
+ error ErrorRegistryServiceDomainAlreadyRegistered(address service, VersionPart version, ObjectType domain);
23
45
 
24
46
  // registerWithCustomTypes()
25
- error CoreTypeRegistration();
47
+ error ErrorRegistryCoreTypeRegistration();
26
48
 
27
49
  // _register()
28
- error ZeroParentAddress();
29
- error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
30
- error ContractAlreadyRegistered(address objectAddress);
31
-
32
- // _registerStaking()
33
- error StakingAlreadyRegistered(address stakingAddress);
50
+ error ErrorRegistryGlobalRegistryAsParent(address objectAddress, ObjectType objectType);
51
+ error ErrorRegistryTypesCombinationInvalid(address objectAddress, ObjectType objectType, ObjectType parentType);
52
+ error ErrorRegistryContractAlreadyRegistered(address objectAddress);
34
53
 
35
54
  struct ObjectInfo {
55
+ // slot 0
36
56
  NftId nftId;
37
57
  NftId parentNftId;
38
58
  ObjectType objectType;
39
59
  bool isInterceptor;
60
+ // slot 1
40
61
  address objectAddress;
62
+ // slot 2
41
63
  address initialOwner;
64
+ // slot 3
42
65
  bytes data;
43
66
  }
44
67
 
45
- struct ReleaseInfo {
46
- ObjectType[] domains;
47
- Timestamp createdAt;
48
- //Timestamp updatedAt;
49
- }
50
-
51
- function registerStaking(
52
- address stakingAddress,
53
- address stakingOwner
54
- ) external returns(NftId nftId);
55
-
68
+ /// @dev Registers a registry contract for a specified chain.
69
+ /// Only one chain registry may be registered per chain
70
+ function registerRegistry(
71
+ NftId nftId,
72
+ uint256 chainId,
73
+ address chainRegistryAddress
74
+ ) external;
75
+
76
+ /// @dev Register a service with using the provided domain and version.
77
+ /// The function returns a newly minted service NFT ID.
78
+ /// May only be used to register services.
56
79
  function registerService(
57
80
  ObjectInfo memory serviceInfo,
58
81
  VersionPart serviceVersion,
59
82
  ObjectType serviceDomain
60
83
  ) external returns(NftId nftId);
61
84
 
85
+ /// @dev Register an object with a known core type.
86
+ /// The function returns a newly minted object NFT ID.
87
+ /// May not be used to register services.
62
88
  function register(ObjectInfo memory info) external returns (NftId nftId);
63
89
 
90
+ /// @dev Register an object with a custom type.
91
+ /// The function returns a newly minted object NFT ID.
92
+ /// This function is reserved for GIF releases > 3.
93
+ /// May not be used to register known core types.
64
94
  function registerWithCustomType(ObjectInfo memory info) external returns (NftId nftId);
65
95
 
66
96
  function getInitialVersion() external view returns (VersionPart);
@@ -69,20 +99,39 @@ interface IRegistry is IERC165 {
69
99
 
70
100
  function getLatestVersion() external view returns (VersionPart);
71
101
 
72
- function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory);
102
+ function getReleaseInfo(VersionPart release) external view returns (IRelease.ReleaseInfo memory);
73
103
 
74
- function getObjectCount() external view returns (uint256);
104
+ /// @dev Returns the number of supported chains.
105
+ function chainIds() external view returns (uint256);
75
106
 
76
- function getNftId() external view returns (NftId nftId);
107
+ /// @dev Returns the chain id at the specified index.
108
+ function getChainId(uint256 idx) external view returns (uint256);
109
+
110
+ /// @dev Returns the NFT ID of the registry for the specified chain.
111
+ function getRegistryNftId(uint256 chainId) external returns (NftId nftId);
112
+
113
+ function getObjectCount() external view returns (uint256);
77
114
 
78
- function getNftId(address objectAddress) external view returns (NftId nftId);
115
+ function getNftIdForAddress(address objectAddress) external view returns (NftId nftId);
79
116
 
80
117
  function ownerOf(NftId nftId) external view returns (address);
81
118
 
119
+ function isOwnerOf(NftId nftId, address expectedOwner) external view returns (bool);
120
+
82
121
  function ownerOf(address contractAddress) external view returns (address);
83
122
 
84
123
  function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory info);
85
124
 
125
+ function getParentNftId(NftId nftId) external view returns (NftId parentNftId);
126
+
127
+ function isObjectType(NftId nftId, ObjectType expectedObjectType) external view returns (bool);
128
+
129
+ function isObjectType(address contractAddress, ObjectType expectedObjectType) external view returns (bool);
130
+
131
+ function getObjectAddress(NftId nftId) external view returns (address objectAddress);
132
+
133
+ /// @dev Returns the object info for the specified object address.
134
+ // MUST not be used with chain registry address (resides on different chan id)
86
135
  function getObjectInfo(address object) external view returns (ObjectInfo memory info);
87
136
 
88
137
  function isRegistered(NftId nftId) external view returns (bool);
@@ -93,18 +142,29 @@ interface IRegistry is IERC165 {
93
142
 
94
143
  function isRegisteredComponent(address object) external view returns (bool);
95
144
 
96
- function isValidRelease(VersionPart version) external view returns (bool);
145
+ function isActiveRelease(VersionPart version) external view returns (bool);
97
146
 
98
147
  function getServiceAddress(
99
148
  ObjectType serviceDomain,
100
149
  VersionPart releaseVersion
101
150
  ) external view returns (address serviceAddress);
102
151
 
103
- function getStakingAddress() external view returns (address staking);
152
+ function getProtocolNftId() external view returns (NftId protocolNftId);
104
153
 
105
- function getReleaseManagerAddress() external view returns (address);
154
+ function getNftId() external view returns (NftId nftId);
106
155
 
156
+ function getOwner() external view returns (address);
157
+
158
+ // TODO refactor the address getters below to contract getters
107
159
  function getChainNftAddress() external view returns (address);
108
160
 
109
- function getOwner() external view returns (address);
161
+ function getReleaseRegistryAddress() external view returns (address);
162
+
163
+ function getStakingAddress() external view returns (address);
164
+
165
+ function getTokenRegistryAddress() external view returns (address);
166
+
167
+ function getRegistryAdminAddress() external view returns (address);
168
+
169
+ function getAuthority() external view returns (address);
110
170
  }
@@ -11,41 +11,37 @@ import {IRegistry} from "./IRegistry.sol";
11
11
 
12
12
  import {IRegisterable} from "../shared/IRegisterable.sol";
13
13
  import {IComponent} from "../shared/IComponent.sol";
14
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
15
+
14
16
 
15
17
  interface IRegistryService is
16
18
  IService
17
19
  {
18
- error SelfRegistration();
19
- error NotRegistryOwner();
20
-
21
- error NotService();
22
- error NotInstance();
23
- error NotProduct();
24
- error NotPool();
25
- error NotDistribution();
26
-
27
- error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
28
- error NotRegisterableOwner(address expectedOwner);
29
- error RegisterableOwnerIsZero();
30
- error RegisterableOwnerIsRegistered();
31
- error InvalidInitialOwner(address initialOwner);
32
- error InvalidAddress(address registerableAddress);
33
-
34
- struct FunctionConfig
35
- {
36
- ObjectType serviceDomain;
37
- bytes4[] selectors;
38
- }
39
-
40
- function getFunctionConfigs()
41
- external
42
- pure
43
- returns(
44
- FunctionConfig[] memory config
45
- );
46
-
47
- function registerStaking(IRegisterable staking, address owner)
48
- external returns(IRegistry.ObjectInfo memory info);
20
+ error ErrorRegistryServiceNotRegistryOwner();
21
+
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);
27
+
28
+ error ErrorRegistryServiceRegisterableAddressInvalid(IRegisterable registerable, address found);
29
+ error ErrorRegistryServiceRegisterableTypeInvalid(IRegisterable registerable, ObjectType expected, ObjectType found);
30
+ error ErrorRegistryServiceRegisterableOwnerInvalid(IRegisterable registerable, address expected, address found);
31
+ error ErrorRegistryServiceRegisterableOwnerZero(IRegisterable registerable);
32
+ error ErrorRegistryServiceRegisterableOwnerRegistered(IRegisterable registerable, address owner);
33
+ error ErrorRegistryServiceRegisterableSelfRegistration(IRegisterable registerable);
34
+
35
+ error ErrorRegistryServiceObjectAddressNotZero(ObjectType objectType);
36
+ error ErrorRegistryServiceObjectTypeInvalid(ObjectType expected, ObjectType found);
37
+ error ErrorRegistryServiceObjectOwnerRegistered(ObjectType objectType, address owner);
38
+ error ErrorRegistryServiceObjectOwnerZero(ObjectType objectType);
39
+
40
+ error ErrorRegistryServiceInvalidInitialOwner(address initialOwner);
41
+ error ErrorRegistryServiceInvalidAddress(address registerableAddress);
42
+
43
+ function registerStake(IRegistry.ObjectInfo memory info)
44
+ external returns(NftId nftId);
49
45
 
50
46
  function registerInstance(IRegisterable instance, address owner)
51
47
  external returns(IRegistry.ObjectInfo memory info);
@@ -53,10 +49,7 @@ interface IRegistryService is
53
49
  function registerProduct(IComponent product, address owner)
54
50
  external returns(IRegistry.ObjectInfo memory info);
55
51
 
56
- function registerPool(IComponent pool, address owner)
57
- external returns(IRegistry.ObjectInfo memory info);
58
-
59
- function registerDistribution(IComponent distribution, address owner)
52
+ function registerProductLinkedComponent(IComponent component, ObjectType objectType, address owner)
60
53
  external returns(IRegistry.ObjectInfo memory info);
61
54
 
62
55
  function registerDistributor(IRegistry.ObjectInfo memory info) external returns(NftId nftId);