@etherisc/gif-next 0.0.2-85e7957-019 → 0.0.2-860e68d-106

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 (535) hide show
  1. package/README.md +89 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +673 -262
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +549 -209
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +183 -487
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +102 -387
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +644 -392
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +208 -132
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +96 -191
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +476 -137
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1472 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2045 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1423 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1639 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2538 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +560 -66
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +377 -58
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +568 -166
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1034 -311
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -68
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1689 -736
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +390 -228
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +142 -104
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +957 -642
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  89. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +127 -355
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
  108. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +103 -133
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +103 -323
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +176 -96
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +156 -384
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +374 -446
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +169 -133
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +259 -153
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +142 -183
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +524 -288
  133. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  134. package/artifacts/contracts/pool/Pool.sol/Pool.json +132 -363
  135. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  136. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  137. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +730 -549
  139. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +205 -113
  141. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
  143. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +158 -98
  145. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +272 -431
  147. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  148. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
  149. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +472 -235
  151. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +194 -122
  153. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +301 -9
  155. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +348 -16
  157. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +358 -127
  159. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
  161. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  162. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +257 -226
  163. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  164. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +283 -157
  165. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +477 -373
  167. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  168. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  169. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +195 -123
  171. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.json +247 -332
  173. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +164 -136
  175. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  176. package/artifacts/contracts/product/Product.sol/Product.json +264 -423
  177. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  179. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  181. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  183. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +356 -45
  185. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +169 -37
  187. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  189. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  191. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.json +562 -106
  193. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +795 -394
  195. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  197. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +140 -88
  201. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  203. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  205. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +483 -253
  207. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
  209. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
  211. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  212. package/artifacts/contracts/shared/Component.sol/Component.json +86 -277
  213. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +482 -643
  215. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +176 -134
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -93
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +432 -290
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +103 -133
  231. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  233. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  234. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  235. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  236. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
  237. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  239. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -0
  241. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IService.sol/IService.json +84 -2
  244. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  245. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  246. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  247. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +102 -322
  248. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  249. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  250. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  251. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  252. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  253. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  254. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  255. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +41 -57
  256. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  257. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  258. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +141 -97
  260. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  261. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  262. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  263. package/artifacts/contracts/shared/Service.sol/Service.json +86 -111
  264. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  268. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  269. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  270. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  271. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +341 -133
  272. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  273. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +184 -23
  274. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  275. package/artifacts/contracts/staking/Staking.sol/Staking.json +466 -417
  276. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  277. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  278. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  280. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +180 -99
  282. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +91 -67
  284. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +253 -171
  286. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +157 -93
  288. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +205 -150
  290. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  291. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +91 -50
  292. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  293. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Amount.sol/AmountLib.json +35 -11
  295. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  298. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  300. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  302. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  304. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  305. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  306. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  308. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  309. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  310. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  312. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  314. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  316. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  318. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  320. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  322. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
  324. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  326. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  328. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  330. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  332. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  334. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
  336. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  338. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  340. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  341. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  342. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  343. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +117 -78
  344. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  345. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  346. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  347. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  348. package/contracts/accounting/AccountingService.sol +274 -0
  349. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  350. package/contracts/accounting/IAccountingService.sol +47 -0
  351. package/contracts/authorization/AccessAdmin.sol +456 -267
  352. package/contracts/authorization/AccessAdminLib.sol +396 -0
  353. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  354. package/contracts/authorization/Authorization.sol +159 -208
  355. package/contracts/authorization/IAccess.sol +25 -6
  356. package/contracts/authorization/IAccessAdmin.sol +87 -79
  357. package/contracts/authorization/IAuthorization.sol +9 -36
  358. package/contracts/authorization/IServiceAuthorization.sol +57 -17
  359. package/contracts/authorization/ServiceAuthorization.sol +254 -24
  360. package/contracts/distribution/BasicDistribution.sol +20 -17
  361. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  362. package/contracts/distribution/Distribution.sol +42 -90
  363. package/contracts/distribution/DistributionService.sol +242 -131
  364. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  365. package/contracts/distribution/IDistributionComponent.sol +4 -11
  366. package/contracts/distribution/IDistributionService.sol +47 -29
  367. package/contracts/examples/fire/DamageLevel.sol +59 -0
  368. package/contracts/examples/fire/FirePool.sol +86 -0
  369. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  370. package/contracts/examples/fire/FireProduct.sol +433 -0
  371. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  372. package/contracts/examples/fire/FireUSD.sol +26 -0
  373. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  374. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  375. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  376. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  377. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  378. package/contracts/examples/unpermissioned/SimpleProduct.sol +416 -0
  379. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  380. package/contracts/instance/BundleSet.sol +42 -38
  381. package/contracts/instance/IInstance.sol +101 -42
  382. package/contracts/instance/IInstanceService.sol +56 -32
  383. package/contracts/instance/Instance.sol +189 -97
  384. package/contracts/instance/InstanceAdmin.sol +275 -158
  385. package/contracts/instance/InstanceAuthorizationV3.sol +120 -58
  386. package/contracts/instance/InstanceReader.sol +476 -257
  387. package/contracts/instance/InstanceService.sol +289 -233
  388. package/contracts/instance/InstanceServiceManager.sol +6 -7
  389. package/contracts/instance/InstanceStore.sol +23 -2
  390. package/contracts/instance/RiskSet.sol +126 -0
  391. package/contracts/instance/base/BalanceStore.sol +3 -5
  392. package/contracts/instance/base/ObjectCounter.sol +1 -2
  393. package/contracts/instance/base/ObjectLifecycle.sol +12 -10
  394. package/contracts/instance/base/ObjectSet.sol +31 -33
  395. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  396. package/contracts/instance/module/IBundle.sol +6 -5
  397. package/contracts/instance/module/IComponents.sol +30 -15
  398. package/contracts/instance/module/IDistribution.sol +21 -8
  399. package/contracts/instance/module/IPolicy.sol +50 -29
  400. package/contracts/instance/module/IRisk.sol +5 -0
  401. package/contracts/oracle/BasicOracle.sol +1 -4
  402. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  403. package/contracts/oracle/IOracle.sol +9 -4
  404. package/contracts/oracle/IOracleService.sol +2 -1
  405. package/contracts/oracle/Oracle.sol +7 -19
  406. package/contracts/oracle/OracleService.sol +117 -85
  407. package/contracts/oracle/OracleServiceManager.sol +6 -6
  408. package/contracts/pool/BasicPool.sol +35 -39
  409. package/contracts/pool/BasicPoolAuthorization.sol +36 -13
  410. package/contracts/pool/BundleService.sol +126 -182
  411. package/contracts/pool/BundleServiceManager.sol +6 -6
  412. package/contracts/pool/IBundleService.sol +32 -49
  413. package/contracts/pool/IPoolComponent.sol +19 -15
  414. package/contracts/pool/IPoolService.sol +97 -76
  415. package/contracts/pool/Pool.sol +140 -135
  416. package/contracts/pool/PoolLib.sol +341 -0
  417. package/contracts/pool/PoolService.sol +388 -302
  418. package/contracts/pool/PoolServiceManager.sol +4 -4
  419. package/contracts/product/ApplicationService.sol +143 -46
  420. package/contracts/product/ApplicationServiceManager.sol +4 -4
  421. package/contracts/product/BasicProduct.sol +10 -13
  422. package/contracts/product/BasicProductAuthorization.sol +32 -12
  423. package/contracts/product/ClaimService.sol +385 -161
  424. package/contracts/product/ClaimServiceManager.sol +4 -4
  425. package/contracts/product/IApplicationService.sol +29 -3
  426. package/contracts/product/IClaimService.sol +44 -8
  427. package/contracts/product/IPolicyService.sol +61 -43
  428. package/contracts/product/IPricingService.sol +11 -10
  429. package/contracts/product/IProductComponent.sol +27 -5
  430. package/contracts/product/IRiskService.sol +48 -0
  431. package/contracts/product/PolicyService.sol +423 -307
  432. package/contracts/product/PolicyServiceLib.sol +139 -0
  433. package/contracts/product/PolicyServiceManager.sol +4 -4
  434. package/contracts/product/PricingService.sol +90 -84
  435. package/contracts/product/PricingServiceManager.sol +4 -4
  436. package/contracts/product/Product.sol +174 -102
  437. package/contracts/product/RiskService.sol +190 -0
  438. package/contracts/product/RiskServiceManager.sol +39 -0
  439. package/contracts/registry/ChainNft.sol +72 -40
  440. package/contracts/registry/IRegistry.sol +70 -29
  441. package/contracts/registry/IRegistryService.sol +5 -12
  442. package/contracts/registry/IRelease.sol +29 -0
  443. package/contracts/registry/ITransferInterceptor.sol +1 -2
  444. package/contracts/registry/Registry.sol +364 -204
  445. package/contracts/registry/RegistryAdmin.sol +110 -287
  446. package/contracts/registry/RegistryAuthorization.sol +284 -0
  447. package/contracts/registry/RegistryService.sol +38 -49
  448. package/contracts/registry/RegistryServiceManager.sol +3 -3
  449. package/contracts/registry/ReleaseAdmin.sol +195 -0
  450. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  451. package/contracts/registry/ReleaseRegistry.sol +275 -240
  452. package/contracts/registry/ServiceAuthorizationV3.sol +202 -57
  453. package/contracts/registry/TokenRegistry.sol +12 -13
  454. package/contracts/shared/Component.sol +65 -135
  455. package/contracts/shared/ComponentService.sol +412 -384
  456. package/contracts/shared/ComponentServiceManager.sol +8 -5
  457. package/contracts/shared/ContractLib.sol +311 -0
  458. package/contracts/shared/IComponent.sol +6 -18
  459. package/contracts/shared/IComponentService.sol +43 -40
  460. package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
  461. package/contracts/shared/ILifecycle.sol +3 -1
  462. package/contracts/shared/INftOwnable.sol +4 -0
  463. package/contracts/shared/IPolicyHolder.sol +12 -22
  464. package/contracts/shared/IRegisterable.sol +22 -1
  465. package/contracts/shared/IService.sol +3 -5
  466. package/contracts/shared/InitializableERC165.sol +10 -2
  467. package/contracts/shared/InstanceLinkedComponent.sol +72 -50
  468. package/contracts/shared/KeyValueStore.sol +1 -1
  469. package/contracts/shared/Lifecycle.sol +15 -4
  470. package/contracts/shared/NftOwnable.sol +31 -9
  471. package/contracts/shared/PolicyHolder.sol +18 -54
  472. package/contracts/shared/Registerable.sol +52 -21
  473. package/contracts/shared/RegistryLinked.sol +9 -14
  474. package/contracts/shared/Service.sol +20 -35
  475. package/contracts/shared/TokenHandler.sol +310 -26
  476. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  477. package/contracts/staking/IStaking.sol +48 -20
  478. package/contracts/staking/IStakingService.sol +21 -11
  479. package/contracts/staking/Staking.sol +198 -109
  480. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +95 -45
  481. package/contracts/staking/StakingManager.sol +8 -6
  482. package/contracts/staking/StakingReader.sol +40 -24
  483. package/contracts/staking/StakingService.sol +96 -39
  484. package/contracts/staking/StakingServiceManager.sol +6 -5
  485. package/contracts/staking/StakingStore.sol +3 -2
  486. package/contracts/staking/TargetManagerLib.sol +8 -4
  487. package/contracts/type/Amount.sol +15 -0
  488. package/contracts/type/ClaimId.sol +6 -1
  489. package/contracts/type/Fee.sol +8 -8
  490. package/contracts/type/Key32.sol +2 -2
  491. package/contracts/type/Key32Set.sol +62 -0
  492. package/contracts/type/NftId.sol +7 -0
  493. package/contracts/type/ObjectType.sol +73 -37
  494. package/contracts/type/PayoutId.sol +10 -10
  495. package/contracts/type/RiskId.sol +38 -6
  496. package/contracts/type/RoleId.sol +61 -55
  497. package/contracts/type/Seconds.sol +12 -0
  498. package/contracts/type/Selector.sol +5 -0
  499. package/contracts/type/StateId.sol +15 -1
  500. package/contracts/type/String.sol +12 -0
  501. package/contracts/type/Timestamp.sol +0 -5
  502. package/contracts/type/UFixed.sol +37 -126
  503. package/contracts/type/Version.sol +54 -5
  504. package/contracts/upgradeability/IVersionable.sol +3 -0
  505. package/contracts/upgradeability/ProxyManager.sol +93 -45
  506. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
  507. package/contracts/upgradeability/Versionable.sol +8 -5
  508. package/package.json +5 -4
  509. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  510. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  511. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  512. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  513. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  514. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  515. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  516. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -400
  517. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  518. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  519. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  520. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  521. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  522. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  523. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  524. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  525. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -470
  526. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  527. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  528. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  529. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  530. package/contracts/instance/module/IAccess.sol +0 -46
  531. package/contracts/product/IProductService.sol +0 -33
  532. package/contracts/product/ProductService.sol +0 -99
  533. package/contracts/product/ProductServiceManager.sol +0 -39
  534. package/contracts/shared/ComponentVerifyingService.sol +0 -117
  535. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,37 +1,30 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
4
  import {Amount, AmountLib} from "../type/Amount.sol";
7
5
  import {ClaimId} from "../type/ClaimId.sol";
8
- import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
9
- import {Fee, FeeLib} from "../type/Fee.sol";
10
- import {IRisk} from "../instance/module/IRisk.sol";
6
+ import {Fee} from "../type/Fee.sol";
11
7
  import {IApplicationService} from "./IApplicationService.sol";
12
8
  import {IAuthorization} from "../authorization/IAuthorization.sol";
13
9
  import {IComponentService} from "../shared/IComponentService.sol";
10
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
14
11
  import {IPolicyService} from "./IPolicyService.sol";
15
- import {IProductService} from "./IProductService.sol";
12
+ import {IRiskService} from "./IRiskService.sol";
16
13
  import {IClaimService} from "./IClaimService.sol";
17
14
  import {IPricingService} from "./IPricingService.sol";
18
15
  import {IProductComponent} from "./IProductComponent.sol";
19
- import {NftId, NftIdLib} from "../type/NftId.sol";
16
+ import {NftId} from "../type/NftId.sol";
17
+ import {COMPONENT, PRODUCT, BUNDLE, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
20
18
  import {PayoutId} from "../type/PayoutId.sol";
21
- import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
19
+ import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE, RISK } from "../type/ObjectType.sol";
22
20
  import {ReferralId} from "../type/Referral.sol";
23
- import {RiskId, RiskIdLib} from "../type/RiskId.sol";
21
+ import {RiskId} from "../type/RiskId.sol";
24
22
  import {Seconds} from "../type/Seconds.sol";
25
23
  import {StateId} from "../type/StateId.sol";
26
24
  import {Timestamp} from "../type/Timestamp.sol";
27
25
 
28
- import {TokenHandler} from "../shared/TokenHandler.sol";
29
-
30
- import {InstanceReader} from "../instance/InstanceReader.sol";
31
26
  import {IPolicy} from "../instance/module/IPolicy.sol";
32
27
  import {IComponents} from "../instance/module/IComponents.sol";
33
- import {Pool} from "../pool/Pool.sol";
34
- import {Distribution} from "../distribution/Distribution.sol";
35
28
 
36
29
  abstract contract Product is
37
30
  InstanceLinkedComponent,
@@ -41,16 +34,39 @@ abstract contract Product is
41
34
  bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
42
35
 
43
36
  struct ProductStorage {
44
- IProductService _productService;
37
+ IComponents.ProductInfo _productInfo;
38
+ IComponents.FeeInfo _feeInfo;
39
+ IComponentService _componentService;
40
+ IRiskService _riskService;
45
41
  IApplicationService _applicationService;
46
42
  IPolicyService _policyService;
47
43
  IClaimService _claimService;
48
44
  IPricingService _pricingService;
49
- IComponentService _componentService;
50
- NftId _poolNftId;
51
- NftId _distributionNftId;
52
- Pool _pool;
53
- Distribution _distribution;
45
+ }
46
+
47
+
48
+ function registerComponent(address component)
49
+ external
50
+ virtual
51
+ restricted()
52
+ onlyOwner()
53
+ returns (NftId componentNftId)
54
+ {
55
+ return _getProductStorage()._componentService.registerComponent(component);
56
+ }
57
+
58
+
59
+ function processFundedClaim(
60
+ NftId policyNftId,
61
+ ClaimId claimId,
62
+ Amount availableAmount
63
+ )
64
+ external
65
+ virtual
66
+ restricted() // pool service role
67
+ onlyNftOfType(policyNftId, POLICY())
68
+ {
69
+ // default implementation does nothing
54
70
  }
55
71
 
56
72
 
@@ -62,12 +78,14 @@ abstract contract Product is
62
78
  NftId bundleNftId,
63
79
  ReferralId referralId
64
80
  )
65
- external
81
+ public
66
82
  view
83
+ virtual
67
84
  override
85
+ onlyNftOfType(bundleNftId, BUNDLE())
68
86
  returns (Amount premiumAmount)
69
87
  {
70
- IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
88
+ IPolicy.PremiumInfo memory premium = _getProductStorage()._pricingService.calculatePremium(
71
89
  getNftId(),
72
90
  riskId,
73
91
  sumInsuredAmount,
@@ -77,14 +95,14 @@ abstract contract Product is
77
95
  referralId
78
96
  );
79
97
 
80
- return AmountLib.toAmount(premium.premiumAmount);
98
+ return premium.premiumAmount;
81
99
  }
82
100
 
83
101
  function calculateNetPremium(
84
102
  Amount sumInsuredAmount,
85
- RiskId riskId,
86
- Seconds lifetime,
87
- bytes memory applicationData
103
+ RiskId,
104
+ Seconds,
105
+ bytes memory
88
106
  )
89
107
  external
90
108
  view
@@ -96,56 +114,33 @@ abstract contract Product is
96
114
  }
97
115
 
98
116
 
99
- function register()
100
- external
101
- virtual
102
- onlyOwner()
103
- {
104
- _getProductStorage()._componentService.registerProduct();
105
- _approveTokenHandler(type(uint256).max);
106
- }
107
-
108
-
109
117
  function getInitialProductInfo()
110
118
  public
111
119
  virtual
112
120
  view
113
121
  returns (IComponents.ProductInfo memory poolInfo)
114
122
  {
115
- ProductStorage storage $ = _getProductStorage();
116
-
117
- return IComponents.ProductInfo({
118
- distributionNftId: $._distributionNftId,
119
- poolNftId: $._poolNftId,
120
- productFee: FeeLib.zero(),
121
- processingFee: FeeLib.zero(),
122
- distributionFee: FeeLib.zero(),
123
- minDistributionOwnerFee: FeeLib.zero(),
124
- poolFee: FeeLib.zero(),
125
- stakingFee: FeeLib.zero(),
126
- performanceFee: FeeLib.zero()
127
- });
123
+ return _getProductStorage()._productInfo;
128
124
  }
129
125
 
130
- function getPoolNftId() external view override returns (NftId poolNftId) {
131
- return getRegistry().getNftId(address(_getProductStorage()._pool));
126
+ function getInitialFeeInfo()
127
+ public
128
+ virtual
129
+ view
130
+ returns (IComponents.FeeInfo memory feeInfo)
131
+ {
132
+ return _getProductStorage()._feeInfo;
132
133
  }
133
134
 
134
- function getDistributionNftId() external view override returns (NftId distributionNftId) {
135
- return getRegistry().getNftId(address(_getProductStorage()._distribution));
136
- }
137
135
 
138
136
  function _initializeProduct(
139
137
  address registry,
140
138
  NftId instanceNftId,
139
+ string memory name,
140
+ IComponents.ProductInfo memory productInfo,
141
+ IComponents.FeeInfo memory feeInfo,
141
142
  IAuthorization authorization,
142
143
  address initialOwner,
143
- string memory name,
144
- address token,
145
- bool isInterceptor,
146
- address pool,
147
- address distribution,
148
- bytes memory registryData, // writeonly data that will saved in the object info record of the registry
149
144
  bytes memory componentData // writeonly data that will saved in the object info record of the registry
150
145
  )
151
146
  internal
@@ -156,29 +151,23 @@ abstract contract Product is
156
151
  registry,
157
152
  instanceNftId,
158
153
  name,
159
- token,
160
154
  PRODUCT(),
161
155
  authorization,
162
- isInterceptor,
156
+ productInfo.isInterceptingPolicyTransfers,
163
157
  initialOwner,
164
- registryData,
165
158
  componentData);
166
159
 
167
160
  ProductStorage storage $ = _getProductStorage();
168
- // TODO add validation
169
- // TODO refactor to go via registry ?
170
- $._productService = IProductService(_getServiceAddress(PRODUCT()));
161
+ $._productInfo = productInfo;
162
+ $._feeInfo = feeInfo;
163
+ $._riskService = IRiskService(_getServiceAddress(RISK()));
171
164
  $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
172
165
  $._policyService = IPolicyService(_getServiceAddress(POLICY()));
173
166
  $._claimService = IClaimService(_getServiceAddress(CLAIM()));
174
167
  $._pricingService = IPricingService(_getServiceAddress(PRICE()));
175
168
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
176
- $._pool = Pool(pool);
177
- $._distribution = Distribution(distribution);
178
- $._poolNftId = getRegistry().getNftId(pool);
179
- $._distributionNftId = getRegistry().getNftId(distribution);
180
169
 
181
- registerInterface(type(IProductComponent).interfaceId);
170
+ _registerInterface(type(IProductComponent).interfaceId);
182
171
  }
183
172
 
184
173
 
@@ -194,10 +183,14 @@ abstract contract Product is
194
183
 
195
184
 
196
185
  function _createRisk(
197
- RiskId id,
186
+ bytes32 id,
198
187
  bytes memory data
199
- ) internal {
200
- _getProductService().createRisk(
188
+ )
189
+ internal
190
+ virtual
191
+ returns (RiskId riskId)
192
+ {
193
+ return _getProductStorage()._riskService.createRisk(
201
194
  id,
202
195
  data
203
196
  );
@@ -206,26 +199,38 @@ abstract contract Product is
206
199
  function _updateRisk(
207
200
  RiskId id,
208
201
  bytes memory data
209
- ) internal {
210
- _getProductService().updateRisk(
202
+ )
203
+ internal
204
+ virtual
205
+ {
206
+ _getProductStorage()._riskService.updateRisk(
211
207
  id,
212
208
  data
213
209
  );
214
210
  }
215
211
 
216
- function _updateRiskState(
212
+ function _setRiskLocked(
217
213
  RiskId id,
218
- StateId state
219
- ) internal {
220
- _getProductService().updateRiskState(
214
+ bool locked
215
+ )
216
+ internal
217
+ virtual
218
+ {
219
+ _getProductStorage()._riskService.setRiskLocked(
221
220
  id,
222
- state
221
+ locked
223
222
  );
224
223
  }
225
224
 
226
-
227
- function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
228
- return getInstance().getInstanceReader().getRiskInfo(id);
225
+ function _closeRisk(
226
+ RiskId id
227
+ )
228
+ internal
229
+ virtual
230
+ {
231
+ _getProductStorage()._riskService.closeRisk(
232
+ id
233
+ );
229
234
  }
230
235
 
231
236
 
@@ -233,18 +238,21 @@ abstract contract Product is
233
238
  address applicationOwner,
234
239
  RiskId riskId,
235
240
  Amount sumInsuredAmount,
241
+ Amount premiumAmount,
236
242
  Seconds lifetime,
237
243
  NftId bundleNftId,
238
244
  ReferralId referralId,
239
245
  bytes memory applicationData
240
246
  )
241
247
  internal
248
+ virtual
242
249
  returns (NftId applicationNftId)
243
250
  {
244
251
  return _getProductStorage()._applicationService.create(
245
252
  applicationOwner,
246
253
  riskId,
247
254
  sumInsuredAmount,
255
+ premiumAmount,
248
256
  lifetime,
249
257
  bundleNftId,
250
258
  referralId,
@@ -252,23 +260,26 @@ abstract contract Product is
252
260
  );
253
261
  }
254
262
 
255
- function _collateralize(
256
- NftId policyNftId,
257
- bool requirePremiumPayment,
258
- Timestamp activateAt
263
+ function _createPolicy(
264
+ NftId applicationNftId,
265
+ Timestamp activateAt,
266
+ Amount maxPremiumAmount
259
267
  )
260
268
  internal
269
+ virtual
270
+ returns (Amount premiumAmount)
261
271
  {
262
- _getProductStorage()._policyService.collateralize(
263
- policyNftId,
264
- requirePremiumPayment,
265
- activateAt);
272
+ premiumAmount = _getProductStorage()._policyService.createPolicy(
273
+ applicationNftId,
274
+ activateAt,
275
+ maxPremiumAmount);
266
276
  }
267
277
 
268
278
  function _decline(
269
279
  NftId policyNftId
270
280
  )
271
281
  internal
282
+ virtual
272
283
  {
273
284
  _getProductStorage()._policyService.decline(
274
285
  policyNftId);
@@ -279,9 +290,25 @@ abstract contract Product is
279
290
  Timestamp expireAt
280
291
  )
281
292
  internal
282
- returns (Timestamp)
293
+ virtual
294
+ returns (Timestamp expiredAt)
283
295
  {
284
- return _getProductStorage()._policyService.expire(policyNftId, expireAt);
296
+ expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
297
+ }
298
+
299
+ /// @dev adjust the activation date of the policy.
300
+ /// The policy must already have an activation date set.
301
+ /// Allowed values are from the current blocktime to the expiration date of the policy.
302
+ function _adjustActivation(
303
+ NftId policyNftId,
304
+ Timestamp activateAt
305
+ )
306
+ internal
307
+ virtual
308
+ {
309
+ _getProductStorage()._policyService.adjustActivation(
310
+ policyNftId,
311
+ activateAt);
285
312
  }
286
313
 
287
314
  function _collectPremium(
@@ -289,6 +316,7 @@ abstract contract Product is
289
316
  Timestamp activateAt
290
317
  )
291
318
  internal
319
+ virtual
292
320
  {
293
321
  _getProductStorage()._policyService.collectPremium(
294
322
  policyNftId,
@@ -300,6 +328,7 @@ abstract contract Product is
300
328
  Timestamp activateAt
301
329
  )
302
330
  internal
331
+ virtual
303
332
  {
304
333
  _getProductStorage()._policyService.activate(
305
334
  policyNftId,
@@ -310,6 +339,7 @@ abstract contract Product is
310
339
  NftId policyNftId
311
340
  )
312
341
  internal
342
+ virtual
313
343
  {
314
344
  _getProductStorage()._policyService.close(
315
345
  policyNftId);
@@ -321,6 +351,7 @@ abstract contract Product is
321
351
  bytes memory claimData
322
352
  )
323
353
  internal
354
+ virtual
324
355
  returns(ClaimId)
325
356
  {
326
357
  return _getProductStorage()._claimService.submit(
@@ -329,6 +360,18 @@ abstract contract Product is
329
360
  claimData);
330
361
  }
331
362
 
363
+ function _revokeClaim(
364
+ NftId policyNftId,
365
+ ClaimId claimId
366
+ )
367
+ internal
368
+ virtual
369
+ {
370
+ _getProductStorage()._claimService.revoke(
371
+ policyNftId,
372
+ claimId);
373
+ }
374
+
332
375
  function _confirmClaim(
333
376
  NftId policyNftId,
334
377
  ClaimId claimId,
@@ -336,6 +379,7 @@ abstract contract Product is
336
379
  bytes memory data
337
380
  )
338
381
  internal
382
+ virtual
339
383
  {
340
384
  _getProductStorage()._claimService.confirm(
341
385
  policyNftId,
@@ -350,6 +394,7 @@ abstract contract Product is
350
394
  bytes memory data
351
395
  )
352
396
  internal
397
+ virtual
353
398
  {
354
399
  _getProductStorage()._claimService.decline(
355
400
  policyNftId,
@@ -362,6 +407,7 @@ abstract contract Product is
362
407
  ClaimId claimId
363
408
  )
364
409
  internal
410
+ virtual
365
411
  {
366
412
  _getProductStorage()._claimService.close(
367
413
  policyNftId,
@@ -375,6 +421,7 @@ abstract contract Product is
375
421
  bytes memory data
376
422
  )
377
423
  internal
424
+ virtual
378
425
  returns (PayoutId)
379
426
  {
380
427
  return _getProductStorage()._claimService.createPayout(
@@ -384,28 +431,53 @@ abstract contract Product is
384
431
  data);
385
432
  }
386
433
 
434
+ function _createPayoutForBeneficiary(
435
+ NftId policyNftId,
436
+ ClaimId claimId,
437
+ Amount amount,
438
+ address beneficiary,
439
+ bytes memory data
440
+ )
441
+ internal
442
+ virtual
443
+ returns (PayoutId)
444
+ {
445
+ return _getProductStorage()._claimService.createPayoutForBeneficiary(
446
+ policyNftId,
447
+ claimId,
448
+ amount,
449
+ beneficiary,
450
+ data);
451
+ }
452
+
387
453
  function _processPayout(
388
454
  NftId policyNftId,
389
455
  PayoutId payoutId
390
456
  )
391
457
  internal
458
+ virtual
459
+ returns (Amount netPayoutAmount, Amount processingFeeAmount)
392
460
  {
393
- _getProductStorage()._claimService.processPayout(
461
+ (netPayoutAmount, processingFeeAmount) = _getProductStorage()._claimService.processPayout(
394
462
  policyNftId,
395
463
  payoutId);
396
464
  }
397
465
 
398
- function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
399
- return RiskIdLib.toRiskId(riskName);
466
+ function _cancelPayout(
467
+ NftId policyNftId,
468
+ PayoutId payoutId
469
+ )
470
+ internal
471
+ virtual
472
+ {
473
+ _getProductStorage()._claimService.cancelPayout(
474
+ policyNftId,
475
+ payoutId);
400
476
  }
401
477
 
402
- function _getProductStorage() private pure returns (ProductStorage storage $) {
478
+ function _getProductStorage() internal virtual pure returns (ProductStorage storage $) {
403
479
  assembly {
404
480
  $.slot := PRODUCT_STORAGE_LOCATION_V1
405
481
  }
406
482
  }
407
-
408
- function _getProductService() internal view returns (IProductService) {
409
- return _getProductStorage()._productService;
410
- }
411
483
  }
@@ -0,0 +1,190 @@
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, KEEP_STATE, CLOSED} 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
+ virtual
49
+ restricted()
50
+ returns (RiskId riskId)
51
+ {
52
+ // checks
53
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
54
+
55
+ // effects
56
+ riskId = RiskIdLib.toRiskId(productNftId, id);
57
+ IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo({
58
+ productNftId: productNftId,
59
+ createdAt: TimestampLib.blockTimestamp(),
60
+ data: data});
61
+
62
+ instance.getInstanceStore().createRisk(
63
+ riskId,
64
+ riskInfo
65
+ );
66
+
67
+ // add risk to RiskSet
68
+ RiskSet riskSet = instance.getRiskSet();
69
+ riskSet.add(riskId);
70
+
71
+ emit LogRiskServiceRiskCreated(productNftId, riskId);
72
+ }
73
+
74
+
75
+ function updateRisk(
76
+ RiskId riskId,
77
+ bytes memory data
78
+ )
79
+ external
80
+ virtual
81
+ restricted()
82
+ {
83
+ // checks
84
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
85
+
86
+ // effects
87
+ InstanceReader instanceReader = instance.getInstanceReader();
88
+ IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
89
+
90
+ if (riskInfo.productNftId != productNftId) {
91
+ revert ErrorRiskServiceRiskProductMismatch(riskId, riskInfo.productNftId, productNftId);
92
+ }
93
+
94
+ riskInfo.data = data;
95
+ instance.getInstanceStore().updateRisk(riskId, riskInfo, KEEP_STATE());
96
+
97
+ emit LogRiskServiceRiskUpdated(productNftId, riskId);
98
+ }
99
+
100
+
101
+ /// @inheritdoc IRiskService
102
+ function setRiskLocked(
103
+ RiskId riskId,
104
+ bool locked
105
+ )
106
+ external
107
+ virtual
108
+ restricted()
109
+ {
110
+ // checks
111
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
112
+
113
+ if (!instance.getRiskSet().hasRisk(productNftId, riskId)) {
114
+ revert ErrorRiskServiceUnknownRisk(productNftId, riskId);
115
+ }
116
+
117
+ if (instance.getInstanceReader().getRiskState(riskId) != ACTIVE()) {
118
+ revert ErrorRiskServiceRiskNotActive(productNftId, riskId);
119
+ }
120
+
121
+ if (locked) {
122
+ instance.getRiskSet().deactivate(riskId);
123
+ emit LogRiskServiceRiskLocked(productNftId, riskId);
124
+ } else {
125
+ instance.getRiskSet().activate(riskId);
126
+ emit LogRiskServiceRiskUnlocked(productNftId, riskId);
127
+ }
128
+ }
129
+
130
+ /// @inheritdoc IRiskService
131
+ function closeRisk(
132
+ RiskId riskId
133
+ )
134
+ external
135
+ virtual
136
+ restricted()
137
+ {
138
+ // checks
139
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
140
+ (bool exists, bool active) = instance.getRiskSet().checkRisk(productNftId, riskId);
141
+
142
+ if (!exists) {
143
+ revert ErrorRiskServiceUnknownRisk(productNftId, riskId);
144
+ }
145
+
146
+ if (active) {
147
+ revert ErrorRiskServiceRiskNotLocked(productNftId, riskId);
148
+ }
149
+
150
+ // effects
151
+ instance.getInstanceStore().updateRiskState(riskId, CLOSED());
152
+
153
+ emit LogRiskServiceRiskClosed(productNftId, riskId);
154
+ }
155
+
156
+ function _getAndVerifyActiveComponent(ObjectType expectedType)
157
+ internal
158
+ view
159
+ returns (
160
+ NftId componentNftId,
161
+ IInstance instance
162
+ )
163
+ {
164
+ IRegistry.ObjectInfo memory info;
165
+ address instanceAddress;
166
+ bool isActive = true;
167
+
168
+ if (expectedType != COMPONENT()) {
169
+ (info, instanceAddress) = ContractLib.getAndVerifyComponent(
170
+ getRegistry(),
171
+ msg.sender, // caller
172
+ expectedType,
173
+ isActive);
174
+ } else {
175
+ (info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
176
+ getRegistry(),
177
+ msg.sender,
178
+ isActive);
179
+ }
180
+
181
+ // get component nft id and instance
182
+ componentNftId = info.nftId;
183
+ instance = IInstance(instanceAddress);
184
+ }
185
+
186
+
187
+ function _getDomain() internal pure override returns(ObjectType) {
188
+ return RISK();
189
+ }
190
+ }