@etherisc/gif-next 0.0.2-abde86b-349 → 0.0.2-ac4bee9-682

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 (408) hide show
  1. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +96 -37
  3. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  4. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  6. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -13
  9. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  11. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  13. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  14. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +139 -157
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +77 -17
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +102 -96
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +152 -86
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +104 -60
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +92 -81
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +29 -0
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1429 -0
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  41. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +151 -132
  45. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +133 -127
  47. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +249 -188
  49. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +530 -229
  51. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
  55. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +31 -86
  57. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  58. package/artifacts/contracts/instance/Instance.sol/Instance.json +78 -40
  59. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +148 -118
  61. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  63. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +113 -135
  65. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +91 -133
  67. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +72 -40
  69. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +172 -111
  71. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  73. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  76. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  78. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  86. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +121 -139
  89. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +77 -17
  91. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +87 -76
  94. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  96. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +97 -91
  98. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +102 -47
  100. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +72 -36
  102. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +97 -119
  104. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  106. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +205 -103
  108. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +108 -60
  110. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +72 -15
  112. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +87 -115
  114. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +213 -195
  116. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/Pool.sol/Pool.json +97 -130
  118. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +294 -255
  120. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +83 -47
  122. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +82 -32
  124. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +69 -33
  126. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +142 -92
  128. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +77 -17
  130. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +175 -82
  132. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +102 -58
  134. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
  136. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +56 -0
  138. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -1
  140. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
  142. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +128 -73
  144. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
  146. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +154 -61
  148. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +87 -47
  150. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.json +165 -107
  152. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +85 -45
  154. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  155. package/artifacts/contracts/product/Product.sol/Product.json +138 -88
  156. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -26
  158. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -30
  160. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  162. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +72 -15
  164. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  166. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  168. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  169. package/artifacts/contracts/registry/Registry.sol/Registry.json +116 -51
  170. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +206 -165
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +161 -61
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +65 -29
  176. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  178. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +123 -225
  180. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  182. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  183. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  184. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  185. package/artifacts/contracts/shared/Component.sol/Component.json +76 -66
  186. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +425 -155
  188. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +103 -63
  190. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +42 -0
  192. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  193. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +21 -2
  194. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -51
  196. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +388 -19
  198. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +87 -76
  200. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  202. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  203. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  204. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  206. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  207. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  209. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  212. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  213. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  214. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +97 -91
  215. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  216. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  217. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  218. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  219. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  220. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  221. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  222. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
  223. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  224. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  225. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +66 -8
  227. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  228. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  229. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  230. package/artifacts/contracts/shared/Service.sol/Service.json +42 -0
  231. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  232. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  233. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  234. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  235. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  236. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  237. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  238. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +84 -87
  239. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  240. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  241. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  243. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  244. package/artifacts/contracts/staking/Staking.sol/Staking.json +154 -166
  245. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  247. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +81 -51
  249. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  251. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +82 -53
  253. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  254. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +69 -33
  255. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  256. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
  257. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  258. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  259. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  260. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  262. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  265. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  267. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  269. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  271. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  273. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  274. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  275. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  277. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  279. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  281. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  283. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  285. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  287. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  292. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  298. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  299. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
  301. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  302. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  303. package/contracts/authorization/AccessAdmin.sol +65 -61
  304. package/contracts/authorization/Authorization.sol +106 -38
  305. package/contracts/authorization/IAccess.sol +1 -0
  306. package/contracts/authorization/IAccessAdmin.sol +4 -2
  307. package/contracts/authorization/IAuthorization.sol +13 -7
  308. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  309. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  310. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  311. package/contracts/distribution/BasicDistribution.sol +2 -1
  312. package/contracts/distribution/Distribution.sol +6 -16
  313. package/contracts/distribution/DistributionService.sol +55 -36
  314. package/contracts/distribution/IDistributionComponent.sol +1 -1
  315. package/contracts/examples/fire/DamageLevel.sol +59 -0
  316. package/contracts/examples/fire/FirePool.sol +86 -0
  317. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  318. package/contracts/examples/fire/FireProduct.sol +431 -0
  319. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  320. package/contracts/examples/fire/FireUSD.sol +26 -0
  321. package/contracts/examples/unpermissioned/SimpleDistribution.sol +12 -4
  322. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  323. package/contracts/examples/unpermissioned/SimplePool.sol +38 -6
  324. package/contracts/examples/unpermissioned/SimpleProduct.sol +17 -23
  325. package/contracts/instance/IInstance.sol +4 -1
  326. package/contracts/instance/IInstanceService.sol +2 -23
  327. package/contracts/instance/Instance.sol +20 -17
  328. package/contracts/instance/InstanceAdmin.sol +17 -28
  329. package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
  330. package/contracts/instance/InstanceReader.sol +10 -34
  331. package/contracts/instance/InstanceService.sol +29 -80
  332. package/contracts/instance/module/IComponents.sol +7 -5
  333. package/contracts/instance/module/IPolicy.sol +2 -1
  334. package/contracts/oracle/BasicOracle.sol +0 -1
  335. package/contracts/oracle/IOracleService.sol +2 -1
  336. package/contracts/oracle/Oracle.sol +4 -15
  337. package/contracts/oracle/OracleService.sol +47 -36
  338. package/contracts/pool/BasicPool.sol +33 -24
  339. package/contracts/pool/BasicPoolAuthorization.sol +12 -2
  340. package/contracts/pool/BundleService.sol +88 -41
  341. package/contracts/pool/IBundleService.sol +11 -5
  342. package/contracts/pool/IPoolComponent.sol +1 -7
  343. package/contracts/pool/IPoolService.sol +25 -24
  344. package/contracts/pool/Pool.sol +118 -126
  345. package/contracts/pool/PoolService.sol +203 -131
  346. package/contracts/product/ApplicationService.sol +9 -1
  347. package/contracts/product/BasicProduct.sol +8 -12
  348. package/contracts/product/BasicProductAuthorization.sol +0 -1
  349. package/contracts/product/ClaimService.sol +99 -58
  350. package/contracts/product/IClaimService.sol +2 -1
  351. package/contracts/product/IPolicyService.sol +6 -1
  352. package/contracts/product/IPricingService.sol +9 -9
  353. package/contracts/product/IProductComponent.sol +6 -0
  354. package/contracts/product/PolicyService.sol +76 -27
  355. package/contracts/product/PricingService.sol +8 -8
  356. package/contracts/product/Product.sol +56 -56
  357. package/contracts/registry/ChainNft.sol +6 -9
  358. package/contracts/registry/IRegistry.sol +6 -3
  359. package/contracts/registry/IRegistryService.sol +6 -4
  360. package/contracts/registry/ITransferInterceptor.sol +1 -2
  361. package/contracts/registry/Registry.sol +22 -4
  362. package/contracts/registry/RegistryAdmin.sol +29 -31
  363. package/contracts/registry/RegistryService.sol +37 -55
  364. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  365. package/contracts/registry/ReleaseRegistry.sol +202 -208
  366. package/contracts/registry/ServiceAuthorizationV3.sol +24 -20
  367. package/contracts/shared/Component.sol +58 -97
  368. package/contracts/shared/ComponentService.sol +285 -147
  369. package/contracts/shared/ComponentVerifyingService.sol +27 -15
  370. package/contracts/shared/ContractLib.sol +17 -1
  371. package/contracts/shared/IComponent.sol +10 -13
  372. package/contracts/shared/IComponentService.sol +38 -16
  373. package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
  374. package/contracts/shared/ILifecycle.sol +3 -1
  375. package/contracts/shared/INftOwnable.sol +2 -0
  376. package/contracts/shared/IRegisterable.sol +11 -0
  377. package/contracts/shared/InstanceLinkedComponent.sol +66 -32
  378. package/contracts/shared/KeyValueStore.sol +1 -1
  379. package/contracts/shared/Lifecycle.sol +15 -4
  380. package/contracts/shared/NftOwnable.sol +23 -3
  381. package/contracts/shared/Registerable.sol +15 -7
  382. package/contracts/shared/RegistryLinked.sol +6 -12
  383. package/contracts/shared/Service.sol +4 -7
  384. package/contracts/shared/TokenHandler.sol +324 -66
  385. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  386. package/contracts/staking/IStaking.sol +9 -4
  387. package/contracts/staking/IStakingService.sol +0 -3
  388. package/contracts/staking/Staking.sol +31 -24
  389. package/contracts/staking/StakingReader.sol +12 -5
  390. package/contracts/staking/StakingService.sol +69 -23
  391. package/contracts/type/Amount.sol +15 -0
  392. package/contracts/type/ClaimId.sol +6 -1
  393. package/contracts/type/NftId.sol +1 -0
  394. package/contracts/type/ObjectType.sol +1 -0
  395. package/contracts/type/RiskId.sol +16 -2
  396. package/contracts/type/RoleId.sol +0 -12
  397. package/contracts/type/StateId.sol +14 -1
  398. package/contracts/upgradeability/ProxyManager.sol +2 -1
  399. package/package.json +4 -3
  400. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  401. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  402. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  403. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  404. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  405. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  406. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  407. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  408. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount, AmountLib} from "../type/Amount.sol";
5
5
  import {TimestampLib} from "../type/Timestamp.sol";
6
- import {ObjectType, CLAIM, PRODUCT, POOL} from "../type/ObjectType.sol";
6
+ import {ObjectType, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
7
7
  import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
9
  import {FeeLib} from "../type/Fee.sol";
@@ -13,12 +13,14 @@ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
13
13
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
14
14
  import {ContractLib} from "../shared/ContractLib.sol";
15
15
  import {InstanceReader} from "../instance/InstanceReader.sol";
16
+ import {InstanceStore} from "../instance/InstanceStore.sol";
16
17
  import {IClaimService} from "./IClaimService.sol";
17
18
  import {IComponents} from "../instance/module/IComponents.sol";
18
19
  import {IInstance} from "../instance/IInstance.sol";
19
20
  import {IPolicy} from "../instance/module/IPolicy.sol";
20
21
  import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
21
22
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
23
+ import {IPolicyService} from "../product/IPolicyService.sol";
22
24
  import {IPoolService} from "../pool/IPoolService.sol";
23
25
 
24
26
 
@@ -27,6 +29,7 @@ contract ClaimService is
27
29
  IClaimService
28
30
  {
29
31
 
32
+ IPolicyService internal _policyService;
30
33
  IPoolService internal _poolService;
31
34
 
32
35
  function _initialize(
@@ -44,6 +47,7 @@ contract ClaimService is
44
47
 
45
48
  _initializeService(registryAddress, authority, owner);
46
49
 
50
+ _policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
47
51
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
48
52
 
49
53
  _registerInterface(type(IClaimService).interfaceId);
@@ -59,10 +63,12 @@ contract ClaimService is
59
63
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
60
64
  returns (ClaimId claimId)
61
65
  {
66
+ _checkNftType(policyNftId, POLICY());
67
+
62
68
  (
63
69
  ,
64
- IInstance instance,
65
- InstanceReader instanceReader,
70
+ IInstance instance,,
71
+ InstanceStore instanceStore,
66
72
  IPolicy.PolicyInfo memory policyInfo
67
73
  ) = _verifyCallerWithPolicy(policyNftId);
68
74
 
@@ -82,7 +88,7 @@ contract ClaimService is
82
88
 
83
89
  // create new claim
84
90
  claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
85
- instance.getInstanceStore().createClaim(
91
+ instanceStore.createClaim(
86
92
  policyNftId,
87
93
  claimId,
88
94
  IPolicy.ClaimInfo({
@@ -95,10 +101,10 @@ contract ClaimService is
95
101
  closedAt: TimestampLib.zero()}));
96
102
 
97
103
  // update and save policy info with instance
104
+ // policy claim amount is only updated when claim is confirmed
98
105
  policyInfo.claimsCount += 1;
99
106
  policyInfo.openClaimsCount += 1;
100
- // policy claim amount is only updated when claim is confirmed
101
- instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
107
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
102
108
 
103
109
  emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
104
110
  }
@@ -114,10 +120,13 @@ contract ClaimService is
114
120
  virtual
115
121
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
116
122
  {
123
+ _checkNftType(policyNftId, POLICY());
124
+
117
125
  (
118
126
  NftId productNftId,
119
127
  IInstance instance,
120
128
  InstanceReader instanceReader,
129
+ InstanceStore instanceStore,
121
130
  IPolicy.PolicyInfo memory policyInfo
122
131
  ) = _verifyCallerWithPolicy(policyNftId);
123
132
 
@@ -127,14 +136,16 @@ contract ClaimService is
127
136
  IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
128
137
  claimInfo.claimAmount = confirmedAmount;
129
138
  claimInfo.processData = data;
130
- instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
131
-
132
- // TODO test if claim results in total claim amount == sum insured amount
133
- // should policy still be active it needs to automatically become expired
139
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
134
140
 
135
141
  // update and save policy info with instance
136
142
  policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
137
- instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
143
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
144
+
145
+ // should policy still be active it needs to become expired
146
+ if (policyInfo.claimAmount >= policyInfo.sumInsuredAmount) {
147
+ _policyService.expirePolicy(instance, policyNftId, TimestampLib.blockTimestamp());
148
+ }
138
149
 
139
150
  emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
140
151
 
@@ -155,10 +166,13 @@ contract ClaimService is
155
166
  virtual
156
167
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
157
168
  {
169
+ _checkNftType(policyNftId, POLICY());
170
+
158
171
  (
159
172
  ,
160
173
  IInstance instance,
161
174
  InstanceReader instanceReader,
175
+ InstanceStore instanceStore,
162
176
  IPolicy.PolicyInfo memory policyInfo
163
177
  ) = _verifyCallerWithPolicy(policyNftId);
164
178
 
@@ -166,11 +180,11 @@ contract ClaimService is
166
180
  IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
167
181
  claimInfo.processData = data;
168
182
  claimInfo.closedAt = TimestampLib.blockTimestamp();
169
- instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, DECLINED());
183
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, DECLINED());
170
184
 
171
185
  // update and save policy info with instance
172
186
  policyInfo.openClaimsCount -= 1;
173
- instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
187
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
174
188
 
175
189
  emit LogClaimServiceClaimDeclined(policyNftId, claimId);
176
190
  }
@@ -185,21 +199,24 @@ contract ClaimService is
185
199
  virtual
186
200
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
187
201
  {
202
+ _checkNftType(policyNftId, POLICY());
203
+
188
204
  (
189
205
  ,
190
206
  IInstance instance,
191
207
  InstanceReader instanceReader,
208
+ InstanceStore instanceStore,
192
209
  IPolicy.PolicyInfo memory policyInfo
193
210
  ) = _verifyCallerWithPolicy(policyNftId);
194
211
 
195
212
  // check/update claim info
196
213
  IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
197
214
  claimInfo.closedAt = TimestampLib.blockTimestamp();
198
- instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, REVOKED());
215
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, REVOKED());
199
216
 
200
217
  // update and save policy info with instance
201
218
  policyInfo.openClaimsCount -= 1;
202
- instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
219
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
203
220
 
204
221
  emit LogClaimServiceClaimRevoked(policyNftId, claimId);
205
222
  }
@@ -213,10 +230,13 @@ contract ClaimService is
213
230
  virtual
214
231
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
215
232
  {
233
+ _checkNftType(policyNftId, POLICY());
234
+
216
235
  (
217
236
  ,
218
237
  IInstance instance,
219
238
  InstanceReader instanceReader,
239
+ InstanceStore instanceStore,
220
240
  IPolicy.PolicyInfo memory policyInfo
221
241
  ) = _verifyCallerWithPolicy(policyNftId);
222
242
 
@@ -241,7 +261,7 @@ contract ClaimService is
241
261
  }
242
262
 
243
263
  claimInfo.closedAt = TimestampLib.blockTimestamp();
244
- instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
264
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
245
265
  }
246
266
 
247
267
 
@@ -257,6 +277,8 @@ contract ClaimService is
257
277
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
258
278
  returns (PayoutId payoutId)
259
279
  {
280
+ _checkNftType(policyNftId, POLICY());
281
+
260
282
  if (beneficiary == address(0)) {
261
283
  revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
262
284
  }
@@ -281,6 +303,8 @@ contract ClaimService is
281
303
  // nonReentrant() // prevents creating a reinsurance payout in a single tx
282
304
  returns (PayoutId payoutId)
283
305
  {
306
+ _checkNftType(policyNftId, POLICY());
307
+
284
308
  return _createPayout(
285
309
  policyNftId,
286
310
  claimId,
@@ -298,10 +322,13 @@ contract ClaimService is
298
322
  virtual
299
323
  // nonReentrant() // prevents creating a reinsurance payout in a single tx
300
324
  {
325
+ _checkNftType(policyNftId, POLICY());
326
+
301
327
  (
302
328
  ,
303
329
  IInstance instance,
304
330
  InstanceReader instanceReader,
331
+ InstanceStore instanceStore,
305
332
  IPolicy.PolicyInfo memory policyInfo
306
333
  ) = _verifyCallerWithPolicy(policyNftId);
307
334
 
@@ -310,60 +337,67 @@ contract ClaimService is
310
337
 
311
338
  // update and save payout info with instance
312
339
  payoutInfo.paidAt = TimestampLib.blockTimestamp();
313
- instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
340
+ instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
314
341
 
315
- ClaimId claimId = payoutId.toClaimId();
316
342
  Amount payoutAmount = payoutInfo.amount;
317
- IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
318
- claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
319
- claimInfo.openPayoutsCount -= 1;
320
-
321
- // check if this payout is closing the linked claim
322
- // update claim and policy info accordingly
323
- if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
324
- claimInfo.closedAt == TimestampLib.blockTimestamp();
325
- instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
326
-
327
- policyInfo.openClaimsCount -= 1;
328
- } else {
329
- instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
343
+
344
+ {
345
+ ClaimId claimId = payoutId.toClaimId();
346
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
347
+ claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
348
+ claimInfo.openPayoutsCount -= 1;
349
+
350
+ // check if this payout is closing the linked claim
351
+ // update claim and policy info accordingly
352
+ if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
353
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
354
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
355
+
356
+ policyInfo.openClaimsCount -= 1;
357
+ } else {
358
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
359
+ }
330
360
  }
331
361
 
332
362
  // update and save policy info with instance
333
363
  policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
334
- instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
364
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
335
365
 
336
366
  // inform pool about payout
337
- _poolService.reduceCollateral(
367
+ _poolService.processPayout(
338
368
  instance,
339
369
  address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
340
370
  policyNftId,
341
371
  policyInfo,
342
372
  payoutAmount);
343
-
373
+
344
374
  // transfer payout token and fee
345
- (
346
- Amount netPayoutAmount,
347
- Amount processingFeeAmount,
348
- address beneficiary
349
- ) = _calculatePayoutAmount(
350
- instanceReader,
351
- policyNftId,
352
- policyInfo,
353
- payoutInfo);
354
-
355
- emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
356
-
357
375
  {
358
- NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
359
- IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
360
- poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
376
+ (
377
+ Amount netPayoutAmount,
378
+ Amount processingFeeAmount,
379
+ address beneficiary
380
+ ) = _calculatePayoutAmount(
381
+ instanceReader,
382
+ policyNftId,
383
+ policyInfo,
384
+ payoutInfo);
385
+
386
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
387
+
388
+ {
389
+ NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
390
+ IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
391
+ poolInfo.tokenHandler.pushToken(
392
+ beneficiary,
393
+ netPayoutAmount);
394
+
395
+ // TODO add 2nd token tx if processingFeeAmount > 0
396
+ }
361
397
 
362
- // TODO add 2nd token tx if processingFeeAmount > 0
398
+ // callback to policy holder if applicable
399
+ _policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
363
400
  }
364
-
365
- // callback to policy holder if applicable
366
- _policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
367
401
  }
368
402
 
369
403
  // internal functions
@@ -382,8 +416,9 @@ contract ClaimService is
382
416
  {
383
417
  (
384
418
  ,
385
- IInstance instance,
419
+ ,
386
420
  InstanceReader instanceReader,
421
+ InstanceStore instanceStore,
387
422
  IPolicy.PolicyInfo memory policyInfo
388
423
  ) = _verifyCallerWithPolicy(policyNftId);
389
424
 
@@ -398,7 +433,11 @@ contract ClaimService is
398
433
  // create payout info with instance
399
434
  uint24 payoutNo = claimInfo.payoutsCount + 1;
400
435
  payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
401
- instance.getInstanceStore().createPayout(
436
+ if (beneficiary == address(0)) {
437
+ beneficiary = getRegistry().ownerOf(policyNftId);
438
+ }
439
+
440
+ instanceStore.createPayout(
402
441
  policyNftId,
403
442
  payoutId,
404
443
  IPolicy.PayoutInfo({
@@ -411,13 +450,13 @@ contract ClaimService is
411
450
  // update and save claim info with instance
412
451
  claimInfo.payoutsCount += 1;
413
452
  claimInfo.openPayoutsCount += 1;
414
- instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
453
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
415
454
 
416
455
  // update and save policy info with instance
417
456
  policyInfo.payoutAmount.add(amount);
418
- instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
457
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
419
458
 
420
- emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
459
+ emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
421
460
  }
422
461
 
423
462
 
@@ -469,11 +508,13 @@ contract ClaimService is
469
508
  NftId productNftId,
470
509
  IInstance instance,
471
510
  InstanceReader instanceReader,
511
+ InstanceStore instanceStore,
472
512
  IPolicy.PolicyInfo memory policyInfo
473
513
  )
474
514
  {
475
515
  (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
476
516
  instanceReader = instance.getInstanceReader();
517
+ instanceStore = instance.getInstanceStore();
477
518
 
478
519
  // check caller(product) policy match
479
520
  policyInfo = instanceReader.getPolicyInfo(policyNftId);
@@ -26,8 +26,9 @@ interface IClaimService is
26
26
  event LogClaimServiceClaimRevoked(NftId policyNftId, ClaimId claimId);
27
27
  event LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
28
28
 
29
- event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount);
29
+ event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary);
30
30
  event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount, Amount processingFeeAmount);
31
+ error ErrorClaimServiceBeneficiarySet(NftId policyNftId, PayoutId payoutId, address beneficiary);
31
32
 
32
33
  error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
33
34
  error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {IService} from "../shared/IService.sol";
5
5
 
6
6
  import {Amount} from "../type/Amount.sol";
7
+ import {IInstance} from "../instance/IInstance.sol";
7
8
  import {NftId} from "../type/NftId.sol";
8
9
  import {StateId} from "../type/StateId.sol";
9
10
  import {Timestamp} from "../type/Timestamp.sol";
@@ -48,7 +49,9 @@ interface IPolicyService is IService {
48
49
  function createPolicy(
49
50
  NftId applicationNftId,
50
51
  Timestamp activateAt
51
- ) external;
52
+ )
53
+ external
54
+ returns (Amount premiumAmount);
52
55
 
53
56
  /// @dev declines an application represented by {policyNftId}
54
57
  /// an application can only be declined in applied state
@@ -69,6 +72,8 @@ interface IPolicyService is IService {
69
72
  /// @return expiredAt the effective expiry date
70
73
  function expire(NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
71
74
 
75
+ function expirePolicy(IInstance instance, NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
76
+
72
77
  /// @dev closes the specified policy and sets the closed data in the policy metadata
73
78
  /// a policy can only be closed when it has been expired. in addition, it must not have any open claims
74
79
  /// this function can only be called by a product. the policy needs to match with the calling product
@@ -14,15 +14,15 @@ interface IPricingService is IService
14
14
  {
15
15
 
16
16
  error ErrorPricingServiceTargetWalletAmountsMismatch();
17
- error ErrorIPricingServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
18
- error ErrorIPricingServiceFeeCalculationMismatch(
19
- Amount distributionFeeFixAmount,
20
- Amount distributionFeeVarAmount,
21
- Amount distributionOwnerFeeFixAmount,
22
- Amount distributionOwnerFeeVarAmount,
23
- Amount commissionAmount,
24
- Amount discountAmount
25
- );
17
+ error ErrorPricingServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
18
+ error ErrorPricingServiceFeeCalculationMismatch(
19
+ Amount distributionFeeFixAmount,
20
+ Amount distributionFeeVarAmount,
21
+ Amount distributionOwnerFeeFixAmount,
22
+ Amount distributionOwnerFeeVarAmount,
23
+ Amount commissionAmount,
24
+ Amount discountAmount
25
+ );
26
26
 
27
27
  function calculatePremium(
28
28
  NftId productNftId,
@@ -6,6 +6,7 @@ import {ClaimId} from "../type/ClaimId.sol";
6
6
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
7
7
  import {IComponents} from "../instance/module/IComponents.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
+ import {ObjectType} from "../type/ObjectType.sol";
9
10
  import {ReferralId} from "../type/Referral.sol";
10
11
  import {RiskId} from "../type/RiskId.sol";
11
12
  import {Seconds} from "../type/Seconds.sol";
@@ -14,6 +15,11 @@ interface IProductComponent is
14
15
  IInstanceLinkedComponent
15
16
  {
16
17
 
18
+ // @dev register a new component for this product cluster.
19
+ function registerComponent(address component)
20
+ external
21
+ returns (NftId componentNftId);
22
+
17
23
  /// @dev Callback function to inform product compnent about arrival of funding for a claim.
18
24
  /// The callback is called by the pool service after the corresponding pool triggers this function.
19
25
  /// The callback is only called when the product's property isProcessingFundedClaims is set.
@@ -15,7 +15,7 @@ import {Amount, AmountLib} from "../type/Amount.sol";
15
15
  import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
16
16
  import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
17
17
  import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
18
- import {NftId, NftIdLib} from "../type/NftId.sol";
18
+ import {NftId} from "../type/NftId.sol";
19
19
  import {ReferralId} from "../type/Referral.sol";
20
20
  import {StateId} from "../type/StateId.sol";
21
21
  import {VersionPart} from "../type/Version.sol";
@@ -38,13 +38,7 @@ contract PolicyService is
38
38
  ComponentVerifyingService,
39
39
  IPolicyService
40
40
  {
41
- using NftIdLib for NftId;
42
- using TimestampLib for Timestamp;
43
-
44
- IApplicationService internal _applicationService;
45
41
  IComponentService internal _componentService;
46
- IBundleService internal _bundleService;
47
- IClaimService internal _claimService;
48
42
  IDistributionService internal _distributionService;
49
43
  IPoolService internal _poolService;
50
44
  IPricingService internal _pricingService;
@@ -65,10 +59,7 @@ contract PolicyService is
65
59
  _initializeService(registryAddress, authority, owner);
66
60
 
67
61
  VersionPart majorVersion = getVersion().toMajorPart();
68
- _applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
69
- _bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
70
62
  _componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
71
- _claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
72
63
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
73
64
  _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
74
65
  _pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
@@ -84,6 +75,8 @@ contract PolicyService is
84
75
  virtual
85
76
  nonReentrant()
86
77
  {
78
+ _checkNftType(applicationNftId, POLICY());
79
+
87
80
  (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
88
81
  InstanceReader instanceReader = instance.getInstanceReader();
89
82
 
@@ -119,7 +112,10 @@ contract PolicyService is
119
112
  external
120
113
  virtual
121
114
  nonReentrant()
115
+ returns (Amount premiumAmount)
122
116
  {
117
+ _checkNftType(applicationNftId, POLICY());
118
+
123
119
  // check caller is registered product
124
120
  (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
125
121
  InstanceReader instanceReader = instance.getInstanceReader();
@@ -175,19 +171,22 @@ contract PolicyService is
175
171
  applicationNftId,
176
172
  premium);
177
173
 
174
+ premiumAmount = premium.fullPremiumAmount;
175
+
178
176
  // update referral counter
179
177
  {
180
178
  IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
181
- _distributionService.processReferral(
182
- productInfo.distributionNftId,
183
- applicationInfo.referralId);
179
+
180
+ if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
181
+ _distributionService.processReferral(
182
+ productInfo.distributionNftId,
183
+ applicationInfo.referralId);
184
+ }
184
185
  }
185
186
 
186
187
  // log policy creation before interactions with token and policy holder
187
188
  emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
188
189
 
189
- // TODO add calling pool contract if it needs to validate application
190
-
191
190
  // callback to policy holder if applicable
192
191
  _policyHolderPolicyActivated(applicationNftId, activateAt);
193
192
  }
@@ -202,6 +201,8 @@ contract PolicyService is
202
201
  virtual
203
202
  nonReentrant()
204
203
  {
204
+ _checkNftType(policyNftId, POLICY());
205
+
205
206
  // check caller is registered product
206
207
  (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
207
208
  InstanceReader instanceReader = instance.getInstanceReader();
@@ -246,6 +247,8 @@ contract PolicyService is
246
247
  virtual
247
248
  nonReentrant()
248
249
  {
250
+ _checkNftType(policyNftId, POLICY());
251
+
249
252
  // check caller is registered product
250
253
  (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
251
254
  InstanceReader instanceReader = instance.getInstanceReader();
@@ -273,11 +276,12 @@ contract PolicyService is
273
276
  nonReentrant()
274
277
  returns (Timestamp expiredAt)
275
278
  {
276
- (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
277
- InstanceReader instanceReader = instance.getInstanceReader();
279
+ _checkNftType(policyNftId, POLICY());
278
280
 
281
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
282
+
279
283
  // check policy matches with calling product
280
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
284
+ IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
281
285
  if(policyInfo.productNftId != productNftId) {
282
286
  revert ErrorPolicyServicePolicyProductMismatch(
283
287
  policyNftId,
@@ -285,8 +289,46 @@ contract PolicyService is
285
289
  productNftId);
286
290
  }
287
291
 
292
+ return _expire(
293
+ instance,
294
+ policyNftId,
295
+ expireAt
296
+ );
297
+ }
298
+
299
+ /// @inheritdoc IPolicyService
300
+ function expirePolicy(
301
+ IInstance instance,
302
+ NftId policyNftId,
303
+ Timestamp expireAt
304
+ )
305
+ external
306
+ virtual
307
+ nonReentrant()
308
+ returns (Timestamp expiredAt)
309
+ {
310
+ _checkNftType(policyNftId, POLICY());
311
+
312
+ return _expire(
313
+ instance,
314
+ policyNftId,
315
+ expireAt
316
+ );
317
+ }
318
+
319
+ function _expire(
320
+ IInstance instance,
321
+ NftId policyNftId,
322
+ Timestamp expireAt
323
+ )
324
+ internal
325
+ returns (Timestamp expiredAt)
326
+ {
327
+ InstanceReader instanceReader = instance.getInstanceReader();
328
+
288
329
  // check policy is active
289
330
  StateId policyState = instanceReader.getPolicyState(policyNftId);
331
+ IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
290
332
  if (!_policyHasBeenActivated(policyState, policyInfo)) {
291
333
  revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
292
334
  }
@@ -326,6 +368,8 @@ contract PolicyService is
326
368
  virtual
327
369
  nonReentrant()
328
370
  {
371
+ _checkNftType(policyNftId, POLICY());
372
+
329
373
  (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
330
374
  InstanceReader instanceReader = instance.getInstanceReader();
331
375
 
@@ -388,7 +432,7 @@ contract PolicyService is
388
432
  address policyHolder = getRegistry().ownerOf(applicationNftId);
389
433
 
390
434
  _checkPremiumBalanceAndAllowance(
391
- tokenHandler.getToken(),
435
+ tokenHandler.TOKEN(),
392
436
  address(tokenHandler),
393
437
  policyHolder,
394
438
  premium.premiumAmount);
@@ -453,10 +497,12 @@ contract PolicyService is
453
497
  premium.productFeeVarAmount + premium.productFeeFixAmount);
454
498
 
455
499
  // update distribution fees and distributor commission and pool fees
456
- _distributionService.processSale(
457
- distributionNftId,
458
- referralId,
459
- premium);
500
+ if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
501
+ _distributionService.processSale(
502
+ distributionNftId,
503
+ referralId,
504
+ premium);
505
+ }
460
506
 
461
507
  // update pool and bundle fees
462
508
  _poolService.processSale(
@@ -626,10 +672,13 @@ contract PolicyService is
626
672
  )
627
673
  {
628
674
  IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
629
- distributionNftId = productInfo.distributionNftId;
630
- distributionWallet = instanceReader.getComponentInfo(distributionNftId).wallet;
631
- poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).wallet;
632
- productWallet = instanceReader.getComponentInfo(productNftId).wallet;
675
+ productWallet = instanceReader.getComponentInfo(productNftId).tokenHandler.getWallet();
676
+ poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).tokenHandler.getWallet();
677
+
678
+ if (productInfo.hasDistribution) {
679
+ distributionNftId = productInfo.distributionNftId;
680
+ distributionWallet = instanceReader.getComponentInfo(distributionNftId).tokenHandler.getWallet();
681
+ }
633
682
  }
634
683
 
635
684