@etherisc/gif-next 0.0.2-d9bed37-033 → 0.0.2-d9d5e42-801

Sign up to get free protection for your applications and to get access to all the features.
Files changed (493) hide show
  1. package/README.md +81 -7
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1046 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +814 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +640 -269
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +409 -33
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +525 -213
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +179 -19
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +114 -291
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +381 -46
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -164
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +404 -194
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +141 -67
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +32 -132
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +210 -71
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +121 -198
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +380 -45
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +287 -341
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +380 -45
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +185 -252
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +76 -155
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +239 -203
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +672 -362
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  63. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +502 -49
  67. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +302 -14
  69. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/Instance.sol/Instance.json +531 -81
  71. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1022 -326
  73. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +393 -52
  75. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1067 -479
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +324 -83
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +59 -47
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +676 -570
  83. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  85. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  87. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  94. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  96. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  101. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +66 -167
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +379 -47
  106. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +36 -71
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +50 -103
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +128 -81
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +91 -41
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +69 -137
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +380 -45
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +165 -337
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +85 -87
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +62 -142
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -118
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +182 -235
  131. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  132. package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -149
  133. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  134. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +546 -0
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +357 -368
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +125 -63
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +167 -67
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +80 -38
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +182 -215
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +380 -45
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +260 -179
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +96 -78
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +103 -10
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +48 -3
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +163 -178
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +58 -7
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +233 -194
  165. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  166. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  167. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +103 -73
  169. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingService.sol/PricingService.json +115 -119
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +69 -55
  173. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  174. package/artifacts/contracts/product/Product.sol/Product.json +176 -209
  175. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  176. package/artifacts/contracts/product/RiskService.sol/RiskService.json +143 -77
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +80 -38
  179. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  181. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +60 -12
  183. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  185. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  186. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  187. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  188. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/Registry.sol/Registry.json +98 -50
  190. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  191. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +726 -465
  192. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  193. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  194. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  196. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +56 -34
  198. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  199. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  200. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  202. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +386 -64
  204. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
  206. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
  208. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Component.sol/Component.json +49 -88
  210. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +225 -531
  212. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -75
  214. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +544 -4
  216. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  217. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  222. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +36 -57
  224. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +134 -367
  226. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +36 -71
  228. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  229. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  230. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  234. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  237. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  238. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  239. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +49 -102
  241. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  242. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  243. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  245. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  246. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  247. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  248. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  249. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  250. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  251. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  252. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  253. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  254. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  255. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +297 -111
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  259. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  260. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  261. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  262. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +241 -89
  263. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  264. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +134 -10
  265. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  266. package/artifacts/contracts/staking/Staking.sol/Staking.json +340 -203
  267. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  268. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  269. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  271. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +84 -56
  273. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +90 -61
  275. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +203 -56
  277. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +73 -39
  279. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  280. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +163 -149
  281. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  282. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +61 -51
  283. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  284. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Amount.sol/AmountLib.json +11 -11
  286. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  289. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  291. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  293. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  295. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  296. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  297. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  299. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  300. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  301. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  303. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  305. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  307. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  309. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  311. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  313. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +21 -2
  315. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  317. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  319. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  322. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  324. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
  326. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  328. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  330. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  331. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  332. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +32 -16
  333. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  334. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  335. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  336. package/contracts/accounting/AccountingService.sol +274 -0
  337. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  338. package/contracts/accounting/IAccountingService.sol +47 -0
  339. package/contracts/authorization/AccessAdmin.sol +426 -242
  340. package/contracts/authorization/AccessAdminLib.sol +396 -0
  341. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  342. package/contracts/authorization/Authorization.sol +142 -257
  343. package/contracts/authorization/IAccess.sol +25 -7
  344. package/contracts/authorization/IAccessAdmin.sol +87 -80
  345. package/contracts/authorization/IAuthorization.sol +9 -42
  346. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  347. package/contracts/authorization/ServiceAuthorization.sol +247 -33
  348. package/contracts/distribution/BasicDistribution.sol +18 -16
  349. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  350. package/contracts/distribution/Distribution.sol +41 -79
  351. package/contracts/distribution/DistributionService.sol +177 -97
  352. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  353. package/contracts/distribution/IDistributionComponent.sol +3 -10
  354. package/contracts/distribution/IDistributionService.sol +32 -24
  355. package/contracts/examples/fire/FirePool.sol +21 -8
  356. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  357. package/contracts/examples/fire/FireProduct.sol +32 -14
  358. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  359. package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
  360. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  361. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  362. package/contracts/examples/unpermissioned/SimplePool.sol +32 -6
  363. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  364. package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -27
  365. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  366. package/contracts/instance/BundleSet.sol +42 -38
  367. package/contracts/instance/IInstance.sol +97 -18
  368. package/contracts/instance/IInstanceService.sol +52 -11
  369. package/contracts/instance/Instance.sol +171 -57
  370. package/contracts/instance/InstanceAdmin.sol +271 -165
  371. package/contracts/instance/InstanceAuthorizationV3.sol +115 -43
  372. package/contracts/instance/InstanceReader.sol +449 -312
  373. package/contracts/instance/InstanceService.sol +270 -171
  374. package/contracts/instance/InstanceServiceManager.sol +1 -1
  375. package/contracts/instance/InstanceStore.sol +13 -2
  376. package/contracts/instance/RiskSet.sol +118 -0
  377. package/contracts/instance/base/BalanceStore.sol +3 -5
  378. package/contracts/instance/base/ObjectCounter.sol +1 -2
  379. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  380. package/contracts/instance/base/ObjectSet.sol +31 -33
  381. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  382. package/contracts/instance/module/IBundle.sol +6 -5
  383. package/contracts/instance/module/IComponents.sol +20 -9
  384. package/contracts/instance/module/IDistribution.sol +21 -8
  385. package/contracts/instance/module/IPolicy.sol +28 -7
  386. package/contracts/instance/module/IRisk.sol +5 -0
  387. package/contracts/oracle/BasicOracle.sol +1 -3
  388. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  389. package/contracts/oracle/IOracle.sol +9 -4
  390. package/contracts/oracle/Oracle.sol +1 -3
  391. package/contracts/oracle/OracleService.sol +96 -77
  392. package/contracts/oracle/OracleServiceManager.sol +1 -1
  393. package/contracts/pool/BasicPool.sol +23 -4
  394. package/contracts/pool/BasicPoolAuthorization.sol +33 -8
  395. package/contracts/pool/BundleService.sol +55 -154
  396. package/contracts/pool/BundleServiceManager.sol +1 -1
  397. package/contracts/pool/IBundleService.sol +15 -43
  398. package/contracts/pool/IPoolComponent.sol +1 -7
  399. package/contracts/pool/IPoolService.sol +58 -60
  400. package/contracts/pool/Pool.sol +106 -98
  401. package/contracts/pool/PoolLib.sol +356 -0
  402. package/contracts/pool/PoolService.sol +275 -230
  403. package/contracts/pool/PoolServiceManager.sol +1 -1
  404. package/contracts/product/ApplicationService.sol +60 -20
  405. package/contracts/product/ApplicationServiceManager.sol +1 -1
  406. package/contracts/product/BasicProduct.sol +8 -12
  407. package/contracts/product/BasicProductAuthorization.sol +32 -11
  408. package/contracts/product/ClaimService.sol +167 -148
  409. package/contracts/product/ClaimServiceManager.sol +1 -1
  410. package/contracts/product/IApplicationService.sol +8 -2
  411. package/contracts/product/IClaimService.sol +14 -2
  412. package/contracts/product/IPolicyService.sol +25 -11
  413. package/contracts/product/IPricingService.sol +1 -0
  414. package/contracts/product/IProductComponent.sol +4 -1
  415. package/contracts/product/IRiskService.sol +7 -7
  416. package/contracts/product/PolicyService.sol +243 -297
  417. package/contracts/product/PolicyServiceLib.sol +139 -0
  418. package/contracts/product/PolicyServiceManager.sol +1 -1
  419. package/contracts/product/PricingService.sol +52 -46
  420. package/contracts/product/PricingServiceManager.sol +3 -3
  421. package/contracts/product/Product.sol +67 -53
  422. package/contracts/product/RiskService.sol +92 -31
  423. package/contracts/product/RiskServiceManager.sol +1 -1
  424. package/contracts/registry/ChainNft.sol +4 -2
  425. package/contracts/registry/IRegistry.sol +14 -15
  426. package/contracts/registry/IRelease.sol +29 -0
  427. package/contracts/registry/Registry.sol +16 -3
  428. package/contracts/registry/RegistryAdmin.sol +101 -361
  429. package/contracts/registry/RegistryAuthorization.sol +284 -0
  430. package/contracts/registry/RegistryService.sol +3 -3
  431. package/contracts/registry/RegistryServiceManager.sol +1 -1
  432. package/contracts/registry/ReleaseAdmin.sol +195 -0
  433. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  434. package/contracts/registry/ReleaseRegistry.sol +154 -135
  435. package/contracts/registry/ServiceAuthorizationV3.sol +197 -46
  436. package/contracts/registry/TokenRegistry.sol +12 -13
  437. package/contracts/shared/Component.sol +52 -113
  438. package/contracts/shared/ComponentService.sol +349 -442
  439. package/contracts/shared/ComponentServiceManager.sol +1 -1
  440. package/contracts/shared/ContractLib.sol +276 -3
  441. package/contracts/shared/IComponent.sol +2 -18
  442. package/contracts/shared/IComponentService.sol +27 -38
  443. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  444. package/contracts/shared/IRegisterable.sol +15 -5
  445. package/contracts/shared/IService.sol +3 -5
  446. package/contracts/shared/InitializableERC165.sol +9 -1
  447. package/contracts/shared/InstanceLinkedComponent.sol +6 -25
  448. package/contracts/shared/NftOwnable.sol +6 -6
  449. package/contracts/shared/PolicyHolder.sol +4 -3
  450. package/contracts/shared/Registerable.sol +41 -20
  451. package/contracts/shared/RegistryLinked.sol +7 -13
  452. package/contracts/shared/Service.sol +13 -30
  453. package/contracts/shared/TokenHandler.sol +266 -93
  454. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  455. package/contracts/staking/IStaking.sol +46 -19
  456. package/contracts/staking/IStakingService.sol +21 -8
  457. package/contracts/staking/Staking.sol +190 -82
  458. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
  459. package/contracts/staking/StakingReader.sol +28 -19
  460. package/contracts/staking/StakingService.sol +77 -16
  461. package/contracts/staking/StakingServiceManager.sol +5 -4
  462. package/contracts/staking/StakingStore.sol +3 -2
  463. package/contracts/staking/TargetManagerLib.sol +1 -1
  464. package/contracts/type/Fee.sol +8 -8
  465. package/contracts/type/Key32.sol +2 -2
  466. package/contracts/type/Key32Set.sol +62 -0
  467. package/contracts/type/NftId.sol +6 -0
  468. package/contracts/type/ObjectType.sol +69 -38
  469. package/contracts/type/RiskId.sol +26 -8
  470. package/contracts/type/RoleId.sol +63 -45
  471. package/contracts/type/Seconds.sol +4 -0
  472. package/contracts/type/Selector.sol +5 -0
  473. package/contracts/type/String.sol +12 -0
  474. package/contracts/type/Timestamp.sol +0 -5
  475. package/contracts/type/UFixed.sol +34 -127
  476. package/contracts/type/Version.sol +54 -5
  477. package/contracts/upgradeability/ProxyManager.sol +14 -12
  478. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
  479. package/contracts/upgradeability/Versionable.sol +4 -1
  480. package/package.json +4 -4
  481. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  482. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  483. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  484. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  485. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  486. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -474
  487. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  488. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  489. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  490. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  491. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  492. package/contracts/instance/module/IAccess.sol +0 -46
  493. package/contracts/shared/ComponentVerifyingService.sol +0 -126
@@ -1,31 +1,31 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount, AmountLib} from "../type/Amount.sol";
5
- import {TimestampLib} from "../type/Timestamp.sol";
6
- import {ObjectType, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
7
- import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
8
- import {NftId} from "../type/NftId.sol";
9
- import {FeeLib} from "../type/Fee.sol";
10
- import {StateId} from "../type/StateId.sol";
11
- import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
12
- import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
13
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
14
- import {ContractLib} from "../shared/ContractLib.sol";
15
- import {InstanceReader} from "../instance/InstanceReader.sol";
16
- import {InstanceStore} from "../instance/InstanceStore.sol";
17
4
  import {IClaimService} from "./IClaimService.sol";
18
- import {IComponents} from "../instance/module/IComponents.sol";
19
5
  import {IInstance} from "../instance/IInstance.sol";
20
6
  import {IPolicy} from "../instance/module/IPolicy.sol";
21
7
  import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
22
8
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
23
9
  import {IPolicyService} from "../product/IPolicyService.sol";
24
10
  import {IPoolService} from "../pool/IPoolService.sol";
11
+ import {IRegistry} from "../registry/IRegistry.sol";
12
+
13
+ import {Amount, AmountLib} from "../type/Amount.sol";
14
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
15
+ import {ContractLib} from "../shared/ContractLib.sol";
16
+ import {InstanceReader} from "../instance/InstanceReader.sol";
17
+ import {InstanceStore} from "../instance/InstanceStore.sol";
18
+ import {NftId} from "../type/NftId.sol";
19
+ import {ObjectType, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
20
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
21
+ import {Service} from "../shared/Service.sol";
22
+ import {StateId} from "../type/StateId.sol";
23
+ import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CANCELLED, CONFIRMED, CLOSED, EXPECTED, PAID} from "../type/StateId.sol";
24
+ import {TimestampLib} from "../type/Timestamp.sol";
25
25
 
26
26
 
27
27
  contract ClaimService is
28
- ComponentVerifyingService,
28
+ Service,
29
29
  IClaimService
30
30
  {
31
31
 
@@ -41,11 +41,11 @@ contract ClaimService is
41
41
  initializer()
42
42
  {
43
43
  (
44
- address registryAddress,
45
- address authority
44
+ address authority,
45
+ address registry
46
46
  ) = abi.decode(data, (address, address));
47
47
 
48
- _initializeService(registryAddress, authority, owner);
48
+ __Service_init(authority, registry, owner);
49
49
 
50
50
  _policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
51
51
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
@@ -61,13 +61,12 @@ contract ClaimService is
61
61
  external
62
62
  virtual
63
63
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
64
+ restricted()
64
65
  returns (ClaimId claimId)
65
66
  {
66
- _checkNftType(policyNftId, POLICY());
67
-
67
+ // checks
68
68
  (
69
- ,
70
- IInstance instance,,
69
+ ,,,
71
70
  InstanceStore instanceStore,
72
71
  IPolicy.PolicyInfo memory policyInfo
73
72
  ) = _verifyCallerWithPolicy(policyNftId);
@@ -77,15 +76,9 @@ contract ClaimService is
77
76
  revert ErrorClaimServicePolicyNotOpen(policyNftId);
78
77
  }
79
78
 
80
- // TODO check claim amount > 0
81
- // check policy including this claim is still within sum insured
82
- if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
83
- revert ErrorClaimServiceClaimExceedsSumInsured(
84
- policyNftId,
85
- policyInfo.sumInsuredAmount,
86
- AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
87
- }
79
+ _checkClaimAmount(policyNftId, policyInfo, claimAmount);
88
80
 
81
+ // effects
89
82
  // create new claim
90
83
  claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
91
84
  instanceStore.createClaim(
@@ -118,8 +111,10 @@ contract ClaimService is
118
111
  )
119
112
  external
120
113
  virtual
114
+ restricted()
121
115
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
122
116
  {
117
+ // checks
123
118
  _checkNftType(policyNftId, POLICY());
124
119
 
125
120
  (
@@ -130,8 +125,9 @@ contract ClaimService is
130
125
  IPolicy.PolicyInfo memory policyInfo
131
126
  ) = _verifyCallerWithPolicy(policyNftId);
132
127
 
133
- // TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
128
+ _checkClaimAmount(policyNftId, policyInfo, confirmedAmount);
134
129
 
130
+ // effects
135
131
  // check/update claim info
136
132
  IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
137
133
  claimInfo.claimAmount = confirmedAmount;
@@ -149,6 +145,7 @@ contract ClaimService is
149
145
 
150
146
  emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
151
147
 
148
+ // interactions
152
149
  // callback to pool if applicable
153
150
  _processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
154
151
 
@@ -164,13 +161,13 @@ contract ClaimService is
164
161
  )
165
162
  external
166
163
  virtual
164
+ restricted()
167
165
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
168
166
  {
169
167
  _checkNftType(policyNftId, POLICY());
170
168
 
171
169
  (
172
- ,
173
- IInstance instance,
170
+ ,,
174
171
  InstanceReader instanceReader,
175
172
  InstanceStore instanceStore,
176
173
  IPolicy.PolicyInfo memory policyInfo
@@ -190,20 +187,17 @@ contract ClaimService is
190
187
  }
191
188
 
192
189
 
193
- // TODO add test case
194
190
  function revoke(
195
191
  NftId policyNftId,
196
192
  ClaimId claimId
197
193
  )
198
194
  external
199
195
  virtual
196
+ restricted()
200
197
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
201
- {
202
- _checkNftType(policyNftId, POLICY());
203
-
198
+ {
204
199
  (
205
- ,
206
- IInstance instance,
200
+ ,,
207
201
  InstanceReader instanceReader,
208
202
  InstanceStore instanceStore,
209
203
  IPolicy.PolicyInfo memory policyInfo
@@ -228,16 +222,15 @@ contract ClaimService is
228
222
  )
229
223
  external
230
224
  virtual
225
+ restricted()
231
226
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
232
227
  {
233
228
  _checkNftType(policyNftId, POLICY());
234
229
 
235
230
  (
236
- ,
237
- IInstance instance,
231
+ ,,
238
232
  InstanceReader instanceReader,
239
233
  InstanceStore instanceStore,
240
- IPolicy.PolicyInfo memory policyInfo
241
234
  ) = _verifyCallerWithPolicy(policyNftId);
242
235
 
243
236
  // check/update claim info
@@ -274,11 +267,10 @@ contract ClaimService is
274
267
  )
275
268
  external
276
269
  virtual
270
+ restricted()
277
271
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
278
272
  returns (PayoutId payoutId)
279
273
  {
280
- _checkNftType(policyNftId, POLICY());
281
-
282
274
  if (beneficiary == address(0)) {
283
275
  revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
284
276
  }
@@ -300,6 +292,7 @@ contract ClaimService is
300
292
  )
301
293
  external
302
294
  virtual
295
+ restricted()
303
296
  // nonReentrant() // prevents creating a reinsurance payout in a single tx
304
297
  returns (PayoutId payoutId)
305
298
  {
@@ -320,30 +313,45 @@ contract ClaimService is
320
313
  )
321
314
  external
322
315
  virtual
316
+ restricted()
323
317
  // nonReentrant() // prevents creating a reinsurance payout in a single tx
324
318
  {
325
- _checkNftType(policyNftId, POLICY());
326
-
319
+ // checks
327
320
  (
328
- ,
329
- IInstance instance,
321
+ ,,
330
322
  InstanceReader instanceReader,
331
323
  InstanceStore instanceStore,
332
324
  IPolicy.PolicyInfo memory policyInfo
333
325
  ) = _verifyCallerWithPolicy(policyNftId);
334
326
 
335
- // TODO add check that payout exists and is open
327
+ // check that payout exists and is open
336
328
  IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
329
+ StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
330
+ if(payoutState != EXPECTED()) {
331
+ revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
332
+ }
333
+
334
+ // check that payout amount does not violate claim amount
335
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, payoutId.toClaimId());
336
+ if(claimInfo.paidAmount + payoutInfo.amount > claimInfo.claimAmount) {
337
+ revert ErrorClaimServicePayoutExceedsClaimAmount(
338
+ policyNftId,
339
+ payoutId.toClaimId(),
340
+ claimInfo.claimAmount,
341
+ claimInfo.paidAmount + payoutInfo.amount);
342
+ }
337
343
 
344
+ // effects
338
345
  // update and save payout info with instance
339
346
  payoutInfo.paidAt = TimestampLib.blockTimestamp();
340
347
  instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
341
348
 
349
+ // update and save claim info with instance
342
350
  Amount payoutAmount = payoutInfo.amount;
343
-
344
351
  {
345
352
  ClaimId claimId = payoutId.toClaimId();
346
- IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
353
+ // TODO cleanup
354
+ // IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
347
355
  claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
348
356
  claimInfo.openPayoutsCount -= 1;
349
357
 
@@ -360,46 +368,81 @@ contract ClaimService is
360
368
  }
361
369
 
362
370
  // update and save policy info with instance
363
- policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
371
+ policyInfo.payoutAmount = policyInfo.payoutAmount + payoutAmount;
364
372
  instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
365
373
 
366
- // inform pool about payout
374
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount);
375
+
376
+ // effects + interactions (push tokens to beneficiary, product)
377
+ // delegate to pool to update book keeping and moving tokens payout
367
378
  _poolService.processPayout(
368
- instance,
369
- address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
379
+ instanceReader,
380
+ instanceStore,
381
+ policyInfo.productNftId, // product nft id
370
382
  policyNftId,
371
- policyInfo,
372
- payoutAmount);
373
-
374
- // transfer payout token and fee
375
- {
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.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
392
-
393
- // TODO add 2nd token tx if processingFeeAmount > 0
394
- }
383
+ policyInfo.bundleNftId,
384
+ payoutId,
385
+ payoutAmount,
386
+ payoutInfo.beneficiary);
387
+ }
395
388
 
396
- // callback to policy holder if applicable
397
- _policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
389
+ function cancelPayout(
390
+ NftId policyNftId,
391
+ PayoutId payoutId
392
+ )
393
+ external
394
+ virtual
395
+ restricted()
396
+ {
397
+ // checks
398
+ (
399
+ ,,
400
+ InstanceReader instanceReader,
401
+ InstanceStore instanceStore,
402
+ ) = _verifyCallerWithPolicy(policyNftId);
403
+
404
+ StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
405
+ if (payoutState != EXPECTED()) {
406
+ revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
407
+ }
408
+
409
+ // effects
410
+ // update and save payout info with instance
411
+ instanceStore.updatePayoutState(policyNftId, payoutId, CANCELLED());
412
+
413
+ {
414
+ ClaimId claimId = payoutId.toClaimId();
415
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
416
+ claimInfo.openPayoutsCount -= 1;
417
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
398
418
  }
419
+
420
+ emit LogClaimServicePayoutCancelled(policyNftId, payoutId);
399
421
  }
400
422
 
401
423
  // internal functions
402
424
 
425
+ function _checkClaimAmount(
426
+ NftId policyNftId,
427
+ IPolicy.PolicyInfo memory policyInfo,
428
+ Amount claimAmount
429
+ )
430
+ internal
431
+ pure
432
+ {
433
+ // check claim amount > 0
434
+ if (claimAmount.eqz()) {
435
+ revert ErrorClaimServiceClaimAmountIsZero(policyNftId);
436
+ }
437
+
438
+ // check policy including this claim is still within sum insured
439
+ if(policyInfo.claimAmount + claimAmount > policyInfo.sumInsuredAmount) {
440
+ revert ErrorClaimServiceClaimExceedsSumInsured(
441
+ policyNftId,
442
+ policyInfo.sumInsuredAmount,
443
+ policyInfo.payoutAmount + claimAmount);
444
+ }
445
+ }
403
446
 
404
447
  function _createPayout(
405
448
  NftId policyNftId,
@@ -412,22 +455,32 @@ contract ClaimService is
412
455
  virtual
413
456
  returns (PayoutId payoutId)
414
457
  {
458
+ // checks
415
459
  (
416
- ,
417
- ,
460
+ ,,
418
461
  InstanceReader instanceReader,
419
462
  InstanceStore instanceStore,
420
- IPolicy.PolicyInfo memory policyInfo
463
+ // IPolicy.PolicyInfo memory policyInfo
421
464
  ) = _verifyCallerWithPolicy(policyNftId);
422
465
 
423
466
  IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
424
- StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
425
467
 
426
- // TODO add checks
427
- // claim needs to be open
428
- // claim.paidAmount + amount <= claim.claimAmount
468
+ {
469
+ // check claim state
470
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
471
+ if (claimState != CONFIRMED()) {
472
+ revert ErrorClaimServiceClaimNotConfirmed(policyNftId, claimId, claimState);
473
+ }
429
474
 
430
- // check/update claim info
475
+ // check total payout amount remains within claim limit
476
+ Amount newPaidAmount = claimInfo.paidAmount + amount;
477
+ if (newPaidAmount > claimInfo.claimAmount) {
478
+ revert ErrorClaimServicePayoutExceedsClaimAmount(
479
+ policyNftId, claimId, claimInfo.claimAmount, newPaidAmount);
480
+ }
481
+ }
482
+
483
+ // effects
431
484
  // create payout info with instance
432
485
  uint24 payoutNo = claimInfo.payoutsCount + 1;
433
486
  payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
@@ -450,52 +503,10 @@ contract ClaimService is
450
503
  claimInfo.openPayoutsCount += 1;
451
504
  instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
452
505
 
453
- // update and save policy info with instance
454
- policyInfo.payoutAmount.add(amount);
455
- instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
456
-
457
506
  emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
458
507
  }
459
508
 
460
509
 
461
- function _calculatePayoutAmount(
462
- InstanceReader instanceReader,
463
- NftId policyNftId,
464
- IPolicy.PolicyInfo memory policyInfo,
465
- IPolicy.PayoutInfo memory payoutInfo
466
- )
467
- internal
468
- returns (
469
- Amount netPayoutAmount,
470
- Amount processingFeeAmount,
471
- address beneficiary
472
- )
473
- {
474
- Amount payoutAmount = payoutInfo.amount;
475
-
476
- if(payoutAmount.gtz()) {
477
- NftId productNftId = policyInfo.productNftId;
478
-
479
- // get pool component info from policy or product
480
- NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
481
- IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
482
-
483
- netPayoutAmount = payoutAmount;
484
-
485
- if (payoutInfo.beneficiary == address(0)) {
486
- beneficiary = getRegistry().ownerOf(policyNftId);
487
- } else {
488
- beneficiary = payoutInfo.beneficiary;
489
- }
490
-
491
- IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
492
- if(FeeLib.gtz(productInfo.processingFee)) {
493
- // TODO calculate and set net payout and processing fees
494
- }
495
- }
496
- }
497
-
498
-
499
510
  function _verifyCallerWithPolicy(
500
511
  NftId policyNftId
501
512
  )
@@ -510,7 +521,7 @@ contract ClaimService is
510
521
  IPolicy.PolicyInfo memory policyInfo
511
522
  )
512
523
  {
513
- (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
524
+ (productNftId, instance) = _getAndVerifyActiveProduct();
514
525
  instanceReader = instance.getInstanceReader();
515
526
  instanceStore = instance.getInstanceStore();
516
527
 
@@ -523,6 +534,29 @@ contract ClaimService is
523
534
  }
524
535
  }
525
536
 
537
+
538
+ function _getAndVerifyActiveProduct()
539
+ internal
540
+ view
541
+ returns (
542
+ NftId productNftId,
543
+ IInstance instance
544
+ )
545
+ {
546
+ (
547
+ IRegistry.ObjectInfo memory info,
548
+ address instanceAddress
549
+ ) = ContractLib.getAndVerifyComponent(
550
+ getRegistry(),
551
+ msg.sender, // caller
552
+ PRODUCT(),
553
+ true); // isActive
554
+
555
+ // get component nft id and instance
556
+ productNftId = info.nftId;
557
+ instance = IInstance(instanceAddress);
558
+ }
559
+
526
560
  function _verifyClaim(
527
561
  InstanceReader instanceReader,
528
562
  NftId policyNftId,
@@ -576,22 +610,7 @@ contract ClaimService is
576
610
  }
577
611
  }
578
612
 
579
-
580
- function _policyHolderPayoutExecuted(
581
- NftId policyNftId,
582
- PayoutId payoutId,
583
- address beneficiary,
584
- Amount payoutAmount
585
- )
586
- internal
587
- {
588
- IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
589
- if(address(policyHolder) != address(0)) {
590
- policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
591
- }
592
- }
593
-
594
-
613
+ // TODO: move to policy helper lib or something
595
614
  function _getPolicyHolder(NftId policyNftId)
596
615
  internal
597
616
  view
@@ -17,7 +17,7 @@ contract ClaimServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  ClaimService svc = new ClaimService{salt: salt}();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(svc),
@@ -15,8 +15,14 @@ import {Seconds} from "../type/Seconds.sol";
15
15
  /// only product components may call transaction functions
16
16
  interface IApplicationService is IService {
17
17
 
18
- error ErrorApplicationServiceNotProduct(NftId callerNftId, ObjectType callerType);
19
- error ErrorApplicationServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
18
+ // _checkLinkedApplicationParameters
19
+ error ErrorApplicationServiceRiskProductMismatch(RiskId riskId, NftId riskProductNftId, NftId productNftId);
20
+ error ErrorApplicationServiceRiskUnknown(RiskId riskId, NftId productNftId);
21
+ error ErrorApplicationServiceRiskPaused(RiskId riskId, NftId productNftId);
22
+ error ErrorApplicationServiceBundleUnknown(NftId bundleNftId, NftId poolNftId);
23
+ error ErrorApplicationServiceBundleLocked(NftId bundleNftId, NftId poolNftId);
24
+ error ErrorApplicationServiceReferralInvalid(NftId productNftId, NftId distributionNftId, ReferralId referralId);
25
+
20
26
 
21
27
  /// @dev creates a new application based on the specified attributes
22
28
  /// may only be called by a product component
@@ -19,7 +19,6 @@ import {Fee} from "../type/Fee.sol";
19
19
  interface IClaimService is
20
20
  IService
21
21
  {
22
-
23
22
  event LogClaimServiceClaimSubmitted(NftId policyNftId, ClaimId claimId, Amount claimAmount);
24
23
  event LogClaimServiceClaimConfirmed(NftId policyNftId, ClaimId claimId, Amount confirmedAmount);
25
24
  event LogClaimServiceClaimDeclined(NftId policyNftId, ClaimId claimId);
@@ -27,11 +26,14 @@ interface IClaimService is
27
26
  event LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
28
27
 
29
28
  event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary);
30
- event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount, Amount processingFeeAmount);
29
+ event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount);
30
+ event LogClaimServicePayoutCancelled(NftId policyNftId, PayoutId payoutId);
31
+
31
32
  error ErrorClaimServiceBeneficiarySet(NftId policyNftId, PayoutId payoutId, address beneficiary);
32
33
 
33
34
  error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
34
35
  error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
36
+ error ErrorClaimServiceClaimAmountIsZero(NftId policyNftId);
35
37
  error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
36
38
  error ErrorClaimServiceBeneficiaryIsZero(NftId policyNftId, ClaimId claimId);
37
39
  error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
@@ -40,6 +42,10 @@ interface IClaimService is
40
42
  error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
41
43
  error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
42
44
 
45
+ error ErrorClaimServiceClaimNotConfirmed(NftId policyNftId, ClaimId claimId, StateId actualState);
46
+ error ErrorClaimServicePayoutExceedsClaimAmount(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount totalPayoutAmount);
47
+ error ErrorClaimServicePayoutNotExpected(NftId policyNftId, PayoutId payoutId, StateId actualState);
48
+
43
49
  /// @dev create a new claim for the specified policy
44
50
  /// returns the id of the newly created claim
45
51
  /// function can only be called by product, policy needs to match with calling product
@@ -120,4 +126,10 @@ interface IClaimService is
120
126
  NftId policyNftId,
121
127
  PayoutId payoutId
122
128
  ) external;
129
+
130
+ /// @dev cancels the specified payout. no tokens are moved, payout is set to cancelled.
131
+ function cancelPayout(
132
+ NftId policyNftId,
133
+ PayoutId payoutId
134
+ ) external;
123
135
  }
@@ -15,7 +15,8 @@ interface IPolicyService is IService {
15
15
  event LogPolicyServicePolicyDeclined(NftId policyNftId);
16
16
  event LogPolicyServicePolicyPremiumCollected(NftId policyNftId, Amount premiumAmount);
17
17
  event LogPolicyServicePolicyActivated(NftId policyNftId, Timestamp activatedAt);
18
- event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp originalExpiredAt, Timestamp expiredAt);
18
+ event LogPolicyServicePolicyActivatedUpdated(NftId policyNftId, Timestamp activatedAt);
19
+ event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp expiredAt);
19
20
  event LogPolicyServicePolicyClosed(NftId policyNftId);
20
21
 
21
22
  error ErrorPolicyServicePolicyProductMismatch(NftId applicationNftId, NftId expectedProductNftId, NftId actualProductNftId);
@@ -23,13 +24,15 @@ interface IPolicyService is IService {
23
24
  error ErrorPolicyServicePolicyStateNotCollateralized(NftId applicationNftId);
24
25
  error ErrorPolicyServicePolicyAlreadyActivated(NftId policyNftId);
25
26
 
26
- error ErrorPolicyServiceBalanceInsufficient(address policyOwner, uint256 premiumAmount, uint256 balance);
27
- error ErrorPolicyServiceAllowanceInsufficient(address policyOwner, address tokenHandler, uint256 premiumAmount, uint256 allowance);
28
-
27
+ error ErrorPolicyServicePolicyNotActivated(NftId policyNftId);
28
+ error ErrorPolicyServicePolicyActivationTooEarly(NftId policyNftId, Timestamp lowerLimit, Timestamp activatedAt);
29
+ error ErrorPolicyServicePolicyActivationTooLate(NftId policyNftId, Timestamp upperLimit, Timestamp activatedAt);
30
+
29
31
  error ErrorPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
30
32
  error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId);
31
- error ErrorPolicyServicePolicyNotActivated(NftId policyNftId);
32
- error ErrorPolicyServicePolicyAlreadyClosed(NftId policyNftId);
33
+
34
+ error ErrorPolicyServicePolicyNotCloseable(NftId policyNftId);
35
+
33
36
  error ErrorPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
34
37
  error ErrorPolicyServicePremiumNotPaid(NftId policyNftId, Amount premiumAmount);
35
38
  error ErrorPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
@@ -49,7 +52,9 @@ interface IPolicyService is IService {
49
52
  function createPolicy(
50
53
  NftId applicationNftId,
51
54
  Timestamp activateAt
52
- ) external;
55
+ )
56
+ external
57
+ returns (Amount premiumAmount);
53
58
 
54
59
  /// @dev declines an application represented by {policyNftId}
55
60
  /// an application can only be declined in applied state
@@ -63,18 +68,27 @@ interface IPolicyService is IService {
63
68
  /// to activate a policy it needs to be in underwritten state
64
69
  function activate(NftId policyNftId, Timestamp activateAt) external;
65
70
 
66
- /// @dev expires the specified policy and sets the expiry date in the policy metadata. If expiry date is set to 0, then the earliest possible expiry date (current blocktime) is set
71
+ /// @dev adjusts the activation date of the specified policy and sets the new activation date in the policy metadata
72
+ /// to adjust the activation date of a policy it needs to have an activation date set.
73
+ /// the new activation date must not be before the current block timestamp or after the expiry date
74
+ function adjustActivation(NftId policyNftId, Timestamp newActivateAt) external;
75
+
76
+ /// @dev Expires the specified policy and sets the expiry date in the policy metadata.
77
+ /// Function consumers are products.
78
+ /// If expiry date is set to 0, then the earliest possible expiry date (current blocktime) is set
67
79
  /// to expire a policy it must be in active state, policies may be expired even when the predefined expiry date is still in the future
68
80
  /// a policy can only be closed when it has been expired. in addition, it must not have any open claims
69
81
  /// this function can only be called by a product. the policy needs to match with the calling product
70
82
  /// @return expiredAt the effective expiry date
71
83
  function expire(NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
72
84
 
73
- function expirePolicy(IInstance instance, NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
74
-
75
- /// @dev closes the specified policy and sets the closed data in the policy metadata
85
+ /// @dev Closes the specified policy and sets the closed data in the policy metadata
76
86
  /// a policy can only be closed when it has been expired. in addition, it must not have any open claims
77
87
  /// this function can only be called by a product. the policy needs to match with the calling product
78
88
  function close(NftId policyNftId) external;
79
89
 
90
+ /// @dev Expires the specified policy and sets the expiry date in the policy metadata.
91
+ /// Function consumers is claim service.
92
+ function expirePolicy(IInstance instance, NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
93
+
80
94
  }
@@ -14,6 +14,7 @@ interface IPricingService is IService
14
14
  {
15
15
 
16
16
  error ErrorPricingServiceTargetWalletAmountsMismatch();
17
+ error ErrorPricingServiceRiskProductMismatch(RiskId riskId, NftId riskProductNftId, NftId productNftId);
17
18
  error ErrorPricingServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
18
19
  error ErrorPricingServiceFeeCalculationMismatch(
19
20
  Amount distributionFeeFixAmount,