@etherisc/gif-next 0.0.2-eadf4ad-726 → 0.0.2-eae5e95-691

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