@etherisc/gif-next 0.0.2-b421459-499 → 0.0.2-b43fece-589

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