@etherisc/gif-next 0.0.2-f36fd21-685 → 0.0.2-f47f21f-178

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 (454) hide show
  1. package/README.md +19 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  14. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +163 -309
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +91 -277
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +174 -292
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +99 -123
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -92
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -62
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  33. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2077 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  53. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +166 -139
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +459 -131
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +330 -233
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  74. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  80. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  81. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  87. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  88. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +137 -283
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  93. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +66 -80
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +79 -265
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +109 -330
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  109. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +359 -194
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +145 -97
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +178 -23
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  115. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +88 -130
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  117. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +384 -179
  118. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  119. package/artifacts/contracts/pool/Pool.sol/Pool.json +99 -313
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +506 -334
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +111 -87
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  125. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  129. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +136 -281
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  131. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  133. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +303 -187
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +310 -118
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  143. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  145. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +124 -97
  146. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  147. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  149. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +433 -327
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  151. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  153. package/artifacts/contracts/product/PricingService.sol/PricingService.json +199 -309
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
  156. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  157. package/artifacts/contracts/product/Product.sol/Product.json +136 -281
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  159. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  163. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +286 -34
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  167. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  168. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  169. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  170. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/Registry.sol/Registry.json +492 -95
  172. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
  174. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
  176. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  177. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +129 -221
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  186. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  187. package/artifacts/contracts/shared/Component.sol/Component.json +65 -236
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +355 -283
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +122 -120
  192. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  193. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  194. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +66 -80
  202. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  204. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  206. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  208. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  210. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  212. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  215. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  216. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  217. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +79 -265
  219. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  220. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  221. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  222. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  223. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  224. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  225. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  227. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  228. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  229. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  231. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  232. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  233. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  234. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  235. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  236. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  237. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  238. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  240. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  242. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
  245. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  246. package/artifacts/contracts/staking/Staking.sol/Staking.json +176 -293
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +106 -91
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  254. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  256. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  258. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +169 -128
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  260. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
  261. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  264. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  277. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  292. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  296. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  299. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  301. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  303. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  305. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  306. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  307. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -70
  308. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  309. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  310. package/contracts/authorization/AccessAdmin.sol +64 -59
  311. package/contracts/authorization/Authorization.sol +111 -40
  312. package/contracts/authorization/IAccess.sol +1 -0
  313. package/contracts/authorization/IAccessAdmin.sol +4 -3
  314. package/contracts/authorization/IAuthorization.sol +13 -7
  315. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  316. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  317. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  318. package/contracts/distribution/BasicDistribution.sol +2 -1
  319. package/contracts/distribution/Distribution.sol +7 -17
  320. package/contracts/distribution/DistributionService.sol +83 -65
  321. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  322. package/contracts/distribution/IDistributionComponent.sol +1 -1
  323. package/contracts/distribution/IDistributionService.sol +9 -5
  324. package/contracts/examples/fire/DamageLevel.sol +59 -0
  325. package/contracts/examples/fire/FirePool.sol +75 -0
  326. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  327. package/contracts/examples/fire/FireProduct.sol +418 -0
  328. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  329. package/contracts/examples/fire/FireUSD.sol +26 -0
  330. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  331. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  332. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  333. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  334. package/contracts/instance/IInstance.sol +10 -30
  335. package/contracts/instance/IInstanceService.sol +0 -20
  336. package/contracts/instance/Instance.sol +29 -51
  337. package/contracts/instance/InstanceAdmin.sol +42 -31
  338. package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
  339. package/contracts/instance/InstanceReader.sol +115 -25
  340. package/contracts/instance/InstanceService.sol +65 -97
  341. package/contracts/instance/InstanceServiceManager.sol +6 -7
  342. package/contracts/instance/InstanceStore.sol +11 -1
  343. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  344. package/contracts/instance/module/IBundle.sol +1 -1
  345. package/contracts/instance/module/IComponents.sol +10 -10
  346. package/contracts/instance/module/IPolicy.sol +24 -24
  347. package/contracts/mock/Dip.sol +1 -1
  348. package/contracts/oracle/BasicOracle.sol +0 -1
  349. package/contracts/oracle/IOracleService.sol +2 -1
  350. package/contracts/oracle/Oracle.sol +6 -16
  351. package/contracts/oracle/OracleService.sol +47 -34
  352. package/contracts/oracle/OracleServiceManager.sol +6 -6
  353. package/contracts/pool/BasicPool.sol +21 -31
  354. package/contracts/pool/BasicPoolAuthorization.sol +5 -3
  355. package/contracts/pool/BundleService.sol +213 -61
  356. package/contracts/pool/BundleServiceManager.sol +6 -6
  357. package/contracts/pool/IBundleService.sol +31 -8
  358. package/contracts/pool/IPoolComponent.sol +18 -8
  359. package/contracts/pool/IPoolService.sol +56 -39
  360. package/contracts/pool/Pool.sol +60 -53
  361. package/contracts/pool/PoolService.sol +250 -140
  362. package/contracts/pool/PoolServiceManager.sol +4 -4
  363. package/contracts/product/ApplicationService.sol +59 -30
  364. package/contracts/product/ApplicationServiceManager.sol +4 -4
  365. package/contracts/product/BasicProduct.sol +7 -6
  366. package/contracts/product/BasicProductAuthorization.sol +0 -1
  367. package/contracts/product/ClaimService.sol +313 -118
  368. package/contracts/product/ClaimServiceManager.sol +4 -4
  369. package/contracts/product/IApplicationService.sol +1 -0
  370. package/contracts/product/IClaimService.sol +31 -7
  371. package/contracts/product/IPolicyService.sol +34 -34
  372. package/contracts/product/IPricingService.sol +10 -10
  373. package/contracts/product/IProductComponent.sol +23 -4
  374. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  375. package/contracts/product/PolicyService.sol +394 -196
  376. package/contracts/product/PolicyServiceManager.sol +4 -4
  377. package/contracts/product/PricingService.sol +54 -54
  378. package/contracts/product/PricingServiceManager.sol +3 -3
  379. package/contracts/product/Product.sol +125 -71
  380. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  381. package/contracts/product/RiskServiceManager.sol +39 -0
  382. package/contracts/registry/ChainNft.sol +68 -38
  383. package/contracts/registry/IRegistry.sol +55 -18
  384. package/contracts/registry/IRegistryService.sol +5 -12
  385. package/contracts/registry/ITransferInterceptor.sol +1 -2
  386. package/contracts/registry/Registry.sol +342 -201
  387. package/contracts/registry/RegistryAdmin.sol +134 -51
  388. package/contracts/registry/RegistryService.sol +35 -46
  389. package/contracts/registry/RegistryServiceManager.sol +2 -2
  390. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  391. package/contracts/registry/ReleaseRegistry.sol +204 -188
  392. package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
  393. package/contracts/shared/Component.sol +40 -55
  394. package/contracts/shared/ComponentService.sol +235 -151
  395. package/contracts/shared/ComponentServiceManager.sol +8 -5
  396. package/contracts/shared/ComponentVerifyingService.sol +23 -14
  397. package/contracts/shared/ContractLib.sol +38 -0
  398. package/contracts/shared/IComponent.sol +10 -6
  399. package/contracts/shared/IComponentService.sol +25 -13
  400. package/contracts/shared/IInstanceLinkedComponent.sol +7 -22
  401. package/contracts/shared/ILifecycle.sol +3 -1
  402. package/contracts/shared/INftOwnable.sol +2 -0
  403. package/contracts/shared/IPolicyHolder.sol +12 -22
  404. package/contracts/shared/IRegisterable.sol +11 -0
  405. package/contracts/shared/InitializableERC165.sol +2 -2
  406. package/contracts/shared/InstanceLinkedComponent.sol +72 -31
  407. package/contracts/shared/KeyValueStore.sol +1 -1
  408. package/contracts/shared/Lifecycle.sol +15 -4
  409. package/contracts/shared/NftOwnable.sol +27 -7
  410. package/contracts/shared/PolicyHolder.sol +15 -52
  411. package/contracts/shared/Registerable.sol +19 -9
  412. package/contracts/shared/RegistryLinked.sol +3 -2
  413. package/contracts/shared/Service.sol +20 -18
  414. package/contracts/shared/TokenHandler.sol +100 -19
  415. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  416. package/contracts/staking/IStaking.sol +2 -1
  417. package/contracts/staking/IStakingService.sol +0 -3
  418. package/contracts/staking/StakeManagerLib.sol +18 -25
  419. package/contracts/staking/Staking.sol +13 -32
  420. package/contracts/staking/StakingManager.sol +8 -6
  421. package/contracts/staking/StakingReader.sol +12 -5
  422. package/contracts/staking/StakingService.sol +11 -29
  423. package/contracts/staking/StakingServiceManager.sol +2 -2
  424. package/contracts/staking/TargetManagerLib.sol +7 -3
  425. package/contracts/type/Amount.sol +15 -0
  426. package/contracts/type/Blocknumber.sol +7 -1
  427. package/contracts/type/ClaimId.sol +6 -1
  428. package/contracts/type/NftId.sol +1 -0
  429. package/contracts/type/ObjectType.sol +16 -11
  430. package/contracts/type/PayoutId.sol +10 -10
  431. package/contracts/type/RiskId.sol +15 -1
  432. package/contracts/type/RoleId.sol +0 -12
  433. package/contracts/type/Seconds.sol +21 -1
  434. package/contracts/type/StateId.sol +15 -1
  435. package/contracts/type/Timestamp.sol +11 -1
  436. package/contracts/type/UFixed.sol +4 -0
  437. package/contracts/upgradeability/ProxyManager.sol +68 -34
  438. package/contracts/upgradeability/Versionable.sol +2 -2
  439. package/package.json +2 -1
  440. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  441. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  442. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  443. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  444. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  445. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  446. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  447. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  448. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  449. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  450. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  451. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  452. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  453. package/contracts/product/ProductServiceManager.sol +0 -39
  454. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,37 +1,36 @@
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";
6
+ import {IComponent} from "../shared/IComponent.sol";
9
7
  import {Fee, FeeLib} from "../type/Fee.sol";
10
8
  import {IRisk} from "../instance/module/IRisk.sol";
11
9
  import {IApplicationService} from "./IApplicationService.sol";
12
10
  import {IAuthorization} from "../authorization/IAuthorization.sol";
13
11
  import {IComponentService} from "../shared/IComponentService.sol";
12
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
13
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
14
14
  import {IPolicyService} from "./IPolicyService.sol";
15
- import {IProductService} from "./IProductService.sol";
15
+ import {IRiskService} from "./IRiskService.sol";
16
16
  import {IClaimService} from "./IClaimService.sol";
17
17
  import {IPricingService} from "./IPricingService.sol";
18
18
  import {IProductComponent} from "./IProductComponent.sol";
19
19
  import {NftId, NftIdLib} from "../type/NftId.sol";
20
+ import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT, BUNDLE, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
20
21
  import {PayoutId} from "../type/PayoutId.sol";
21
- import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
22
+ import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE } from "../type/ObjectType.sol";
22
23
  import {ReferralId} from "../type/Referral.sol";
23
24
  import {RiskId, RiskIdLib} from "../type/RiskId.sol";
24
25
  import {Seconds} from "../type/Seconds.sol";
25
26
  import {StateId} from "../type/StateId.sol";
26
27
  import {Timestamp} from "../type/Timestamp.sol";
27
28
 
28
- import {TokenHandler} from "../shared/TokenHandler.sol";
29
-
30
- import {InstanceReader} from "../instance/InstanceReader.sol";
31
29
  import {IPolicy} from "../instance/module/IPolicy.sol";
32
30
  import {IComponents} from "../instance/module/IComponents.sol";
33
- import {Pool} from "../pool/Pool.sol";
34
- import {Distribution} from "../distribution/Distribution.sol";
31
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
32
+ import {IOracleComponent} from "../oracle/IOracleComponent.sol";
33
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
35
34
 
36
35
  abstract contract Product is
37
36
  InstanceLinkedComponent,
@@ -41,16 +40,39 @@ abstract contract Product is
41
40
  bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
42
41
 
43
42
  struct ProductStorage {
44
- IProductService _productService;
43
+ bool _isProcessingFundedClaims;
44
+ bool _hasDistribution;
45
+ uint8 _numberOfOracles;
46
+ IRiskService _riskService;
45
47
  IApplicationService _applicationService;
46
48
  IPolicyService _policyService;
47
49
  IClaimService _claimService;
48
50
  IPricingService _pricingService;
49
51
  IComponentService _componentService;
50
- NftId _poolNftId;
51
- NftId _distributionNftId;
52
- Pool _pool;
53
- Distribution _distribution;
52
+ }
53
+
54
+
55
+ function registerComponent(address component)
56
+ external
57
+ virtual
58
+ onlyOwner()
59
+ returns (NftId componentNftId)
60
+ {
61
+ return _getProductStorage()._componentService.registerComponent(component);
62
+ }
63
+
64
+
65
+ function processFundedClaim(
66
+ NftId policyNftId,
67
+ ClaimId claimId,
68
+ Amount availableAmount
69
+ )
70
+ external
71
+ virtual
72
+ restricted() // pool service role
73
+ onlyNftOfType(policyNftId, POLICY())
74
+ {
75
+ // default implementation does nothing
54
76
  }
55
77
 
56
78
 
@@ -62,12 +84,13 @@ abstract contract Product is
62
84
  NftId bundleNftId,
63
85
  ReferralId referralId
64
86
  )
65
- external
87
+ public
66
88
  view
67
89
  override
90
+ onlyNftOfType(bundleNftId, BUNDLE())
68
91
  returns (Amount premiumAmount)
69
92
  {
70
- IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
93
+ IPolicy.PremiumInfo memory premium = _getProductStorage()._pricingService.calculatePremium(
71
94
  getNftId(),
72
95
  riskId,
73
96
  sumInsuredAmount,
@@ -77,14 +100,14 @@ abstract contract Product is
77
100
  referralId
78
101
  );
79
102
 
80
- return AmountLib.toAmount(premium.premiumAmount);
103
+ return premium.premiumAmount;
81
104
  }
82
105
 
83
106
  function calculateNetPremium(
84
107
  Amount sumInsuredAmount,
85
- RiskId riskId,
86
- Seconds lifetime,
87
- bytes memory applicationData
108
+ RiskId,
109
+ Seconds,
110
+ bytes memory
88
111
  )
89
112
  external
90
113
  view
@@ -96,16 +119,6 @@ abstract contract Product is
96
119
  }
97
120
 
98
121
 
99
- function register()
100
- external
101
- virtual
102
- onlyOwner()
103
- {
104
- _getProductStorage()._componentService.registerProduct();
105
- _approveTokenHandler(type(uint256).max);
106
- }
107
-
108
-
109
122
  function getInitialProductInfo()
110
123
  public
111
124
  virtual
@@ -115,8 +128,13 @@ abstract contract Product is
115
128
  ProductStorage storage $ = _getProductStorage();
116
129
 
117
130
  return IComponents.ProductInfo({
118
- distributionNftId: $._distributionNftId,
119
- poolNftId: $._poolNftId,
131
+ isProcessingFundedClaims: false,
132
+ hasDistribution: $._hasDistribution,
133
+ expectedNumberOfOracles: $._numberOfOracles,
134
+ numberOfOracles: 0,
135
+ poolNftId: NftIdLib.zero(),
136
+ distributionNftId: NftIdLib.zero(),
137
+ oracleNftId: new NftId[]($._numberOfOracles),
120
138
  productFee: FeeLib.zero(),
121
139
  processingFee: FeeLib.zero(),
122
140
  distributionFee: FeeLib.zero(),
@@ -127,13 +145,6 @@ abstract contract Product is
127
145
  });
128
146
  }
129
147
 
130
- function getPoolNftId() external view override returns (NftId poolNftId) {
131
- return getRegistry().getNftId(address(_getProductStorage()._pool));
132
- }
133
-
134
- function getDistributionNftId() external view override returns (NftId distributionNftId) {
135
- return getRegistry().getNftId(address(_getProductStorage()._distribution));
136
- }
137
148
 
138
149
  function _initializeProduct(
139
150
  address registry,
@@ -143,9 +154,9 @@ abstract contract Product is
143
154
  string memory name,
144
155
  address token,
145
156
  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
157
+ bool isProcessingFundedClaims,
158
+ bool hasDistribution,
159
+ uint8 numberOfOracles,
149
160
  bytes memory componentData // writeonly data that will saved in the object info record of the registry
150
161
  )
151
162
  internal
@@ -161,24 +172,20 @@ abstract contract Product is
161
172
  authorization,
162
173
  isInterceptor,
163
174
  initialOwner,
164
- registryData,
165
175
  componentData);
166
176
 
167
177
  ProductStorage storage $ = _getProductStorage();
168
- // TODO add validation
169
- // TODO refactor to go via registry ?
170
- $._productService = IProductService(_getServiceAddress(PRODUCT()));
178
+ $._isProcessingFundedClaims = isProcessingFundedClaims;
179
+ $._hasDistribution = hasDistribution;
180
+ $._numberOfOracles = numberOfOracles;
181
+ $._riskService = IRiskService(_getServiceAddress(PRODUCT()));
171
182
  $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
172
183
  $._policyService = IPolicyService(_getServiceAddress(POLICY()));
173
184
  $._claimService = IClaimService(_getServiceAddress(CLAIM()));
174
185
  $._pricingService = IPricingService(_getServiceAddress(PRICE()));
175
186
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
176
- $._pool = Pool(pool);
177
- $._distribution = Distribution(distribution);
178
- $._poolNftId = getRegistry().getNftId(pool);
179
- $._distributionNftId = getRegistry().getNftId(distribution);
180
187
 
181
- registerInterface(type(IProductComponent).interfaceId);
188
+ _registerInterface(type(IProductComponent).interfaceId);
182
189
  }
183
190
 
184
191
 
@@ -196,8 +203,11 @@ abstract contract Product is
196
203
  function _createRisk(
197
204
  RiskId id,
198
205
  bytes memory data
199
- ) internal {
200
- _getProductService().createRisk(
206
+ )
207
+ internal
208
+ virtual
209
+ {
210
+ _getProductStorage()._riskService.createRisk(
201
211
  id,
202
212
  data
203
213
  );
@@ -206,8 +216,11 @@ abstract contract Product is
206
216
  function _updateRisk(
207
217
  RiskId id,
208
218
  bytes memory data
209
- ) internal {
210
- _getProductService().updateRisk(
219
+ )
220
+ internal
221
+ virtual
222
+ {
223
+ _getProductStorage()._riskService.updateRisk(
211
224
  id,
212
225
  data
213
226
  );
@@ -216,15 +229,18 @@ abstract contract Product is
216
229
  function _updateRiskState(
217
230
  RiskId id,
218
231
  StateId state
219
- ) internal {
220
- _getProductService().updateRiskState(
232
+ )
233
+ internal
234
+ virtual
235
+ {
236
+ _getProductStorage()._riskService.updateRiskState(
221
237
  id,
222
238
  state
223
239
  );
224
240
  }
225
241
 
226
242
 
227
- function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
243
+ function _getRiskInfo(RiskId id) internal virtual view returns (IRisk.RiskInfo memory info) {
228
244
  return getInstance().getInstanceReader().getRiskInfo(id);
229
245
  }
230
246
 
@@ -233,18 +249,21 @@ abstract contract Product is
233
249
  address applicationOwner,
234
250
  RiskId riskId,
235
251
  Amount sumInsuredAmount,
252
+ Amount premiumAmount,
236
253
  Seconds lifetime,
237
254
  NftId bundleNftId,
238
255
  ReferralId referralId,
239
256
  bytes memory applicationData
240
257
  )
241
258
  internal
259
+ virtual
242
260
  returns (NftId applicationNftId)
243
261
  {
244
262
  return _getProductStorage()._applicationService.create(
245
263
  applicationOwner,
246
264
  riskId,
247
265
  sumInsuredAmount,
266
+ premiumAmount,
248
267
  lifetime,
249
268
  bundleNftId,
250
269
  referralId,
@@ -252,16 +271,15 @@ abstract contract Product is
252
271
  );
253
272
  }
254
273
 
255
- function _collateralize(
256
- NftId policyNftId,
257
- bool requirePremiumPayment,
274
+ function _createPolicy(
275
+ NftId applicationNftId,
258
276
  Timestamp activateAt
259
277
  )
260
278
  internal
279
+ virtual
261
280
  {
262
- _getProductStorage()._policyService.collateralize(
263
- policyNftId,
264
- requirePremiumPayment,
281
+ _getProductStorage()._policyService.createPolicy(
282
+ applicationNftId,
265
283
  activateAt);
266
284
  }
267
285
 
@@ -269,16 +287,29 @@ abstract contract Product is
269
287
  NftId policyNftId
270
288
  )
271
289
  internal
290
+ virtual
272
291
  {
273
292
  _getProductStorage()._policyService.decline(
274
293
  policyNftId);
275
294
  }
276
295
 
296
+ function _expire(
297
+ NftId policyNftId,
298
+ Timestamp expireAt
299
+ )
300
+ internal
301
+ virtual
302
+ returns (Timestamp expiredAt)
303
+ {
304
+ expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
305
+ }
306
+
277
307
  function _collectPremium(
278
308
  NftId policyNftId,
279
309
  Timestamp activateAt
280
310
  )
281
311
  internal
312
+ virtual
282
313
  {
283
314
  _getProductStorage()._policyService.collectPremium(
284
315
  policyNftId,
@@ -290,6 +321,7 @@ abstract contract Product is
290
321
  Timestamp activateAt
291
322
  )
292
323
  internal
324
+ virtual
293
325
  {
294
326
  _getProductStorage()._policyService.activate(
295
327
  policyNftId,
@@ -300,6 +332,7 @@ abstract contract Product is
300
332
  NftId policyNftId
301
333
  )
302
334
  internal
335
+ virtual
303
336
  {
304
337
  _getProductStorage()._policyService.close(
305
338
  policyNftId);
@@ -311,6 +344,7 @@ abstract contract Product is
311
344
  bytes memory claimData
312
345
  )
313
346
  internal
347
+ virtual
314
348
  returns(ClaimId)
315
349
  {
316
350
  return _getProductStorage()._claimService.submit(
@@ -326,6 +360,7 @@ abstract contract Product is
326
360
  bytes memory data
327
361
  )
328
362
  internal
363
+ virtual
329
364
  {
330
365
  _getProductStorage()._claimService.confirm(
331
366
  policyNftId,
@@ -340,6 +375,7 @@ abstract contract Product is
340
375
  bytes memory data
341
376
  )
342
377
  internal
378
+ virtual
343
379
  {
344
380
  _getProductStorage()._claimService.decline(
345
381
  policyNftId,
@@ -352,6 +388,7 @@ abstract contract Product is
352
388
  ClaimId claimId
353
389
  )
354
390
  internal
391
+ virtual
355
392
  {
356
393
  _getProductStorage()._claimService.close(
357
394
  policyNftId,
@@ -365,6 +402,7 @@ abstract contract Product is
365
402
  bytes memory data
366
403
  )
367
404
  internal
405
+ virtual
368
406
  returns (PayoutId)
369
407
  {
370
408
  return _getProductStorage()._claimService.createPayout(
@@ -374,28 +412,44 @@ abstract contract Product is
374
412
  data);
375
413
  }
376
414
 
415
+ function _createPayoutForBeneficiary(
416
+ NftId policyNftId,
417
+ ClaimId claimId,
418
+ Amount amount,
419
+ address beneficiary,
420
+ bytes memory data
421
+ )
422
+ internal
423
+ virtual
424
+ returns (PayoutId)
425
+ {
426
+ return _getProductStorage()._claimService.createPayoutForBeneficiary(
427
+ policyNftId,
428
+ claimId,
429
+ amount,
430
+ beneficiary,
431
+ data);
432
+ }
433
+
377
434
  function _processPayout(
378
435
  NftId policyNftId,
379
436
  PayoutId payoutId
380
437
  )
381
438
  internal
439
+ virtual
382
440
  {
383
441
  _getProductStorage()._claimService.processPayout(
384
442
  policyNftId,
385
443
  payoutId);
386
444
  }
387
445
 
388
- function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
446
+ function _toRiskId(string memory riskName) internal virtual pure returns (RiskId riskId) {
389
447
  return RiskIdLib.toRiskId(riskName);
390
448
  }
391
449
 
392
- function _getProductStorage() private pure returns (ProductStorage storage $) {
450
+ function _getProductStorage() internal virtual pure returns (ProductStorage storage $) {
393
451
  assembly {
394
452
  $.slot := PRODUCT_STORAGE_LOCATION_V1
395
453
  }
396
454
  }
397
-
398
- function _getProductService() internal view returns (IProductService) {
399
- return _getProductStorage()._productService;
400
- }
401
455
  }
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {IInstance} from "../instance/IInstance.sol";
5
5
  import {IInstanceService} from "../instance/IInstanceService.sol";
6
6
  import {IPoolService} from "../pool/PoolService.sol";
7
- import {IProductService} from "./IProductService.sol";
7
+ import {IRiskService} from "./IRiskService.sol";
8
8
  import {IRegistryService} from "../registry/IRegistryService.sol";
9
9
  import {IRisk} from "../instance/module/IRisk.sol";
10
10
 
@@ -16,16 +16,14 @@ import {RiskId} from "../type/RiskId.sol";
16
16
  import {StateId} from "../type/StateId.sol";
17
17
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
18
18
 
19
- contract ProductService is
19
+ contract RiskService is
20
20
  ComponentVerifyingService,
21
- IProductService
21
+ IRiskService
22
22
  {
23
23
  IInstanceService private _instanceService;
24
24
  IPoolService internal _poolService;
25
25
  IRegistryService private _registryService;
26
26
 
27
- event LogProductServiceSender(address sender);
28
-
29
27
  function _initialize(
30
28
  address owner,
31
29
  bytes memory data
@@ -35,18 +33,17 @@ contract ProductService is
35
33
  virtual override
36
34
  {
37
35
  (
38
- address registryAddress,,
39
- //address managerAddress
36
+ address registryAddress,
40
37
  address authority
41
- ) = abi.decode(data, (address, address, address));
38
+ ) = abi.decode(data, (address, address));
42
39
 
43
- initializeService(registryAddress, authority, owner);
40
+ _initializeService(registryAddress, authority, owner);
44
41
 
45
42
  _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
46
43
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
47
44
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
48
45
 
49
- registerInterface(type(IProductService).interfaceId);
46
+ _registerInterface(type(IRiskService).interfaceId);
50
47
  }
51
48
 
52
49
 
@@ -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(registry, authority);
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
+ }