@etherisc/gif-next 0.0.2-a3c2eef-755 → 0.0.2-a4051e9-983

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 (524) hide show
  1. package/README.md +34 -5
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +152 -281
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +48 -10
  16. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  17. package/artifacts/contracts/{shared/AccessManagerCustom.sol/AccessManagerCustom.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +28 -25
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1402 -0
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +133 -501
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +300 -239
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +108 -104
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +164 -210
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +181 -47
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2077 -0
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
  54. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +59 -50
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +43 -110
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +74 -202
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1211 -266
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +511 -154
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +91 -316
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -111
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +340 -260
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  79. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  81. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  83. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  88. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  89. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  90. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  91. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  92. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1039 -0
  93. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  94. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  95. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  97. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +109 -80
  99. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  101. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +119 -358
  103. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
  105. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
  107. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  108. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1299 -0
  109. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  110. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +470 -0
  111. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +498 -167
  113. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  114. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +169 -89
  115. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +258 -1
  117. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  118. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +125 -319
  119. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +384 -179
  121. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  122. package/artifacts/contracts/pool/Pool.sol/Pool.json +165 -632
  123. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +506 -334
  125. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +111 -87
  127. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  128. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
  129. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
  131. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  132. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1173 -0
  133. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  134. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  135. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  136. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +303 -187
  137. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
  139. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
  141. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
  143. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  144. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +323 -118
  145. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  146. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  147. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  148. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +154 -137
  149. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  150. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  151. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  152. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +444 -325
  153. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
  155. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  156. package/artifacts/contracts/product/PricingService.sol/PricingService.json +202 -307
  157. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  158. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
  159. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  160. package/artifacts/contracts/product/Product.sol/Product.json +168 -434
  161. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  162. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  163. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  164. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  165. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  166. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  167. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  168. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +311 -55
  169. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  170. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +42 -146
  171. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  172. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  173. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  174. package/artifacts/contracts/registry/Registry.sol/Registry.json +537 -112
  175. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  176. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +381 -396
  177. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  178. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
  179. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
  181. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  182. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  183. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  184. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  185. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  186. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +101 -16
  187. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  189. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  190. package/artifacts/contracts/shared/Component.sol/Component.json +65 -236
  191. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +517 -260
  193. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  194. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -118
  195. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  197. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  198. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  199. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
  201. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +474 -19
  203. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  204. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +98 -80
  205. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +45 -3
  207. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  209. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  210. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  211. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  212. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  213. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  215. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  217. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  218. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  219. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  220. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  221. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +111 -318
  222. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  223. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +55 -88
  224. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  225. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  226. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  227. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  228. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  230. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  231. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  232. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  234. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  235. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  236. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  238. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  239. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  240. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  241. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  242. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  243. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
  244. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  245. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  246. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  247. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
  248. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  249. package/artifacts/contracts/staking/Staking.sol/Staking.json +176 -293
  250. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  252. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  253. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +106 -91
  254. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  255. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  256. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  257. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
  258. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  259. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
  260. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  261. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +186 -164
  262. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  263. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +58 -22
  264. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  265. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  266. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  268. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  270. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  272. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  274. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  276. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  277. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  278. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  280. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  281. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  282. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  284. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  286. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  288. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  290. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  292. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  294. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  296. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  298. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  300. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  302. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  304. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  306. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  308. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
  310. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  312. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  314. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  315. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  316. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  317. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  318. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  319. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  320. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  321. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  322. package/contracts/{shared → authorization}/AccessAdmin.sol +190 -353
  323. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  324. package/contracts/authorization/Authorization.sol +289 -0
  325. package/contracts/authorization/IAccess.sol +49 -0
  326. package/contracts/{shared → authorization}/IAccessAdmin.sol +26 -57
  327. package/contracts/authorization/IAuthorization.sol +60 -0
  328. package/contracts/{registry → authorization}/IServiceAuthorization.sol +11 -6
  329. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  330. package/contracts/{registry → authorization}/ServiceAuthorization.sol +45 -25
  331. package/contracts/distribution/BasicDistribution.sol +139 -0
  332. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  333. package/contracts/distribution/Distribution.sol +140 -116
  334. package/contracts/distribution/DistributionService.sol +137 -79
  335. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  336. package/contracts/distribution/IDistributionComponent.sol +26 -40
  337. package/contracts/distribution/IDistributionService.sol +23 -3
  338. package/contracts/examples/fire/DamageLevel.sol +59 -0
  339. package/contracts/examples/fire/FirePool.sol +75 -0
  340. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  341. package/contracts/examples/fire/FireProduct.sol +418 -0
  342. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  343. package/contracts/examples/fire/FireUSD.sol +26 -0
  344. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  345. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  346. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  347. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  348. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  349. package/contracts/instance/IInstance.sol +17 -38
  350. package/contracts/instance/IInstanceService.sol +9 -34
  351. package/contracts/instance/Instance.sol +84 -115
  352. package/contracts/instance/InstanceAdmin.sol +216 -270
  353. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  354. package/contracts/instance/InstanceReader.sol +137 -34
  355. package/contracts/instance/InstanceService.sol +98 -126
  356. package/contracts/instance/InstanceServiceManager.sol +8 -13
  357. package/contracts/instance/InstanceStore.sol +23 -5
  358. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  359. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  360. package/contracts/instance/module/IBundle.sol +1 -1
  361. package/contracts/instance/module/IComponents.sol +10 -11
  362. package/contracts/instance/module/IDistribution.sol +0 -1
  363. package/contracts/instance/module/IPolicy.sol +24 -24
  364. package/contracts/mock/Dip.sol +1 -1
  365. package/contracts/oracle/BasicOracle.sol +47 -0
  366. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  367. package/contracts/oracle/IOracle.sol +16 -0
  368. package/contracts/oracle/IOracleComponent.sol +2 -1
  369. package/contracts/oracle/IOracleService.sol +2 -1
  370. package/contracts/oracle/Oracle.sol +64 -53
  371. package/contracts/oracle/OracleService.sol +47 -34
  372. package/contracts/oracle/OracleServiceManager.sol +8 -11
  373. package/contracts/pool/BasicPool.sol +154 -0
  374. package/contracts/pool/BasicPoolAuthorization.sol +57 -0
  375. package/contracts/pool/BundleService.sol +254 -70
  376. package/contracts/pool/BundleServiceManager.sol +8 -11
  377. package/contracts/pool/IBundleService.sol +42 -5
  378. package/contracts/pool/IPoolComponent.sol +24 -68
  379. package/contracts/pool/IPoolService.sol +56 -39
  380. package/contracts/pool/Pool.sol +184 -148
  381. package/contracts/pool/PoolService.sol +256 -164
  382. package/contracts/pool/PoolServiceManager.sol +6 -9
  383. package/contracts/product/ApplicationService.sol +68 -65
  384. package/contracts/product/ApplicationServiceManager.sol +6 -6
  385. package/contracts/product/BasicProduct.sol +53 -0
  386. package/contracts/product/BasicProductAuthorization.sol +42 -0
  387. package/contracts/product/ClaimService.sol +308 -146
  388. package/contracts/product/ClaimServiceManager.sol +6 -6
  389. package/contracts/product/IApplicationService.sol +1 -0
  390. package/contracts/product/IClaimService.sol +31 -7
  391. package/contracts/product/IPolicyService.sol +34 -32
  392. package/contracts/product/IPricingService.sol +10 -10
  393. package/contracts/product/IProductComponent.sol +26 -9
  394. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  395. package/contracts/product/PolicyService.sol +404 -196
  396. package/contracts/product/PolicyServiceManager.sol +6 -9
  397. package/contracts/product/PricingService.sol +50 -53
  398. package/contracts/product/PricingServiceManager.sol +5 -8
  399. package/contracts/product/Product.sol +211 -133
  400. package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
  401. package/contracts/product/RiskServiceManager.sol +39 -0
  402. package/contracts/registry/ChainNft.sol +68 -38
  403. package/contracts/registry/IRegistry.sol +69 -22
  404. package/contracts/registry/IRegistryService.sol +3 -10
  405. package/contracts/registry/ITransferInterceptor.sol +1 -2
  406. package/contracts/registry/Registry.sol +354 -219
  407. package/contracts/registry/RegistryAdmin.sol +244 -129
  408. package/contracts/registry/RegistryService.sol +39 -64
  409. package/contracts/registry/RegistryServiceManager.sol +4 -4
  410. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  411. package/contracts/registry/ReleaseRegistry.sol +501 -0
  412. package/contracts/registry/ServiceAuthorizationV3.sol +23 -29
  413. package/contracts/registry/TokenRegistry.sol +2 -2
  414. package/contracts/shared/Component.sol +47 -63
  415. package/contracts/shared/ComponentService.sol +304 -186
  416. package/contracts/shared/ComponentServiceManager.sol +10 -7
  417. package/contracts/shared/ComponentVerifyingService.sol +24 -15
  418. package/contracts/shared/ContractLib.sol +38 -0
  419. package/contracts/shared/IComponent.sol +10 -6
  420. package/contracts/shared/IComponentService.sol +38 -20
  421. package/contracts/shared/IInstanceLinkedComponent.sol +11 -16
  422. package/contracts/shared/IKeyValueStore.sol +1 -0
  423. package/contracts/shared/ILifecycle.sol +3 -2
  424. package/contracts/shared/INftOwnable.sol +2 -0
  425. package/contracts/shared/IPolicyHolder.sol +12 -22
  426. package/contracts/shared/IRegisterable.sol +11 -0
  427. package/contracts/shared/IService.sol +1 -1
  428. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  429. package/contracts/shared/InstanceLinkedComponent.sol +106 -37
  430. package/contracts/shared/KeyValueStore.sol +7 -3
  431. package/contracts/shared/Lifecycle.sol +30 -72
  432. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  433. package/contracts/shared/NftOwnable.sol +29 -9
  434. package/contracts/shared/PolicyHolder.sol +17 -57
  435. package/contracts/shared/Registerable.sol +19 -9
  436. package/contracts/shared/RegistryLinked.sol +3 -2
  437. package/contracts/shared/Service.sol +23 -22
  438. package/contracts/shared/TokenHandler.sol +100 -19
  439. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  440. package/contracts/staking/IStaking.sol +3 -3
  441. package/contracts/staking/IStakingService.sol +12 -8
  442. package/contracts/staking/StakeManagerLib.sol +18 -25
  443. package/contracts/staking/Staking.sol +29 -45
  444. package/contracts/staking/StakingLifecycle.sol +23 -0
  445. package/contracts/staking/StakingManager.sol +10 -12
  446. package/contracts/staking/StakingReader.sol +23 -20
  447. package/contracts/staking/StakingService.sol +11 -29
  448. package/contracts/staking/StakingServiceManager.sol +4 -4
  449. package/contracts/staking/StakingStore.sol +15 -23
  450. package/contracts/staking/TargetManagerLib.sol +7 -3
  451. package/contracts/type/Amount.sol +27 -5
  452. package/contracts/type/Blocknumber.sol +7 -1
  453. package/contracts/type/ClaimId.sol +6 -1
  454. package/contracts/type/NftId.sol +1 -0
  455. package/contracts/type/ObjectType.sol +53 -18
  456. package/contracts/type/PayoutId.sol +10 -10
  457. package/contracts/type/Referral.sol +1 -0
  458. package/contracts/type/RiskId.sol +15 -1
  459. package/contracts/type/RoleId.sol +55 -94
  460. package/contracts/type/Seconds.sol +21 -1
  461. package/contracts/type/StateId.sol +15 -1
  462. package/contracts/type/Timestamp.sol +11 -1
  463. package/contracts/type/UFixed.sol +38 -9
  464. package/contracts/type/Version.sol +3 -1
  465. package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
  466. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  467. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  468. package/package.json +4 -3
  469. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  470. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  471. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  472. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  473. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  474. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  475. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  476. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  477. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  478. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  479. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  480. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  481. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  482. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  483. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  484. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  485. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  486. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  487. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  488. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  489. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  490. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  491. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  492. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  493. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  494. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  495. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  496. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  497. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  498. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  499. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  500. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  501. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  502. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  503. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  504. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  505. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  506. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  507. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  508. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  509. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  510. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  511. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  512. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  513. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  514. package/contracts/product/ProductServiceManager.sol +0 -42
  515. package/contracts/registry/ReleaseManager.sol +0 -527
  516. package/contracts/shared/AccessManagerCustom.sol +0 -741
  517. package/contracts/shared/AccessManagerExtended.sol +0 -481
  518. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  519. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  520. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  521. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  522. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  523. package/contracts/shared/InitializableCustom.sol +0 -177
  524. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,48 +1,27 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRisk} from "../instance/module/IRisk.sol";
5
- import {IService} from "./IApplicationService.sol";
6
-
7
- import {IComponents} from "../instance/module/IComponents.sol";
8
- import {IRegistry} from "../registry/IRegistry.sol";
9
- import {IProductComponent} from "./IProductComponent.sol";
10
- import {Product} from "./Product.sol";
11
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
12
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
13
- import {IInstance} from "../instance/IInstance.sol";
14
- import {IPolicy} from "../instance/module/IPolicy.sol";
15
- import {IRisk} from "../instance/module/IRisk.sol";
16
- import {IBundle} from "../instance/module/IBundle.sol";
17
- import {IProductService} from "./IProductService.sol";
18
-
19
- import {TokenHandler} from "../shared/TokenHandler.sol";
20
-
21
- import {IVersionable} from "../shared/IVersionable.sol";
22
- import {Versionable} from "../shared/Versionable.sol";
23
-
24
4
  import {Amount, AmountLib} from "../type/Amount.sol";
25
- import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
26
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
27
- import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
28
- import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, CLAIM, BUNDLE} from "../type/ObjectType.sol";
29
- import {SUBMITTED, ACTIVE, KEEP_STATE, DECLINED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
30
- import {NftId, NftIdLib} from "../type/NftId.sol";
31
- import {Fee, FeeLib} from "../type/Fee.sol";
32
- import {ReferralId} from "../type/Referral.sol";
33
- import {RiskId} from "../type/RiskId.sol";
5
+ import {TimestampLib} from "../type/Timestamp.sol";
6
+ import {ObjectType, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
7
+ import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {FeeLib} from "../type/Fee.sol";
34
10
  import {StateId} from "../type/StateId.sol";
35
11
  import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
36
12
  import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
37
- import {Version, VersionLib} from "../type/Version.sol";
38
-
39
13
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
14
+ import {ContractLib} from "../shared/ContractLib.sol";
40
15
  import {InstanceReader} from "../instance/InstanceReader.sol";
41
- import {IBundleService} from "../pool/IBundleService.sol";
16
+ import {InstanceStore} from "../instance/InstanceStore.sol";
42
17
  import {IClaimService} from "./IClaimService.sol";
18
+ import {IComponents} from "../instance/module/IComponents.sol";
19
+ import {IInstance} from "../instance/IInstance.sol";
20
+ import {IPolicy} from "../instance/module/IPolicy.sol";
21
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
22
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
23
+ import {IPolicyService} from "../product/IPolicyService.sol";
43
24
  import {IPoolService} from "../pool/IPoolService.sol";
44
- import {IService} from "../shared/IService.sol";
45
- import {Service} from "../shared/Service.sol";
46
25
 
47
26
 
48
27
  contract ClaimService is
@@ -50,6 +29,7 @@ contract ClaimService is
50
29
  IClaimService
51
30
  {
52
31
 
32
+ IPolicyService internal _policyService;
53
33
  IPoolService internal _poolService;
54
34
 
55
35
  function _initialize(
@@ -61,16 +41,16 @@ contract ClaimService is
61
41
  initializer()
62
42
  {
63
43
  (
64
- address registryAddress,,
65
- //address managerAddress
44
+ address registryAddress,
66
45
  address authority
67
- ) = abi.decode(data, (address, address, address));
46
+ ) = abi.decode(data, (address, address));
68
47
 
69
- initializeService(registryAddress, authority, owner);
48
+ _initializeService(registryAddress, authority, owner);
70
49
 
50
+ _policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
71
51
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
72
52
 
73
- registerInterface(type(IClaimService).interfaceId);
53
+ _registerInterface(type(IClaimService).interfaceId);
74
54
  }
75
55
 
76
56
  function submit(
@@ -80,11 +60,14 @@ contract ClaimService is
80
60
  )
81
61
  external
82
62
  virtual
63
+ onlyNftOfType(policyNftId, POLICY())
64
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
83
65
  returns (ClaimId claimId)
84
66
  {
85
67
  (
86
- IInstance instance,
87
- InstanceReader instanceReader,
68
+ ,
69
+ IInstance instance,,
70
+ InstanceStore instanceStore,
88
71
  IPolicy.PolicyInfo memory policyInfo
89
72
  ) = _verifyCallerWithPolicy(policyNftId);
90
73
 
@@ -93,6 +76,7 @@ contract ClaimService is
93
76
  revert ErrorClaimServicePolicyNotOpen(policyNftId);
94
77
  }
95
78
 
79
+ // TODO check claim amount > 0
96
80
  // check policy including this claim is still within sum insured
97
81
  if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
98
82
  revert ErrorClaimServiceClaimExceedsSumInsured(
@@ -103,23 +87,23 @@ contract ClaimService is
103
87
 
104
88
  // create new claim
105
89
  claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
106
- instance.getInstanceStore().createClaim(
90
+ instanceStore.createClaim(
107
91
  policyNftId,
108
92
  claimId,
109
- IPolicy.ClaimInfo(
110
- claimAmount,
111
- AmountLib.zero(), // paidAmount
112
- 0, // payoutsCount
113
- 0, // openPayoutsCount
114
- claimData, // claim submission data
115
- "", // claim processing data
116
- TimestampLib.zero())); // closedAt
93
+ IPolicy.ClaimInfo({
94
+ claimAmount: claimAmount,
95
+ paidAmount: AmountLib.zero(),
96
+ payoutsCount: 0,
97
+ openPayoutsCount: 0,
98
+ submissionData: claimData,
99
+ processData: "",
100
+ closedAt: TimestampLib.zero()}));
117
101
 
118
102
  // update and save policy info with instance
103
+ // policy claim amount is only updated when claim is confirmed
119
104
  policyInfo.claimsCount += 1;
120
105
  policyInfo.openClaimsCount += 1;
121
- // policy claim amount is only updated when claim is confirmed
122
- instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
106
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
123
107
 
124
108
  emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
125
109
  }
@@ -133,26 +117,44 @@ contract ClaimService is
133
117
  )
134
118
  external
135
119
  virtual
120
+ onlyNftOfType(policyNftId, POLICY())
121
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
136
122
  {
137
123
  (
124
+ NftId productNftId,
138
125
  IInstance instance,
139
126
  InstanceReader instanceReader,
127
+ InstanceStore instanceStore,
140
128
  IPolicy.PolicyInfo memory policyInfo
141
129
  ) = _verifyCallerWithPolicy(policyNftId);
142
130
 
131
+ // TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
132
+
143
133
  // check/update claim info
144
134
  IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
145
135
  claimInfo.claimAmount = confirmedAmount;
146
136
  claimInfo.processData = data;
147
- instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
137
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
148
138
 
149
139
  // update and save policy info with instance
150
140
  policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
151
- instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
141
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
142
+
143
+ // should policy still be active it needs to become expired
144
+ if (policyInfo.claimAmount >= policyInfo.sumInsuredAmount) {
145
+ _policyService.expirePolicy(instance, policyNftId, TimestampLib.blockTimestamp());
146
+ }
152
147
 
153
148
  emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
149
+
150
+ // callback to pool if applicable
151
+ _processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
152
+
153
+ // callback to policy holder if applicable
154
+ _policyHolderClaimConfirmed(policyNftId, claimId, confirmedAmount);
154
155
  }
155
156
 
157
+
156
158
  function decline(
157
159
  NftId policyNftId,
158
160
  ClaimId claimId,
@@ -160,10 +162,14 @@ contract ClaimService is
160
162
  )
161
163
  external
162
164
  virtual
165
+ onlyNftOfType(policyNftId, POLICY())
166
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
163
167
  {
164
168
  (
169
+ ,
165
170
  IInstance instance,
166
171
  InstanceReader instanceReader,
172
+ InstanceStore instanceStore,
167
173
  IPolicy.PolicyInfo memory policyInfo
168
174
  ) = _verifyCallerWithPolicy(policyNftId);
169
175
 
@@ -171,25 +177,61 @@ contract ClaimService is
171
177
  IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
172
178
  claimInfo.processData = data;
173
179
  claimInfo.closedAt = TimestampLib.blockTimestamp();
174
- instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, DECLINED());
180
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, DECLINED());
175
181
 
176
182
  // update and save policy info with instance
177
183
  policyInfo.openClaimsCount -= 1;
178
- instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
184
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
179
185
 
180
186
  emit LogClaimServiceClaimDeclined(policyNftId, claimId);
181
187
  }
182
188
 
189
+
190
+ // TODO add test case
191
+ function revoke(
192
+ NftId policyNftId,
193
+ ClaimId claimId
194
+ )
195
+ external
196
+ virtual
197
+ onlyNftOfType(policyNftId, POLICY())
198
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
199
+ {
200
+ (
201
+ ,
202
+ IInstance instance,
203
+ InstanceReader instanceReader,
204
+ InstanceStore instanceStore,
205
+ IPolicy.PolicyInfo memory policyInfo
206
+ ) = _verifyCallerWithPolicy(policyNftId);
207
+
208
+ // check/update claim info
209
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
210
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
211
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, REVOKED());
212
+
213
+ // update and save policy info with instance
214
+ policyInfo.openClaimsCount -= 1;
215
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
216
+
217
+ emit LogClaimServiceClaimRevoked(policyNftId, claimId);
218
+ }
219
+
220
+
183
221
  function close(
184
222
  NftId policyNftId,
185
223
  ClaimId claimId
186
224
  )
187
225
  external
188
226
  virtual
227
+ onlyNftOfType(policyNftId, POLICY())
228
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
189
229
  {
190
230
  (
231
+ ,
191
232
  IInstance instance,
192
233
  InstanceReader instanceReader,
234
+ InstanceStore instanceStore,
193
235
  IPolicy.PolicyInfo memory policyInfo
194
236
  ) = _verifyCallerWithPolicy(policyNftId);
195
237
 
@@ -214,55 +256,54 @@ contract ClaimService is
214
256
  }
215
257
 
216
258
  claimInfo.closedAt = TimestampLib.blockTimestamp();
217
- instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
259
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
218
260
  }
219
261
 
220
262
 
221
- function createPayout(
263
+ function createPayoutForBeneficiary(
222
264
  NftId policyNftId,
223
265
  ClaimId claimId,
224
266
  Amount amount,
267
+ address beneficiary,
225
268
  bytes memory data
226
269
  )
227
270
  external
271
+ virtual
272
+ onlyNftOfType(policyNftId, POLICY())
273
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
228
274
  returns (PayoutId payoutId)
229
275
  {
230
- (
231
- IInstance instance,
232
- InstanceReader instanceReader,
233
- IPolicy.PolicyInfo memory policyInfo
234
- ) = _verifyCallerWithPolicy(policyNftId);
235
-
236
- IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
237
- StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
238
-
239
- // TODO add checks
240
- // claim needs to be open
241
- // claim.paidAmount + amount <= claim.claimAmount
276
+ if (beneficiary == address(0)) {
277
+ revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
278
+ }
242
279
 
243
- // check/update claim info
244
- // create payout info with instance
245
- uint8 claimNo = claimInfo.payoutsCount + 1;
246
- payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
247
- instance.getInstanceStore().createPayout(
280
+ return _createPayout(
248
281
  policyNftId,
249
- payoutId,
250
- IPolicy.PayoutInfo(
251
- payoutId.toClaimId(),
252
- amount,
253
- data,
254
- TimestampLib.zero()));
255
-
256
- // update and save claim info with instance
257
- claimInfo.payoutsCount += 1;
258
- claimInfo.openPayoutsCount += 1;
259
- instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
282
+ claimId,
283
+ amount,
284
+ beneficiary,
285
+ data);
286
+ }
260
287
 
261
- // update and save policy info with instance
262
- policyInfo.payoutAmount.add(amount);
263
- instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
264
288
 
265
- emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
289
+ function createPayout(
290
+ NftId policyNftId,
291
+ ClaimId claimId,
292
+ Amount amount,
293
+ bytes memory data
294
+ )
295
+ external
296
+ virtual
297
+ onlyNftOfType(policyNftId, POLICY())
298
+ // nonReentrant() // prevents creating a reinsurance payout in a single tx
299
+ returns (PayoutId payoutId)
300
+ {
301
+ return _createPayout(
302
+ policyNftId,
303
+ claimId,
304
+ amount,
305
+ address(0), // defaults to owner of policy nft
306
+ data);
266
307
  }
267
308
 
268
309
 
@@ -272,10 +313,14 @@ contract ClaimService is
272
313
  )
273
314
  external
274
315
  virtual
316
+ onlyNftOfType(policyNftId, POLICY())
317
+ // nonReentrant() // prevents creating a reinsurance payout in a single tx
275
318
  {
276
319
  (
320
+ ,
277
321
  IInstance instance,
278
322
  InstanceReader instanceReader,
323
+ InstanceStore instanceStore,
279
324
  IPolicy.PolicyInfo memory policyInfo
280
325
  ) = _verifyCallerWithPolicy(policyNftId);
281
326
 
@@ -284,55 +329,128 @@ contract ClaimService is
284
329
 
285
330
  // update and save payout info with instance
286
331
  payoutInfo.paidAt = TimestampLib.blockTimestamp();
287
- instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
332
+ instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
288
333
 
289
- // TODO update and save claim info with instance
290
- ClaimId claimId = payoutId.toClaimId();
291
334
  Amount payoutAmount = payoutInfo.amount;
292
- IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
293
- claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
294
- claimInfo.openPayoutsCount -= 1;
295
-
296
- // check if this payout is closing the linked claim
297
- // update claim and policy info accordingly
298
- if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
299
- claimInfo.closedAt == TimestampLib.blockTimestamp();
300
- instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
301
-
302
- policyInfo.openClaimsCount -= 1;
303
- } else {
304
- instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
335
+
336
+ {
337
+ ClaimId claimId = payoutId.toClaimId();
338
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
339
+ claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
340
+ claimInfo.openPayoutsCount -= 1;
341
+
342
+ // check if this payout is closing the linked claim
343
+ // update claim and policy info accordingly
344
+ if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
345
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
346
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
347
+
348
+ policyInfo.openClaimsCount -= 1;
349
+ } else {
350
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
351
+ }
305
352
  }
306
353
 
307
354
  // update and save policy info with instance
308
355
  policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
309
- instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
356
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
310
357
 
311
358
  // inform pool about payout
312
- _poolService.reduceCollateral(
359
+ _poolService.processPayout(
313
360
  instance,
314
361
  address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
315
362
  policyNftId,
316
363
  policyInfo,
317
364
  payoutAmount);
318
-
365
+
319
366
  // transfer payout token and fee
367
+ {
368
+ (
369
+ Amount netPayoutAmount,
370
+ Amount processingFeeAmount,
371
+ address beneficiary
372
+ ) = _calculatePayoutAmount(
373
+ instanceReader,
374
+ policyNftId,
375
+ policyInfo,
376
+ payoutInfo);
377
+
378
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
379
+
380
+ {
381
+ NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
382
+ IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
383
+ poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
384
+
385
+ // TODO add 2nd token tx if processingFeeAmount > 0
386
+ }
387
+
388
+ // callback to policy holder if applicable
389
+ _policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
390
+ }
391
+ }
392
+
393
+ // internal functions
394
+
395
+
396
+ function _createPayout(
397
+ NftId policyNftId,
398
+ ClaimId claimId,
399
+ Amount amount,
400
+ address beneficiary,
401
+ bytes memory data
402
+ )
403
+ internal
404
+ virtual
405
+ returns (PayoutId payoutId)
406
+ {
320
407
  (
321
- Amount netPayoutAmount,
322
- address beneficiary
323
- ) = _transferPayoutAmount(
324
- instanceReader,
325
- policyNftId,
326
- policyInfo,
327
- payoutInfo);
408
+ ,
409
+ ,
410
+ InstanceReader instanceReader,
411
+ InstanceStore instanceStore,
412
+ IPolicy.PolicyInfo memory policyInfo
413
+ ) = _verifyCallerWithPolicy(policyNftId);
328
414
 
329
- // TODO callback IPolicyHolder
415
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
416
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
417
+
418
+ // TODO add checks
419
+ // claim needs to be open
420
+ // claim.paidAmount + amount <= claim.claimAmount
421
+
422
+ // check/update claim info
423
+ // create payout info with instance
424
+ uint24 payoutNo = claimInfo.payoutsCount + 1;
425
+ payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
426
+ if (beneficiary == address(0)) {
427
+ beneficiary = getRegistry().ownerOf(policyNftId);
428
+ }
429
+
430
+ instanceStore.createPayout(
431
+ policyNftId,
432
+ payoutId,
433
+ IPolicy.PayoutInfo({
434
+ claimId: payoutId.toClaimId(),
435
+ amount: amount,
436
+ beneficiary: beneficiary,
437
+ data: data,
438
+ paidAt: TimestampLib.zero()}));
439
+
440
+ // update and save claim info with instance
441
+ claimInfo.payoutsCount += 1;
442
+ claimInfo.openPayoutsCount += 1;
443
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
330
444
 
331
- emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount);
445
+ // update and save policy info with instance
446
+ policyInfo.payoutAmount.add(amount);
447
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
448
+
449
+ emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
332
450
  }
333
451
 
334
- // TODO create (I)TreasuryService that deals with all gif related token transfers
335
- function _transferPayoutAmount(
452
+
453
+ function _calculatePayoutAmount(
336
454
  InstanceReader instanceReader,
337
455
  NftId policyNftId,
338
456
  IPolicy.PolicyInfo memory policyInfo,
@@ -341,6 +459,7 @@ contract ClaimService is
341
459
  internal
342
460
  returns (
343
461
  Amount netPayoutAmount,
462
+ Amount processingFeeAmount,
344
463
  address beneficiary
345
464
  )
346
465
  {
@@ -354,38 +473,20 @@ contract ClaimService is
354
473
  IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
355
474
 
356
475
  netPayoutAmount = payoutAmount;
357
- beneficiary = _getBeneficiary(policyNftId, payoutInfo.claimId);
476
+
477
+ if (payoutInfo.beneficiary == address(0)) {
478
+ beneficiary = getRegistry().ownerOf(policyNftId);
479
+ } else {
480
+ beneficiary = payoutInfo.beneficiary;
481
+ }
358
482
 
359
483
  IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
360
484
  if(FeeLib.gtz(productInfo.processingFee)) {
361
- // TODO calculate net payout and processing fees
362
- // TODO transfer processing fees to product wallet
363
- // TODO inform product to update fee book keeping
485
+ // TODO calculate and set net payout and processing fees
364
486
  }
365
-
366
- poolInfo.tokenHandler.transfer(
367
- poolInfo.wallet,
368
- beneficiary,
369
- netPayoutAmount);
370
487
  }
371
488
  }
372
489
 
373
- // internal functions
374
-
375
- function _getBeneficiary(
376
- NftId policyNftId,
377
- ClaimId claimId
378
- )
379
- internal
380
- returns (address beneficiary)
381
- {
382
- // TODO check if owner is IPolicyHolder
383
- // if so, obtain beneficiary from this contract
384
-
385
- // default beneficiary is policy nft owner
386
- beneficiary = getRegistry().ownerOf(policyNftId);
387
- }
388
-
389
490
 
390
491
  function _verifyCallerWithPolicy(
391
492
  NftId policyNftId
@@ -394,14 +495,16 @@ contract ClaimService is
394
495
  view
395
496
  virtual
396
497
  returns (
498
+ NftId productNftId,
397
499
  IInstance instance,
398
500
  InstanceReader instanceReader,
501
+ InstanceStore instanceStore,
399
502
  IPolicy.PolicyInfo memory policyInfo
400
503
  )
401
504
  {
402
- NftId productNftId;
403
505
  (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
404
506
  instanceReader = instance.getInstanceReader();
507
+ instanceStore = instance.getInstanceStore();
405
508
 
406
509
  // check caller(product) policy match
407
510
  policyInfo = instanceReader.getPolicyInfo(policyNftId);
@@ -435,6 +538,65 @@ contract ClaimService is
435
538
  claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
436
539
  }
437
540
 
541
+ function _processConfirmedClaimByPool(
542
+ InstanceReader instanceReader,
543
+ NftId productNftId,
544
+ NftId policyNftId,
545
+ ClaimId claimId,
546
+ Amount amount
547
+ )
548
+ internal
549
+ {
550
+ NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
551
+ if (instanceReader.getPoolInfo(poolNftId).isProcessingConfirmedClaims) {
552
+ address poolAddress = getRegistry().getObjectAddress(poolNftId);
553
+ IPoolComponent(poolAddress).processConfirmedClaim(policyNftId, claimId, amount);
554
+ }
555
+ }
556
+
557
+
558
+ function _policyHolderClaimConfirmed(
559
+ NftId policyNftId,
560
+ ClaimId claimId,
561
+ Amount confirmedAmount
562
+ )
563
+ internal
564
+ {
565
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
566
+ if(address(policyHolder) != address(0)) {
567
+ policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
568
+ }
569
+ }
570
+
571
+
572
+ function _policyHolderPayoutExecuted(
573
+ NftId policyNftId,
574
+ PayoutId payoutId,
575
+ address beneficiary,
576
+ Amount payoutAmount
577
+ )
578
+ internal
579
+ {
580
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
581
+ if(address(policyHolder) != address(0)) {
582
+ policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
583
+ }
584
+ }
585
+
586
+
587
+ function _getPolicyHolder(NftId policyNftId)
588
+ internal
589
+ view
590
+ returns (IPolicyHolder policyHolder)
591
+ {
592
+ address policyHolderAddress = getRegistry().ownerOf(policyNftId);
593
+ policyHolder = IPolicyHolder(policyHolderAddress);
594
+
595
+ if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
596
+ policyHolder = IPolicyHolder(address(0));
597
+ }
598
+ }
599
+
438
600
 
439
601
  function _getDomain() internal pure override returns(ObjectType) {
440
602
  return CLAIM();