@etherisc/gif-next 0.0.2-df73b56-462 → 0.0.2-e016345-525

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 (453) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +944 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +746 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +711 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +96 -37
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  15. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -13
  18. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  22. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +159 -209
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +99 -125
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +175 -86
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +104 -60
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +87 -108
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +52 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1441 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1991 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +187 -169
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +131 -157
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +262 -202
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +562 -252
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +116 -48
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +53 -101
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +149 -60
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +186 -125
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -85
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +514 -88
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +113 -148
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +72 -40
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +185 -124
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  97. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +119 -169
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  108. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +82 -103
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +95 -121
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +142 -79
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +92 -36
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +95 -149
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +143 -150
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +86 -66
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +48 -33
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +82 -142
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +272 -185
  133. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  134. package/artifacts/contracts/pool/Pool.sol/Pool.json +95 -160
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +408 -263
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +109 -41
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +114 -45
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -36
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +156 -141
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +183 -90
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +102 -58
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +63 -7
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +64 -8
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +96 -19
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +139 -119
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +215 -125
  165. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +102 -54
  167. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  168. package/artifacts/contracts/product/PricingService.sol/PricingService.json +165 -107
  169. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +85 -45
  171. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  172. package/artifacts/contracts/product/Product.sol/Product.json +152 -137
  173. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  174. package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -26
  175. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -30
  177. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  178. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  179. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  180. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +91 -15
  181. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  182. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  183. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  184. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  185. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  186. package/artifacts/contracts/registry/Registry.sol/Registry.json +135 -51
  187. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +203 -162
  189. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +89 -172
  191. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +65 -29
  193. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  195. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +123 -225
  197. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  199. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  200. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  201. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Component.sol/Component.json +72 -80
  203. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +478 -477
  205. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +96 -72
  207. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +42 -0
  209. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
  211. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  212. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  213. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  215. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +61 -64
  217. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +425 -261
  219. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +82 -103
  221. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  223. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  224. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  225. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  227. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +1 -1
  229. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  231. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  234. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  235. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  236. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +94 -120
  237. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  238. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  239. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  240. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  241. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  242. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  243. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
  245. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  246. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +3 -3
  247. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +66 -8
  249. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  250. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  251. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  252. package/artifacts/contracts/shared/Service.sol/Service.json +42 -0
  253. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  254. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  255. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  257. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  258. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  259. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  260. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +79 -100
  261. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  262. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  263. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  264. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  265. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  266. package/artifacts/contracts/staking/Staking.sol/Staking.json +158 -170
  267. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  269. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +81 -51
  271. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  273. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +82 -53
  275. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +69 -33
  277. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
  279. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  280. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  281. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  282. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  284. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  287. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  289. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  291. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  293. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  294. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  295. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  297. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  298. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  299. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  301. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  303. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  305. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  307. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +99 -5
  309. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  311. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  316. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  320. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  322. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  324. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  325. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  326. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
  327. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  328. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  329. package/contracts/accounting/AccountingService.sol +244 -0
  330. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  331. package/contracts/accounting/IAccountingService.sol +42 -0
  332. package/contracts/authorization/AccessAdmin.sol +86 -62
  333. package/contracts/authorization/Authorization.sol +111 -39
  334. package/contracts/authorization/IAccess.sol +1 -0
  335. package/contracts/authorization/IAccessAdmin.sol +4 -2
  336. package/contracts/authorization/IAuthorization.sol +13 -7
  337. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  338. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  339. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  340. package/contracts/distribution/BasicDistribution.sol +8 -7
  341. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  342. package/contracts/distribution/Distribution.sol +32 -40
  343. package/contracts/distribution/DistributionService.sol +80 -59
  344. package/contracts/distribution/IDistributionComponent.sol +1 -1
  345. package/contracts/distribution/IDistributionService.sol +5 -6
  346. package/contracts/examples/fire/DamageLevel.sol +59 -0
  347. package/contracts/examples/fire/FirePool.sol +90 -0
  348. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  349. package/contracts/examples/fire/FireProduct.sol +436 -0
  350. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  351. package/contracts/examples/fire/FireUSD.sol +26 -0
  352. package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
  353. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  354. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  355. package/contracts/examples/unpermissioned/SimplePool.sol +37 -6
  356. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  357. package/contracts/examples/unpermissioned/SimpleProduct.sol +24 -23
  358. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  359. package/contracts/instance/BundleSet.sol +38 -34
  360. package/contracts/instance/IInstance.sol +11 -3
  361. package/contracts/instance/IInstanceService.sol +7 -29
  362. package/contracts/instance/Instance.sol +36 -26
  363. package/contracts/instance/InstanceAdmin.sol +38 -38
  364. package/contracts/instance/InstanceAuthorizationV3.sol +50 -32
  365. package/contracts/instance/InstanceReader.sol +168 -19
  366. package/contracts/instance/InstanceService.sol +51 -126
  367. package/contracts/instance/RiskSet.sol +119 -0
  368. package/contracts/instance/base/ObjectSet.sol +24 -25
  369. package/contracts/instance/module/IComponents.sol +7 -5
  370. package/contracts/instance/module/IPolicy.sol +4 -3
  371. package/contracts/instance/module/IRisk.sol +1 -0
  372. package/contracts/oracle/BasicOracle.sol +0 -1
  373. package/contracts/oracle/IOracleService.sol +2 -1
  374. package/contracts/oracle/Oracle.sol +4 -15
  375. package/contracts/oracle/OracleService.sol +104 -76
  376. package/contracts/pool/BasicPool.sol +33 -24
  377. package/contracts/pool/BasicPoolAuthorization.sol +12 -2
  378. package/contracts/pool/BundleService.sol +68 -81
  379. package/contracts/pool/IBundleService.sol +2 -14
  380. package/contracts/pool/IPoolComponent.sol +1 -7
  381. package/contracts/pool/IPoolService.sol +30 -37
  382. package/contracts/pool/Pool.sol +123 -120
  383. package/contracts/pool/PoolService.sol +261 -154
  384. package/contracts/product/ApplicationService.sol +28 -16
  385. package/contracts/product/BasicProduct.sol +8 -12
  386. package/contracts/product/BasicProductAuthorization.sol +1 -3
  387. package/contracts/product/ClaimService.sol +110 -69
  388. package/contracts/product/IApplicationService.sol +5 -2
  389. package/contracts/product/IClaimService.sol +3 -2
  390. package/contracts/product/IPolicyService.sol +18 -5
  391. package/contracts/product/IPricingService.sol +9 -9
  392. package/contracts/product/IProductComponent.sol +23 -3
  393. package/contracts/product/PolicyService.sol +277 -187
  394. package/contracts/product/PricingService.sol +8 -8
  395. package/contracts/product/Product.sol +76 -75
  396. package/contracts/product/RiskService.sol +14 -3
  397. package/contracts/registry/ChainNft.sol +6 -9
  398. package/contracts/registry/IRegistry.sol +8 -3
  399. package/contracts/registry/IRegistryService.sol +5 -12
  400. package/contracts/registry/ITransferInterceptor.sol +1 -2
  401. package/contracts/registry/Registry.sol +29 -6
  402. package/contracts/registry/RegistryAdmin.sol +28 -35
  403. package/contracts/registry/RegistryService.sol +33 -44
  404. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  405. package/contracts/registry/ReleaseRegistry.sol +202 -208
  406. package/contracts/registry/ServiceAuthorizationV3.sol +28 -52
  407. package/contracts/shared/Component.sol +56 -105
  408. package/contracts/shared/ComponentService.sol +376 -324
  409. package/contracts/shared/ComponentVerifyingService.sol +27 -16
  410. package/contracts/shared/ContractLib.sol +196 -10
  411. package/contracts/shared/IComponent.sol +6 -14
  412. package/contracts/shared/IComponentService.sol +45 -37
  413. package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
  414. package/contracts/shared/ILifecycle.sol +3 -1
  415. package/contracts/shared/INftOwnable.sol +2 -0
  416. package/contracts/shared/IRegisterable.sol +11 -0
  417. package/contracts/shared/InstanceLinkedComponent.sol +68 -43
  418. package/contracts/shared/KeyValueStore.sol +1 -1
  419. package/contracts/shared/Lifecycle.sol +15 -4
  420. package/contracts/shared/NftOwnable.sol +23 -3
  421. package/contracts/shared/PolicyHolder.sol +4 -0
  422. package/contracts/shared/Registerable.sol +15 -7
  423. package/contracts/shared/RegistryLinked.sol +6 -12
  424. package/contracts/shared/Service.sol +4 -7
  425. package/contracts/shared/TokenHandler.sol +316 -66
  426. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  427. package/contracts/staking/IStaking.sol +9 -4
  428. package/contracts/staking/IStakingService.sol +0 -3
  429. package/contracts/staking/Staking.sol +41 -24
  430. package/contracts/staking/StakingReader.sol +12 -5
  431. package/contracts/staking/StakingService.sol +56 -23
  432. package/contracts/type/Amount.sol +15 -0
  433. package/contracts/type/ClaimId.sol +6 -1
  434. package/contracts/type/Key32.sol +2 -2
  435. package/contracts/type/Key32Set.sol +62 -0
  436. package/contracts/type/NftId.sol +7 -0
  437. package/contracts/type/ObjectType.sol +11 -0
  438. package/contracts/type/PayoutId.sol +10 -10
  439. package/contracts/type/RiskId.sol +30 -4
  440. package/contracts/type/RoleId.sol +0 -12
  441. package/contracts/type/StateId.sol +14 -1
  442. package/contracts/type/UFixed.sol +4 -0
  443. package/contracts/upgradeability/ProxyManager.sol +2 -1
  444. package/package.json +4 -3
  445. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  446. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  447. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  448. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  449. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  450. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  451. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  452. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  453. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -3,48 +3,40 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
- import {IRegistry} from "../registry/IRegistry.sol";
7
- import {Product} from "./Product.sol";
6
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
7
+ import {IComponentService} from "../shared/IComponentService.sol";
8
8
  import {IComponents} from "../instance/module/IComponents.sol";
9
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
10
+ import {InstanceReader} from "../instance/InstanceReader.sol";
11
+ import {InstanceStore} from "../instance/InstanceStore.sol";
9
12
  import {IInstance} from "../instance/IInstance.sol";
10
13
  import {IPolicy} from "../instance/module/IPolicy.sol";
14
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
15
+ import {IPolicyService} from "./IPolicyService.sol";
16
+ import {IPoolService} from "../pool/IPoolService.sol";
17
+ import {IPricingService} from "./IPricingService.sol";
18
+ import {IRegistry} from "../registry/IRegistry.sol";
11
19
 
12
- import {TokenHandler} from "../shared/TokenHandler.sol";
13
-
14
- import {Amount, AmountLib} from "../type/Amount.sol";
15
- import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
16
- import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
20
+ import {Amount} from "../type/Amount.sol";
17
21
  import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
18
- import {NftId, NftIdLib} from "../type/NftId.sol";
22
+ import {ContractLib} from "../shared/ContractLib.sol";
23
+ import {NftId} from "../type/NftId.sol";
24
+ import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, PRICE} from "../type/ObjectType.sol";
19
25
  import {ReferralId} from "../type/Referral.sol";
26
+ import {RiskId} from "../type/RiskId.sol";
27
+ import {Service} from "../shared/Service.sol";
20
28
  import {StateId} from "../type/StateId.sol";
29
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
30
+ import {TokenHandler} from "../shared/TokenHandler.sol";
21
31
  import {VersionPart} from "../type/Version.sol";
22
32
 
23
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
24
- import {ContractLib} from "../shared/ContractLib.sol";
25
- import {IApplicationService} from "./IApplicationService.sol";
26
- import {IBundleService} from "../pool/IBundleService.sol";
27
- import {IClaimService} from "./IClaimService.sol";
28
- import {IComponentService} from "../shared/IComponentService.sol";
29
- import {IDistributionService} from "../distribution/IDistributionService.sol";
30
- import {InstanceReader} from "../instance/InstanceReader.sol";
31
- import {InstanceStore} from "../instance/InstanceStore.sol";
32
- import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
33
- import {IPolicyService} from "./IPolicyService.sol";
34
- import {IPoolService} from "../pool/IPoolService.sol";
35
- import {IPricingService} from "./IPricingService.sol";
36
33
 
37
34
  contract PolicyService is
38
- ComponentVerifyingService,
35
+ Service,
39
36
  IPolicyService
40
37
  {
41
- using NftIdLib for NftId;
42
- using TimestampLib for Timestamp;
43
-
44
- IApplicationService internal _applicationService;
38
+ IAccountingService private _accountingService;
45
39
  IComponentService internal _componentService;
46
- IBundleService internal _bundleService;
47
- IClaimService internal _claimService;
48
40
  IDistributionService internal _distributionService;
49
41
  IPoolService internal _poolService;
50
42
  IPricingService internal _pricingService;
@@ -65,10 +57,8 @@ contract PolicyService is
65
57
  _initializeService(registryAddress, authority, owner);
66
58
 
67
59
  VersionPart majorVersion = getVersion().toMajorPart();
68
- _applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
69
- _bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
60
+ _accountingService = IAccountingService(getRegistry().getServiceAddress(ACCOUNTING(), majorVersion));
70
61
  _componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
71
- _claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
72
62
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
73
63
  _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
74
64
  _pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
@@ -84,24 +74,15 @@ contract PolicyService is
84
74
  virtual
85
75
  nonReentrant()
86
76
  {
87
- (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
88
- InstanceReader instanceReader = instance.getInstanceReader();
77
+ // checks
78
+ (IInstance instance,,) = _getAndVerifyCallerForPolicy(applicationNftId);
89
79
 
90
80
  // check policy is in state applied
91
- if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
81
+ if (instance.getInstanceReader().getPolicyState(applicationNftId) != APPLIED()) {
92
82
  revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
93
83
  }
94
84
 
95
- // check policy matches with calling product
96
- IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
97
- if(applicationInfo.productNftId != productNftId) {
98
- revert ErrorPolicyServicePolicyProductMismatch(
99
- applicationNftId,
100
- applicationInfo.productNftId,
101
- productNftId);
102
- }
103
-
104
-
85
+ // effects
105
86
  // store updated policy info
106
87
  instance.getInstanceStore().updatePolicyState(
107
88
  applicationNftId,
@@ -119,25 +100,22 @@ contract PolicyService is
119
100
  external
120
101
  virtual
121
102
  nonReentrant()
103
+ returns (Amount premiumAmount)
122
104
  {
123
- // check caller is registered product
124
- (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
125
- InstanceReader instanceReader = instance.getInstanceReader();
105
+ // checks
106
+ (
107
+ IInstance instance,
108
+ NftId productNftId,
109
+ IPolicy.PolicyInfo memory applicationInfo
110
+ ) = _getAndVerifyCallerForPolicy(applicationNftId);
126
111
 
127
112
  // check policy is in state applied
113
+ InstanceReader instanceReader = instance.getInstanceReader();
128
114
  if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
129
115
  revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
130
116
  }
131
117
 
132
- // check policy matches with calling product
133
- IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
134
- if(applicationInfo.productNftId != productNftId) {
135
- revert ErrorPolicyServicePolicyProductMismatch(
136
- applicationNftId,
137
- applicationInfo.productNftId,
138
- productNftId);
139
- }
140
-
118
+ // effects
141
119
  // actual collateralizaion
142
120
  _poolService.lockCollateral(
143
121
  instance,
@@ -148,11 +126,8 @@ contract PolicyService is
148
126
  applicationInfo.sumInsuredAmount);
149
127
 
150
128
  // optional activation of policy
151
- if(activateAt > zeroTimestamp()) {
152
- applicationInfo = _activate(
153
- applicationNftId,
154
- applicationInfo,
155
- activateAt);
129
+ if(activateAt > TimestampLib.zero()) {
130
+ applicationInfo = _activate(applicationNftId, applicationInfo, activateAt);
156
131
  }
157
132
 
158
133
  // update policy and set state to collateralized
@@ -162,32 +137,42 @@ contract PolicyService is
162
137
  COLLATERALIZED());
163
138
 
164
139
  // calculate and store premium
140
+ RiskId riskId = applicationInfo.riskId;
141
+ NftId bundleNftId = applicationInfo.bundleNftId;
142
+
165
143
  IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
166
144
  productNftId,
167
- applicationInfo.riskId,
145
+ riskId,
168
146
  applicationInfo.sumInsuredAmount,
169
147
  applicationInfo.lifetime,
170
148
  applicationInfo.applicationData,
171
- applicationInfo.bundleNftId,
149
+ bundleNftId,
172
150
  applicationInfo.referralId);
173
151
 
152
+ premiumAmount = premium.fullPremiumAmount;
174
153
  instance.getInstanceStore().createPremium(
175
154
  applicationNftId,
176
155
  premium);
177
156
 
178
- // update referral counter
157
+ // update referral counter if product has linked distributino component
179
158
  {
180
159
  IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
181
- _distributionService.processReferral(
182
- productInfo.distributionNftId,
183
- applicationInfo.referralId);
160
+ if (productInfo.hasDistribution) {
161
+ _distributionService.processReferral(
162
+ productInfo.distributionNftId,
163
+ applicationInfo.referralId);
164
+ }
184
165
  }
185
166
 
167
+ // link policy to risk and bundle
168
+ NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
169
+ instance.getRiskSet().linkPolicy(productNftId, riskId, applicationNftId);
170
+ instance.getBundleSet().linkPolicy(poolNftId, bundleNftId, applicationNftId);
171
+
186
172
  // log policy creation before interactions with token and policy holder
187
173
  emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
188
174
 
189
- // TODO add calling pool contract if it needs to validate application
190
-
175
+ // interactions
191
176
  // callback to policy holder if applicable
192
177
  _policyHolderPolicyActivated(applicationNftId, activateAt);
193
178
  }
@@ -202,28 +187,40 @@ contract PolicyService is
202
187
  virtual
203
188
  nonReentrant()
204
189
  {
205
- // check caller is registered product
206
- (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
207
- InstanceReader instanceReader = instance.getInstanceReader();
208
- StateId stateId = instanceReader.getPolicyState(policyNftId);
190
+ // checks
191
+ (
192
+ IInstance instance,
193
+ NftId productNftId,
194
+ IPolicy.PolicyInfo memory policyInfo
195
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
209
196
 
210
- // check policy is in state collateralized or active
211
- if (!(stateId == COLLATERALIZED())) {
197
+ // check policy is in state collateralized
198
+ InstanceReader instanceReader = instance.getInstanceReader();
199
+ if (instanceReader.getPolicyState(policyNftId) != COLLATERALIZED()) {
212
200
  revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
213
201
  }
214
202
 
215
- // check if premium is already collected
203
+ // check if premium has already been collected
216
204
  if (instanceReader.getPremiumInfoState(policyNftId) == PAID()) {
217
205
  revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
218
206
  }
219
207
 
220
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
221
- IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
222
-
223
- _processPremium(
224
- instance,
225
- policyNftId,
226
- policyInfo,
208
+ // check funds and allowance of policy holder
209
+ IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
210
+ TokenHandler tokenHandler = _getTokenHandler(instanceReader, policyInfo.productNftId);
211
+ _checkPremiumBalanceAndAllowance(
212
+ tokenHandler.TOKEN(),
213
+ address(tokenHandler),
214
+ getRegistry().ownerOf(policyNftId),
215
+ premium.premiumAmount);
216
+
217
+ // effects
218
+ _processSale(
219
+ instanceReader,
220
+ instance.getInstanceStore(),
221
+ productNftId,
222
+ policyInfo.bundleNftId,
223
+ policyInfo.referralId,
227
224
  premium);
228
225
 
229
226
  // optionally activate policy
@@ -237,27 +234,31 @@ contract PolicyService is
237
234
  // log premium collection before interactions with token
238
235
  emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
239
236
 
237
+ // interactions
240
238
  _transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
241
239
  }
242
240
 
241
+
243
242
  /// @inheritdoc IPolicyService
244
243
  function activate(NftId policyNftId, Timestamp activateAt)
245
244
  external
246
245
  virtual
247
246
  nonReentrant()
248
- {
249
- // check caller is registered product
250
- (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
251
- InstanceReader instanceReader = instance.getInstanceReader();
247
+ {
248
+ // checks
249
+ (
250
+ IInstance instance,,
251
+ IPolicy.PolicyInfo memory policyInfo
252
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
252
253
 
253
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
254
+ // effects
254
255
  policyInfo = _activate(policyNftId, policyInfo, activateAt);
255
-
256
256
  instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
257
257
 
258
258
  // log policy activation before interactions with policy holder
259
259
  emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
260
260
 
261
+ // interactions
261
262
  // callback to policy holder if applicable
262
263
  _policyHolderPolicyActivated(policyNftId, activateAt);
263
264
  }
@@ -273,52 +274,49 @@ contract PolicyService is
273
274
  nonReentrant()
274
275
  returns (Timestamp expiredAt)
275
276
  {
276
- (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
277
- InstanceReader instanceReader = instance.getInstanceReader();
278
-
279
- // check policy matches with calling product
280
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
281
- if(policyInfo.productNftId != productNftId) {
282
- revert ErrorPolicyServicePolicyProductMismatch(
283
- policyNftId,
284
- policyInfo.productNftId,
285
- productNftId);
286
- }
287
-
288
- // check policy is active
289
- StateId policyState = instanceReader.getPolicyState(policyNftId);
290
- if (!_policyHasBeenActivated(policyState, policyInfo)) {
291
- revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
292
- }
293
-
294
- // set return value to provided timestamp
295
- expiredAt = expireAt;
296
-
297
- // update expiredAt to current block timestamp if not set
298
- if (expiredAt.eqz()) {
299
- expiredAt = TimestampLib.blockTimestamp();
300
- }
277
+ // checks
278
+ (
279
+ IInstance instance,,
280
+ IPolicy.PolicyInfo memory policyInfo
281
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
301
282
 
302
- // check expiredAt represents a valid expiry time
303
- if (expiredAt >= policyInfo.expiredAt) {
304
- revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
305
- }
306
- if (expiredAt < TimestampLib.blockTimestamp()) {
307
- revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
308
- }
283
+ // more checks, effects + interactions
284
+ return _expire(
285
+ instance,
286
+ policyNftId,
287
+ policyInfo,
288
+ expireAt
289
+ );
290
+ }
309
291
 
310
- // update policyInfo with new expiredAt timestamp
311
- Timestamp originalExpiredAt = policyInfo.expiredAt;
312
- policyInfo.expiredAt = expiredAt;
313
- instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
314
292
 
315
- emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
293
+ /// @inheritdoc IPolicyService
294
+ function expirePolicy(
295
+ IInstance instance,
296
+ NftId policyNftId,
297
+ Timestamp expireAt
298
+ )
299
+ external
300
+ virtual
301
+ nonReentrant()
302
+ returns (Timestamp expiredAt)
303
+ {
304
+ // checks
305
+ _checkNftType(policyNftId, POLICY());
306
+ IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(
307
+ policyNftId);
316
308
 
317
- // callback to policy holder if applicable
318
- _policyHolderPolicyExpired(policyNftId, expiredAt);
309
+ // more checks, effects + interactions
310
+ return _expire(
311
+ instance,
312
+ policyNftId,
313
+ policyInfo,
314
+ expireAt
315
+ );
319
316
  }
320
317
 
321
318
 
319
+ /// @inheritdoc IPolicyService
322
320
  function close(
323
321
  NftId policyNftId
324
322
  )
@@ -326,36 +324,32 @@ contract PolicyService is
326
324
  virtual
327
325
  nonReentrant()
328
326
  {
329
- (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
327
+ // checks
328
+ (
329
+ IInstance instance,
330
+ NftId productNftId,
331
+ IPolicy.PolicyInfo memory policyInfo
332
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
330
333
  InstanceReader instanceReader = instance.getInstanceReader();
331
334
 
332
- // check that policy has been activated
333
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
334
- StateId policyState = instanceReader.getPolicyState(policyNftId);
335
- if (!_policyHasBeenActivated(policyState, policyInfo)) {
336
- revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
337
- }
338
-
339
- // check that policy has not already been closed
340
- if (policyInfo.closedAt.gtz()) {
341
- revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
335
+ // check policy is in a closeable state
336
+ if (!policyIsCloseable(instanceReader, policyNftId)) {
337
+ revert ErrorPolicyServicePolicyNotCloseable(policyNftId);
342
338
  }
343
339
 
344
- // check that policy does not have any open claims
345
- if (policyInfo.openClaimsCount > 0) {
346
- revert ErrorPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
347
- }
340
+ // check that policy has been activated
341
+ RiskId riskId = policyInfo.riskId;
342
+ NftId bundleNftId = policyInfo.bundleNftId;
348
343
 
349
- // TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
350
- // TODO consider to remove requirement for fully paid premiums altogether
351
- if (! instanceReader.getPremiumInfoState(policyNftId).eq(PAID())) {
344
+ if (instanceReader.getPremiumInfoState(policyNftId) != PAID()) {
352
345
  revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
353
346
  }
354
347
 
348
+ // effects
355
349
  // release (remaining) collateral that was blocked by policy
356
350
  _poolService.releaseCollateral(
357
351
  instance,
358
- address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
352
+ address(instanceReader.getComponentInfo(productNftId).token),
359
353
  policyNftId,
360
354
  policyInfo);
361
355
 
@@ -365,45 +359,111 @@ contract PolicyService is
365
359
  policyInfo.closedAt = TimestampLib.blockTimestamp();
366
360
  instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
367
361
 
362
+ // unlink policy from risk and bundle
363
+ NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
364
+ instance.getRiskSet().unlinkPolicy(productNftId, riskId, policyNftId);
365
+ instance.getBundleSet().unlinkPolicy(poolNftId, bundleNftId, policyNftId);
366
+
368
367
  emit LogPolicyServicePolicyClosed(policyNftId);
369
368
  }
370
369
 
371
370
 
372
- /// @dev calculates the premium and updates all counters in the other services
373
- function _processPremium(
371
+ function policyIsCloseable(InstanceReader instanceReader, NftId policyNftId)
372
+ public
373
+ view
374
+ returns (bool isCloseable)
375
+ {
376
+ // policy already closed
377
+ if (instanceReader.getPolicyState(policyNftId) == CLOSED()) {
378
+ return false;
379
+ }
380
+
381
+ IPolicy.PolicyInfo memory info = instanceReader.getPolicyInfo(policyNftId);
382
+
383
+ if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
384
+ if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
385
+ if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
386
+
387
+ // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
388
+ if (info.claimAmount == info.sumInsuredAmount) { return true; }
389
+
390
+ // not closeable: not yet expired
391
+ if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
392
+
393
+ // all conditions to close the policy are met
394
+ return true;
395
+ }
396
+
397
+ /// @dev shared functionality for expire() and policyExpire().
398
+ function _expire(
374
399
  IInstance instance,
375
- NftId applicationNftId,
376
- IPolicy.PolicyInfo memory applicationInfo,
377
- IPolicy.PremiumInfo memory premium
400
+ NftId policyNftId,
401
+ IPolicy.PolicyInfo memory policyInfo,
402
+ Timestamp expireAt
378
403
  )
379
404
  internal
380
- virtual
405
+ returns (Timestamp expiredAt)
381
406
  {
382
- NftId productNftId = applicationInfo.productNftId;
383
- InstanceReader instanceReader = instance.getInstanceReader();
407
+ // checks
408
+ // check policy is active
409
+ StateId policyState = instance.getInstanceReader().getPolicyState(policyNftId);
410
+ if (!_policyHasBeenActivated(policyState, policyInfo)) {
411
+ revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
412
+ }
384
413
 
385
- // check if premium balance and allowance of policy holder is sufficient
386
- {
387
- TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
388
- address policyHolder = getRegistry().ownerOf(applicationNftId);
389
-
390
- _checkPremiumBalanceAndAllowance(
391
- tokenHandler.getToken(),
392
- address(tokenHandler),
393
- policyHolder,
394
- premium.premiumAmount);
414
+ // set return value to provided timestamp
415
+ expiredAt = expireAt;
416
+
417
+ // update expiredAt to current block timestamp if not set
418
+ if (expiredAt.eqz()) {
419
+ expiredAt = TimestampLib.blockTimestamp();
395
420
  }
396
421
 
397
- // update the counters
398
- _processSale(
399
- instanceReader,
400
- instance.getInstanceStore(),
401
- productNftId,
402
- applicationInfo.bundleNftId,
403
- applicationInfo.referralId,
404
- premium);
422
+ // check expiredAt represents a valid expiry time
423
+ if (expiredAt >= policyInfo.expiredAt) {
424
+ revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
425
+ }
426
+
427
+ if (expiredAt < TimestampLib.blockTimestamp()) {
428
+ revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
429
+ }
430
+
431
+ // effects
432
+ // update policyInfo with new expiredAt timestamp
433
+ Timestamp originalExpiredAt = policyInfo.expiredAt;
434
+ policyInfo.expiredAt = expiredAt;
435
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
436
+
437
+ emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
438
+
439
+ // interactions
440
+ // callback to policy holder if applicable
441
+ _policyHolderPolicyExpired(policyNftId, expiredAt);
405
442
  }
406
443
 
444
+ // TODO cleanup
445
+ // /// @dev Calculates the premium and updates all counters in the other services.
446
+ // /// Only book keeping, no token transfers.
447
+ // function _processPremium(
448
+ // IInstance instance,
449
+ // NftId applicationNftId,
450
+ // IPolicy.PolicyInfo memory applicationInfo,
451
+ // IPolicy.PremiumInfo memory premium
452
+ // )
453
+ // internal
454
+ // virtual
455
+ // {
456
+ // // update the counters
457
+ // _processSale(
458
+ // instanceReader,
459
+ // instance.getInstanceStore(),
460
+ // productNftId,
461
+ // applicationInfo.bundleNftId,
462
+ // applicationInfo.referralId,
463
+ // premium);
464
+ // }
465
+
466
+
407
467
  function _activate(
408
468
  NftId policyNftId,
409
469
  IPolicy.PolicyInfo memory policyInfo,
@@ -442,21 +502,23 @@ contract PolicyService is
442
502
  internal
443
503
  virtual
444
504
  {
445
- (NftId distributionNftId, , , ) = _getDistributionNftAndWallets(
505
+ (NftId distributionNftId,,,) = _getDistributionNftAndWallets(
446
506
  instanceReader,
447
507
  productNftId);
448
508
 
449
509
  // update product fees, distribution and pool fees
450
- _componentService.increaseProductFees(
510
+ _accountingService.increaseProductFees(
451
511
  instanceStore,
452
512
  productNftId,
453
513
  premium.productFeeVarAmount + premium.productFeeFixAmount);
454
514
 
455
515
  // update distribution fees and distributor commission and pool fees
456
- _distributionService.processSale(
457
- distributionNftId,
458
- referralId,
459
- premium);
516
+ if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
517
+ _distributionService.processSale(
518
+ distributionNftId,
519
+ referralId,
520
+ premium);
521
+ }
460
522
 
461
523
  // update pool and bundle fees
462
524
  _poolService.processSale(
@@ -626,17 +688,45 @@ contract PolicyService is
626
688
  )
627
689
  {
628
690
  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;
691
+ productWallet = instanceReader.getComponentInfo(productNftId).tokenHandler.getWallet();
692
+ poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).tokenHandler.getWallet();
693
+
694
+ if (productInfo.hasDistribution) {
695
+ distributionNftId = productInfo.distributionNftId;
696
+ distributionWallet = instanceReader.getComponentInfo(distributionNftId).tokenHandler.getWallet();
697
+ }
633
698
  }
634
699
 
635
700
 
636
- function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
637
- IRegistry.ObjectInfo memory productInfo;
638
- (, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
639
- product = Product(productInfo.objectAddress);
701
+ function _getAndVerifyCallerForPolicy(NftId policyNftId)
702
+ internal
703
+ virtual
704
+ view
705
+ returns (
706
+ IInstance instance,
707
+ NftId productNftId,
708
+ IPolicy.PolicyInfo memory policyInfo
709
+ )
710
+ {
711
+ (
712
+ IRegistry.ObjectInfo memory productInfo,
713
+ address instanceAddress
714
+ ) = ContractLib.getAndVerifyComponent(
715
+ getRegistry(),
716
+ msg.sender, // caller contract
717
+ PRODUCT(), // caller must be product
718
+ true); // only active caller
719
+
720
+ productNftId = productInfo.nftId;
721
+ instance = IInstance(instanceAddress);
722
+ policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
723
+
724
+ if (policyInfo.productNftId != productNftId) {
725
+ revert ErrorPolicyServicePolicyProductMismatch(
726
+ policyNftId,
727
+ productNftId,
728
+ policyInfo.productNftId);
729
+ }
640
730
  }
641
731
 
642
732